phpaddict

Project/Directory Info

Jul 16th, 2014
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 17.79 KB | None | 0 0
  1. <?php
  2.  
  3. /*
  4. * This script will:
  5. *   * list every file from its path recursively
  6. *   * display the full filepath
  7. *   * display the filesize
  8. *   * display total filesize
  9. *   * display number of files
  10. *   * can display file with zero filesize only
  11. *
  12. * Icons from: http://www.famfamfam.com/lab/icons/silk/ and google search
  13. */
  14.  
  15. /*
  16.  *
  17.  * SETTINGS
  18.  *
  19.  */
  20. $current_dir = __DIR__;
  21. $current_file = basename(__FILE__);
  22. $show_only_zero_bytes_files = FALSE;
  23. $filemtime = filemtime(__FILE__);
  24.  
  25. /*
  26.  *
  27.  * STATIC FILES
  28.  *
  29.  */
  30. if (isset($_GET['file']))
  31. {
  32.     $file = (string)$_GET['file'];
  33.  
  34.     header('Cache-Control: must-revalidate');
  35.     header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 2592000) . ' GMT'); // 2592000 = 1 month
  36.     header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $filemtime) . ' GMT');
  37.  
  38.     $headers = apache_request_headers2();
  39.  
  40.     $modified_since_exists = FALSE;
  41.     foreach ($headers as $key => $val) // check for valid if-modified-since header
  42.     {
  43.         if (strtolower($key) == 'if-modified-since')
  44.         {
  45.             $modified_since_exists = $key;
  46.         }
  47.     }
  48.  
  49.     switch ($file)
  50.     {
  51.         case 'compress.png':
  52.             $filetype = 'png';
  53.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKQSURBVDjLbZNNaJxVFIafe7/5KTPzpUloNK0tIsowCtbiQgRRQReudCMVqYrdiLgQ01UrWUgXXZQumoU2myyKii66dOFCEUo3IiL+VRMFHactYpsMmsy0mbnnx8X8tEn7wuHAudyH97zcG9wdgKWl9zNgl7vvrVar51T1PndHVQHDzBCRFGNhqd1ePXb06PF1gALAhbONF+7PanPtymtP9G2iVK3WmJjYibtjZuNupsWVlYtviaRTwABw4WzjEPDRVGMy/vt3QLpCu73G2toqZoKZE2Mkz3PyfBKxgKplDFUA3rz7wL5Y2lnigdrHiDhuRlaoYJslrv3cWb7cfehka/3BxUY93+EGqolbAU/tqz+K2V/MzFQAHZYQ4146v55v/NPd81UxL6uKQgyY2RgQB025fOUPCC9COAjhJVqt38BlcKpKb/M65kbq9YfB3nQAGOVSxqXWCXDBSZTLBWAAMDOKsYibYURE0naAMjOzC5gc2Pc0vDwApJTQGx3UDJHNLQ7GK1xq/Q7hFQivQjzMn82LY4CqhiwWw8BBQNW2OxBK5Yxm812whNNnx5YVtBBkoxICkLqYbcugt9Fh9+xj4/RHtblxA7EMVZsOYZC+qqMqWwBHfvr829OjgRNIWkIsIhb54cr+r7Ms+3Bqanr0GjHzm4AnDy8vAAujwfz83NTs7O7z3W7nYTOjH3uPp7RuWZYNHdhtDrZIVda/8+fPWa06nfWvfjJxdfFTEd2zvPzLZyn1CCHSrx954/UPWi8DC2H0G2/VM8ebzeceqd375fer/9WvnTgDVET0oLsWzJDmPe/lzx64K//ix43WHQH1t1fmgLkC/TNPy8lFM4vuWhGx6G72TXX+UAqVd4DT/wMfm3vSJoP5ygAAAABJRU5ErkJggg==');
  54.             break;
  55.  
  56.         case 'database.png':
  57.             $filetype = 'png';
  58.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEYSURBVBgZBcHPio5hGAfg6/2+R980k6wmJgsJ5U/ZOAqbSc2GnXOwUg7BESgLUeIQ1GSjLFnMwsKGGg1qxJRmPM97/1zXFAAAAEADdlfZzr26miup2svnelq7d2aYgt3rebl585wN6+K3I1/9fJe7O/uIePP2SypJkiRJ0vMhr55FLCA3zgIAOK9uQ4MS361ZOSX+OrTvkgINSjS/HIvhjxNNFGgQsbSmabohKDNoUGLohsls6BaiQIMSs2FYmnXdUsygQYmumy3Nhi6igwalDEOJEjPKP7CA2aFNK8Bkyy3fdNCg7r9/fW3jgpVJbDmy5+PB2IYp4MXFelQ7izPrhkPHB+P5/PjhD5gCgCenx+VR/dODEwD+A3T7nqbxwf1HAAAAAElFTkSuQmCC');
  59.             break;
  60.  
  61.         case 'film.png':
  62.             $filetype = 'png';
  63.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIfSURBVDjLpZNPaBNBGMXfbrubzBqbg4kL0lJLgiVKE/AP6Kl6UUFQNAeDIAjVS08aELx59GQPAREV/4BeiqcqROpRD4pUNCJSS21OgloISWMEZ/aPb6ARdNeTCz92mO+9N9/w7RphGOJ/nsH+olqtvg+CYJR8q9VquThxuVz+oJTKeZ63Uq/XC38E0Jj3ff8+OVupVGLbolkzQw5HOqAxQU4wXWWnZrykmYD0QsgAOJe9hpEUcPr8i0GaJ8n2vs/sL2h8R66TpVfWTdETHWE6GRGKjGiiKNLii5BSLpN7pBHpgMYhMkm8tPUWz3sL2D1wFaY/jvnWcTTaE5DyjMfTT5J0XIAiTRYn3ASwZ1MKbTmN7z+KaHUOYqmb1fcPiNa4kQBuyvWAHYfcHGzDgYcx9NKrwJYHCAyF21JiPWBnXMAQOea6bmn+4ueYGZi8gtymNVobF7BG5prNpjd+eW6X4BSUD0gOdCpzA8MpA/v2v15kl4+pK0emwHSbjJGBlz+vYM1fQeDrYOBTdzOGvDf6EFNr+LYjHbBgsaCLxr+moNQjU2vYhRXpgIUOmSWWnsJRfjlOZhrexgtYDZ/gWbetNRbNs6QT10GJglNk64HMaGgbAkoMo5fiFNy7CKDQUGqE5r38YktxAfSqW7Zt33l66WtkAkACjuNsaLVaDxlw5HdJ/86aYrG4WCgUZD6fX+jv/U0ymfxoWVZomuZyf+8XqfGP49CCrBUAAAAASUVORK5CYII=');
  64.             break;
  65.  
  66.         case 'html.png':
  67.             $filetype = 'png';
  68.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHUSURBVDjLxZM7a1RhEIafc3J2z6qJkIuCKChItBNSBQ0iIlZiK4gWItj6HwRbC7FRf4CVnSCIkH9gJVjYiCDximCyZ7/zfXOz2A0I2qVwmmFg3rm870wVEezFavZoey7Q3Hv+/Z87qDsiTlZFBJIGKStZlFSCTpyUlAZgfXXfH9BAPTCberVANBB3RAJRR8wp6jzd/DotALA9UcyZgZxis2QNijpZjSJBVqeIszTfkMY65cAjuHxmgSzGlbUFrp1d5ObGErcuLLNxep5hU3H93AqjYcXti4cZZ2OSDU9CnVURddqmIovTDmoev/5GVcGDF585tjzg1JGWo0tDDgxrThxq6XojieOd0nRZ6dVpBxU3zi/T1BVdViKCcTbcYX11ngB6cca9MSlGlprojHqcglycVJyHL79Q1Jn0TgBdb1gEbz9OeL81IYsRAakYvQSeC/WvVOiLE8GsM4xnvsuGe/Do1RY/dpRenIP753hyZxURJ3JQXbr/Lq6uLfLpZ6aIk9XJssv8VK5dNcQcmcl7fKVl89kHmu0dJRVjYTRHGVSMpELaQLVCtEY8EAvMHHUwn067+0LVybtvok9KSODZiaKEOJENihPm01gD3P+62Oq/f+Nv2d9y2D8jLUEAAAAASUVORK5CYII=');
  69.             break;
  70.  
  71.         case 'image.png':
  72.             $filetype = 'png';
  73.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGWSURBVBgZpcE/a1NhGMbh3/OeN56cKq2Dp6AoCOKmk4uCn8DNycEOIojilr2TaBfRzVnESQR3Bz+FFDoWA2IjtkRqmpyc97k9qYl/IQV7XSaJw4g0VlZfP0m13dwepPbuiH85fyhyWCx4/ubxjU6kkdxWHt69VC6XpZlFBAhwJgwJJHAmRKorbj94ewvoRBrbuykvT5R2/+lLTp05Tp45STmEJYJBMAjByILxYeM9jzr3GCczGpHGYAQhRM6fO8uFy1fJQoaUwCKYEcwwC4QQaGUBd36KTDmQ523axTGQmEcIEBORKQfG1ZDxcA/MkBxXwj1ggCQyS9TVAMmZiUxJ8Ln/kS+9PmOvcSW+jrao0mmMH5bzHfa+9UGBmciUBJ+2Fmh1h+yTQCXSkJkdCrpd8btIwwEJQnaEkOXMk7XaiF8CUxL/JdKQOwb0Ntc5SG9zHXQNd/ZFGsaEeLa2ChjzXQcqZiKNxSL0vR4unVwwMENMCATib0ZdV+QtE41I42geXt1Ze3dlMNZFdw6Ut6CIvKBhkjiM79Pyq1YUmtkKAAAAAElFTkSuQmCC');
  74.             break;
  75.  
  76.         case 'page_white.png':
  77.             $filetype = 'png';
  78.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAC4SURBVCjPdZFbDsIgEEWnrsMm7oGGfZrohxvU+Iq1TyjU60Bf1pac4Yc5YS4ZAtGWBMk/drQBOVwJlZrWYkLhsB8UV9K0BUrPGy9cWbng2CtEEUmLGppPjRwpbixUKHBiZRS0p+ZGhvs4irNEvWD8heHpbsyDXznPhYFOyTjJc13olIqzZCHBouE0FRMUjA+s1gTjaRgVFpqRwC8mfoXPPEVPS7LbRaJL2y7bOifRCTEli3U7BMWgLzKlW/CuebZPAAAAAElFTkSuQmCC');
  79.             break;
  80.  
  81.         case 'page_white_acrobat.png':
  82.             $filetype = 'png';
  83.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHhSURBVDjLjZPLSxtRFIfVZRdWi0oFBf+BrhRx5dKVYKG4tLhRqlgXPmIVJQiC60JCCZYqFHQh7rrQlUK7aVUUfCBRG5RkJpNkkswrM5NEf73n6gxpHujAB/fOvefjnHM5VQCqCPa1MNoZnU/Qxqhx4woE7ZZlpXO53F0+n0c52Dl8Pt/nQkmhoJOCdUWBsvQJ2u4ODMOAwvapVAqSJHGJKIrw+/2uxAmuJgFdMDUVincSxvEBTNOEpmlIp9OIxWJckMlkoOs6AoHAg6RYYNs2kp4RqOvfuIACVFVFPB4vKYn3pFjAykDSOwVta52vqW6nlEQiwTMRBKGygIh9GEDCMwZH6EgoE+qHLMuVBdbfKwjv3yE6Ogjz/PQ/CZVDPSFRRYE4/RHy1y8wry8RGWGSqyC/nM1meX9IQpQV2JKIUH8vrEgYmeAFwuPDCHa9QehtD26HBhCZnYC8ucGzKSsIL8wgsjiH1PYPxL+vQvm5B/3sBMLyIm7GhhCe90BaWykV/Gp+VR9oqPVe9vfBTsruM1HtBKVPmFIUNusBrV3B4ev6bsbyXlPdkbr/u+StHUkxruBPY+0KY8f38oWX/byvNAdluHNLeOxDB+uyQQfPCWZ3NT69BYJWkjxjnB1o9Fv/ASQ5s+ABz8i2AAAAAElFTkSuQmCC');
  84.             break;
  85.  
  86.         case 'page.png':
  87.             $filetype = 'png';
  88.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAINSURBVBgZBcG/r55zGAfg6/4+z3va01NHlYgzEfE7MdCIGISFgS4Gk8ViYyM2Mdlsko4GSf8Do0FLRCIkghhYJA3aVBtEz3nP89wf11VJvPDepdd390+8Nso5nESBQoq0pfvXm9fzWf19453LF85vASqJlz748vInb517dIw6EyYBIIG49u+xi9/c9MdvR//99MPPZ7+4cP4IZhhTPbwzT2d+vGoaVRRp1rRliVvHq+cfvM3TD82+7mun0o/ceO7NT+/4/KOXjwZU1ekk0840bAZzMQ2mooqh0A72d5x/6sB9D5zYnff3PoYBoWBgFKPKqDKqjCpjKr//dcu9p489dra88cydps30KswACfNEKanSaxhlntjJ8Mv12Paie+vZ+0+oeSwwQ0Iw1xAR1CiFNJkGO4wu3ZMY1AAzBI0qSgmCNJsJUEOtJSMaCTBDLyQ0CknAGOgyTyFFiLI2awMzdEcSQgSAAKVUmAeNkxvWJWCGtVlDmgYQ0GFtgg4pNtOwbBcwQy/Rife/2yrRRVI0qYCEBly8Z+P4qMEMy7JaVw72N568e+iwhrXoECQkfH91kY7jwwXMsBx1L93ZruqrK6uuiAIdSnTIKKPLPFcvay8ww/Hh+ufeznTXu49v95IMoQG3784gYXdTqvRmqn/Wpa/ADFX58MW3L71SVU9ETgEIQQQIOOzub+fhIvwPRDgeVjWDahIAAAAASUVORK5CYII=');
  89.             break;
  90.  
  91.         case 'page_white_flash.png':
  92.             $filetype = 'png';
  93.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHYSURBVDjLjZPLSxtRFMa1f0UXCl0VN66igg80kQZtsLiUWhe14MKFIFHbIEF8BNFFKYVkkT9GKFJooXTToq2gLkQT82oyjzuvO8nXe65mmIkRHfg2c+/3O+d8l9MBoIMkvi6hkNDAA3om9MTz+QAhy7JqnPO667poJ3GOdDr92Q/xAwbIrOs6GGOeFEVBtVpFoVCQkHw+j0wm40Ga5k4C0AXTNGHbNsxv32Hu7YNtp1Cr1VAsFiXAMAxQkWw2ewNpBZDZPjiA+XYebioJ9nIKqqqiVCrdGUlm0gpwzs5hzrwGX1uGMTMLtvrBG6VcLstOcrncPQDOYW3tgCffw0isg4uqnP6J8AhCnVAelUqlPYD/PYE59wZ67BXsL4fg/6ryYhNC82uaJkFtAdbHT+CJFbgbCagjYbDNlDev4zgyH4KQ7gA2n/fMUWWeiAtzBMrgWABAXciAhaibAKAYnXyaGx3/5cSXoIajsH/8hHP8B87llTSSqAMSmQMAfSL2VYtET5WRCLcW3oHt7Aaq+s1+eQAt/EJXh8MNe2kRSmwa/LoQeOsmpFUeQB0ag9I/jIve0G/n6Lhx3x60Ud3L4DbIPhEQo4PHmMVdTW6vD9BNkEesc1O0+t3/AXamvvzW7S+UAAAAAElFTkSuQmCC');
  94.             break;
  95.  
  96.         case 'page_white_php.png':
  97.             $filetype = 'png';
  98.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGsSURBVDjLjZNLSwJRFICtFv2AgggS2vQLDFvVpn0Pi4iItm1KItvWJqW1pYsRemyyNILARbZpm0WtrJ0kbmbUlHmr4+t0z60Z7oSSAx935txzvrlPBwA4EPKMEVwE9z+ME/qtOkbgqtVqUqPRaDWbTegE6YdQKBRkJazAjcWapoGu6xayLIMoilAoFKhEEAQIh8OWxCzuQwEmVKtVMAyDtoiqqiBJEhSLRSqoVCqAP+E47keCAvfU5sDQ8MRs/OYNtr1x2PXdwuJShLLljcFlNAW5HA9khLYp0TUhSYMLHm7PLEDS7zyw3ybRqyfg+TyBtwl2sDP1nKWFiUSazFex3tk45sXjL1Aul20CGTs+syVY37igBbwg03eMsfH9gwSsrZ+Doig2QZsdNiZmMkVrKmwc18azHKELyQrOMEHTDJp8HXu1hostG8dY8PiRngdWMEq467ZwbDxwlIR8XrQLcBvn5k9Gpmd8fn/gHlZWT20C/D4k8eTDB3yVFKjX6xSbgD1If8G970Q3QbvbPehAyxL8SibJEdaxo5dikqvS28sInCjp4Tqb4NV3fgPirZ4pD4KS4wAAAABJRU5ErkJggg==');
  99.             break;
  100.  
  101.         case 'css.png':
  102.             $filetype = 'png';
  103.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGeSURBVDjLxVNNS0JRED3qA0MRoqCFouBGN9Yia9HGRa3b9x/6M62jf9CuTS0EV0arXASG0gcUYWIgmvi6792P7sz1WUI7Fw0Mc70z59wz88aYMQbLWBxL2tIEXrN5+mcPWkvrBsZQVNYDSKmglLTZ0J4lwjCER8XZ7OYcSDMxRs/cEdCZSKKoNeUU7u/rjoBMiE8GuKQrcCA1A0XuFK2sZKwC3xE4Zo1UahX5/Dam0yH6/Q4KhV17H+Lu7gKVyiESCQ/dbgPD4QvfSykQlzKcMxP4+fnGJr4seAdPT01MJh8oFve4uNOp20fWQBilQqvAEtBQqE+6IBuPe3h8bML3hyiX95FOr6HXayOT2UCpdIDR6I1r6VF6KK61z5N1ROAkvdBuX+H6+oznksttodE4wevrLbdC8h1GwCMZJF+pgIdSrR6xtCCYWLnrnBuP31GrHfN5MHhgcDRUj3pzbAFarfOFSUf++4tEA3dRwhNCsKRkMv2r+Oe7R7+jvbArNotu/6wC3/Z7yX3TdhkjbDS8eUTi5EoGuLhosX//N34Dm6aVPfzbYjIAAAAASUVORK5CYII=');
  104.             break;
  105.  
  106.         case 'page_white_office.png':
  107.             $filetype = 'png';
  108.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKdSURBVDjLjZP9S1NRGMdH9GckFFT6Q5ZhWVGZEGhFSFmaoiCB72VJxYwowSAhKUqY0gZplOR+MQqCwtQSC19wXcXFfjF1zXa3u817d+927t2Lfjv3xF6Eoi58fjrn+dzn+XIeAwCDDv22UHIpef9gK2VTsi5NkKtpmhSLxdbi8Tj+BD2HyWTqSpcYbGdLnbMFeTFX+aF1ofkIxKYs+K8fhRLwIRwOIxgMQhRFeL1eJuF5Ht3d3UmJYTJzO5bqjk+bKvONisMGiRuH0n4YwR8LUFUViqJAkiQIgsAEhBCEQiGYzebfkm/HsrBy/1ydPp9+IRKJgAych+xeRscbB1oH7ajumUSblaMjRDeMxDLxlGdj4VZ+WUIQi6iIDJZC8brQ/HwO3KIfjmUvLlmmsLjsZp243e6UQLqYhaU7Jw8mBDqipREabbP91TyUsMrCu/bsKwT/KssjEAikBL7GvevEeCBOHhbFyJNiyL0tUEY6ockSjNZ5GF/acLWfQ1PvHERJZpnIspwSKN8tm93jhZmXq3eUaSEX4lGCqOpjF0JklYYmg6gifNISwqrCQtRJCjThcY06tQ2e8WLinSiBMFUFYaISGi3sG6uBebQKlk9V6BktxQ3rCRayPlJK4DTXyJ+zYe6ob0tksMo1IEo7eTJ6AW+5e6CPCxP292i2FLLiDQKy2Fcf+JiNm42nGxKCsL0YROFhGi6BdeY2gqEARmYHUPuggIqjjKRgZaar2vthN770V9idti74HI9AJneByDz6xzrR8qIIrU/P4IrpFGrvFrFudJIC7nX7Ts/QfoF/lwNhKAf+4T0QpytoBgr7k8fvBu/7CRfvREDypz+kNSZIW6Z9NKCwfvC3ZUovpncVtr1pggxd8h/rnEBf/Yxfiwq9OE8N8XAAAAAASUVORK5CYII=');
  109.             break;
  110.  
  111.         case 'script.png':
  112.             $filetype = 'png';
  113.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ+SURBVBgZBcExbFRlAADg7//fu7teC3elQEoMgeDkYDQ6oMQQTYyGxMHZuDA6Ypw0cWI20cHJUdl0cJLIiomR6OACGhUCpqGWtlzbu/b97/3v9/tCKQVc/e7RRXz+7OrSpUXbW7S9tu8ddv0M+3iCjF1s42v8WAP0XffKi2eOXfro9dMAYJ766SL1092jfDa17DfZgycHfvh7/hau1QB9161PhgE8epoNQlAHqprRIDo3iqoYDSpeOjv2zHRl7atfNj6LALltJys1Xc9+CmYtTxtmR8yO2D7kv4MMPr7x0KULK54/NThdA+S2XTs+jOYN86MsxqBGVRErKkEV6BHynp//2fXbw9lGDZBTWp+OK7PDzqIpYiyqSMxBFakUVYVS2dxrfHHrrz1crQG6lM6vTwZmR0UHhSoHsSBTKeoS9YU8yLrUXfj+w9d2IkBOzfkz05F5KkKkCkFERACEQil0TSOnJkMNV67fHNdVHI4GUcpZVFAUZAEExEibs4P5osMeROiadHoUiIEeCgFREAoRBOMB2weNrkmbNz+9UiBCTs1yrVdHqhgIkRL0EOj7QGG5jrZ2D+XUbADEy9dunOpSun7xuXMe7xUPNrOd/WyeyKUIoRgOGS8xWWZ7b6FLaROgzim9iXd+vXvf7mHtoCnaXDRtkLpel3t9KdamUx+8fcbj7YWc0hZAndv25XffeGH8yfuvAoBcaHOROhS+vLlhecD+wUJu222AOrft/cdPZr65ddfqsbHVyZLVlZHpysjx5aHRMBrV0XuX141qtnb25bb9F6Duu+7b23funb195955nMRJnMAJTJeGg8HS0sBkZWx1suz3Px79iZ8A/gd7ijssEaZF9QAAAABJRU5ErkJggg==');
  114.             break;
  115.  
  116.         case 'xml.png':
  117.             $filetype = 'png';
  118.             $file_content = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABV0lEQVQ4y51TwU7CQBB9u0vAeOuFcPDANxCDN9Cf4TP8BxM4YPgYy82DfoQXpBdKKN1uOtvnQdqUqii+ZDKzsztvJjM7iiSUUgBwBaALoIXTiAC8kSwAACTLi0GWZds8z72I8DvJsozT6fQBQB+AJnlEMMzz3CdJwv1+X8l2u+Vms+F6vaaIcLVacTabVST10oYiQmstnXO01tJay91uxziOGUURRYRpmjJJEs7n8wcAfdUgePbeV46iKEASIgLnHIIgOGpGq9W6+dIwrXXZVGit4b2HMQbtdhtxHKMoCogIut3uJ0mToAwubWPM0bkkrHxz4B7AHYBbnIHeeIyXMFzoMnhymEZdN311+z0MEQADfSrzo1KYkJVu4vJA8OXxOdD10n7K9BvBE85EmSQFXv8/hdEIL8vlQtW28do5FxpjLpp//BsU3vu00+mMVWOde38ILiEAog9OZvI5ZWVm1AAAAABJRU5ErkJggg==');
  119.             break;
  120.  
  121.         default:
  122.             $filetype = 'txt';
  123.             $file_content = 'Nothing to see here!';
  124.             break;
  125.     }
  126.  
  127.     if ($filetype == 'png') {
  128.         header('Content-Type: image/png');
  129.     }
  130.     elseif ($filetype == 'txt') {
  131.         header('Content-Type: text/plain');
  132.     }
  133.  
  134.     if ($modified_since_exists !== FALSE && (strtotime($headers[$modified_since_exists]) == $filemtime))
  135.     {
  136.         header('HTTP/1.1 304 Not Modified');
  137.         header('Connection: close');
  138.     }
  139.     else {
  140.         header('HTTP/1.1 200 OK');
  141.         echo $file_content;
  142.     }
  143.  
  144.     exit;
  145. }
  146.  
  147. /*
  148.  *
  149.  * FUNCTIONS
  150.  *
  151.  */
  152.  function apache_request_headers2()
  153. {
  154.     static $arh = array();
  155.  
  156.     if (!$arh)
  157.     {
  158.         $rx_http = '/\AHTTP_/';
  159.         foreach ($_SERVER as $key => $val)
  160.         {
  161.             if(preg_match($rx_http, $key))
  162.             {
  163.                 $arh_key = preg_replace($rx_http, '', $key);
  164.                 $rx_matches = array();
  165.  
  166.                 // do some nasty string manipulations to restore the original letter case
  167.                 // this should work in most cases
  168.                 $rx_matches = explode('_', $arh_key);
  169.                 if( count($rx_matches) > 0 and strlen($arh_key) > 2 )
  170.                 {
  171.                     foreach($rx_matches as $ak_key => $ak_val)
  172.                     {
  173.                         $rx_matches[$ak_key] = ucfirst($ak_val);
  174.                     }
  175.  
  176.                     $arh_key = implode('-', $rx_matches);
  177.                 }
  178.  
  179.                 $arh[$arh_key] = $val;
  180.             }
  181.         }
  182.     }
  183.  
  184.     return $arh;
  185. }
  186.  
  187. function get_directory_recursively($dir) // from http://www.php.net/manual/en/function.scandir.php#107117
  188. {
  189.     if (!isset($files))
  190.     {
  191.         $files = array();
  192.     }
  193.  
  194.     if (is_dir($dir))
  195.     {
  196.         $scandir = @scandir($dir);
  197.  
  198.         foreach ($scandir as $filename)
  199.         {
  200.             if ($filename === '.' || $filename === '..') continue;
  201.  
  202.             if (is_file($dir . '/' . $filename))
  203.             {
  204.                 $files[] = $dir . '/' . $filename;
  205.                 continue;
  206.             }
  207.  
  208.             foreach (get_directory_recursively($dir . '/' . $filename) as $filename)
  209.             {
  210.                 $files[] = $filename;
  211.             }
  212.         }
  213.     }
  214.  
  215.     return $files;
  216. }
  217.  
  218. function human_readable_filesize($size)
  219. {
  220.     $mod = 1024;
  221.     $units = explode(' ', 'B KB MB GB TB PB');
  222.  
  223.     for ($i = 0; $size > $mod; $i++) {
  224.         $size /= $mod;
  225.     }
  226.  
  227.     return round($size, 2) . ' ' . $units[$i];
  228. }
  229.  
  230. function get_extension($filepath)
  231. {
  232.     return pathinfo($filepath, PATHINFO_EXTENSION);;
  233. }
  234.  
  235. function get_icon($filepath)
  236. {
  237.     switch (get_extension($filepath))
  238.     {
  239.         case 'zip':
  240.         case 'rar':
  241.             $icon = 'compress.png';
  242.             break;
  243.         case 'sql':
  244.             $icon = 'database.png';
  245.             break;
  246.         case 'html':
  247.         case 'htm':
  248.             $icon = 'html.png';
  249.             break;
  250.         case 'flv':
  251.         case 'mpg':
  252.         case 'mpeg':
  253.         case 'mp4':
  254.         case 'avi':
  255.             $icon = 'film.png';
  256.             break;
  257.         case 'jpg':
  258.         case 'jpeg':
  259.         case 'gif':
  260.         case 'png':
  261.         case 'psd':
  262.         case 'ico':
  263.             $icon = 'image.png';
  264.             break;
  265.         case 'pdf':
  266.             $icon = 'page_white_acrobat.png';
  267.             break;
  268.         case 'txt':
  269.         case 'md':
  270.         case 'htaccess':
  271.             $icon = 'page.png';
  272.             break;
  273.         case 'swf':
  274.             $icon = 'page_white_flash.png';
  275.             break;
  276.         case 'php':
  277.             $icon = 'page_white_php.png';
  278.             break;
  279.         case 'css':
  280.             $icon = 'css.png';
  281.             break;
  282.         case 'csv':
  283.         case 'doc':
  284.         case 'xls':
  285.         case 'odt':
  286.             $icon = 'page_white_office.png';
  287.             break;
  288.         case 'js':
  289.             $icon = 'script.png';
  290.             break;
  291.         case 'xml':
  292.             $icon = 'xml.png';
  293.             break;
  294.         default:
  295.             $icon = 'page_white.png';
  296.             break;
  297.     }
  298.  
  299.     return $icon;
  300. }
  301.  
  302. /*
  303.  *
  304.  * APPLICATION
  305.  *
  306.  */
  307. $scan = get_directory_recursively($current_dir);
  308.  
  309. ?>
  310. <!DOCTYPE html>
  311. <html>
  312. <head>
  313.     <meta charset="utf-8">
  314.     <title>Project Info</title>
  315.     <style>
  316.     * {
  317.         margin: 0;
  318.     }
  319.    
  320.     body {
  321.         padding: 10px;
  322.     }
  323.    
  324.     h1 {
  325.         margin-bottom: 20px;
  326.         color: #2a6190;
  327.     }
  328.    
  329.     p {
  330.         margin-bottom: 10px;
  331.     }
  332.    
  333.     table {
  334.         border-spacing: 0;
  335.         border-collapse: collapse;
  336.     }
  337.    
  338.     thead td {
  339.         font-weight: bold;
  340.     }
  341.    
  342.     tbody tr:hover td {
  343.         background-color: #47aafe;
  344.         color: #fff;
  345.     }
  346.    
  347.     td {
  348.         border: 1px #ccc solid;
  349.         padding: 2px 5px;
  350.     }
  351.    
  352.     .number {
  353.         font-weight: bold;
  354.     }
  355.    
  356.     .filesize {
  357.         text-align: right;
  358.     }
  359.     </style>
  360. </head>
  361. <body>
  362.     <h1>Project Files</h1>
  363.    
  364.     <p>Directory Path: <b><?php echo $current_dir;?></b></p>
  365.    
  366.     <table>
  367.         <thead>
  368.             <tr>
  369.                 <td class="number">#</td>
  370.                 <td>File</td>
  371.                 <td class="filesize">Filesize</td>
  372.             </tr>
  373.         </thead>
  374.         <tbody>
  375.             <?php
  376.            
  377.             $total_filesize = 0;
  378.             $i = 1;
  379.             foreach ($scan as $file) {
  380.            
  381.                 $filesize = filesize($file);
  382.                
  383.                 if ($show_only_zero_bytes_files && $filesize !== 0) continue;
  384.                
  385.                 $total_filesize += $filesize;
  386.            
  387.             ?>
  388.                 <tr>
  389.                     <td class="number"><?php echo $i;?></td>
  390.                     <td><img src="<?php echo $current_file;?>?file=<?php echo get_icon($file);?>" width="16" height="16" /> <?php echo $file;?></td>
  391.                     <td class="filesize"><?php echo human_readable_filesize($filesize);?></td>
  392.                 </tr>
  393.             <?php
  394.            
  395.                 $i++;
  396.             }
  397.            
  398.             ?>
  399.            
  400.             <?php if ($total_filesize > 0) { ?>
  401.                 <tr>
  402.                     <td colspan="2"><b>Total filesize</b></td>
  403.                     <td class="filesize"><?php echo human_readable_filesize($total_filesize);?></td>
  404.                 </tr>
  405.             <?php } ?>
  406.         </tbody>
  407.     </table>
  408. </body>
  409. </html>
Add Comment
Please, Sign In to add comment