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,63 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='service.lighttpd'"></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>Lighttpd - 快速灵活高性能的开源 HTTP 服务器软件</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div srvinstall ng-init="name='lighttpd';pkg='lighttpd';expected_repolist=['base','epel'];"></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=='settings'"><a href="#settings" ng-click="load_settings()" 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='lighttpd';pkg='lighttpd';service='lighttpd';"></div>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='settings'" id="settings">
|
|
28
|
+
<table class="table table-condensed">
|
|
29
|
+
<thead>
|
|
30
|
+
<tr>
|
|
31
|
+
<th colspan="2">基本设置</th>
|
|
32
|
+
</tr>
|
|
33
|
+
</thead>
|
|
34
|
+
<tbody>
|
|
35
|
+
<tr>
|
|
36
|
+
<td>暂未实现设置功能,等待新版本升级</td>
|
|
37
|
+
</tr>
|
|
38
|
+
</tbody>
|
|
39
|
+
</table>
|
|
40
|
+
<button class="btn btn-primary" style="margin-left:10px" ng-click="savesettings()" disabled>保存设置</button>
|
|
41
|
+
</div>
|
|
42
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='ext'" id="ext">
|
|
43
|
+
<div srvext ng-init="name='lighttpd';pkg='lighttpd';"></div>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='configfile'" id="configfile">
|
|
46
|
+
<div srvfile ng-init="items=[
|
|
47
|
+
{name: '配置目录', path: '/etc/lighttpd', isdir: true},
|
|
48
|
+
{name: '主配置', path: '/etc/lighttpd/lighttpd.conf', isfile: true},
|
|
49
|
+
{name: '模块配置', path: '/etc/lighttpd/modules.conf', isfile: true}];"></div>
|
|
50
|
+
</div>
|
|
51
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='logfile'" id="logfile">
|
|
52
|
+
<div srvlog ng-init="items=[{name:'日志文件', path:'/var/log/lighttpd', isfile:true}];"></div>
|
|
53
|
+
</div>
|
|
54
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='update'" id="update">
|
|
55
|
+
<div srvupdate ng-init="name='lighttpd';pkg='lighttpd';"></div>
|
|
56
|
+
</div>
|
|
57
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='uninstall'" id="uninstall">
|
|
58
|
+
<div srvuninstall ng-init="name='lighttpd';pkg='lighttpd';"></div>
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
</div>
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='service.mariadb'"></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>MariaDB - 最流行的开源关系型数据库服务器</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div srvinstall ng-init="name='MariaDB';pkg='mariadb';expected_repolist=['mariadb'];"></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=='password'"><a href="#password" ng-click="sec('password')" data-toggle="tab">密码设置</a></li>
|
|
17
|
+
<li ng-class="'active' | iftrue:activeTabName=='configfile'"><a href="#configfile" ng-click="sec('configfile')" data-toggle="tab">配置文件</a></li>
|
|
18
|
+
<li ng-class="'active' | iftrue:activeTabName=='logfile'"><a href="#logfile" ng-click="sec('logfile')" data-toggle="tab">日志</a></li>
|
|
19
|
+
<li ng-class="'active' | iftrue:activeTabName=='update'"><a href="#update" ng-click="sec('update')" data-toggle="tab">升级</a></li>
|
|
20
|
+
<li ng-class="'active' | iftrue:activeTabName=='uninstall'"><a href="#uninstall" ng-click="sec('uninstall')" data-toggle="tab">卸载</a></li>
|
|
21
|
+
</ul>
|
|
22
|
+
<div class="tab-content">
|
|
23
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='base'" id="base">
|
|
24
|
+
<div srvbase ng-init="name='MariaDB';pkg='mariadb';service='mariadb';"></div>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='password'" id="password">
|
|
27
|
+
<div class="panel panel-default" ng-show="!forceupdate">
|
|
28
|
+
<div class="panel-heading">
|
|
29
|
+
<div class="panel-title">
|
|
30
|
+
<i class="glyphicon glyphicon-user"></i>
|
|
31
|
+
<span> 管理员密码设置</span>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="panel-body">
|
|
35
|
+
<p class="alert alert-warning">MariaDB 的管理员用户名为 root,密码可在此修改,默认密码为空。</p>
|
|
36
|
+
<form class="form-horizontal form-horizontal-small" onsubmit="return false" method="get" action="/">
|
|
37
|
+
<div class="form-group form-inline">
|
|
38
|
+
<label class="col-sm-2 control-label" for="oldpassword">原密码</label>
|
|
39
|
+
<div class="col-sm-10">
|
|
40
|
+
<input class="form-control" ng-model="root_opasswd" type="password" id="oldpassword" ng-disable="processing" placeholder="请输入原密码" autocomplete="off">
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="form-group form-inline">
|
|
44
|
+
<label class="col-sm-2 control-label" for="newpassword">新密码</label>
|
|
45
|
+
<div class="col-sm-10">
|
|
46
|
+
<input class="form-control" ng-model="root_passwd" type="password" id="newpassword" ng-disable="processing" placeholder="请输入新密码" autocomplete="off">
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
<div class="form-group form-inline">
|
|
50
|
+
<label class="col-sm-2 control-label" for="newpasswordc">确认新密码</label>
|
|
51
|
+
<div class="col-sm-10">
|
|
52
|
+
<input class="form-control" ng-model="root_passwdc" type="password" id="newpasswordc" ng-disable="processing" placeholder="请再次输入新密码" autocomplete="off">
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
<div class="form-group form-inline">
|
|
56
|
+
<label class="col-sm-2 control-label"></label>
|
|
57
|
+
<div class="col-sm-10">
|
|
58
|
+
<button class="btn btn-primary" ng-click="updatepwd()" ng-disable="processing">修改密码</button>
|
|
59
|
+
<button class="btn btn-default" ng-click="forceupdate=true" ng-disable="processing">忘记密码</button>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</form>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="panel panel-default" ng-show="forceupdate">
|
|
66
|
+
<div class="panel-heading">
|
|
67
|
+
<div class="panel-title">
|
|
68
|
+
<i class="glyphicon glyphicon-user"></i>
|
|
69
|
+
<span> 重置密码</span>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="panel-body">
|
|
73
|
+
<p class="alert alert-warning">此处操作会强制修改 root 密码,在修改过程中会停止 MariaDB 服务。</p>
|
|
74
|
+
<form class="form-horizontal form-horizontal-small" onsubmit="return false" method="get" action="/">
|
|
75
|
+
<div class="form-group form-inline">
|
|
76
|
+
<label class="col-sm-2 control-label" for="passwordn">新密码</label>
|
|
77
|
+
<div class="col-sm-10">
|
|
78
|
+
<input class="form-control" ng-model="root_passwd" type="password" id="passwordn" ng-disable="processing" placeholder="请输入新密码" autocomplete="off">
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
<div class="form-group form-inline">
|
|
82
|
+
<label class="col-sm-2 control-label" for="passwordc">确认新密码</label>
|
|
83
|
+
<div class="col-sm-10">
|
|
84
|
+
<input class="form-control" ng-model="root_passwdc" type="password" id="passwordc" ng-disable="processing" placeholder="请再次输入新密码" autocomplete="off">
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
<div class="form-group form-inline">
|
|
88
|
+
<label class="col-sm-2 control-label"></label>
|
|
89
|
+
<div class="col-sm-10">
|
|
90
|
+
<button class="btn btn-primary" ng-click="fupdatepwd()" ng-disable="processing">确认重置</button>
|
|
91
|
+
<button class="btn btn-default" ng-click="forceupdate=false" ng-disable="processing">取 消</button>
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
</form>
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='configfile'" id="configfile">
|
|
99
|
+
<div srvfile ng-init="items=[{name:'主配置', path:'/etc/my.cnf', isfile:true}];"></div>
|
|
100
|
+
</div>
|
|
101
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='logfile'" id="logfile">
|
|
102
|
+
<div srvlog ng-init="items=[{name:'日志文件', path:'/var/log/mariadb.log', isfile:true}];"></div>
|
|
103
|
+
</div>
|
|
104
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='update'" id="update">
|
|
105
|
+
<div srvupdate ng-init="name='MariaDB';pkg='mariadb';"></div>
|
|
106
|
+
</div>
|
|
107
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='uninstall'" id="uninstall">
|
|
108
|
+
<div srvuninstall ng-init="name='MariaDB';pkg='mariadb';"></div>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
</div>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='service.memcache'"></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>Memcache - 内存数据库</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div srvinstall ng-init="name='Memcache';pkg='memcache';expected_repolist=['base','CentALT'];"></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=='configfile'"><a href="#configfile" ng-click="sec('configfile')" data-toggle="tab">配置文件</a></li>
|
|
17
|
+
<li ng-class="'active' | iftrue:activeTabName=='update'"><a href="#update" ng-click="sec('update')" data-toggle="tab">升级</a></li>
|
|
18
|
+
<li ng-class="'active' | iftrue:activeTabName=='uninstall'"><a href="#uninstall" ng-click="sec('uninstall')" data-toggle="tab">卸载</a></li>
|
|
19
|
+
</ul>
|
|
20
|
+
<div class="tab-content">
|
|
21
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='base'" id="base">
|
|
22
|
+
<div srvbase ng-init="name='Memcache';pkg='memcache';service='memcached';"></div>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='configfile'" id="configfile">
|
|
25
|
+
<div srvfile ng-init="items=[{name:'主配置', path:'/etc/init.d/memcached', isfile:true}];"></div>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='update'" id="update">
|
|
28
|
+
<div srvupdate ng-init="name='Memcache';pkg='memcache';"></div>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='uninstall'" id="uninstall">
|
|
31
|
+
<div srvuninstall ng-init="name='Memcache';pkg='memcache';"></div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
</div>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='service.minio'"></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>MinIO - 开源轻量级对象存储服务</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<!-- <div srvinstall ng-init="name='MinIO';pkg='minio';expected_repolist=['base','epel'];"></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=='data'"><a href="#data" ng-click="sec('data')" data-toggle="tab">数据管理</a></li>
|
|
17
|
+
<li ng-class="'active' | iftrue:activeTabName=='configfile'"><a href="#configfile" ng-click="sec('configfile')" data-toggle="tab">配置文件</a></li>
|
|
18
|
+
<li ng-class="'active' | iftrue:activeTabName=='logfile'"><a href="#logfile" ng-click="sec('logfile')" data-toggle="tab">日志</a></li>
|
|
19
|
+
<li ng-class="'active' | iftrue:activeTabName=='update'"><a href="#update" ng-click="sec('update')" data-toggle="tab">升级</a></li>
|
|
20
|
+
<li ng-class="'active' | iftrue:activeTabName=='uninstall'"><a href="#uninstall" ng-click="sec('uninstall')" data-toggle="tab">卸载</a></li>
|
|
21
|
+
</ul>
|
|
22
|
+
<div class="tab-content">
|
|
23
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='base'" id="base">
|
|
24
|
+
<div srvbase ng-init="name='MinIO';pkg='minio';service='minio';"></div>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='data'" id="data">
|
|
27
|
+
<div srvfile ng-init="items=[{name:'数据目录', path:'/usr/local/minio/data', isdir:true}];"></div>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='configfile'" id="configfile">
|
|
30
|
+
<div srvfile ng-init="items=[{name:'主配置', path:'/usr/local/minio/config.ini', isfile:true}];"></div>
|
|
31
|
+
</div>
|
|
32
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='logfile'" id="logfile">
|
|
33
|
+
<div srvlog ng-init="items=[{name:'日志目录', path:'/var/log/minio/minio.log', isdir:true}];"></div>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='update'" id="update">
|
|
36
|
+
<div srvupdate ng-init="name='MinIO';pkg='minio';"></div>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='uninstall'" id="uninstall">
|
|
39
|
+
<div srvuninstall ng-init="name='MinIO';pkg='minio';"></div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
</div>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='service.mongodb'"></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>MongoDB - 分布式高性能的数据库服务器</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div srvinstall ng-init="name='MongoDB';pkg='mongodb';expected_repolist=['base','epel','10gen'];"></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=='data'"><a href="#data" ng-click="sec('data')" data-toggle="tab">数据管理</a></li>
|
|
17
|
+
<li ng-class="'active' | iftrue:activeTabName=='configfile'"><a href="#configfile" ng-click="sec('configfile')" data-toggle="tab">配置文件</a></li>
|
|
18
|
+
<li ng-class="'active' | iftrue:activeTabName=='logfile'"><a href="#logfile" ng-click="sec('logfile')" data-toggle="tab">日志</a></li>
|
|
19
|
+
<li ng-class="'active' | iftrue:activeTabName=='update'"><a href="#update" ng-click="sec('update')" data-toggle="tab">升级</a></li>
|
|
20
|
+
<li ng-class="'active' | iftrue:activeTabName=='uninstall'"><a href="#uninstall" ng-click="sec('uninstall')" data-toggle="tab">卸载</a></li>
|
|
21
|
+
</ul>
|
|
22
|
+
<div class="tab-content">
|
|
23
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='base'" id="base">
|
|
24
|
+
<div srvbase ng-init="name='MongoDB';pkg='mongodb';service='mongod';"></div>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='data'" id="data">
|
|
27
|
+
<div srvfile ng-init="items=[{name:'数据目录', path:'/var/lib/mongo', isdir:true}];"></div>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='configfile'" id="configfile">
|
|
30
|
+
<div srvfile ng-init="items=[{name:'主配置', path:'/etc/mongod.conf', isfile:true}];"></div>
|
|
31
|
+
</div>
|
|
32
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='logfile'" id="logfile">
|
|
33
|
+
<div srvlog ng-init="items=[{name:'日志目录', path:'/var/log/mongodb', isdir:true}];"></div>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='update'" id="update">
|
|
36
|
+
<div srvupdate ng-init="name='MongoDB';pkg='mongodb';"></div>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='uninstall'" id="uninstall">
|
|
39
|
+
<div srvuninstall ng-init="name='MongoDB';pkg='mongodb';"></div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
</div>
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='service.mysql'"></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>MySQL - 最流行的开源关系型数据库服务器</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div srvinstall ng-init="name='MySQL';pkg='mysql';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=='password'"><a href="#password" ng-click="sec('password')" data-toggle="tab">密码设置</a></li>
|
|
17
|
+
<li ng-class="'active' | iftrue:activeTabName=='configfile'"><a href="#configfile" ng-click="sec('configfile')" data-toggle="tab">配置文件</a></li>
|
|
18
|
+
<li ng-class="'active' | iftrue:activeTabName=='logfile'"><a href="#logfile" ng-click="sec('logfile')" data-toggle="tab">日志</a></li>
|
|
19
|
+
<li ng-class="'active' | iftrue:activeTabName=='update'"><a href="#update" ng-click="sec('update')" data-toggle="tab">升级</a></li>
|
|
20
|
+
<li ng-class="'active' | iftrue:activeTabName=='uninstall'"><a href="#uninstall" ng-click="sec('uninstall')" data-toggle="tab">卸载</a></li>
|
|
21
|
+
</ul>
|
|
22
|
+
<div class="tab-content">
|
|
23
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='base'" id="base">
|
|
24
|
+
<div srvbase ng-init="name='MySQL';pkg='mysql';service='mysqld';"></div>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='password'" id="password">
|
|
27
|
+
<div class="panel panel-default" ng-show="!forceupdate">
|
|
28
|
+
<div class="panel-heading">
|
|
29
|
+
<div class="panel-title">
|
|
30
|
+
<i class="glyphicon glyphicon-user"></i>
|
|
31
|
+
<span> 管理员密码设置</span>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="panel-body">
|
|
35
|
+
<p class="alert alert-warning">MySQL 的管理员用户名为 root,密码可在此修改,默认密码为空。</p>
|
|
36
|
+
<form class="form-horizontal form-horizontal-small" onsubmit="return false" method="get" action="/">
|
|
37
|
+
<div class="form-group form-inline">
|
|
38
|
+
<label class="col-sm-2 control-label" for="oldpassword">原密码</label>
|
|
39
|
+
<div class="col-sm-10">
|
|
40
|
+
<input class="form-control" ng-model="root_opasswd" type="password" id="oldpassword" ng-disable="processing" placeholder="请输入原密码" autocomplete="off">
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="form-group form-inline">
|
|
44
|
+
<label class="col-sm-2 control-label" for="newpassword">新密码</label>
|
|
45
|
+
<div class="col-sm-10">
|
|
46
|
+
<input class="form-control" ng-model="root_passwd" type="password" id="newpassword" ng-disable="processing" placeholder="请输入新密码" autocomplete="off">
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
<div class="form-group form-inline">
|
|
50
|
+
<label class="col-sm-2 control-label" for="newpasswordc">确认新密码</label>
|
|
51
|
+
<div class="col-sm-10">
|
|
52
|
+
<input class="form-control" ng-model="root_passwdc" type="password" id="newpasswordc" ng-disable="processing" placeholder="请再次输入新密码" autocomplete="off">
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
<div class="form-group form-inline">
|
|
56
|
+
<label class="col-sm-2 control-label"></label>
|
|
57
|
+
<div class="col-sm-10">
|
|
58
|
+
<button class="btn btn-primary" ng-click="updatepwd()" ng-disable="processing">修改密码</button>
|
|
59
|
+
<button class="btn btn-default" ng-click="forceupdate=true" ng-disable="processing">忘记密码</button>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</form>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="panel panel-default" ng-show="forceupdate">
|
|
66
|
+
<div class="panel-heading">
|
|
67
|
+
<div class="panel-title">
|
|
68
|
+
<i class="glyphicon glyphicon-user"></i>
|
|
69
|
+
<span> 重置密码</span>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="panel-body">
|
|
73
|
+
<p class="alert alert-warning">此处操作会强制修改 root 密码,在修改过程中会停止 MySQL 服务。</p>
|
|
74
|
+
<form class="form-horizontal form-horizontal-small" onsubmit="return false" method="get" action="/">
|
|
75
|
+
<div class="form-group form-inline">
|
|
76
|
+
<label class="col-sm-2 control-label" for="passwordn">新密码</label>
|
|
77
|
+
<div class="col-sm-10">
|
|
78
|
+
<input class="form-control" ng-model="root_passwd" type="password" id="passwordn" ng-disable="processing" placeholder="请输入新密码">
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
<div class="form-group form-inline">
|
|
82
|
+
<label class="col-sm-2 control-label" for="passwordc">确认新密码</label>
|
|
83
|
+
<div class="col-sm-10">
|
|
84
|
+
<input class="form-control" ng-model="root_passwdc" type="password" id="passwordc" ng-disable="processing" placeholder="请再次输入新密码">
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
<div class="form-group form-inline">
|
|
88
|
+
<label class="col-sm-2 control-label"></label>
|
|
89
|
+
<div class="col-sm-10">
|
|
90
|
+
<button class="btn btn-primary" ng-click="fupdatepwd()" ng-disable="processing">确认重置</button>
|
|
91
|
+
<button class="btn btn-default" ng-click="forceupdate=false" ng-disable="processing">取 消</button>
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
</form>
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='configfile'" id="configfile">
|
|
99
|
+
<div srvfile ng-init="items=[{name:'主配置', path:'/etc/my.cnf', isfile:true}];"></div>
|
|
100
|
+
</div>
|
|
101
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='logfile'" id="logfile">
|
|
102
|
+
<div srvlog ng-init="items=[{name:'日志文件', path:'/var/log/mysqld.log', isfile:true}];"></div>
|
|
103
|
+
</div>
|
|
104
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='update'" id="update">
|
|
105
|
+
<div srvupdate ng-init="name='MySQL';pkg='mysql';"></div>
|
|
106
|
+
</div>
|
|
107
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='uninstall'" id="uninstall">
|
|
108
|
+
<div srvuninstall ng-init="name='MySQL';pkg='mysql';"></div>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
</div>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<div navbar ng-init="currentItem='service.named'"></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>Named - DNS 域名解析服务器</h3>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div srvinstall ng-init="name='named';pkg='bind';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" ng-click="sec('base')" data-toggle="tab">基本信息</a></li>
|
|
16
|
+
<li ng-class="'active' | iftrue:activeTabName=='settings'"><a href="#settings" ng-click="load_settings()" 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='named';pkg='bind';service='named';"></div>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='settings'" id="settings">
|
|
28
|
+
<table class="table table-condensed">
|
|
29
|
+
<thead>
|
|
30
|
+
<tr>
|
|
31
|
+
<th colspan="2">基本设置</th>
|
|
32
|
+
</tr>
|
|
33
|
+
</thead>
|
|
34
|
+
<tbody></tbody>
|
|
35
|
+
</table>
|
|
36
|
+
<button class="btn btn-primary" style="margin-left:10px" ng-click="savesettings()">保存设置</button>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='ext'" id="ext">
|
|
39
|
+
<div srvext ng-init="name='named';pkg='bind';"></div>
|
|
40
|
+
</div>
|
|
41
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='configfile'" id="configfile">
|
|
42
|
+
<div srvfile ng-init="items=[
|
|
43
|
+
{name: '主配置', path: '/etc/named.conf', isfile: true},
|
|
44
|
+
{name: '解析配置', path: '/etc/resolv.conf', isfile: true},
|
|
45
|
+
{name: 'hosts', path: '/etc/hosts', isfile: true},
|
|
46
|
+
{name: '区域数据', path: '/var/named', isdir: true},
|
|
47
|
+
{name: '区域配置', path:'/etc/named.rfc1912.zones', isfile: true}];"></div>
|
|
48
|
+
</div>
|
|
49
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='logfile'" id="logfile">
|
|
50
|
+
<div srvlog ng-init="items=[{name:'日志文件', path:'/var/log/messages', isfile:true}];"></div>
|
|
51
|
+
</div>
|
|
52
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='update'" id="update">
|
|
53
|
+
<div srvupdate ng-init="name='named';pkg='bind';"></div>
|
|
54
|
+
</div>
|
|
55
|
+
<div class="tab-pane" ng-class="'active' | iftrue:activeTabName=='uninstall'" id="uninstall">
|
|
56
|
+
<div srvuninstall ng-init="name='named';pkg='bind';"></div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
</div>
|