1. 11 Jun, 2008 1 commit
    • Kevin Atkinson's avatar
      · 425c4b89
      Kevin Atkinson authored
      Set the charset for all emulab pages to utf-8 which is needed to
      display foreign names correctly.  Also added three rows to table_regex:
      tinytext_utf8, text_utf8, fulltext_utf8
      
      Enhanced form_defs.php:
      
        - Add Support for Textarea
      
        - Add Support for a vertical list, for example see Category in
          submitpub.php
      
        - Add support for dumping the form values in plain text, used in the
          email I send to testbed-ops.
      
        - Change Error Reporting text for subfields such as in a list so
          they also include the text from the outer field, for example in
          newosid "ping" will become "OS Features, ping".  I needed this
          since some of my subfields didn't have labels and it seamed like
          the right thing to do.
      
        - Set #return_value to 1 in FormRenderCheckBox if it not already
          specified
      
        - In FormRenderSelect, if the #value is not in the list add it to
          the end.
      
        - Add support for "display" type, to just display some text in the
          table
      
        - Possibly some other little things I forgot about.
      
      New site variable PUBSUPPORT.
      
      Implement FS#201: Provide users a way to add a paper that used Emulab
      see (https://users.emulab.net/flyspray/?do=details&id=201), summary of
      changes:
      
        - Controlled via the new site variable PUBSUPPORT.
      
        - The emulab_papers spread sheet is now frozen all new changes
          should be made using the new system.
      
        - New pages submitpub.php for users to submit a new publication
          with different views for admins and non-admins.
      
        - New page expubs.php to replace doc/expubs.html, lists publications
          in database.  Also allows admins to edit publications.
      
        - Project members can edit papers associated with the project as
          long as they have local_root or higher privileges. Papers for a
          project are listed under a new tab in the showproject page. I keep
          track of the last person to edit the paper submission in addition
          to who initially submitted it.
      
        - Users can modify papers they submitted which is needed if the
          project was N/A. Papers users submitted now appear in a new tab in
          the showuser page.
      
        - Script to import spreadsheet to the database is in
          utah/bibliography/emulab_pubs-import.pl.
      
        - Changes web pages that point to doc/expubs.html to instead point
          to expubs.php
      425c4b89
  2. 05 Nov, 2007 1 commit
  3. 02 Nov, 2007 1 commit
  4. 24 Oct, 2007 1 commit
    • Leigh Stoller's avatar
      Moderate rework of the Emulab UI. When logged in, all of the main · 69ec957f
      Leigh Stoller authored
      menus that used to be on the left side, are now drop down menus along
      the top. The banner across the top will also be smaller and more space
      efficient.
      
      The primary motivation for these changes is to leave more room for
      actual content in the main window.
      
      Tested with Firefox (1.5 and 2.0), Safari (2.0 and 3.0) and on
      Internet Explorer Version 7. IE6 has some visual issues that might
      make it a little annoying, but should be viewed as incentive to
      upgrade to IE7 since it has been out a long time.
      69ec957f
  5. 26 Sep, 2007 1 commit
    • Russ Fish's avatar
      Move newgroup page form logic to a backend Perl script and methods. · 3164ca14
      Russ Fish authored
           www/newgroup.php3 - The reworked PHP page.
           www/newgroup_form.php3 - Removed, form merged into newgroup.php3 .
           www/group_defs.php - Add a Group::Create method bridging to the script via XML.
           www/showproject.php3 - Link to newgroup.php3, rather than newgroup_form.php3 .
           configure configure.in  - Add the newgroup backend script.
           backend/{newgroup,GNUmakefile}.in - Add the Perl script.
           db/Group.pm.in - Update the AccessCheck method to allow TB_PROJECT_LEADGROUP.
           sql/database-fill.sql - Add table_regex 'groups' checking patterns.
      3164ca14
  6. 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
  7. 23 Jan, 2007 1 commit
  8. 27 Dec, 2006 1 commit
  9. 20 Dec, 2006 1 commit
  10. 28 Jun, 2006 1 commit
  11. 25 May, 2006 1 commit
  12. 26 Jan, 2006 1 commit
  13. 12 Oct, 2005 1 commit
  14. 30 Aug, 2005 1 commit
  15. 12 Jul, 2004 1 commit
  16. 17 May, 2004 1 commit
    • Leigh Stoller's avatar
      Change the Free Node Summary page to allow showing the summary by · 0a04f07b
      Leigh Stoller authored
      project permission. By default you get a summary of all the free nodes
      you can use in all your project memberships, which is not too
      useful. It would be more useful to see what types you can use by
      project, since that is how permission is granted and how experiments
      are created. So, when you are a member of more than one project,
      display a list of those projects along the top so you can see the list
      on a per-project basis.
      
      More generally, if you are an admin person:
      
      	www.emulab.net/nodecontrol_list.php3?showtype=summary&bypid=tbres
      
      will show out the summary information for a particular project. At
      some point I need to make this a subroutine that we can call from
      other pages to drop in a summary table.
      0a04f07b
  17. 12 Dec, 2003 1 commit
  18. 02 Dec, 2003 1 commit
  19. 15 May, 2003 1 commit
    • Leigh Stoller's avatar
      Split the experiment stats table into two parts. The first is the · a382994d
      Leigh Stoller authored
      per-experiment instantiation with aggregate data like the number of
      swapins, the dates and the like. The other part is the per
      swapin/modify stats. These are number of pnodes, links, lans,
      etc. Long term, I think we want more precise swapin stats, and with
      experiment modify in the mix, we need to have multiple stat records
      per experiment, but do not need to duplicate all the stuff in the
      other table just mentioned.
      
      To reduce the amount the table size, we cross reference the tables by
      index only instead of with pid,eid and the like. We use exptidx to
      link experiments, experiment_stats, and the new experiment_resources
      table. experiment_resources and stats are linked by another index in
      the resources table, which indicates which is the current resource
      row. On a modify, a new resource record is created, and the stats
      record updated to point to the new (latest) resource record.
      
      Web Changes: Improve showstats and showexpstats. Make them user
      accessible so that mere users can see stats for themselves and for
      their projects. No ability for mere users (PIs) to look at another
      person's stats. Generally, these two pages need more work, but now
      they are more useful. I added Show Stats to the user info and project
      info pages to display per-usr/proj stats. Add more info in the
      showstats display, but the showexpstats display is still not pretty
      printed; just the raw tables.
      
      Rename a few fields, add some indexes, and otherwise make some minor
      changes that are sure to annoy everyone.
      a382994d
  20. 13 May, 2003 1 commit
  21. 28 Apr, 2003 1 commit
    • Leigh Stoller's avatar
      Add support for new {user,group,project,experiment}_stats tables. · 5e5508bf
      Leigh Stoller authored
      The first three are aggregate tables, while the experiment stats table
      gets a record for each new experiment, and is updated when an
      experiment is swapped in/out/modify or terminated. Look at the table
      to see what is tracked. Once the experiment_stats record is updated,
      the aggregate tables are updated as necessary. There are a bunch of
      ugly changes to assign_wrapper to get the stats. Note that pnodes is
      not incremented until an experiment sucessfully swaps in. This is in
      leu of getting status codes; I'm not tracking failed operations yet,
      nor creating the log file that Jay wants. I'll do that in the next
      round of changes when we see how useful these numbers are.
      
      Most of the changes are to create/delete table entries where
      appropriate, and to display the records. Display is only under admin
      mode, and the display is raw; just a dump of the assoc tables in php.
      The last 100 experiment stats records are available via the Experiment
      List page, using the "Stats" show option at the top. Bad place, but
      will do for now.
      5e5508bf
  22. 27 Mar, 2003 1 commit
  23. 03 Mar, 2003 1 commit
    • Chad Barb's avatar
      · b04c214b
      Chad Barb authored
      Better headers on shownode page,
      also added "Project" prefix to header on showproject and
      "Experiment" prefix to header on showexp.
      b04c214b
  24. 28 Feb, 2003 1 commit
    • Chad Barb's avatar
      · 4dda599c
      Chad Barb authored
      Added thumbnail (2x as large as the one which shows up in the list) to showexp page.
      Added heading to vis(shownsfile), showexp and showproj pages, to more readily identify what you're looking at.
      Added links from thumbnails to vis(shownsfile) page.
      Added submenu hackiness to menu.php3 to allow embedding of things into left panel below submenu.
      Removed "red letter" legend and PC  summary from bottom of thumbnail view.
      4dda599c
  25. 24 Jan, 2003 1 commit
  26. 25 Nov, 2002 1 commit
  27. 16 Aug, 2002 1 commit
    • Chad Barb's avatar
      · 60529980
      Chad Barb authored
      The big one.
      
      New look;
      most of the changes are in menu.php3.
      
      A lot of the changes in other files are s/<TD>/<TH>/
      for table headers.
      
      Also closed some tags, tweaked some table styles, etc..
      
      No actual functionality should have changed.
      
      Will be installing soon...
      60529980
  28. 17 Jul, 2002 1 commit
  29. 14 Jul, 2002 1 commit
  30. 07 Jul, 2002 1 commit
  31. 21 Jun, 2002 1 commit
  32. 24 May, 2002 1 commit
  33. 05 Apr, 2002 1 commit
  34. 02 Apr, 2002 1 commit
  35. 08 Feb, 2002 1 commit
    • Leigh Stoller's avatar
      Big round of image/osid changes. This is the first cut (final cut?) at · a73e627e
      Leigh Stoller authored
      supporting autocreating and autoloading images. The imageid form now
      sports a field to specify a nodeid to create the image from; If set,
      the backend create_image script is invoked. Thats the easy part.
      Slightly harder is autoloading images based on the osid specified in
      the NS file. To support this, I have added a new DB table called
      osidtoimageid, which holds the mapping from osid/pctype to imageid.
      When users create images, they must specify what node types that image
      is good for. Obviously, the mappings have to be unique or it would be
      impossible to figure it out! Anyway, once that image mapping is
      in place and the image created, the user can specify that ID in the NS
      file. I've changed os_setup to to look for IDs that are not loaded,
      and to try and find one in the osidtoimageid. If found, it invokes
      os_load. To keep things running in parallel as much as possible,
      os_setup issues all the loads/reboots (could be more than a single set
      of loads is multiple IDs are in the NS file) at once, and waits for
      all the children to exit. I've hacked up os_load a bit to try and be
      more robust in the face of PXE failures, which still happen and are
      rather troublsesome. Need an event system!
      
      Contained in this revision are unrelated changed to make the OS and
      Image IDs per-project unique instead of globally unique, since thats a
      pain for the users. This turns out to be very messy, since underneath
      we do not want to pass around pid/ID in all the various places its
      used. Rather, I create a globally unique name and extened the OS and
      Image tables to include pid/name/ID. The user selects pid/name, and I
      create the globally unique ID. For the most part this is invisible
      throughout the system, except where we interface with the user, say in
      the web pages; the user should see his chosen name where possible, and
      the should invoke scripts (os_load, create_image, etc) using his/her
      name not the internal ID. Also, in the front end the NS file should
      use the user name not the ID. All in all, this accounted for a number
      of annoying changes and some special cases that are unavoidable.
      a73e627e
  36. 20 Dec, 2001 1 commit
  37. 05 Dec, 2001 1 commit
  38. 16 Oct, 2001 1 commit
  39. 18 Apr, 2001 1 commit
  40. 17 Mar, 2001 1 commit