Handle hostnames with upper-case letters
[webmin.git] / bacula-backup / label.cgi
1 #!/usr/local/bin/perl
2 # Actually label a volume
3
4 require './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
14 print "<b>",&text('label_run', "<tt>$in{'storage'}</tt>", $in{'label'}),"</b>\n";
15 print "<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');
22 print $wait_for_input;
23 if ($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.*:');
30 print $wait_for_input;
31 if ($rv == 0) {
32         &job_error($text{'label_eexists'});
33         }
34 elsif ($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');
45 print $wait_for_input;
46 if ($rv == 1) {
47         &job_error($text{'label_efailed'});
48         }
49
50 print "</pre>";
51 print "<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
58 sub job_error
59 {
60 &close_console($h);
61 print "</pre>\n";
62 print "<b>",@_,"</b><p>\n";
63 &ui_print_footer("label_form.cgi", $text{'label_return'});
64 exit;
65 }
66