source: branches/locker-dev/locker/deploy/bin/onathena @ 1344

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