1: <!-- updatequery.piml -->
2: <!-- Scott Harrison -->
3:
4: <!-- $Id: updatequery.piml,v 1.6 2002/05/13 02:24:44 harris41 Exp $ -->
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>
34: <target dist='default'>/</target>
35: <perlscript mode='fg'>
36: $|=1;
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
51: sleep(3);
52: </perlscript>
53: </file>
54: <file>
55: <target dist='default'>/home/httpd/lonUsers2/</target>
56: <perlscript mode='fg'>
57: $|=1;
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
63: or contact sharrison\@mail.lon-capa.org.
64:
65: ===============================================================================
66: The following 4 values are needed to configure LON-CAPA:
67: * Machine Role
68: * Machine ID Name
69: * LON-CAPA Domain Name, and
70: * System Administration E-mail Address.
71: END
72:
73: open(OUT,'>/tmp/loncapa_updatequery.out');
74: close(OUT);
75:
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.
86: 1) Will this be a library server? (recommended if this is your first install)
87: 2) Or, will this be an access server?
88: END
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: }
116:
117: # need to recommend a machine ID name (ipdomain.l.somenumber)
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: }
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
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);
154: if ($lonHostID and $choice=~/^\s*$/) {
155: $choice=$lonHostID;
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: }
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
181: $flag=0;
182: my $lonDefDomain;
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);
201: $lonDefDomain=$choice;
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);
208: $lonDefDomain=$choice;
209: $r='l';
210: $flag=1;
211: }
212: else {
213: print "Invalid input (only alphanumeric characters supported).\n";
214: }
215: }
216:
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) {
222: print(<<END);
223:
224: **** System Administrator's E-mail ****
225: E-mail address of the person who will manage this machine
226: [should be in the form somebody\@somewhere]
227: ENTER E-MAIL ADDRESS:
228: END
229:
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);
236: $lonAdmEmail=$choice;
237: $flag=1;
238: }
239: else {
240: print "Invalid input (this needs to look like an e-mail address!).\n";
241: }
242: }
243:
244: # update loncapa.conf
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);
291: }
292: </perlscript>
293: </file>
294: <file>
295: <target dist='default'>/</target>
296: <perlscript mode='fg'>
297: # read values from loncapa.conf
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: }
314: # implement editing logic below, interactively
315: # update loncapa.conf until 7 is entered
316:
317: $flag=0;
318: while (!$flag) {
319: print(<<END);
320:
321: ===============================================================================
322: This is now the current configuration of your machine.
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'}
329: 7) Everything is correct up above
330: END
331: print(<<END);
332: ENTER A CHOICE OF 1-6 TO CHANGE, otherwise ENTER 7:
333: END
334: my $choice=<>;
335: chomp($choice);
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 {
394:
395: }
396: }
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
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
416: 4) PRESERVE the existing hosts.tab (/home/httpd/lonTabs/hosts.tab)
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
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: }
476:
477: }
478: </perlscript>
479: </file>
480: </files>
481: </piml>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>