2 if (!$_SESSION['creds']['validated'] && !isset($_GET['f']))
5 require_once("squasher.class.php");
7 $squashweb = new squashweb();
9 $squashweb->update_history();
12 $basedir = "../uploads";
13 if (isset($_GET['path']) && $_GET['path']!=NULL && strlen($_GET['path'])!=1) {
14 $subf = $_GET['path'];
15 $path = $basedir . $subf;
21 $squashweb->set_root($basedir);
23 if (@$_GET['f'] || @$_GET['tools']=='hide' || @$_GET['tools']=='unhide' || @$_GET['tools']=='delete') {
31 //update folder rights if form is posted
32 if (@$_POST['edited_user'] > 0 && @$_POST['formtype'] == 'folderrights')
33 $squashweb->update_rights($_POST['edited_user'], $_POST['m'], $_SESSION['creds']['user_level']);
37 $squashweb->give_rights(2);
39 $squashweb->give_rights($_SESSION['creds']['user_id']);
43 $f_q = "SELECT * FROM file_hash WHERE md5_hash = '".mysql_escape_string($_GET['f'])."'";
44 $f_r = mysql_query($f_q);
45 $f_o = mysql_fetch_object($f_r);
48 @mysql_query("INSERT INTO log (hash,file,action,user_id,user_name,ip,date) VALUES ('".mysql_escape_string($_GET['f'])."','".mysql_escape_string($f_o->file)."','download','".mysql_escape_string($_SESSION['creds']['user_id'])."','".mysql_escape_string($_SESSION['creds']['user_name'])."','".mysql_escape_string($_SERVER['REMOTE_ADDR'])."',NOW())");
50 $_hpath_arr=explode("/", $f_o->file);
51 $file=array_pop($_hpath_arr); //Remove filename
52 $path=implode("/", $_hpath_arr);
53 $squashweb->read_single_file($path, $file);
54 #$squashweb->read_directory($path, false, true, false, false);
56 //parse folders for readable files
57 $squashweb->read_directory($path, true, true, $getdeepfiles, $populate);
60 //check if a file is requested
62 //get the config of requested file
63 $request = $squashweb->get_config($_GET['f']);
66 #header('Cache-control: private');
67 header('Content-Disposition: attachment; filename="'.$request[2].'"');
68 header("Content-Type: ".$request['mime']);
70 header('Content-Length: '.$request[3]);
73 $squashweb->print_files($request['path'], $request[2]);
75 } elseif (@$_GET['tools']=="hide" && @$_GET['h']) {
76 if ($_SESSION['creds']['user_level'] > 99) {
77 $request = $squashweb->get_config($_GET['h']);
78 $handle = fopen($request['path'].'/'.$request[2].'.hidden', 'x');
79 fwrite($handle, 'hidden by '.$_SESSION['creds']['user_name']);
81 $path=substr($request['path'], strlen($basedir));
82 header( 'Location: '.$_SERVER['PHP_SELF'].'?path='.$path) ;
84 } elseif (@$_GET['tools']=="unhide" && isset($_GET['h'])) {
85 if ($_SESSION['creds']['user_level'] > 99) {
86 $request = $squashweb->get_config($_GET['h']);
87 @unlink($request['path'].'/'.$request[2].'.hidden');
88 $path=substr($request['path'], strlen($basedir));
89 header( 'Location: '.$_SERVER['PHP_SELF'].'?path='.$path) ;
91 } elseif (@$_GET['tools']=="delete" && isset($_GET['h'])) {
92 if ($_SESSION['creds']['user_level'] > 99) {
93 if ($_GET['h'] == "multiple") {
94 $h_post = $_POST['h'];
95 foreach ($h_post as $h_key => $h) {
96 $request = $squashweb->get_config($h);
97 $squashweb->delete_file($h, $_SESSION['creds']);
101 $request = $squashweb->get_config($h);
102 $squashweb->delete_file($h, $_SESSION['creds']);
104 $path=substr($request['path'], strlen($basedir));
105 header( 'Location: '.$_SERVER['PHP_SELF'].'?path='.$path);
108 } elseif (@$_POST['tools']=="mkdir" && isset($_GET['path']) && isset($_POST['newname']) && $_SESSION['creds']['user_level'] > 99) {
109 $path = $_GET['path'];
110 $newname = $_POST['newname'];
111 $subs = explode('/', $path);
112 if (in_array('..', $subs))
113 die(); // Hard fails when trying to play above basedir
114 if ($squashweb->got_rights_array_admin($path) > 0) {
115 umask(002); // don't remove g+w
116 mkdir($basedir.'/'.$path.'/'.$newname);
118 header( 'Location: ?path='.$path.'/'.$newname) ;
120 } elseif (@$_POST['tools']=="rmdir" && isset($_GET['path']) && $_SESSION['creds']['user_level'] > 99) {
121 $path = $_GET['path'];
122 $subs = explode('/', $path);
123 if (in_array('..', $subs))
124 die(); // Hard fails when trying to play above basedir
125 if ($squashweb->got_rights_array_admin($path) > 0) {
126 rmdir($basedir.$path);
129 $path=implode("/", $subs);
130 header( 'Location: ?path='.$path) ;
132 } elseif (@$_GET['tools']=='access' && $_SESSION['creds']['user_level'] > 100) {
134 require_once(SQUASHER_SMARTY);
136 $smarty = new Smarty;
138 $smarty->assign('user_level', $_SESSION['creds']['user_level']);
139 $smarty->assign('user_name', $_SESSION['creds']['user_name']);
140 $smarty->assign('users', $squashweb->get_users($_SESSION['creds']['user_level']));
142 $smarty->assign('edited_user', @$_GET['user']);
144 $tree = $squashweb->show_rights_tree($path, 0, @$_GET['user']);
146 $smarty->assign('style', $tree['style']);
147 $smarty->assign('layout', $tree['layout']);
149 $smarty->assign('debug', @$_GET['debug']);
150 $smarty->assign('folderrights', $squashweb->folderrights());
151 $smarty->assign('userrights', $squashweb->userrights());
152 $smarty->display('admin.tpl');
154 } elseif (@$_GET['tools']=='users' && $_SESSION['creds']['user_level'] > 100) {
155 $type = @$_POST['type'];
157 $squashweb->update_users($_POST['u']);
158 if ($type=="disable")
159 $squashweb->disable_users($_POST['u']);
161 $squashweb->remove_users($_POST['u']);
163 $squashweb->insert_users($_POST['u'], $_SESSION['creds']['user_level']);
164 require_once(SQUASHER_SMARTY);
166 $smarty = new Smarty;
168 $smarty->assign('user_level', $_SESSION['creds']['user_level']);
169 $smarty->assign('user_name', $_SESSION['creds']['user_name']);
170 $smarty->assign('users', $squashweb->get_users($_SESSION['creds']['user_level']));
172 if ($_SESSION['creds']['user_level'] > 199) {
173 $smarty->assign('user_levels', array(155 => 'admin' , 55 => 'user' ) );
175 $smarty->assign('user_levels', array(55 => 'user' ) );
177 $smarty->assign('debug', @$_GET['debug']);
179 $smarty->display('udmin.tpl');
181 } elseif (@$_GET['tools']=='logs' && $_SESSION['creds']['user_level'] > 100) {
182 $logtype=@$_GET['logtype'];
185 require_once(SQUASHER_SMARTY);
187 $smarty = new Smarty;
189 $smarty->assign('user_level', $_SESSION['creds']['user_level']);
190 $smarty->assign('user_name', $_SESSION['creds']['user_name']);
191 $smarty->assign('logtype', $logtype);
192 $smarty->assign('logs', $squashweb->get_logs($logtype));
194 $smarty->assign('debug', @$_GET['debug']);
195 $smarty->display('logs.tpl');
200 require_once(SQUASHER_SMARTY);
202 $smarty = new Smarty;
212 * [6] -> CRC32 checksum
215 $configs_num = $squashweb->get_configs();
217 $configs_sorted = named_records_sort($configs_num, 'lastchange', true);
222 foreach ($configs_sorted as $key => $value) {
223 $configs[$key]['squashed'] = $value['squashed'];
224 $configs[$key]['version'] = $value[0];
225 //$configs[$key]['date'] = $value[1]; //removed because user local creation date is irrelevant
226 $configs[$key]['name'] = $value[2];
227 $configs[$key]['size'] = $value[3];
228 $configs[$key]['chunk_size'] = $value[4];
229 $configs[$key]['chunks'] = $value[5];
230 $configs[$key]['crc'] = $value[6];
231 $paths[substr($value['path'], strlen($basedir))]=array_pop(explode('/',$value['path']));
232 (strpos($value['mime'],'ideo')) ? $embedable=true : $embedable=false;
233 (@array_sum($value['stats']) == $value[5]) ? $finished=true : $finished=false;
235 $configs[$key]['embedable'] = $embedable;
236 $configs[$key]['finished'] = $finished;
237 $configs[$key]['mime'] = $value['mime'];
238 $configs[$key]['status'] = $value['status'];
239 $configs[$key]['hidden'] = $value['hidden'];
240 $configs[$key]['chunks_finished'] = @array_sum($value['stats']);
242 $configs[$key]['chunks_partial'] = $configs[$key]['chunks_finished'];
245 foreach($value['stats'] as $sk => $sv) {
247 $configs[$key]['chunks_partial'] = $configs[$key]['chunks_partial']+$sv;
248 if ($sv != '1.00') $continue=false;
252 $configs[$key]['date'] = date('d.m.y - H:i:s - T', $value['added']);
253 $configs[$key]['lastchange'] = date('d.m.y - H:i:s - T', $value['lastchange']);
258 $basepath['/'] = 'top';
260 foreach (explode('/', $subf) as $key => $value) {
262 $bpath .= '/'.$value;
263 $basepath[$bpath] = $value;
266 $smarty->assign('debug', @$_GET['debug']);
267 $smarty->assign('user_level', $_SESSION['creds']['user_level']);
268 $smarty->assign('user_name', $_SESSION['creds']['user_name']);
269 $smarty->assign('folderrights', $squashweb->folderrights());
271 $smarty->assign('squashed', $configs);
272 $smarty->assign('paths', $paths);
273 $smarty->assign('base', $basepath);
274 $smarty->assign('currentfolder', $subf);
275 $subs = $squashweb->subfolders();
278 $smarty->assign('subfolders', $subs);
280 //if(@$_GET[debug]) print_r($configs);
281 $smarty->display('index.tpl'); //Display normal template
284 // vim: syntax=php ts=4 sw=4 sts=4 sr noet