Add https support

This commit is contained in:
Yunxiao Xu
2025-09-19 04:41:55 -07:00
parent e3478763a6
commit 4c34e350dd
5 changed files with 16 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "hysteria-panel" name = "hysteria-panel"
version = "0.2.3" version = "0.3.0"
description = "Add your description here" description = "Add your description here"
readme = "README.md" readme = "README.md"
requires-python = ">=3.13" requires-python = ">=3.13"

View File

@@ -4,8 +4,9 @@ import requests
from . import __version__ from . import __version__
class HysteriaAPI: class HysteriaAPI:
def __init__(self, host: str, port: int, secret: str): def __init__(self, host: str, port: int, secret: str, use_https: bool = False):
self.base_url = f"http://{host}:{port}" scheme = "https" if use_https else "http"
self.base_url = f"{scheme}://{host}:{port}"
self.timeout = 5 # seconds self.timeout = 5 # seconds
self._session = requests.Session() self._session = requests.Session()

View File

@@ -39,6 +39,8 @@ class HysteriaGUI(tb.Window):
if "secret" in config: if "secret" in config:
self.login_frame.secret_entry.insert(0, f'{config.get("secret", "")}') self.login_frame.secret_entry.insert(0, f'{config.get("secret", "")}')
self.login_frame.save_password_var.set(True) self.login_frame.save_password_var.set(True)
if "https" in config:
self.login_frame.https_var.set(bool(config.get("https", False)))
def _save_config(self): def _save_config(self):
config = { config = {
@@ -47,6 +49,8 @@ class HysteriaGUI(tb.Window):
} }
if self.login_frame.save_password_var.get(): if self.login_frame.save_password_var.get():
config["secret"] = self.login_frame.secret_entry.get().strip() config["secret"] = self.login_frame.secret_entry.get().strip()
# Save HTTPS preference if Remember Me is enabled
config["https"] = bool(self.login_frame.https_var.get())
utils.save_config(config) utils.save_config(config)
@@ -54,6 +58,7 @@ class HysteriaGUI(tb.Window):
host = self.login_frame.host_entry.get().strip() host = self.login_frame.host_entry.get().strip()
port = self.login_frame.port_entry.get().strip() port = self.login_frame.port_entry.get().strip()
secret = self.login_frame.secret_entry.get().strip() secret = self.login_frame.secret_entry.get().strip()
use_https = bool(self.login_frame.https_var.get())
if not host: if not host:
self.login_frame.status_label.config(text="Host cannot be empty.") self.login_frame.status_label.config(text="Host cannot be empty.")
@@ -66,7 +71,7 @@ class HysteriaGUI(tb.Window):
return False return False
try: try:
self._api = HysteriaAPI(host, int(port), secret) self._api = HysteriaAPI(host, int(port), secret, use_https=use_https)
if self.login_frame.remember_me_var.get(): if self.login_frame.remember_me_var.get():
self._save_config() self._save_config()

View File

@@ -30,7 +30,7 @@ class LoginView(tb.Frame):
self.secret_entry.grid(row=2, column=1, padx=10, pady=10) self.secret_entry.grid(row=2, column=1, padx=10, pady=10)
self.secret_entry.bind("<Return>", lambda event: self.on_connect()) self.secret_entry.bind("<Return>", lambda event: self.on_connect())
# Remember Me and Save Password Checkboxes # Remember Me, Save Password, and HTTPS toggle
remember_frame = tb.Frame(self) remember_frame = tb.Frame(self)
remember_frame.pack(pady=5) remember_frame.pack(pady=5)
@@ -38,6 +38,10 @@ class LoginView(tb.Frame):
self.remember_me_check = tb.Checkbutton(remember_frame, text="Remember Me", variable=self.remember_me_var, bootstyle="primary") # type: ignore self.remember_me_check = tb.Checkbutton(remember_frame, text="Remember Me", variable=self.remember_me_var, bootstyle="primary") # type: ignore
self.remember_me_check.pack(side="left", padx=10) self.remember_me_check.pack(side="left", padx=10)
self.https_var = tb.BooleanVar()
self.https_check = tb.Checkbutton(remember_frame, text="Use HTTPS", variable=self.https_var, bootstyle="primary") # type: ignore
self.https_check.pack(side="left", padx=10)
self.save_password_var = tb.BooleanVar() self.save_password_var = tb.BooleanVar()
self.save_password_check = tb.Checkbutton(remember_frame, text="Save Password", variable=self.save_password_var, bootstyle="primary") # type: ignore self.save_password_check = tb.Checkbutton(remember_frame, text="Save Password", variable=self.save_password_var, bootstyle="primary") # type: ignore
self.save_password_check.pack(side="left", padx=10) self.save_password_check.pack(side="left", padx=10)

2
uv.lock generated
View File

@@ -43,7 +43,7 @@ wheels = [
] ]
[[package]] [[package]]
name = "hysteria-panel-python" name = "hysteria-panel"
version = "0.2.3" version = "0.2.3"
source = { editable = "." } source = { editable = "." }
dependencies = [ dependencies = [