Download bt-source/panel/script/manager_tomcat.py from SZFSPC/apple: direct link, hf CLI and curl.
- Browser
- Download file 5.3 kB
-
https://huggingface.co/spaces/SZFSPC/apple/resolve/main/bt-source/panel/script/manager_tomcat.py
- Command line
-
hf download hf://spaces/SZFSPC/apple/bt-source/panel/script/manager_tomcat.py
-
curl -L -o manager_tomcat.py https://huggingface.co/spaces/SZFSPC/apple/resolve/main/bt-source/panel/script/manager_tomcat.py
5.3 kB
| import sys | |
| import os | |
| import shutil | |
| import traceback | |
| from typing import Optional | |
| if "/www/server/panel/class" not in sys.path: | |
| sys.path.insert(0, "/www/server/panel/class") | |
| import public | |
| from firewallModel.comModel import main as fire_main | |
| if "/www/server/panel" not in sys.path: | |
| sys.path.insert(0, "/www/server/panel") | |
| from mod.project.java.utils import TomCat | |
| GLOBAL_TOMCAT_PATH = "/usr/local/bttomcat" | |
| INDEP_PROJECT_TOMCAT_PATH = "/www/server/bt_tomcat_web" | |
| PS_FILE_TMPL = "{tomcat_path}/ps.txt" | |
| def open_firewall(prot: str): | |
| f_get = public.dict_obj() | |
| f_get.protocol = "tcp" | |
| f_get.port = prot | |
| f_get.choose = "all" | |
| f_get.types = "accept" | |
| f_get.brief = "" | |
| f_get.domain = "" | |
| f_get.chain = "INPUT" | |
| f_get.operation = "add" | |
| f_get.strategy = "accept" | |
| fire_main().set_port_rule(f_get) | |
| # install_version 7 8 9 10 | |
| # install_type global or custom | |
| def make(install_version: str, | |
| install_type: str, | |
| jdk_path: str, | |
| install_name: Optional[str], | |
| port:Optional[str], | |
| user:Optional[str], | |
| auto_start: bool = False, | |
| release_firewall: bool = False, | |
| ps: Optional[str] = None): | |
| if not os.path.exists(GLOBAL_TOMCAT_PATH + "/tomcat" + install_version): | |
| print("tomcat{}安装失败".format(install_version)) | |
| return | |
| if install_type == "global": # 全局安装不在做更多检查 | |
| tomcat = TomCat(GLOBAL_TOMCAT_PATH + "/tomcat" + install_version) | |
| if port and port.isdigit() and int(port) > 0: | |
| tomcat.set_port(int(port)) | |
| if release_firewall: | |
| print("正在执行放行防火墙端口...") | |
| open_firewall(port) | |
| tomcat.start() | |
| print("tomcat{}安装完成".format(install_version)) | |
| return | |
| tomcat_path = GLOBAL_TOMCAT_PATH + "/tomcat_bak" + install_version | |
| if not install_name: | |
| print("tomcat {} 未指定安装名称".format(install_version)) | |
| try: | |
| shutil.copytree(tomcat_path, INDEP_PROJECT_TOMCAT_PATH + "/" + install_name) | |
| except: | |
| print("tomcat {} 安装失败".format(install_version)) | |
| traceback.print_exc() | |
| return | |
| ps_file = PS_FILE_TMPL.format(tomcat_path=INDEP_PROJECT_TOMCAT_PATH + "/" + install_name) | |
| if not os.path.exists(ps_file) or ps: | |
| with open(ps_file, "w") as f: | |
| f.write(ps or "") | |
| tomcat = TomCat(INDEP_PROJECT_TOMCAT_PATH + "/" + install_name) | |
| if port and port.isdigit() and int(port) > 0: | |
| tomcat.set_port(int(port)) | |
| if release_firewall: | |
| print("正在执行放行防火墙端口...") | |
| open_firewall(port) | |
| print("正在执行替换JDK版本...") | |
| res = tomcat.replace_jdk(jdk_path) | |
| if res is not None: | |
| print("tomcat {} 安装失败: {}".format(install_version, res)) | |
| return | |
| if user: | |
| res = tomcat.change_default_user(user) | |
| if res is False: | |
| print("tomcat {} 安装失败: 修改用户失败".format(install_version)) | |
| return | |
| if auto_start: | |
| tomcat.set_service(user, auto_start) | |
| if not tomcat.save_config_xml(): | |
| print("tomcat {} 安装失败: 配置文件保存失败".format(install_version)) | |
| return | |
| tomcat.restart() | |
| print("安装完成") | |
| if __name__ == "__main__": | |
| import argparse | |
| parser = argparse.ArgumentParser(description="Tomcat 安装管理工具") | |
| # 必要位置参数 | |
| parser.add_argument("install_version", type=str, | |
| choices=["7", "8", "9", "10"], | |
| help="Tomcat 版本号 (7/8/9/10)") | |
| parser.add_argument("install_type", type=str, | |
| choices=["global", "custom"], | |
| help="安装类型: global(全局) 或 custom(自定义)") | |
| # 可选参数 | |
| parser.add_argument("--jdk-path", type=str, | |
| help="指定JDK路径 (例如: /usr/lib/jvm/java-11-openjdk)") | |
| parser.add_argument("--name", type=str, | |
| help="自定义安装名称(当install_type为custom时必填)") | |
| parser.add_argument("--port", type=int, | |
| help="Tomcat 端口(需大于0)") | |
| parser.add_argument("--user", type=str, | |
| help="指定运行用户") | |
| parser.add_argument("--auto-start", action="store_true", | |
| help="安装后自动启动服务") | |
| parser.add_argument("--release-firewall", action="store_true", | |
| help="自动放行防火墙端口") | |
| parser.add_argument("--ps", type=str, | |
| help="指定ps文件内容") | |
| args = parser.parse_args() | |
| # 参数校验 | |
| if args.install_type == "custom" and not args.name: | |
| parser.error("自定义安装时必须指定--name参数") | |
| if args.port and args.port <= 0: | |
| parser.error("端口必须大于0") | |
| # 调用安装函数 | |
| make( | |
| install_version=args.install_version, | |
| install_type=args.install_type, | |
| jdk_path=args.jdk_path, | |
| install_name=args.name, | |
| port=str(args.port) if args.port else None, | |
| user=args.user, | |
| auto_start=args.auto_start, | |
| release_firewall=args.release_firewall, | |
| ps=args.ps | |
| ) | |