better-staridc-MNBT
1<?php
2/************************************************
3 * Amysql FTP - AMFTP 3.0
4 * amh.sh
5 * Update:2021-01-15
6 *
7 */
8
9class functions
10{
11 public $orderby_name = '';
12
13 // 外部参数取值
14 static function Gval($key)
15 {
16 Return isset($_POST[$key]) ? $_POST[$key] : (isset($_GET[$key]) ? $_GET[$key] : '');
17 }
18
19 // 取得文件大小
20 static function CountSize($size)
21 {
22 foreach (array('', 'K', 'M', 'G', 'T') as $val)
23 {
24 if($size < 1024)
25 Return round($size, 1) . ' ' . $val . 'B';
26 $size /= 1024;
27 }
28 }
29
30 // 排序
31 static function orderby($a, $b)
32 {
33 $k = $_GET['orderby'];
34 $s = ($_GET['order'] == 'asc') ? 1 : -1;
35
36 $a = strtolower($a[$k]);
37 $b = strtolower($b[$k]);
38 if ($a == $b)
39 return 0;
40 return ($a < $b) ? $s * -1 : $s * 1;
41 }
42
43 // 分析文件列表
44 static function Grawlistline($rawlistline)
45 {
46 if (preg_match("/([-dl])([rwxsStT-]{9})[ ]+([0-9]+)[ ]+([^ ]+)[ ]+(.+)[ ]+([0-9]+)[ ]+([a-zA-Z]+[ ]+[0-9]+)[ ]+([0-9:]+)[ ]+(.*)/", $rawlistline, $regs) == true)
47 {
48 $listline["scanrule"] = 'rule-1';
49 $listline["dirorfile"] = $regs[1];
50 $listline["dirfilename"] = $regs[9];
51 $listline["size"] = $regs[6];
52 $listline["owner"] = $regs[4];
53 $listline["group"] = $regs[5];
54 $listline["permissions"] = $regs[2];
55 $listline["mtime"] = "$regs[7] $regs[8]";
56 }
57 elseif (preg_match("/([-dl])([rwxsStT-]{9})[ ]+(.*)[ ]+([a-zA-Z0-9 ]+)[ ]+([0-9:]+)[ ]+(.*)/", $rawlistline, $regs) == true)
58 {
59 $listline["scanrule"] = 'rule-2';
60 $listline["dirorfile"] = $regs[1];
61 $listline["dirfilename"] = $regs[6];
62 $listline["size"] = $regs[3];
63 $listline["permissions"] = $regs[2];
64 $listline["mtime"] = "$regs[4] $regs[5]";
65 }
66 elseif (preg_match("/([0-9\\/-]+)[ ]+([0-9:AMP]+)[ ]+([0-9]*|<DIR>)[ ]+(.*)/", $rawlistline, $regs) == true)
67 {
68 $listline["scanrule"] = 'rule-3.1';
69 $listline["size"] = ($regs[3] == "<DIR>") ? '' : $regs[3];
70 $listline["dirfilename"] = $regs[4];
71 $listline["owner"] = '';
72 $listline["group"] = '';
73 $listline["permissions"] = '';
74 $listline["mtime"] = "$regs[1] $regs[2]";
75 $listline["dirorfile"] = ($listline["size"] != '') ? '-' : 'd';
76 }
77 elseif (preg_match("/([-]|[d])[ ]+(.{10})[ ]+([^ ]+)[ ]+([0-9]*)[ ]+([a-zA-Z]*[ ]+[0-9]*)[ ]+([0-9:]*)[ ]+(.*)/", $rawlistline, $regs) == true)
78 {
79 $listline["scanrule"] = 'rule-3.2';
80 $listline["dirorfile"] = $regs[1];
81 $listline["dirfilename"] = $regs[7];
82 $listline["size"] = $regs[4];
83 $listline["owner"] = $regs[3];
84 $listline["group"] = '';
85 $listline["permissions"] = $regs[2];
86 $listline["mtime"] = "$regs[5] $regs6";
87 }
88 elseif (preg_match("/([a-zA-Z0-9_-]+)[ ]+([0-9]+)[ ]+([0-9\\/-]+)[ ]+([0-9:]+)[ ]+([a-zA-Z0-9_ -\*]+)[ \\/]+([^\\/]+)/", $rawlistline, $regs) == true)
89 {
90 if ($regs[5] != "*STMF") $directory_or_file = 'd';
91 if ($regs[5] == "*STMF") $directory_or_file = '-';
92 $listline["scanrule"] = 'rule-3.3';
93 $listline["dirorfile"] = $directory_or_file;
94 $listline["dirfilename"] = $regs[6];
95 $listline["size"] = $regs[2];
96 $listline["owner"] = $regs[1];
97 $listline["group"] = '';
98 $listline["permissions"] = '';
99 $listline["mtime"] = "$regs[3] $regs[4]";
100 }
101 elseif (preg_match("/([-dl])([rwxsStT-]{9})[ ]+([0-9]+)[ ]+([a-zA-Z0-9]+)[ ]+([a-zA-Z0-9]+)[ ]+([0-9]+)[ ]+([a-zA-Z]+[ ]+[0-9]+)[ ]+([0-9:]+)[ ](.*)/", $rawlistline, $regs) == true)
102 {
103 $listline["scanrule"] = 'rule-3.4';
104 $listline["dirorfile"] = $regs[1];
105 $listline["dirfilename"] = $regs[9];
106 $listline["size"] = $regs[6];
107 $listline["owner"] = $regs[4];
108 $listline["group"] = $regs[5];
109 $listline["permissions"] = $regs[2];
110 $listline["mtime"] = "$regs[7] $regs[8]";
111 }
112 else
113 {
114 $listline["scanrule"] = 'rule-4';
115 $listline["dirorfile"] = 'u';
116 $listline["dirfilename"] = $rawlistline;
117 }
118
119 Return $listline;
120 }
121
122
123 // 取得图标
124 static function Gicon($filename, $dir)
125 {
126 if($dir == 'd' ) Return "folder.png";
127 $filename = explode('.', $filename);
128 $fileExtension = '.' . $filename[count($filename)-1];
129 switch($fileExtension)
130 {
131 case ".mp3":
132 case ".wav":
133 $fileImage = "mp3.png";
134 break;
135
136 case ".jpg":
137 case ".jpeg":
138 case ".gif":
139 case ".png":
140 case ".bmp":
141 $fileImage = "jpg.png";
142 break;
143
144 case ".zip":
145 case ".rar":
146 case ".tar":
147 case ".gz":
148 $fileImage = "zip.png";
149 break;
150
151 case ".avi":
152 case ".mpg":
153 case ".mpeg":
154 case ".wmv":
155 case ".divx":
156 case ".mov":
157 case ".swf":
158 $fileImage = "avi.png";
159 break;
160
161 case ".exe":
162 case ".bat":
163 $fileImage = "exe.png";
164 break;
165
166 case ".pdf":
167 $fileImage = "pdf.png";
168 break;
169
170 case ".htm":
171 case ".html":
172 $fileImage = "html.png";
173 break;
174
175 case ".txt":
176 case ".css":
177 case ".js":
178 $fileImage = "txt.png";
179 break;
180
181 case ".php":
182 $fileImage = "php.png";
183 break;
184
185 case ".doc":
186 $fileImage = "doc.png";
187 break;
188
189 case ".xls":
190 case ".csv":
191 $fileImage = "xls.png";
192 break;
193
194 case ".ppt":
195 $fileImage = "ppt.png";
196 break;
197
198 default:
199 $fileImage = "page_white.png";
200 }
201
202 Return $fileImage;
203 }
204
205
206 // 删除文件夹
207 static function rmdirs ($dir)
208 {
209 if (is_dir($dir))
210 {
211 $list = array_diff(scandir($dir), array('.', '..'));
212 foreach ($list as $val)
213 {
214 $path = $dir . '/' . $val;
215 is_dir($path) ? functions::rmdirs ($path) : unlink($path);
216 }
217 reset($list);
218 Return rmdir($dir);
219 }
220 }
221
222 // 建立文件夹
223 static function mkdirs ($dir)
224 {
225 $dir_arr = explode('/',$dir);
226 $tmp_dir = '';
227 foreach ($dir_arr as $val)
228 {
229 $tmp_dir .= $val . '/';
230 if(is_dir($tmp_dir))
231 continue;
232 else
233 @mkdir($tmp_dir,0777);
234 }
235 if(is_dir($tmp_dir))
236 Return $tmp_dir;
237 else
238 Return false;
239 }
240
241 // 移动
242 static function moves ($source, $target)
243 {
244 if(is_dir($source))
245 {
246 $dest_name = basename($source);
247 if(!mkdir($target.$dest_name))
248 Return false;
249 $d = dir($source);
250 while(($entry = $d->read()) !== false)
251 {
252 if(is_dir($source.$entry))
253 {
254 if($entry == "." || $entry == "..")
255 continue;
256 else
257 functions::moves("$source$entry/", "$target$dest_name/");
258 }
259 else
260 {
261 if(!rename("$source$entry","$target$dest_name/$entry"))
262 Return false;
263 }
264 }
265 }
266 else
267 {
268 if(!rename("$source","$target"))
269 Return false;
270 }
271 Return true;
272 }
273
274 // UTF8转GBK
275 static function UTF8TOGBK($str, $charset)
276 {
277 Return ($charset == 'gbk') ? iconv('UTF-8', 'GBK//IGNORE', $str) : $str;
278 }
279
280
281 // 权限值
282 static function GPNumber($permissions)
283 {
284 $PNumber = 0;
285 $permissions_arr = array(400, 200, 100, 40, 20, 10, 4, 2, 1);
286 $permissions_arr2 = array(0, 0, 4000, 0, 0, 2000, 0, 0, 1000);
287 $p_len = strlen($permissions);
288 for ($i=0; $i<$p_len; ++$i)
289 {
290 if ($permissions[$i] != '-')
291 {
292 if (!in_array($permissions[$i], array('S', 'T')))
293 $PNumber += $permissions_arr[$i];
294 if ($permissions[$i] != 'x')
295 $PNumber += $permissions_arr2[$i];
296 }
297 }
298 Return $PNumber;
299 }
300
301 // 判断utf8
302 static function is_utf8($word){
303 if(!preg_match("/[\x7f-\xff]/", $word))
304 Return true;
305 // Return json_encode($word) == 'null' ? false : true;
306 if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true)
307 Return true;
308 Return false;
309 }
310
311 static function Gctype($filename)
312 {
313 $filename = explode('.', $filename);
314 $fileExtension = $filename[count($filename)-1];
315 $array['css'] = 'css';
316 $array['html'] = 'html';
317 $array['htm'] = 'html';
318 $array['xhtml'] = 'html';
319 $array['java'] = 'java';
320 $array['js'] = 'javascript';
321 $array['json'] = 'json';
322 $array['jsp'] = 'jsp';
323 $array['php'] = 'php';
324 $array['py'] = 'python';
325 $array['sh'] = 'sh';
326 $array['sql'] = 'sql';
327 $array['xml'] = 'xml';
328 $array['text'] = 'text';
329 Return isset($array[$fileExtension]) ? $array[$fileExtension] : 'text';
330 }
331
332}
333
334?>