后端提供host\CORS开启选项

This commit is contained in:
xunbu
2025-11-25 10:51:32 +08:00
parent 4a4988f6d6
commit f283f2faab
2 changed files with 59 additions and 20 deletions

View File

@@ -7,48 +7,78 @@ import sys # 用于检查命令行参数数量
def main():
parser = argparse.ArgumentParser(
description="DocuTranslate: 一个文档翻译工具。",
epilog="示例: docutranslate -i (启动图形界面)\ndocutranslate -i -p 8081 (启用端口号8081)" # epilog 会显示在帮助信息的末尾
# 更新示例,展示如何使用 host 参数
epilog="示例:\n"
" docutranslate -i (启动图形界面,默认本地访问)\n"
" docutranslate -i --host 0.0.0.0 (允许局域网内其他设备访问)\n"
" docutranslate -i -p 8081 (指定端口号)\n"
" docutranslate -i --cors (启用默认的跨域设置)\n",
formatter_class=argparse.RawDescriptionHelpFormatter
)
parser.add_argument(
"-i", "--interactive", # 添加一个长选项,更友好
action="store_true", # 当出现 -i 或 --interactive 时args.interactive 将为 True
help="打开图形化用户界面 (GUI)。"
"-i", "--interactive",
action="store_true",
help="打开图形化用户界面 (GUI) 并启动后端服务"
)
# --- 新增 host 参数 ---
parser.add_argument(
"--host",
type=str,
default=None,
help="指定服务监听的主机地址。默认为 '127.0.0.1' (仅本地)。若需局域网访问请设为 '0.0.0.0'"
)
# ---------------------
parser.add_argument(
"-p", "--port",
type=int, # 指定参数类型(例如整数)
default=None, # 默认值(可选)
help="指定端口号默认8010"
type=int,
default=None,
help="指定服务监听的端口号默认8010"
)
parser.add_argument(
"--version", # 添加一个长选项,更友好
"--cors",
action="store_true",
help="启用跨域资源共享 (CORS)。如果是前后端分离开发或需跨域调用 API请开启此选项。"
)
parser.add_argument(
"--cors-regex",
type=str,
default=r"^https?://.*$",
help="设置 CORS 允许的 Origin 正则表达式。默认为允许所有 HTTP 和 HTTPS 请求。"
)
parser.add_argument(
"--version",
action="store_true",
help="查看版本号。"
)
# 如果你想在未来添加其他非GUI的命令行功能可以在这里添加更多参数
# parser.add_argument("input_file", help="要翻译的文件路径", nargs="?") # nargs="?" 使其可选
# parser.add_argument("-l", "--language", help="目标语言")
# 检查是否没有提供任何参数 (除了脚本名本身)
# sys.argv[0] 是脚本名, len(sys.argv) == 1 表示只运行了命令本身,没有附加参数
# 检查是否没有提供任何参数
if len(sys.argv) == 1:
# 如果用户只输入了 'docutranslate' 而没有任何参数
print("欢迎使用 DocuTranslate")
print("请使用 '-i''--interactive' 选项来启动图形化界面。")
print("\n示例:")
print(" docutranslate -i")
print(" docutranslate --interactive")
print(" docutranslate -i --host 0.0.0.0 (局域网共享)")
print("\n如需查看所有可用选项,请运行:")
sys.exit(0) # 正常退出
print(" docutranslate --help")
sys.exit(0)
args = parser.parse_args()
# 调用核心逻辑
if args.interactive: # 注意这里是 args.interactive对应 "--interactive"
if args.interactive:
from docutranslate.app import run_app
run_app(port=args.port)
run_app(
host=args.host,
port=args.port,
enable_CORS=args.cors,
allow_origin_regex=args.cors_regex
)
elif args.version:
from docutranslate import __version__
print(__version__)