File:  [LON-CAPA] / loncom / build / Attic / postinstall.pl
Revision 1.12: download - view: text, annotated - select for diffs
Thu Dec 28 23:52:32 2000 UTC (23 years, 6 months ago) by harris41
Branches: MAIN
CVS tags: version_0_5_1, version_0_5, version_0_4, stable_2002_spring, stable_2002_july, stable_2002_april, stable_2001_fall, STABLE, HEAD, Before_rewrite
disable X windows when X software is removed -Scott

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

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