diff --git a/blue-theme/iscsi-server/images/users.gif b/blue-theme/iscsi-server/images/users.gif new file mode 100644 index 000000000..c6bc5174d Binary files /dev/null and b/blue-theme/iscsi-server/images/users.gif differ diff --git a/iscsi-server/config b/iscsi-server/config index 03990a3d3..058407c7f 100644 --- a/iscsi-server/config +++ b/iscsi-server/config @@ -1,4 +1,5 @@ targets_file=/etc/iscsi/targets +auths_file=/etc/iscsi/auths iscsi_server=/usr/sbin/iscsi-target pid_file=/var/run/iscsi-target.pid init_name=netbsd-iscsi diff --git a/iscsi-server/config-freebsd b/iscsi-server/config-freebsd index 144a8ef03..cb1c980d2 100644 --- a/iscsi-server/config-freebsd +++ b/iscsi-server/config-freebsd @@ -1,4 +1,5 @@ targets_file=/usr/local/etc/iscsi/targets +auths_file=/usr/local/etc/iscsi/auths iscsi_server=/usr/local/bin/iscsi-target pid_file=/var/run/iscsi-target.pid init_name=iscsi_target diff --git a/iscsi-server/config.info b/iscsi-server/config.info index 4b6eedbc9..fbe124ef0 100644 --- a/iscsi-server/config.info +++ b/iscsi-server/config.info @@ -1,4 +1,5 @@ targets_file=iSCSI server targets file,0 +auths_file=iSCSI server authentication file,0 iscsi_server=Full path to iSCSI server,0 pid_file=Full path to PID file,0 init_name=Bootup script name,0 diff --git a/iscsi-server/images/users.gif b/iscsi-server/images/users.gif new file mode 100644 index 000000000..1952c6e56 Binary files /dev/null and b/iscsi-server/images/users.gif differ diff --git a/iscsi-server/iscsi-server-lib.pl b/iscsi-server/iscsi-server-lib.pl index 081e6020b..31ca17cce 100644 --- a/iscsi-server/iscsi-server-lib.pl +++ b/iscsi-server/iscsi-server-lib.pl @@ -474,5 +474,31 @@ foreach my $o (keys %$opts) { &save_iscsi_options_string(join(" ", @str)); } +# list_iscsi_users() +# Parses the auths file and returns an array of users +sub list_iscsi_users +{ +my @rv; +my $fh = "AUTHS"; +my $lnum = 0; +&open_readfile($fh, $config{'auths_file'}) || return ( ); +while(<$fh>) { + s/\r|\n//; + s/\s+$//; + my ($user, $mode, $pass, @rest) = split(/:/, $_); + if ($user) { + my $uinfo = { 'user' => $user, + 'mode' => $mode, + 'pass' => $pass, + 'rest' => \@rest, + 'line' => $lnum }; + push(@rv, $uinfo); + } + $lnum++; + } +close($fh); +return @rv; +} + 1; diff --git a/iscsi-server/lang/en b/iscsi-server/lang/en index 3b0a29890..232006d38 100644 --- a/iscsi-server/lang/en +++ b/iscsi-server/lang/en @@ -138,6 +138,10 @@ manual_desc=Use the text box below to edit the iSCSI server configuration file $ manual_err=Failed to save configuration file manual_edata=No contents entered! +users_title=iSCSI Authentication +users_none=No iSCSI users have been created yet. Clients will be able to access shared devices without authenticating. +users_add=Add a new iSCSI user. + desc_extent=Device to share $1 desc_device=Device combination $1 desc_target=Sharing target $1 diff --git a/iscsi-server/list_users.cgi b/iscsi-server/list_users.cgi new file mode 100644 index 000000000..3a261094e --- /dev/null +++ b/iscsi-server/list_users.cgi @@ -0,0 +1,37 @@ +#!/usr/local/bin/perl +# List all iscsi users + +use strict; +use warnings; +require './iscsi-server-lib.pl'; +our (%text); +my @users = &list_iscsi_users(); + +&ui_print_header(undef, $text{'users_title'}, ""); + +my @links = ( "$text{'users_add'}" ); +if (@users) { + unshift(@links, &select_all_link("d"), &select_invert_link("d")); + print &ui_form_start("delete_devices.cgi"); + print &ui_links_row(\@links); + my @tds = ( "width=5" ); + print &ui_columns_start([ undef, + $text{'users_name'}, + $text{'users_mode'} ], 100, 0, \@tds); + foreach my $e (@users) { + print &ui_checked_columns_row([ + "". + &html_escape($e->{'user'})."", + uc($e->{'mode'}), + ], \@tds, "d", $e->{'user'}); + } + print &ui_columns_end(); + print &ui_links_row(\@links); + print &ui_form_end([ [ undef, $text{'users_delete'} ] ]); + } +else { + print "$text{'users_none'}

\n"; + print &ui_links_row(\@links); + } + +&ui_print_footer("", $text{'index_return'});