/[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.13 by dpavlin, Wed Sep 6 10:49:15 2000 UTC revision 1.24 by dpavlin, Tue Oct 10 14:32:07 2000 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 65  IMPORTANT INSTALLATION NOTE: Line 57  IMPORTANT INSTALLATION NOTE:
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    
# Line 108  TODO: Line 99  TODO:
99                          if ($user[0] == $GLOBALS["PHP_AUTH_USER"]) {                          if ($user[0] == $GLOBALS["PHP_AUTH_USER"]) {
100                                  $gblUserName=$user[1];                                  $gblUserName=$user[1];
101                                  $gblPw=$user[2];                                  $gblPw=$user[2];
102                                    $gblEmail=$user[3];
103                                  continue ;                                  continue ;
104                          }                          }
105                  }                  }
# Line 120  TODO: Line 112  TODO:
112          $gblDateFmt="Y-m-d";          $gblDateFmt="Y-m-d";
113          $gblTimeFmt="H:i:s";          $gblTimeFmt="H:i:s";
114    
115  // Number of backup files to keep          // Number of backup files to keep
116          $gblNumBackups=5;          $gblNumBackups=3;
117    
118            // show red star if newer than ... days
119            $gblModDays=1;
120    
121          // choose GifIcon below unless you have the M$          // choose GifIcon below unless you have the M$
122          // WingDings font installed on your system          // WingDings font installed on your system
# Line 295  echo($fstr) ; ?></TEXTAREA> Line 290  echo($fstr) ; ?></TEXTAREA>
290    
291  <?php  <?php
292          }          }
293          if ( !$file_lock && strstr(join(" ",$gblImages),$ext) ) {            if ( !$file_lock && $ext!="" && strstr(join(' ',$gblImages),$ext) ) {  
294                  $info  = getimagesize($fsPath) ;                  $info  = getimagesize($fsPath) ;
295                  $tstr = "<IMG SRC=\"".urlpath($relPath)."\" BORDER=0 " ;                  $tstr = "<IMG SRC=\"".urlpath($relPath)."\" BORDER=0 " ;
296                  $tstr .= $info[3] . " ALT=\"" . $fn . " - " ;                  $tstr .= $info[3] . " ALT=\"" . $fn . " - " ;
# Line 363  echo($fstr) ; ?></TEXTAREA> Line 358  echo($fstr) ; ?></TEXTAREA>
358  </FORM>  </FORM>
359    
360  <?php  <?php
361            
362          $name=basename("$fsDir/$fn");          $name=basename("$fsDir/$fn");
363          $logname=dirname("$fsDir/$fn")."/.log/$name";          $logname=dirname("$fsDir/$fn")."/.log/$name";
364          $bakdir=dirname("$fsDir/$fn")."/.bak";          $bakdir=dirname("$fsDir/$fn")."/.bak";
# Line 642  function GifIcon($txt) { Line 637  function GifIcon($txt) {
637    
638  function Navigate($fsRoot,$relDir) {  function Navigate($fsRoot,$relDir) {
639    
640          global $gblEditable, $gblIcon ;          global $gblEditable, $gblIcon, $gblModDays ;
641    
642          $self     = $GLOBALS["PHP_SELF"] ;          $self     = $GLOBALS["PHP_SELF"] ;
643          if (isset($GLOBALS["HTTPS"]) && $GLOBALS["HTTPS"] == "on") {          if (isset($GLOBALS["HTTPS"]) && $GLOBALS["HTTPS"] == "on") {
# Line 691  function Navigate($fsRoot,$relDir) { Line 686  function Navigate($fsRoot,$relDir) {
686                  $text .= ", <a href=$self?D=".urlencode($relDir)."&show_deleted=1>undelete</a>";                  $text .= ", <a href=$self?D=".urlencode($relDir)."&show_deleted=1>undelete</a>";
687          }          }
688          $text .= " or revise files on this web site." ;          $text .= " or revise files on this web site." ;
689            $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>.";
690          StartHTML("(Navigate)",$text) ;          StartHTML("(Navigate)",$text) ;
691    
692          echo "<TABLE BORDER=0 CELLPADDING=2          echo "<TABLE BORDER=0 CELLPADDING=2
# Line 757  function Navigate($fsRoot,$relDir) { Line 753  function Navigate($fsRoot,$relDir) {
753    
754                  $info_url=$self."?A=E&F=".urlencode($file)."&D=".urlencode($relDir);                  $info_url=$self."?A=E&F=".urlencode($file)."&D=".urlencode($relDir);
755    
756                  if ( ($mod + 30*86400) > time() ) {                  if ( ($mod + $gblModDays*86400) > time() ) {
757                          $a  = "<SPAN CLASS=RED TITLE=\"Newer" ;                          $a  = "<SPAN CLASS=RED TITLE=\"Newer" ;
758                          $a .= " than 30 days\"> * </SPAN>" ;                          $a .= " than $gblModDays days\"> * </SPAN>" ;
759                  }                  }
760    
761                  $file_lock=CheckLock($path);                  $file_lock=CheckLock($path);
# Line 971  the source<BR>of this file.<BR><BR> Line 967  the source<BR>of this file.<BR><BR>
967    
968  //////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////
969    
970  function Logit($target,$msg) {  function LogIt($target,$msg) {
971    
972          $dir=dirname($target);          $dir=dirname($target);
973          if (! file_exists($dir."/.log")) {          if (! file_exists($dir."/.log")) {
# Line 991  function Logit($target,$msg) { Line 987  function Logit($target,$msg) {
987    
988  function WriteNote($target,$msg) {  function WriteNote($target,$msg) {
989    
990            $target=stripSlashes($target);
991          $dir=dirname($target);          $dir=dirname($target);
992          if (! file_exists($dir."/.note")) {          if (! file_exists($dir."/.note")) {
993                  mkdir($dir."/.note",0700);                  mkdir($dir."/.note",0700);
# Line 1007  function WriteNote($target,$msg) { Line 1004  function WriteNote($target,$msg) {
1004    
1005  function ReadNote($target) {  function ReadNote($target) {
1006    
1007            $target=stripSlashes($target);
1008          $dir=dirname($target);          $dir=dirname($target);
1009          $file=basename($target);          $file=basename($target);
1010          $msg="";          $msg="";
# Line 1023  function ReadNote($target) { Line 1021  function ReadNote($target) {
1021    
1022  function MoveTo($source,$folder) {  function MoveTo($source,$folder) {
1023    
1024            $source=stripSlashes($source);
1025          $file=basename($source);          $file=basename($source);
1026          if (! file_exists($folder)) {          if (! file_exists($folder)) {
1027                  mkdir($folder,0700);                  mkdir($folder,0700);
# Line 1036  function MoveTo($source,$folder) { Line 1035  function MoveTo($source,$folder) {
1035    
1036  function Lock($target) {  function Lock($target) {
1037    
1038            $target=stripSlashes($target);
1039          $dir=dirname($target);          $dir=dirname($target);
1040          if (! file_exists($dir."/.lock")) {          if (! file_exists($dir."/.lock")) {
1041                  mkdir($dir."/.lock",0700);                  mkdir($dir."/.lock",0700);
# Line 1056  function Lock($target) { Line 1056  function Lock($target) {
1056    
1057  function CheckLock($target) {  function CheckLock($target) {
1058    
1059            $target=stripSlashes($target);
1060          $dir=dirname($target);          $dir=dirname($target);
1061          $file=basename($target);          $file=basename($target);
1062          $msg=0;          $msg=0;
# Line 1070  function CheckLock($target) { Line 1071  function CheckLock($target) {
1071    
1072  function Unlock($target) {  function Unlock($target) {
1073    
1074            $target=stripSlashes($target);
1075          $dir=dirname($target);          $dir=dirname($target);
1076          $file=basename($target);          $file=basename($target);
1077          if (file_exists($dir."/.lock/$file")) {          if (file_exists($dir."/.lock/$file")) {
# Line 1100  function safe_rename($from,$to) { Line 1102  function safe_rename($from,$to) {
1102    
1103  //////////////////////////////////////////////////////////////////  //////////////////////////////////////////////////////////////////
1104    
1105    // recursivly delete directory
1106    
1107    function rrmdir($dir) {
1108            $handle=opendir($dir);
1109            while ($file = readdir($handle)) {
1110                    if ($file != "." && $file != "..") {
1111                            if (is_dir("$dir/$file"))
1112                                    rrmdir("$dir/$file");
1113                            else
1114                                    if (! @unlink("$dir/$file")) return(0);
1115                    }
1116            }
1117            closedir($handle);
1118            return @rmdir($dir);
1119    }
1120    
1121    //////////////////////////////////////////////////////////////////
1122    
1123    function ChangeLog($target,$msg) {
1124    
1125            global $gblFsRoot;
1126            $log=fopen("$gblFsRoot/.changelog","a+");
1127            if (substr($target,0,strlen($gblFsRoot)) == $gblFsRoot)
1128                    $target=substr($target,strlen($gblFsRoot),strlen($target)-strlen($gblFsRoot));
1129            fputs($log,time()."\t$target\t$GLOBALS[gblUserName]\t$msg\n");
1130            fclose($log);
1131    
1132    }
1133    
1134    function DisplayChangeLog($day) {
1135    
1136            global $gblFsRoot;
1137            if (!file_exists("$gblFsRoot/.changelog")) return;
1138            $log=fopen("$gblFsRoot/.changelog","r");
1139            $logarr = array();
1140            while($line = fgetcsv($log,255,"\t")) {
1141                    if ($day!=1 || ($day==1 && (time()-$line[0] < 24*60*60))) {
1142                            array_unshift($logarr,array($line[0],$line[1],$line[2],$line[3]));
1143                    }
1144            }
1145            fclose($log);
1146            $cl1=" class=lst"; $cl2="";
1147            print "<table border=0 width=100%>\n";
1148            while ($e = array_shift($logarr)) {
1149                    $cl=$cl1; $cl1=$cl2; $cl2=$cl;
1150                    $date = date("$GLOBALS[gblDateFmt]", $e[0]);
1151                    $time = date("$GLOBALS[gblTimeFmt]", $e[0]);
1152                    $dir = dirname($e[1]);
1153                    $file = basename($e[1]);
1154                    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";
1155            }
1156            print "</table>";
1157            print "<p>".GifIcon(up)." Back to <a href=$GLOBALS[PHP_SELF]>front page</a>.</p>";
1158    }
1159    
1160    //////////////////////////////////////////////////////////////////
1161    
1162  // MAIN PROGRAM  // MAIN PROGRAM
1163  // ============  // ============
1164  // query parameters: capital letters  // query parameters: capital letters
# Line 1146  function safe_rename($from,$to) { Line 1205  function safe_rename($from,$to) {
1205          // i.e. below $gblFsRoot.          // i.e. below $gblFsRoot.
1206    
1207          $relScriptDir = dirname($SCRIPT_NAME) ;                  $relScriptDir = dirname($SCRIPT_NAME) ;        
1208          // i.e. /siteman          // i.e. /docman
1209    
1210          $fsScriptDir  = dirname($SCRIPT_FILENAME) ;              $fsScriptDir  = dirname($SCRIPT_FILENAME) ;    
1211          // i.e. /home/httpd/html/siteman          // i.e. /home/httpd/html/docman
1212    
1213          $gblFsRoot = substr($fsScriptDir,0,          // start on server root
1214            strlen($fsScriptDir)-strlen($relScriptDir)) ;  //      $gblFsRoot = substr($fsScriptDir,0, strlen($fsScriptDir)-strlen($relScriptDir)) ;
1215            // or on script root
1216            $gblFsRoot = $fsScriptDir;
1217          // i.e. /home/httpd/html          // i.e. /home/httpd/html
1218    
1219          $fsDir = $gblFsRoot . $relDir ; // current directory          $fsDir = $gblFsRoot . $relDir ; // current directory
1220          if ( !is_dir($fsDir) ) Error("Dir not found",$relDir) ;          if ( !is_dir($fsDir) ) Error("Dir not found",$relDir) ;
1221            
1222            $FN=stripSlashes($FN);
1223    
1224          switch ($POSTACTION) {          switch ($POSTACTION) {
1225          case "UPLOAD" :          case "UPLOAD" :
1226                  if (!is_writeable($fsDir)) Error("Write denied",$relDir) ;                  if (!is_writeable($fsDir)) Error("Write denied",$relDir) ;
# Line 1193  function safe_rename($from,$to) { Line 1256  function safe_rename($from,$to) {
1256                  if (isset($FILENAME)) {                  if (isset($FILENAME)) {
1257                          Unlock($target);                          Unlock($target);
1258                  }                  }
1259                    ChangeLog($target,"updated");
1260                  break ;                  break ;
1261    
1262          case "SAVE" :          case "SAVE" :
1263                  $path = $gblFsRoot . escapeshellcmd($RELPATH) ;                  $path = $gblFsRoot . $RELPATH ;
1264                    $path=stripSlashes($path);
1265                  $writable = is_writeable($path) ;                  $writable = is_writeable($path) ;
1266                  $legaldir = is_writeable(dirname($path)) ;                  $legaldir = is_writeable(dirname($path)) ;
1267                  $exists   = (file_exists($path)) ? 1 : 0 ;                  $exists   = (file_exists($path)) ? 1 : 0 ;
# Line 1204  function safe_rename($from,$to) { Line 1269  function safe_rename($from,$to) {
1269                  if (!($writable || (!$exists && $legaldir)))                  if (!($writable || (!$exists && $legaldir)))
1270                          Error("Write denied",$RELPATH) ;                          Error("Write denied",$RELPATH) ;
1271                  $fh = fopen($path, "w") ;                  $fh = fopen($path, "w") ;
1272                    $FILEDATA=stripSlashes($FILEDATA);
1273                  fwrite($fh,$FILEDATA) ;                  fwrite($fh,$FILEDATA) ;
1274                  fclose($fh) ;                  fclose($fh) ;
1275                  clearstatcache() ;                  clearstatcache() ;
1276                  Logit($path,"saved changes");                  Logit($path,"saved changes");
1277                    ChangeLog($path,"saved changes");
1278                  break ;                  break ;
1279    
1280          case "CREATE" :          case "CREATE" :
# Line 1238  function safe_rename($from,$to) { Line 1305  function safe_rename($from,$to) {
1305                          }                          }
1306                          $tstr = "$PHP_SELF?A=E&D=".urlencode($relDir)."&F=".urlencode($FN) ;                          $tstr = "$PHP_SELF?A=E&D=".urlencode($relDir)."&F=".urlencode($FN) ;
1307                          header("Location: " . $tstr) ;                          header("Location: " . $tstr) ;
1308                            ChangeLog($target,"created");
1309                          exit ;                          exit ;
1310                  }                  }
1311                  break ;                  break ;
# Line 1270  function safe_rename($from,$to) { Line 1338  function safe_rename($from,$to) {
1338                          }                          }
1339                  }                  }
1340                  else {  // delete directory                  else {  // delete directory
1341                    if ( ! @rmdir($fsDir) ) {                    if ( ! @rrmdir($fsDir) ) {
1342                      Error("Rmdir failed", $tstr . $fsDir) ;                      Error("Rmdir failed", $tstr . $fsDir) ;
1343                    }                    }
1344                    else {                    else {
# Line 1335  function safe_rename($from,$to) { Line 1403  function safe_rename($from,$to) {
1403          // $A=Ci : checkin file $D/$F          // $A=Ci : checkin file $D/$F
1404          // $A=V : view file (do nothing except log)          // $A=V : view file (do nothing except log)
1405          // default : display directory $D          // default : display directory $D
1406            
1407          switch ($A) {          switch ($A) {
1408          case "U" :          case "U" :
1409                  // upload to $relDir                  // upload to $relDir
# Line 1348  function safe_rename($from,$to) { Line 1416  function safe_rename($from,$to) {
1416                  EndHTML() ;                  EndHTML() ;
1417                  exit ;                  exit ;
1418          case "E" :          case "E" :
1419                    $F=stripSlashes($F);
1420                  // detail of $relDir/$F                  // detail of $relDir/$F
1421                  if (is_file("$gblFsRoot/$relDir/$F")) DetailPage($gblFsRoot, $relDir, $F) ;                  if (is_file("$gblFsRoot/$relDir/$F")) DetailPage($gblFsRoot, $relDir, $F) ;
1422                  exit ;                  exit ;
1423          case "C" :          case "C" :
1424                    $F=stripSlashes($F);
1425                  // listing of $relDir/$F                  // listing of $relDir/$F
1426                  DisplayCode($gblFsRoot, $relDir, $F) ;                  DisplayCode($gblFsRoot, $relDir, $F) ;
1427                  exit ;                  exit ;
# Line 1362  function safe_rename($from,$to) { Line 1432  function safe_rename($from,$to) {
1432                  Header("Location: ".urlpath("$relDir/$F"));                  Header("Location: ".urlpath("$relDir/$F"));
1433                  exit;                  exit;
1434          case "Ci" :          case "Ci" :
1435                    $F=stripSlashes($F);
1436                  // upload && update to $relDir                  // upload && update to $relDir
1437                  if (!is_writeable($gblFsRoot . $relDir))                  if (!is_writeable($gblFsRoot . $relDir))
1438                          Error("Write access denied",$relDir) ;                          Error("Write access denied",$relDir) ;
# Line 1377  function safe_rename($from,$to) { Line 1448  function safe_rename($from,$to) {
1448                  header("Content-Disposition: attachment; filename=$F" );                  header("Content-Disposition: attachment; filename=$F" );
1449                  Header("Location: ".urlpath("$relDir/$F"));                  Header("Location: ".urlpath("$relDir/$F"));
1450                  exit;                  exit;
1451            case "Ch" :
1452                    StartHTML("(File changes)","All changes chronologicaly...");
1453                    DisplayChangeLog(0);    // all
1454                    EndHTML() ;
1455                    exit;
1456            case "Ch1" :
1457                    StartHTML("(File changes)","Changes to files in last day...");
1458                    DisplayChangeLog(1);
1459                    EndHTML() ;
1460                    exit;
1461          }          }
1462    
1463          // default: display directory $relDir          // default: display directory $relDir

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.24

  ViewVC Help
Powered by ViewVC 1.1.26