readd get_title_port_ssl

This commit is contained in:
Hay1tsme 2024-01-09 17:49:18 -05:00
parent 261d09aaef
commit c680c2d4e9
10 changed files with 53 additions and 40 deletions

View File

@ -84,6 +84,16 @@ class ServerConfig:
self.__config, "core", "title", "proxy_port", default=0 self.__config, "core", "title", "proxy_port", default=0
) )
@property
def proxy_port_ssl(self) -> int:
"""
What port the proxy is listening for secure connections on. This will be sent
instead of 'port' if is_using_proxy is True and this value is non-zero
"""
return CoreConfig.get_config_field(
self.__config, "core", "title", "proxy_port_ssl", default=0
)
@property @property
def log_dir(self) -> str: def log_dir(self) -> str:
return CoreConfig.get_config_field( return CoreConfig.get_config_field(

View File

@ -40,10 +40,18 @@ class Utils:
def get_title_port(cls, cfg: CoreConfig): def get_title_port(cls, cfg: CoreConfig):
if cls.real_title_port is not None: return cls.real_title_port if cls.real_title_port is not None: return cls.real_title_port
cls.real_title_port = cfg.server.proxy_port if cfg.server.is_using_proxy else cfg.server.port cls.real_title_port = cfg.server.proxy_port if cfg.server.is_using_proxy and cfg.server.proxy_port else cfg.server.port
return cls.real_title_port return cls.real_title_port
@classmethod
def get_title_port_ssl(cls, cfg: CoreConfig):
if cls.real_title_port_ssl is not None: return cls.real_title_port_ssl
cls.real_title_port_ssl = cfg.server.proxy_port_ssl if cfg.server.is_using_proxy and cfg.server.proxy_port_ssl else Utils.get_title_port(cfg)
return cls.real_title_port_ssl
def create_sega_auth_key(aime_id: int, game: str, place_id: int, keychip_id: str, b64_secret: str, exp_seconds: int = 86400, err_logger: str = 'aimedb') -> Optional[str]: def create_sega_auth_key(aime_id: int, game: str, place_id: int, keychip_id: str, b64_secret: str, exp_seconds: int = 86400, err_logger: str = 'aimedb') -> Optional[str]:
logger = logging.getLogger(err_logger) logger = logging.getLogger(err_logger)
try: try:

View File

@ -10,6 +10,7 @@ server:
is_develop: True is_develop: True
is_using_proxy: False is_using_proxy: False
proxy_port: 0 proxy_port: 0
proxy_port_ssl: 0
log_dir: "logs" log_dir: "logs"
check_arcade_ip: False check_arcade_ip: False
strict_ip_checking: False strict_ip_checking: False

View File

@ -1,3 +1,4 @@
server: server:
enable: True enable: True
loglevel: "info" loglevel: "info"
use:https: True

View File

@ -6,7 +6,7 @@ server {
location / { location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_request_headers on; proxy_pass_request_headers on;
proxy_pass http://localhost:8000/; proxy_pass http://localhost:8080/;
} }
} }
@ -42,7 +42,7 @@ server {
} }
} }
# Billing # Billing, comment this out if running billing standalone
server { server {
listen 8443 ssl; listen 8443 ssl;
server_name ib.naominet.jp; server_name ib.naominet.jp;
@ -58,28 +58,6 @@ server {
ssl_prefer_server_ciphers off; ssl_prefer_server_ciphers off;
location / { location / {
proxy_pass http://localhost:8444/;
}
}
# Pokken, comment this out if you don't plan on serving pokken.
server {
listen 443 ssl;
server_name pokken.hostname.here;
ssl_certificate /path/to/cert/pokken.pem;
ssl_certificate_key /path/to/cert/pokken.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers "ALL:@SECLEVEL=0";
ssl_prefer_server_ciphers off;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_request_headers on;
proxy_pass http://localhost:8080/; proxy_pass http://localhost:8080/;
} }
} }
@ -92,7 +70,7 @@ server {
location / { location / {
return 301 https://$host$request_uri; return 301 https://$host$request_uri;
# If you don't want https redirection, comment the line above and uncomment the line below # If you don't want https redirection, comment the line above and uncomment the line below
# proxy_pass http://localhost:8090/; # proxy_pass http://localhost:8080/;
} }
} }
@ -118,6 +96,6 @@ server {
location / { location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_request_headers on; proxy_pass_request_headers on;
proxy_pass http://localhost:8090/; proxy_pass http://localhost:8080/;
} }
} }

View File

@ -19,6 +19,12 @@ class CxbServerConfig:
) )
) )
@property
def use_https(self) -> bool:
return CoreConfig.get_config_field(
self.__config, "cxb", "server", "use_https", default=True
)
class CxbConfig(dict): class CxbConfig(dict):
def __init__(self) -> None: def __init__(self) -> None:

View File

@ -89,19 +89,20 @@ class CxbServlet(BaseServlet):
title_port_int = Utils.get_title_port(self.core_cfg) title_port_int = Utils.get_title_port(self.core_cfg)
title_port_ssl_int = Utils.get_title_port_ssl(self.core_cfg) title_port_ssl_int = Utils.get_title_port_ssl(self.core_cfg)
proto = "https" if title_port_ssl_int != 443 else "http" proto = "https" if self.game_cfg.server.use_https else "http"
if proto == "https": if proto == "https":
t_port = f":{title_port_ssl_int}" if title_port_ssl_int and not self.core_cfg.server.is_using_proxy else "" t_port = f":{title_port_ssl_int}" if title_port_ssl_int != 443 else ""
else: else:
t_port = f":{title_port_int}" if title_port_int and not self.core_cfg.server.is_using_proxy else "" t_port = f":{title_port_int}" if title_port_int != 80 else ""
return ( return (
f"{proto}://{self.core_cfg.server.hostname}{t_port}", f"{proto}://{self.core_cfg.title.hostname}{t_port}",
"", "",
) )
async def preprocess(self, req: Request) -> Dict: async def preprocess(self, req: Request) -> Dict:
req_bytes = await req.body() req_bytes = await req.body()

View File

@ -129,14 +129,21 @@ class OngekiServlet(BaseServlet):
def get_allnet_info(self, game_code: str, game_ver: int, keychip: str) -> Tuple[str, str]: def get_allnet_info(self, game_code: str, game_ver: int, keychip: str) -> Tuple[str, str]:
title_port_int = Utils.get_title_port(self.core_cfg) title_port_int = Utils.get_title_port(self.core_cfg)
title_port_ssl_int = Utils.get_title_port_ssl(self.core_cfg)
proto = "https" if self.game_cfg.server.use_https and game_ver >= 120 else "http" proto = "https" if self.game_cfg.server.use_https and game_ver >= 120 else "http"
t_port = f":{title_port_int}" if title_port_int and not self.core_cfg.server.is_using_proxy else ""
if proto == "https":
t_port = f":{title_port_ssl_int}" if title_port_ssl_int != 443 else ""
else:
t_port = f":{title_port_int}" if title_port_int != 80 else ""
return ( return (
f"{proto}://{self.core_cfg.server.hostname}{t_port}/{game_code}/{game_ver}/", f"{proto}://{self.core_cfg.title.hostname}{t_port}/{game_code}/{game_ver}/",
f"{self.core_cfg.server.hostname}{t_port}/", f"{self.core_cfg.title.hostname}{t_port}/",
) )
async def render_POST(self, request: Request) -> bytes: async def render_POST(self, request: Request) -> bytes:
endpoint: str = request.path_params.get('endpoint', '') endpoint: str = request.path_params.get('endpoint', '')
version: int = request.path_params.get('version', 0) version: int = request.path_params.get('version', 0)

View File

@ -78,8 +78,8 @@ class PokkenServlet(BaseServlet):
def get_allnet_info(self, game_code: str, game_ver: int, keychip: str) -> Tuple[str, str]: def get_allnet_info(self, game_code: str, game_ver: int, keychip: str) -> Tuple[str, str]:
return ( return (
f"https://{self.game_cfg.server.hostname}:{self.game_cfg.ports.game}/pokken/", f"https://{self.game_cfg.server.hostname}:{Utils.get_title_port_ssl(self.core_cfg)}/pokken/",
f"{self.game_cfg.server.hostname}:{self.game_cfg.ports.game}/pokken/", f"{self.game_cfg.server.hostname}:{Utils.get_title_port_ssl(self.core_cfg)}/pokken/",
) )
def get_mucha_info(self, core_cfg: CoreConfig, cfg_dir: str) -> Tuple[bool, str]: def get_mucha_info(self, core_cfg: CoreConfig, cfg_dir: str) -> Tuple[bool, str]:

View File

@ -81,13 +81,14 @@ class SaoServlet(BaseServlet):
port_normal = Utils.get_title_port(self.core_cfg) port_normal = Utils.get_title_port(self.core_cfg)
proto = "http" proto = "http"
port = f":{port_normal}" if not self.core_cfg.server.is_using_proxy and port_normal != 80 else "" port = f":{port_normal}" if port_normal != 80 else ""
if self.game_cfg.server.use_https: if self.game_cfg.server.use_https:
proto = "https" proto = "https"
port = f":{port_ssl}" if not self.core_cfg.server.is_using_proxy and port_ssl != 443 else "" port = f":{port_ssl}" if port_ssl != 443 else ""
return (f"{proto}://{self.core_cfg.title.hostname}{port}/", "")
return (f"{proto}://{self.core_cfg.server.hostname}{port}/", "")
def get_mucha_info(self, core_cfg: CoreConfig, cfg_dir: str) -> Tuple[bool, str]: def get_mucha_info(self, core_cfg: CoreConfig, cfg_dir: str) -> Tuple[bool, str]:
if not self.game_cfg.server.enable: if not self.game_cfg.server.enable: