1. 31 Aug, 2011 1 commit
  2. 30 Aug, 2011 1 commit
  3. 27 Dec, 2010 1 commit
  4. 23 Dec, 2010 1 commit
  5. 22 Dec, 2010 2 commits
  6. 28 Apr, 2010 4 commits
  7. 22 Mar, 2010 1 commit
    • Leigh Stoller's avatar
      Finish up user deletion. The big visible change is that when a user is · 2965922b
      Leigh Stoller authored
      deleted, they still remain in the user table with a status of
      "archived", but since all the queries in the system now use uid_idx
      instead of uid, it is safe to reuse a uid since they are no longer
      ambiguous. 
      
      The reason for not deleting users from the users table is so that the
      stats records can refer to the original record (who was that person
      named "mike"). This is very handy and worth the additional effort it
      has taken.
      
      There is no way to ressurect a user, but it would not be hard to add.
      2965922b
  8. 17 Mar, 2010 1 commit
  9. 27 Jan, 2010 1 commit
  10. 19 Feb, 2009 1 commit
    • Leigh Stoller's avatar
      Minor fixes. · 82aa4ea9
      Leigh Stoller authored
      * If a user is web frozen make sure they got logged out next access.
      
      * If a user is web frozen, do not let them change their password, put
        up a message to contact tbops.
      
      * If a user is frozen, say so when the login fails so that they do not
        keep trying!
      82aa4ea9
  11. 23 Oct, 2008 1 commit
  12. 21 Oct, 2008 1 commit
    • Kevin Atkinson's avatar
      If a known user (based on stored cookies) is not logged in than · 846a98d6
      Kevin Atkinson authored
      redirect to the login page rather than printing a message with a link
      to the page.  Otherwise send a "403 Forbidden" to keep robots from
      indexing the page.  Also send appreciate HTTP responses on other
      precheck errors to keep a robot from indexing the page.  In order to
      do this the PAGEHEADER call needed to be moved to after
      CheckLoginOrDie and Required/OptionalPageArguments on many pages.  A
      warning will be printed if either CheckLoginOrDie or
      Required/OptionalPageArguments detects that PAGEHEADER was already
      called.
      
      Also change the redirect in kb-show to be a permanent redirect (301)
      rather than a temporary one (302) which is the default unless a status
      code is given.
      846a98d6
  13. 21 Aug, 2008 1 commit
  14. 18 Aug, 2008 1 commit
  15. 17 Jul, 2008 2 commits
  16. 08 Apr, 2008 1 commit
    • Leigh Stoller's avatar
      A little auth module plugin I wrote to allow cross-domain login from · fc9aae80
      Leigh Stoller authored
      emulab to the protogeni wiki, but I use it for all of the wikis. The
      basic idea is that the emulab backend inserts a hash value into the
      cookie table in the trac DB on ops (via ssh). Then Emulab issues a
      redirect over to the trac wiki, with the uid/hash values as arguments
      to the xlogin URL. This hash is use-once; if it exists in the cookies
      table, it is deleted and a new one generated by the underlying auth
      module, and a cookie returned to the browser. The user is thus logged
      in for all subsequent access.
      
      Why? Cause emulab.net cannot insert auth cookies for protogeni.net, so
      must let the auth module inside trac insert the cookie.
      fc9aae80
  17. 31 Mar, 2008 1 commit
  18. 17 Apr, 2007 1 commit
  19. 07 Mar, 2007 1 commit
  20. 23 Feb, 2007 1 commit
  21. 14 Feb, 2007 1 commit
  22. 12 Feb, 2007 1 commit
    • Leigh Stoller's avatar
      * Replace the argument processing code in all pages. Currently we rely on · 48acc8e3
      Leigh Stoller authored
        register_globals=1 to turn POST/GET/COOKIES arguments in local variables.
        This is known to be a terrible security risk, and we keep saying we are
        going to fix it, and now I am. In order to accomplish this on a
        transitional basis (since I don't want the entire web interface to stop
        working while I debug it), and because the code just needs the cleanup, I
        am doing it like this: Each page will sport new declarations at the top:
      
      	RequiredPageArguments("experiment", PAGEARG_EXPERIMENT,
                                    "template",   PAGEARG_TEMPLATE,
                                    "instance",   PAGEARG_INSTANCE,
                                    "metadata",   PAGEARG_METADATA,
                                    "osinfo",     PAGEARG_OSINFO,
                                    "image",      PAGEARG_IMAGE,
                                    "project",    PAGEARG_PROJECT,
                                    "group",      PAGEARG_GROUP,
                                    "user",       PAGEARG_USER,
      			      "node",       PAGEARG_NODE,
      			      "yesno",      PAGEARG_BOOLEAN,
      			      "message",    PAGEARG_STRING,
      			      "age",        PAGEARG_INTEGER,
                                    "cost",       PAGEARG_NUMERIC,
                                    "formfields", PAGEARG_ARRAY,
                                    "unknown",    PAGEARG_ANYTHING);
      
      	OptionalPageArguments("canceled", PAGEARG_BOOLEAN);
      
        The first token in each pair is the name of the global variable to
        set, and the second token is the type. So, for "experiment" we look at
        the URL for a pid/eid or exptidx, etc, sanity check them (safe for a
        DB query), and then try to find that experiment in the DB. If it maps
        to an experiment, set global variable $experiment to the object. Since
        its a required argument, produce an error if not supplied. Similar
        treatment for optional arguments, with the obvious difference.
      
        The goal is to have ALL argument processing in one place, consistent,
        and correct. I've found numerous places where we leak unchecked
        arguments into queries. It also cuts out a lot of duplicated code.
      
      * To make the above easier to deal with, I've been replacing lots of
        hardcoded URLS in the code of the form:
      
      	foo.php3?pid=$pid&eid=$eid ...
      
        with
      
              CreateURL("foo", $experiment)
      
        which creates and returns the neccessary url string, by looking at
        the type of its arguments (experiment, template, instance, etc.)
      
        Eventually plan to replace them all so that URL handling throughout
        the code is all defined in one place (all the new URL code is in
        url_defs.php).
      
      * I have cranked up error reporting to tell me anytime a variable is
        used before it is initialized, plus a bunch of other stuff that PHP
        deems improper. Think of it like -Wall ... and boy we get a lot of
        warnings.  A very large percentage of the diffs are to fix all these
        warnings.
      
        The warnings are currently going to /usr/testbed/log/php-errors.log,
        and I'll be adding a script to capture them each night and mail them
        to tbops. This file also gets errors (this will be a change for
        developers; rather then seeing errors and warnings dumped in the
        middle of web pages, they will go to this file instead).
      
      * Major refactoring of the code. More objects (nodes, images, osids).
        Moving tons of queries into the objects in the hopes of someday
        getting to a point where we can split the web interface onto a
        different server.  Lots of general cleanup.
      48acc8e3
  23. 30 Jan, 2007 1 commit
  24. 10 Jan, 2007 1 commit
  25. 21 Dec, 2006 1 commit
  26. 20 Dec, 2006 1 commit
  27. 27 Nov, 2006 1 commit
    • Leigh Stoller's avatar
      Call this commit "Snow in Corvallis" ... · 4998b2d7
      Leigh Stoller authored
      The major functional change in this revision is converting from user
      selected UIDs to system selected UIDs. This is controlled by the
      variable $USERSELECTUIDS in defs/defs.php3.in which is now set to
      zero, so system selected UIDs is the default.
      
      The algo for creating the uid is to take the email address, strip the
      @whatever from it, squeeze out dots and dashes and underlines, and
      make sure any +foo tokens are removed. Then make sure it is unique by
      taking the first 5 characters and then adding a 3 digit number,
      derived by checking the DB to see what exists.
      
      Since we will want to (more often) change the UID selected, there is a
      new admin only menu option on the Show User page. It calls the backend
      script to do the work (sbin/changeuid).
      
      The login page now defaults to storing and showing the email address
      for login, rather then the UID. It will still accept either one though
      (has for a long time).
      
      Along the way I also reorg'ed a number of pages to use the new user,
      group, and project classes and moved some common functionality into
      the class defs.
      
      Also changed the way addpubkey is called, to avoid some confusion.
      4998b2d7
  28. 15 Jun, 2006 1 commit
  29. 14 Jun, 2006 3 commits
  30. 08 Jun, 2006 1 commit
  31. 23 May, 2006 1 commit
    • Leigh Stoller's avatar
      A little hack for Rob ... add "su as user" capability. When in admin · 7034b6d5
      Leigh Stoller authored
      mode, the User Profile menu has a new "Su as User" option that flips
      you to the target user. You are effectively logged out and logged back
      in as the target.
      
      No going back; you have to log out to return to your former self. That
      would be too much work for something that is a rare event.
      7034b6d5
  32. 08 May, 2006 1 commit
  33. 05 May, 2006 1 commit