35 lines
661 B
Python
35 lines
661 B
Python
from CTFd.utils import get_config
|
|
|
|
from .frp import FrpRouter
|
|
from .trp import TrpRouter
|
|
|
|
_routers = {
|
|
'frp': FrpRouter,
|
|
'trp': TrpRouter,
|
|
}
|
|
|
|
|
|
def instanciate(cls):
|
|
return cls()
|
|
|
|
|
|
@instanciate
|
|
class Router:
|
|
_name = ''
|
|
_router = None
|
|
|
|
def __getattr__(self, name: str):
|
|
router_conftype = get_config("whale:router_type", "frp")
|
|
if Router._name != router_conftype:
|
|
Router._router = _routers[router_conftype]()
|
|
Router._name = router_conftype
|
|
return getattr(Router._router, name)
|
|
|
|
@staticmethod
|
|
def reset():
|
|
Router._name = ''
|
|
Router._router = None
|
|
|
|
|
|
__all__ = ["Router"]
|