仰望星辰工作室

better-staridc-MNBT

better-staridc-MNBT/ templates/default/user/set.php 49.7 KB · 1,369 行 原始文件
Z zfhsh first commit 2 天前
1<?php mnbt_theme_include('head'); ?>
2 <script type="text/javascript" src="<?=mnbt_asset_url('js/md5.js')?>"></script>
3 <div class="container" style="padding-top:5%;">
4
5<?php
6$set=isset($_GET['gn'])?$_GET["gn"]:NULL;
7if($set == "nginxrz")
8{
9
10}
11elseif($set=='url'){
12// 域名绑定已由 domain_shop 插件通过 mnbt_register_page_override('user','set') 接管
13// 正常情况下本分支不会执行(filter 在 mnbt_render() 阶段已返回 iframe)
14// 此处保留占位符,仅在插件未启用时作为 fallback 提示
15?>
16<div class="container" style="padding-top:5%;">
17 <div class="col-sm-6">
18 <div class="card">
19 <div class="card-header"><h4>域名绑定</h4></div>
20 <div class="card-body">
21 <p class="text-muted">域名绑定功能由 domain_shop 插件提供。</p>
22 <p class="text-muted">请联系管理员启用该插件,或前往 <a href="plugin.php?p=domain_shop&page=bind">域名绑定页</a> 直接访问。</p>
23 </div>
24 </div>
25 </div>
26</div>
27<?php }elseif($set=='pass'){
28$cert=$DB->get_row_prepare("SELECT * FROM MN_bt WHERE btdh=? limit 1", [$ssbt]);
29?>
30<div class="col-sm-6">
31 <div class="card">
32 <div class="card-header">
33 加密访问设置</br>
34目录设置加密访问后,访问时需要输入账号密码才能访问</br>
35例如我设置了加密访问 /test/ ,那我访问 http://aaa.com/test/ 是就要输入账号密码才能访问
36 <ul class="card-actions">
37 </ul>
38 </div>
39 <div class="card-body">
40
41 <div class="table-responsive">
42 <table class="table table-bordered">
43 <thead>
44 <tr>
45 <th>名称</th>
46 <th>目标目录</th>
47 <th>操作</th>
48 </tr>
49 </thead>
50 <tbody>
51 <?php
52 include("./class.php");
53 $btipe=($cert['ptl']=='true'?'https':'http').'://'.$cert['btip'].':'.$cert['btdk'];
54 $btkeye=$cert['btmy'];
55 $api = new bt_api($btipe,$btkeye);
56 $r_data = $api->GetLogs($zjid);
57 if($cert['btos']=='2'){
58 $idsz=$r_data;
59 }else{
60 $idsz=$r_data[$yhc['sqldz']] ?? [];
61 }
62 foreach($idsz as $are){?>
63
64 <tr>
65 <td><?=$are['name']?></td>
66 <td><?=$are['site_dir']?></td>
67 <td>
68 <div class="btn-group">
69 <button type="button" class="btn btn-xs btn-default" onclick="scym(del='<?=$are['name']?>')"><i class="mdi mdi-window-close"></i></button>
70 </div>
71 </td>
72 </tr>
73<?php
74}
75?>
76 </tbody>
77 </table>
78 </div>
79
80 <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel">
81 <div class="modal-dialog" role="document">
82 <div class="modal-content">
83 <div class="modal-header">
84 <h6 class="modal-title" id="exampleModalChangeTitle">添加密码访问</h6>
85 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
86 <span aria-hidden="true">&times;</span>
87 </button>
88 </div>
89 <div class="modal-body">
90 <form>
91 <div class="form-group">
92 <label for="recipient-name" class="control-label">名称:</label>
93 <input type="text" class="form-control" name="names" id="names" placeholder="请随意填写 不可重复!">
94 </div>
95 <div class="form-group">
96 <label for="recipient-name" class="control-label">目标目录:</label>
97 <input type="text" class="form-control" name="tkol" id="tkol" placeholder="输入要加密访问的目录如:/text/">
98 </div>
99 <div class="form-group">
100 <label for="message-text" class="control-label">账号:</label>
101 <input type="text" class="form-control" name="zh" id="zh" placeholder="请输入访问页面时要输入的账号"></input>
102 </div>
103 <div class="form-group">
104 <label for="message-text" class="control-label">密码:</label>
105 <input type="text" class="form-control" name="mm" id="mm" placeholder="请输入访问页面时要输入的密码"></input>
106 </div>
107 </div>
108 </form>
109 <div class="modal-footer">
110 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
111 <button type="button" class="btn btn-primary" onclick="tj()">确认添加</button>
112 </div>
113 </div>
114 </div>
115 </div>
116 <div class="input-group-btn"><button class="btn btn-default btn-xs btn btn-primary form-control" type="button" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo"><i class="mdi mdi-checkbox-marked-circle-outline"></i>添加</button></div>
117 </div>
118 </div>
119 </footer>
120 </div>
121<script type="text/javascript">
122function scym(url) {
123msloading('正在删除中,请稍后...'); // 加载显示
124let data = {};
125data["gn"]="scmmfw";
126data["mb"]=url;
127$.post('./ajax.php', data, function (date) {
128var jsoe= JSON.parse(date);
129var qk= jsoe.code
130
131if(qk=='删除成功'){
132msalert(1,'删除成功!',2000);
133msloadingde(); // 隐藏
134window.location.href="./set.php?gn=pass"
135}else{
136msalert(4,qk,2000);
137msloadingde(); // 隐藏
138}
139})
140}
141function tj() {
142var mz=names.value;
143var ml=tkol.value;
144var user=zh.value;
145var pass=mm.value;
146if(mz=="" || ml=="" || user=="" || pass==""){
147msalert(3,'不能留空!',2000);
148}
149else
150{
151msloading('正在添加中,请稍后...'); // 加载显示
152let data = {};
153data["gn"]="tjmmfw";
154data["name"]=mz;
155data["mbml"]=ml;
156data["user"]=user;
157data["pass"]=pass;
158$.post('./ajax.php', data, function (date) {
159var jsoe= JSON.parse(date);
160var qk= jsoe.code
161if(qk=='创建成功'){
162msalert(1,'添加成功!',2000,'#exampleModal');
163msloadingde(); // 隐藏
164window.location.href="./set.php?gn=pass"
165}else{
166msalert(4,qk,2000,'#exampleModal');
167msloadingde(); // 隐藏
168}
169})
170}}
171</script>
172<?php }elseif($set=='mrwd'){
173$cert=$DB->get_row_prepare("SELECT * FROM MN_bt WHERE btdh=? limit 1", [$ssbt]);
174?>
175<div class="col-sm-6">
176 <div class="card">
177 <div class="card-header">
178 <h4>默认文档修改</br>
179</h4>
180 <ul class="card-actions">
181 </ul>
182 </div>
183 <div class="card-body">
184
185 <?php
186 include("./class.php");
187 $btipe=($cert['ptl']=='true'?'https':'http').'://'.$cert['btip'].':'.$cert['btdk'];
188 $btkeye=$cert['btmy'];
189 $api = new bt_api($btipe,$btkeye);
190 $r_data = $api->GetLogseb($zjid);
191 ?>
192
193 <div class="form-group">
194 <textarea type="text" class="form-control" rows="5" name="url" id="url" placeholder="请在此输入文档"><?=$r_data?></textarea>
195 <small class="help-block"><strong>每个文档请使用 , 隔开!不得出现空格等情况!先后顺序代表文档的优先级</strong></small>
196 </div>
197 <div class="input-group-btn"><button class="btn btn-default btn btn-primary form-control" type="button" onclick="xg()"><label><i class="mdi mdi-checkbox-marked-circle-outline"></i></label>确定修改</button></div>
198 </div>
199 </div>
200 </div>
201<script type="text/javascript">
202function xg() {
203var ym=url.value;
204if(ym==""){
205msalert(3,'不能为空!',2000);
206}
207else
208{
209msloading('正在处理中,请稍后...'); // 加载显示
210let data = {};
211data["gn"]="xgmrwd";
212data["ml"]=ym;
213$.post('./ajax.php', data, function (date) {
214var jsoe= JSON.parse(date);
215var qk= jsoe.code
216
217if(qk=='设置成功'){
218msalert(1,'修改成功!',2000);
219msloadingde(); // 隐藏
220}else{
221msalert(4,qk,2000);
222msloadingde(); // 隐藏
223}
224})
225}}
226</script>
227
228<?php }
229elseif($set=="nginx")
230{
231 $cert=$DB->get_row_prepare("SELECT * FROM MN_bt WHERE btdh=? limit 1", [$ssbt]);
232?>
233<div class="col-sm-6">
234 <div class="card">
235 <div class="card-header">
236 <h4>nginx配置文件</br>
237</h4>
238 <ul class="card-actions">
239 </ul>
240 </div>
241 <div class="card-body">
242
243 <?php
244 include("./class.php");
245 $btipe=($cert['ptl']=='true'?'https':'http').'://'.$cert['btip'].':'.$cert['btdk'];
246 $btkeye=$cert['btmy'];
247 $api = new bt_api($btipe,$btkeye);
248 $name = $yhc['sqldz'];
249 $r_data = $api->Getnginx($name);
250 ?>
251
252 <div class="form-group">
253 <textarea type="text" class="form-control" rows="20" name="url" id="url" placeholder="请在此输入文档"><?php echo ($r_data['data']) ;?></textarea>
254 </div>
255 </div>
256<?php
257}
258
259elseif($set == "mysqlcz")
260{
261 include("./class.php");
262 $cert=$DB->get_row_prepare("SELECT * FROM MN_bt WHERE btdh=? limit 1", [$ssbt]);
263 $btipe=($cert['ptl']=='true'?'https':'http').'://'.$cert['btip'].':'.$cert['btdk'];
264 $btkeye=$cert['btmy'];
265 $api = new bt_api($btipe,$btkeye);
266 $name = $yhc['sqluser'];
267 $r_data = $api->GetDatabaseAccess($name);
268 ?>
269 <!--对话框-->
270<script type="text/javascript" src="<?=mnbt_asset_url('js/jquery-confirm/jquery-confirm.min.js')?>"></script>
271<script type="text/javascript" src="<?=mnbt_asset_url('js/bootstrap-table/bootstrap-table.min.js')?>"></script>
272<script type="text/javascript" src="<?=mnbt_asset_url('js/bootstrap-table/locale/bootstrap-table-zh-CN.min.js')?>"></script>
273<div class="col-sm-6">
274 <div class="card">
275 <div class="card-header">
276 <h4>设置数据库权限</br>
277</h4>
278 <ul class="card-actions">
279 </ul>
280 </div>
281 <div class="card-body">
282<div class="form-group">
283 <select class="form-control" id="databaseaq" name="databaseaq" size="1">
284 <?php
285 var_dump($r_data);
286 if($r_data['msg'] == "127.0.0.1")
287 {
288 echo '<option value="127.0.0.1">本地服务器</option>';
289 echo '<option value="%">所有人(不安全)</option>';
290 echo '<option value="%">指定IP</option>';
291
292 }
293 elseif($r_data['msg'] == "%")
294 {
295 echo '<option value="%">所有人(不安全)</option>';
296 echo '<option value="127.0.0.1">本地服务器</option>';
297 echo '<option value="127.0.0.1">指定IP</option>';
298
299 }
300 else
301 {
302 echo '<option value="127.0.0.1">指定IP</option>';
303 echo '<option value="%">所有人(不安全)</option>';
304 echo '<option value="127.0.0.1">本地服务器</option>';
305
306 }
307
308 ?>
309
310 </select>
311 </div>
312 <div class="input-group-btn"><button class="btn btn-default btn btn-primary form-control" onclick="databaseaqbc1()" type="button"><label><i class="mdi mdi-checkbox-marked-circle-outline"></i></label>保存</button></div>
313 </div>
314 </div>
315 </div>
316<script type="text/javascript">
317function databaseaqbc1()
318{
319 msloading('正在处理中,请稍后...'); // 加载显示
320 let option = databaseaq.value;
321 let data = {};
322 data["gn"]="databaseaq1";
323 data["dataAccess"]=option;
324 $.post('./ajax.php', data, function (date) {
325 var jsoe= JSON.parse(date);
326 var qk= jsoe.code;
327 if(qk=='设置成功')
328 {
329 msalert(1,'设置成功!',2000);
330 msloadingde(); // 隐藏
331 }
332 else
333 {
334 msalert(4,qk,2000);
335 msloadingde(); // 隐藏
336 }
337 })
338}
339</script>
340
341<?php
342}
343elseif($set=="php")
344{
345
346$cert=$DB->get_row_prepare("SELECT * FROM MN_bt WHERE btdh=? limit 1", [$ssbt]);
347$btipe=($cert['ptl']=='true'?'https':'http').'://'.$cert['btip'].':'.$cert['btdk'];
348$btkeye=$cert['btmy'];
349if($cert['btos']=='1'){
350$os_xt=$conf['hxi'].'/';
351}else{
352$os_xt=$conf['hxo'].'/';
353}
354include("./class.php");
355$api = new bt_api($btipe,$btkeye);
356//php版本获取
357$apist = new bt_api_set($btipe,$btkeye);
358$r_data = $apist->btapi_listphp();
359unset($r_data[0]); //由于纯静态通过APi切换后再切换为其他PHP版本部分宝塔会报错,等待宝塔官方修复这个问题,所以暂时关闭纯静态选项
360unset($r_data[1]); //关闭自定义选项
361$php_version = $apist->btapi_phpnowz($yhc['sqldz'])['phpversion'];
362?>
363
364 <!--对话框-->
365<script type="text/javascript" src="<?=mnbt_asset_url('js/jquery-confirm/jquery-confirm.min.js')?>"></script>
366<script type="text/javascript" src="<?=mnbt_asset_url('js/bootstrap-table/bootstrap-table.min.js')?>"></script>
367<script type="text/javascript" src="<?=mnbt_asset_url('js/bootstrap-table/locale/bootstrap-table-zh-CN.min.js')?>"></script>
368<div class="col-sm-6">
369 <div class="card">
370 <div class="card-header">
371 <h4>php版本切换</br>
372</h4>
373 <ul class="card-actions">
374 </ul>
375 </div>
376 <div class="card-body">
377<div class="form-group">
378 <select class="form-control" id="phpsave" name="phpsave" size="1">
379 <?php
380 echo "<option value='$php_version'>PHP-"."$php_version</option>";
381 foreach (($r_data ?: []) as $value_array)
382 {
383 $name = $value_array['name'];
384 $version = $value_array['version'];
385 if($version != $php_version)
386 {
387 echo "<option value='$version'>$name</option>";
388 }
389
390 }
391 ?>
392
393 </select>
394 </div>
395 <div class="input-group-btn"><button class="btn btn-default btn btn-primary form-control" onclick="databaseaqbc1()" type="button"><label><i class="mdi mdi-checkbox-marked-circle-outline"></i></label>保存</button></div>
396 </div>
397 </div>
398 </div>
399<script type="text/javascript">
400function databaseaqbc1()
401{
402 msloading('正在处理中,请稍后...'); // 加载显示
403 let option = phpsave.value;
404 let data = {};
405 data["gn"]="phpxg";
406 data["php"]=option;
407 $.post('./ajax.php', data, function (date) {
408 var jsoe= JSON.parse(date);
409 var qk= jsoe.code;
410 if(qk=='修改成功')
411 {
412 msalert(1,'修改成功!',2000);
413 msloadingde(); // 隐藏
414 }
415 else
416 {
417 msalert(4,qk,2000);
418 msloadingde(); // 隐藏
419 }
420 })
421}
422</script>
423
424<?php
425}
426elseif($set=='wjt'){
427$cert=$DB->get_row_prepare("SELECT * FROM MN_bt WHERE btdh=? limit 1", [$ssbt]);
428?>
429<div class="col-sm-6">
430 <div class="card">
431 <div class="card-header">
432 <h4>伪静态设置</br>
433</h4>
434 <ul class="card-actions">
435 </ul>
436 </div>
437 <div class="card-body">
438
439 <?php
440 include("./class.php");
441 $btipe=($cert['ptl']=='true'?'https':'http').'://'.$cert['btip'].':'.$cert['btdk'];
442 $btkeye=$cert['btmy'];
443 $api = new bt_api($btipe,$btkeye);
444 $r_daoe = $api->GetLogswr($yhc['sqldz']);
445 if($cert['btos']=='1'){
446 $r_data = $api->GetLogswt('/www/server/panel/vhost/rewrite/'.$yhc['sqldz'].'.conf');
447 }else{
448 $api = new win_bt_api($btipe,$btkeye);
449 $r_data = $api->wjt_hqdq($yhc['sqldz']);
450 }
451 ?>
452<div class="form-group">
453 <select class="form-control" id="btdh" name="btdh" size="1" onchange="_sel(this.options[this.options.selectedIndex])">
454 <?php
455 foreach (($r_daoe['rewrite'] ?? []) as $value) {
456 echo '
457 <option value="'.$value.'">'.$value.'</option>
458 ';
459 }?>
460 </select>
461 </div>
462 <div class="form-group">
463 <textarea type="text" class="form-control" rows="10" name="url" id="url" placeholder="请在此输入伪静态规则"><?=$r_data['data']?></textarea>
464 <small class="help-block"><strong><li>请选择您的应用,若设置伪静态后,网站无法正常访问,请尝试设置回default</li>
465<li>您可以对伪静态规则进行修改,修改完后保存即可。</li>
466<li><a href="https://www.bt.cn/Tools">Apache转Nginx工具</a></li></strong></small>
467 </div>
468 <div class="input-group-btn"><button class="btn btn-default btn btn-primary form-control" type="button" onclick="xg()"><label><i class="mdi mdi-checkbox-marked-circle-outline"></i></label>保存</button></div>
469 </div>
470 </div>
471 </div>
472<script type="text/javascript">
473function _sel(val){
474var vio=val.value;
475if(vio==""){
476msalert(3,'????你是咋选出这个来的????',2000);
477}
478else
479{
480msloading('正在处理中,请稍后...'); // 加载显示
481let data = {};
482data["gn"]="hqjt";
483data["xz"]=vio;
484$.post('./ajax.php', data, function (date) {
485
486//msalert(1,'数据获取成功!',2000);
487document.getElementById("url").value = date;
488msloadingde(); // 隐藏
489})
490}}
491
492function xg() {
493var ym=url.value;
494msloading('正在处理中,请稍后...'); // 加载显示
495let data = {};
496data["gn"]="setwjt";
497data["wb"]=ym;
498$.post('./ajax.php', data, function (date) {
499var jsoe= JSON.parse(date);
500var qk= jsoe.code;
501
502if(qk=='文件已保存!'){
503msalert(1,'保存成功!',2000);
504msloadingde(); // 隐藏
505}else{
506msalert(4,qk,2000);
507msloadingde(); // 隐藏
508}
509})
510}
511</script>
512
513<?php
514}
515elseif($set=='fdl')
516{
517?>
518<div class="col-6">
519 <div class="card">
520 <div class="card-header">
521 <h4>防盗链设置</br>
522</h4>
523 <ul class="card-actions">
524 </ul>
525 </div>
526 <div class="card-body">
527<div class="form-group">
528 <label for="message-text" class="control-label">URL后缀</label>
529 <input class="form-control" id="btfdlurl" value="" placeholder="请在此输入URL后缀" name="btfdlurl" size="1">
530
531 </div>
532 <div class="form-group">
533 <label for="message-text" class="control-label">响应资源</label>
534 <input class="form-control" id="btfdlzy" value="" name="btfdlzy" placeholder="请在此输入响应资源" size="1">
535
536 </div>
537 <div class="form-group">
538 <label for="message-text" class="control-label">许可域名</label>
539 <textarea type="text" class="form-control" rows="10" name="ymlist1" id="ymlist1" placeholder="请在此输入许可域名"></textarea>
540 </div>
541 <div class="form-group">
542 <label class="btn-block" for="web_site_status">允许空HTTP_REFERER请求开关</label>
543 <div class="col-xs-6">
544 <div class="custom-control custom-switch">
545 <input type="checkbox" class="custom-control-input" id="nullhttp">
546 <label class="custom-control-label" for="nullhttp"></label>
547 </div>
548
549 <label class="btn-block" for="web_site_status">防盗链开关</label>
550 <div class="col-xs-6">
551 <div class="custom-control custom-switch">
552 <input type="checkbox" class="custom-control-input" id="fdlkg" for="fdlkg"></label>
553 <label class="custom-control-label" for="fdlkg"></label>
554 </div>
555
556 </div>
557 </div>
558
559 <div class="input-group-btn"><button class="btn btn-default btn btn-primary form-control" type="button" onclick="fdlkg()"><label><i class="mdi mdi-checkbox-marked-circle-outline"></i></label>保存</button></div>
560
561
562 </div>
563 <small class="help-block"><strong><code><li>【URL后缀】一般填写文件后缀,每个文件后缀使用","分隔,如: png,jpg</li><li>【许可域名】允许作为来路的域名,每行一个域名,如: www.bt.cn</li><li>【响应资源】可设置404/403等状态码,也可以设置一个有效资源,如:/security.png</li><li>【允许空HTTP_REFERER请求】是否允许浏览器直接访问,若您的网站访问异常,可尝试开启此功能</li>
564 </code></strong></small>
565
566 </div>
567 </div>
568<script type="text/javascript">
569getfdl();
570
571
572$("#fdlkg").on('change',function(){
573 var jg=$(this).prop('checked');
574 if(jg==false)$("#nullhttp").prop("checked",false);
575})
576
577
578function getfdl(){
579msloading('正在获取数据中,请稍后...'); // 加载显示
580let data = {};
581data["gn"]="getfdl";
582$.post('./ajax.php', data, function (date) {
583var json= JSON.parse(date);
584var xkzym=json['domains'].split(',');
585xkzym=xkzym.join('\n');
586
587$("#btfdlurl").val(json.fix);
588$("#btfdlzy").val(json.return_rule);
589$("#ymlist1").val(xkzym);
590
591if(json.http_status==true)json.http_status=true;
592else json.http_status=false;
593if(json.status==true){json.status=true;}
594else json.status=false;
595$("#nullhttp").prop("checked",json.http_status);
596$("#fdlkg").prop("checked",json.status);
597
598msloadingde(); // 隐藏
599})
600
601}
602
603
604
605function fdlkg()
606{
607 msloading('正在处理中,请稍后...'); // 加载显示
608
609 var fix=$("#btfdlurl").val();
610 var zy=$("#btfdlzy").val();
611 var doma=$.trim($("#ymlist1").val());
612 doma=(doma.split('\n')).join(',');
613
614 let data = {};
615 data["gn"] = "fdlkg";
616 data['fix'] = fix;
617 data['domains'] = doma;
618 data['return_rule'] = zy;
619 data['http_status'] = $("#nullhttp").prop("checked");
620 data['status'] = $("#fdlkg").prop("checked");
621 $.post('./ajax.php', data, function (date) {
622 var jsoe= JSON.parse(date);
623 var qk= jsoe.code
624 if(qk == "设置成功")
625 {
626 msalert(1,'设置成功!',2000);
627 }
628 else
629 {
630 msalert(4, qk,2000);
631 }
632 msloadingde();
633 })
634
635}
636</script>
637
638<?php }
639
640elseif($set == "fzjh")
641{
642 ?>
643 <div class="col-sm-6">
644 <div class="card">
645 <div class="card-header">
646 <h4>负载均衡设置</br>
647</h4>
648 <ul class="card-actions">
649 </ul>
650 </div>
651 <div class="card-body">
652 <div class="form-group">
653 <label for="message-text" class="control-label">负载均衡</label>
654 <textarea type="text" class="form-control" rows="10" name="ymlist1" id="ymlist1" placeholder="请输入要负载的网址,每个网址用,隔开"><?php
655 include("./class.php");
656 $cert=$DB->get_row_prepare("SELECT * FROM MN_bt WHERE btdh=? limit 1", [$ssbt]);
657 $btipe=($cert['ptl']=='true'?'https':'http').'://'.$cert['btip'].':'.$cert['btdk'];
658 $btkeye=$cert['btmy'];
659 $api = new bt_api($btipe,$btkeye);
660 $name = $yhc['sqldz'];
661 $r_data = $api->Getnginx($name);
662 // echo($r_data['data']);
663 $pattern = '/#######\s*(.*?)\s*########/s';
664 if (preg_match($pattern, $r_data['data'], $matches))
665 {
666 $content = trim($matches[1]);
667 echo $content;
668 }
669 else
670 {
671 echo "未配置负载均衡器";
672 }
673 ?></textarea>
674 </div>
675
676
677 </div>
678 </div>
679
680
681 </div>
682 <?php
683}
684elseif($set == "rzfx")
685{
686 include_once('./class.php');
687 $cert=$DB->get_row_prepare("SELECT * FROM MN_bt WHERE btdh=? limit 1", [$ssbt]);
688 $btipe=($cert['ptl']=='true'?'https':'http').'://'.$cert['btip'].':'.$cert['btdk'];
689 $btkeye=$cert['btmy'];
690 $api = new bt_api($btipe,$btkeye);
691 $abc=$api->getlog($yhc['sqldz']);
692// Extract and print the access logs
693$data = $abc['msg'];
694$logArray = explode("\n", $data);
695
696?>
697<div class="border border-primary rounded-top">
698<div class="bg-primary border border-gray"><h3 class="ml-2">nginx日志</h3></div>
699<div class="bg-white px-2">
700
701 <div class="form-group">
702 <label for="web_site_logo">nginx访问日志📢</label>
703
704 <textarea name="wzgg" rows="20" id="wzgg" class="form-control" placeholder="nginx访问日志"><?php
705 foreach($logArray as $nginx_list)
706 {
707 $pattern = '/"(.*?)".*\[(.*?)\]/';
708
709 preg_match($pattern, $nginx_list, $matches);
710
711 // 提取匹配到的 IP 地址
712 $ip = $matches[0];
713
714 // echo $ip; // 输出 IP 地址
715 //echo "\n";
716 echo $nginx_list;
717 echo "\n";
718 }
719 ?>
720 </textarea>
721 </div>
722</div>
723</div>
724</div>
725<?php
726}
727elseif($set=='xgpass'){?>
728<div class="card">
729<div class="card-body">
730<h3 class="panel-title">修改密码</h3>
731<hr/>
732 <div class="form-group">
733 <label for="message-text" class="control-label">新的FTP密码</label>
734 <input type="text" name="webmm" id="webmm" placeholder="不修改请留空" class="form-control" required/>
735 </div><br/>
736 <div class="form-group">
737 <label for="message-text" class="control-label">新的数据库密码</label>
738 <input type="text" name="sqlmm" id="sqlmm" placeholder="不修改请留空" class="form-control" required/>
739 </div><br/>
740 <button class="btn btn-primary form-control" type="button" onclick="xgmm()"><i class="mdi mdi-checkbox-marked-circle-outline"></i>确认修改</button>
741<small class="help-block"><strong><code>注意:FTP密码也是你的控制面板登陆密码,FTP密码修改后需重新登录控制面板</code></strong></small>
742</div>
743</div>
744<script type="text/javascript">
745function xgmm() {
746
747msloading('正在处理中,请稍后...'); // 加载显示
748let data = {};
749data["gn"]="xgpass";
750data["ftp"]=webmm.value;
751data["sql"]=sqlmm.value;
752$.post('./ajax.php', data, function (date) {
753var jsoe= JSON.parse(date);
754var qk= jsoe.code
755
756if(qk=='修改成功'){
757if(webmm.value!=''){
758msalert(1,'修改成功!将在两秒后跳转登录!',2000);
759setTimeout(function(){
760window.location.href="./set.php?gn=xgpass";
761},2000);
762}else{
763msalert(1,'修改成功!',2000);
764}
765msloadingde(); // 隐藏
766}else{
767msalert(4, qk,2000);
768msloadingde(); // 隐藏
769}
770})
771}
772</script>
773
774<?php }elseif($set=='yxml'){
775$cert=$DB->get_row_prepare("SELECT * FROM MN_bt WHERE btdh=? limit 1", [$ssbt]);
776?>
777<!--对话框-->
778<script type="text/javascript" src="<?=mnbt_asset_url('js/jquery-confirm/jquery-confirm.min.js')?>"></script>
779<script type="text/javascript" src="<?=mnbt_asset_url('js/bootstrap-table/bootstrap-table.min.js')?>"></script>
780<script type="text/javascript" src="<?=mnbt_asset_url('js/bootstrap-table/locale/bootstrap-table-zh-CN.min.js')?>"></script>
781<div class="col-sm-6">
782 <div class="card">
783 <div class="card-header">
784 <h4>设置运行目录</br>
785</h4>
786 <ul class="card-actions">
787 </ul>
788 </div>
789 <div class="card-body">
790
791 <?php
792 include("./class.php");
793 $btipe=($cert['ptl']=='true'?'https':'http').'://'.$cert['btip'].':'.$cert['btdk'];
794 $btkeye=$cert['btmy'];
795 if($cert['btos']=='1'){
796 $os_xt=$conf['hxi'].'/';
797 }else{
798 $os_xt=$conf['hxo'].'/';
799 }
800 $api = new bt_api($btipe,$btkeye);
801 $r_data = $api->yxmlrhq($yhc['btid'],$os_xt.$yhc['sqldz']);
802 ?>
803<div class="form-group">
804 <select class="form-control" id="btdh" name="btdh" size="1">
805 <?php
806 foreach (($r_data['runPath']['dirs'] ?? []) as $value) {
807 $aduajvff=$value==$r_data['runPath']['runPath']?'selected':'';
808 echo '
809 <option value="'.$value.'" '.$aduajvff.'>'.$value.'</option>
810 ';
811 }?>
812 </select>
813 </div>
814 <div class="input-group">
815 <small class="help-block"><strong><li>部分程序需要指定二级目录作为运行目录,如ThinkPHP5,Laravel</li>
816<li>选择您的运行目录,点保存即可</li></strong></small>
817 </div>
818 <div class="input-group-btn"><button class="btn btn-default btn btn-primary form-control" type="button" onclick="xg()"><label><i class="mdi mdi-checkbox-marked-circle-outline"></i></label>保存</button></div>
819 </div>
820 </div>
821 </div>
822<script type="text/javascript">
823function xg(ms='') {
824msloading('正在处理中,请稍后...'); // 加载显示
825if(ms!='1'){
826var data = {};
827data["gn"]="hqzmlls";
828$.post('./ajax.php', data, function (date) {
829msloadingde();
830if(date!='false'){
831msalerts(3,'提示','当前运行目录下绑定有'+date+'域名的子目录,推荐您去[域名修改]处将这些域名的子目录修改为/,如果继续切换运行目录则会删除这些域名绑定!是否确认删除!','xg("1")','',30000);
832}else{
833xg('1');
834}
835});
836return;
837}
838var ym=btdh.value;
839data = {};
840data["gn"]="setyxml";
841data["wb"]=ym;
842$.post('./ajax.php', data, function (date) {
843var jsoe= JSON.parse(date);
844var qk= jsoe.code;
845
846if(qk=='设置成功'){
847msalert(1,'设置成功!',2000);
848msloadingde(); // 隐藏
849}else{
850msalert(4,qk,2000);
851msloadingde(); // 隐藏
852}
853})
854}
855</script>
856
857<?php }elseif($set=='ssl'){
858$cert=$DB->get_row_prepare("SELECT * FROM MN_bt WHERE btdh=? limit 1", [$ssbt]);
859?>
860
861 <div class="card">
862 <header class="card-header"><div class="card-title">配置SSL</div></header>
863 <div class="card-body">
864
865 <ul class="nav nav-tabs nav-fill">
866 <li class="nav-item">
867 <a class="nav-link active" data-toggle="tab" href="#dqzs" aria-selected="true">当前证书</a>
868 </li>
869 <li class="nav-item">
870 <a class="nav-link" data-toggle="tab" href="#lets" aria-selected="false">Let's Encrypt证书</a>
871 </li>
872 </ul>
873 <div class="tab-content">
874 <div class="tab-pane fade show active" id="dqzs" role="tabpanel">
875 <div class="bg-success row">
876 <div class="col">
877 <span><b>认证域名:</b><span id="rzurl">未知</span></span><br/>
878 <span><b>强制HTTPS:</b>
879 <div class="custom-switch wqbr">
880 <input type="checkbox" class="custom-control-input" id="qzhttps">
881 <label class="custom-control-label" for="qzhttps"></label>
882 </div></span>
883 </div>
884 <div class="col">
885 <span><b>证书品牌:</b><span id="zspp">未知</span></span><br/>
886 <span><b>到期时间:</b><span id="dadate">未知</span></span>
887 </div>
888 </div>
889 <br/>
890 <div class="row">
891 <div class="form-group col-md">
892 <label for="ssl-key">密钥(KEY)</label>
893 <textarea class="form-control" id="ssl-key" rows="15" placeholder="密钥(KEY)"></textarea>
894 </div>
895
896 <div class="form-group col-md">
897 <label for="ssl-pem">证书(PEM格式)</label>
898 <textarea class="form-control" id="ssl-pem" rows="15" placeholder="证书(PEM格式)"></textarea>
899 </div>
900 </div>
901 <div class="input-group-btn row" id="anncz">
902 <button class="btn btn-primary form-control" type="button" onclick="setssl()"><label><i class="mdi mdi-shield-plus"></i></label>保存并启用证书</button>
903 </div>
904 <small>粘贴您的*.key以及*.pem内容,然后保存即可<a href="http://www.bt.cn/bbs/thread-704-1-1.html" target="_blank">[帮助]。</a><br/>
905如果浏览器提示证书链不完整,请检查是否正确拼接PEM证书<br/>
906PEM格式证书 = 域名证书.crt + 根证书(root_bundle).crt</small>
907 </div>
908 <div class="tab-pane fade" id="lets" role="tabpanel">
909
910 <div class="form-group col-md">
911 <label for="ssl-pem">请选择需要申请SSL的域名</label>
912
913 <div class="border rounded-lg p-2">
914 <div class="custom-control custom-checkbox">
915 <input type="checkbox" class="border border-white custom-control-input" id="quanx">
916 <label class="custom-control-label" for="quanx">全选</label>
917 </div>
918 <div style="display:inline-block;" id="url">
919 <h2>正在加载域名列表中,请稍后...</h2>
920 </div>
921 </div>
922 <br/>
923 <div class="input-group-btn"><button class="btn btn btn-primary form-control" type="button" onclick="sq()"><label><i class="mdi mdi-shield-plus-outline"></i></label>申请</button></div>
924 <br/>
925 <small><strong class="text-danger">注意:请勿将SSL证书用于非法网站</strong><br/>
926Let's Encrypt 证书申请和续签限制 <a href="https://letsencrypt.org/zh-cn/docs/rate-limits/" target="_blank">点击查看</a><br/>
927Let's Encrypt因更换根证书,部分老旧设备访问时可能提示不可信。<br/>
928申请之前,请确保域名已解析,如未解析会导致审核失败<br/>
929Let's Encrypt免费证书,有效期3个月,支持多域名。默认会自动续签<br/>
930若您的站点使用了CDN或301重定向会导致续签失败</small>
931 </div>
932 </div>
933 </div>
934
935 </div>
936 </div>
937 </div>
938<script type="text/javascript">
939
940getssl();
941geturllist();
942function getssl(){
943msloading('正在获取证书配置中,请稍后...'); // 加载显示
944let data = {};
945var anns='';
946data["gn"]="getssl";
947$.post('./ajax.php', data, function (date) {
948get_fh_json= JSON.parse(date);
949if(get_fh_json.key==false){
950get_fh_json['key']='';
951}
952if(get_fh_json.csr==false){
953get_fh_json['csr']='';
954}
955$("#ssl-key").val(get_fh_json.key)
956$("#ssl-pem").val(get_fh_json.csr)
957$("#rzurl").html(get_fh_json['cert_data'].subject)
958$("#zspp").html(get_fh_json['cert_data'].issuer)
959var dqdate=new Date().getTime();
960if(new Date(get_fh_json['cert_data'].notAfter)<new Date(dqdate)){
961$("#dadate").html('<b class="text-danger">'+get_fh_json['cert_data'].notAfter+'</b>')
962}else{
963$("#dadate").html(get_fh_json['cert_data'].notAfter)
964}
965$("#qzhttps").prop('checked',get_fh_json.httpTohttps)
966if(get_fh_json.status){
967anns+='<button class="btn btn-primary form-control col-12 col-md" type="button" onclick="setssl()"><label><i class="mdi mdi-shield-plus"></i></label>保存</button>'
968if(get_fh_json.type==1){
969anns+='<button class="btn btn-primary form-control col-12 col-md" type="button" onclick="sq(1)"><label><i class="mdi mdi-circle-edit-outline"></i></label>续签证书</button>'
970}
971anns+='<button class="btn btn-primary form-control col-12 col-md" type="button" onclick="clossl()"><label><i class="mdi mdi-shield-remove"></i></label>关闭SSL</button>'
972}else{
973anns='<button class="btn btn-primary form-control" type="button" onclick="setssl()"><label><i class="mdi mdi-shield-plus"></i></label>保存并启用证书</button>';
974}
975$("#anncz").html(anns)
976msloadingde(); // 隐藏
977})
978}
979
980$("#qzhttps").change(function(){
981if(!get_fh_json.status){msalert(3,'SSL未开启!'); $("#qzhttps").prop('checked',false); return;}
982msloading('正在设置强制HTTPS,请稍后...'); // 加载显示
983let data = {};
984data["gn"]="httpsqz";
985data["qk"]=this.checked;
986$.post('./ajax.php', data, function (date) {
987var json= JSON.parse(date);
988
989msalert(json.qk,json.code,4000);
990msloadingde(); // 隐藏
991getssl();
992})
993})
994
995function clossl(){ //关闭证书
996msloading('正在关闭SSL,请稍后...'); // 加载显示
997let data = {};
998data["gn"]="clossl";
999$.post('./ajax.php', data, function (date) {
1000var json= JSON.parse(date);
1001
1002msalert(json.qk,json.code,4000);
1003msloadingde(); // 隐藏
1004getssl();
1005})
1006}
1007
1008function setssl(){ //配置证书
1009let key=$("#ssl-key").val();
1010let pem=$("#ssl-pem").val();
1011if(key==false || pem==false){msalert(3,'密钥(KEY)和证书(PEM)均不能留空!'); return;}
1012msloading('正在设置并启用证书,请稍后...'); // 加载显示
1013let data = {};
1014data["gn"]="setssl";
1015data["key"]=key;
1016data["pem"]=pem;
1017$.post('./ajax.php', data, function (date) {
1018var json= JSON.parse(date);
1019
1020msalert(json.qk,json.code,4000);
1021msloadingde(); // 隐藏
1022getssl();
1023})
1024}
1025
1026
1027
1028$("#quanx").change(function () { //全选/取消全选
1029 $(".custom-checkbox input[type='checkbox']").prop('checked', $(this).prop("checked"));
1030});
1031
1032function sq(qqlx=0) {
1033if(qqlx!=1){
1034var arr=[];
1035var xuanz=$(".custom-control input[type='checkbox']").each(function(){
1036 let xzzt=$(this).prop("checked");
1037 if(xzzt && this.id!='quanx'){
1038 arr.push($("label[for='"+this.id+"']").html());
1039 }
1040});
1041var titles='申请';
1042var settype=false;
1043if(get_fh_json.status){msalert(3,'当前SSL已开启!继续申请将会覆盖现有证书!如需继续申请请先关闭SSL!'); return;}
1044}else{
1045var arr=get_fh_json['cert_data'].dns;
1046var titles='续签';
1047var settype=true;
1048if(get_fh_json.httpTohttps){
1049msalert(3,'续签前请先关闭强制HTTPS!'); return;
1050}
1051}
1052if(arr.length<=0){msalert(3,'域名未选择!'); return;}
1053msloading('正在'+titles+'证书中,请稍后...'); // 加载显示
1054let data = {};
1055data["gn"]="sqssl";
1056data["list"]=arr;
1057data["type"]=settype;
1058$.post('./ajax.php', data, function (date) {
1059var json= JSON.parse(date);
1060
1061msalert(json.qk,json.code,4000);
1062if(json.qk==1){getssl();}
1063msloadingde(); // 隐藏
1064})
1065}
1066function geturllist(){
1067msloading('正在加载中,请稍后...','text-info','text-info','#url'); // 加载显示
1068let data = {};
1069data["gn"]="listurl";
1070$.post('./ajax.php', data, function (date) {
1071var list= JSON.parse(date);
1072var urls='';
1073var xhcs=1;
1074$.each(list['domains'],function(){
1075 urls+='<div class="custom-control custom-checkbox"><input type="checkbox" class="border border-white custom-control-input" id="url'+xhcs+'"><label class="custom-control-label" for="url'+xhcs+'">'+this.name+'</label></div>';
1076 xhcs++;
1077});
1078$('#url').html(urls);
1079msloadingde('#url');
1080})
1081}
1082</script>
1083
1084<?php
1085}
1086elseif($set=="gzip")
1087{
1088$cert=$DB->get_row_prepare("SELECT * FROM MN_bt WHERE btdh=? limit 1", [$ssbt]);
1089$btipe=($cert['ptl']=='true'?'https':'http').'://'.$cert['btip'].':'.$cert['btdk'];
1090$btkeye=$cert['btmy'];
1091include("./class.php");
1092$api = new bt_api($btipe,$btkeye);
1093$gzip_data = $api->get_gzip_status($yhc['sqldz']);
1094$gzip = $gzip_data['data'] ?? [];
1095$gzip_on = ($gzip['status'] ?? false) ? true : false;
1096$gzip_level = $gzip['comp_level'] ?? '6';
1097$gzip_min_len = $gzip['min_length'] ?? '1k';
1098$gzip_types = $gzip['gzip_types'] ?? 'text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/json image/jpeg image/gif image/png font/ttf font/otf image/svg+xml application/xml+rss text/x-js';
1099?>
1100<div class="col-sm-6">
1101 <div class="card">
1102 <div class="card-header">
1103 <h4>Gzip压缩配置</h4>
1104 <ul class="card-actions"></ul>
1105 </div>
1106 <div class="card-body">
1107 <div class="form-group">
1108 <label>Gzip压缩</label>
1109 <div class="switchery switchery-demo">
1110 <input type="checkbox" class="js-switch" id="gzipSwitch" <?=$gzip_on?'checked':''?> data-color="#7367f0" />
1111 </div>
1112 </div>
1113 <div class="form-group">
1114 <label>压缩级别(1-9)</label>
1115 <select class="form-control" id="gzipLevel">
1116 <?php for ($i = 1; $i <= 9; $i++): ?>
1117 <option value="<?=$i?>" <?=$i==$gzip_level?'selected':''?>><?=$i?></option>
1118 <?php endfor; ?>
1119 </select>
1120 </div>
1121 <div class="form-group">
1122 <label>最小压缩长度</label>
1123 <input class="form-control" id="gzipMinLen" value="<?=$gzip_min_len?>" placeholder="例如: 1k" />
1124 </div>
1125 <div class="form-group">
1126 <label>压缩类型(MIME类型,空格分隔)</label>
1127 <textarea class="form-control" id="gzipTypes" rows="4"><?=$gzip_types?></textarea>
1128 </div>
1129 <button class="btn btn-primary" onclick="saveGzip()"><label><i class="mdi mdi-checkbox-marked-circle-outline"></i></label>保存</button>
1130 </div>
1131 </div>
1132</div>
1133<script type="text/javascript">
1134function saveGzip() {
1135 msloading('正在保存...');
1136 var on = document.getElementById('gzipSwitch').checked;
1137 var data = {};
1138 data["gn"] = "setgzip";
1139 if (!on) {
1140 data["action"] = "off";
1141 } else {
1142 data["action"] = "on";
1143 data["level"] = document.getElementById('gzipLevel').value;
1144 data["min_len"] = document.getElementById('gzipMinLen').value;
1145 data["types"] = document.getElementById('gzipTypes').value;
1146 }
1147 $.post('./ajax.php', data, function(date) {
1148 var jsoe = JSON.parse(date);
1149 if (jsoe.code == '修改成功') {
1150 msalert(1, '修改成功!', 2000);
1151 } else {
1152 msalert(4, jsoe.code, 4000);
1153 }
1154 msloadingde();
1155 });
1156}
1157</script>
1158<?php
1159}
1160elseif($set=="cache")
1161{
1162$cert=$DB->get_row_prepare("SELECT * FROM MN_bt WHERE btdh=? limit 1", [$ssbt]);
1163$btipe=($cert['ptl']=='true'?'https':'http').'://'.$cert['btip'].':'.$cert['btdk'];
1164$btkeye=$cert['btmy'];
1165include("./class.php");
1166$api = new bt_api($btipe,$btkeye);
1167$cache_data = $api->get_static_cache($yhc['sqldz']);
1168$cache_rules = $cache_data['data'] ?? [];
1169?>
1170<script type="text/javascript" src="<?=mnbt_asset_url('js/jquery-confirm/jquery-confirm.min.js')?>"></script>
1171<div class="col-sm-8">
1172 <div class="card">
1173 <div class="card-header">
1174 <h4>缓存配置</h4>
1175 <ul class="card-actions"></ul>
1176 </div>
1177 <div class="card-body">
1178 <h5>当前缓存规则</h5>
1179 <table class="table table-bordered table-hover" id="cacheTable">
1180 <thead><tr><th>#</th><th>文件后缀</th><th>缓存时间</th><th>操作</th></tr></thead>
1181 <tbody>
1182 <?php if (empty($cache_rules)): ?>
1183 <tr><td colspan="4" class="text-center text-muted">暂无缓存规则</td></tr>
1184 <?php else: $idx=0; foreach ($cache_rules as $rule): ?>
1185 <?php $suffix = implode(',', $rule['suffix'] ?? []); $time_out = $rule['time_out'] ?? ''; ?>
1186 <tr>
1187 <td><?=$idx+1?></td>
1188 <td><?=htmlspecialchars($suffix)?></td>
1189 <td><?=htmlspecialchars($time_out)?></td>
1190 <td>
1191 <button class="btn btn-primary btn-xs" onclick='editCache(this, <?=json_encode($suffix, JSON_UNESCAPED_UNICODE)?>, <?=json_encode($time_out, JSON_UNESCAPED_UNICODE)?>)'>修改</button>
1192 <button class="btn btn-danger btn-xs" onclick='delCache(this, <?=json_encode($suffix, JSON_UNESCAPED_UNICODE)?>)'>删除</button>
1193 </td>
1194 </tr>
1195 <?php $idx++; endforeach; endif; ?>
1196 </tbody>
1197 </table>
1198 <hr>
1199 <h5>新增缓存规则</h5>
1200 <div class="form-inline">
1201 <div class="form-group mr-2">
1202 <label class="mr-1">文件后缀</label>
1203 <input class="form-control cache-ext" placeholder="如: css,js" />
1204 </div>
1205 <div class="form-group mr-2">
1206 <label class="mr-1">缓存时间</label>
1207 <input class="form-control cache-time-value" type="number" min="1" value="30" style="width:90px" />
1208 <select class="form-control ml-1 cache-time-unit">
1209 <option value="s">秒</option>
1210 <option value="m">分钟</option>
1211 <option value="h">小时</option>
1212 <option value="d" selected>天</option>
1213 </select>
1214 </div>
1215 <button class="btn btn-primary" onclick="addCache(this)">添加</button>
1216 </div>
1217 </div>
1218 </div>
1219</div>
1220
1221<div class="modal fade" id="cacheModal" tabindex="-1" role="dialog" aria-labelledby="cacheModalLabel">
1222 <div class="modal-dialog" role="document">
1223 <div class="modal-content">
1224 <div class="modal-header">
1225 <h6 class="modal-title" id="cacheModalLabel">修改缓存规则</h6>
1226 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
1227 </div>
1228 <div class="modal-body">
1229 <input type="hidden" class="cache-old-suffix" />
1230 <div class="form-group">
1231 <label>文件后缀</label>
1232 <input class="form-control cache-edit-ext" placeholder="如: css,js" />
1233 </div>
1234 <div class="form-group">
1235 <label>缓存时间</label>
1236 <div class="form-inline">
1237 <input class="form-control mr-1 cache-edit-time-value" type="number" min="1" style="width:100px" />
1238 <select class="form-control cache-edit-time-unit">
1239 <option value="s">秒</option>
1240 <option value="m">分钟</option>
1241 <option value="h">小时</option>
1242 <option value="d">天</option>
1243 </select>
1244 </div>
1245 </div>
1246 </div>
1247 <div class="modal-footer">
1248 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
1249 <button type="button" class="btn btn-primary" onclick="saveCacheEdit(this)">保存</button>
1250 </div>
1251 </div>
1252 </div>
1253</div>
1254<script type="text/javascript">
1255function addCache(btn) {
1256 var box = btn ? $(btn).closest('.card-body') : $('.cache-ext:visible').last().closest('.card-body');
1257 var suffix = $.trim(box.find('.cache-ext').val());
1258 var timeValue = $.trim(box.find('.cache-time-value').val());
1259 var timeUnit = box.find('.cache-time-unit').val();
1260 if (!suffix) { msalert(4, '请输入文件后缀', 2000); return; }
1261 if (!timeValue || parseInt(timeValue) < 1) { msalert(4, '请输入正确的缓存时间', 2000); return; }
1262 var time = timeValue + timeUnit;
1263 msloading('正在添加...');
1264 var data = {};
1265 data['gn'] = 'cacheadd';
1266 data['suffix'] = suffix;
1267 data['ext'] = suffix;
1268 data['time_out'] = time;
1269 data['time'] = time;
1270 $.post('./ajax.php', data, function(date) {
1271 var jsoe = JSON.parse(date);
1272 if (jsoe.code == '添加成功') {
1273 msalert(1, '添加成功!', 2000);
1274 setTimeout(function(){ location.reload(); }, 1500);
1275 } else {
1276 msalert(4, jsoe.code, 4000);
1277 msloadingde();
1278 }
1279 });
1280}
1281function editCache(btn, suffix, time) {
1282 if (typeof btn === 'string') {
1283 time = suffix;
1284 suffix = btn;
1285 btn = null;
1286 }
1287 var timeMatch = /^([0-9]+)([smhd])$/.exec(time || '30d');
1288 if (!timeMatch) timeMatch = ['30d', '30', 'd'];
1289 var modal = btn ? $(btn).closest('.col-sm-8').next('#cacheModal') : $('#cacheModal:visible').last();
1290 if (!modal.length) modal = $('#cacheModal').last();
1291 modal.find('.cache-old-suffix').val(suffix);
1292 modal.find('.cache-edit-ext').val(suffix);
1293 modal.find('.cache-edit-time-value').val(timeMatch[1]);
1294 modal.find('.cache-edit-time-unit').val(timeMatch[2]);
1295 modal.modal('show');
1296}
1297function saveCacheEdit(btn) {
1298 var modal = btn ? $(btn).closest('#cacheModal') : $('#cacheModal:visible').last();
1299 if (!modal.length) modal = $('#cacheModal').last();
1300 var oldSuffix = $.trim(modal.find('.cache-old-suffix').val());
1301 var suffix = $.trim(modal.find('.cache-edit-ext').val());
1302 var timeValue = $.trim(modal.find('.cache-edit-time-value').val());
1303 var timeUnit = modal.find('.cache-edit-time-unit').val();
1304 if (!suffix) { msalert(4, '请输入文件后缀', 2000, '#cacheModal'); return; }
1305 if (!timeValue || parseInt(timeValue) < 1) { msalert(4, '请输入正确的缓存时间', 2000, '#cacheModal'); return; }
1306 var time = timeValue + timeUnit;
1307 msloading('正在修改...');
1308 var data = {};
1309 data['gn'] = 'cacheedit';
1310 data['old_suffix'] = oldSuffix;
1311 data['suffix'] = suffix;
1312 data['ext'] = suffix;
1313 data['time_out'] = time;
1314 data['time'] = time;
1315 $.post('./ajax.php', data, function(date) {
1316 var jsoe = JSON.parse(date);
1317 if (jsoe.code == '修改成功') {
1318 msalert(1, '修改成功!', 2000, '#cacheModal');
1319 setTimeout(function(){ location.reload(); }, 1500);
1320 } else {
1321 msalert(4, jsoe.code, 4000, '#cacheModal');
1322 msloadingde();
1323 }
1324 });
1325}
1326function delCache(btn, suffix) {
1327 if (typeof suffix === 'undefined') {
1328 suffix = btn;
1329 btn = null;
1330 }
1331 suffix = $.trim(suffix || '');
1332 if (!suffix) { msalert(4, '参数错误', 2000); return; }
1333 $.confirm({
1334 title: '删除缓存规则',
1335 content: '确定删除后缀为 <b>' + suffix + '</b> 的缓存规则?',
1336 type: 'red',
1337 backgroundDismiss: true,
1338 buttons: {
1339 ok: {
1340 text: '确定删除',
1341 btnClass: 'btn-danger',
1342 action: function() {
1343 msloading('正在删除...');
1344 var data = {};
1345 data['gn'] = 'cachedel';
1346 data['suffix'] = suffix;
1347 data['ext'] = suffix;
1348 $.post('./ajax.php', data, function(date) {
1349 var jsoe = JSON.parse(date);
1350 if (jsoe.code == '删除成功') {
1351 msalert(1, '删除成功!', 2000);
1352 setTimeout(function(){ location.reload(); }, 1500);
1353 } else {
1354 msalert(4, jsoe.code, 4000);
1355 msloadingde();
1356 }
1357 });
1358 }
1359 },
1360 cancel: {
1361 text: '取消'
1362 }
1363 }
1364 });
1365}
1366</script>
1367<?php
1368}
1369?>