Handle hostnames with upper-case letters
[webmin.git] / bacula-backup / edit_job.cgi
1 #!/usr/local/bin/perl
2 # Show the details of one backup job
3
4 require './bacula-backup-lib.pl';
5 &ReadParse();
6 $conf = &get_director_config();
7 @jobs = ( &find("JobDefs", $conf), &find("Job", $conf) );
8 @clients = map { $n=&find_value("Name", $_->{'members'}) }
9                 grep { !&is_oc_object($_) } &find("Client", $conf);
10 @filesets = map { $n=&find_value("Name", $_->{'members'}) }
11                 &find("FileSet", $conf);
12 @schedules = map { $n=&find_value("Name", $_->{'members'}) }
13                 &find("Schedule", $conf);
14 @storages = map { $n=&find_value("Name", $_->{'members'}) }
15                 &find("Storage", $conf);
16 @pools = map { $n=&find_value("Name", $_->{'members'}) }
17                 &find("Pool", $conf);
18 @messages = map { $n=&find_value("Name", $_->{'members'}) }
19                 &find("Messages", $conf);
20 @defs = map { $n=&find_value("Name", $_->{'members'}) }
21                 &find("JobDefs", $conf);
22 if ($in{'new'}) {
23         &ui_print_header(undef, $text{'job_title1'}, "");
24         $mems = [ { 'name' => 'Type',
25                     'value' => 'Backup' },
26                   { 'name' => 'Level',
27                     'value' => 'Incremental' },
28                   { 'name' => 'Client',
29                     'value' => $clients[0] },
30                   { 'name' => 'FileSet',
31                     'value' => $filesets[0] },
32                   { 'name' => 'Schedule',
33                     'value' => $schedules[0] },
34                   { 'name' => 'Storage',
35                     'value' => $storages[0] },
36                   { 'name' => 'Messages',
37                     'value' => $messages[0] },
38                   { 'name' => 'Pool',
39                     'value' => $pools[0] },
40                 ];
41         $job = { 'name' => 'Job',
42                  'members' => $mems };
43         }
44 else {
45         &ui_print_header(undef, $text{'job_title2'}, "");
46         $job = &find_by("Name", $in{'name'}, \@jobs);
47         $job || &error($text{'job_egone'});
48         $mems = $job->{'members'};
49         }
50
51 # Show details
52 print &ui_form_start("save_job.cgi", "post");
53 print &ui_hidden("new", $in{'new'}),"\n";
54 print &ui_hidden("old", $in{'name'}),"\n";
55 print &ui_table_start($text{'job_header'}, "width=100%", 4);
56
57 # Job name
58 print &ui_table_row($text{'job_name'},
59         &ui_textbox("name", $name=&find_value("Name", $mems), 40), 3);
60
61 # Job enabled?
62 $enabled = &find_value("Enabled", $mems);
63 print &ui_table_row($text{'job_enabled'},
64         &ui_yesno_radio("enabled", lc($enabled) ne 'no'));
65
66 # Default or source
67 $defs = &find_value("JobDefs", $mems);
68 $dmode = $defs ? 2 : $job->{'name'} eq 'Job' ? 1 : 0;
69 print &ui_table_row($text{'job_def'},
70     &ui_radio("dmode", $dmode,
71         [ [ 0, $text{'job_def0'} ],
72           [ 1, $text{'job_def1'} ],
73           [ 2, &text('job_def2', 
74                 &ui_select("defs", $defs, [ map { [ $_ ] } @defs ])) ] ]), 3);
75
76 # Job type
77 $type = &find_value("Type", $mems);
78 print &ui_table_row($text{'job_type'},
79         &ui_select("type", $type,
80                 [ [ "", "<$text{'default'}>" ],
81                   [ "Backup" ], [ "Restore" ], [ "Verify" ], [ "Admin" ] ],
82                 1, 0, 1));
83
84 # Backup level
85 $level = &find_value("Level", $mems);
86 print &ui_table_row($text{'job_level'},
87         &ui_select("level", $level,
88                 [ [ "", "<$text{'default'}>" ],
89                   map { [ $_ ] } @backup_levels ],
90                 1, 0, 1));
91
92 # Client being backed up
93 $client = &find_value("Client", $mems);
94 print &ui_table_row($text{'job_client'},
95         &ui_select("client", $client,
96                 [ [ "", "<$text{'default'}>" ],
97                   map { [ $_ ] } @clients ], 1, 0, 1));
98
99 # Files to be backed up
100 $fileset = &find_value("FileSet", $mems);
101 print &ui_table_row($text{'job_fileset'},
102         &ui_select("fileset", $fileset,
103                 [ [ "", "<$text{'default'}>" ],
104                   map { [ $_ ] } @filesets ], 1, 0, 1));
105
106 # Backup schedule
107 $schedule = &find_value("Schedule", $mems);
108 print &ui_table_row($text{'job_schedule'},
109         &ui_select("schedule", $schedule,
110                 [ [ "", "<$text{'default'}>" ],
111                   map { [ $_ ] } @schedules ], 1, 0, 1));
112
113 # Storage device
114 $storage = &find_value("Storage", $mems);
115 print &ui_table_row($text{'job_storage'},
116         &ui_select("storage", $storage,
117                 [ [ "", "<$text{'default'}>" ],
118                   map { [ $_ ] } @storages ], 1, 0, 1));
119
120 # Backup pool
121 $pool = &find_value("Pool", $mems);
122 print &ui_table_row($text{'job_pool'},
123         &ui_select("pool", $pool,
124                 [ [ "", "<$text{'default'}>" ],
125                   map { [ $_ ] } @pools ], 1, 0, 1));
126
127 # Backup messages
128 $messages = &find_value("Messages", $mems);
129 print &ui_table_row($text{'job_messages'},
130         &ui_select("messages", $messages,
131                 [ [ "", "<$text{'default'}>" ],
132                   map { [ $_ ] } @messages ], 1, 0, 1));
133
134 # Priority level
135 $priority = &find_value("Priority", $mems);
136 print &ui_table_row($text{'job_prority'},
137         &ui_opt_textbox("priority", $priority, 4, $text{'default'}));
138
139 # Before and after commands
140 print &ui_table_hr();
141
142 $before = &find_value("Run Before Job", $mems);
143 print &ui_table_row($text{'job_before'},
144         &ui_opt_textbox("before", $before, 60, $text{'default'}), 3);
145 $after = &find_value("Run After Job", $mems);
146 print &ui_table_row($text{'job_after'},
147         &ui_opt_textbox("after", $after, 60, $text{'default'}), 3);
148
149 $cbefore = &find_value("Client Run Before Job", $mems);
150 print &ui_table_row($text{'job_cbefore'},
151         &ui_opt_textbox("cbefore", $cbefore, 60, $text{'default'}), 3);
152 $cafter = &find_value("Client Run After Job", $mems);
153 print &ui_table_row($text{'job_cafter'},
154         &ui_opt_textbox("cafter", $cafter, 60, $text{'default'}), 3);
155
156 # All done
157 print &ui_table_end();
158 if ($in{'new'}) {
159         print &ui_form_end([ [ "create", $text{'create'} ] ]);
160         }
161 else {
162         ($bjob) = grep { $_->{'name'} eq $in{'name'} } &get_bacula_jobs();
163         print &ui_form_end([ [ "save", $text{'save'} ],
164                              ( $job->{'name'} eq 'Job' && $bjob ?
165                                 ( [ "run", $text{'job_run'} ] ) : ( ) ),
166                              [ "delete", $text{'delete'} ] ]);
167         }
168 &ui_print_footer("list_jobs.cgi", $text{'jobs_return'});
169