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,266 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='utils.firewall'"></div>
|
|
2
|
+
<div ng-show="!loaded">
|
|
3
|
+
<div loading></div>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
6
|
+
<div id="main" ng-show="loaded" style="display:none">
|
|
7
|
+
<div class="module-header">
|
|
8
|
+
<h3>防火墙管理</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div class="tabbable" ng-init="load()">
|
|
12
|
+
<div ng-show="loading"><div waiting></div></div>
|
|
13
|
+
|
|
14
|
+
<div ng-hide="loading">
|
|
15
|
+
<div ng-show="firewall.type == 'unknown'" class="alert alert-danger">
|
|
16
|
+
<strong>错误:</strong>未检测到支持的防火墙类型!
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div ng-hide="firewall.type == 'unknown'">
|
|
20
|
+
<div class="panel panel-default">
|
|
21
|
+
<div class="panel-heading">
|
|
22
|
+
<h4>防火墙状态</h4>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="panel-body">
|
|
25
|
+
<div class="row">
|
|
26
|
+
<div class="col-md-3">
|
|
27
|
+
<div class="form-group">
|
|
28
|
+
<label>防火墙类型:</label>
|
|
29
|
+
<span class="label label-info">{{firewall.type | uppercase}}</span>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
<div class="col-md-3">
|
|
33
|
+
<div class="form-group">
|
|
34
|
+
<label>运行状态:</label>
|
|
35
|
+
<span ng-class="firewall.running && 'label label-success' || 'label label-danger'">
|
|
36
|
+
{{firewall.running && '运行中' || '已停止'}}
|
|
37
|
+
</span>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="col-md-6">
|
|
41
|
+
<div class="form-group">
|
|
42
|
+
<label>详细信息:</label>
|
|
43
|
+
<span class="text-muted">{{firewall.status}}</span>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<div class="btn-group">
|
|
49
|
+
<button class="btn btn-success" ng-click="firewall_start()" ng-disabled="firewall.running">
|
|
50
|
+
<i class="glyphicon glyphicon-play"></i> 启动
|
|
51
|
+
</button>
|
|
52
|
+
<button class="btn btn-danger" ng-click="firewall_stop()" ng-disabled="!firewall.running">
|
|
53
|
+
<i class="glyphicon glyphicon-stop"></i> 停止
|
|
54
|
+
</button>
|
|
55
|
+
<button class="btn btn-warning" ng-click="firewall_restart()">
|
|
56
|
+
<i class="glyphicon glyphicon-refresh"></i> 重启
|
|
57
|
+
</button>
|
|
58
|
+
<button class="btn btn-default" ng-click="firewall_enable()" ng-disabled="firewall.running">
|
|
59
|
+
<i class="glyphicon glyphicon-ok-circle"></i> 开机自启
|
|
60
|
+
</button>
|
|
61
|
+
<button class="btn btn-default" ng-click="firewall_disable()">
|
|
62
|
+
<i class="glyphicon glyphicon-remove-circle"></i> 关闭自启
|
|
63
|
+
</button>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
<div class="panel panel-default">
|
|
69
|
+
<div class="panel-heading">
|
|
70
|
+
<h4>规则列表</h4>
|
|
71
|
+
<div class="pull-right">
|
|
72
|
+
<div class="btn-group btn-group-sm">
|
|
73
|
+
<button class="btn btn-default" title="刷新规则" ng-click="load_rules()">
|
|
74
|
+
<i class="glyphicon glyphicon-refresh"></i>
|
|
75
|
+
</button>
|
|
76
|
+
<button class="btn btn-default" title="添加端口规则" ng-click="add_port_rule_confirm()">
|
|
77
|
+
<i class="glyphicon glyphicon-plus"></i> 添加端口
|
|
78
|
+
</button>
|
|
79
|
+
<button class="btn btn-default" title="添加IP规则" ng-click="add_ip_rule_confirm()">
|
|
80
|
+
<i class="glyphicon glyphicon-plus"></i> 添加IP
|
|
81
|
+
</button>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
<div class="clearfix"></div>
|
|
85
|
+
</div>
|
|
86
|
+
<div class="panel-body">
|
|
87
|
+
<table class="table table-hover table-bordered table-condensed">
|
|
88
|
+
<thead>
|
|
89
|
+
<tr>
|
|
90
|
+
<th style="width:60px;">序号</th>
|
|
91
|
+
<th style="width:80px;">类型</th>
|
|
92
|
+
<th style="width:100px;">端口/协议</th>
|
|
93
|
+
<th style="width:150px;">IP地址</th>
|
|
94
|
+
<th style="width:80px;">动作</th>
|
|
95
|
+
<th style="width:100px;">区域</th>
|
|
96
|
+
<th>描述</th>
|
|
97
|
+
<th style="width:120px;">操作</th>
|
|
98
|
+
</tr>
|
|
99
|
+
</thead>
|
|
100
|
+
<tbody>
|
|
101
|
+
<tr ng-repeat="(index, rule) in firewall.rules">
|
|
102
|
+
<td class="text-right">{{index+1}}</td>
|
|
103
|
+
<td>
|
|
104
|
+
<span ng-class="rule.type == 'port' && 'label label-primary' || (rule.type == 'ip' && 'label label-warning' || 'label label-info')">
|
|
105
|
+
{{rule.type == 'port' && '端口' || (rule.type == 'ip' && 'IP' || '服务')}}
|
|
106
|
+
</span>
|
|
107
|
+
<td>{{rule.port && (rule.port + '/' + rule.protocol) || '-'}}</td>
|
|
108
|
+
<td>{{rule.ip || '-'}}</td>
|
|
109
|
+
<td>
|
|
110
|
+
<span ng-class="rule.action == 'allow' && 'label label-success' || 'label label-danger'">
|
|
111
|
+
{{rule.action == 'allow' && '允许' || '拒绝'}}
|
|
112
|
+
</span>
|
|
113
|
+
</td>
|
|
114
|
+
<td>{{rule.zone || '-'}}</td>
|
|
115
|
+
<td>{{rule.description}}</td>
|
|
116
|
+
<td>
|
|
117
|
+
<button class="btn btn-default btn-xs" ng-click="remove_port_rule_confirm(rule)" ng-show="rule.type == 'port'">
|
|
118
|
+
删除端口
|
|
119
|
+
</button>
|
|
120
|
+
<button class="btn btn-default btn-xs" ng-click="remove_ip_rule_confirm(rule)" ng-show="rule.type == 'ip'">
|
|
121
|
+
删除IP
|
|
122
|
+
</button>
|
|
123
|
+
<button class="btn btn-default btn-xs" ng-click="remove_app_rule_confirm(rule)" ng-show="rule.type == 'app'">
|
|
124
|
+
删除应用
|
|
125
|
+
</button>
|
|
126
|
+
</td>
|
|
127
|
+
</tr>
|
|
128
|
+
<tr ng-show="firewall.rules.length == 0">
|
|
129
|
+
<td colspan="8" class="text-center text-muted">暂无规则</td>
|
|
130
|
+
</tr>
|
|
131
|
+
</tbody>
|
|
132
|
+
</table>
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
|
|
140
|
+
<div id="firewall-del-app" class="modal fade">
|
|
141
|
+
<div class="modal-dialog">
|
|
142
|
+
<div class="modal-content">
|
|
143
|
+
<div class="modal-header">
|
|
144
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
145
|
+
<h3 class="modal-title">删除应用规则</h3>
|
|
146
|
+
</div>
|
|
147
|
+
<div class="modal-body">
|
|
148
|
+
<p>确定要删除应用规则 <strong>{{del_app.app_path}}</strong> 吗?</p>
|
|
149
|
+
</div>
|
|
150
|
+
<div class="modal-footer">
|
|
151
|
+
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">取消</button>
|
|
152
|
+
<button class="btn btn-danger" onclick="$('#firewall-del-app').modal('hide')" ng-click="remove_app_rule()">确认删除</button>
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
|
|
158
|
+
<div id="firewall-add-port" class="modal fade">
|
|
159
|
+
<div class="modal-dialog">
|
|
160
|
+
<div class="modal-content">
|
|
161
|
+
<div class="modal-header">
|
|
162
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
163
|
+
<h3 class="modal-title">添加端口规则</h3>
|
|
164
|
+
</div>
|
|
165
|
+
<div class="modal-body">
|
|
166
|
+
<form class="form-horizontal" onsubmit="return false">
|
|
167
|
+
<div class="form-group form-inline">
|
|
168
|
+
<label class="col-sm-3 control-label">端口号:</label>
|
|
169
|
+
<div class="col-sm-9">
|
|
170
|
+
<input class="form-control" type="number" ng-model="add_port.port" placeholder="如: 80" min="1" max="65535">
|
|
171
|
+
</div>
|
|
172
|
+
</div>
|
|
173
|
+
<div class="form-group form-inline">
|
|
174
|
+
<label class="col-sm-3 control-label">协议:</label>
|
|
175
|
+
<div class="col-sm-9">
|
|
176
|
+
<select class="form-control" ng-model="add_port.protocol">
|
|
177
|
+
<option value="tcp">TCP</option>
|
|
178
|
+
<option value="udp">UDP</option>
|
|
179
|
+
</select>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
<div class="form-group form-inline" ng-show="firewall.type == 'firewalld'">
|
|
183
|
+
<label class="col-sm-3 control-label">区域:</label>
|
|
184
|
+
<div class="col-sm-9">
|
|
185
|
+
<input class="form-control" type="text" ng-model="add_port.zone" placeholder="如: public">
|
|
186
|
+
</div>
|
|
187
|
+
</div>
|
|
188
|
+
</form>
|
|
189
|
+
</div>
|
|
190
|
+
<div class="modal-footer">
|
|
191
|
+
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">取消</button>
|
|
192
|
+
<button class="btn btn-primary" onclick="$('#firewall-add-port').modal('hide')" ng-click="add_port_rule()">添加</button>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
|
|
198
|
+
<div id="firewall-add-ip" class="modal fade">
|
|
199
|
+
<div class="modal-dialog">
|
|
200
|
+
<div class="modal-content">
|
|
201
|
+
<div class="modal-header">
|
|
202
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
203
|
+
<h3 class="modal-title">添加IP规则</h3>
|
|
204
|
+
</div>
|
|
205
|
+
<div class="modal-body">
|
|
206
|
+
<form class="form-horizontal" onsubmit="return false">
|
|
207
|
+
<div class="form-group form-inline">
|
|
208
|
+
<label class="col-sm-3 control-label">IP地址:</label>
|
|
209
|
+
<div class="col-sm-9">
|
|
210
|
+
<input class="form-control" type="text" ng-model="add_ip.ip" placeholder="如: 192.168.1.100">
|
|
211
|
+
</div>
|
|
212
|
+
</div>
|
|
213
|
+
<div class="form-group form-inline">
|
|
214
|
+
<label class="col-sm-3 control-label">动作:</label>
|
|
215
|
+
<div class="col-sm-9">
|
|
216
|
+
<select class="form-control" ng-model="add_ip.action_type">
|
|
217
|
+
<option value="allow">允许</option>
|
|
218
|
+
<option value="deny">拒绝</option>
|
|
219
|
+
</select>
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
</form>
|
|
223
|
+
</div>
|
|
224
|
+
<div class="modal-footer">
|
|
225
|
+
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">取消</button>
|
|
226
|
+
<button class="btn btn-primary" onclick="$('#firewall-add-ip').modal('hide')" ng-click="add_ip_rule()">添加</button>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
</div>
|
|
230
|
+
</div>
|
|
231
|
+
|
|
232
|
+
<div id="firewall-del-port" class="modal fade">
|
|
233
|
+
<div class="modal-dialog">
|
|
234
|
+
<div class="modal-content">
|
|
235
|
+
<div class="modal-header">
|
|
236
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
237
|
+
<h3 class="modal-title">删除端口规则</h3>
|
|
238
|
+
</div>
|
|
239
|
+
<div class="modal-body">
|
|
240
|
+
<p>确定要删除端口规则 <strong>{{del_port.port}}/{{del_port.protocol}}</strong> 吗?</p>
|
|
241
|
+
</div>
|
|
242
|
+
<div class="modal-footer">
|
|
243
|
+
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">取消</button>
|
|
244
|
+
<button class="btn btn-danger" onclick="$('#firewall-del-port').modal('hide')" ng-click="remove_port_rule()">确认删除</button>
|
|
245
|
+
</div>
|
|
246
|
+
</div>
|
|
247
|
+
</div>
|
|
248
|
+
</div>
|
|
249
|
+
|
|
250
|
+
<div id="firewall-del-ip" class="modal fade">
|
|
251
|
+
<div class="modal-dialog">
|
|
252
|
+
<div class="modal-content">
|
|
253
|
+
<div class="modal-header">
|
|
254
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
255
|
+
<h3 class="modal-title">删除IP规则</h3>
|
|
256
|
+
</div>
|
|
257
|
+
<div class="modal-body">
|
|
258
|
+
<p>确定要删除IP规则 <strong>{{del_ip.ip}}</strong> 吗?</p>
|
|
259
|
+
</div>
|
|
260
|
+
<div class="modal-footer">
|
|
261
|
+
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">取消</button>
|
|
262
|
+
<button class="btn btn-danger" onclick="$('#firewall-del-ip').modal('hide')" ng-click="remove_ip_rule()">确认删除</button>
|
|
263
|
+
</div>
|
|
264
|
+
</div>
|
|
265
|
+
</div>
|
|
266
|
+
</div>
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='utils'"></div>
|
|
2
|
+
<div ng-show="!loaded">
|
|
3
|
+
<div loading></div>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
6
|
+
<div id="main" ng-show="loaded" style="display:none">
|
|
7
|
+
<div class="module-header">
|
|
8
|
+
<h3>工具</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div ng-init="checkVirt()" class="row">
|
|
12
|
+
<div class="col-md-6 col-xs-12">
|
|
13
|
+
<table class="table table-hover table-condensed">
|
|
14
|
+
<thead>
|
|
15
|
+
<tr>
|
|
16
|
+
<th colspan="3">基础设置</th>
|
|
17
|
+
</tr>
|
|
18
|
+
</thead>
|
|
19
|
+
<tbody>
|
|
20
|
+
<tr>
|
|
21
|
+
<td style="width:120px;"><a href="#/utils/network">网络设置</a></td>
|
|
22
|
+
<td style="width:380px;" class="muted">设置主机名、IP 地址、网关、DNS服务器</td>
|
|
23
|
+
<td style="width:100px;"><a class="btn btn-default btn-xs" href="#/utils/network">进入设置</a></td>
|
|
24
|
+
</tr>
|
|
25
|
+
<tr>
|
|
26
|
+
<td><a href="#/utils/time">时间设置</a></td>
|
|
27
|
+
<td class="muted">设置服务器的时间和时区</td>
|
|
28
|
+
<td><a class="btn btn-default btn-xs" href="#/utils/time">进入设置</a></td>
|
|
29
|
+
</tr>
|
|
30
|
+
<tr>
|
|
31
|
+
<td><a href="#/utils/repository">软件仓库</a></td>
|
|
32
|
+
<td class="muted">软件仓库的管理</td>
|
|
33
|
+
<td><a class="btn btn-default btn-xs" href="#/utils/repository">进入设置</a></td>
|
|
34
|
+
</tr>
|
|
35
|
+
<tr>
|
|
36
|
+
<td><a href="#/utils/cron">定时任务</a></td>
|
|
37
|
+
<td class="muted">管理系统定时任务</td>
|
|
38
|
+
<td><a class="btn btn-default btn-xs" href="#/utils/cron">进入管理</a></td>
|
|
39
|
+
</tr>
|
|
40
|
+
</tbody>
|
|
41
|
+
</table>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="col-md-6 col-xs-12">
|
|
44
|
+
<table class="table table-hover table-condensed">
|
|
45
|
+
<thead>
|
|
46
|
+
<tr>
|
|
47
|
+
<th colspan="3">系统管理</th>
|
|
48
|
+
</tr>
|
|
49
|
+
</thead>
|
|
50
|
+
<tbody>
|
|
51
|
+
<tr>
|
|
52
|
+
<td style="width:120px;"><a href="#/utils/user">用户管理</a></td>
|
|
53
|
+
<td style="width:380px;" class="muted">管理系统用户、用户组和用户密码</td>
|
|
54
|
+
<td style="width:100px;"><a class="btn btn-default btn-xs" href="#/utils/user">进入管理</a></td>
|
|
55
|
+
</tr>
|
|
56
|
+
<tr>
|
|
57
|
+
<td><a href="#/utils/process">进程管理</a></td>
|
|
58
|
+
<td class="muted">管理系统当前运行的进程</td>
|
|
59
|
+
<td><a class="btn btn-default btn-xs" href="#/utils/process">进入管理</a></td>
|
|
60
|
+
</tr>
|
|
61
|
+
<tr>
|
|
62
|
+
<td><a href="#/ecs">远程管理</a></td>
|
|
63
|
+
<td class="muted">远程服务器(集群、客户端)的管理</td>
|
|
64
|
+
<td><a class="btn btn-default btn-xs" href="#/ecs" ng-disabled="true">正在开发</a></td>
|
|
65
|
+
</tr>
|
|
66
|
+
<tr>
|
|
67
|
+
<td><a href="#/ftp">FTP 管理</a></td>
|
|
68
|
+
<td class="muted">FTP 用户及进程管理</td>
|
|
69
|
+
<td><a class="btn btn-default btn-xs" href="#/ftp" ng-disabled="true">正在开发</a></td>
|
|
70
|
+
</tr>
|
|
71
|
+
<tr>
|
|
72
|
+
<td><a href="#/utils/shell">执行命令</a></td>
|
|
73
|
+
<td class="muted">执行 SHELL 命令</td>
|
|
74
|
+
<td><a class="btn btn-default btn-xs" href="#/utils/shell">进入操作</a></td>
|
|
75
|
+
</tr>
|
|
76
|
+
</tbody>
|
|
77
|
+
</table>
|
|
78
|
+
</div>
|
|
79
|
+
<div class="col-md-6 col-xs-12">
|
|
80
|
+
<table class="table table-hover table-condensed">
|
|
81
|
+
<thead>
|
|
82
|
+
<tr>
|
|
83
|
+
<th colspan="3">系统安全</th>
|
|
84
|
+
</tr>
|
|
85
|
+
</thead>
|
|
86
|
+
<tbody>
|
|
87
|
+
<tr>
|
|
88
|
+
<td style="width:120px;"><a href="#/service/ssh?s=pubkauth">SSH 公钥验证</a></td>
|
|
89
|
+
<td style="width:380px;" class="muted">防暴力破解,使用更安全的公钥验证替换密码验证</td>
|
|
90
|
+
<td style="width:100px;"><a class="btn btn-default btn-xs" href="#/service/ssh?s=pubkauth">进入设置</a></td>
|
|
91
|
+
</tr>
|
|
92
|
+
<tr>
|
|
93
|
+
<td><a href="#/utils/ssl">SSL/TLS</a></td>
|
|
94
|
+
<td class="muted">管理 SSL 私钥、签名请求和证书</td>
|
|
95
|
+
<td><a class="btn btn-default btn-xs" href="#/utils/ssl" ng-disabled="true">正在开发</a></td>
|
|
96
|
+
</tr>
|
|
97
|
+
<tr>
|
|
98
|
+
<td><a href="#/utils/firewall">防火墙</a></td>
|
|
99
|
+
<td class="muted">防火墙管理</td>
|
|
100
|
+
<td><a class="btn btn-default btn-xs" href="#/utils/firewall">进入设置</a></td>
|
|
101
|
+
</tr>
|
|
102
|
+
<tr>
|
|
103
|
+
<td><a href="#/log">日志维护</a></td>
|
|
104
|
+
<td class="muted">维护系统日志</td>
|
|
105
|
+
<td><a class="btn btn-default btn-xs" href="#/log" ng-disabled="true">正在开发</a></td>
|
|
106
|
+
</tr>
|
|
107
|
+
<tr>
|
|
108
|
+
<td><a href="#/secure">安全优化</a></td>
|
|
109
|
+
<td class="muted">优化系统增强安全</td>
|
|
110
|
+
<td><a class="btn btn-default btn-xs" href="#/secure" ng-disabled="true">正在开发</a></td>
|
|
111
|
+
</tr>
|
|
112
|
+
</tbody>
|
|
113
|
+
</table>
|
|
114
|
+
</div>
|
|
115
|
+
<div class="col-md-6 col-xs-12">
|
|
116
|
+
<table class="table table-hover table-condensed">
|
|
117
|
+
<thead>
|
|
118
|
+
<tr>
|
|
119
|
+
<th colspan="3">磁盘存储</th>
|
|
120
|
+
</tr>
|
|
121
|
+
</thead>
|
|
122
|
+
<tbody>
|
|
123
|
+
<tr>
|
|
124
|
+
<td style="width:120px;"><a href="#/storage">磁盘管理</a></td>
|
|
125
|
+
<td style="width:380px;" class="muted">对磁盘进行分区、格式化、挂载以及网络磁盘的管理等操作</td>
|
|
126
|
+
<td style="width:100px;"><a class="btn btn-default btn-xs" href="#/storage">进入管理</a></td>
|
|
127
|
+
</tr>
|
|
128
|
+
<tr>
|
|
129
|
+
<td><a href="#/storage/backup">备份管理</a></td>
|
|
130
|
+
<td class="muted">重要文件数据的备份和管理</td>
|
|
131
|
+
<td><a class="btn btn-default btn-xs" href="#/storage/backup" ng-disabled="true">正在开发</a></td>
|
|
132
|
+
</tr>
|
|
133
|
+
<tr style="display:none" ng-show="virt != 'Virtuozzo/OpenVZ' && virt != '?'">
|
|
134
|
+
<td><a href="#/storage/autofm">自动挂载</a></td>
|
|
135
|
+
<td class="muted">对未挂载的磁盘进行格式化并自动挂载</td>
|
|
136
|
+
<td><a class="btn btn-default btn-xs" href="#/storage/autofm">进入设置</a></td>
|
|
137
|
+
</tr>
|
|
138
|
+
<tr>
|
|
139
|
+
<td><a href="#/storage/movedata">数据移至数据盘</a></td>
|
|
140
|
+
<td class="muted">将数据迁移至数据盘,并通过链接保持原路径</td>
|
|
141
|
+
<td><a class="btn btn-default btn-xs" href="#/storage/movedata">进入设置</a></td>
|
|
142
|
+
</tr>
|
|
143
|
+
<tr>
|
|
144
|
+
<td><a href="#/storage/migrate">文件迁移</a></td>
|
|
145
|
+
<td class="muted">将文件迁移至远端服务器</td>
|
|
146
|
+
<td><a class="btn btn-default btn-xs" href="#/storage/migrate">进入设置</a></td>
|
|
147
|
+
</tr>
|
|
148
|
+
</tbody>
|
|
149
|
+
</table>
|
|
150
|
+
</div>
|
|
151
|
+
<div class="col-md-6 col-xs-12">
|
|
152
|
+
<table class="table table-hover table-condensed">
|
|
153
|
+
<thead>
|
|
154
|
+
<tr>
|
|
155
|
+
<th colspan="3">服务器重启</th>
|
|
156
|
+
</tr>
|
|
157
|
+
</thead>
|
|
158
|
+
<tbody>
|
|
159
|
+
<tr>
|
|
160
|
+
<td style="width:120px;"><button class="btn btn-link btn-xs" ng-click="rebootconfirm()">重启服务器</button></td>
|
|
161
|
+
<td style="width:380px;" class="muted">重启您的服务器</td>
|
|
162
|
+
<td style="width:100px;"><button class="btn btn-default btn-xs" ng-click="rebootconfirm()">立即重启</button></td>
|
|
163
|
+
</tr>
|
|
164
|
+
</tbody>
|
|
165
|
+
</table>
|
|
166
|
+
</div>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
<div id="rebootconfirm" class="modal fade">
|
|
171
|
+
<div class="modal-dialog" role="document">
|
|
172
|
+
<div class="modal-content">
|
|
173
|
+
<div class="modal-header">
|
|
174
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
175
|
+
<h3 class="modal-title">服务器重启确认</h3>
|
|
176
|
+
</div>
|
|
177
|
+
<div class="modal-body">
|
|
178
|
+
<div class="alert alert-info">
|
|
179
|
+
<p>重启过程中,您的服务器将会持续中断服务!</p>
|
|
180
|
+
<p>确认要重启服务器吗?</p>
|
|
181
|
+
</div>
|
|
182
|
+
<div class="input-group">
|
|
183
|
+
<span class="input-group-addon">请输入大写的 OK 确认重启</span>
|
|
184
|
+
<input type="text" class="form-control" max-length="2" ng-model="confirmok" placeholder="输入 OK">
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
<div class="modal-footer">
|
|
188
|
+
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">取消</button>
|
|
189
|
+
<button class="btn btn-danger" onclick="$('#rebootconfirm').modal('hide')" ng-disabled="confirmok!='OK'" ng-click="reboot()">确定重启</button>
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='utils.network'"></div>
|
|
2
|
+
<div ng-show="!loaded">
|
|
3
|
+
<div loading></div>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
6
|
+
<div id="main" ng-show="loaded" style="display:none">
|
|
7
|
+
<div class="module-header">
|
|
8
|
+
<h3>网络设置</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div class="tabbable">
|
|
12
|
+
<ul class="nav nav-tabs">
|
|
13
|
+
<li ng-class="'active' | iftrue:activeTabName=='hostname'"><a href="#hostname" ng-click="sec('hostname')" data-toggle="tab">主机名</a></li>
|
|
14
|
+
<li ng-class="'active' | iftrue:activeTabName=='ip'"><a href="#ip" ng-click="sec('ip')" data-toggle="tab">IP设置</a></li>
|
|
15
|
+
<li ng-class="'active' | iftrue:activeTabName=='dns'"><a href="#dns" ng-click="sec('dns')" data-toggle="tab">DNS设置</a></li>
|
|
16
|
+
<li ng-class="'active' | iftrue:activeTabName=='restart'"><a href="#restart" ng-click="sec('restart')" data-toggle="tab">重启网络</a></li>
|
|
17
|
+
</ul>
|
|
18
|
+
<div class="tab-content">
|
|
19
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='hostname'" id="hostname" ng-init="loadHostName()">
|
|
20
|
+
<form class="form-horizontal form-horizontal-small" ng-submit="saveHostName()" onsubmit="return false">
|
|
21
|
+
<div class="form-group form-inline">
|
|
22
|
+
<label class="col-sm-2 control-label" for="bind_hostname">主机名</label>
|
|
23
|
+
<div class="col-sm-10">
|
|
24
|
+
<input class="form-control" ng-model="hostname" ng-disabled="processing" type="text" id="bind_hostname" placeholder="服务器主机名">
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="form-group form-inline">
|
|
28
|
+
<label class="col-sm-2 control-label"></label>
|
|
29
|
+
<div class="col-sm-10">
|
|
30
|
+
<button type="submit" class="btn btn-default" ng-disabled="processing">提交修改</button>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</form>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='ip'" id="ip" ng-init="loadIP()">
|
|
36
|
+
<div class="alert alert-warning">修改IP设置后,需要重启网络,配置才会生效。</div>
|
|
37
|
+
<form class="form-horizontal form-horizontal-small" ng-submit="saveIfConfig()" onsubmit="return false">
|
|
38
|
+
<div class="form-group form-inline">
|
|
39
|
+
<label class="col-sm-2 control-label">网络接口</label>
|
|
40
|
+
<div class="col-sm-10">
|
|
41
|
+
<div class="btn-group" ng-init="loadIfNames()">
|
|
42
|
+
<button type="button" class="btn btn-default" ng-class="'active'|iftrue:ifname==tifname" ng-click="loadIfConfig(tifname)" ng-repeat="tifname in ifnames">{{tifname}}</button>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="form-group form-inline">
|
|
47
|
+
<label class="col-sm-2 control-label" for="ip">IPv4地址</label>
|
|
48
|
+
<div class="col-sm-10">
|
|
49
|
+
<input class="form-control" ng-model="ip" ng-disabled="processing" type="text" id="ip" placeholder="IPv4地址">
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
<div class="form-group form-inline">
|
|
53
|
+
<label class="col-sm-2 control-label" for="mask">子网掩码</label>
|
|
54
|
+
<div class="col-sm-10">
|
|
55
|
+
<input class="form-control" ng-model="mask" ng-disabled="processing" type="text" id="mask" placeholder="子网掩码">
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
<div class="form-group form-inline">
|
|
59
|
+
<label class="col-sm-2 control-label" for="gw">默认网关</label>
|
|
60
|
+
<div class="col-sm-10">
|
|
61
|
+
<input class="form-control" ng-model="gw" ng-disabled="processing" type="text" id="gw" placeholder="默认网关">
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="form-group form-inline">
|
|
65
|
+
<label class="col-sm-2 control-label"></label>
|
|
66
|
+
<div class="col-sm-10">
|
|
67
|
+
<button type="submit" class="btn btn-default" ng-disabled="processing">提交修改</button>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</form>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='dns'" id="dns" ng-init="loadDNS()">
|
|
73
|
+
<form class="form-horizontal form-horizontal-small" ng-submit="saveNameservers()" onsubmit="return false" ng-init="loadNameservers()">
|
|
74
|
+
<div class="form-group form-inline" ng-repeat="nameserver in nameservers">
|
|
75
|
+
<label class="col-sm-2 control-label">DNS {{$index+1}}:</label>
|
|
76
|
+
<div class="col-sm-10">
|
|
77
|
+
<div class="input-group">
|
|
78
|
+
<input class="form-control nameserver" ng-disabled="processing" type="text" value="{{nameserver}}" placeholder="DNS 服务器地址">
|
|
79
|
+
<div class="input-group-btn">
|
|
80
|
+
<button type="button" class="btn btn-default" ng-disabled="processing" ng-click="delNameserver($index)"><i class="glyphicon glyphicon-minus"></i></button>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
<div class="form-group form-inline">
|
|
86
|
+
<label class="col-sm-2 control-label">DNS 服务器</label>
|
|
87
|
+
<div class="col-sm-10">
|
|
88
|
+
<button type="button" class="btn btn-default" ng-disabled="processing" ng-click="addNameserver()"><i class="glyphicon glyphicon-plus"></i> 增加 DNS 服务器</button>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
<div class="form-group form-inline">
|
|
92
|
+
<label class="col-sm-2 control-label"></label>
|
|
93
|
+
<div class="col-sm-10">
|
|
94
|
+
<button type="submit" class="btn btn-default" ng-disabled="processing">提交修改</button>
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</form>
|
|
98
|
+
</div>
|
|
99
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='restart'" id="restart" ng-init="restartService()">
|
|
100
|
+
<div class="panel panel-danger">
|
|
101
|
+
<div class="panel-heading">
|
|
102
|
+
<div class="panel-title">
|
|
103
|
+
<i class="glyphicon glyphicon-refresh"></i>
|
|
104
|
+
<span> 重启网络</span>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
<div class="panel-body">
|
|
108
|
+
<p><span ng-bind-html-unsafe="restartMessage"></span></p>
|
|
109
|
+
<p style="display:none;margin-top:20px;" ng-show="showRestartBtn">
|
|
110
|
+
<button class="btn btn-default" ng-click="restart()" ng-disabled="processing">确定并重启网络</button>
|
|
111
|
+
</p>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
|
|
118
|
+
</div>
|