# solaris-lib.pl # NIS functions for solaris $binding_dir = "/var/yp/binding"; $yp_makefile = "/var/yp/Makefile"; # get_nis_support() # Returns 0 for no support, 1 for client only, 2 for server and 3 for both sub get_nis_support { local $rv; $rv += 1 if (-x "/usr/lib/netsvc/yp/ypbind"); $rv += 2 if (-x "/usr/lib/netsvc/yp/ypserv"); return $rv; } # get_client_config() # Returns a hash ref containing details of the client's NIS settings sub get_client_config { local $nis; open(DOM, "</etc/defaultdomain"); chop($nis->{'domain'} = <DOM>); close(DOM); if ($nis->{'domain'}) { if (open(SRV, "<$binding_dir/$nis->{'domain'}/ypservers")) { while(<SRV>) { s/\r|\n//g; push(@{$nis->{'servers'}}, $_); } close(SRV); } else { $nis->{'broadcast'} = 1; } } return $nis; } # save_client_config(&config) # Saves and applies the NIS client configuration in the give hash. # Returns an error message if any, or undef on success. sub save_client_config { if ($_[0]->{'domain'}) { # Check if the servers are in /etc/hosts local @s = @{$_[0]->{'servers'}}; &foreign_require("net", "net-lib.pl"); foreach $s (@s) { local $found = 0; foreach $h (&foreign_call("net", "list_hosts")) { $found++ if (&indexof($s, @{$h->{'hosts'}}) >= 0); } return &text("client_ehosts", $s) if (!$found); } # Write the files &open_tempfile(DOM, ">/etc/defaultdomain"); &print_tempfile(DOM, $_[0]->{'domain'},"\n"); &close_tempfile(DOM); mkdir("$binding_dir/$_[0]->{'domain'}", 0755); if (@s) { &open_tempfile(SRV,">$binding_dir/$_[0]->{'domain'}/ypservers"); foreach $s (@s) { &print_tempfile(SRV, "$s\n"); } &close_tempfile(SRV); } else { unlink("$binding_dir/$_[0]->{'domain'}/ypservers"); } } else { unlink("/etc/defaultdomain"); } # Apply by running ypstop and ypstart &system_logged("(/usr/lib/netsvc/yp/ypstop || /etc/init.d/yp stop) >/dev/null 2>&1"); &system_logged("domainname \"$_[0]->{'domain'}\" >/dev/null 2>&1"); &system_logged("(/usr/lib/netsvc/yp/ypstart || /etc/init.d/yp start) >/dev/null 2>&1"); sleep(2); if ($_[0]->{'domain'}) { local $out = `ypwhich 2>&1`; if ($? || $out =~ /not\s+bound/i || $out =~ /can't\s+communicate/i) { system("(/usr/lib/netsvc/yp/ypstop || /etc/init.d/yp stop) >/dev/null 2>&1"); return $text{'client_eypwhich'}; } } } @nis_tables = ( "passwd", "group", "hosts", "ethers", "networks", "rpc", "services", "protocols", "netgroup", "bootparams", "aliases", "publickey", "netid", "netmasks", "c2secure", "timezone", "auto.master", "auto.home" ); # show_server_config() # Display a form for editing NIS server options sub show_server_config { local ($var, $rule) = &parse_yp_makefile(); local $dom = `domainname`; chop($dom); print "<tr> <td><b>$text{'server_boot'}</b></td> <td>\n"; if ($dom && -d "/var/yp/$dom") { print "<i>$text{'server_already'}</i>\n"; } else { print "<input type=radio name=boot value=1 > $text{'yes'}\n"; print "<input type=radio name=boot value=0 checked > $text{'no'}\n"; } print "</td>\n"; print "<td><b>$text{'server_domain'}</b></td>\n"; printf "<td><input type=radio name=domain_def value=1 %s> %s\n", $dom ? '' : 'checked', $text{'server_none'}; printf "<input type=radio name=domain_def value=0 %s>\n", $dom ? 'checked' : ''; printf "<input name=domain size=35 value='%s'></td> </tr>\n", $dom; print "<tr> <td><b>$text{'server_type'}</b></td>\n"; printf "<td colspan=3><input type=radio name=type value=1 %s> %s\n", $config{'slave'} ? '' : 'checked', $text{'server_master'}; printf "<input type=radio name=type value=0 %s> %s\n", $config{'slave'} ? 'checked' : '', $text{'server_slave'}; printf "<input name=slave size=30 value='%s'></td> </tr>\n", $config{'slave'}; print "<tr> <td colspan=4><i>$text{'server_solaris'}</i></td> </tr>\n"; print "</table></td></tr></table><p>\n"; print "<table border width=100%>\n"; print "<tr $tb> <td><b>$text{'server_mheader'}</b></td> </tr>\n"; print "<tr $cb> <td><table width=100%>\n"; local %inall; local @all = split(/\s+/, $rule->{'all'}->{'value'}); map { $inall{$_}++ } @all; print "<tr> <td rowspan=4 valign=top><b>$text{'server_tables'}</b></td>\n"; print "<td rowspan=4><select multiple size=6 name=tables>\n"; foreach $t (&unique(@nis_tables, @all)) { printf "<option value=%s %s>%s</option>\n", $t, $inall{$t} ? 'selected' : '', $t; } print "</select></td>\n"; print "<td><b>$text{'server_dns'}</b></td>\n"; printf "<td><input type=radio name=b value='-b' %s> %s\n", $var->{'B'}->{'value'} eq '-b' ? 'checked' : '', $text{'yes'}; printf "<input type=radio name=b value='' %s> %s</td> </tr>\n", $var->{'B'}->{'value'} eq '-b' ? '' : 'checked', $text{'no'}; print "<tr> <td><b>$text{'server_push'}</b></td>\n"; printf "<td><input type=radio name=nopush value='\"\"' %s> %s\n", $var->{'NOPUSH'}->{'value'} eq 'true' ? '' : 'checked', $text{'yes'}; printf "<input type=radio name=nopush value=true %s> %s</td> </tr>\n", $var->{'NOPUSH'}->{'value'} eq 'true' ? 'checked' : '', $text{'no'}; print "<tr> <td><b>$text{'server_dir'}</b></td>\n"; printf "<td><input name=dir size=30 value='%s'> %s</td> </tr>\n", $var->{'DIR'}->{'value'}, &file_chooser_button("dir", 0); print "<tr> <td><b>$text{'server_pwdir'}</b></td>\n"; printf "<td><input name=pwdir size=30 value='%s'> %s</td> </tr>\n", $var->{'PWDIR'}->{'value'}, &file_chooser_button("pwdir", 0); } # parse_server_config() # Parse and save the NIS server options sub parse_server_config { local ($var, $rule) = &parse_yp_makefile(); $in{'domain_def'} || $in{'domain'} =~ /^[A-Za-z0-9\.\-\_]+$/ || &error(&text('server_edomain', $in{'domain'})); if ($in{'boot'} && $in{'domain_def'}) { &error($text{'server_ebootdom'}); } $in{'type'} || &to_ipaddress($in{'slave'}) || &to_ip6address($in{'slave'}) || &error($text{'server_eslave'}); -d $in{'dir'} || &error($text{'server_edir'}); -d $in{'pwdir'} || &error($text{'server_epwdir'}); &update_makefile($var->{'NOPUSH'}, $in{'nopush'}); &update_makefile($var->{'B'}, $in{'b'}); &update_makefile($rule->{'all'}, join(" ", split(/\0/, $in{'tables'})), ""); &update_makefile($var->{'DIR'}, $in{'dir'}); &update_makefile($var->{'PWDIR'}, $in{'pwdir'}); &flush_file_lines(); if ($in{'domain_def'}) { unlink("/etc/defaultdomain"); &system_logged("domainname \"\" >/dev/null 2>&1"); } else { local $old = `domainname`; chop($old); &open_tempfile(DOM, ">/etc/defaultdomain"); &print_tempfile(DOM, "$in{'domain'}\n"); &close_tempfile(DOM); &system_logged("domainname \"$in{'domain'}\" >/dev/null 2>&1"); if ($in{'boot'}) { # Create the domain directory mkdir("/var/yp/$in{'domain'}", 0755); &system_logged("rm -f /var/yp/*.time"); # force a remake } } if ($in{'type'}) { # Master server delete($config{'slave'}); &apply_table_changes() if (!$in{'domain_def'} && -d "/var/yp/$in{'domain'}"); } else { local $temp = &transname(); open(TEMP, ">$temp"); print TEMP "n\ny\n"; close(TEMP); $out = &backquote_logged("/usr/sbin/ypinit -s $in{'slave'} <$temp 2>&1"); unlink($temp); if ($?) { &error("<tt>$out</tt>"); } $config{'slave'} = $in{'slave'}; } &write_file("$module_config_directory/config", \%config); &system_logged("(/usr/lib/netsvc/yp/ypstop || /etc/init.d/yp stop) >/dev/null 2>&1"); &system_logged("(/usr/lib/netsvc/yp/ypstart || /etc/init.d/yp start) >/dev/null 2>&1"); } # get_server_mode() # Returns 0 if the NIS server is inactive, 1 if active as a master, or 2 if # active as a slave. sub get_server_mode { local $dom = `domainname`; chop($dom); return !$dom ? 0 : $config{'slave'} ? 2 : 1; } # 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*(.*)/) { # Found a makefile rule $rule{$1} = { 'name' => $1, 'value' => $2, 'type' => 1, 'code' => $lines[$i+1]->{'value'}, 'line' => $lines[$i]->{'line'}, '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_]+)\)(.*)$/) { $rv = $1.$_[1]->{$2}->{'value'}.$3; } 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); } # apply_table_changes() # Do whatever is necessary for the table text files to be loaded into # the NIS server sub apply_table_changes { if ($0 =~ /save_(\S+).cgi/) { # Try to make just one table local $table = $1; local $ex = &system_logged("(cd /var/yp ; /usr/ccs/bin/make $table) >/dev/null 2>&1 </dev/null"); return if (!$ex); } &system_logged("(cd /var/yp ; /usr/ccs/bin/make) >/dev/null 2>&1 </dev/null"); } # list_nis_tables() # Returns a list of structures of all NIS tables sub list_nis_tables { local @rv; local ($var, $rule) = &parse_yp_makefile(); local $dom = `domainname`; chop($dom); local @all = split(/\s+/, $rule->{'all'}->{'value'}); foreach $t (@all) { local $table = { 'table' => $t, 'index' => scalar(@rv), 'domain' => $dom }; local $rt = $rule->{"$t.time"}; local @files = split(/\s+/, $rt->{'value'}); @files = map { &expand_vars($_, $var) } @files; $table->{'files'} = \@files; $table->{'type'} = $t eq 'passwd' && @files > 1 ? 'passwd_shadow' : $t; push(@rv, $table); } return @rv; } sub show_server_security { } sub parse_server_security { &system_logged("(/usr/lib/netsvc/yp/ypstop || /etc/init.d/yp stop) >/dev/null 2>&1"); &system_logged("(/usr/lib/netsvc/yp/ypstart || /etc/init.d/yp start) >/dev/null 2>&1"); } sub extra_config_files { local @rv = ( "/etc/defaultdomain" ); local $conf = &get_client_config(); if ($conf->{'domain'}) { push(@rv, "$binding_dir/$conf->{'domain'}/ypservers"); } return @rv; } 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 |
|