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
RevLine 
[641]1#!/bin/bash
[127]2
3if [ "$initlname" = "" ]; then
4  if [ "$lname" = "" ]; then
5    initlname=0
6  else
7    initlname=1
8  fi
9fi
10
[575]11if type wget >/dev/null 2>/dev/null; then
12  WGET=wget
13else
14  WGET="athrun gnu wget"
15fi
16
[127]17if [ "$lname" = "" ]; then
18  if [ "$1" = "" ]; then
19    echo
[458]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'."
[127]24    printf "Please enter either '1' or '2' (without quotes): "
25    read whofor
[458]26    if [ "$whofor" = 1 ]; then
[733]27        lname="${ATHENA_USER:-$USER}"
[458]28    elif [ "$whofor" = 2 ]; then
[127]29        echo
[458]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."
[127]32        echo "(For the locker /mit/sipb, you would enter sipb)."
[733]33        printf "Locker name: "
34        read lname
[127]35    else
36        echo
[458]37        echo "ERROR:"
38        echo "You must select either '1' or '2'."
[127]39        exit 1
40    fi
[733]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
[127]49  else
[733]50    lname="$1"
[127]51  fi
52fi
[733]53lroot="/mit/$lname" 
[127]54
[726]55attach "$lname" 2>/dev/null
56
[629]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>."
[1429]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."
[629]71  exit 1
72fi
73
[576]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
[660]86mkdir -p "/mit/$lname/.scripts-signup"
[127]87
88if [ ! -d "/mit/$lname/.scripts-signup" ]; then
89  echo
[458]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."
[502]93  exit 1
[127]94fi
95
[502]96ans=`$WGET -q -O- "http://scripts.mit.edu/~signup/$lname"`
[458]97rmdir "/mit/$lname/.scripts-signup"
98
[776]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
[502]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
[127]114success() {
115  if [ "$initlname" -eq 0 ]; then
116    echo
117    echo "== SUCCESS =="
[458]118    echo "$lname is now signed up for $1."
119    echo "$2"
[127]120    echo
121  fi
122}
Note: See TracBrowser for help on using the repository browser.