#!/usr/bin/perl # Show a form to edit or create a target use strict; use warnings; no warnings 'redefine'; no warnings 'uninitialized'; require './iscsi-target-lib.pl'; our (%text, %in); &ReadParse(); my $conf = &get_iscsi_config(); # Get the target and show page header my $target; if ($in{'new'}) { &ui_print_header(undef, $text{'target_title1'}, ""); $target = { 'members' => [ ] }; } else { &ui_print_header(undef, $text{'target_title2'}, ""); ($target) = grep { $_->{'value'} eq $in{'name'} } &find($conf, "Target"); $target || &error($text{'target_egone'}); } print &ui_form_start("save_target.cgi", "post"); print &ui_hidden("new", $in{'new'}); print &ui_hidden("oldname", $in{'name'}); print &ui_table_start($text{'target_header'}, undef, 2); # Target name my ($host, $tname); if ($in{'new'}) { $host = &find_host_name($conf) || &generate_host_name(); $tname = ""; } else { ($host, $tname) = split(/:/, $target->{'value'}); } print &ui_table_row($text{'target_name'}, "<tt>".$host.":</tt>".&ui_textbox("name", $tname, 30)); # Logical units it contains my @luns = &find_value($target->{'members'}, "Lun"); for(my $i=0; $i<@luns+1; $i++) { my ($lunid, $lunstr) = split(/\s+/, $luns[$i]); my %lunopts = map { split(/=/, $_) } split(/,/, $lunstr); my @opts; # Start with option for no device my $none_found = 0; if ($i > 0) { push(@opts, [ 'none', $text{'target_none'} ]); $none_found = 1 if (!$lunopts{'Path'} && !$lunopts{'Sectors'}); } # Add regular partitions my $part_found = 0; my $sel = &fdisk::partition_select("part".$i, $lunopts{'Path'}, 0, \$part_found); push(@opts, [ 'part', $text{'target_part'}, $sel ]); # Then add RAID devices my $rconf = &raid::get_raidtab(); my @ropts; my $raid_found = 0; foreach my $c (@$rconf) { if ($c->{'active'}) { push(@ropts, [ $c->{'value'}, &text('target_md', substr($c->{'value'}, -1)) ]); $raid_found = 1 if ($lunopts{'Path'} eq $c->{'value'}); } } if (@ropts) { push(@opts, [ 'raid', $text{'target_raid'}, &ui_select("raid".$i, $lunopts{'Path'}, \@ropts) ]); } # Then add LVM logical volumes my @vgs = sort { $a->{'name'} cmp $b->{'name'} } &lvm::list_volume_groups(); my @lvs; foreach my $v (@vgs) { push(@lvs, sort { $a->{'name'} cmp $b->{'name'} } &lvm::list_logical_volumes($v->{'name'})); } my @lopts; my $lvm_found = 0; foreach my $l (@lvs) { push(@lopts, [ $l->{'device'}, &text('target_lv', $l->{'vg'}, $l->{'name'}) ]); $lvm_found = 1 if (&same_file($lunopts{'Path'},$l->{'device'})); } if (@lopts) { push(@opts, [ 'lvm', $text{'target_lvm'}, &ui_select("lvm".$i, $lunopts{'Path'}, \@lopts) ]); } # Add special null-IO mode my $null_found = 0; push(@opts, [ 'null', $text{'target_null'}, &ui_textbox("null".$i, $lunopts{'Sectors'}, 10)." ". $text{'target_sectors'} ]); $null_found = 1 if ($lunopts{'Type'} eq 'nullio'); # Then add other file mode my $mode = $part_found ? 'part' : $raid_found ? 'raid' : $none_found ? 'none' : $null_found ? 'null' : $lvm_found ? 'lvm' : 'other'; push(@opts, [ 'other', $text{'target_other'}, &ui_textbox("other".$i, $mode eq 'other' ? $lunopts{'Path'} : "", 50). " ".&file_chooser_button("other") ]); # Options for this lun my @grid; push(@grid, "<b>".$text{'target_type'}."</b>", &ui_select("type".$i, $lunopts{'Type'} || "fileio", [ [ 'fileio', $text{'target_fileio'} ], [ 'blockio', $text{'target_blockio'} ] ])); push(@grid, "<b>".$text{'target_iomode'}."</b>", &ui_select("iomode".$i, $lunopts{'IOMode'}, [ [ '', $text{'target_wt'} ], [ 'wb', $text{'target_wb'} ], [ 'ro', $text{'target_ro'} ] ])); print &ui_table_row(&text('target_lun', $i+1), &ui_radio_table("mode".$i, $mode, \@opts)."\n". &ui_grid_table(\@grid, 2)); } print &ui_table_hr(); # Incoming user(s) my @iusers = &find_value($target->{'members'}, "IncomingUser"); my $utable = &ui_columns_start([ $text{'target_uname'}, $text{'target_upass'}, ]); my $i = 0; foreach my $u (@iusers, "", "") { my ($uname, $upass) = split(/\s+/, $u); $utable .= &ui_columns_row([ &ui_textbox("uname_$i", $uname, 30), &ui_textbox("upass_$i", $upass, 20), ]); $i++; } $utable .= &ui_columns_end(); print &ui_table_row($text{'target_iuser'}, &ui_radio("iuser_def", @iusers ? 0 : 1, [ [ 1, $text{'target_iuserall'} ], [ 0, $text{'target_iuserbelow'} ] ])."<br>\n". $utable); # Outgoing user my $u = &find_value($target->{'members'}, "OutgoingUser"); my ($uname, $upass) = split(/\s+/, $u); print &ui_table_row($text{'target_ouser'}, &ui_radio("ouser_def", $u ? 0 : 1, [ [ 1, $text{'target_ousernone'} ], [ 0, $text{'target_ousername'} ] ])." ". &ui_textbox("ouser", $uname, 30)." ". $text{'target_ouserpass'}." ". &ui_textbox("opass", $upass, 20)); print &ui_table_hr(); # Optional alias name my $a = &find_value($target->{'members'}, "Alias"); print &ui_table_row($text{'target_alias'}, &ui_opt_textbox("alias", $a, 20, $text{'target_noalias'})); # Header digest mode my $h = &find_value($target->{'members'}, "HeaderDigest"); print &ui_table_row($text{'target_hdigest'}, &ui_select("hdigest", $h, [ [ "", $text{'target_nodigest'} ], [ "CRC32C" ] ], 1, 0, 1)); # Data digest mode $h = &find_value($target->{'members'}, "DataDigest"); print &ui_table_row($text{'target_ddigest'}, &ui_select("ddigest", $h, [ [ "", $text{'target_nodigest'} ], [ "CRC32C" ] ], 1, 0, 1)); print &ui_table_end(); if ($in{'new'}) { print &ui_form_end([ [ undef, $text{'create'} ] ]); } else { print &ui_form_end([ [ undef, $text{'save'} ], [ 'delete', $text{'delete'} ] ]); } &ui_print_footer("", $text{'index_return'});
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
atboot.cgi | File | 1.02 KB | 0755 |
|
config | File | 211 B | 0644 |
|
config-debian-linux | File | 231 B | 0644 |
|
config-debian-linux-ALL-4.0 | File | 201 B | 0644 |
|
config-openSUSE-Linux-15.0-ALL | File | 223 B | 0644 |
|
config-suse-linux | File | 223 B | 0644 |
|
config.info | File | 309 B | 0644 |
|
config.info.ca | File | 393 B | 0644 |
|
config.info.de | File | 333 B | 0644 |
|
config.info.no | File | 302 B | 0644 |
|
delete_allows.cgi | File | 764 B | 0755 |
|
delete_targets.cgi | File | 874 B | 0755 |
|
down_allow.cgi | File | 578 B | 0755 |
|
edit_addr.cgi | File | 1003 B | 0755 |
|
edit_allow.cgi | File | 1.55 KB | 0755 |
|
edit_auth.cgi | File | 1.41 KB | 0755 |
|
edit_conn.cgi | File | 1.42 KB | 0755 |
|
edit_manual.cgi | File | 652 B | 0755 |
|
edit_target.cgi | File | 5.68 KB | 0755 |
|
edit_timeout.cgi | File | 903 B | 0755 |
|
index.cgi | File | 3.44 KB | 0755 |
|
install_check.pl | File | 348 B | 0755 |
|
iscsi-target-lib.pl | File | 12.14 KB | 0644 |
|
list_allow.cgi | File | 1.64 KB | 0755 |
|
log_parser.pl | File | 484 B | 0755 |
|
module.info | File | 205 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 130 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 159 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 207 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 184 B | 0644 |
|
module.info.ca | File | 149 B | 0644 |
|
module.info.cs | File | 0 B | 0644 |
|
module.info.cs.auto | File | 120 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 119 B | 0644 |
|
module.info.de | File | 103 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 221 B | 0644 |
|
module.info.es | File | 0 B | 0644 |
|
module.info.es.auto | File | 144 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 114 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 185 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 116 B | 0644 |
|
module.info.fr | File | 0 B | 0644 |
|
module.info.fr.auto | File | 144 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 147 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 126 B | 0644 |
|
module.info.hu | File | 0 B | 0644 |
|
module.info.hu.auto | File | 153 B | 0644 |
|
module.info.it | File | 0 B | 0644 |
|
module.info.it.auto | File | 144 B | 0644 |
|
module.info.ja | File | 0 B | 0644 |
|
module.info.ja.auto | File | 181 B | 0644 |
|
module.info.ko | File | 0 B | 0644 |
|
module.info.ko.auto | File | 159 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 134 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 128 B | 0644 |
|
module.info.ms | File | 131 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 128 B | 0644 |
|
module.info.nl | File | 0 B | 0644 |
|
module.info.nl.auto | File | 130 B | 0644 |
|
module.info.no | File | 19 B | 0644 |
|
module.info.no.auto | File | 99 B | 0644 |
|
module.info.pl | File | 0 B | 0644 |
|
module.info.pl.auto | File | 135 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 129 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 135 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 129 B | 0644 |
|
module.info.ru | File | 0 B | 0644 |
|
module.info.ru.auto | File | 219 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 119 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 111 B | 0644 |
|
module.info.sv | File | 0 B | 0644 |
|
module.info.sv.auto | File | 112 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 260 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 133 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 188 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 243 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 134 B | 0644 |
|
module.info.zh | File | 0 B | 0644 |
|
module.info.zh.auto | File | 112 B | 0644 |
|
module.info.zh_TW | File | 0 B | 0644 |
|
module.info.zh_TW.auto | File | 112 B | 0644 |
|
restart.cgi | File | 355 B | 0755 |
|
save_addr.cgi | File | 943 B | 0755 |
|
save_allow.cgi | File | 1.27 KB | 0755 |
|
save_auth.cgi | File | 1.22 KB | 0755 |
|
save_conn.cgi | File | 1.34 KB | 0755 |
|
save_manual.cgi | File | 455 B | 0755 |
|
save_target.cgi | File | 4.1 KB | 0755 |
|
save_timeout.cgi | File | 862 B | 0755 |
|
start.cgi | File | 332 B | 0755 |
|
stop.cgi | File | 307 B | 0755 |
|
up_allow.cgi | File | 576 B | 0755 |
|