source: locker/deploy/bin/onathena @ 159

Last change on this file since 159 was 159, checked in by jbarnold, 17 years ago
more authuser corrections; fixed dot-in-session-name bug
  • Property svn:executable set to *
File size: 7.1 KB
Line 
1#!/bin/sh
2
3checkfailed() {
4  if [ -f "$lroot/web_scripts/$addrend/.failed" ]; then
5    rm -f $lroot/web_scripts/$addrend/.failed
6    exit 1
7  fi
8}
9
10sshrun() {
11  athrun scripts sshmic ${lname}@scripts.mit.edu /mit/scripts/$1 2>/dev/null
12}
13
14vsshrun() {
15  athrun scripts sshmic ${lname}@scripts.mit.edu /mit/scripts/$1
16}
17
18checksqlpass() {
19    errors=`sshrun 'sql/bin$scriptsdev/test-password'`
20    if [ "$errors" != "" ]; then
21        if [ "$1" -eq 1 ]; then
22          rm -f $lroot/.sql/my.cnf
23        fi
24        echo
25        echo ERROR:
26        printf "$2"
27        printf "$3"
28        exit
29    fi
30}
31
32#echo "The scripts.mit.edu automatic installers are currently unavailable."
33#echo "We hope to make them available again soon."
34#echo "If you would like us to notify you as soon as they are available again,"
35#echo "let us know by sending us an e-mail at scripts@mit.edu"
36#exit
37
38echo
39echo == Welcome to the scripts.mit.edu installer for $sname ==
40echo
41
42echo "For documentation, including a link to the Athena rules of use,"
43echo "see <http://scripts.mit.edu/start>."
44echo
45echo Please report problems with this installer to scripts@mit.edu.
46echo
47echo Are you performing this install for:
48echo 1. Your personal Athena account
49echo 2. A locker that you control \(a club, a course, etc\)
50echo If you do not understand this question, you should answer \'1\'.
51printf "Please enter either '1' or '2' (without quotes): "
52read whofor
53if [ "$whofor" -eq 1 ]; then
54    lname=$USER
55    lroot=$HOME 
56elif [ "$whofor" -eq 2 ]; then
57    echo
58    echo OK.  $sname will be installed into a locker of your choice that
59    echo you control.  Please enter the name of the selected locker below.
60    echo "(For the locker /mit/lsc -- which has a full path of"
61    echo "/afs/athena.mit.edu/activity/l/lsc -- you would simply enter lsc)."
62    printf "Locker name: "
63    read lname
64    lroot="/mit/$lname" 
65else
66    echo
67    echo ERROR:
68    echo You must select either '1' or '2'.
69    exit 1
70fi
71
72echo
73echo Checking the status of your scripts.mit.edu account...
74
75attach scripts 2>/dev/null
76. /mit/scripts/bin$scriptsdev/signup-web
77
78echo
79echo Your new copy of $sname will appear on the web at a URL
80echo that starts with http://scripts.mit.edu/~$lname/
81echo Please decide upon a complete URL and enter it below.
82echo You must enter one or more characters after ~$lname/
83echo The completed address must only contain a-z, 0-9, and /.
84printf "Desired address: http://scripts.mit.edu/~$lname/"
85read addrend
86
87addrend=`perl -e "\\\$temp = \"$addrend\"; \\\$temp =~ /(^([a-z0-9A-Z\\\\/-]+)\$)/; print \\\$1"`
88if [ "$addrend" = "" ]; then
89        echo
90        echo ERROR:
91        echo You must enter one or more characters after ~$lname/
92        echo The completed address must only contain a-z, 0-9, and /.
93        exit 1
94fi
95
96if [ -d "$lroot/web_scripts/$addrend" ]; then
97    echo
98    echo ERROR:
99    echo You already have a directory corresponding to that web address.
100    echo Please remove that directory, choose a different address, or
101    echo contact scripts@mit.edu for assistance.
102    exit 1
103fi
104
105if [ "$requires_sql" = "" ]; then
106  requires_sql=1
107fi
108
109if [ ! -f "$lroot/.my.cnf" ]; then
110  mkdir $lroot/.sql 2>/dev/null
111  fs sa $lroot/.sql system:anyuser none
112  fs sa $lroot/.sql system:authuser none
113  fs sa $lroot/.sql daemon.scripts write
114  ln -nfs $lroot/.sql/my.cnf $lroot/.my.cnf 2>/dev/null
115fi
116
117if [ "$requires_sql" -eq 1 ]; then
118  sqlinfo=`sshrun "sql/bin$scriptsdev/get-password"`
119  if [ "$sqlinfo" = "" ]; then
120      echo
121      echo You already have a MySQL account but you do not have a .my.cnf file.
122      echo If you do not remember your MySQL account password, you can change it
123      echo at http://sql.mit.edu using MIT certificates.
124      printf "Please type your MySQL password and press [enter]: "
125      stty -echo
126      read sqlpass
127      stty echo
128      echo
129      sqlhost="sql.mit.edu"
130      sqluser=$lname
131      . /mit/scripts/sql/bin$scriptsdev/save-password
132      checksqlpass 1 'The MySQL password that you typed appears to be incorrect.\n' ''
133      echo
134      echo OK.  Continuing with the install...
135  else
136      checksqlpass 0 'The MySQL login information in your .my.cnf file\n' 'appears to be incorrect.\n'
137  fi
138fi
139
140if [ "$prompt_username" = "" ]; then
141  admin_username="admin"
142  prompt_username=0
143fi
144if [ "$prompt_password" = "" ]; then
145  prompt_password=1
146fi
147
148if [ "$prompt_username" -eq 1 ]; then
149    echo
150    echo You will be able to log in to $sname using a username of your choice.
151    echo Please decide upon a username and enter it below.
152    echo "Your username must contain only alphanumeric characters (a-z, 0-9)."
153    printf "Desired username: "
154    read admin_username
155    admin_username=`perl -e "\\\$temp = \"$admin_username\"; \\\$temp =~ /(^([a-z0-9A-Z]+)\\\$)/; print \\\$1;"`
156    if [ "$admin_username" = "" ]; then
157        echo
158        echo ERROR:
159        echo "Your username must contain only alphanumeric characters (a-z, 0-9)."
160        echo You will need to run the installer again and choose a different username.
161        exit 1
162    fi
163fi
164
165if [ "$prompt_password" -eq 1 ]; then
166    stty -echo
167    sshrun "deploy$scriptdev/bin/prompt-password '$sname' '$deploy' '$addrend' '$admin_username'"
168    stty echo
169fi
170
171echo
172echo "Unpacking $sname... (this step might take several minutes)"
173
174if [ "$create_dir" = "" ]; then
175  create_dir=0
176fi
177
178if [ "$create_dir" -eq 1 ]; then
179  mkdir -p "$lroot/scripts-$deploy"
180  fs sa "$lroot/scripts-$deploy" system:anyuser none
181  fs sa "$lroot/scripts-$deploy" system:authuser none
182  fs sa "$lroot/scripts-$deploy" daemon.scripts write
183  fs sa "$lroot/scripts-$deploy" system:scripts-security-upd write
184fi
185
186origdir=`pwd`
187mkdir -p "$lroot/web_scripts_tmp"
188cd "$lroot/web_scripts_tmp"
189fs sa . system:anyuser none
190fs sa . system:authuser none
191fs sa . daemon.scripts write
192fs sa . system:scripts-security-upd write
193mkdir -p "$lroot/web_scripts/$addrend"
194cd "$lroot/web_scripts/$addrend"
195fs sa . system:anyuser none
196fs sa . system:authuser none
197fs sa . daemon.scripts write
198fs sa . system:scripts-security-upd write
199athrun scripts gtar zxf "/mit/scripts/deploy$scriptsdev/$deploy.tar.gz"
200files=`athrun scripts gfind . -mindepth 1 -maxdepth 1`
201numfiles=`echo "$files" | wc -l`
202if [ "$numfiles" -eq 1 ]; then
203    athrun scripts gfind . -mindepth 2 -maxdepth 2 | xargs -i mv \{} .
204    rmdir $files
205fi
206if [ -f "/mit/scripts/deploy$scriptsdev/php.ini/$deploy" ]; then
207        nodot=`echo $lname | sed "/\./s///"`;
208        sed -e /SCRIPTS_USER/s//$lname/ -e /SCRIPTS_NODOT/s//$nodot/ /mit/scripts/deploy$scriptsdev/php.ini/$deploy > php.ini
209        athrun scripts gfind . -mindepth 1 -type d -exec sh -c 'ln -sf "`echo "$1" | sed '\''s,[^/],,g; s,/,../,g'\''`php.ini" "$1/"' -- {} \;
210fi
211cd $origdir
212
213sshrun "deploy$scriptsdev/bin/$deploy '$sname' '$deploy' '$addrend' '$admin_username' '$requires_sql' '$scriptsdev' '$USER'"
214rm -f /$lroot/web_scripts/$addrend/.scripts-tmp
215checkfailed
216
217echo
218echo == Installation complete! ==
219echo You should now be able to access your new copy of $sname at
220echo http://scripts.mit.edu/~$lname/$addrend
221echo "(You can replace the http with https if you want to use encryption)"
222echo If you have trouble accessing it, feel free to contact
223echo the scripts.mit.edu team by e-mailing scripts@mit.edu
224exit 0
Note: See TracBrowser for help on using the repository browser.