source: branches/locker-dev/locker/bin/signup-minimal @ 1429

Last change on this file since 1429 was 1429, checked in by mitchb, 14 years ago
Fascist lockers can't sign up just by giving daemon.scripts l Stop telling them that that will work; it just gets them to an even more cryptic error message.
  • Property svn:executable set to *
File size: 3.6 KB
Line 
1#!/bin/bash
2
3if [ "$initlname" = "" ]; then
4  if [ "$lname" = "" ]; then
5    initlname=0
6  else
7    initlname=1
8  fi
9fi
10
11if type wget >/dev/null 2>/dev/null; then
12  WGET=wget
13else
14  WGET="athrun gnu wget"
15fi
16
17if [ "$lname" = "" ]; then
18  if [ "$1" = "" ]; then
19    echo
20    echo "Would you like to sign up:"
21    echo "1. Your personal Athena account"
22    echo "2. A locker that you control (a club, a course, etc)"
23    echo "If you do not understand this question, you should answer '1'."
24    printf "Please enter either '1' or '2' (without quotes): "
25    read whofor
26    if [ "$whofor" = 1 ]; then
27        lname="${ATHENA_USER:-$USER}"
28    elif [ "$whofor" = 2 ]; then
29        echo
30        echo "OK.  A locker of your choice that you control will be signed up."
31        echo "Please enter the name of the selected locker below."
32        echo "(For the locker /mit/sipb, you would enter sipb)."
33        printf "Locker name: "
34        read lname
35    else
36        echo
37        echo "ERROR:"
38        echo "You must select either '1' or '2'."
39        exit 1
40    fi
41    while true; do
42        if attach "$lname"; then
43            break
44        fi
45        echo "$lname is not a valid locker name."
46        printf "Locker name: "
47        read lname
48    done
49  else
50    lname="$1"
51  fi
52fi
53lroot="/mit/$lname" 
54
55attach "$lname" 2>/dev/null
56
57ans=`$WGET -q -O- "http://scripts.mit.edu/~signup/fsla.php/mit/$lname"`
58if [ "$ans" != "0" ]; then
59  echo
60  echo "ERROR:"
61  echo "The scripts servers cannot verify the permissions of the locker <$lname>."
62  echo "This is probably because your locker is not publicly listable."
63  echo "You can remedy this signup problem and make your locker publicly"
64  echo "listable by running \"fs sa /mit/$lname system:anyuser l\" (with a"
65  echo "lowercase L at the end).  Note that this will make it possible for"
66  echo "anyone to see the names of your files and the list of people who"
67  echo "have access to them, though it will not cause the contents of your"
68  echo "files to be publicly readable.  If you are unwilling to have your"
69  echo "locker listable by the public, please contact scripts@mit.edu"
70  echo "for information about other ways to work around the problem."
71  exit 1
72fi
73
74principal=`klist -5 | sed -n 's/^Default principal: // p'`
75ans=`$WGET -q -O- "http://scripts.mit.edu/~signup/admof.php/$lname/$principal"`
76if [ "$ans" != "yes" ]; then
77  afsuser=`echo "$principal" | sed 's/@ATHENA.MIT.EDU$//'`
78  echo
79  echo "ERROR:"
80  echo "It appears as though you are not an administrator of the locker <$lname>."
81  echo "Try running \"fs sa /mit/$lname $afsuser all\" and starting over."
82  echo "Contact scripts@mit.edu if you are unable to solve the problem."
83  exit 1
84fi
85
86mkdir -p "/mit/$lname/.scripts-signup"
87
88if [ ! -d "/mit/$lname/.scripts-signup" ]; then
89  echo
90  echo "ERROR:"
91  echo "It appears as though you do not have write access to the locker <$lname>."
92  echo "Contact scripts@mit.edu if you are unable to solve the problem."
93  exit 1
94fi
95
96ans=`$WGET -q -O- "http://scripts.mit.edu/~signup/$lname"`
97rmdir "/mit/$lname/.scripts-signup"
98
99if [ "$ans" = "done" ]; then
100  # nscd caches account nonexistence with a 5-second TTL.
101  # (LDAP updates are more or less instant.)
102  # Somehow, the server can wait up to 10 seconds...
103  echo "Creating scripts.mit.edu account for $lname..."
104  sleep 10
105fi
106
107if [ "$ans" != "done" ] && [ "$ans" != "username already taken" ]; then
108  echo "ERROR:"
109  echo "Signup reported the following error: \"$ans\"."
110  echo "Contact scripts@mit.edu for assistance."
111  exit 1
112fi
113
114success() {
115  if [ "$initlname" -eq 0 ]; then
116    echo
117    echo "== SUCCESS =="
118    echo "$lname is now signed up for $1."
119    echo "$2"
120    echo
121  fi
122}
Note: See TracBrowser for help on using the repository browser.