source: trunk/locker/bin/scripts-remove @ 1698

Last change on this file since 1698 was 1698, checked in by ezyang, 14 years ago
Restore r1692.
File size: 5.2 KB
Line 
1#!/bin/bash
2
3if [ "$scriptsdev" != "" -a "$scriptsdev" != "dev" ]; then
4    echo "ERROR:"
5    echo "The \$scriptsdev variable is set to an invalid value."
6    echo "(The variable should not be set.)"
7    echo "Please contact scripts@mit.edu."
8fi
9
10sshrun() {
11    athrun scripts scripts-ssh "$lname" "/mit/scripts/$@" 2>/dev/null
12}
13
14checksqlpass() {
15    errors=`sshrun "sql/bin$scriptsdev/test-password"`
16    if [ "$errors" != "" ]; then
17        if [ "$1" -eq 1 ]; then
18          rm -f "$lroot/.sql/my.cnf"
19        fi
20        echo
21        echo "ERROR:"
22        printf "$2"
23        exit 1
24    fi
25}
26attach scripts sql 2>/dev/null
27
28echo "Welcome to the scripts.mit.edu uninstaller. This program will"
29echo "help you cleanly remove software that you have auto-installed."
30echo
31echo "Are you removing an installation from:"
32echo "1. Your personal Athena account"
33echo "2. A locker that you control (a club, a course, etc.)"
34echo "If you do not understand this question, you should answer 1."
35printf "Please enter either 1 or 2: "
36read whofor
37if [ "$whofor" = 1 ]; then
38    lname=$USER
39    lroot=$HOME
40elif [ "$whofor" = 2 ]; then
41    echo
42    echo "Please enter the name of the selected locker below."
43    echo "(For the locker /mit/sipb, you would enter sipb.)"
44    read lname
45    lroot="/mit/$lname"
46else
47    echo
48    echo "ERROR:"
49    echo "You must select either 1 or 2."
50    exit 1
51fi
52attach "$lname" 2>/dev/null
53
54echo
55echo "When you installed the software, you chose a URL"
56echo "that starts with http://$lname.scripts.mit.edu/"
57echo "(for software installed after March 2009) or"
58echo "http://scripts.mit.edu/~$lname/ (for software"
59echo "installed before then)."
60echo "Please enter the new-style full URL where this"
61echo "software was installed.  (This should correspond"
62echo "to a directory in /mit/$lname/web_scripts/.)"
63printf "%s" "URL: http://$lname.scripts.mit.edu/"
64read addrend
65
66addrend=`perl -0e 'print $ARGV[0] =~ /^([\w\/-]*[\w-])\/*$/' -- "$addrend"`
67if [ "$addrend" = "" ]; then
68    echo
69    echo "ERROR:"
70    echo "You must enter one or more characters after mit.edu/"
71    echo "The completed address must only contain a-z, 0-9, and /."
72    exit 1
73fi
74
75if [ ! -d "$lroot/web_scripts/$addrend" ]; then
76    echo
77    echo "ERROR:"
78    echo "The directory $lroot/web_scripts/$addrend"
79    echo "does not exist. Please make sure that this is the"
80    echo "correct installation directory, and try again, or"
81    echo "contact scripts@mit.edu for assistance."
82    exit 1
83fi
84
85echo
86
87sqlinfo=`sshrun "sql/bin$scriptsdev/get-password"`
88if [ "$sqlinfo" = "" ]; then
89    echo
90    echo "You have a MySQL account but you do not have a .my.cnf file."
91    echo "If you do not remember your MySQL account password, you can change it"
92    echo "at http://sql.mit.edu using MIT certificates."
93    printf "Please type your MySQL password and press [enter]: "
94    stty -echo
95    read sqlpass
96    stty echo
97    echo
98    sqlhost="sql.mit.edu"
99    sqluser=$lname
100    . "/mit/scripts/sql/bin$scriptsdev/save-password"
101    checksqlpass 1 'The MySQL password that you typed appears to be incorrect.\n'
102    echo
103    echo "OK.  Continuing with the uninstaller..."
104else
105    checksqlpass 0 'The MySQL login information in your .my.cnf file\nappears to be incorrect.\n'
106fi
107
108sqldb=`sshrun "sql/bin$scriptsdev/get-next-database" "$addrend"`
109if [ "$sqldb" != "${addrend}1" -a "$sqldb" != "$addrend" ]; then
110    echo
111    echo "ERROR:"
112    echo "The auto-uninstaller was unable to find the appropriate"
113    echo "database to drop. Please examine the installation to"
114    echo "find the database it uses, drop the database from"
115    echo "http://sql.mit.edu/, and manually remove the $addrend"
116    echo "directory (or re-run the auto-installer). Contact"
117    echo "scripts@mit.edu if you need assistance."
118    exit 1
119fi
120
121echo "Removing files. Please wait..."
122echo "(This may take several seconds for large software.)"
123if rm -rf "$lroot/web_scripts/$addrend"; then
124    echo "The directory $lroot/web_scripts/$addrend"
125    echo "was successfully removed."
126    if [ -d "$lroot/OldFiles/web_scripts/$addrend" ]; then
127        echo "A one-day-old backup of the installation is"
128        echo "available from $lroot/OldFiles/web_scripts/$addrend".
129    fi
130else
131    echo "ERROR:"
132    echo "The directory $lroot/web_scripts/$addrend"
133    echo "could not be removed. Please ensure that you have"
134    echo "access to this directory and try again, or"
135    echo "contact scripts@mit.edu for assistance."
136    exit 1
137fi
138
139echo
140if [ "$sqldb" = "${addrend}1" ]; then
141    sqldb="$lname+$addrend"
142    dropped=`sshrun "sql/bin$scriptsdev/drop-database" "$sqldb"`
143    if [ "$dropped" ]; then
144        echo "The database $sqldb"
145        echo "was successfully removed."
146        attach sql 2>/dev/null
147        if [ -f "/mit/sql/backup/$lname/$sqldb.sql.gz" ]; then
148            echo "A one-day-old backup of your SQL database is"
149            echo "available in /mit/sql/backup/$lname".
150        fi
151    else
152        echo "ERROR:"
153        echo "The database $lname+$addrend"
154        echo "could not be automatically removed. You can"
155        echo "try removing it from http://sql.mit.edu/,"
156        echo "or you can contact sql@mit.edu for assistance."
157        exit 1
158    fi
159fi
160echo
161echo "The installation in http://$lname.scripts.mit.edu/$addrend"
162echo "has been successfully uninstalled."
Note: See TracBrowser for help on using the repository browser.