File:  [LON-CAPA] / loncom / build / Attic / postinstall.pl
Revision 1.8: download - view: text, annotated - select for diffs
Tue Nov 21 15:43:53 2000 UTC (23 years, 6 months ago) by harris41
Branches: MAIN
CVS tags: HEAD
oops.. fixed alteration of etc/atalk/config file

    1: #!/usr/bin/perl
    2: 
    3: # A post-installation script
    4: # to finalize a LON-CAPA
    5: # installation.
    6: 
    7: # set /etc/hosts.deny to be ALL: ALL
    8: open OUT, ">/etc/hosts.deny";
    9: print OUT "ALL: ALL\n";
   10: close OUT;
   11: 
   12: # get wget and install
   13: system('lynx -source http://install.lon-capa.org/3.1/SupplementalRPMS/wget-1.5.3-6.i386.rpm > wget-1.5.3-6.i386.rpm');
   14: system('rpm -Uvh --force wget-1.5.3-6.i386.rpm');
   15: 
   16: # download SupplementalRPMS and install
   17: system('wget','-r','http://install.lon-capa.org/3.1/SupplementalRPMS');
   18: system('rpm -Uvh --force install.lon-capa.org/3.1/SupplementalRPMS/*.rpm');
   19: 
   20: # download remove_extra.sh and run
   21: system('wget','http://install.lon-capa.org/3.1/scripts/remove_extra.sh');
   22: system('sh','./remove_extra.sh');
   23: 
   24: # download FinalRPMS and install
   25: system('wget','-r','http://install.lon-capa.org/3.1/FinalRPMS');
   26: system('rpm -Uvh --force install.lon-capa.org/3.1/FinalRPMS/*.rpm');
   27: 
   28: my $okay=0;
   29: DEV: while ($okay==0) {
   30:     print "\n\nWill this machine be used to develop future LON-CAPA software? (y/n)\n";
   31:     my $input=<>;
   32:     if ($input=~/^y/i) {
   33:         $okay=1;
   34:     }
   35:     elsif ($input=~/^n/i) {
   36: 	last DEV;
   37:     }
   38: }
   39: if (!$okay) {
   40:     system('wget','http://install.lon-capa.org/3.1/scripts/remove_extra_dev.sh');
   41:     system('sh','./remove_extra_dev.sh');
   42: }
   43: 
   44: # allow entry of new access.conf parameters
   45: my @perlsetvars=("lonHostID","lonRole","lonAdmEMail","lonDefDomain","lonLoadLim","lonExpire");
   46: my %psvinfo=(
   47: 	     "lonHostID" => <<END
   48: LON Host ID is an internal ID within the LON-CAPA
   49: network used to specify the uniqueness of a particular
   50: LON-CAPA server.  Current examples include "msul1", "msua3",
   51: "103l1", "fsul1", and "107a1".
   52: END
   53: ,	     "lonRole" => <<END
   54: LON Role specifies the role this machine plays within
   55: the LON-CAPA network.  There are two valid values for
   56: this:
   57:  * library
   58:  * access
   59: END
   60: ,	     "lonAdmEMail" => <<END
   61: LON System Administrator E-Mail specifies the e-mail
   62: address of an institutional member responsible for
   63: direct upkeep of this server.
   64: END
   65: ,	     "lonDefDomain" => <<END
   66: LON Domain is a unique internal identifier within the LON-CAPA network
   67: specific to the home institution.  Current examples include
   68: "msu", "fsu", "103", and "107".
   69: END
   70: ,	     "lonLoadLim" => <<END
   71: LON Load Limit specifies a threshold of activity within The Learning
   72: Online Network that this machine should provide.  We strongly recommend
   73: a value of 2.00.  Depending on processor architecture (dual processor),
   74: this value may be increased, but there is no readily available measure
   75: in this regard.
   76: END
   77: ,	     "lonExpire" => <<END
   78: LON Expiration Time indicates, in seconds, how long distributed resources
   79: should be held in the server's cache when not being accessed by students,
   80: instructors, or any other class of user.  We recommend a value of 86400.
   81: END
   82: 	     );
   83: my $template=`/bin/cat /etc/httpd/conf/access.conf`;
   84: $okay=0;
   85: while ($okay==0) {
   86:     foreach my $psv (@perlsetvars) {
   87:         print "\n";
   88:         print $psvinfo{$psv};
   89:         print "\nEnter in value for $psv: "; my $input=<>; chop $input;
   90:         my $pval=$input;
   91:         $template=~s/(\nPerlSetVar\s+$psv\s+)\S+/$1$pval/;
   92:         $pvar{$psv}=$pval;
   93:     }
   94:     print "\n\nThese are the current values:\n";
   95:     foreach my $psv (@perlsetvars) {
   96:         print "$psv\t\t$pvar{$psv}\n";
   97:     }
   98:     print "Are these correct? (y/n)";
   99:     my $input=<>;
  100:     if ($input=~/^y/i) {
  101:         $okay=1;
  102:     }
  103: }
  104: open OUT,">/etc/httpd/conf/access.conf";
  105: print OUT $template;
  106: close OUT;
  107: 
  108: $template=`/bin/cat /etc/smb.conf`;
  109: foreach my $psv (@perlsetvars) {
  110:     $template=~s/\{\{\{\{\[(.*?)\]\}\}\}\}/$pvar{$1}/ge;
  111: }
  112: open OUT,">/etc/smb.conf";
  113: print OUT $template;
  114: close OUT;
  115: 
  116: # unshadow passwords
  117: # change this line in /etc/pam.d/login
  118: # password   required     /lib/security/pam_pwdb.so nullok use_authtok md5 shadow
  119: $template=`/bin/cat /etc/pam.d/login`;
  120: $template=~s|password   required     /lib/security/pam_pwdb\.so nullok use_authtok md5 shadow|password   required     /lib/security/pam_pwdb.so nullok use_authtok|;
  121: open OUT, ">/etc/pam.d/login";
  122: print OUT $template;
  123: close OUT;
  124: # change this line in /etc/pam.d/passwd
  125: # password   required     /lib/security/pam_pwdb.so use_authtok nullok md5 shadow 
  126: $template=`/bin/cat /etc/pam.d/passwd`;
  127: $template=~s|password   required     /lib/security/pam_pwdb\.so nullok use_authtok md5 shadow|password   required     /lib/security/pam_pwdb.so nullok use_authtok|;
  128: open OUT, ">/etc/pam.d/passwd";
  129: print OUT $template;
  130: close OUT;
  131: `/usr/sbin/pwunconv`;
  132: `/usr/sbin/grpunconv`;
  133: # set new passwords
  134: print "Now we need to have passwords entered in order to unshadow this machine.\n";
  135: system('stty -echo');
  136: $okay=0;
  137: my $input1;
  138: my $input2;
  139: while ($okay==0) {
  140:     print "Enter in password for root: ";
  141:     $input1=<>; chop $input1;
  142:     print "\nEnter in password again for root: ";
  143:     $input2=<>; chop $input2;
  144:     if ($input1 ne $input2) {
  145:         print "\nPasswords do not match, try again.\n";
  146:     }
  147:     else {
  148:         $okay=1;
  149:     }
  150: }
  151: open OUT, "|/usr/sbin/chpasswd";
  152: print OUT "root:$input1\n";
  153: close OUT;
  154: 
  155: $okay=0;
  156: while ($okay==0) {
  157:     print "\nEnter in password for www: ";
  158:     $input1=<>; chop $input1;
  159:     print "\nEnter in password again for www: ";
  160:     $input2=<>; chop $input2;
  161:     if ($input1 ne $input2) {
  162:         print "\nPasswords do not match, try again.\n";
  163:     }
  164:     else {
  165:         $okay=1;
  166:     }
  167: }
  168: open OUT, "|/usr/sbin/chpasswd";
  169: print OUT "www:$input1\n";
  170: close OUT;
  171: system('stty echo');
  172: 
  173: # create mime.types link
  174: `ln -s /etc/mime.types /etc/httpd/conf/mime.types`;
  175: 
  176: # restart network and inet services
  177: system('/etc/rc.d/init.d/network','reload');
  178: system('/etc/rc.d/init.d/inet','restart');
  179: # restart httpd
  180: system('/etc/rc.d/init.d/httpd','restart');
  181: 
  182: # fix the setup of init.d processes
  183: # nfs
  184: # bash$ diff nfs nfs~
  185: # 6c6
  186: # < # chkconfig: 345 60 20
  187: # ---
  188: # > # chkconfig: - 60 20
  189: # then chkconfig
  190: $template=`/bin/cat /etc/rc.d/init.d/nfs`;
  191: $template=~s/\# chkconfig: - 60 20/\# chkconfig: 345 60 20/;
  192: open OUT,">/etc/rc.d/init.d/nfs";
  193: print OUT $template;
  194: close OUT;
  195: $template=`/bin/cat /etc/rc.d/init.d/xntpd`;
  196: $template=~s/\# chkconfig: - 55 10/\# chkconfig: 345 55 10/;
  197: open OUT,">/etc/rc.d/init.d/xntpd";
  198: print OUT $template;
  199: close OUT;
  200: 
  201: # ntp
  202: # chkconfig 345
  203: # then chkconfig
  204: 
  205: # make atalk specific modifications
  206: # /etc/atalk/config
  207: open OUT, ">/etc/atalk/config";
  208: print OUT <<END;
  209: # Appletalk configuration
  210: # Change this to increase the maximum number of clients that can connect:
  211: AFPD_MAX_CLIENTS=5
  212: # Change this to set the machine's atalk name:
  213: # ATALK_NAME=`echo \${HOSTNAME}|cut -d. -f1`
  214: ATALK_NAME=`grep '^PerlSetVar.*lonHostID' /etc/httpd/conf/access.conf | perl -e '\$_=<>; split(/\\s+/); print "LONCAPA_\$_[2]";
  215: '`
  216: # Set which daemons to run:
  217: PAPD_RUN=no
  218: AFPD_RUN=yes
  219: # Control whether the daemons are started in the background
  220: ATALK_BGROUND=no
  221: END
  222: close OUT;
  223: # /etc/conf.modules should have this line
  224: #      alias net-pf-5 appletalk
  225: # depmod -a
  226: $template=`/bin/cat /etc/conf.modules`;
  227: $template.="alias net-pf-5 appletalk\n";
  228: open OUT, ">/etc/conf.modules";
  229: print OUT $template;
  230: close OUT;
  231: system('depmod -a');
  232: 
  233: # restart nfs, smb, xntpd and atalk services
  234: system('/etc/rc.d/init.d/smb','restart');
  235: system('/etc/rc.d/init.d/atalk','restart');
  236: system('/etc/rc.d/init.d portmap','stop');
  237: system('/etc/rc.d/init.d nfs','stop');
  238: system('/etc/rc.d/init.d portmap','start');
  239: system('/etc/rc.d/init.d nfs','start');
  240: system('/etc/rc.d/init.d/smb','restart');
  241: system('/etc/rc.d/init.d/inet','restart');
  242: system('/etc/rc.d/init.d/xntpd','restart');
  243: 
  244: # restart loncontrol
  245: print "Please be patient while loncontrol services are restarted (approximately 10 minutes).\n";
  246: system('/etc/rc.d/init.d/loncontrol','restart');
  247: 
  248: # warn about /etc/hosts.allow
  249: print <<END;
  250: Final note:  Currently your machine is set-up
  251: to disable many different kinds of network
  252: connectivity.  To enable network connectivity
  253: different than that needed for LON-CAPA, you
  254: must make appropriate adjustment to the
  255: /etc/hosts.allow file.
  256: END

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>