1: <!-- updatequery.piml -->
2: <!-- Scott Harrison -->
3:
4: <!-- $Id: updatequery.piml,v 1.5 2002/05/13 01:09:26 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: print(<<END);
315:
316: ===============================================================================
317: This is now the current configuration of your machine.
318: 1) Machine Name: $perlvar{'lonHostID'}
319: 2) Domain Name: $perlvar{'lonDefDomain'}
320: 3) System Administrator's E-mail Address: $perlvar{'lonAdmEmail'}
321: 4) Role: $perlvar{'lonRole'}
322: 5) Cache Expiration Time: $perlvar{'lonExpire'}
323: 6) Server Load: $perlvar{'lonLoadLim'}
324: 7) Everything is correct up above
325: ENTER A CHOICE OF 1-6 TO CHANGE, otherwise ENTER 7:
326: END
327:
328: # implement editing logic below, interactively
329: # update loncapa.conf until 7 is entered
330: my $choice=<>;
331: chomp($choice);
332:
333: </perlscript>
334: </file>
335: <file>
336: <target dist='default'>loncom/hosts.tab</target>
337: <perlscript mode='fg'>
338: unless (-l "<TARGET />") {
339: print(<<END);
340:
341: ===============================================================================
342: What hosts.tab would you like to have installed?
343: (hosts.tab is a listing of all other internet machines
344: that a server system considers to be valid server systems
345: on the LON-CAPA network)
346:
347: 1) PRODUCTION - you want to deliver courses today or sometime very soon
348: on this machine
349: 2) STAND-ALONE - you want this machine to run in 'stand-alone' mode and
350: not be connected to other LON-CAPA machines for now
351: 3) DEVELOPMENT - you want to play with or explore LON-CAPA
352: 4) Do not install hosts.tab right now
353:
354: ENTER 1, 2, 3, or 4:
355: END
356: # Option number 26 will install rawhide_hosts.tab, but
357: # the typical user does not want to be part of an intensive
358: # machine test cluster.
359:
360: # get input
361: # if valid then process, otherwise loop
362: my $choice=<>;
363: chomp($choice);
364:
365: }
366: </perlscript>
367: </file>
368: </files>
369: </piml>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>