Annotation of doc/loncapafiles/updatequery.piml, revision 1.6
1.2 harris41 1: <!-- updatequery.piml -->
1.1 harris41 2: <!-- Scott Harrison -->
3:
1.6 ! harris41 4: <!-- $Id: updatequery.piml,v 1.5 2002/05/13 01:09:26 harris41 Exp $ -->
1.1 harris41 5:
6: <!--
7:
8: This file is part of the LearningOnline Network with CAPA (LON-CAPA).
9:
10: LON-CAPA is free software; you can redistribute it and/or modify
11: it under the terms of the GNU General Public License as published by
12: the Free Software Foundation; either version 2 of the License, or
13: (at your option) any later version.
14:
15: LON-CAPA is distributed in the hope that it will be useful,
16: but WITHOUT ANY WARRANTY; without even the implied warranty of
17: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18: GNU General Public License for more details.
19:
20: You should have received a copy of the GNU General Public License
21: along with LON-CAPA; if not, write to the Free Software
22: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23:
24: /home/httpd/html/adm/gpl.txt
25:
26: http://www.lon-capa.org/
27:
28: -->
29:
30: <piml>
31: <targetroot>/</targetroot>
32: <files>
33: <file>
1.4 harris41 34: <target dist='default'>/</target>
1.1 harris41 35: <perlscript mode='fg'>
1.4 harris41 36: $|=1;
1.1 harris41 37: print(<<END);
38:
39:
40: *********************************************
41: *********************************************
42: **** ****
43: **** LON-CAPA SYSTEM INFORMATION REQUEST ****
44: **** ****
45: **** Please respond to the choices below ****
46: **** ****
47: *********************************************
48: *********************************************
49:
50: END
1.4 harris41 51: sleep(3);
1.1 harris41 52: </perlscript>
53: </file>
54: <file>
1.4 harris41 55: <target dist='default'>/home/httpd/lonUsers2/</target>
1.1 harris41 56: <perlscript mode='fg'>
1.4 harris41 57: $|=1;
1.1 harris41 58: unless (-e "<TARGET />") {
59: print(<<END);
60: WELCOME TO LON-CAPA!
61:
62: If you have questions, please visit http://install.lon-capa.org
1.5 harris41 63: or contact sharrison\@mail.lon-capa.org.
1.1 harris41 64:
65: ===============================================================================
1.4 harris41 66: The following 4 values are needed to configure LON-CAPA:
67: * Machine Role
1.1 harris41 68: * Machine ID Name
69: * LON-CAPA Domain Name, and
70: * System Administration E-mail Address.
71: END
1.3 harris41 72:
1.4 harris41 73: open(OUT,'>/tmp/loncapa_updatequery.out');
74: close(OUT);
75:
1.3 harris41 76: # query for Machine Role
77: print(<<END);
78: **** Machine Role ****
79: Library server (recommended if first-time installation of LON-CAPA):
80: Servers that are repositories of authoritative educational resources.
81: These servers also provide the construction space by which instructors
82: assemble their classroom online material.
83: Access server:
84: Servers that load-balance high-traffic delivery of educational resources
85: over the world-wide web.
1.4 harris41 86: 1) Will this be a library server? (recommended if this is your first install)
1.3 harris41 87: 2) Or, will this be an access server?
88: END
1.4 harris41 89: my $flag=0;
90: my $r='';
91: my $lonRole;
92: while (!$flag) {
93: print "ENTER A CHOICE OF 1 or 2:\n";
94: my $choice=<>;
95: chomp($choice);
96: if ($choice==1) {
97: open(OUT,'>>/tmp/loncapa_updatequery.out');
98: print(OUT 'lonRole'."\t".'library'."\n");
99: close(OUT);
100: $lonRole='library';
101: $r='l';
102: $flag=1;
103: }
104: elsif ($choice==2) {
105: open(OUT,'>>/tmp/loncapa_updatequery.out');
106: print(OUT 'lonRole'."\t".'access'."\n");
107: close(OUT);
108: $lonRole='access';
109: $r='a';
110: $flag=2;
111: }
112: else {
113:
114: }
115: }
1.3 harris41 116:
117: # need to recommend a machine ID name (ipdomain.l.somenumber)
1.4 harris41 118: my $hostname=`hostname`; chomp($hostname);
119: my $ipdomain='';
120: if ($hostname=~/([^\.]*)\.([^\.]*)$/) {
121: $ipdomain=$1;
122: }
123: my $lonHostID;
124: if ($ipdomain) {
125: $lonHostID=$ipdomain.$r.int(1+rand(9)); # should be probably detect against
126: # the hosts.tab
127: }
1.1 harris41 128:
129: print(<<END);
130:
131: **** Machine ID Name ****
132: [this does NOT need to correspond to internet address names;
133: this name MUST be unique to the whole LON-CAPA network;
134: we recommend that you use a name based off of your institution;
135: good examples: "msul1" or "bionetl1";
136: bad examples: "loncapabox" or "studentsinside"]
137: END
138: # get machine name
139: # accept if valid, if not valid, tell user and repeat
1.4 harris41 140: $flag=0;
141: while (!$flag) {
142: if ($ipdomain) {
143: print(<<END);
144: ENTER LONCAPA MACHINE ID [$lonHostID]:
145: END
146: }
147: else {
148: print(<<END);
149: ENTER LONCAPA MACHINE ID:
150: END
151: }
152: my $choice=<>;
153: chomp($choice);
1.5 harris41 154: if ($lonHostID and $choice=~/^\s*$/) {
155: $choice=$lonHostID;
1.4 harris41 156: open(OUT,'>>/tmp/loncapa_updatequery.out');
157: print(OUT 'lonHostID'."\t".$choice."\n");
158: close(OUT);
159: $flag=1;
160: }
161: elsif ($choice!~/\_/ and $choice=~/^\w+$/) {
162: open(OUT,'>>/tmp/loncapa_updatequery.out');
163: print(OUT 'lonHostID'."\t".$choice."\n");
164: close(OUT);
165: $flag=1;
166: }
167: else {
168: print "Invalid input (only alphanumeric characters supported).\n";
169: }
170: }
1.1 harris41 171:
172: print(<<END);
173:
174: **** Domain ****
175: [this does NOT need to correspond to internet address domains,
176: examples might be "msu" or "bionet" or "vermontcc"]
177: END
178:
179: # get domain name
180: # accept if valid, if not valid, tell user and repeat
1.4 harris41 181: $flag=0;
1.5 harris41 182: my $lonDefDomain;
1.4 harris41 183: while (!$flag) {
184: if ($ipdomain) {
185: print(<<END);
186: ENTER LONCAPA DOMAIN [$ipdomain]:
187: END
188: }
189: else {
190: print(<<END);
191: ENTER LONCAPA DOMAIN:
192: END
193: }
194: my $choice=<>;
195: chomp($choice);
196: if ($ipdomain and $choice=~/^\s*$/) {
197: $choice=$ipdomain;
198: open(OUT,'>>/tmp/loncapa_updatequery.out');
199: print(OUT 'lonDefDomain'."\t".$choice."\n");
200: close(OUT);
1.5 harris41 201: $lonDefDomain=$choice;
1.4 harris41 202: $flag=1;
203: }
204: elsif ($choice!~/\_/ and $choice=~/^\w+$/) {
205: open(OUT,'>>/tmp/loncapa_updatequery.out');
206: print(OUT 'lonDefDomain'."\t".$choice."\n");
207: close(OUT);
1.5 harris41 208: $lonDefDomain=$choice;
1.4 harris41 209: $r='l';
210: $flag=1;
211: }
212: else {
213: print "Invalid input (only alphanumeric characters supported).\n";
214: }
215: }
1.1 harris41 216:
1.4 harris41 217: # get e-mail address
218: # accept if valid, if not valid, tell user and repeat
219: $flag=0;
220: my $lonAdmEmail;
221: while (!$flag) {
1.1 harris41 222: print(<<END);
223:
224: **** System Administrator's E-mail ****
225: E-mail address of the person who will manage this machine
1.4 harris41 226: [should be in the form somebody\@somewhere]
1.1 harris41 227: ENTER E-MAIL ADDRESS:
228: END
229:
1.4 harris41 230: my $choice=<>;
231: chomp($choice);
232: if ($choice=~/\@/) {
233: open(OUT,'>>/tmp/loncapa_updatequery.out');
234: print(OUT 'lonAdmEmail'."\t".$choice."\n");
235: close(OUT);
1.5 harris41 236: $lonAdmEmail=$choice;
1.4 harris41 237: $flag=1;
238: }
239: else {
240: print "Invalid input (this needs to look like an e-mail address!).\n";
241: }
242: }
243:
1.1 harris41 244: # update loncapa.conf
1.5 harris41 245: #my $confdir='/etc/httpd/conf/';
246: my $confdir='';
247: my $filename='loncapa.conf';
248: my %perlvar;
249: if (-e "$confdir$filename") {
250: open(CONFIG,'<'.$confdir.$filename) or die("Can't read $confdir$filename");
251: while (my $configline=<CONFIG>) {
252: if ($configline =~ /^[^\#]*PerlSetVar/) {
253: my ($unused,$varname,$varvalue)=split(/\s+/,$configline);
254: chomp($varvalue);
255: $perlvar{$varname}=$varvalue;
256: }
257: }
258: close(CONFIG);
259: }
260: $perlvar{'lonHostID'}=$lonHostID;
261: $perlvar{'lonDefDomain'}=$lonDefDomain;
262: $perlvar{'lonAdmEmail'}=$lonAdmEmail;
263: $perlvar{'lonRole'}=$lonRole;
264: unless ($perlvar{'lonSqlAccess'}) {
265: $perlvar{'lonSqlAccess'}='localhostkey';
266: }
267: unless ($perlvar{'lonLoadLim'}) {
268: $perlvar{'lonLoadLim'}='2.00';
269: }
270: unless ($perlvar{'lonExpire'}) {
271: $perlvar{'lonExpire'}='86400';
272: }
273: unless ($perlvar{'lonReceipt'}) {
274: my $lonReceipt='';
275: srand($$.time);
276: my @alnum=(0..9,a..z);
277: foreach my $i (1..20) {
278: $lonReceipt.=$alnum[int(rand(36))];
279: }
280: $perlvar{'lonReceipt'}=$lonReceipt;
281: }
282: open(OUT,">$confdir$filename") or
283: die("Cannot output to $confdir$filename\n");
284: foreach my $key (keys %perlvar) {
285: my $value=$perlvar{$key};
286: print(OUT <<END);
287: PerlSetVar $key $value
288: END
289: }
290: close(OUT);
1.1 harris41 291: }
292: </perlscript>
293: </file>
294: <file>
1.5 harris41 295: <target dist='default'>/</target>
1.1 harris41 296: <perlscript mode='fg'>
297: # read values from loncapa.conf
1.5 harris41 298: #my $confdir='/etc/httpd/conf/';
299: my $confdir='';
300: my $filename='loncapa.conf';
301: my %perlvar;
302: if (-e "$confdir$filename") {
303: open(CONFIG,'<'.$confdir.$filename) or
304: die("Can't read $confdir$filename");
305: while (my $configline=<CONFIG>) {
306: if ($configline =~ /^[^\#]*PerlSetVar/) {
307: my ($unused,$varname,$varvalue)=split(/\s+/,$configline);
308: chomp($varvalue);
309: $perlvar{$varname}=$varvalue;
310: }
311: }
312: close(CONFIG);
313: }
1.6 ! harris41 314: # implement editing logic below, interactively
! 315: # update loncapa.conf until 7 is entered
! 316:
! 317: $flag=0;
! 318: while (!$flag) {
1.1 harris41 319: print(<<END);
320:
321: ===============================================================================
322: This is now the current configuration of your machine.
1.5 harris41 323: 1) Machine Name: $perlvar{'lonHostID'}
324: 2) Domain Name: $perlvar{'lonDefDomain'}
325: 3) System Administrator's E-mail Address: $perlvar{'lonAdmEmail'}
326: 4) Role: $perlvar{'lonRole'}
327: 5) Cache Expiration Time: $perlvar{'lonExpire'}
328: 6) Server Load: $perlvar{'lonLoadLim'}
1.1 harris41 329: 7) Everything is correct up above
1.6 ! harris41 330: END
! 331: print(<<END);
1.1 harris41 332: ENTER A CHOICE OF 1-6 TO CHANGE, otherwise ENTER 7:
333: END
1.5 harris41 334: my $choice=<>;
335: chomp($choice);
1.6 ! harris41 336: if ($choice==1) {
! 337: print(<<END);
! 338: 1) Machine Name: $perlvar{'lonHostID'}
! 339: ENTER NEW VALUE:
! 340: END
! 341: my $choice2=<>;
! 342: chomp($choice2);
! 343: $perlvar{'lonHostID'}=$choice2;
! 344: }
! 345: elsif ($choice==2) {
! 346: print(<<END);
! 347: 2) Domain Name: $perlvar{'lonDefDomain'}
! 348: ENTER NEW VALUE:
! 349: END
! 350: my $choice2=<>;
! 351: chomp($choice2);
! 352: $perlvar{'lonDefDomain'}=$choice2;
! 353: }
! 354: elsif ($choice==3) {
! 355: print(<<END);
! 356: 3) System Administrator's E-mail Address: $perlvar{'lonAdmEmail'}
! 357: ENTER NEW VALUE:
! 358: END
! 359: my $choice2=<>;
! 360: chomp($choice2);
! 361: $perlvar{'lonAdmEmail'}=$choice2;
! 362: }
! 363: elsif ($choice==4) {
! 364: print(<<END);
! 365: 4) Role: $perlvar{'lonRole'}
! 366: ENTER NEW VALUE:
! 367: END
! 368: my $choice2=<>;
! 369: chomp($choice2);
! 370: $perlvar{'lonRole'}=$choice2;
! 371: }
! 372: elsif ($choice==5) {
! 373: print(<<END);
! 374: 5) Cache Expiration Time: $perlvar{'lonExpire'}
! 375: ENTER NEW VALUE:
! 376: END
! 377: my $choice2=<>;
! 378: chomp($choice2);
! 379: $perlvar{'lonExpire'}=$choice2;
! 380: }
! 381: elsif ($choice==6) {
! 382: print(<<END);
! 383: 6) Server Load: $perlvar{'lonLoadLim'}
! 384: ENTER NEW VALUE:
! 385: END
! 386: my $choice2=<>;
! 387: chomp($choice2);
! 388: $perlvar{'lonLoadLim'}=$choice2;
! 389: }
! 390: elsif ($choice==7) {
! 391: $flag=1;
! 392: }
! 393: else {
1.1 harris41 394:
1.6 ! harris41 395: }
! 396: }
1.1 harris41 397: </perlscript>
398: </file>
399: <file>
400: <target dist='default'>loncom/hosts.tab</target>
401: <perlscript mode='fg'>
402: unless (-l "<TARGET />") {
403: print(<<END);
404:
405: ===============================================================================
406: What hosts.tab would you like to have installed?
407: (hosts.tab is a listing of all other internet machines
408: that a server system considers to be valid server systems
409: on the LON-CAPA network)
410:
411: 1) PRODUCTION - you want to deliver courses today or sometime very soon
412: on this machine
1.5 harris41 413: 2) STAND-ALONE - you want this machine to run in 'stand-alone' mode and
414: not be connected to other LON-CAPA machines for now
415: 3) DEVELOPMENT - you want to play with or explore LON-CAPA
1.6 ! harris41 416: 4) PRESERVE the existing hosts.tab (/home/httpd/lonTabs/hosts.tab)
1.1 harris41 417:
418: END
419: # Option number 26 will install rawhide_hosts.tab, but
420: # the typical user does not want to be part of an intensive
421: # machine test cluster.
422:
423: # get input
424: # if valid then process, otherwise loop
1.6 ! harris41 425: my $hostname=`hostname`;chomp($hostname);
! 426: my $hostaddress=`hostname -i $hostname`;chomp($hostaddress);
! 427: $flag=0;
! 428: while (!$flag) {
! 429: print "ENTER 1, 2, 3, or 4:\n";
! 430: my $choice=<>;
! 431: chomp($choice);
! 432: if ($choice==1) {
! 433: $lonCluster='production';
! 434: `rm -f ../hosts.tab`;
! 435: `ln -s production_hosts.tab ../hosts.tab`;
! 436: $flag=1;
! 437: }
! 438: elsif ($choice==2) {
! 439: $lonCluster='standalone';
! 440: open(OUT,'>../standalone_hosts.tab') or
! 441: die("cannot open loncom/standalone_hosts.tab for output\n");
! 442: print(OUT <<END);
! 443: $perlvar{'lonHostID'}:$perlvar{'lonDefDomain'}:$perlvar{'lonRole'}:$hostname:$hostaddress
! 444: END
! 445: close(OUT);
! 446: `rm -f ../hosts.tab`;
! 447: `ln -s standalone_hosts.tab ../hosts.tab`;
! 448: $flag=1;
! 449: }
! 450: elsif ($choice==3) {
! 451: $lonCluster='development';
! 452: `rm -f loncom/hosts.tab`;
! 453: `ln -s development_hosts.tab ../hosts.tab`;
! 454: $flag=1;
! 455: }
! 456: elsif ($choice==4) {
! 457: $lonCluster='existing';
! 458: `rm -f ../hosts.tab`;
! 459: `touch existing_hosts.tab`;
! 460: if (-e '/home/httpd/lonTabs/hosts.tab') {
! 461: `cp /home/httpd/lonTabs/hosts.tab ../existing_hosts.tab`;
! 462: }
! 463: `ln -s existing_hosts.tab ../hosts.tab`;
! 464: $flag=1;
! 465: }
! 466: elsif ($choice==26) {
! 467: $lonCluster='rawhide';
! 468: `rm -f ../hosts.tab`;
! 469: `ln -s rawhide_hosts.tab ../hosts.tab`;
! 470: $flag=1;
! 471: }
! 472: else {
! 473:
! 474: }
! 475: }
1.1 harris41 476:
477: }
478: </perlscript>
479: </file>
480: </files>
481: </piml>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>