# nis-lib.pl # Common functions for NIS client and server management BEGIN { push(@INC, ".."); }; use WebminCore; &init_config(); if (-r "$module_root_directory/$gconfig{'os_type'}-$gconfig{'os_version'}-lib.pl") { do "$gconfig{'os_type'}-$gconfig{'os_version'}-lib.pl"; } else { do "$gconfig{'os_type'}-lib.pl"; } if ($gconfig{'os_type'} =~ /-linux$/) { do "linux-lib.pl"; } &foreign_require("init", "init-lib.pl"); # init_script(action) # Returns the full path to some init script sub init_script { local %iconfig = &foreign_config("init"); return "$iconfig{'init_dir'}/$_[0]"; } # get_nsswitch_conf() # Parses lines of nsswitch.conf into an array sub get_nsswitch_conf { local @rv; open(SWITCH, "<".$config{'nsswitch_conf'}); while(<SWITCH>) { s/\r|\n//g; s/#.*$//g; if (/^\s*(\S+):\s*(.*)/) { local $sw = { 'service' => $1, 'order' => $2 }; push(@rv, $sw); } } close(SWITCH); return @rv; } # save_nsswitch(service, order) # Updates the line for some service in nsswitch.conf sub save_nsswitch { local $lref = &read_file_lines($config{'nsswitch_conf'}); foreach $l (@$lref) { if ($l =~ /^\s*(\S+):/ && $1 eq $_[0]) { $l = "$_[0]:\t$_[1]"; last; } } } # table_edit_setup(table, line, splitter) # Returns &table, &lnums, line1, line2, ... sub table_edit_setup { local @tables = &list_nis_tables(); local $t = $tables[$_[0]]; return ( $t ) if (!defined($_[1])); local @lnums = ( $_[1] ); local $lref = &read_file_lines($t->{'files'}->[0]); local @lines = ( [ split($_[2], $lref->[$_[1]]) ] ); local $i; for($i=1; $t->{'files'}->[$i]; $i++) { local $lref2 = &read_file_lines($t->{'files'}->[$i]); local $lnum = 0; foreach $l (@$lref2) { local @line2 = split($_[2], $l); if ($line2[0] eq $lines[0]->[0]) { push(@lnums, $lnum); push(@lines, \@line2); last; } $lnum++; } } return ($t, \@lnums, @lines); } # table_add(&table, separator, &record, ...) # Adds a record to an NIS table sub table_add { local $i = 2; foreach $f (@{$_[0]->{'files'}}) { local $lref = &read_file_lines($f); push(@$lref, join($_[1], @{$_[$i++]})); } &flush_file_lines(); } # table_delete(&table, &lnums) # Delete a record from an NIS table sub table_delete { local $i = 0; foreach $f (@{$_[0]->{'files'}}) { local $lref = &read_file_lines($f); splice(@$lref, $_[1]->[$i], 1); $i++; } &flush_file_lines(); } # table_update(&table, &lnums, separator, &record, ...) # Modify a record in an NIS table sub table_update { local $i = 0; foreach $f (@{$_[0]->{'files'}}) { local $lref = &read_file_lines($f); splice(@$lref, $_[1]->[$i], 1, join($_[2], @{$_[$i+3]})); $i++; } &flush_file_lines(); } # date_input(day, month, year, prefix) sub date_input { print "<input name=$_[3]d size=3 value='$_[0]'>"; print "/<select name=$_[3]m>\n"; local $m; foreach $m (1..12) { printf "<option value=%d %s>%s</option>\n", $m, $_[1] eq $m ? 'selected' : '', $text{"smonth_$m"}; } print "</select>"; print "/<input name=$_[3]y size=5 value='$_[2]'>"; print &date_chooser_button("$_[3]d", "$_[3]m", "$_[3]y"); } # parse_ypserv_conf() # Returns &opts, &maps sub parse_ypserv_conf { local (%opts, @hosts); local $lnum = 0; open(CONF, "<".$ypserv_conf); while(<CONF>) { s/\r|\n//g; s/#.*$//; if (/^\s*([^:\s]+):\s*(yes|no)/) { # Found an option $opts{$1} = { 'name' => $1, 'value' => $2 eq 'yes' ? 1 : 0, 'line' => $lnum }; } elsif (/^\s*([^:\s]+)\s*:\s*([^:\s]+)\s*:\s*([^:\s]+)\s*:\s*(none|port|mangle|deny)(\/mangle(:(\d+))?)?/) { # Found a host and domain line (new format) push(@hosts, { 'host' => $1, 'domain' => $2, 'map' => $3, 'sec' => $4, 'mangle' => $5 ? 1 : 0, 'field' => $7, 'line' => $lnum } ); } elsif (/^\s*([^:\s]+)\s*:\s*([^:\s]+)\s*:\s*([^:\s]+)(\s*:\s*([^:\s]+))?(\s*:\s*([^:\s]+))?/) { # Found a host line (old format) push(@hosts, { 'host' => $1, 'map' => $2, 'sec' => $3, 'mangle' => $5 eq 'yes' ? 1 : 0, 'field' => $7 eq '' ? 2 : $7, 'line' => $lnum } ); } $lnum++; } close(CONF); return (\%opts, \@hosts); } # parse_yp_makefile() # Returns hashes of makefile variables and rules sub parse_yp_makefile { # First parse joined lines local $lnum = 0; local (@lines, $llast); open(MAKE, "<".$yp_makefile); while(<MAKE>) { s/\r|\n//g; local $slash = (s/\\$//); s/#.*$//; if ($llast) { $llast->{'value'} .= " $_"; $llast->{'eline'} = $lnum; } else { push(@lines, { 'value' => $_, 'line' => $lnum, 'eline' => $lnum }); } $llast = $slash ? $lines[$#lines] : undef; $lnum++; } close(MAKE); # Then look for variables and rules local ($i, %var, %rule); for($i=0; $i<@lines; $i++) { if ($lines[$i]->{'value'} =~ /^\s*(\S+)\s*=\s*(.*)/) { # Found a variable $var{$1} = { 'name' => $1, 'value' => $2, 'type' => 0, 'line' => $lines[$i]->{'line'}, 'eline' => $lines[$i]->{'eline'} }; } elsif ($lines[$i]->{'value'} =~ /^\s*(\S+)\s*\+=\s*(.*)/) { # Adding to a variable if ($var{$1}) { $var{$1}->{'value'} .= ' '.$2; } } elsif ($lines[$i]->{'value'} =~ /^\s*(\S+):\s*(.*)/) { # Found a makefile rule $rule{$1} = { 'name' => $1, 'value' => $2, 'type' => 1, 'line' => $lines[$i]->{'line'}, 'eline' => $lines[$i]->{'eline'} }; if ($lines[$i+1]->{'value'} =~ /^\s+/) { $rule{$1}->{'code'} = $lines[$i+1]->{'value'}; $rule{$1}->{'eline'} = $lines[$i+1]->{'eline'}; $i++; } } } return ( \%var, \%rule ); } # expand_vars(string, &vars) sub expand_vars { local $rv = $_[0]; while($rv =~ /^(.*)\$\(([A-Za-z0-9_]+)\)(.*)$/) { # if (substr($_[1]->{$2}->{'value'}, 0, 7) eq '$(shell') { # $rv = $1."\0(".$2.")".$3; # } # else { $rv = $1.$_[1]->{$2}->{'value'}.$3; # } } #$rv =~ s/\0/\$/g; return $rv; } # update_makefile(&old, value, [value]); sub update_makefile { local $lref = &read_file_lines($yp_makefile); local @n; if ($_[0]->{'type'} == 0) { @n = ( "$_[0]->{'name'} = $_[1]" ); } else { @n = ( "$_[0]->{'name'}: $_[1]", $_[2] ); } splice(@$lref, $_[0]->{'line'}, $_[0]->{'eline'} - $_[0]->{'line'} + 1, @n); } 1;
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 308 B | 0644 |
|
aix-lib.pl | File | 9.79 KB | 0755 |
|
backup_config.pl | File | 817 B | 0755 |
|
build.cgi | File | 162 B | 0755 |
|
coherent-linux-lib.pl | File | 10.4 KB | 0755 |
|
config-aix | File | 181 B | 0644 |
|
config-coherent-linux | File | 116 B | 0644 |
|
config-debian-linux | File | 120 B | 0644 |
|
config-generic-linux | File | 116 B | 0644 |
|
config-mandrake-linux | File | 116 B | 0644 |
|
config-msc-linux | File | 116 B | 0644 |
|
config-open-linux | File | 117 B | 0644 |
|
config-openSUSE-Linux-15.0-ALL | File | 116 B | 0644 |
|
config-openmamba-linux | File | 116 B | 0644 |
|
config-redhat-linux | File | 116 B | 0644 |
|
config-slackware-linux | File | 116 B | 0644 |
|
config-solaris | File | 167 B | 0644 |
|
config-solaris-8-ALL | File | 199 B | 0644 |
|
config-suse-linux | File | 116 B | 0644 |
|
config-trustix-linux | File | 116 B | 0644 |
|
config-united-linux | File | 116 B | 0644 |
|
config.info | File | 282 B | 0644 |
|
config.info.ca | File | 320 B | 0644 |
|
config.info.cs | File | 321 B | 0644 |
|
config.info.de | File | 321 B | 0644 |
|
config.info.es | File | 277 B | 0644 |
|
config.info.fr | File | 350 B | 0644 |
|
config.info.hu | File | 0 B | 0644 |
|
config.info.nl | File | 290 B | 0644 |
|
config.info.no | File | 297 B | 0644 |
|
config.info.pl | File | 309 B | 0644 |
|
config.info.ru | File | 491 B | 0644 |
|
config.info.sv | File | 132 B | 0644 |
|
config.info.uk | File | 500 B | 0644 |
|
debian-linux-lib.pl | File | 10.19 KB | 0755 |
|
edit_aliases.cgi | File | 1.2 KB | 0755 |
|
edit_client.cgi | File | 1.41 KB | 0755 |
|
edit_ethers.cgi | File | 1.14 KB | 0755 |
|
edit_group.cgi | File | 1.81 KB | 0755 |
|
edit_group_shadow.cgi | File | 1.83 KB | 0755 |
|
edit_hosts.cgi | File | 1.31 KB | 0755 |
|
edit_netgroup.cgi | File | 2.01 KB | 0755 |
|
edit_netmasks.cgi | File | 1.16 KB | 0755 |
|
edit_networks.cgi | File | 1.35 KB | 0755 |
|
edit_passwd.cgi | File | 4.8 KB | 0755 |
|
edit_passwd_shadow.cgi | File | 4.8 KB | 0755 |
|
edit_passwd_shadow_full.cgi | File | 4.8 KB | 0755 |
|
edit_protocols.cgi | File | 1.35 KB | 0755 |
|
edit_rpc.cgi | File | 1.3 KB | 0755 |
|
edit_security.cgi | File | 1.92 KB | 0755 |
|
edit_server.cgi | File | 607 B | 0755 |
|
edit_services.cgi | File | 1.52 KB | 0755 |
|
edit_services2.cgi | File | 1.53 KB | 0755 |
|
edit_switch.cgi | File | 1.74 KB | 0755 |
|
edit_tables.cgi | File | 6.24 KB | 0755 |
|
feedback_files.pl | File | 157 B | 0755 |
|
index.cgi | File | 776 B | 0755 |
|
linux-lib.pl | File | 5.27 KB | 0755 |
|
list_switches.cgi | File | 772 B | 0755 |
|
mandrake-linux-lib.pl | File | 10.38 KB | 0755 |
|
md5-lib.pl | File | 7.58 KB | 0755 |
|
module.info | File | 346 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 167 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 195 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 287 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 250 B | 0644 |
|
module.info.ca | File | 163 B | 0644 |
|
module.info.ca.auto | File | 12 B | 0644 |
|
module.info.cs | File | 28 B | 0644 |
|
module.info.cs.auto | File | 145 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 154 B | 0644 |
|
module.info.de | File | 136 B | 0644 |
|
module.info.de.auto | File | 12 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 235 B | 0644 |
|
module.info.es | File | 31 B | 0644 |
|
module.info.es.auto | File | 138 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 164 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 248 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 158 B | 0644 |
|
module.info.fr | File | 30 B | 0644 |
|
module.info.fr.auto | File | 141 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 170 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 171 B | 0644 |
|
module.info.hu | File | 34 B | 0644 |
|
module.info.hu.auto | File | 147 B | 0644 |
|
module.info.it | File | 0 B | 0644 |
|
module.info.it.auto | File | 152 B | 0644 |
|
module.info.ja | File | 49 B | 0644 |
|
module.info.ja.auto | File | 226 B | 0644 |
|
module.info.ko | File | 39 B | 0644 |
|
module.info.ko.auto | File | 154 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 169 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 169 B | 0644 |
|
module.info.ms | File | 149 B | 0644 |
|
module.info.ms.auto | File | 12 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 144 B | 0644 |
|
module.info.nl | File | 30 B | 0644 |
|
module.info.nl.auto | File | 130 B | 0644 |
|
module.info.no | File | 29 B | 0644 |
|
module.info.no.auto | File | 117 B | 0644 |
|
module.info.pl | File | 107 B | 0644 |
|
module.info.pl.auto | File | 12 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 164 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 173 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 156 B | 0644 |
|
module.info.ru | File | 41 B | 0644 |
|
module.info.ru.auto | File | 246 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 165 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 165 B | 0644 |
|
module.info.sv | File | 31 B | 0644 |
|
module.info.sv.auto | File | 123 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 347 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 169 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 247 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 244 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 217 B | 0644 |
|
module.info.zh | File | 34 B | 0644 |
|
module.info.zh.auto | File | 120 B | 0644 |
|
module.info.zh_TW | File | 37 B | 0644 |
|
module.info.zh_TW.auto | File | 126 B | 0644 |
|
msc-linux-lib.pl | File | 10.38 KB | 0755 |
|
nis-lib.pl | File | 6.02 KB | 0755 |
|
nisupdate.conf | File | 1.94 KB | 0644 |
|
old_edit_passwd_shadow.cgi | File | 4.62 KB | 0755 |
|
old_edit_switch.cgi | File | 1.76 KB | 0755 |
|
old_save_switch.cgi | File | 533 B | 0755 |
|
open-linux-lib.pl | File | 7.89 KB | 0755 |
|
openmamba-linux-lib.pl | File | 10.38 KB | 0755 |
|
redhat-linux-lib.pl | File | 10.38 KB | 0755 |
|
save_aliases.cgi | File | 749 B | 0755 |
|
save_client.cgi | File | 661 B | 0755 |
|
save_ethers.cgi | File | 793 B | 0755 |
|
save_file.cgi | File | 588 B | 0755 |
|
save_group.cgi | File | 945 B | 0755 |
|
save_group_shadow.cgi | File | 1.04 KB | 0755 |
|
save_hosts.cgi | File | 758 B | 0755 |
|
save_netgroup.cgi | File | 1.04 KB | 0755 |
|
save_netmasks.cgi | File | 753 B | 0755 |
|
save_networks.cgi | File | 791 B | 0755 |
|
save_passwd_shadow.cgi | File | 2.36 KB | 0755 |
|
save_protocols.cgi | File | 806 B | 0755 |
|
save_rpc.cgi | File | 746 B | 0755 |
|
save_security.cgi | File | 996 B | 0755 |
|
save_server.cgi | File | 184 B | 0755 |
|
save_services.cgi | File | 775 B | 0755 |
|
save_services2.cgi | File | 776 B | 0755 |
|
save_switch.cgi | File | 932 B | 0755 |
|
slackware-linux-lib.pl | File | 9.91 KB | 0755 |
|
solaris-lib.pl | File | 10.45 KB | 0755 |
|
suse-linux-8.2-lib.pl | File | 11.05 KB | 0755 |
|
suse-linux-9.0-lib.pl | File | 11.05 KB | 0755 |
|
suse-linux-lib.pl | File | 11.88 KB | 0755 |
|
switch-lib.pl | File | 3.08 KB | 0755 |
|
trustix-linux-lib.pl | File | 10.38 KB | 0755 |
|
united-linux-lib.pl | File | 11.05 KB | 0755 |
|