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