/[docman]/docman.php
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /docman.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.16 by dpavlin, Wed Sep 6 14:06:02 2000 UTC revision 1.49 by dpavlin, Fri Dec 14 17:28:06 2001 UTC
# Line 35  Line 35 
35  /*             existent address after file modifications.       */  /*             existent address after file modifications.       */
36    
37  /*  /*
         2000-07-25 Dobrica Pavlinusic <dpavlin@rot13.org>  
38    
39          nuked exec calls (unsecure)          This project is now called Directory Manager.
         nuked writeable function (replaced by php is_writeable)  
         added support for https (tested with apache+mod_ssl)  
         added users file  
         date format user-selectable  
         cycle backup files in bak directory  
         support links as directoryes (for now)  
         support of file history logging  
         undelete capabilities (delete moves to .del directory)  
40    
41          2000-07-26 DbP          For more info, please see web pages at
42            http://www.rot13.org/~dpavlin/docman.html
43    
44          added more checking on entered filename (when creating file/dir)          It's relased under GPL by
45          added rename option          Dobrica Pavlinusic <dpavlin@rot13.org>
46    
47    
48  IMPORTANT INSTALLATION NOTE:  IMPORTANT INSTALLATION NOTE:
# Line 59  IMPORTANT INSTALLATION NOTE: Line 51  IMPORTANT INSTALLATION NOTE:
51          deleted files!          deleted files!
52    
53          .htusers is in form:          .htusers is in form:
54          login:Real Name:md5(loginpassword)          login:Real Name:[md5(loginpassword)|auth_*]:email@host.dom
55    
56    
57  TODO:  TODO:
58          mixed file/directory output (add type to each entry,          mixed file/directory output (add type to each entry,
59                  real support for links)                  real support for links)
60          retrieve old versions of files (overwritten)          access controll
61          show last lock date  
           
62  */  */
63    
64  //////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////
# Line 80  TODO: Line 71  TODO:
71    
72  // GLOBAL PARAMETERS  // GLOBAL PARAMETERS
73  // =================  // =================
74  // Make modifications here to suit siteman to your needs  // Make modifications here to suit docman to your needs
75    
76  //      error_reporting(4) ;            // how verbose ?  //      error_reporting(4) ;            // how verbose ?
77    
78          // username/password should not be system          // from where to include auth_*.php modules?
79          // usernames/passwords !!          $gblIncDir = "/home/httpd/docman";
80    
81  //      $gblPw    = "hash_of_your_username_and_password" ;          // do we want to force download? (default is 0 for backward
82            // compatibility, but it's defined as 1 in docman.conf for all
83            // future applications!
84            $gblForceDownload = 0;
85    
86  //      $gblAuth  = false ;             // use builtin authentication          // username/password should not be system
87          $gblAuth  = true ;             // use builtin authentication          // usernames/passwords !!
         $gblHash  = "md5" ;             // hash function to use  
88    
89          $gblPw    = "";          $gblPw    = "";
90    
91          if ($gblAuth) {          // date format
                 $htusers_file=dirname($SCRIPT_FILENAME)."/.htusers";  
                 if (! file_exists($htusers_file)) {  
                         $htusers=fopen($htusers_file,"a+");  
                         fputs($htusers,"# Change owner of $htusers_file to root !!\n");  
                         fputs($htusers,"demo:full name:md5_hash\n");  
                         fclose($htusers);  
                 }  
                 $htusers=fopen($htusers_file,"r");  
                 while($user = fgetcsv($htusers,255,":")) {  
                         if ($user[0] == $GLOBALS["PHP_AUTH_USER"]) {  
                                 $gblUserName=$user[1];  
                                 $gblPw=$user[2];  
                                 $gblEmail=$user[3];  
                                 continue ;  
                         }  
                 }  
                 fclose($htusers);  
         }  
   
92  //      $gblDateFmt="D, F d, Y";  //      $gblDateFmt="D, F d, Y";
 //      $gblTimeFmt="g:i:sA";  
   
93          $gblDateFmt="Y-m-d";          $gblDateFmt="Y-m-d";
94    
95            // time format
96    //      $gblTimeFmt="g:i:sA";
97          $gblTimeFmt="H:i:s";          $gblTimeFmt="H:i:s";
98    
99          // Number of backup files to keep          // Number of backup files to keep
# Line 130  TODO: Line 105  TODO:
105          // choose GifIcon below unless you have the M$          // choose GifIcon below unless you have the M$
106          // WingDings font installed on your system          // WingDings font installed on your system
107    
108          $gblIcon = "GifIcon" ;          // MockIcon or GifIcon          $gblIcon="GifIcon";             // MockIcon or GifIcon
109    
110          // the directory below should be /icons/ or /icons/small/          // the directory below should be /icons/ or /icons/small/
111          // on Apache; a set of icons is included in the distribution          // on Apache; a set of icons is included in the distribution
112    
113          $gblIconLocation = "/icons/" ;          $gblIconLocation="/icons/";
114    
115          // files you want to be able to edit in text mode          // files you want to be able to edit in text mode
116          // and view with (primitive) syntax highlighting          // and view with (primitive) syntax highlighting
# Line 150  TODO: Line 125  TODO:
125          $gblImages   = array( ".jpg",".jpeg",".gif",".png",".ico",          $gblImages   = array( ".jpg",".jpeg",".gif",".png",".ico",
126                                ".bmp",".xbm") ;                                ".bmp",".xbm") ;
127    
128            // which files to hide (separated by ,)
129            $gblHide = "";
130    
131            // Where are users? (by default in .htusers file)
132            $gblUsers = "htusers_file";
133    
134  //////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////
135    
136            $gblVersion = "1.8-dev";
137    
138  function StartHTML($title,$text="") {  function StartHTML($title,$text="") {
139    
140          $title = "Site Manager " . $title ;          $title = "Document Manager " . $title ;
141          $host  = $GLOBALS["HTTP_HOST"] ;          $host  = $GLOBALS["HTTP_HOST"] ;
142          $self  = $GLOBALS["PHP_SELF"] ;          $self  = $GLOBALS["PHP_SELF"] ;
143  ?>  ?>
# Line 162  function StartHTML($title,$text="") { Line 145  function StartHTML($title,$text="") {
145  <HTML>  <HTML>
146  <HEAD>  <HEAD>
147   <TITLE><?= $host . " " . $title ?></TITLE>   <TITLE><?= $host . " " . $title ?></TITLE>
148   <META NAME="description" CONTENT="PHP port of AnyPortal Site Manager">   <META NAME="description" CONTENT="Document Manager">
149   <META NAME="keywords" CONTENT="site manager, web site maintenance">   <META NAME="keywords" CONTENT="site manager, web site maintenance">
150   <META NAME="robots" CONTENT="noindex">   <META NAME="robots" CONTENT="noindex">
151   <META HTTP-EQUIV="expires" CONTENT="0">   <META HTTP-EQUIV="expires" CONTENT="0">
# Line 181  function StartHTML($title,$text="") { Line 164  function StartHTML($title,$text="") {
164  //////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////
165    
166  function EndHTML() {  function EndHTML() {
167    
168    global $gblDateFmt, $gblTimeFmt, $gblUserName, $PHP_SELF, $gblPw, $gblVersion;
169    
170  ?>  ?>
171    
172  <HR>  <HR>
173  <P CLASS=FTR>  <P CLASS=FTR>
174  <B><?= date($GLOBALS[gblDateFmt]) ?> -  <B><?= date($gblDateFmt) ?> -
175  <?= date($GLOBALS[gblTimeFmt]) ?> -  <?= date($gblTimeFmt) ?> -
176  <?= $GLOBALS[gblUserName] ?>  <?= $gblUserName ?>
177  <small> [<a href="<?= $GLOBALS["PHP_SELF"] ?>?relogin=<?= $GLOBALS[gblPw] ?>">logout</a>]</small>  <small> [<a href="<?= $PHP_SELF ?>?relogin=<?= $gblPw ?>">logout</a>]</small>
178  </B>  </B>
179  <BR>ANYPORTAL(php) Site Manager  <BR><small>
180  <br><small>  Document Manager <?= $gblVersion ?>, based on ANYPORTAL(php) Site Manager
181    <br>
182  &copy; 1999 by <A HREF="http://www.anyportal.com">ANYPORTAL</A>,  &copy; 1999 by <A HREF="http://www.anyportal.com">ANYPORTAL</A>,
183  &copy; 2000 by <A HREF="http://da.nger.org">d@nger.org</A>,  &copy; 2000 by <A HREF="http://da.nger.org">d@nger.org</A>,
184  &copy; 2000 by <A HREF="http://www.rot13.org/~dpavlin/">DbP</A>  &copy; 2000 by <A HREF="http://www.rot13.org/~dpavlin/">DbP</A>
# Line 233  A:HOVER { color:red; } Line 220  A:HOVER { color:red; }
220    
221  function DetailPage($fsRoot,$relDir,$fn) {  function DetailPage($fsRoot,$relDir,$fn) {
222                    
223          global $gblEditable, $gblImages ;          global $gblEditable, $gblImages, $webRoot ;
224          $self = $GLOBALS["PHP_SELF"] ;          $self = $GLOBALS["PHP_SELF"] ;
225    
226          $relPath  = $relDir . "/" . $fn ;          $relPath  = $relDir . "/" . $fn ;
# Line 252  function DetailPage($fsRoot,$relDir,$fn) Line 239  function DetailPage($fsRoot,$relDir,$fn)
239                  Error("Creation denied",$relDir) ;                  Error("Creation denied",$relDir) ;
240    
241          $text  = "Use this page to view, modify or " ;          $text  = "Use this page to view, modify or " ;
242          $text .= "delete a single document on this " ;          if (is_dir($fsPath)) {
243                    $text .="delete a directory on this " ;
244            } else {
245                    $text .= "delete a single document on this " ;
246            };
247          $text .= "web site." ;            $text .= "web site." ;  
248          $title = "(Detail Page)" ;          $title = "(Detail Page)" ;
249          StartHTML($title, $text) ;          StartHTML($title, $text) ;
# Line 262  function DetailPage($fsRoot,$relDir,$fn) Line 253  function DetailPage($fsRoot,$relDir,$fn)
253                  $fsize = filesize($fsPath) ;                  $fsize = filesize($fsPath) ;
254                  $fmodified = date("$GLOBALS[gblDateFmt] $GLOBALS[gblTimeFmt]", filemtime($fsPath)) ;                  $fmodified = date("$GLOBALS[gblDateFmt] $GLOBALS[gblTimeFmt]", filemtime($fsPath)) ;
255                  $faccessed = date("$GLOBALS[gblDateFmt] $GLOBALS[gblTimeFmt]", fileatime($fsPath)) ;                  $faccessed = date("$GLOBALS[gblDateFmt] $GLOBALS[gblTimeFmt]", fileatime($fsPath)) ;
256                  echo "<PRE>    file size: " . $fsize . " Bytes<BR>" ;                  $fuid=fileowner($fsPath);
257                    $fgid=filegroup($fsPath);
258                    $userinfo = posix_getpwuid($fuid);
259                    $grpinfo = posix_getgrgid($fgid);
260                    echo "<PRE>";
261                    if (!is_dir($fsPath)) echo "    file size: " . $fsize . " Bytes<BR>" ;
262                  echo "last modified: <B>" . $fmodified . "</B><BR>" ;                  echo "last modified: <B>" . $fmodified . "</B><BR>" ;
263                  echo "last accessed: <B>" . $faccessed . "</B><BR>" ;                  echo "last accessed: <B>" . $faccessed . "</B><BR>" ;
264                  echo "        owner: <B>" . fileowner($fsPath) . "</B><BR>" ;                  echo "        owner: <B>" . $userinfo["name"] . " [$fuid]</B><BR>" ;
265                  echo "        group: <B>" . filegroup($fsPath) . "</B><BR>" ;                  echo "        group: <B>" . $grpinfo["name"] . " [$fgid]</B><BR>" ;
266                  echo "  permissions: <B>" ;                  echo "  permissions: <B>" ;
267                  echo printf( "%o", fileperms($fsPath) ) . "</B>" ;                  echo printf( "%o", fileperms($fsPath) ) . "</B>" ;
268                  echo "</PRE>" ;                  echo "</PRE>" ;
269    
270          }          }
271    
272          if ( $editable && ($writable || !$exists) && !$file_lock ) {          if ( !is_dir($fsPath) && $editable && ($writable || !$exists) && !$file_lock ) {
273                  $fh = fopen($fsPath,"a+") ;                  $fh = fopen($fsPath,"a+") ;
274                  rewind($fh) ;                  rewind($fh) ;
275                  $fstr = fread($fh,filesize($fsPath)) ;                  $fstr = fread($fh,filesize($fsPath)) ;
# Line 301  echo($fstr) ; ?></TEXTAREA> Line 297  echo($fstr) ; ?></TEXTAREA>
297          }          }
298          if ( !$file_lock && $ext!="" && strstr(join(' ',$gblImages),$ext) ) {            if ( !$file_lock && $ext!="" && strstr(join(' ',$gblImages),$ext) ) {  
299                  $info  = getimagesize($fsPath) ;                  $info  = getimagesize($fsPath) ;
300                  $tstr = "<IMG SRC=\"".urlpath($relPath)."\" BORDER=0 " ;                  $tstr = "<IMG SRC=\"$webRoot".urlpath($relPath)."\" BORDER=0 " ;
301                  $tstr .= $info[3] . " ALT=\"" . $fn . " - " ;                  $tstr .= $info[3] . " ALT=\"" . $fn . " - " ;
302                  $tstr .= (int)(($fsize+1023)/1024) . "Kb\">" ;                  $tstr .= (int)(($fsize+1023)/1024) . "Kb\">" ;
303  //              echo htmlentities($tstr) . "<BR><BR>" . $tstr ;  //              echo htmlentities($tstr) . "<BR><BR>" . $tstr ;
# Line 367  echo($fstr) ; ?></TEXTAREA> Line 363  echo($fstr) ; ?></TEXTAREA>
363  </FORM>  </FORM>
364    
365  <?php  <?php
366            
367          $name=basename("$fsDir/$fn");          $name=basename("$fsDir/$fn");
368          $logname=dirname("$fsDir/$fn")."/.log/$name";          $logname=dirname("$fsDir/$fn")."/.log/$name";
369          $bakdir=dirname("$fsDir/$fn")."/.bak";          $bakdir=dirname("$fsDir/$fn")."/.bak";
370          if (file_exists($logname)) {          if (file_exists($logname)) {
371                  $log=fopen($logname,"r");                  $log=fopen($logname,"r");
372                  $cl1=" class=lst"; $cl2="";                  $cl1=" class=LST"; $cl2="";
373                  $logarr = array();                  $logarr = array();
374                  while($line = fgetcsv($log,255,"\t")) {                  while($line = fgetcsv($log,512,"\t")) {
375                          $cl=$cl1; $cl1=$cl2; $cl2=$cl;                          $cl=$cl1; $cl1=$cl2; $cl2=$cl;
376                          array_unshift($logarr,array($cl,$line[0],$line[1],$line[2],$line[3]));                          array_unshift($logarr,array($cl,$line[0],$line[1],$line[2],$line[3]));
377                  }                  }
378                  fclose($log);                  fclose($log);
379                  print "<hr><br><b>CHANGES TO THIS FILE</b><br><table border=0 width=100%>\n";                  if (is_dir("$fsDir/$fn")) {
380                            $whatis="DIRECTORY";
381                    } else {
382                            $whatis="FILE";
383                    }
384                    print "<hr><br><b>CHANGES TO THIS $whatis</b><br><table border=0 width=100%>\n";
385                  $bakcount = 0;  // start from 0, skip fist backup (it's current)                  $bakcount = 0;  // start from 0, skip fist backup (it's current)
386                  while ($e = array_shift($logarr)) {                  while ($e = array_shift($logarr)) {
387                          if (strstr($e[4],"upload")) {                          if (strstr($e[4],"upload")) {
388                                  if (file_exists("$bakdir/$bakcount/$name")) {                                  if (file_exists("$bakdir/$bakcount/$name")) {
389                                          $e[4]="<a href=\"".dirname($relPath)."/.bak/$bakcount/$name\">$e[4]</a>";                                          $e[4]="<a href=\"$webRoot".urlpath(dirname($relPath)."/.bak/$bakcount/$name")."\">$e[4]</a>";
390                                  }                                  }
391                                  $bakcount++;                                  $bakcount++;
392                          }                          }
# Line 646  function GifIcon($txt) { Line 647  function GifIcon($txt) {
647    
648  function Navigate($fsRoot,$relDir) {  function Navigate($fsRoot,$relDir) {
649    
650          global $gblEditable, $gblIcon, $gblModDays ;          global $gblEditable, $gblIcon, $gblModDays, $webRoot, $gblHide ;
651    
652          $self     = $GLOBALS["PHP_SELF"] ;          $self     = $GLOBALS["PHP_SELF"] ;
653          if (isset($GLOBALS["HTTPS"]) && $GLOBALS["HTTPS"] == "on") {  
654                  $webRoot  = "https://" . $GLOBALS["SERVER_NAME"] ;          $fsDir = $fsRoot . $relDir . "/" ; // current directory
         } else {  
                 $webRoot  = "http://" . $GLOBALS["SERVER_NAME"] ;  
         }  
         $fsDir    = $fsRoot . $relDir . "/" ; // current directory  
655    
656          if (!is_dir($fsDir)) Error("Dir not found",$relDir) ;          if (!is_dir($fsDir)) Error("Dir not found",$relDir) ;
657    
658            $hide_items=",$gblHide,";
659    
660          // read directory contents          // read directory contents
661          if ( !($dir = @opendir($fsDir)) )          if ( !($dir = @opendir($fsDir)) )
662                  Error("Read Access denied",$relDir) ;                  Error("Read Access denied",$relDir) ;
663          while ($item = readdir($dir)) {          while ($item = readdir($dir)) {
664                  if ( $item == ".." || $item == "." || substr($item,0,1) == "." ) continue ;                  if ( substr($item,0,1) == "." || strstr($hide_items,",$item,") ) continue ;
665                  if ( is_dir($fsDir . $item) ) {                  if ( is_dir($fsDir . $item) ) {
666                          $dirList[] = $item ;                          $dirList[] = $item ;
667                  } else if ( is_file($fsDir . $item) ) {                  } else if ( is_file($fsDir . $item) ) {
# Line 681  function Navigate($fsRoot,$relDir) { Line 680  function Navigate($fsRoot,$relDir) {
680          // scan deleted files          // scan deleted files
681          if ( $GLOBALS[show_deleted] == 1 && ($dir = @opendir("$fsDir/.del")) ) {          if ( $GLOBALS[show_deleted] == 1 && ($dir = @opendir("$fsDir/.del")) ) {
682                  while ($item = readdir($dir)) {                  while ($item = readdir($dir)) {
683                          if ( substr($item,0,1) == "." ) continue ;                          if ( substr($item,0,1) == "." || strstr($hide_items,",$item,") ) continue ;
684                          $fileList[] = ".del/$item" ;                                      $fileList[] = ".del/$item" ;            
685                  }                  }
686                  closedir($dir) ;                  closedir($dir) ;
# Line 695  function Navigate($fsRoot,$relDir) { Line 694  function Navigate($fsRoot,$relDir) {
694                  $text .= ", <a href=$self?D=".urlencode($relDir)."&show_deleted=1>undelete</a>";                  $text .= ", <a href=$self?D=".urlencode($relDir)."&show_deleted=1>undelete</a>";
695          }          }
696          $text .= " or revise files on this web site." ;          $text .= " or revise files on this web site." ;
697            $text .= "<br>Examine list of files <a href=\"$self?A=Ch1\">changed in last day</a> or <a href=\"$self?A=Ch\">all changes</a>.";
698          StartHTML("(Navigate)",$text) ;          StartHTML("(Navigate)",$text) ;
699    
700          echo "<TABLE BORDER=0 CELLPADDING=2          echo "<TABLE BORDER=0 CELLPADDING=2
701                  CELLSPACING=3 WIDTH=\"100%\">" ;                  CELLSPACING=3 WIDTH=\"100%\">" ;
702    
703          // updir bar              // updir bar    
704          if ($fsDir != $fsRoot) {          if (chopsl($fsDir) != chopsl($fsRoot)) {
705                  $parent = dirname($relDir) ;                  $parent = dirname($relDir) ;
706                  if ($parent == "") $parent = "/" ;                  if ($parent == "") $parent = "/" ;
707  ?>  ?>
# Line 713  function Navigate($fsRoot,$relDir) { Line 713  function Navigate($fsRoot,$relDir) {
713  <?php  <?php
714          }          }
715    
716    function plural($name,$count) {
717            $out="$count $name";
718            if ($count > 1) {
719                    $out.="s";
720            }
721            return $out;
722    }
723    
724          // output subdirs          // output subdirs
725          if (sizeof($dirList) > 0) {          if (sizeof($dirList) > 0) {
726                  sort($dirList) ;                  sort($dirList) ;
727  ?>  ?>
728    
729  <TR><TD></TD><TD COLSPAN=5 CLASS=TOP><HR>DIRECTORY NAME</TD></TR>  <TR><TD></TD><TD COLSPAN=2 CLASS=TOP>DIRECTORY NAME (<?= plural("dir",sizeof($dirList)) ?>)</TD><TD COLSPAN=3 CLASS=TOP>DIRECTORY NOTE</TR>
730    
731  <?php  <?php
732                  while (list($key,$dir) = each($dirList)) {                  while (list($key,$dir) = each($dirList)) {
733    
734                            $info_url=$self."?A=E&F=".urlencode($dir)."&D=".urlencode($relDir);
735                          $tstr = "<A HREF=\"" . $self . "?D=" ;                          $tstr = "<A HREF=\"" . $self . "?D=" ;
736                          $tstr .= urlencode($relDir."/".$dir) ;                          $tstr .= urlencode($relDir."/".$dir) ;
737                          $tstr .= "\">" . $dir . "/</A>" ;                          $tstr .= "\">" . $dir . "/</A>" ;
738                            $note_html="<a href=\"$info_url#note\">".$gblIcon("note")."</a>".ReadNote($fsDir.$dir);
739  ?>  ?>
740    
741  <TR><TD><?= $gblIcon("fldr") ?></TD>  <TR><TD>
742  <TD COLSPAN=5 CLASS=LST><?= $tstr ?></TD></TR>  <A HREF="<?= $info_url ?>" TITLE="View/Edit">
743    <?= $gblIcon("fldr") ?></A></TD>
744    <TD COLSPAN=2 CLASS=LST><?= $tstr ?></TD>
745    <TD COLSPAN=3 CLASS=LST><?= $note_html ?></TD></TR>
746    
747  <?php  <?php
748                  }  // iterate over dirs                  }  // iterate over dirs
# Line 738  function Navigate($fsRoot,$relDir) { Line 751  function Navigate($fsRoot,$relDir) {
751    
752  <TR><TD></TD><TD COLSPAN=5><HR><B><?= $webRoot . $relDir ?>  <TR><TD></TD><TD COLSPAN=5><HR><B><?= $webRoot . $relDir ?>
753  </B></TD></TR>  </B></TD></TR>
754  <TR><TD></TD><TD CLASS=TOP>DOCUMENT NAME</TD>  <TR><TD></TD><TD CLASS=TOP>DOCUMENT NAME (<?= plural("file",sizeof($fileList)) ?>)</TD>
755  <TD><?= $gblIcon("blank").$gblIcon("blank") ?></TD>  <TD><?= $gblIcon("blank").$gblIcon("blank") ?></TD>
756  <TD CLASS=TOP>NOTE</TD>  <TD CLASS=TOP>NOTE</TD>
757  <TD CLASS=TOP>LAST UPDATE</TD><TD CLASS=TOP>FILE SIZE</TD></TR>  <TD CLASS=TOP>LAST UPDATE</TD><TD CLASS=TOP>FILE SIZE</TD></TR>
# Line 828  function Navigate($fsRoot,$relDir) { Line 841  function Navigate($fsRoot,$relDir) {
841    
842  <?php  <?php
843            }  // iterate over files            }  // iterate over files
844          }  // end if no files          } else {  // end if no files
845    ?>
846     <TR><TD></TD><TD COLSPAN=5 CLASS=LST>
847      No files in this directory
848     </TD></TR>
849    <?
850            }
851    
852          if ($emptyDir) {          if ($emptyDir && $relDir != "") {
853  ?>  ?>
854    
855  <FORM METHOD="POST" ACTION="<?= $self ?>">  <FORM METHOD="POST" ACTION="<?= $self ?>">
# Line 848  function Navigate($fsRoot,$relDir) { Line 867  function Navigate($fsRoot,$relDir) {
867    
868  <TR><TD></TD><TD COLSPAN=5><HR></TD></TR>  <TR><TD></TD><TD COLSPAN=5><HR></TD></TR>
869    
 <TR><TD></TD><TD COLSPAN=5>  
870  <?  <?
871  if (file_exists(".info.inc")) {  if (file_exists(".info.inc")) {
872            print "<TR><TD></TD><TD COLSPAN=5>";
873          include(".info.inc");          include(".info.inc");
874            print "</TD></TR>
875            <TR><TD></TD><TD COLSPAN=5><HR></TD></TR>";
876  }  }
877  ?>  ?>
 </TD></TR>  
   
 <TR><TD></TD><TD COLSPAN=5><HR></TD></TR>  
878    
879  <FORM METHOD="POST" ACTION="<?= $self ?>">  <FORM METHOD="POST" ACTION="<?= $self ?>">
880  <TR><TD></TD><TD COLSPAN=5 CLASS=BAR>CREATE NEW  <TR><TD></TD><TD COLSPAN=5 CLASS=BAR>CREATE NEW
# Line 865  if (file_exists(".info.inc")) { Line 883  if (file_exists(".info.inc")) {
883   <NOBR>NAME <INPUT TYPE="TEXT" NAME="FN" SIZE=14>   <NOBR>NAME <INPUT TYPE="TEXT" NAME="FN" SIZE=14>
884   <INPUT TYPE="HIDDEN" NAME="POSTACTION" VALUE="CREATE">   <INPUT TYPE="HIDDEN" NAME="POSTACTION" VALUE="CREATE">
885   <INPUT TYPE="HIDDEN" NAME="DIR" VALUE="<?= $relDir ?>">   <INPUT TYPE="HIDDEN" NAME="DIR" VALUE="<?= $relDir ?>">
886   <INPUT TYPE="SUBMIT" VALUE="CREATE"></NOBR>   <INPUT TYPE="SUBMIT" VALUE="CREATE" NAME="CREATE">
887     </NOBR>
888   <NOBR>OR <A HREF="<?= $self ?>?A=U&D=<?= urlencode($relDir) ?>">UPLOAD</A> A FILE   <NOBR>OR <A HREF="<?= $self ?>?A=U&D=<?= urlencode($relDir) ?>">UPLOAD</A> A FILE
889   </NOBR>   </NOBR>
890  </TD></TR>  </TD></TR>
# Line 878  if (file_exists(".info.inc")) { Line 897  if (file_exists(".info.inc")) {
897    
898  //////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////
899    
900  function UploadPage($fsRoot, $relDir, $filename) {  function UploadPage($fsRoot, $relDir, $filename="") {
901    
902          $self = $GLOBALS["PHP_SELF"] ;          $self = $GLOBALS["PHP_SELF"] ;
903          if ($relDir == "") $relDir = "/" ;          if ($relDir == "") $relDir = "/" ;
# Line 888  function UploadPage($fsRoot, $relDir, $f Line 907  function UploadPage($fsRoot, $relDir, $f
907  <FORM ENCTYPE="multipart/form-data" METHOD="POST"  <FORM ENCTYPE="multipart/form-data" METHOD="POST"
908   ACTION="<?= $self ?>">   ACTION="<?= $self ?>">
909  DESTINATION DIRECTORY:<B><?= " " . $relDir ?></B>  DESTINATION DIRECTORY:<B><?= " " . $relDir ?></B>
910  <? if (isset($filename)) { ?>  <? if (isset($filename) && $filename!="") { ?>
911  <br>DESTINATION FILE:<B><?= " " . $filename ?></B>  <br>DESTINATION FILE:<B><?= " " . $filename ?></B>
912  <INPUT TYPE="HIDDEN" NAME="FILENAME" VALUE="<?= $filename ?>">  <INPUT TYPE="HIDDEN" NAME="FILENAME" VALUE="<?= $filename ?>">
913  <? } ?>  <? } ?>
# Line 923  function Error($title,$text="") { Line 942  function Error($title,$text="") {
942    
943  //////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////
944    
 function CreateHash($user, $pw) {  
   
         global $gblHash ;  // hash function to use  
   
         if ($user == "" || $pw == "") {  
                 $text = "either no password or no username supplied" ;  
                 Error("Create Hash",$text) ;  
         }  
         $title = "(Create Hash)" ;  
         StartHTML($title) ;  
         echo "<P ALIGN=center>" ;  
         echo "<BLOCKQUOTE>Copy the value below and paste it " ;  
         echo "into the<BR>value for \$gblPw in the source of " ;  
         echo "this file<BR><BR><B>" . $gblHash($user.$pw) ;  
         echo "</B><BR><BR>Hash function: " . $gblHash ;  
         echo "</BLOCKQUOTE></P>" ;  
         EndHTML() ;  
         exit ;  
   
 } // end function CreateHash  
   
 //////////////////////////////////////////////////////////////////  
   
945  function NoEntry() {  function NoEntry() {
946    
947          $user = $GLOBALS["PHP_AUTH_USER"] ;          $user = $GLOBALS["PHP_AUTH_USER"] ;
# Line 955  function NoEntry() { Line 951  function NoEntry() {
951          $title = "(401 Unauthorized)" ;          $title = "(401 Unauthorized)" ;
952          $text  = "No trespassing !" ;          $text  = "No trespassing !" ;
953          StartHTML($title,$text) ;          StartHTML($title,$text) ;
 ?>  
954    
 <FORM ACTION="<?= $self ?>?HASH=create" METHOD="POST">  
 <INPUT TYPE="HIDDEN" NAME="USER" VALUE="<?= $user ?>">  
 <INPUT TYPE="HIDDEN" NAME="PW" VALUE="<?= $pw ?>">  
   
 <BLOCKQUOTE><B>If you are a site administrator:</B><BR><BR>  
 Click below to <B>generate a password hash</B><BR>from  
 the username-password pair you just<BR>entered. Then include the hash in  
 the source<BR>of this file.<BR><BR>  
 <INPUT TYPE="SUBMIT" VALUE="CREATE HASH">  
 </BLOCKQUOTE></FORM>  
   
 <?php  
955          EndHTML() ;          EndHTML() ;
956          exit ;          exit ;
957  }  }
958    
959  //////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////
960    
961  function Logit($target,$msg) {  function LogIt($target,$msg) {
962    
963          $dir=dirname($target);          $dir=dirname($target);
964          if (! file_exists($dir."/.log")) {          if (! file_exists($dir."/.log")) {
# Line 995  function Logit($target,$msg) { Line 978  function Logit($target,$msg) {
978    
979  function WriteNote($target,$msg) {  function WriteNote($target,$msg) {
980    
981            $target=stripSlashes($target);
982          $dir=dirname($target);          $dir=dirname($target);
983          if (! file_exists($dir."/.note")) {          if (! file_exists($dir."/.note")) {
984                  mkdir($dir."/.note",0700);                  mkdir($dir."/.note",0700);
# Line 1011  function WriteNote($target,$msg) { Line 995  function WriteNote($target,$msg) {
995    
996  function ReadNote($target) {  function ReadNote($target) {
997    
998            $target=stripSlashes($target);
999          $dir=dirname($target);          $dir=dirname($target);
1000          $file=basename($target);          $file=basename($target);
1001          $msg="";          $msg="";
# Line 1019  function ReadNote($target) { Line 1004  function ReadNote($target) {
1004                  $msg=fgets($note,4096);                  $msg=fgets($note,4096);
1005                  fclose($note);                  fclose($note);
1006          }          }
1007          return StripSlashes($msg);          return HtmlSpecialChars(StripSlashes($msg));
1008    
1009  }  }
1010    
# Line 1027  function ReadNote($target) { Line 1012  function ReadNote($target) {
1012    
1013  function MoveTo($source,$folder) {  function MoveTo($source,$folder) {
1014    
1015            $source=stripSlashes($source);
1016          $file=basename($source);          $file=basename($source);
1017          if (! file_exists($folder)) {          if (! file_exists($folder)) {
1018                  mkdir($folder,0700);                  mkdir($folder,0700);
# Line 1040  function MoveTo($source,$folder) { Line 1026  function MoveTo($source,$folder) {
1026    
1027  function Lock($target) {  function Lock($target) {
1028    
1029            $target=stripSlashes($target);
1030          $dir=dirname($target);          $dir=dirname($target);
1031          if (! file_exists($dir."/.lock")) {          if (! file_exists($dir."/.lock")) {
1032                  mkdir($dir."/.lock",0700);                  mkdir($dir."/.lock",0700);
# Line 1060  function Lock($target) { Line 1047  function Lock($target) {
1047    
1048  function CheckLock($target) {  function CheckLock($target) {
1049    
1050            $target=stripSlashes($target);
1051          $dir=dirname($target);          $dir=dirname($target);
1052          $file=basename($target);          $file=basename($target);
1053          $msg=0;          $msg=0;
# Line 1074  function CheckLock($target) { Line 1062  function CheckLock($target) {
1062    
1063  function Unlock($target) {  function Unlock($target) {
1064    
1065            $target=stripSlashes($target);
1066          $dir=dirname($target);          $dir=dirname($target);
1067          $file=basename($target);          $file=basename($target);
1068          if (file_exists($dir."/.lock/$file")) {          if (file_exists($dir."/.lock/$file")) {
# Line 1096  function urlpath($url) { Line 1085  function urlpath($url) {
1085    
1086  //////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////
1087    
1088  function safe_rename($from,$to) {  function safe_rename($fromdir,$fromfile,$tofile) {
1089          if (file_exists($from) && is_writable(dirname($to))) {          function try_rename($from,$to) {
1090                  rename($from,$to);  #               print "$from -> $to\n";
1091                    if (file_exists($from) && is_writeable(dirname($to))) {
1092                            rename($from,$to);
1093                    }
1094            }
1095    
1096            function try_dir($todir) {
1097                    if (! file_exists($todir)) {
1098                            mkdir($todir,0700);
1099                    }
1100            }
1101    
1102            $to="$fromdir/$tofile";
1103            $todir=dirname($to);
1104            $tofile=basename($to);
1105    
1106    #       print "<pre>$fromdir / $fromfile -> $todir / $tofile\n\n";
1107    
1108            try_rename("$fromdir/$fromfile","$todir/$tofile");
1109            try_dir("$todir/.log");
1110            try_rename("$fromdir/.log/$fromfile","$todir/.log/$tofile");
1111            try_dir("$todir/.note");
1112            try_rename("$fromdir/.note/$fromfile","$todir/.note/$tofile");
1113            try_dir("$todir/.lock");
1114            try_rename("$fromdir/.lock/$fromfile","$todir/.lock/$tofile");
1115            try_dir("$todir/.bak");
1116            for($i=0;$i<=$GLOBALS[gblNumBackups];$i++) {
1117                    try_rename("$fromdir/.bak/$i/$fromfile","$todir/.bak/$i/$tofile");
1118          }          }
1119  }  }
1120    
1121    
1122  //////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////
1123    
1124  // recursivly delete directory  // recursivly delete directory
# Line 1122  function rrmdir($dir) { Line 1139  function rrmdir($dir) {
1139    
1140  //////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////
1141    
1142    function ChangeLog($target,$msg) {
1143    
1144            global $gblFsRoot;
1145            $log=fopen("$gblFsRoot/.changelog","a+");
1146            if (substr($target,0,strlen($gblFsRoot)) == $gblFsRoot)
1147                    $target=substr($target,strlen($gblFsRoot),strlen($target)-strlen($gblFsRoot));
1148            $msg=str_replace("\t"," ",$msg);
1149            fputs($log,time()."\t$target\t$GLOBALS[gblUserName]\t$msg\n");
1150            fclose($log);
1151    
1152    }
1153    
1154    function DisplayChangeLog($day) {
1155    
1156            global $gblFsRoot;
1157            if (!file_exists("$gblFsRoot/.changelog")) return;
1158            $log=fopen("$gblFsRoot/.changelog","r");
1159            $logarr = array();
1160            while($line = fgetcsv($log,512,"\t")) {
1161                    $line[0] .= sizeof($line);
1162                    while (sizeof($line) > 4) {
1163                            $tmp = array_pop($line);
1164                            $line.=" $tmp";
1165                    }
1166                    if ($day!=1 || ($day==1 && (time()-$line[0] < 24*60*60))) {
1167                            array_unshift($logarr,array($line[0],$line[1],$line[2],$line[3]));
1168                    }
1169            }
1170            fclose($log);
1171            $cl1=" class=LST"; $cl2="";
1172            print "<table border=0 width=100%>\n";
1173            while ($e = array_shift($logarr)) {
1174                    $cl=$cl1; $cl1=$cl2; $cl2=$cl;
1175                    $date = date("$GLOBALS[gblDateFmt]", $e[0]);
1176                    $time = date("$GLOBALS[gblTimeFmt]", $e[0]);
1177                    $dir = dirname($e[1]);
1178                    $file = basename($e[1]);
1179                    print "<tr><td$cl>$date</td><td$cl>$time</td><td$cl><a href=\"$GLOBALS[PHP_SELF]?D=".urlencode($dir)."\">$dir</a>/$file</td><td$cl>$e[2]</td><td$cl>$e[3]</td></tr>\n";
1180            }
1181            print "</table>";
1182            print "<p>".GifIcon(up)." Back to <a href=$GLOBALS[PHP_SELF]>front page</a>.</p>";
1183    }
1184    
1185    //////////////////////////////////////////////////////////////////
1186    
1187    function Download($path) {
1188            global $HTTP_USER_AGENT;
1189            $file=basename($path);
1190            $size = filesize($path);
1191            //header("Content-Type: application/octet-stream");
1192            header("Content-Type: application/force-download");
1193            header("Content-Length: $size");
1194            // IE5.5 just downloads index.php if we don't do this
1195            if(preg_match("/MSIE 5.5/", $HTTP_USER_AGENT)) {
1196                    header("Content-Disposition: filename=$file");
1197            } else {
1198                    header("Content-Disposition: attachment; filename=$file");
1199            }
1200            header("Content-Transfer-Encoding: binary");
1201            $fh = fopen($path, "r");
1202            fpassthru($fh);
1203    }
1204    
1205    
1206    //////////////////////////////////////////////////////////////////
1207    
1208    function chopsl($path) {
1209            if (substr($path,strlen($path)-1,1) == "/") $path=substr($path,0,strlen($path)-1);
1210            $path=str_replace("//","/",$path);
1211            return $path;
1212    }
1213    
1214    //////////////////////////////////////////////////////////////////
1215  // MAIN PROGRAM  // MAIN PROGRAM
1216  // ============  // ============
1217  // query parameters: capital letters  // query parameters: capital letters
# Line 1137  function rrmdir($dir) { Line 1227  function rrmdir($dir) {
1227          // forks before authentication: style sheet and hash          // forks before authentication: style sheet and hash
1228          // creation if password not yet set.          // creation if password not yet set.
1229          if ($STYLE == "get") { CSS() ; exit ; }          if ($STYLE == "get") { CSS() ; exit ; }
1230          if ($HASH != "") {  
1231                  CreateHash($USER, $PW) ;          $fsScriptDir  = dirname($SCRIPT_FILENAME) ;    
1232                  exit ;          // i.e. /home/httpd/html/docman
1233    
1234            // read user-defined configuration
1235            if (file_exists("$fsScriptDir/.docman.conf")) {
1236                    include("$fsScriptDir/.docman.conf");
1237            }
1238    
1239            // where do we get users from?
1240            if (file_exists("$gblIncDir/$gblUsers.php")) {
1241                    include("$gblIncDir/$gblUsers.php");
1242            } else {
1243                    Error("Configuration error","Can't find user handling module at <tt>$gblIncDir/$gblUsers.php</tt> ! Please fix <tt>$fsScriptDir/.docman.conf</tt>");
1244          }          }
1245    
1246          // authentication if $gblAuth == true          // authentication failure
1247          if ( $gblAuth && $gblHash($PHP_AUTH_USER.$PHP_AUTH_PW) != $gblPw ||          if ( md5($PHP_AUTH_USER.$PHP_AUTH_PW) != $gblPw ||
1248                  isset($relogin) && $gblPw == $relogin ) {                  isset($relogin) && $gblPw == $relogin ) {
1249                  header("WWW-authenticate: basic realm=\"$SERVER_NAME\"") ;                  header("WWW-authenticate: basic realm=\"$HTTP_HOST\"") ;
1250                  header("HTTP/1.0 401 Unauthorized") ;                  header("HTTP/1.0 401 Unauthorized") ;
1251                  NoEntry() ;                  NoEntry() ;
1252                  exit ;                  exit ;
# Line 1157  function rrmdir($dir) { Line 1258  function rrmdir($dir) {
1258                  $relDir = urldecode($D) ;  // then use GET                  $relDir = urldecode($D) ;  // then use GET
1259          }                }      
1260    
1261            $relDir=stripSlashes($relDir);
1262    
1263          if ($relDir == "/") $relDir = "" ;                if ($relDir == "/") $relDir = "" ;      
1264          // default : website root = ""          // default : website root = ""
1265    
# Line 1168  function rrmdir($dir) { Line 1271  function rrmdir($dir) {
1271          // i.e. below $gblFsRoot.          // i.e. below $gblFsRoot.
1272    
1273          $relScriptDir = dirname($SCRIPT_NAME) ;                  $relScriptDir = dirname($SCRIPT_NAME) ;        
1274          // i.e. /siteman          // i.e. /docman
   
         $fsScriptDir  = dirname($SCRIPT_FILENAME) ;      
         // i.e. /home/httpd/html/siteman  
1275    
1276          $gblFsRoot = substr($fsScriptDir,0,          // start on server root
1277            strlen($fsScriptDir)-strlen($relScriptDir)) ;  //      $gblFsRoot = substr($fsScriptDir,0, strlen($fsScriptDir)-strlen($relScriptDir)) ;
1278            // or on script root
1279            $gblFsRoot = $fsScriptDir;
1280          // i.e. /home/httpd/html          // i.e. /home/httpd/html
1281    
1282          $fsDir = $gblFsRoot . $relDir ; // current directory          $fsDir = $gblFsRoot . $relDir ; // current directory
1283          if ( !is_dir($fsDir) ) Error("Dir not found",$relDir) ;          if ( !is_dir($fsDir) ) Error("Dir not found",$relDir) ;
1284            
1285            if (isset($GLOBALS["HTTPS"]) && $GLOBALS["HTTPS"] == "on") {
1286                    $webRoot  = "https://";
1287            } else {
1288                    $webRoot  = "http://";
1289            }
1290            $webRoot .= $GLOBALS["HTTP_HOST"] . $relScriptDir;
1291    
1292            $FN=stripSlashes($FN);
1293    
1294    
1295          switch ($POSTACTION) {          switch ($POSTACTION) {
1296          case "UPLOAD" :          case "UPLOAD" :
1297                  if (!is_writeable($fsDir)) Error("Write denied",$relDir) ;                  if (!is_writeable($fsDir)) Error("Write denied",$relDir) ;
# Line 1188  function rrmdir($dir) { Line 1300  function rrmdir($dir) {
1300                  // TODO : should rather check for escapeshellcmds                  // TODO : should rather check for escapeshellcmds
1301                  // but maybe RFC 18xx asserts safe filenames ....                  // but maybe RFC 18xx asserts safe filenames ....
1302                  $source = $FN ;                  $source = $FN ;
1303                    if (! file_exists($source)) {
1304                            Error("You must select file with browse to upload it!");
1305                    }
1306                  if (! isset($FILENAME)) {       // from update file                  if (! isset($FILENAME)) {       // from update file
1307                          $target = "$fsDir/$FN_name" ;                          $target = "$fsDir/$FN_name" ;
1308                  } else {                  } else {
# Line 1215  function rrmdir($dir) { Line 1330  function rrmdir($dir) {
1330                  if (isset($FILENAME)) {                  if (isset($FILENAME)) {
1331                          Unlock($target);                          Unlock($target);
1332                  }                  }
1333                    ChangeLog($target,"updated");
1334                  break ;                  break ;
1335    
1336          case "SAVE" :          case "SAVE" :
1337                  $path = $gblFsRoot . escapeshellcmd($RELPATH) ;                  $path = $gblFsRoot . $RELPATH ;
1338                    $path=stripSlashes($path);
1339                  $writable = is_writeable($path) ;                  $writable = is_writeable($path) ;
1340                  $legaldir = is_writeable(dirname($path)) ;                  $legaldir = is_writeable(dirname($path)) ;
1341                  $exists   = (file_exists($path)) ? 1 : 0 ;                  $exists   = (file_exists($path)) ? 1 : 0 ;
# Line 1226  function rrmdir($dir) { Line 1343  function rrmdir($dir) {
1343                  if (!($writable || (!$exists && $legaldir)))                  if (!($writable || (!$exists && $legaldir)))
1344                          Error("Write denied",$RELPATH) ;                          Error("Write denied",$RELPATH) ;
1345                  $fh = fopen($path, "w") ;                  $fh = fopen($path, "w") ;
1346                    $FILEDATA=stripSlashes($FILEDATA);
1347                  fwrite($fh,$FILEDATA) ;                  fwrite($fh,$FILEDATA) ;
1348                  fclose($fh) ;                  fclose($fh) ;
1349                  clearstatcache() ;                  clearstatcache() ;
1350                  Logit($path,"saved changes");                  Logit($path,"saved changes");
1351                    ChangeLog($path,"saved changes");
1352                  break ;                  break ;
1353    
1354          case "CREATE" :          case "CREATE" :
# Line 1248  function rrmdir($dir) { Line 1367  function rrmdir($dir) {
1367  // this functionality is doubled in DetailView().  // this functionality is doubled in DetailView().
1368  // better keep it here altogether  // better keep it here altogether
1369  // chmod perms to $gblFilePerms  // chmod perms to $gblFilePerms
1370                          if ( file_exists($path) && !is_writable($path) )                          if ( file_exists($path) && !is_writeable($path) )
1371                                  Error("File not writable", $relPath) ;                                  Error("File not writable", $relPath) ;
1372                          $fh = fopen($path, "w+") ;                          $fh = fopen($path, "w+") ;
1373                          if ($fh) {                          if ($fh) {
# Line 1260  function rrmdir($dir) { Line 1379  function rrmdir($dir) {
1379                          }                          }
1380                          $tstr = "$PHP_SELF?A=E&D=".urlencode($relDir)."&F=".urlencode($FN) ;                          $tstr = "$PHP_SELF?A=E&D=".urlencode($relDir)."&F=".urlencode($FN) ;
1381                          header("Location: " . $tstr) ;                          header("Location: " . $tstr) ;
1382                            ChangeLog($target,"created");
1383                          exit ;                          exit ;
1384                  }                  }
1385                  break ;                  break ;
# Line 1319  function rrmdir($dir) { Line 1439  function rrmdir($dir) {
1439                  if ( $CONFIRM != "on" ) break ;                  if ( $CONFIRM != "on" ) break ;
1440    
1441                  Logit("$fsDir/$FN","renamed $FN to $NEWNAME");                  Logit("$fsDir/$FN","renamed $FN to $NEWNAME");
1442                  safe_rename("$fsDir/$FN","$fsDir/$NEWNAME");                  safe_rename($fsDir,$FN,$NEWNAME);
                 safe_rename("$fsDir/.log/$FN","$fsDir/.log/$NEWNAME");  
                 safe_rename("$fsDir/.note/$FN","$fsDir/.note/$NEWNAME");  
                 safe_rename("$fsDir/.lock/$FN","$fsDir/.lock/$NEWNAME");  
                 for($i=0;$i<=$GLOBALS[gblNumBackups];$i++) {  
                         safe_rename("$fsDir/.bak/$i/$FN","$fsDir/.bak/$i/$NEWNAME");  
                 }  
   
1443                  break ;                  break ;
1444    
1445          case "NOTE" :            case "NOTE" :  
# Line 1356  function rrmdir($dir) { Line 1469  function rrmdir($dir) {
1469          // $A=Co : checkout file $D/$F          // $A=Co : checkout file $D/$F
1470          // $A=Ci : checkin file $D/$F          // $A=Ci : checkin file $D/$F
1471          // $A=V : view file (do nothing except log)          // $A=V : view file (do nothing except log)
1472            // $A=I : include file .$F.php from $gblFsRoot
1473          // default : display directory $D          // default : display directory $D
1474            
1475          switch ($A) {          switch ($A) {
1476          case "U" :          case "U" :
1477                  // upload to $relDir                  // upload to $relDir
1478                  if (!is_writeable($gblFsRoot . $relDir))                  if (!is_writeable($gblFsRoot . $relDir))
1479                          Error("Write access denied",$relDir) ;                          Error("Write access denied",$relDir) ;
1480                  $text  = "Use this page to upload a single " ;                  $text  = "Use this page to upload a single " ;
1481                  $text .= "file to <B>$SERVER_NAME</B>." ;                  $text .= "file to <B>$HTTP_HOST</B>." ;
1482                  StartHTML("(Upload Page)", $text) ;                  StartHTML("(Upload Page)", $text) ;
1483                  UploadPage($gblFsRoot, $relDir) ;                  UploadPage($gblFsRoot, $relDir) ;
1484                  EndHTML() ;                  EndHTML() ;
1485                  exit ;                  exit ;
1486          case "E" :          case "E" :
1487                    $F=stripSlashes($F);
1488                  // detail of $relDir/$F                  // detail of $relDir/$F
1489                  if (is_file("$gblFsRoot/$relDir/$F")) DetailPage($gblFsRoot, $relDir, $F) ;                  if (is_file("$gblFsRoot/$relDir/$F") || is_dir("$gblFsRoot/$relDir/$F")) DetailPage($gblFsRoot, $relDir, $F) ;
1490                  exit ;                  exit ;
1491          case "C" :          case "C" :
1492                    $F=stripSlashes($F);
1493                  // listing of $relDir/$F                  // listing of $relDir/$F
1494                  DisplayCode($gblFsRoot, $relDir, $F) ;                  DisplayCode($gblFsRoot, $relDir, $F) ;
1495                  exit ;                  exit ;
1496          case "Co" :          case "Co" :
1497                  // checkout                  // checkout
1498                  Lock("$gblFsRoot/$relDir/$F");                  Lock("$gblFsRoot/$relDir/$F");
1499                  header("Content-Disposition: attachment; filename=$F" );                  Download("$gblFsRoot/$relDir/$F");
                 Header("Location: ".urlpath("$relDir/$F"));  
1500                  exit;                  exit;
1501          case "Ci" :          case "Ci" :
1502                    $F=stripSlashes($F);
1503                  // upload && update to $relDir                  // upload && update to $relDir
1504                  if (!is_writeable($gblFsRoot . $relDir))                  if (!is_writeable($gblFsRoot . $relDir))
1505                          Error("Write access denied",$relDir) ;                          Error("Write access denied",$relDir) ;
1506                  $text  = "Use this page to update a single " ;                  $text  = "Use this page to update a single " ;
1507                  $text .= "file to <B>$SERVER_NAME</B>." ;                  $text .= "file to <B>$HTTP_HOST</B>." ;
1508                  StartHTML("(Update file Page)", $text) ;                  StartHTML("(Update file Page)", $text) ;
1509                  UploadPage($gblFsRoot, $relDir, $F) ;                  UploadPage($gblFsRoot, $relDir, $F) ;
1510                  EndHTML() ;                  EndHTML() ;
# Line 1396  function rrmdir($dir) { Line 1512  function rrmdir($dir) {
1512          case "V" :          case "V" :
1513                  // view                  // view
1514                  LogIt("$gblFsRoot/$relDir/$F","viewed");                  LogIt("$gblFsRoot/$relDir/$F","viewed");
1515                  header("Content-Disposition: attachment; filename=$F" );                  if ($gblForceDownload) {
1516                  Header("Location: ".urlpath("$relDir/$F"));                          Download("$gblFsRoot/$relDir/$F");
1517                    } else {
1518                            header("Content-Disposition: attachment; filename=$F" );
1519                            Header("Location: $webRoot".urlpath("$relDir/$F"));
1520                    }
1521                    exit;
1522            case "Ch" :
1523                    StartHTML("(File changes)","All changes chronologicaly...");
1524                    DisplayChangeLog(0);    // all
1525                    EndHTML() ;
1526                  exit;                  exit;
1527            case "Ch1" :
1528                    StartHTML("(File changes)","Changes to files in last day...");
1529                    DisplayChangeLog(1);
1530                    EndHTML() ;
1531                    exit;
1532            case "I" :
1533                    $F=stripSlashes($F);
1534                    $inc_file="${gblFsRoot}/.${F}.php";
1535                    if (!isset($F) || $F == "" || !file_exists($inc_file)) Error("Fatal error $inc_file"); // can't find file to include
1536                    if (!is_readable($inc_file))
1537                            Error("Read access to include file denied",".${F}.php");
1538                    $text  = "Your include file should define \$text variable which holds this text and \$title variable which is page title";
1539                    $title = "You should define \$title variable with page title";
1540                    include($inc_file);
1541                    StartHTML($title, $text) ;
1542                    print "<p>".GifIcon(up)." Back to <a href=$GLOBALS[PHP_SELF]>front page</a>.</p>";
1543                    EndHTML() ;
1544                    exit ;
1545          }          }
1546    
1547          // default: display directory $relDir          // default: display directory $relDir

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.49

  ViewVC Help
Powered by ViewVC 1.1.26