File:  [LON-CAPA] / loncom / loncapa_apache.conf
Revision 1.9: download - view: text, annotated - select for diffs
Mon Jul 22 20:35:05 2002 UTC (21 years, 9 months ago) by stredwic
Branches: MAIN
CVS tags: HEAD
Lonchart is now part of lonstatistics.  When the CHRT button is pressed on
the remote control it will take you to the student assessment page.  In
the next commit or two, the student assessment page and lonchart will
gradually merge, or I will make chart its own report.

I added another perl module, lonhtmlcommon which will contain a series of
functions that create controls and data layouts for various different
pieces of information.  This is just a fledgling module.

The biggest feature of this commit is that the downloading of student course
data has changed slightly.  Now, the classlist will contain all students,
but will only display the appropriate ones.  Different reports require
different amounts of data, so some may only download student course data
when selected and some will download it all at once.  The downloading
will first grab the time stamp on the course.db file for the student and
compare it will the cached timestamp for that file.  It will only do a
dump if the data is not yet cached or the timestamp is newer than the one
stored.  Only when the data is processed is the timestamp update, not
when downloaded.  The Download/Process duo of function work hand in hand.
Calling both will be typical even if there was nothing actually downloaded.

The is now a new form, which is a class list with different information.
This list also contain the timestamp for each student, when their course
data was downloaded last.  Having this page is both informational, and
hopefully will mean that it is not necessary for all the other pages, at least
as defaults.

Each report now has a common header.  There is currently some white space,
but it can be filled.  The header has a refresh button, update all student
data button, a selection of forms and a selection of student status.  The
update all student data button will download all students (active and expired)
for the given course.  This allows someone to come to the entry page(
class list) update all the students while they do stuff and come back.
The two selection boxes are special in that they will update the
document when changed.  The onchange attribute was tested on mac,
linux and pc, for the different browsers.  The only noticed difference
was netscape 4.7 executes the javascript if it you select the same thing,
where all others do not.  Also, the same browser causes the first
button in the form to be pressed when the document.form.submit()
javascript is executed for the onchange of the selection box.

There was other cosmetic changes, but were minor.

    1: ##
    2: ## loncapa_apache.conf -- Apache HTTP LON-CAPA configuration file
    3: ##
    4: ## $Id: loncapa_apache.conf,v 1.9 2002/07/22 20:35:05 stredwic Exp $
    5: ##
    6: ## 1/11/2002 - Scott Harrison
    7: ## 2/19/2002 - Scott Harrison
    8: ## 2/28/2002 - Scott Harrison
    9: ## 3/2/2002 - Scott Harrison
   10: ## 5/12/2002 - Scott Harrison
   11: 
   12: #
   13: # LON-CAPA Section (extensions to httpd.conf daemon configuration)
   14: #
   15: # ================================================================ DocumentRoot
   16: 
   17: DocumentRoot "/home/httpd/html"
   18: 
   19: # ======================================================================== User
   20: 
   21: User www
   22: Group www
   23: 
   24: # ======================================================= Shared Object Modules
   25: 
   26: LoadModule perl_module       modules/libperl.so
   27: AddModule mod_perl.c
   28: 
   29: # =============================================================== Miscellaneous
   30: 
   31: ServerAdmin korte@lite.msu.edu
   32: ExtendedStatus On
   33: 
   34: #
   35: # LON-CAPA Section (extensions to srm.conf name space servicing)
   36: #
   37: # ===================================================================== Aliases
   38: 
   39: Alias /prtspool/ /home/httpd/prtspool/
   40: ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"
   41: 
   42: # ================================================================= Directories
   43: 
   44: # ------------------------------------------------------------- Access Handlers
   45: 
   46: <LocationMatch "^/res.*">
   47: PerlAccessHandler       Apache::lonacc
   48: PerlHeaderParserHandler Apache::lonrep
   49: ErrorDocument     403 /adm/login
   50: ErrorDocument     404 /adm/notfound.html
   51: ErrorDocument     406 /adm/roles
   52: ErrorDocument	  500 /adm/errorhandler
   53: </LocationMatch>
   54: 
   55: <LocationMatch "^/priv.*">
   56: PerlAccessHandler Apache::loncacc
   57: SetHandler        perl-script
   58: PerlHandler       Apache::lonconstruct
   59: ErrorDocument     403 /adm/login
   60: ErrorDocument     404 /adm/notfound.html
   61: ErrorDocument     406 /adm/unauthorized.html
   62: ErrorDocument	  500 /adm/errorhandler
   63: </LocationMatch>
   64: 
   65: <LocationMatch "^/raw.*">
   66: PerlAccessHandler Apache::lonracc
   67: </LocationMatch>
   68: 
   69: <LocationMatch "^/\~.*">
   70: PerlAccessHandler Apache::loncacc
   71: ErrorDocument     403 /adm/login
   72: ErrorDocument     404 /adm/notfound.html
   73: ErrorDocument     406 /adm/unauthorized.html
   74: ErrorDocument	  500 /adm/errorhandler
   75: AllowOverride None
   76: </LocationMatch>
   77: 
   78: # ------------------------------------------------------------------------- RAT
   79: 
   80: <LocationMatch "^/\~.*\.sequence$">
   81: SetHandler perl-script
   82: PerlHandler Apache::lonratedt
   83: </LocationMatch>
   84: 
   85: <LocationMatch "^/\~.*\.page$">
   86: SetHandler perl-script
   87: PerlHandler Apache::lonratedt
   88: </LocationMatch>
   89: 
   90: <LocationMatch "^/\~.*\/ratserver$">
   91: SetHandler perl-script
   92: PerlHandler Apache::lonratsrv
   93: </LocationMatch>
   94: 
   95: <Location /adm/ratparms>
   96: PerlAccessHandler       Apache::lonacc
   97: SetHandler perl-script
   98: PerlHandler Apache::lonratparms
   99: ErrorDocument     403 /adm/login
  100: ErrorDocument	  500 /adm/errorhandler
  101: </Location>
  102: 
  103: # --------------------------------------------- Resource Space Content Handlers
  104: 
  105: <LocationMatch "^/res.*/$">
  106: SetHandler perl-script
  107: PerlHandler Apache::lonindexer
  108: </LocationMatch>
  109: 
  110: <LocationMatch "^/(res|\~).*\.tex$">
  111: SetHandler perl-script
  112: PerlHandler Apache::lontex
  113: </LocationMatch>
  114: 
  115: <LocationMatch "^/res/.*\.page$>
  116: SetHandler perl-script
  117: PerlHandler Apache::lonpage
  118: </LocationMatch>
  119: 
  120: <LocationMatch "^/res/.*\.sequence$>
  121: SetHandler perl-script
  122: PerlHandler Apache::lonsequence
  123: </LocationMatch>
  124: 
  125: <LocationMatch "^/(res|\~).*\.meta$>
  126: SetHandler perl-script
  127: PerlHandler Apache::lonmeta
  128: </LocationMatch>
  129: 
  130: <LocationMatch "^/(res|\~).*\.(xml|html|htm|xhtml|xhtm)$">
  131: SetHandler perl-script
  132: PerlHandler Apache::lonxml
  133: </LocationMatch>
  134: 
  135: <LocationMatch "^/(res|\~).*\.(problem|exam|quiz|assess|survey|form|library)$">
  136: SetHandler perl-script
  137: PerlHandler Apache::lonhomework
  138: </LocationMatch>
  139: 
  140: <LocationMatch "^/adm/wrapper/">
  141: PerlAccessHandler       Apache::lonacc
  142: SetHandler perl-script
  143: PerlHandler Apache::lonwrapper
  144: ErrorDocument     403 /adm/login
  145: ErrorDocument	  500 /adm/errorhandler
  146: </LocationMatch>
  147: 
  148: # -------------------------------------------------------------- Admin Programs
  149: 
  150: <Location /adm/statistics>
  151: PerlAccessHandler       Apache::lonacc
  152: SetHandler perl-script
  153: PerlHandler Apache::lonstatistics
  154: ErrorDocument     403 /adm/login
  155: ErrorDocument	  500 /adm/errorhandler
  156: </Location>
  157: 
  158: <Location /adm/roles>
  159: PerlAccessHandler       Apache::lonacc
  160: SetHandler perl-script
  161: PerlHandler Apache::lonroles
  162: ErrorDocument     403 /adm/login
  163: ErrorDocument	  500 /adm/errorhandler
  164: </Location>
  165: 
  166: <Location /adm/login>
  167: SetHandler perl-script
  168: PerlHandler Apache::lonlogin
  169: </Location>
  170: 
  171: <Location /adm/logout>
  172: PerlAccessHandler       Apache::lonacc
  173: SetHandler perl-script
  174: PerlHandler Apache::lonlogout
  175: ErrorDocument     403 /adm/login
  176: </Location>
  177: 
  178: <Location /adm/authenticate>
  179: SetHandler perl-script
  180: PerlHandler Apache::lonauth
  181: </Location>
  182: 
  183: <Location /adm/annotations>
  184: PerlAccessHandler       Apache::lonacc
  185: SetHandler perl-script
  186: PerlHandler Apache::admannotations
  187: ErrorDocument     403 /adm/login
  188: ErrorDocument	  500 /adm/errorhandler
  189: </Location>
  190: 
  191: <Location /adm/bookmarks>
  192: PerlAccessHandler       Apache::lonacc
  193: SetHandler perl-script
  194: PerlHandler Apache::admbookmarks
  195: ErrorDocument     403 /adm/login
  196: ErrorDocument	  500 /adm/errorhandler
  197: </Location>
  198: 
  199: <Location /adm/flip>
  200: PerlAccessHandler       Apache::lonacc
  201: SetHandler perl-script
  202: PerlHandler Apache::lonpageflip
  203: ErrorDocument     406 /adm/roles
  204: ErrorDocument     403 /adm/login
  205: ErrorDocument	  500 /adm/errorhandler
  206: </Location>
  207: 
  208: <Location /adm/ambiguous>
  209: PerlAccessHandler       Apache::lonacc
  210: SetHandler perl-script
  211: PerlHandler Apache::lonambiguous
  212: ErrorDocument     403 /adm/login
  213: ErrorDocument	  500 /adm/errorhandler
  214: </Location>
  215: 
  216: <Location /adm/email>
  217: PerlAccessHandler       Apache::lonacc
  218: SetHandler perl-script
  219: PerlHandler Apache::lonmsg
  220: ErrorDocument     403 /adm/login
  221: ErrorDocument	  500 /adm/errorhandler
  222: </Location>
  223: 
  224: <Location /adm/parmset>
  225: PerlAccessHandler       Apache::lonacc
  226: SetHandler perl-script
  227: PerlHandler Apache::lonparmset
  228: ErrorDocument     403 /adm/login
  229: ErrorDocument     406 /adm/roles
  230: ErrorDocument	  500 /adm/errorhandler
  231: </Location>
  232: 
  233: <Location /adm/grades>
  234: PerlAccessHandler       Apache::lonacc
  235: SetHandler perl-script
  236: PerlHandler Apache::grades
  237: ErrorDocument     403 /adm/login
  238: ErrorDocument     406 /adm/roles
  239: ErrorDocument	  500 /adm/errorhandler
  240: </Location>
  241: 
  242: <Location /adm/createcourse>
  243: PerlAccessHandler       Apache::lonacc
  244: SetHandler perl-script
  245: PerlHandler Apache::loncreatecourse
  246: ErrorDocument     403 /adm/login
  247: ErrorDocument     406 /adm/roles
  248: ErrorDocument	  500 /adm/errorhandler
  249: </Location>
  250: 
  251: <Location /adm/createuser>
  252: PerlAccessHandler       Apache::lonacc
  253: SetHandler perl-script
  254: PerlHandler Apache::loncreateuser
  255: ErrorDocument     403 /adm/login
  256: ErrorDocument     406 /adm/roles
  257: ErrorDocument	  500 /adm/errorhandler
  258: </Location>
  259: 
  260: <Location /adm/publish>
  261: PerlAccessHandler       Apache::lonacc
  262: SetHandler perl-script
  263: PerlHandler Apache::lonpublisher
  264: ErrorDocument     403 /adm/login
  265: ErrorDocument     404 /adm/notfound.html
  266: ErrorDocument     406 /adm/unauthorized.html
  267: ErrorDocument	  500 /adm/errorhandler
  268: </Location>
  269: 
  270: <LocationMatch "^/\~.*/$">
  271: PerlAccessHandler       Apache::loncacc
  272: SetHandler perl-script
  273: PerlHandler Apache::lonpubdir
  274: ErrorDocument     403 /adm/login
  275: ErrorDocument     404 /adm/notfound.html
  276: ErrorDocument     406 /adm/unauthorized.html
  277: ErrorDocument	  500 /adm/errorhandler
  278: </LocationMatch>
  279: 
  280: <Location /adm/pubdir>
  281: PerlAccessHandler       Apache::lonacc
  282: SetHandler perl-script
  283: PerlHandler Apache::lonpubdir
  284: ErrorDocument     403 /adm/login
  285: ErrorDocument     404 /adm/notfound.html
  286: ErrorDocument     406 /adm/unauthorized.html
  287: ErrorDocument	  500 /adm/errorhandler
  288: </Location>
  289: 
  290: <Location /adm/retrieve>
  291: PerlAccessHandler       Apache::lonacc
  292: SetHandler perl-script
  293: PerlHandler Apache::lonretrieve
  294: ErrorDocument     403 /adm/login
  295: ErrorDocument     404 /adm/notfound.html
  296: ErrorDocument     406 /adm/unauthorized.html
  297: ErrorDocument	  500 /adm/errorhandler
  298: </Location>
  299: 
  300: <Location /adm/cfile>
  301: PerlAccessHandler       Apache::lonacc
  302: SetHandler perl-script
  303: PerlHandler Apache::loncfile
  304: ErrorDocument     403 /adm/login
  305: ErrorDocument     404 /adm/notfound.html
  306: ErrorDocument     406 /adm/unauthorized.html
  307: ErrorDocument	  500 /adm/errorhandler
  308: </Location>
  309: 
  310: <Location /adm/diff>
  311: PerlAccessHandler       Apache::lonacc
  312: SetHandler perl-script
  313: PerlHandler Apache::londiff
  314: ErrorDocument     403 /adm/login
  315: ErrorDocument     404 /adm/notfound.html
  316: ErrorDocument     406 /adm/unauthorized.html
  317: ErrorDocument	  500 /adm/errorhandler
  318: </Location>
  319: 
  320: <Location /adm/upload>
  321: PerlAccessHandler       Apache::lonacc
  322: SetHandler perl-script
  323: PerlHandler Apache::lonupload
  324: ErrorDocument     403 /adm/login
  325: ErrorDocument     404 /adm/notfound.html
  326: ErrorDocument     406 /adm/unauthorized.html
  327: ErrorDocument	  500 /adm/errorhandler
  328: </Location>
  329: 
  330: <Location /adm/assesscalc>
  331: PerlAccessHandler       Apache::lonacc
  332: SetHandler perl-script
  333: PerlHandler Apache::lonspreadsheet
  334: ErrorDocument     403 /adm/login
  335: ErrorDocument     406 /adm/roles
  336: ErrorDocument	  500 /adm/errorhandler
  337: </Location>
  338: 
  339: <Location /adm/studentcalc>
  340: PerlAccessHandler       Apache::lonacc
  341: SetHandler perl-script
  342: PerlHandler Apache::lonspreadsheet
  343: ErrorDocument     403 /adm/login
  344: ErrorDocument     406 /adm/roles
  345: ErrorDocument	  500 /adm/errorhandler
  346: </Location>
  347: 
  348: <Location /adm/classcalc>
  349: PerlAccessHandler       Apache::lonacc
  350: SetHandler perl-script
  351: PerlHandler Apache::lonspreadsheet
  352: ErrorDocument     403 /adm/login
  353: ErrorDocument     406 /adm/roles
  354: ErrorDocument	  500 /adm/errorhandler
  355: </Location>
  356: 
  357: <Location /adm/dropadd>
  358: PerlAccessHandler       Apache::lonacc
  359: SetHandler perl-script
  360: PerlHandler Apache::londropadd
  361: ErrorDocument     403 /adm/login
  362: ErrorDocument     406 /adm/roles
  363: ErrorDocument	  500 /adm/errorhandler
  364: </Location>
  365: 
  366: <Location /adm/printout>
  367: PerlAccessHandler       Apache::lonacc
  368: SetHandler perl-script
  369: PerlHandler Apache::lonprintout
  370: ErrorDocument     403 /adm/login
  371: ErrorDocument	  500 /adm/errorhandler
  372: </Location>
  373: 
  374: <Location /adm/feedback>
  375: PerlAccessHandler       Apache::lonacc
  376: SetHandler perl-script
  377: PerlHandler Apache::lonfeedback
  378: ErrorDocument     403 /adm/login
  379: ErrorDocument	  500 /adm/errorhandler
  380: </Location>
  381: 
  382: <Location /adm/evaluate>
  383: PerlAccessHandler       Apache::lonacc
  384: SetHandler perl-script
  385: PerlHandler Apache::lonevaluate
  386: ErrorDocument     403 /adm/login
  387: ErrorDocument	  500 /adm/errorhandler
  388: </Location>
  389: 
  390: <Location /adm/preferences>
  391: PerlAccessHandler       Apache::lonacc
  392: SetHandler perl-script
  393: PerlHandler Apache::lonpreferences
  394: ErrorDocument     403 /adm/login
  395: ErrorDocument	  500 /adm/errorhandler
  396: </Location>
  397: 
  398: <Location /adm/assignments>
  399: PerlAccessHandler       Apache::lonacc
  400: SetHandler perl-script
  401: PerlHandler Apache::lonassignments
  402: ErrorDocument     403 /adm/login
  403: ErrorDocument     406 /adm/roles
  404: ErrorDocument	  500 /adm/errorhandler
  405: </Location>
  406: 
  407: <Location /adm/communicate>
  408: PerlAccessHandler       Apache::lonacc
  409: SetHandler perl-script
  410: PerlHandler Apache::loncommunicate
  411: ErrorDocument     403 /adm/login
  412: ErrorDocument	  500 /adm/errorhandler
  413: </Location>
  414: 
  415: <Location /adm/searchcat>
  416: PerlAccessHandler       Apache::lonacc
  417: SetHandler perl-script
  418: PerlHandler Apache::lonsearchcat
  419: ErrorDocument     403 /adm/login
  420: ErrorDocument	  500 /adm/errorhandler
  421: </Location>
  422: 
  423: <Location /adm/navmaps>
  424: PerlAccessHandler       Apache::lonacc
  425: SetHandler perl-script
  426: PerlHandler Apache::lonnavmaps
  427: ErrorDocument     403 /adm/login
  428: ErrorDocument     406 /adm/roles
  429: ErrorDocument	  500 /adm/errorhandler
  430: </Location>
  431: 
  432: <Location /adm/groupsort>
  433: PerlAccessHandler	Apache::lonacc
  434: SetHandler perl-script
  435: PerlHandler Apache::groupsort
  436: ErrorDocument     403 /adm/login
  437: ErrorDocument	  500 /adm/errorhandler
  438: </Location>
  439: 
  440: <Location /adm/errorhandler>
  441: SetHandler perl-script
  442: PerlHandler Apache::lonerrorhandler
  443: </Location>
  444: 
  445: <LocationMatch "^/adm/help/.*\.hlp$">
  446: SetHandler perl-script
  447: PerlHandler Apache::lonhelp
  448: </LocationMatch>
  449: 
  450: # ------------------------------------------------- Backdoor Adm Tests/Programs
  451: 
  452: <Location /cgi-bin/loncron.pl>
  453: AuthName "LON-CAPA Network Administration"
  454: AuthType Basic
  455: AuthUserFile /home/httpd/lonTabs/htpasswd
  456: require user lonadm
  457: </Location>
  458: 
  459: <Location /cgi-bin/lonversions.pl>
  460: AuthName "LON-CAPA Network Administration"
  461: AuthType Basic
  462: AuthUserFile /home/httpd/lonTabs/htpasswd
  463: require user lonadm
  464: </Location>
  465: 
  466: <Location /cgi-bin/clusterstatus.pl>
  467: AuthName "LON-CAPA Network Administration"
  468: AuthType Basic
  469: AuthUserFile /home/httpd/lonTabs/htpasswd
  470: require user lonadm
  471: </Location>
  472: 
  473: <Location /cgi-bin/metadata_keywords.pl>
  474: AuthName "LON-CAPA Network Administration"
  475: AuthType Basic
  476: AuthUserFile /home/httpd/lonTabs/htpasswd
  477: require user lonadm
  478: </Location>
  479: 
  480: <Location /adm/test>
  481: AuthName "LON-CAPA Network Administration"
  482: AuthType Basic
  483: AuthUserFile /home/httpd/lonTabs/htpasswd
  484: require user lonadm
  485: SetHandler perl-script
  486: PerlAccessHandler Apache::lonacc
  487: PerlHandler Apache::lontest
  488: </Location>
  489: 
  490: # ------------------------------------------------------- Shutting down a child
  491: 
  492: PerlChildExitHandler Apache::lonnet::goodbye
  493: 
  494: #
  495: # LON-CAPA Section (extensions to access.conf permission configuration)
  496: #
  497: # =========================================================== Directory Options
  498: 
  499: # Start out with "no"
  500: 
  501: <Directory />
  502: Options None
  503: AllowOverride None
  504: </Directory>
  505: 
  506: # Yes to symbolic links and server-side includes
  507: 
  508: <Directory /home/httpd/html>
  509: Options Includes FollowSymLinks
  510: AllowOverride None
  511: order allow,deny
  512: allow from all
  513: </Directory>
  514: 
  515: # If it is in cgi-bin, then it can be executed as a CGI script.
  516: 
  517: <Directory /home/httpd/cgi-bin>
  518: AllowOverride None
  519: Options ExecCGI
  520: </Directory>
  521: 
  522: # ============================================================= Access Handlers
  523: 
  524: # ------------------------------------------------- Allow server-status reports
  525: <Location /server-status>
  526: SetHandler server-status
  527: AuthName "LON-CAPA Network Administration"
  528: AuthType Basic
  529: AuthUserFile /home/httpd/lonTabs/htpasswd
  530: require user lonadm
  531: </Location>
  532: 
  533: # ------------------------ Allow LON-CAPA "low-level" connection status reports
  534: <Location /lon-status>
  535: AuthName "LON-CAPA Network Administration"
  536: AuthType Basic
  537: AuthUserFile /home/httpd/lonTabs/htpasswd
  538: require user lonadm
  539: </Location>
  540: 
  541: # ------------------- Allow access to local system documentation from localhost
  542: Alias /doc /usr/doc
  543: <Directory /usr/doc>
  544: order deny,allow
  545: deny from all
  546: allow from localhost
  547: Options Indexes FollowSymLinks
  548: </Directory>
  549: 
  550: # ******** THESE "SHOULD" NEVER BE ALTERED BY THE USER ************************
  551: # ====================================== Internal Settings / Perl Configuration
  552: 
  553: PerlSetVar       lonIDsDir    /home/httpd/lonIDs
  554: PerlSetVar       lonTabDir    /home/httpd/lonTabs
  555: PerlSetVar       lonUsersDir  /home/httpd/lonUsers
  556: PerlSetVar       lonIconsURL  /adm/lonIcons
  557: PerlSetVar       londPort     5663
  558: PerlSetVar       lonSysEMail  korte@lite.msu.edu
  559: PerlSetVar       lonDaemons   /home/httpd/perl
  560: PerlSetVar       lonSockDir   /home/httpd/sockets
  561: PerlSetVar       lonDocRoot   /home/httpd/html
  562: PerlSetVar       lonIncludes  /home/httpd/html/res/adm/includes
  563: PerlSetVar       lonBrowsDet  netscape:mozilla:msie:mozilla\/(\d+\.\d+)\s:9999&explorer:msie:netscape:msie\s(\d+\.\d+)\;:9999&mozilla:mozilla\/[5-9]:msie:mozilla\/(\d+\.\d+)\s:9999&amaya:amaya:mozilla:V(\d+\.\d+)\s:1
  564: 
  565: # -----------------------------------------------------------------------------
  566: # NOTE: lonSqlAccess key is the password for the MySQL user
  567: # www@localhost.  This value must always be "localhostkey".
  568: # The only security risk occurs when somebody logs in as 'www' on your system
  569: # (in which case you have much bigger problems than whether or not they
  570: # can access the non-authoritative loncapa database on your machine).
  571: 
  572: PerlSetVar       lonSqlAccess   localhostkey
  573: 
  574: # -----------------------------------------------------------------------------
  575: 
  576: 
  577: # ====================================== Include machine-specific configuration
  578: 
  579: Include conf/loncapa.conf
  580: 
  581: # ================================================== Initiate mod_perl starting
  582: 
  583: PerlRequire      conf/startup.pl
  584: PerlFreshRestart On

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>