Handle hostnames with upper-case letters
[webmin.git] / bacula-backup / edit_storage.cgi
1 #!/usr/local/bin/perl
2 # Show the details of one file storage daemon
3
4 require './bacula-backup-lib.pl';
5 &ReadParse();
6 $conf = &get_director_config();
7 @storages = &find("Storage", $conf);
8 $sconf = &get_storage_config();
9 if ($sconf) {
10         @devices = map { $n=&find_value("Name", $_->{'members'}) }
11                         &find("Device", $sconf);
12         }
13
14 if ($in{'new'}) {
15         &ui_print_header(undef, $text{'storage_title1'}, "");
16         $mems = [ { 'name' => 'SDPort',
17                     'value' => 9103 },
18                   { 'name' => 'Address',
19                     'value' => &get_system_hostname() },
20                   { 'name' => 'Media Type',
21                     'value' => 'File' },
22                   { 'name' => 'Maximum Concurrent Jobs',
23                     'value' => '20' },
24                   { 'name' => 'Device',
25                     'value' => $devices[0] },
26                 ];
27         if (@storages) {
28                 push(@$mems,
29                         { 'name' => 'Password',
30                           'value' => &find_value("Password",
31                                         $storages[0]->{'members'})
32                         });
33                 }
34         $storage = { 'members' => $mems };
35         }
36 else {
37         &ui_print_header(undef, $text{'storage_title2'}, "");
38         $storage = &find_by("Name", $in{'name'}, \@storages);
39         $storage || &error($text{'storage_egone'});
40         $mems = $storage->{'members'};
41         }
42
43 # Show details
44 print &ui_form_start("save_storage.cgi", "post");
45 print &ui_hidden("new", $in{'new'}),"\n";
46 print &ui_hidden("old", $in{'name'}),"\n";
47 print &ui_table_start($text{'storage_header'}, "width=100%", 4);
48
49 # Storage name
50 print &ui_table_row($text{'storage_name'},
51         &ui_textbox("name", $name=&find_value("Name", $mems), 40), 3);
52
53 # Password for remote
54 print &ui_table_row($text{'storage_pass'},
55         &ui_textbox("pass", $pass=&find_value("Password", $mems), 60), 3);
56
57 # Connection details
58 print &ui_table_row($text{'storage_address'},
59         &ui_textbox("address", $address=&find_value("Address", $mems), 20));
60 print &ui_table_row($text{'storage_port'},
61         &ui_textbox("port", $port=&find_value("SDPort", $mems), 6));
62
63 # Device name
64 if (@devices) {
65         $device=&find_value("Device", $mems);
66         $found = &indexof($device, @devices) >= 0;
67         print &ui_table_row($text{'storage_device'},
68                 &ui_select("device", $found ? $device : "",
69                            [ (map { [ $_ ] } @devices),
70                              [ "", $text{'storage_other'} ] ])."\n".
71                 &ui_textbox("other", $found ? "" : $device, 10));
72         }
73 else {
74         print &ui_table_row($text{'storage_device'},
75                 &ui_textbox("device", $device=&find_value("Device",$mems), 20));
76         }
77
78 # Media type
79 print &ui_table_row($text{'storage_media'},
80         &ui_textbox("media", $media=&find_value("Media Type", $mems), 20));
81
82 # Maximum Concurrent Jobs
83 print &ui_table_row($text{'storage_maxjobs'},
84         &ui_textbox("maxjobs", $maxjobs=&find_value("Maximum Concurrent Jobs", $mems), 5));
85
86 # SSL options
87 &show_tls_directives($storage);
88
89 # All done
90 print &ui_table_end();
91 if ($in{'new'}) {
92         print &ui_form_end([ [ "create", $text{'create'} ] ]);
93         }
94 else {
95         print &ui_form_end([ [ "save", $text{'save'} ],
96                              [ "status", $text{'storage_status'} ],
97                              [ "delete", $text{'delete'} ] ]);
98         }
99 &ui_print_footer("list_storages.cgi", $text{'storages_return'});
100