InPanel 1.2.2__tar.gz → 1.2.4__tar.gz
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-1.2.2 → inpanel-1.2.4}/InPanel.egg-info/PKG-INFO +3 -3
- {inpanel-1.2.2 → inpanel-1.2.4}/InPanel.egg-info/SOURCES.txt +45 -24
- {inpanel-1.2.2 → inpanel-1.2.4}/PKG-INFO +3 -3
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/app.py +40 -34
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/base.py +50 -43
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/config.py +4 -1
- {inpanel-1.2.2/inpanel → inpanel-1.2.4/inpanel/mod}/acme.py +29 -29
- {inpanel-1.2.2/inpanel → inpanel-1.2.4/inpanel/mod}/aliyuncs.py +1 -1
- inpanel-1.2.4/inpanel/mod/apt.py +820 -0
- inpanel-1.2.4/inpanel/mod/brew.py +602 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/certificate.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/config.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/cron.py +1 -1
- inpanel-1.2.4/inpanel/mod/dnf.py +611 -0
- inpanel-1.2.4/inpanel/mod/docker.py +440 -0
- inpanel-1.2.4/inpanel/mod/docker_source.py +407 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/file.py +1 -1
- inpanel-1.2.4/inpanel/mod/firewall.py +204 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/firewall_base.py +18 -19
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/firewall_firewalld.py +16 -17
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/firewall_iptables.py +16 -17
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/firewall_macos.py +17 -18
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/firewall_ufw.py +16 -17
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/ftp.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/httpd.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/lighttpd.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/login.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/mysql.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/named.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/nginx.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/package.py +2 -4
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/package_apt.py +18 -13
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/package_base.py +29 -10
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/package_dnf.py +18 -13
- inpanel-1.2.4/inpanel/mod/package_map.py +100 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/package_yum.py +21 -13
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/php.py +1 -1
- inpanel-1.2.4/inpanel/mod/pip.py +373 -0
- inpanel-1.2.4/inpanel/mod/plugins.py +524 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/process.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/proftpd.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/pureftpd.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/query.py +1 -1
- {inpanel-1.2.2/inpanel → inpanel-1.2.4/inpanel/mod}/remote.py +5 -5
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/server.py +257 -52
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/service.py +19 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/setting.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/shell.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/ssh.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/system.py +16 -17
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/task.py +2 -2
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/ufw.py +2 -2
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/user.py +1 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/vsftpd.py +1 -1
- inpanel-1.2.4/inpanel/mod/yum.py +816 -0
- inpanel-1.2.4/inpanel/plugin.py +203 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/index.html +1 -1
- inpanel-1.2.4/inpanel/public/js/controllers/container.js +195 -0
- inpanel-1.2.4/inpanel/public/js/controllers/plugins.js +222 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/js/controllers/service.js +582 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/js/controllers/utils.js +537 -165
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/js/core.js +27 -3
- inpanel-1.2.4/inpanel/public/partials/container/index.html +348 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/directives/navbar.html +2 -1
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/main.html +22 -5
- inpanel-1.2.4/inpanel/public/partials/plugins/config.html +25 -0
- inpanel-1.2.4/inpanel/public/partials/plugins/detail.html +61 -0
- inpanel-1.2.4/inpanel/public/partials/plugins/index.html +51 -0
- inpanel-1.2.4/inpanel/public/partials/plugins/info.html +23 -0
- inpanel-1.2.4/inpanel/public/partials/service/fail2ban.html +40 -0
- inpanel-1.2.4/inpanel/public/partials/service/firewalld.html +40 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/index.html +191 -16
- inpanel-1.2.4/inpanel/public/partials/service/java11.html +40 -0
- inpanel-1.2.4/inpanel/public/partials/service/java17.html +40 -0
- inpanel-1.2.4/inpanel/public/partials/service/java21.html +40 -0
- inpanel-1.2.4/inpanel/public/partials/service/java8.html +40 -0
- inpanel-1.2.4/inpanel/public/partials/service/nodejs18.html +40 -0
- inpanel-1.2.4/inpanel/public/partials/service/nodejs20.html +40 -0
- inpanel-1.2.4/inpanel/public/partials/service/nodejs22.html +40 -0
- inpanel-1.2.4/inpanel/public/partials/service/nodejs24.html +40 -0
- inpanel-1.2.4/inpanel/public/partials/service/php56.html +233 -0
- inpanel-1.2.4/inpanel/public/partials/service/php74.html +233 -0
- inpanel-1.2.4/inpanel/public/partials/service/php80.html +233 -0
- inpanel-1.2.4/inpanel/public/partials/service/php81.html +233 -0
- inpanel-1.2.4/inpanel/public/partials/service/php82.html +233 -0
- inpanel-1.2.4/inpanel/public/partials/service/php83.html +233 -0
- inpanel-1.2.4/inpanel/public/partials/service/php84.html +233 -0
- inpanel-1.2.4/inpanel/public/partials/service/ufw.html +40 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/storage/index.html +13 -11
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/utils/index.html +3 -3
- inpanel-1.2.4/inpanel/public/partials/utils/sources.html +1182 -0
- {inpanel-1.2.2/inpanel → inpanel-1.2.4/inpanel/public}/templates/index.html +1 -0
- inpanel-1.2.4/inpanel/templates/__init__.py +1 -0
- inpanel-1.2.4/inpanel/templates/sources/__init__.py +74 -0
- inpanel-1.2.4/inpanel/templates/sources/apt.json +224 -0
- inpanel-1.2.4/inpanel/templates/sources/brew.json +50 -0
- inpanel-1.2.4/inpanel/templates/sources/dnf.json +204 -0
- inpanel-1.2.4/inpanel/templates/sources/docker.json +49 -0
- inpanel-1.2.4/inpanel/templates/sources/package_map.json +71 -0
- inpanel-1.2.4/inpanel/templates/sources/pip.json +12 -0
- inpanel-1.2.4/inpanel/templates/sources/third_party.json +474 -0
- inpanel-1.2.4/inpanel/templates/sources/yum.json +690 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/utils.py +26 -27
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/web.py +374 -270
- {inpanel-1.2.2 → inpanel-1.2.4}/pyproject.toml +3 -3
- inpanel-1.2.2/inpanel/apt.py +0 -223
- inpanel-1.2.2/inpanel/data/bookmarks.ini +0 -20
- inpanel-1.2.2/inpanel/data/config.ini +0 -29
- inpanel-1.2.2/inpanel/data/error.log +0 -294
- inpanel-1.2.2/inpanel/data/history.txt +0 -30
- inpanel-1.2.2/inpanel/data/inpanel.pid +0 -1
- inpanel-1.2.2/inpanel/data/lastfile.ini +0 -4
- inpanel-1.2.2/inpanel/data/main.log +0 -3300
- inpanel-1.2.2/inpanel/data/upgrade.ini +0 -6
- inpanel-1.2.2/inpanel/dnf.py +0 -225
- inpanel-1.2.2/inpanel/mod/apt.py +0 -316
- inpanel-1.2.2/inpanel/mod/dnf.py +0 -239
- inpanel-1.2.2/inpanel/mod/firewall.py +0 -199
- inpanel-1.2.2/inpanel/mod/package_map.py +0 -366
- inpanel-1.2.2/inpanel/mod/yum.py +0 -243
- inpanel-1.2.2/inpanel/plugins/__init__.py +0 -10
- inpanel-1.2.2/inpanel/plugins/acme/static/index.html +0 -10
- inpanel-1.2.2/inpanel/plugins/acme/static/index.js +0 -13
- inpanel-1.2.2/inpanel/plugins/shadowsocks-libev/info.py +0 -73
- inpanel-1.2.2/inpanel/plugins/shadowsocks-libev/static/index.html +0 -70
- inpanel-1.2.2/inpanel/plugins/shadowsocks-libev/static/index.js +0 -18
- inpanel-1.2.2/inpanel/public/js/controllers/plugins.js +0 -105
- inpanel-1.2.2/inpanel/public/partials/plugins/index.html +0 -55
- inpanel-1.2.2/inpanel/public/partials/plugins/plugins.html +0 -13
- inpanel-1.2.2/inpanel/public/partials/utils/repository.html +0 -373
- inpanel-1.2.2/inpanel/yum.py +0 -756
- {inpanel-1.2.2 → inpanel-1.2.4}/InPanel.egg-info/dependency_links.txt +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/InPanel.egg-info/entry_points.txt +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/InPanel.egg-info/requires.txt +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/InPanel.egg-info/top_level.txt +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/LICENSE +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/MANIFEST.in +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/README.md +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/__init__.py +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/lib/__init__.py +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/lib/async_process.py +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/lib/filelock.py +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/lib/magic.py +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/lib/pxssh.py +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/lib/pyDes.py +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/__init__.py +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/mod/disk.py +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/css/global.css +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/favicon.ico +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/images/alipay.jpg +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/images/loading.gif +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/images/weixin.jpg +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/js/controllers/controllers.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/js/controllers/database.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/js/controllers/ecs.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/js/controllers/file.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/js/controllers/site.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/js/directives.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/js/filters.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/js/services.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/angular/1.0.2/angular-resource.min.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/angular/1.0.2/angular.min.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/css/bootstrap-theme.css +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/css/bootstrap-theme.css.map +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/css/bootstrap-theme.min.css +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/css/bootstrap-theme.min.css.map +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/css/bootstrap.css +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/css/bootstrap.css.map +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/css/bootstrap.min.css +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/css/bootstrap.min.css.map +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.svg +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/img/glyphicons-halflings-white.png +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/img/glyphicons-halflings.png +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/js/bootstrap.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/js/bootstrap.min.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/bootstrap/js/npm.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/codemirror/codemirror-compressed.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/codemirror/codemirror.css +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/jquery/jquery-1.12.4.min.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/md5/md5.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/lib/md5/md5.min.js +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/database/index.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/database/mysql/dbedit.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/database/mysql/dbnew.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/database/mysql/useredit.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/database/mysql/usernew.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/directives/message.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/directives/selector.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/directives/srvbase.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/directives/srvext.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/directives/srvfile.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/directives/srvinstall.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/directives/srvlog.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/directives/srvminiop.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/directives/srvuninstall.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/directives/srvupdate.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/ecs/account.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/ecs/ecs.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/ecs/index.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/ecs/setings.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/file/file.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/file/trash.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/ftp.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/log.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/login.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/logout.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/secure.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/apache.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/cron.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/iptables.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/lighttpd.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/mariadb.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/memcache.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/minio.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/mongodb.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/mysql.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/named.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/nginx.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/ntp.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/php.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/proftpd.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/pureftpd.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/redis.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/samba.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/sendmail.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/ssh.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/tomcat.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/service/vsftpd.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/setting.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/site/apache/site.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/site/index.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/site/nginx/site.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/sorry.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/storage/autofm.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/storage/backup.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/storage/migrate.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/storage/movedata.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/storage/remote.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/utils/cron.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/utils/firewall.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/utils/network.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/utils/process.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/utils/shell.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/utils/ssl.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/utils/time.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/partials/utils/user.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/inpanel/public/robots.txt +0 -0
- {inpanel-1.2.2/inpanel → inpanel-1.2.4/inpanel/public}/templates/file/preview.html +0 -0
- {inpanel-1.2.2 → inpanel-1.2.4}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: InPanel
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.4
|
|
4
4
|
Summary: InPanel - A Web-based Linux Server Management Tool
|
|
5
5
|
Author-email: Jackson Dou <jksdou@qq.com>
|
|
6
6
|
Maintainer-email: Jackson Dou <jksdou@qq.com>
|
|
@@ -35,9 +35,9 @@ License: BSD 3-Clause License
|
|
|
35
35
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
36
36
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
37
37
|
|
|
38
|
-
Project-URL: Homepage, https://inpanel.org
|
|
38
|
+
Project-URL: Homepage, https://inpanel.org
|
|
39
39
|
Project-URL: Repository, https://github.com/inpanel/inpanel
|
|
40
|
-
Project-URL: Documentation, https://inpanel.org
|
|
40
|
+
Project-URL: Documentation, https://inpanel.org
|
|
41
41
|
Project-URL: Issues, https://github.com/inpanel/inpanel/issues
|
|
42
42
|
Keywords: server,management,admin,panel,linux
|
|
43
43
|
Classifier: Development Status :: 5 - Production/Stable
|
|
@@ -9,25 +9,12 @@ InPanel.egg-info/entry_points.txt
|
|
|
9
9
|
InPanel.egg-info/requires.txt
|
|
10
10
|
InPanel.egg-info/top_level.txt
|
|
11
11
|
inpanel/__init__.py
|
|
12
|
-
inpanel/acme.py
|
|
13
|
-
inpanel/aliyuncs.py
|
|
14
12
|
inpanel/app.py
|
|
15
|
-
inpanel/apt.py
|
|
16
13
|
inpanel/base.py
|
|
17
14
|
inpanel/config.py
|
|
18
|
-
inpanel/
|
|
19
|
-
inpanel/remote.py
|
|
15
|
+
inpanel/plugin.py
|
|
20
16
|
inpanel/utils.py
|
|
21
17
|
inpanel/web.py
|
|
22
|
-
inpanel/yum.py
|
|
23
|
-
inpanel/data/bookmarks.ini
|
|
24
|
-
inpanel/data/config.ini
|
|
25
|
-
inpanel/data/error.log
|
|
26
|
-
inpanel/data/history.txt
|
|
27
|
-
inpanel/data/inpanel.pid
|
|
28
|
-
inpanel/data/lastfile.ini
|
|
29
|
-
inpanel/data/main.log
|
|
30
|
-
inpanel/data/upgrade.ini
|
|
31
18
|
inpanel/lib/__init__.py
|
|
32
19
|
inpanel/lib/async_process.py
|
|
33
20
|
inpanel/lib/filelock.py
|
|
@@ -35,12 +22,17 @@ inpanel/lib/magic.py
|
|
|
35
22
|
inpanel/lib/pxssh.py
|
|
36
23
|
inpanel/lib/pyDes.py
|
|
37
24
|
inpanel/mod/__init__.py
|
|
25
|
+
inpanel/mod/acme.py
|
|
26
|
+
inpanel/mod/aliyuncs.py
|
|
38
27
|
inpanel/mod/apt.py
|
|
28
|
+
inpanel/mod/brew.py
|
|
39
29
|
inpanel/mod/certificate.py
|
|
40
30
|
inpanel/mod/config.py
|
|
41
31
|
inpanel/mod/cron.py
|
|
42
32
|
inpanel/mod/disk.py
|
|
43
33
|
inpanel/mod/dnf.py
|
|
34
|
+
inpanel/mod/docker.py
|
|
35
|
+
inpanel/mod/docker_source.py
|
|
44
36
|
inpanel/mod/file.py
|
|
45
37
|
inpanel/mod/firewall.py
|
|
46
38
|
inpanel/mod/firewall_base.py
|
|
@@ -62,10 +54,13 @@ inpanel/mod/package_dnf.py
|
|
|
62
54
|
inpanel/mod/package_map.py
|
|
63
55
|
inpanel/mod/package_yum.py
|
|
64
56
|
inpanel/mod/php.py
|
|
57
|
+
inpanel/mod/pip.py
|
|
58
|
+
inpanel/mod/plugins.py
|
|
65
59
|
inpanel/mod/process.py
|
|
66
60
|
inpanel/mod/proftpd.py
|
|
67
61
|
inpanel/mod/pureftpd.py
|
|
68
62
|
inpanel/mod/query.py
|
|
63
|
+
inpanel/mod/remote.py
|
|
69
64
|
inpanel/mod/server.py
|
|
70
65
|
inpanel/mod/service.py
|
|
71
66
|
inpanel/mod/setting.py
|
|
@@ -77,12 +72,6 @@ inpanel/mod/ufw.py
|
|
|
77
72
|
inpanel/mod/user.py
|
|
78
73
|
inpanel/mod/vsftpd.py
|
|
79
74
|
inpanel/mod/yum.py
|
|
80
|
-
inpanel/plugins/__init__.py
|
|
81
|
-
inpanel/plugins/acme/static/index.html
|
|
82
|
-
inpanel/plugins/acme/static/index.js
|
|
83
|
-
inpanel/plugins/shadowsocks-libev/info.py
|
|
84
|
-
inpanel/plugins/shadowsocks-libev/static/index.html
|
|
85
|
-
inpanel/plugins/shadowsocks-libev/static/index.js
|
|
86
75
|
inpanel/public/favicon.ico
|
|
87
76
|
inpanel/public/index.html
|
|
88
77
|
inpanel/public/robots.txt
|
|
@@ -94,6 +83,7 @@ inpanel/public/js/core.js
|
|
|
94
83
|
inpanel/public/js/directives.js
|
|
95
84
|
inpanel/public/js/filters.js
|
|
96
85
|
inpanel/public/js/services.js
|
|
86
|
+
inpanel/public/js/controllers/container.js
|
|
97
87
|
inpanel/public/js/controllers/controllers.js
|
|
98
88
|
inpanel/public/js/controllers/database.js
|
|
99
89
|
inpanel/public/js/controllers/ecs.js
|
|
@@ -135,6 +125,7 @@ inpanel/public/partials/main.html
|
|
|
135
125
|
inpanel/public/partials/secure.html
|
|
136
126
|
inpanel/public/partials/setting.html
|
|
137
127
|
inpanel/public/partials/sorry.html
|
|
128
|
+
inpanel/public/partials/container/index.html
|
|
138
129
|
inpanel/public/partials/database/index.html
|
|
139
130
|
inpanel/public/partials/database/mysql/dbedit.html
|
|
140
131
|
inpanel/public/partials/database/mysql/dbnew.html
|
|
@@ -157,12 +148,20 @@ inpanel/public/partials/ecs/index.html
|
|
|
157
148
|
inpanel/public/partials/ecs/setings.html
|
|
158
149
|
inpanel/public/partials/file/file.html
|
|
159
150
|
inpanel/public/partials/file/trash.html
|
|
151
|
+
inpanel/public/partials/plugins/config.html
|
|
152
|
+
inpanel/public/partials/plugins/detail.html
|
|
160
153
|
inpanel/public/partials/plugins/index.html
|
|
161
|
-
inpanel/public/partials/plugins/
|
|
154
|
+
inpanel/public/partials/plugins/info.html
|
|
162
155
|
inpanel/public/partials/service/apache.html
|
|
163
156
|
inpanel/public/partials/service/cron.html
|
|
157
|
+
inpanel/public/partials/service/fail2ban.html
|
|
158
|
+
inpanel/public/partials/service/firewalld.html
|
|
164
159
|
inpanel/public/partials/service/index.html
|
|
165
160
|
inpanel/public/partials/service/iptables.html
|
|
161
|
+
inpanel/public/partials/service/java11.html
|
|
162
|
+
inpanel/public/partials/service/java17.html
|
|
163
|
+
inpanel/public/partials/service/java21.html
|
|
164
|
+
inpanel/public/partials/service/java8.html
|
|
166
165
|
inpanel/public/partials/service/lighttpd.html
|
|
167
166
|
inpanel/public/partials/service/mariadb.html
|
|
168
167
|
inpanel/public/partials/service/memcache.html
|
|
@@ -171,8 +170,19 @@ inpanel/public/partials/service/mongodb.html
|
|
|
171
170
|
inpanel/public/partials/service/mysql.html
|
|
172
171
|
inpanel/public/partials/service/named.html
|
|
173
172
|
inpanel/public/partials/service/nginx.html
|
|
173
|
+
inpanel/public/partials/service/nodejs18.html
|
|
174
|
+
inpanel/public/partials/service/nodejs20.html
|
|
175
|
+
inpanel/public/partials/service/nodejs22.html
|
|
176
|
+
inpanel/public/partials/service/nodejs24.html
|
|
174
177
|
inpanel/public/partials/service/ntp.html
|
|
175
178
|
inpanel/public/partials/service/php.html
|
|
179
|
+
inpanel/public/partials/service/php56.html
|
|
180
|
+
inpanel/public/partials/service/php74.html
|
|
181
|
+
inpanel/public/partials/service/php80.html
|
|
182
|
+
inpanel/public/partials/service/php81.html
|
|
183
|
+
inpanel/public/partials/service/php82.html
|
|
184
|
+
inpanel/public/partials/service/php83.html
|
|
185
|
+
inpanel/public/partials/service/php84.html
|
|
176
186
|
inpanel/public/partials/service/proftpd.html
|
|
177
187
|
inpanel/public/partials/service/pureftpd.html
|
|
178
188
|
inpanel/public/partials/service/redis.html
|
|
@@ -180,6 +190,7 @@ inpanel/public/partials/service/samba.html
|
|
|
180
190
|
inpanel/public/partials/service/sendmail.html
|
|
181
191
|
inpanel/public/partials/service/ssh.html
|
|
182
192
|
inpanel/public/partials/service/tomcat.html
|
|
193
|
+
inpanel/public/partials/service/ufw.html
|
|
183
194
|
inpanel/public/partials/service/vsftpd.html
|
|
184
195
|
inpanel/public/partials/site/index.html
|
|
185
196
|
inpanel/public/partials/site/apache/site.html
|
|
@@ -195,10 +206,20 @@ inpanel/public/partials/utils/firewall.html
|
|
|
195
206
|
inpanel/public/partials/utils/index.html
|
|
196
207
|
inpanel/public/partials/utils/network.html
|
|
197
208
|
inpanel/public/partials/utils/process.html
|
|
198
|
-
inpanel/public/partials/utils/repository.html
|
|
199
209
|
inpanel/public/partials/utils/shell.html
|
|
210
|
+
inpanel/public/partials/utils/sources.html
|
|
200
211
|
inpanel/public/partials/utils/ssl.html
|
|
201
212
|
inpanel/public/partials/utils/time.html
|
|
202
213
|
inpanel/public/partials/utils/user.html
|
|
203
|
-
inpanel/templates/index.html
|
|
204
|
-
inpanel/templates/file/preview.html
|
|
214
|
+
inpanel/public/templates/index.html
|
|
215
|
+
inpanel/public/templates/file/preview.html
|
|
216
|
+
inpanel/templates/__init__.py
|
|
217
|
+
inpanel/templates/sources/__init__.py
|
|
218
|
+
inpanel/templates/sources/apt.json
|
|
219
|
+
inpanel/templates/sources/brew.json
|
|
220
|
+
inpanel/templates/sources/dnf.json
|
|
221
|
+
inpanel/templates/sources/docker.json
|
|
222
|
+
inpanel/templates/sources/package_map.json
|
|
223
|
+
inpanel/templates/sources/pip.json
|
|
224
|
+
inpanel/templates/sources/third_party.json
|
|
225
|
+
inpanel/templates/sources/yum.json
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: InPanel
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.4
|
|
4
4
|
Summary: InPanel - A Web-based Linux Server Management Tool
|
|
5
5
|
Author-email: Jackson Dou <jksdou@qq.com>
|
|
6
6
|
Maintainer-email: Jackson Dou <jksdou@qq.com>
|
|
@@ -35,9 +35,9 @@ License: BSD 3-Clause License
|
|
|
35
35
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
36
36
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
37
37
|
|
|
38
|
-
Project-URL: Homepage, https://inpanel.org
|
|
38
|
+
Project-URL: Homepage, https://inpanel.org
|
|
39
39
|
Project-URL: Repository, https://github.com/inpanel/inpanel
|
|
40
|
-
Project-URL: Documentation, https://inpanel.org
|
|
40
|
+
Project-URL: Documentation, https://inpanel.org
|
|
41
41
|
Project-URL: Issues, https://github.com/inpanel/inpanel/issues
|
|
42
42
|
Keywords: server,management,admin,panel,linux
|
|
43
43
|
Classifier: Development Status :: 5 - Production/Stable
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# Copyright (c) 2017-2026 Jackson Dou
|
|
5
5
|
# All rights reserved.
|
|
6
6
|
#
|
|
7
|
-
# InPanel is distributed under the terms of
|
|
7
|
+
# InPanel is distributed under the terms of the (new) BSD License.
|
|
8
8
|
# The full license can be found in 'LICENSE'.
|
|
9
9
|
|
|
10
10
|
import os
|
|
@@ -20,14 +20,14 @@ import logging
|
|
|
20
20
|
from tornado import httpserver, ioloop
|
|
21
21
|
|
|
22
22
|
from . import web
|
|
23
|
-
from .base import pidfile, logfile, logerror, config_file, config_path, logging_path, run_type, DEBUG, root_path
|
|
23
|
+
from .base import pidfile, logfile, logerror, config_file, config_path, logging_path, run_type, DEBUG, root_path, data_path
|
|
24
24
|
from .mod.process import remove_pid_file, save_pid_file, WebRequestProcess
|
|
25
25
|
from .mod.config import load_config
|
|
26
26
|
from .utils import make_cookie_secret
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
def _read_pid(pidfile):
|
|
30
|
-
"""
|
|
30
|
+
"""从 pid 文件读取进程 ID,若文件不存在或内容无效则返回 None"""
|
|
31
31
|
pidfile_path = Path(pidfile)
|
|
32
32
|
if not pidfile_path.exists():
|
|
33
33
|
return None
|
|
@@ -39,7 +39,7 @@ def _read_pid(pidfile):
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
def _is_running(pid):
|
|
42
|
-
"""
|
|
42
|
+
"""检查指定 PID 的进程是否正在运行"""
|
|
43
43
|
if pid is None or pid <= 0:
|
|
44
44
|
return False
|
|
45
45
|
try:
|
|
@@ -50,7 +50,7 @@ def _is_running(pid):
|
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
def _wait_stop(pid, timeout=10):
|
|
53
|
-
"""
|
|
53
|
+
"""等待进程停止,超时返回 False,成功停止返回 True"""
|
|
54
54
|
for _ in range(timeout * 2):
|
|
55
55
|
if not _is_running(pid):
|
|
56
56
|
return True
|
|
@@ -94,7 +94,7 @@ Examples:
|
|
|
94
94
|
|
|
95
95
|
|
|
96
96
|
def cmd_start():
|
|
97
|
-
"""
|
|
97
|
+
"""以后台守护进程方式启动服务"""
|
|
98
98
|
pid = _read_pid(pidfile)
|
|
99
99
|
if pid and _is_running(pid):
|
|
100
100
|
print(f'InPanel is already running with PID: {pid}')
|
|
@@ -132,11 +132,11 @@ def cmd_start():
|
|
|
132
132
|
print(f'InPanel: fork failed: {e}')
|
|
133
133
|
sys.exit(1)
|
|
134
134
|
|
|
135
|
-
#
|
|
135
|
+
# 子进程:脱离终端并运行服务器
|
|
136
136
|
os.setsid()
|
|
137
137
|
os.umask(0)
|
|
138
138
|
|
|
139
|
-
#
|
|
139
|
+
# 重定向标准输入/输出/错误到日志文件
|
|
140
140
|
sys.stdout.flush()
|
|
141
141
|
sys.stderr.flush()
|
|
142
142
|
with open('/dev/null', 'r') as f:
|
|
@@ -150,7 +150,7 @@ def cmd_start():
|
|
|
150
150
|
|
|
151
151
|
|
|
152
152
|
def cmd_stop():
|
|
153
|
-
"""
|
|
153
|
+
"""停止服务"""
|
|
154
154
|
pid = _read_pid(pidfile)
|
|
155
155
|
if not pid:
|
|
156
156
|
print('InPanel is not running (no pid file)')
|
|
@@ -178,7 +178,7 @@ def cmd_stop():
|
|
|
178
178
|
|
|
179
179
|
|
|
180
180
|
def cmd_status():
|
|
181
|
-
"""
|
|
181
|
+
"""显示服务运行状态"""
|
|
182
182
|
pid = _read_pid(pidfile)
|
|
183
183
|
if not pid:
|
|
184
184
|
print('InPanel: not running')
|
|
@@ -197,7 +197,7 @@ def cmd_status():
|
|
|
197
197
|
|
|
198
198
|
|
|
199
199
|
def cmd_restart():
|
|
200
|
-
"""
|
|
200
|
+
"""重启服务"""
|
|
201
201
|
pid = _read_pid(pidfile)
|
|
202
202
|
if pid and _is_running(pid):
|
|
203
203
|
cmd_stop()
|
|
@@ -206,13 +206,13 @@ def cmd_restart():
|
|
|
206
206
|
|
|
207
207
|
|
|
208
208
|
def cmd_reload():
|
|
209
|
-
"""
|
|
209
|
+
"""重新加载服务(与重启相同)"""
|
|
210
210
|
print('InPanel: reloading (restart)...')
|
|
211
211
|
cmd_restart()
|
|
212
212
|
|
|
213
213
|
|
|
214
214
|
def cmd_uninstall(args=None):
|
|
215
|
-
"""
|
|
215
|
+
"""卸载 InPanel"""
|
|
216
216
|
if os.geteuid() != 0:
|
|
217
217
|
print('Error: uninstall must be run as root.')
|
|
218
218
|
sys.exit(1)
|
|
@@ -246,7 +246,7 @@ def cmd_uninstall(args=None):
|
|
|
246
246
|
|
|
247
247
|
print('Uninstalling InPanel...')
|
|
248
248
|
|
|
249
|
-
#
|
|
249
|
+
# 移除 systemd 服务
|
|
250
250
|
if os.path.exists(systemd_service):
|
|
251
251
|
try:
|
|
252
252
|
subprocess.run(['systemctl', 'stop', 'inpanel'], stderr=subprocess.DEVNULL)
|
|
@@ -263,7 +263,7 @@ def cmd_uninstall(args=None):
|
|
|
263
263
|
except Exception:
|
|
264
264
|
pass
|
|
265
265
|
|
|
266
|
-
#
|
|
266
|
+
# 移除 init.d 脚本
|
|
267
267
|
if os.path.exists(initd_script):
|
|
268
268
|
try:
|
|
269
269
|
subprocess.run(['chkconfig', '--del', 'inpanel'], stderr=subprocess.DEVNULL)
|
|
@@ -276,19 +276,19 @@ def cmd_uninstall(args=None):
|
|
|
276
276
|
os.remove(initd_script)
|
|
277
277
|
print(f' removed: {initd_script}')
|
|
278
278
|
|
|
279
|
-
#
|
|
279
|
+
# 移除二进制文件 / 控制台脚本
|
|
280
280
|
if os.path.exists(bin_path):
|
|
281
281
|
os.remove(bin_path)
|
|
282
282
|
print(f' removed: {bin_path}')
|
|
283
283
|
|
|
284
|
-
#
|
|
284
|
+
# 通过 pip 移除 Python 包
|
|
285
285
|
if run_type == 'system':
|
|
286
286
|
try:
|
|
287
287
|
subprocess.run([sys.executable, '-m', 'pip', 'uninstall', '-y', 'inpanel'],
|
|
288
288
|
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
289
289
|
print(' removed: inpanel python package')
|
|
290
290
|
except Exception:
|
|
291
|
-
#
|
|
291
|
+
# 尝试手动查找并删除
|
|
292
292
|
pkg_path = Path(__file__).parent.resolve()
|
|
293
293
|
if pkg_path.exists() and ('site-packages' in str(pkg_path) or 'dist-packages' in str(pkg_path)):
|
|
294
294
|
egg_info = pkg_path.parent / 'inpanel.egg-info'
|
|
@@ -297,12 +297,12 @@ def cmd_uninstall(args=None):
|
|
|
297
297
|
shutil.rmtree(pkg_path, ignore_errors=True)
|
|
298
298
|
print(f' removed: {pkg_path}')
|
|
299
299
|
|
|
300
|
-
#
|
|
300
|
+
# 移除配置文件(可选)
|
|
301
301
|
if purge_config and config_path and os.path.exists(config_path):
|
|
302
302
|
shutil.rmtree(config_path, ignore_errors=True)
|
|
303
303
|
print(f' removed: {config_path} (config files)')
|
|
304
304
|
|
|
305
|
-
#
|
|
305
|
+
# 移除日志文件(可选)
|
|
306
306
|
if purge_logs and logging_path and os.path.exists(logging_path):
|
|
307
307
|
shutil.rmtree(logging_path, ignore_errors=True)
|
|
308
308
|
print(f' removed: {logging_path} (log files)')
|
|
@@ -320,7 +320,7 @@ def cmd_uninstall(args=None):
|
|
|
320
320
|
|
|
321
321
|
|
|
322
322
|
def run_server():
|
|
323
|
-
"""
|
|
323
|
+
"""以前台模式运行服务器"""
|
|
324
324
|
try:
|
|
325
325
|
Path(logfile).parent.mkdir(parents=True, exist_ok=True)
|
|
326
326
|
Path(logerror).parent.mkdir(parents=True, exist_ok=True)
|
|
@@ -355,11 +355,11 @@ def run_server():
|
|
|
355
355
|
'autoreload' : DEBUG,
|
|
356
356
|
'cookie_secret' : 'debug' if DEBUG else make_cookie_secret(),
|
|
357
357
|
'root_path' : root_path,
|
|
358
|
-
'data_path' :
|
|
359
|
-
'index_path' : str(Path(root_path) / 'templates' / 'index.html'),
|
|
360
|
-
'template_path' : str(Path(root_path) / 'templates'),
|
|
358
|
+
'data_path' : data_path,
|
|
359
|
+
'index_path' : str(Path(root_path) / 'public' / 'templates' / 'index.html'),
|
|
360
|
+
'template_path' : str(Path(root_path) / 'public' / 'templates'),
|
|
361
361
|
'static_path' : str(Path(root_path) / 'public'),
|
|
362
|
-
'plugins_path' : str(Path(
|
|
362
|
+
'plugins_path' : str(Path(data_path) / 'plugins'),
|
|
363
363
|
'xsrf_cookies' : True,
|
|
364
364
|
'gzip' : True
|
|
365
365
|
}
|
|
@@ -374,21 +374,27 @@ def run_server():
|
|
|
374
374
|
(r'/api/process/(.+?)(?:/(.+))?', WebRequestProcess),
|
|
375
375
|
(r'/api/time/(.+?)(?:/(.+))?', web.UtilsTimeHandler),
|
|
376
376
|
(r'/api/ssl/(.+?)(?:/(.+))?', web.SSLTLSHandler),
|
|
377
|
-
(r'/api/
|
|
378
|
-
(r'/api/
|
|
379
|
-
(r'/api/
|
|
377
|
+
(r'/api/sources/yum/(.+?)(?:/(.+))?', web.RepoYumHandler),
|
|
378
|
+
(r'/api/sources/dnf/(.+?)(?:/(.+))?', web.RepoDnfHandler),
|
|
379
|
+
(r'/api/sources/apt/(.+?)(?:/(.+))?', web.RepoAptHandler),
|
|
380
|
+
(r'/api/sources/brew/(.+?)(?:/(.+))?', web.RepoBrewHandler),
|
|
381
|
+
(r'/api/sources/pip/(.+?)(?:/(.+))?', web.RepoPipHandler),
|
|
382
|
+
(r'/api/sources/docker/(.+?)(?:/(.+))?', web.RepoDockerHandler),
|
|
383
|
+
(r'/api/sources/supported/?', web.RepoSupportedHandler),
|
|
380
384
|
(r'/api/firewall/(.+)', web.FirewallHandler),
|
|
381
385
|
(r'/api/setting/(.+)', web.SettingHandler),
|
|
382
386
|
(r'/api/operation/(.+)', web.OperationHandler),
|
|
383
|
-
(r'/page/file/preview/(.+)', web.FilePreviewHandler),
|
|
384
|
-
(r'/page/(.+)/(.+)', web.PageHandler),
|
|
385
387
|
(r'/api/backend/(.+)', web.BackendHandler),
|
|
386
388
|
(r'/api/sitepackage/(.+)', web.SitePackageHandler),
|
|
387
389
|
(r'/api/client/(.+)', web.ClientHandler),
|
|
388
|
-
(r'/api/plugins
|
|
390
|
+
(r'/api/plugins', web.PluginHandler),
|
|
391
|
+
(r'/api/plugins/(list|info|config|install|uninstall|toggle)', web.PluginHandler),
|
|
389
392
|
(r'/api/file/download/(.+)', web.FileDownloadHandler, { 'path': '/' }),
|
|
390
393
|
(r'/api/file/upload', web.FileUploadHandler),
|
|
391
394
|
(r'/api/version', web.VersionHandler),
|
|
395
|
+
(r'/page/plugins/(.*)', web.PluginStaticFileHandler, { 'path': settings['plugins_path']}),
|
|
396
|
+
(r'/page/file/preview/(.+)', web.FilePreviewHandler),
|
|
397
|
+
(r'/page/(.+)/(.+)', web.PageHandler),
|
|
392
398
|
(r'/((?:css|js|js.min|lib|partials|images|favicon\.ico|robots\.txt)(?:\/.*)?)', web.StaticFileHandler, { 'path': settings['static_path'] }),
|
|
393
399
|
(r'/', web.IndexHandler),
|
|
394
400
|
(r'/($)', web.StaticFileHandler, { 'path': settings['index_path'] }),
|
|
@@ -463,13 +469,13 @@ def run_server():
|
|
|
463
469
|
|
|
464
470
|
|
|
465
471
|
def main():
|
|
466
|
-
#
|
|
472
|
+
# 将 'config' 子命令路由到 config 模块
|
|
467
473
|
if len(sys.argv) > 1 and sys.argv[1] == 'config':
|
|
468
474
|
from .config import main as config_main
|
|
469
475
|
config_main(sys.argv[2:])
|
|
470
476
|
return
|
|
471
477
|
|
|
472
|
-
#
|
|
478
|
+
# 服务控制命令
|
|
473
479
|
if len(sys.argv) > 1:
|
|
474
480
|
cmd = sys.argv[1].lower()
|
|
475
481
|
if cmd == 'start':
|
|
@@ -506,7 +512,7 @@ def main():
|
|
|
506
512
|
_print_help()
|
|
507
513
|
sys.exit(1)
|
|
508
514
|
|
|
509
|
-
#
|
|
515
|
+
# 无参数:显示帮助信息
|
|
510
516
|
_print_help()
|
|
511
517
|
|
|
512
518
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
|
-
|
|
2
|
+
#
|
|
3
3
|
# Copyright (c) 2017-2026 Jackson Dou
|
|
4
4
|
# All rights reserved.
|
|
5
5
|
#
|
|
6
6
|
# InPanel is distributed under the terms of the (new) BSD License.
|
|
7
7
|
# The full license can be found in 'LICENSE'.
|
|
8
|
+
'''InPanel 基础信息模块'''
|
|
8
9
|
|
|
9
10
|
import sys
|
|
10
11
|
import os
|
|
@@ -40,14 +41,15 @@ __author__ = 'Jackson Dou'
|
|
|
40
41
|
__license__ = 'BSD'
|
|
41
42
|
|
|
42
43
|
app_name = 'InPanel'
|
|
43
|
-
releasetime = '2026-07-
|
|
44
|
-
DEBUG =
|
|
44
|
+
releasetime = '2026-07-17'
|
|
45
|
+
DEBUG = False
|
|
45
46
|
COMMENTFLAG = '#INPANEL#'
|
|
46
47
|
GENBY = 'AUTOMATICALLY GENERATED BY INPANEL'
|
|
47
48
|
|
|
48
49
|
# 版本信息
|
|
49
50
|
version_info = {
|
|
50
51
|
'name' : app_name,
|
|
52
|
+
'url' : 'https://inpanel.org',
|
|
51
53
|
'changelog' : 'https://inpanel.org/changelog.html',
|
|
52
54
|
'releasetime' : releasetime,
|
|
53
55
|
'version' : __version__
|
|
@@ -60,50 +62,55 @@ app_api = {
|
|
|
60
62
|
'download_package' : 'https://api.inpanel.org/?s=site_packages&a=download'
|
|
61
63
|
}
|
|
62
64
|
|
|
65
|
+
execfile = '/usr/bin/inpanel'
|
|
66
|
+
data_path = '/var/lib/inpanel/'
|
|
67
|
+
config_path = '/etc/inpanel/'
|
|
68
|
+
config_file = '/etc/inpanel/config.ini'
|
|
69
|
+
lastfile_path = '/etc/inpanel/lastfile.ini'
|
|
70
|
+
bookmarks_path = '/etc/inpanel/bookmarks.ini'
|
|
71
|
+
upgrade_path = '/etc/inpanel/upgrade.ini'
|
|
72
|
+
history_path = '/etc/inpanel/history.txt'
|
|
73
|
+
logging_path = '/var/log/inpanel/'
|
|
74
|
+
logfile = '/var/log/inpanel/main.log'
|
|
75
|
+
logerror = '/var/log/inpanel/error.log'
|
|
76
|
+
pidfile = '/var/run/inpanel.pid'
|
|
77
|
+
install_type = 'unknown'
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
import shutil
|
|
81
|
+
|
|
63
82
|
if hasattr(sys, 'frozen') and hasattr(sys, '_MEIPASS'):
|
|
64
|
-
run_type
|
|
65
|
-
root_path
|
|
66
|
-
execfile = '/usr/bin/inpanel'
|
|
67
|
-
config_path = '/etc/inpanel/'
|
|
68
|
-
config_file = '/etc/inpanel/config.ini'
|
|
69
|
-
lastfile_path = '/etc/inpanel/lastfile.ini'
|
|
70
|
-
bookmarks_path = '/etc/inpanel/bookmarks.ini'
|
|
71
|
-
upgrade_path = '/etc/inpanel/upgrade.ini'
|
|
72
|
-
history_path = '/etc/inpanel/history.txt'
|
|
73
|
-
logging_path = '/var/log/inpanel/'
|
|
74
|
-
logfile = '/var/log/inpanel/main.log'
|
|
75
|
-
logerror = '/var/log/inpanel/error.log'
|
|
76
|
-
pidfile = '/var/run/inpanel.pid'
|
|
83
|
+
run_type = 'binary'
|
|
84
|
+
root_path = sys._MEIPASS
|
|
77
85
|
else:
|
|
78
86
|
package_dir = Path(__file__).parent.resolve()
|
|
79
87
|
if package_dir.parts[-2] == 'site-packages' or 'dist-packages' in str(package_dir):
|
|
80
|
-
run_type
|
|
81
|
-
root_path
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
logerror = '/var/log/inpanel/error.log'
|
|
92
|
-
pidfile = '/var/run/inpanel.pid'
|
|
88
|
+
run_type = 'system'
|
|
89
|
+
root_path = str(package_dir)
|
|
90
|
+
pkg_str = str(package_dir)
|
|
91
|
+
if '/dist-packages/' in pkg_str:
|
|
92
|
+
install_type = 'apt'
|
|
93
|
+
elif '/site-packages/' in pkg_str:
|
|
94
|
+
from .mod.system import get_os_family
|
|
95
|
+
if '/usr/lib/python3/site-packages/' in pkg_str and get_os_family() == 'rhel':
|
|
96
|
+
install_type = 'dnf' if shutil.which('dnf') else 'yum'
|
|
97
|
+
else:
|
|
98
|
+
install_type = 'pip'
|
|
93
99
|
else:
|
|
94
100
|
run_type = 'source'
|
|
95
|
-
root_path
|
|
96
|
-
execfile
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
101
|
+
root_path = str(Path(__file__).parent.resolve())
|
|
102
|
+
execfile = str(Path(root_path) / 'app.py')
|
|
103
|
+
data_path = str(Path(root_path) / 'data')
|
|
104
|
+
config_path = str(Path(root_path) / 'data')
|
|
105
|
+
config_file = str(Path(root_path) / 'data' / 'config.ini')
|
|
106
|
+
lastfile_path = str(Path(root_path) / 'data' / 'lastfile.ini')
|
|
100
107
|
bookmarks_path = str(Path(root_path) / 'data' / 'bookmarks.ini')
|
|
101
|
-
upgrade_path
|
|
102
|
-
history_path
|
|
103
|
-
logging_path
|
|
104
|
-
logfile
|
|
105
|
-
logerror
|
|
106
|
-
pidfile
|
|
108
|
+
upgrade_path = str(Path(root_path) / 'data' / 'upgrade.ini')
|
|
109
|
+
history_path = str(Path(root_path) / 'data' / 'history.txt')
|
|
110
|
+
logging_path = str(Path(root_path) / 'data')
|
|
111
|
+
logfile = str(Path(root_path) / 'data' / 'main.log')
|
|
112
|
+
logerror = str(Path(root_path) / 'data' / 'error.log')
|
|
113
|
+
pidfile = str(Path(root_path) / 'data' / 'inpanel.pid')
|
|
107
114
|
|
|
108
115
|
|
|
109
116
|
kernel_name, hostname, kernel_release, kernel_version, machine, processor = uname()
|
|
@@ -188,8 +195,8 @@ server_info = {
|
|
|
188
195
|
}
|
|
189
196
|
|
|
190
197
|
__all__ = [
|
|
191
|
-
'__version__', 'DEBUG', 'app_api', 'app_name', 'config_path',
|
|
192
|
-
'run_type', 'config_file', 'root_path', 'COMMENTFLAG', 'GENBY', 'execfile',
|
|
198
|
+
'__version__', 'DEBUG', 'app_api', 'app_name', 'config_path', 'data_path',
|
|
199
|
+
'run_type', 'install_type', 'config_file', 'root_path', 'COMMENTFLAG', 'GENBY', 'execfile',
|
|
193
200
|
'releasetime', 'version_info', 'server_info', 'os_name', 'os_title',
|
|
194
201
|
'os_version', 'os_versint', 'os_platform', 'kernel_name', 'kernel_release',
|
|
195
202
|
'kernel_version', 'hostname', 'machine', 'lastfile_path', 'bookmarks_path', 'upgrade_path',
|
|
@@ -200,4 +207,4 @@ if __name__ == '__main__':
|
|
|
200
207
|
print(uname())
|
|
201
208
|
print(mac_ver())
|
|
202
209
|
print(platform())
|
|
203
|
-
print(server_info)
|
|
210
|
+
print(server_info)
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
3
|
|
|
4
|
+
'''InPanel 配置管理命令行工具'''
|
|
5
|
+
|
|
4
6
|
import sys
|
|
5
7
|
import logging
|
|
6
8
|
from pathlib import Path
|
|
@@ -115,7 +117,8 @@ Examples:
|
|
|
115
117
|
from hmac import new as hmac_new
|
|
116
118
|
from .utils import randstr
|
|
117
119
|
key = md5(randstr().encode('utf-8')).hexdigest()
|
|
118
|
-
|
|
120
|
+
md5_password = md5(value.encode('utf-8')).hexdigest()
|
|
121
|
+
pwd = hmac_new(key.encode('utf-8'), md5_password.encode('utf-8'), md5).hexdigest()
|
|
119
122
|
value = '%s:%s' % (pwd, key)
|
|
120
123
|
logger.info(f'Password hash generated, key length: {len(key)}, hash length: {len(pwd)}')
|
|
121
124
|
|