InPanel 1.2.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- inpanel/__init__.py +29 -0
- inpanel/acme.py +289 -0
- inpanel/aliyuncs.py +269 -0
- inpanel/app.py +514 -0
- inpanel/apt.py +223 -0
- inpanel/base.py +200 -0
- inpanel/config.py +139 -0
- inpanel/data/config.ini +29 -0
- inpanel/data/history +5 -0
- inpanel/data/runlogs.ini +12 -0
- inpanel/data/update_info.ini +4 -0
- inpanel/dnf.py +225 -0
- inpanel/lib/__init__.py +9 -0
- inpanel/lib/async_process.py +98 -0
- inpanel/lib/filelock.py +82 -0
- inpanel/lib/magic.py +233 -0
- inpanel/lib/pxssh.py +310 -0
- inpanel/lib/pyDes.py +867 -0
- inpanel/mod/__init__.py +0 -0
- inpanel/mod/apt.py +316 -0
- inpanel/mod/certificate.py +268 -0
- inpanel/mod/config.py +372 -0
- inpanel/mod/cron.py +315 -0
- inpanel/mod/disk.py +322 -0
- inpanel/mod/dnf.py +239 -0
- inpanel/mod/file.py +722 -0
- inpanel/mod/firewall.py +199 -0
- inpanel/mod/firewall_base.py +137 -0
- inpanel/mod/firewall_firewalld.py +170 -0
- inpanel/mod/firewall_iptables.py +176 -0
- inpanel/mod/firewall_macos.py +213 -0
- inpanel/mod/firewall_ufw.py +128 -0
- inpanel/mod/ftp.py +231 -0
- inpanel/mod/httpd.py +1205 -0
- inpanel/mod/lighttpd.py +26 -0
- inpanel/mod/login.py +98 -0
- inpanel/mod/mysql.py +577 -0
- inpanel/mod/named.py +26 -0
- inpanel/mod/nginx.py +2327 -0
- inpanel/mod/package.py +33 -0
- inpanel/mod/package_apt.py +62 -0
- inpanel/mod/package_base.py +77 -0
- inpanel/mod/package_dnf.py +62 -0
- inpanel/mod/package_map.py +366 -0
- inpanel/mod/package_yum.py +64 -0
- inpanel/mod/php.py +289 -0
- inpanel/mod/process.py +291 -0
- inpanel/mod/proftpd.py +26 -0
- inpanel/mod/pureftpd.py +26 -0
- inpanel/mod/query.py +108 -0
- inpanel/mod/server.py +1319 -0
- inpanel/mod/service.py +262 -0
- inpanel/mod/setting.py +228 -0
- inpanel/mod/shell.py +78 -0
- inpanel/mod/ssh.py +280 -0
- inpanel/mod/system.py +220 -0
- inpanel/mod/task.py +1337 -0
- inpanel/mod/ufw.py +14 -0
- inpanel/mod/user.py +306 -0
- inpanel/mod/vsftpd.py +67 -0
- inpanel/mod/yum.py +243 -0
- inpanel/plugins/__init__.py +10 -0
- inpanel/plugins/__pycache__/__init__.cpython-313.pyc +0 -0
- inpanel/plugins/acme/static/index.html +10 -0
- inpanel/plugins/acme/static/index.js +13 -0
- inpanel/plugins/shadowsocks-libev/__pycache__/info.cpython-313.pyc +0 -0
- inpanel/plugins/shadowsocks-libev/info.py +73 -0
- inpanel/plugins/shadowsocks-libev/static/index.html +70 -0
- inpanel/plugins/shadowsocks-libev/static/index.js +18 -0
- inpanel/public/css/global.css +138 -0
- inpanel/public/favicon.ico +0 -0
- inpanel/public/images/alipay.jpg +0 -0
- inpanel/public/images/loading.gif +0 -0
- inpanel/public/images/weixin.jpg +0 -0
- inpanel/public/index.html +94 -0
- inpanel/public/js/controllers/controllers.js +566 -0
- inpanel/public/js/controllers/database.js +590 -0
- inpanel/public/js/controllers/ecs.js +624 -0
- inpanel/public/js/controllers/file.js +940 -0
- inpanel/public/js/controllers/plugins.js +105 -0
- inpanel/public/js/controllers/service.js +1460 -0
- inpanel/public/js/controllers/site.js +1241 -0
- inpanel/public/js/controllers/utils.js +2319 -0
- inpanel/public/js/core.js +221 -0
- inpanel/public/js/directives.js +784 -0
- inpanel/public/js/filters.js +395 -0
- inpanel/public/js/services.js +257 -0
- inpanel/public/lib/angular/1.0.2/angular-resource.min.js +10 -0
- inpanel/public/lib/angular/1.0.2/angular.min.js +158 -0
- inpanel/public/lib/bootstrap/css/bootstrap-theme.css +587 -0
- inpanel/public/lib/bootstrap/css/bootstrap-theme.css.map +1 -0
- inpanel/public/lib/bootstrap/css/bootstrap-theme.min.css +6 -0
- inpanel/public/lib/bootstrap/css/bootstrap-theme.min.css.map +1 -0
- inpanel/public/lib/bootstrap/css/bootstrap.css +6757 -0
- inpanel/public/lib/bootstrap/css/bootstrap.css.map +1 -0
- inpanel/public/lib/bootstrap/css/bootstrap.min.css +6 -0
- inpanel/public/lib/bootstrap/css/bootstrap.min.css.map +1 -0
- inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
- inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.svg +288 -0
- inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
- inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
- inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
- inpanel/public/lib/bootstrap/img/glyphicons-halflings-white.png +0 -0
- inpanel/public/lib/bootstrap/img/glyphicons-halflings.png +0 -0
- inpanel/public/lib/bootstrap/js/bootstrap.js +2377 -0
- inpanel/public/lib/bootstrap/js/bootstrap.min.js +7 -0
- inpanel/public/lib/bootstrap/js/npm.js +13 -0
- inpanel/public/lib/codemirror/codemirror-compressed.js +1 -0
- inpanel/public/lib/codemirror/codemirror.css +173 -0
- inpanel/public/lib/jquery/jquery-1.12.4.min.js +5 -0
- inpanel/public/lib/md5/md5.js +379 -0
- inpanel/public/lib/md5/md5.min.js +1 -0
- inpanel/public/partials/database/index.html +172 -0
- inpanel/public/partials/database/mysql/dbedit.html +462 -0
- inpanel/public/partials/database/mysql/dbnew.html +348 -0
- inpanel/public/partials/database/mysql/useredit.html +310 -0
- inpanel/public/partials/database/mysql/usernew.html +97 -0
- inpanel/public/partials/directives/message.html +20 -0
- inpanel/public/partials/directives/navbar.html +25 -0
- inpanel/public/partials/directives/selector.html +57 -0
- inpanel/public/partials/directives/srvbase.html +72 -0
- inpanel/public/partials/directives/srvext.html +34 -0
- inpanel/public/partials/directives/srvfile.html +23 -0
- inpanel/public/partials/directives/srvinstall.html +34 -0
- inpanel/public/partials/directives/srvlog.html +23 -0
- inpanel/public/partials/directives/srvminiop.html +28 -0
- inpanel/public/partials/directives/srvuninstall.html +38 -0
- inpanel/public/partials/directives/srvupdate.html +30 -0
- inpanel/public/partials/ecs/account.html +156 -0
- inpanel/public/partials/ecs/ecs.html +198 -0
- inpanel/public/partials/ecs/index.html +40 -0
- inpanel/public/partials/ecs/setings.html +459 -0
- inpanel/public/partials/file/file.html +501 -0
- inpanel/public/partials/file/trash.html +95 -0
- inpanel/public/partials/ftp.html +36 -0
- inpanel/public/partials/log.html +83 -0
- inpanel/public/partials/login.html +79 -0
- inpanel/public/partials/logout.html +22 -0
- inpanel/public/partials/main.html +534 -0
- inpanel/public/partials/plugins/index.html +55 -0
- inpanel/public/partials/plugins/plugins.html +13 -0
- inpanel/public/partials/secure.html +13 -0
- inpanel/public/partials/service/apache.html +147 -0
- inpanel/public/partials/service/cron.html +71 -0
- inpanel/public/partials/service/index.html +293 -0
- inpanel/public/partials/service/iptables.html +40 -0
- inpanel/public/partials/service/lighttpd.html +63 -0
- inpanel/public/partials/service/mariadb.html +113 -0
- inpanel/public/partials/service/memcache.html +36 -0
- inpanel/public/partials/service/minio.html +44 -0
- inpanel/public/partials/service/mongodb.html +44 -0
- inpanel/public/partials/service/mysql.html +113 -0
- inpanel/public/partials/service/named.html +61 -0
- inpanel/public/partials/service/nginx.html +296 -0
- inpanel/public/partials/service/ntp.html +40 -0
- inpanel/public/partials/service/php.html +250 -0
- inpanel/public/partials/service/proftpd.html +59 -0
- inpanel/public/partials/service/pureftpd.html +59 -0
- inpanel/public/partials/service/redis.html +40 -0
- inpanel/public/partials/service/samba.html +58 -0
- inpanel/public/partials/service/sendmail.html +40 -0
- inpanel/public/partials/service/ssh.html +186 -0
- inpanel/public/partials/service/tomcat.html +65 -0
- inpanel/public/partials/service/vsftpd.html +195 -0
- inpanel/public/partials/setting.html +299 -0
- inpanel/public/partials/site/apache/site.html +277 -0
- inpanel/public/partials/site/index.html +344 -0
- inpanel/public/partials/site/nginx/site.html +558 -0
- inpanel/public/partials/sorry.html +19 -0
- inpanel/public/partials/storage/autofm.html +103 -0
- inpanel/public/partials/storage/backup.html +42 -0
- inpanel/public/partials/storage/index.html +360 -0
- inpanel/public/partials/storage/migrate.html +93 -0
- inpanel/public/partials/storage/movedata.html +98 -0
- inpanel/public/partials/storage/remote.html +77 -0
- inpanel/public/partials/utils/cron.html +486 -0
- inpanel/public/partials/utils/firewall.html +266 -0
- inpanel/public/partials/utils/index.html +193 -0
- inpanel/public/partials/utils/network.html +118 -0
- inpanel/public/partials/utils/process.html +239 -0
- inpanel/public/partials/utils/repository.html +373 -0
- inpanel/public/partials/utils/shell.html +28 -0
- inpanel/public/partials/utils/ssl.html +319 -0
- inpanel/public/partials/utils/time.html +109 -0
- inpanel/public/partials/utils/user.html +359 -0
- inpanel/public/robots.txt +2 -0
- inpanel/remote.py +109 -0
- inpanel/templates/file/preview.html +34 -0
- inpanel/templates/index.html +93 -0
- inpanel/utils.py +282 -0
- inpanel/web.py +1811 -0
- inpanel/yum.py +756 -0
- inpanel-1.2.1.dist-info/METADATA +399 -0
- inpanel-1.2.1.dist-info/RECORD +198 -0
- inpanel-1.2.1.dist-info/WHEEL +5 -0
- inpanel-1.2.1.dist-info/entry_points.txt +2 -0
- inpanel-1.2.1.dist-info/licenses/LICENSE +30 -0
- inpanel-1.2.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='service.nginx'"></div>
|
|
2
|
+
<div ng-show="Auth.processing||!loaded">
|
|
3
|
+
<div loading></div>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
6
|
+
<div id="main" ng-show="!Auth.processing&&loaded" style="display:none" ng-init="checkInstalled()">
|
|
7
|
+
<div class="module-header">
|
|
8
|
+
<h3>Nginx - 高性能的 HTTP 服务器软件</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div srvinstall ng-init="name='Nginx';pkg='nginx';expected_repolist=['base','CentALT','atomic'];"></div>
|
|
12
|
+
|
|
13
|
+
<div class="tabbable" ng-show="installed">
|
|
14
|
+
<ul class="nav nav-tabs">
|
|
15
|
+
<li ng-class="'active' | iftrue:activeTabName=='base'"><a href="#base" ng-click="sec('base')" data-toggle="tab">基本信息</a></li>
|
|
16
|
+
<li ng-class="'active' | iftrue:activeTabName=='setting'"><a href="#setting" ng-click="sec('setting')" data-toggle="tab">基本设置</a></li>
|
|
17
|
+
<li ng-class="'active' | iftrue:activeTabName=='proxy'"><a href="#proxy" ng-click="sec('proxy')" data-toggle="tab">反向代理</a></li>
|
|
18
|
+
<li ng-class="'active' | iftrue:activeTabName=='ext'"><a href="#ext" ng-click="sec('ext')" data-toggle="tab">扩展</a></li>
|
|
19
|
+
<li ng-class="'active' | iftrue:activeTabName=='configfile'"><a href="#configfile" ng-click="sec('configfile')" data-toggle="tab">配置文件</a></li>
|
|
20
|
+
<li ng-class="'active' | iftrue:activeTabName=='logfile'"><a href="#logfile" ng-click="sec('logfile')" data-toggle="tab">日志</a></li>
|
|
21
|
+
<li ng-class="'active' | iftrue:activeTabName=='update'"><a href="#update" ng-click="sec('update')" data-toggle="tab">升级</a></li>
|
|
22
|
+
<li ng-class="'active' | iftrue:activeTabName=='uninstall'"><a href="#uninstall" ng-click="sec('uninstall')" data-toggle="tab">卸载</a></li>
|
|
23
|
+
</ul>
|
|
24
|
+
<div class="tab-content">
|
|
25
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='base'" id="base">
|
|
26
|
+
<div srvbase ng-init="name='Nginx';pkg='nginx';service='nginx';"></div>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='setting'" id="setting">
|
|
29
|
+
<table class="table table-borderless" style="width: 400px;">
|
|
30
|
+
<thead>
|
|
31
|
+
<tr>
|
|
32
|
+
<th colspan="2">连接/传输设置</th>
|
|
33
|
+
</tr>
|
|
34
|
+
</thead>
|
|
35
|
+
<tbody>
|
|
36
|
+
<tr>
|
|
37
|
+
<td style="width:130px">单个连接下载限速</td>
|
|
38
|
+
<td>
|
|
39
|
+
<div class="input-group">
|
|
40
|
+
<input class="form-control" type="text" ng-model="setting.limit_rate" placeholder="不限制">
|
|
41
|
+
<span class="input-group-addon">KB / S</span>
|
|
42
|
+
</div>
|
|
43
|
+
</td>
|
|
44
|
+
</tr>
|
|
45
|
+
<tr>
|
|
46
|
+
<td>单个IP连接数限制</td>
|
|
47
|
+
<td>
|
|
48
|
+
<div class="input-group">
|
|
49
|
+
<input class="form-control" type="text" ng-model="setting.limit_conn" placeholder="不限制">
|
|
50
|
+
<span class="input-group-addon">个</span>
|
|
51
|
+
</div>
|
|
52
|
+
</td>
|
|
53
|
+
</tr>
|
|
54
|
+
<tr>
|
|
55
|
+
<td>连接计数内存限制</td>
|
|
56
|
+
<td>
|
|
57
|
+
<div class="input-group">
|
|
58
|
+
<input class="form-control" type="text" ng-model="setting.limit_conn_zone" placeholder="不限制">
|
|
59
|
+
<span class="input-group-addon">MB</span>
|
|
60
|
+
</div>
|
|
61
|
+
</td>
|
|
62
|
+
</tr>
|
|
63
|
+
<tr>
|
|
64
|
+
<td>上传文件大小限制</td>
|
|
65
|
+
<td>
|
|
66
|
+
<div class="input-group">
|
|
67
|
+
<input class="form-control" type="text" ng-model="setting.client_max_body_size" placeholder="不限制">
|
|
68
|
+
<span class="input-group-addon">MB</span>
|
|
69
|
+
</div>
|
|
70
|
+
</td>
|
|
71
|
+
</tr>
|
|
72
|
+
<tr>
|
|
73
|
+
<td>保持连接超时</td>
|
|
74
|
+
<td>
|
|
75
|
+
<div class="input-group">
|
|
76
|
+
<input class="form-control" type="text" ng-model="setting.keepalive_timeout" placeholder="不限制">
|
|
77
|
+
<span class="input-group-addon">秒</span>
|
|
78
|
+
</div>
|
|
79
|
+
</td>
|
|
80
|
+
</tr>
|
|
81
|
+
</tbody>
|
|
82
|
+
</table>
|
|
83
|
+
<table class="table table-borderless" style="width:400px;">
|
|
84
|
+
<thead>
|
|
85
|
+
<tr>
|
|
86
|
+
<th colspan="2">访问限制</th>
|
|
87
|
+
</tr>
|
|
88
|
+
</thead>
|
|
89
|
+
<tbody>
|
|
90
|
+
<tr>
|
|
91
|
+
<td style="width:80px">黑白名单</td>
|
|
92
|
+
<td>
|
|
93
|
+
<label><input type="radio" ng-model="setting.access_status" value="off"> 未启用</label>
|
|
94
|
+
<label><input type="radio" ng-model="setting.access_status" value="black"> 启用黑名单</label>
|
|
95
|
+
<label><input type="radio" ng-model="setting.access_status" value="white"> 启用白名单</label>
|
|
96
|
+
</td>
|
|
97
|
+
</tr>
|
|
98
|
+
<tr ng-show="setting.access_status=='white'" style="display:none">
|
|
99
|
+
<td>白名单</td>
|
|
100
|
+
<td>
|
|
101
|
+
<textarea class="form-control" ng-model="setting.allow" placeholder="每行填写一个IP或网段"></textarea>
|
|
102
|
+
<p class="help-block" ng-show="ip">(您当前的 IP 为 {{ip}})</p>
|
|
103
|
+
</td>
|
|
104
|
+
</tr>
|
|
105
|
+
<tr ng-show="setting.access_status=='black'" style="display:none">
|
|
106
|
+
<td>黑名单</td>
|
|
107
|
+
<td>
|
|
108
|
+
<textarea class="form-control" ng-model="setting.deny" placeholder="每行填写一个IP或网段"></textarea>
|
|
109
|
+
<p class="help-block" ng-show="ip">(您当前的 IP 为 {{ip}})</p>
|
|
110
|
+
</td>
|
|
111
|
+
</tr>
|
|
112
|
+
<tr ng-show="setting.access_status!='off'" style="display:none">
|
|
113
|
+
<td colspan="2">
|
|
114
|
+
网段示例:
|
|
115
|
+
<ul>
|
|
116
|
+
<li>192.168.1.0/24 表示:192.168.1<i style="color:#aaa">.0</i> ~ 192.168.1<i style="color:#aaa">.255</i></li>
|
|
117
|
+
<li>192.168.0.0/16 表示:192.168<i style="color:#aaa">.0.0</i> ~ 192.168<i style="color:#aaa">.255.255</i></li>
|
|
118
|
+
</ul>
|
|
119
|
+
</td>
|
|
120
|
+
</tr>
|
|
121
|
+
</tbody>
|
|
122
|
+
</table>
|
|
123
|
+
<table class="table table-borderless table-condensed" style="width:400px;">
|
|
124
|
+
<thead>
|
|
125
|
+
<tr>
|
|
126
|
+
<th colspan="2">其它设置</th>
|
|
127
|
+
</tr>
|
|
128
|
+
</thead>
|
|
129
|
+
<tbody>
|
|
130
|
+
<tr>
|
|
131
|
+
<td style="width:80px">GZIP压缩</td>
|
|
132
|
+
<td>
|
|
133
|
+
<label><input ng-model="setting.gzip" type="checkbox">开启GZIP压缩</label>
|
|
134
|
+
</td>
|
|
135
|
+
</tr>
|
|
136
|
+
</tbody>
|
|
137
|
+
</table>
|
|
138
|
+
<p><button class="btn btn-primary" ng-click="savesettings()">保存设置</button></p>
|
|
139
|
+
</div>
|
|
140
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='proxy'" id="proxy">
|
|
141
|
+
<p>反向代理缓存设置</p>
|
|
142
|
+
<p>
|
|
143
|
+
<button class="btn btn-default btn-sm" ng-click="addcache($index)" ng-show="proxy_caches.length==0" style="display:none">
|
|
144
|
+
<i class="icon-plus"></i> 添加缓存区
|
|
145
|
+
</button>
|
|
146
|
+
</p>
|
|
147
|
+
<div class="tabbable" ng-show="proxy_caches.length>0" style="display:none">
|
|
148
|
+
<ul class="nav nav-tabs">
|
|
149
|
+
<li ng-repeat="cache in proxy_caches" ng-class="'active'|iftrue:$index==curcache" ng-click="setcache($index)">
|
|
150
|
+
<a href="#cache_{{$index}}" data-toggle="tab">{{cache.name}}</a>
|
|
151
|
+
</li>
|
|
152
|
+
<li>
|
|
153
|
+
<button class="btn btn-default btn-sm" ng-click="addcache()" style="margin-left:20px;margin-top:5px">
|
|
154
|
+
<i class="icon-plus"></i> 添加缓存区
|
|
155
|
+
</button>
|
|
156
|
+
<button class="btn btn-default btn-sm" ng-click="deletecache(curcache)" style="margin-left:10px;margin-top:5px">
|
|
157
|
+
<i class="icon-minus"></i> 删除缓存区
|
|
158
|
+
</button>
|
|
159
|
+
</li>
|
|
160
|
+
</ul>
|
|
161
|
+
<div class="tab-content">
|
|
162
|
+
<div class="tab-pane" ng-repeat="cache in proxy_caches" ng-class="'active'|iftrue:$index==curcache" id="cache_{{$index}}">
|
|
163
|
+
<table class="table table-borderless">
|
|
164
|
+
<tr>
|
|
165
|
+
<td style="width:100px">缓存区名称</td>
|
|
166
|
+
<td>
|
|
167
|
+
<div class="form-inline">
|
|
168
|
+
<input class="form-control" ng-model="cache.name" type="text" placeholder="用于标识不同的缓存区,如:cache1">
|
|
169
|
+
</div>
|
|
170
|
+
</td>
|
|
171
|
+
</tr>
|
|
172
|
+
<tr>
|
|
173
|
+
<td>缓存计数内存</td>
|
|
174
|
+
<td>
|
|
175
|
+
<div class="form-inline">
|
|
176
|
+
<div class="input-group">
|
|
177
|
+
<input class="form-control" type="text" ng-model="cache.mem">
|
|
178
|
+
<span class="input-group-addon">MB</span>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
</td>
|
|
182
|
+
</tr>
|
|
183
|
+
<tr>
|
|
184
|
+
<td>缓存文件目录</td>
|
|
185
|
+
<td>
|
|
186
|
+
<div class="form-inline">
|
|
187
|
+
<div class="input-group">
|
|
188
|
+
<input class="form-control" ng-model="cache.path" type="text" placeholder="缓存文件保存在的目录">
|
|
189
|
+
<span class="input-group-btn">
|
|
190
|
+
<button class="btn btn-default" ng-click="selectcachefolder($index)"><i class="glyphicon glyphicon-folder-open"></i></button>
|
|
191
|
+
</span>
|
|
192
|
+
</div><br>
|
|
193
|
+
<label class="checkbox">
|
|
194
|
+
<input ng-model="cache.autocreate" type="checkbox">目录不存在时,自动创建目录
|
|
195
|
+
</label>
|
|
196
|
+
</div>
|
|
197
|
+
</td>
|
|
198
|
+
</tr>
|
|
199
|
+
<tr>
|
|
200
|
+
<td>缓存目录规则</td>
|
|
201
|
+
<td>
|
|
202
|
+
<div class="form-group form-inline">
|
|
203
|
+
<label>第一级目录名长度:</label>
|
|
204
|
+
<div class="input-group">
|
|
205
|
+
<input class="form-control" type="text" ng-model="cache.path_level_1">
|
|
206
|
+
<span class="input-group-addon">个字母</span>
|
|
207
|
+
</div>
|
|
208
|
+
</div>
|
|
209
|
+
<div class="form-group form-inline">
|
|
210
|
+
<label>第二级目录名长度(0表示不使用该级):</label>
|
|
211
|
+
<div class="input-group">
|
|
212
|
+
<input class="form-control" type="text" ng-model="cache.path_level_2">
|
|
213
|
+
<span class="input-group-addon">个字母</span>
|
|
214
|
+
</div>
|
|
215
|
+
</div>
|
|
216
|
+
<div class="form-group form-inline">
|
|
217
|
+
<label>第三级目录名长度(0表示不使用该级):</label>
|
|
218
|
+
<div class="input-group">
|
|
219
|
+
<input class="form-control" type="text" ng-model="cache.path_level_3">
|
|
220
|
+
<span class="input-group-addon">个字母</span>
|
|
221
|
+
</div>
|
|
222
|
+
</div>
|
|
223
|
+
</td>
|
|
224
|
+
</tr>
|
|
225
|
+
<tr>
|
|
226
|
+
<td>缓存删除规则</td>
|
|
227
|
+
<td>
|
|
228
|
+
<p class="help-block">以下时间内,缓存未被访问将被删除:</p>
|
|
229
|
+
<div class="form-inline">
|
|
230
|
+
<input class="form-control" type="text" ng-model="cache.inactive">
|
|
231
|
+
<select class="form-control" style="width:80px" ng-model="cache.inactive_unit">
|
|
232
|
+
<option value="s">秒</option>
|
|
233
|
+
<option value="m">分钟</option>
|
|
234
|
+
<option value="h">小时</option>
|
|
235
|
+
<option value="d">天</option>
|
|
236
|
+
</select>
|
|
237
|
+
</div>
|
|
238
|
+
</td>
|
|
239
|
+
</tr>
|
|
240
|
+
<tr>
|
|
241
|
+
<td>缓存大小限制</td>
|
|
242
|
+
<td>
|
|
243
|
+
<div class="form-inline">
|
|
244
|
+
<input class="form-control" type="text" ng-model="cache.max_size">
|
|
245
|
+
<select class="form-control" style="width:80px" ng-model="cache.max_size_unit">
|
|
246
|
+
<option value="m">MB</option>
|
|
247
|
+
<option value="g">GB</option>
|
|
248
|
+
</select>
|
|
249
|
+
</div>
|
|
250
|
+
</td>
|
|
251
|
+
</tr>
|
|
252
|
+
</table>
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
</div>
|
|
256
|
+
<p><button class="btn btn-primary" ng-click="savecaches()">保存设置</button></p>
|
|
257
|
+
</div>
|
|
258
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='ext'" id="ext">
|
|
259
|
+
<div srvext ng-init="name='Nginx';pkg='nginx';"></div>
|
|
260
|
+
</div>
|
|
261
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='configfile'" id="configfile">
|
|
262
|
+
<div srvfile ng-init="items=[
|
|
263
|
+
{name: '主目录', path: '/etc/nginx', isdir: true},
|
|
264
|
+
{name: '主配置', path: '/etc/nginx/nginx.conf', isfile: true},
|
|
265
|
+
{name: 'MIME类型', path:'/etc/nginx/mime.types', isfile: true},
|
|
266
|
+
{name:'扩展配置', path:'/etc/nginx/conf.d', isdir: true}];"></div>
|
|
267
|
+
</div>
|
|
268
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='logfile'" id="logfile">
|
|
269
|
+
<div srvlog ng-init="items=[{name:'日志目录', path:'/var/log/nginx', isdir:true}];"></div>
|
|
270
|
+
</div>
|
|
271
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='update'" id="update">
|
|
272
|
+
<div srvupdate ng-init="name='Nginx';pkg='nginx';"></div>
|
|
273
|
+
</div>
|
|
274
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='uninstall'" id="uninstall">
|
|
275
|
+
<div srvuninstall ng-init="name='Nginx';pkg='nginx';"></div>
|
|
276
|
+
</div>
|
|
277
|
+
</div>
|
|
278
|
+
</div>
|
|
279
|
+
</div>
|
|
280
|
+
|
|
281
|
+
<div id="selector" class="modal fade">
|
|
282
|
+
<div class="modal-dialog" role="document">
|
|
283
|
+
<div class="modal-content">
|
|
284
|
+
<div class="modal-header">
|
|
285
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
286
|
+
<h3 class="modal-title">{{selector_title}}</h3>
|
|
287
|
+
</div>
|
|
288
|
+
<div class="modal-body">
|
|
289
|
+
<div selector></div>
|
|
290
|
+
</div>
|
|
291
|
+
<div class="modal-footer">
|
|
292
|
+
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">取消</button>
|
|
293
|
+
</div>
|
|
294
|
+
</div>
|
|
295
|
+
</div>
|
|
296
|
+
</div>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='service.cron'"></div>
|
|
2
|
+
<div ng-show="Auth.processing||!loaded">
|
|
3
|
+
<div loading></div>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
6
|
+
<div id="main" ng-show="!Auth.processing&&loaded" style="display:none" ng-init="checkInstalled()">
|
|
7
|
+
<div class="module-header">
|
|
8
|
+
<h3>NTP - 时间同步服务</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div srvinstall ng-init="name='NTP';pkg='ntp';expected_repolist=['base'];"></div>
|
|
12
|
+
|
|
13
|
+
<div class="tabbable" ng-show="installed">
|
|
14
|
+
<ul class="nav nav-tabs">
|
|
15
|
+
<li ng-class="'active' | iftrue:activeTabName=='base'"><a href="#base" data-toggle="tab">基本信息</a></li>
|
|
16
|
+
<li ng-class="'active' | iftrue:activeTabName=='ext'"><a href="#ext" ng-click="sec('ext')" data-toggle="tab">扩展</a></li>
|
|
17
|
+
<li ng-class="'active' | iftrue:activeTabName=='configfile'"><a href="#configfile" data-toggle="tab">配置文件</a></li>
|
|
18
|
+
<li ng-class="'active' | iftrue:activeTabName=='update'"><a href="#update" data-toggle="tab">升级</a></li>
|
|
19
|
+
<li ng-class="'active' | iftrue:activeTabName=='uninstall'"><a href="#uninstall" data-toggle="tab">卸载</a></li>
|
|
20
|
+
</ul>
|
|
21
|
+
<div class="tab-content">
|
|
22
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='base'" id="base">
|
|
23
|
+
<div srvbase ng-init="name='NTP';pkg='ntp';service='ntpd';"></div>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='ext'" id="ext">
|
|
26
|
+
<div srvext ng-init="name='NTP';pkg='ntp';"></div>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='configfile'" id="configfile">
|
|
29
|
+
<div srvfile ng-init="items=[{name:'主配置', path:'/etc/ntp.conf', isfile:true}, {name:'', path:'/etc/ntp', isdir:true}];"></div>
|
|
30
|
+
</div>
|
|
31
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='update'" id="update">
|
|
32
|
+
<div srvupdate ng-init="name='NTP';pkg='ntp';"></div>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='uninstall'" id="uninstall">
|
|
35
|
+
<div srvuninstall ng-init="name='NTP';pkg='ntp';"></div>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
</div>
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='service.php'"></div>
|
|
2
|
+
<div ng-show="!loaded">
|
|
3
|
+
<div loading></div>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
6
|
+
<div id="main" ng-show="loaded" style="display:none" ng-init="checkInstalled()">
|
|
7
|
+
<div class="module-header">
|
|
8
|
+
<h3>PHP - 脚本解析器</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div srvinstall ng-init="name='PHP';pkg='php';expected_repolist=['base','CentALT','ius','atomic'];"></div>
|
|
12
|
+
|
|
13
|
+
<div class="tabbable" ng-show="installed">
|
|
14
|
+
<ul class="nav nav-tabs">
|
|
15
|
+
<li ng-class="'active' | iftrue:activeTabName=='base'"><a href="#base" ng-click="sec('base')" data-toggle="tab">基本信息</a></li>
|
|
16
|
+
<li ng-class="'active' | iftrue:activeTabName=='setting'"><a href="#setting" ng-click="sec('setting')" data-toggle="tab">服务设置</a></li>
|
|
17
|
+
<li ng-class="'active' | iftrue:activeTabName=='ext'"><a href="#ext" ng-click="sec('ext')" data-toggle="tab">扩展</a></li>
|
|
18
|
+
<li ng-class="'active' | iftrue:activeTabName=='configfile'"><a href="#configfile" ng-click="sec('configfile')" data-toggle="tab">配置文件</a></li>
|
|
19
|
+
<li ng-class="'active' | iftrue:activeTabName=='logfile'"><a href="#logfile" ng-click="sec('logfile')" data-toggle="tab">日志</a></li>
|
|
20
|
+
<li ng-class="'active' | iftrue:activeTabName=='update'"><a href="#update" ng-click="sec('update')" data-toggle="tab">升级</a></li>
|
|
21
|
+
<li ng-class="'active' | iftrue:activeTabName=='uninstall'"><a href="#uninstall" ng-click="sec('uninstall')" data-toggle="tab">卸载</a></li>
|
|
22
|
+
</ul>
|
|
23
|
+
<div class="tab-content">
|
|
24
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='base'" id="base">
|
|
25
|
+
<div srvbase ng-init="name='PHP';pkg='php';service='php-fpm';"></div>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='setting'" id="setting">
|
|
28
|
+
<table class="table table-hover table-bordered">
|
|
29
|
+
<thead>
|
|
30
|
+
<tr>
|
|
31
|
+
<th colspan="2">PHP 信息</th>
|
|
32
|
+
</tr>
|
|
33
|
+
</thead>
|
|
34
|
+
<tbody>
|
|
35
|
+
<tr>
|
|
36
|
+
<td>查看 phpinfo</td>
|
|
37
|
+
<td style="width:200px;">
|
|
38
|
+
<a class="btn btn-default btn-xs" target="_blank" href="/page/php/phpinfo">
|
|
39
|
+
新窗口中查看 <i class="icon-chevron-right"></i>
|
|
40
|
+
</a>
|
|
41
|
+
</td>
|
|
42
|
+
</tr>
|
|
43
|
+
</tbody>
|
|
44
|
+
</table>
|
|
45
|
+
<table class="table table-hover table-bordered">
|
|
46
|
+
<thead>
|
|
47
|
+
<tr>
|
|
48
|
+
<th>PHP 设置项</th>
|
|
49
|
+
<th>说明</th>
|
|
50
|
+
<th style="width:200px;"></th>
|
|
51
|
+
</tr>
|
|
52
|
+
</thead>
|
|
53
|
+
<tbody>
|
|
54
|
+
<tr>
|
|
55
|
+
<td>short_open_tag</td>
|
|
56
|
+
<td>是否要支持 PHP 代码的短开始标签 <?</td>
|
|
57
|
+
<td>
|
|
58
|
+
<label><input type="checkbox" ng-model="setting.php.short_open_tag"> 支持</label>
|
|
59
|
+
</td>
|
|
60
|
+
</tr>
|
|
61
|
+
<tr>
|
|
62
|
+
<td>expose_php</td>
|
|
63
|
+
<td>是否在 HTTP 头中包含 PHP 版本信息</td>
|
|
64
|
+
<td>
|
|
65
|
+
<label><input type="checkbox" ng-model="setting.php.expose_php"> 包含</label>
|
|
66
|
+
</td>
|
|
67
|
+
</tr>
|
|
68
|
+
<tr>
|
|
69
|
+
<td>max_execution_time</td>
|
|
70
|
+
<td>脚本最长执行时间</td>
|
|
71
|
+
<td>
|
|
72
|
+
<div class="input-group input-group-sm">
|
|
73
|
+
<input type="text" class="form-control" ng-model="setting.php.max_execution_time">
|
|
74
|
+
<span class="input-group-addon">秒</span>
|
|
75
|
+
</div>
|
|
76
|
+
</td>
|
|
77
|
+
</tr>
|
|
78
|
+
<tr>
|
|
79
|
+
<td>memory_limit</td>
|
|
80
|
+
<td>单个PHP进程的内存限制</td>
|
|
81
|
+
<td>
|
|
82
|
+
<div class="input-group input-group-sm">
|
|
83
|
+
<input type="text" class="form-control" ng-model="setting.php.memory_limit">
|
|
84
|
+
<span class="input-group-addon">MB</span>
|
|
85
|
+
</div>
|
|
86
|
+
</td>
|
|
87
|
+
</tr>
|
|
88
|
+
<tr>
|
|
89
|
+
<td>display_errors</td>
|
|
90
|
+
<td>是否在出错时显示错误信息</td>
|
|
91
|
+
<td>
|
|
92
|
+
<label><input type="checkbox" ng-model="setting.php.display_errors"> 显示</label>
|
|
93
|
+
</td>
|
|
94
|
+
</tr>
|
|
95
|
+
<tr>
|
|
96
|
+
<td>post_max_size</td>
|
|
97
|
+
<td>POST 数据大小限制</td>
|
|
98
|
+
<td>
|
|
99
|
+
<div class="input-group input-group-sm">
|
|
100
|
+
<input type="text" class="form-control" ng-model="setting.php.post_max_size">
|
|
101
|
+
<span class="input-group-addon">MB</span>
|
|
102
|
+
</div>
|
|
103
|
+
</td>
|
|
104
|
+
</tr>
|
|
105
|
+
<tr>
|
|
106
|
+
<td>upload_max_filesize</td>
|
|
107
|
+
<td>上传文件大小限制</td>
|
|
108
|
+
<td>
|
|
109
|
+
<div class="input-group input-group-sm">
|
|
110
|
+
<input type="text" class="form-control" ng-model="setting.php.upload_max_filesize">
|
|
111
|
+
<span class="input-group-addon">MB</span>
|
|
112
|
+
</div>
|
|
113
|
+
</td>
|
|
114
|
+
</tr>
|
|
115
|
+
<tr>
|
|
116
|
+
<td>date.timezone</td>
|
|
117
|
+
<td>默认时区设置,格式如 Asia/Shanghai</td>
|
|
118
|
+
<td>
|
|
119
|
+
<input type="text" class="form-control input-sm" ng-model="setting.php['date.timezone']">
|
|
120
|
+
</td>
|
|
121
|
+
</tr>
|
|
122
|
+
<tr>
|
|
123
|
+
<td colspan="2"></td>
|
|
124
|
+
<td>
|
|
125
|
+
<button type="button" class="btn btn-default btn-sm" ng-click="updatephpsettings()">保存以上配置</button>
|
|
126
|
+
</td>
|
|
127
|
+
</tr>
|
|
128
|
+
</tbody>
|
|
129
|
+
</table>
|
|
130
|
+
<table class="table table-hover table-bordered">
|
|
131
|
+
<thead>
|
|
132
|
+
<tr>
|
|
133
|
+
<th>FastCGI 设置项</th>
|
|
134
|
+
<th>说明</th>
|
|
135
|
+
<th style="width:200px;"></th>
|
|
136
|
+
</tr>
|
|
137
|
+
</thead>
|
|
138
|
+
<tbody>
|
|
139
|
+
<tr>
|
|
140
|
+
<td>listen</td>
|
|
141
|
+
<td>FastCGI 监听地址</td>
|
|
142
|
+
<td>
|
|
143
|
+
<input type="text" class="form-control input-sm" ng-model="setting.fpm.listen">
|
|
144
|
+
</td>
|
|
145
|
+
</tr>
|
|
146
|
+
<tr>
|
|
147
|
+
<td>pm</td>
|
|
148
|
+
<td>是否启用动态进程控制模型</td>
|
|
149
|
+
<td>
|
|
150
|
+
<label><input type="checkbox" ng-model="setting.fpm.pm"> 启用</label>
|
|
151
|
+
</td>
|
|
152
|
+
</tr>
|
|
153
|
+
<tr>
|
|
154
|
+
<td>pm.max_children</td>
|
|
155
|
+
<td>最大的 CGI 进程数量</td>
|
|
156
|
+
<td>
|
|
157
|
+
<div class="input-group input-group-sm">
|
|
158
|
+
<input type="text" class="form-control" ng-model="setting.fpm['pm.max_children']">
|
|
159
|
+
<span class="input-group-addon">个</span>
|
|
160
|
+
</div>
|
|
161
|
+
</td>
|
|
162
|
+
</tr>
|
|
163
|
+
<tr>
|
|
164
|
+
<td>pm.start_servers</td>
|
|
165
|
+
<td>起始的 CGI 进程数量</td>
|
|
166
|
+
<td>
|
|
167
|
+
<div class="input-group input-group-sm">
|
|
168
|
+
<input type="text" class="form-control" ng-disabled="!setting.fpm.pm" ng-model="setting.fpm['pm.start_servers']">
|
|
169
|
+
<span class="input-group-addon">个</span>
|
|
170
|
+
</div>
|
|
171
|
+
</td>
|
|
172
|
+
</tr>
|
|
173
|
+
<tr>
|
|
174
|
+
<td>pm.min_spare_servers</td>
|
|
175
|
+
<td>最小允许的空闲 CGI 进程数量</td>
|
|
176
|
+
<td>
|
|
177
|
+
<div class="input-group input-group-sm">
|
|
178
|
+
<input type="text" class="form-control" ng-disabled="!setting.fpm.pm" ng-model="setting.fpm['pm.min_spare_servers']">
|
|
179
|
+
<span class="input-group-addon">个</span>
|
|
180
|
+
</div>
|
|
181
|
+
</td>
|
|
182
|
+
</tr>
|
|
183
|
+
<tr>
|
|
184
|
+
<td>pm.max_spare_servers</td>
|
|
185
|
+
<td>最多允许的空闲 CGI 进程数量</td>
|
|
186
|
+
<td>
|
|
187
|
+
<div class="input-group input-group-sm">
|
|
188
|
+
<input type="text" class="form-control" ng-disabled="!setting.fpm.pm" ng-model="setting.fpm['pm.max_spare_servers']">
|
|
189
|
+
<span class="input-group-addon">个</span>
|
|
190
|
+
</div>
|
|
191
|
+
</td>
|
|
192
|
+
</tr>
|
|
193
|
+
<tr>
|
|
194
|
+
<td>pm.max_requests</td>
|
|
195
|
+
<td>每个 CGI 进程执行多少次后重启进程</td>
|
|
196
|
+
<td>
|
|
197
|
+
<div class="input-group input-group-sm">
|
|
198
|
+
<input type="text" class="form-control" ng-model="setting.fpm['pm.max_requests']">
|
|
199
|
+
<span class="input-group-addon">个</span>
|
|
200
|
+
</div>
|
|
201
|
+
</td>
|
|
202
|
+
</tr>
|
|
203
|
+
<tr>
|
|
204
|
+
<td>request_terminate_timeout</td>
|
|
205
|
+
<td>请求处理超时时间,超时后请求将被终止</td>
|
|
206
|
+
<td>
|
|
207
|
+
<div class="input-group input-group-sm">
|
|
208
|
+
<input type="text" class="form-control" ng-model="setting.fpm.request_terminate_timeout">
|
|
209
|
+
<span class="input-group-addon">秒</span>
|
|
210
|
+
</div>
|
|
211
|
+
</td>
|
|
212
|
+
</tr>
|
|
213
|
+
<tr>
|
|
214
|
+
<td>request_slowlog_timeout</td>
|
|
215
|
+
<td>请求处理超过多少秒后记入慢请求日志</td>
|
|
216
|
+
<td>
|
|
217
|
+
<div class="input-group input-group-sm">
|
|
218
|
+
<input type="text" class="form-control" ng-model="setting.fpm.request_slowlog_timeout">
|
|
219
|
+
<span class="input-group-addon">秒</span>
|
|
220
|
+
</div>
|
|
221
|
+
</td>
|
|
222
|
+
</tr>
|
|
223
|
+
<tr>
|
|
224
|
+
<td colspan="2"></td>
|
|
225
|
+
<td>
|
|
226
|
+
<button type="button" class="btn btn-default btn-sm" ng-click="updatefpmsettings()">保存以上配置</button>
|
|
227
|
+
</td>
|
|
228
|
+
</tr>
|
|
229
|
+
</tbody>
|
|
230
|
+
</table>
|
|
231
|
+
</div>
|
|
232
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='ext'" id="ext">
|
|
233
|
+
<div srvext ng-init="name='PHP';pkg='php';"></div>
|
|
234
|
+
</div>
|
|
235
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='configfile'" id="configfile">
|
|
236
|
+
<div srvfile ng-init="items=[{name:'主配置', path:'/etc/php.ini', isfile:true},{name:'FPM配置', path:'/etc/php-fpm.conf', isfile:true},{name:'扩展配置', path:'/etc/php.d', isdir:true},{name:'', path:'/etc/php-zts.d', isdir:true}];"></div>
|
|
237
|
+
</div>
|
|
238
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='logfile'" id="logfile">
|
|
239
|
+
<div srvlog ng-init="items=[{name:'日志目录', path:'/var/log/php-fpm', isdir:true}];"></div>
|
|
240
|
+
</div>
|
|
241
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='update'" id="update">
|
|
242
|
+
<div srvupdate ng-init="name='PHP';pkg='php';"></div>
|
|
243
|
+
</div>
|
|
244
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='uninstall'" id="uninstall">
|
|
245
|
+
<div srvuninstall ng-init="name='PHP';pkg='php';"></div>
|
|
246
|
+
</div>
|
|
247
|
+
</div>
|
|
248
|
+
</div>
|
|
249
|
+
|
|
250
|
+
</div>
|