#!/usr/local/bin/perl # setup.cgi # Setup the CVS server in inetd or xinetd require './pserver-lib.pl'; $inet = &check_inetd(); $restart = $inet->{'type'} if ($inet); if (!$inet) { # Need to setup for the first time if ($has_xinetd) { # Just add an unlisted service $restart = "xinetd"; } elsif ($has_inetd) { # Is there already a service on port 2401, or named cvspserver? foreach $s (&inetd::list_services()) { local @al = split(/\s+/, $s->[4]); if ($s->[2] == $cvs_port || $s->[1] eq $cvs_inet_name || &indexof($cvs_inet_name, @al) >= 0) { # Yes! Use it $sname = $s->[1]; last; } } if (!$sname) { $sname = $cvs_inet_name; &inetd::create_service($sname, $cvs_port, "tcp", undef); } &inetd::create_inet(1, $sname, "stream", "tcp", "nowait", "root", $cvs_path, "cvs -f --allow-root '$config{'cvsroot'}' pserver"); $restart = "inetd"; } else { } } elsif ($inet->{'active'}) { # Need to de-activate if ($inet->{'type'} eq 'inetd') { local @i = @{$inet->{'inetd'}}; &inetd::modify_inet($i[0], 0, $i[3], $i[4], $i[5], $i[6], $i[7], $i[8], $i[9], $i[10]); } else { } } else { # Need to activate if ($inet->{'type'} eq 'inetd') { local @i = @{$inet->{'inetd'}}; &inetd::modify_inet($i[0], 1, $i[3], $i[4], $i[5], $i[6], $i[7], $i[8], $i[9], $i[10]); } else { } } # Restart inetd or xinetd if ($restart eq "inetd") { %iconfig = &foreign_config("inetd"); &system_logged( "$iconfig{'restart_command'} >/dev/null 2>&1 ); close(PID); kill('USR2', $pid); } } &redirect("");