1#!/usr/local/bin/perl
2# Actually label a volume
3
4require './bacula-backup-lib.pl';
5&ReadParse();
6
7# Validate inputs
8&error_setup($text{'label_err'});
9$in{'label'} =~ /\S/ || &error($text{'label_elabel'});
10
11# Do it
12&ui_print_unbuffered_header(undef,  $text{'label_title'}, "");
13
14print "<b>",&text('label_run', "<tt>$in{'storage'}</tt>", $in{'label'}),"</b>\n";
15print "<pre>";
16$h = &open_console();
17
18# Do the label
19&sysprint($h->{'infh'}, "label storage=$in{'storage'}\n");
20$rv = &wait_for($h->{'outfh'}, 'name:',
21			       'not found');
22print $wait_for_input;
23if ($rv == 1) {
24	&job_error($text{'label_estorage'});
25	}
26&sysprint($h->{'infh'}, $in{'label'}."\n");
27$rv = &wait_for($h->{'outfh'}, 'already exists',
28			       'Connecting to Storage daemon',
29			       '((.*\n)*)Select the Pool.*:');
30print $wait_for_input;
31if ($rv == 0) {
32	&job_error($text{'label_eexists'});
33	}
34elsif ($rv == 2) {
35	# Need to choose a pool
36	if ($matches[1] =~ /(\d+):\s+\Q$in{'pool'}\E/) {
37		&sysprint($h->{'infh'}, "$1\n");
38		}
39	else {
40		&job_error($text{'label_epool'});
41		}
42	}
43
44$rv = &wait_for($h->{'outfh'}, 'success.*\\n', 'failed.*\\n');
45print $wait_for_input;
46if ($rv == 1) {
47	&job_error($text{'label_efailed'});
48	}
49
50print "</pre>";
51print "<b>$text{'label_done'}</b><p>\n";
52
53&close_console($h);
54&webmin_log("label", $in{'storage'});
55
56&ui_print_footer("label_form.cgi", $text{'label_return'});
57
58sub job_error
59{
60&close_console($h);
61print "</pre>\n";
62print "<b>",@_,"</b><p>\n";
63&ui_print_footer("label_form.cgi", $text{'label_return'});
64exit;
65}
66
67