92 lines
2.1 KiB
Python
92 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""DashboardController facade.
|
|
|
|
Тонкий слой между UI и ApiClient; доменная логика вынесена в `controllers/*` mixin-модули.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
from typing import Optional
|
|
|
|
from api_client import ApiClient
|
|
from controllers import (
|
|
ActionView,
|
|
ControllerCoreMixin,
|
|
DNSControllerMixin,
|
|
DomainsControllerMixin,
|
|
LoginAction,
|
|
LoginFlowView,
|
|
LoginView,
|
|
RoutesControllerMixin,
|
|
RoutesNftProgressView,
|
|
RoutesResolveSummaryView,
|
|
ServiceAction,
|
|
StatusControllerMixin,
|
|
StatusOverviewView,
|
|
TraceControllerMixin,
|
|
TraceMode,
|
|
TrafficControllerMixin,
|
|
TrafficModeView,
|
|
TransportClientAction,
|
|
TransportControllerMixin,
|
|
TransportFlowPhase,
|
|
TransportPolicyFlowView,
|
|
VpnAutoconnectView,
|
|
VpnControllerMixin,
|
|
VpnStatusView,
|
|
)
|
|
|
|
|
|
class DashboardController(
|
|
StatusControllerMixin,
|
|
VpnControllerMixin,
|
|
RoutesControllerMixin,
|
|
TrafficControllerMixin,
|
|
TransportControllerMixin,
|
|
DNSControllerMixin,
|
|
DomainsControllerMixin,
|
|
TraceControllerMixin,
|
|
ControllerCoreMixin,
|
|
):
|
|
def __init__(
|
|
self,
|
|
client: ApiClient,
|
|
*,
|
|
routes_unit: Optional[str] = None,
|
|
smartdns_unit: Optional[str] = None,
|
|
) -> None:
|
|
self.client = client
|
|
self.routes_unit = (
|
|
routes_unit
|
|
or os.environ.get("SELECTIVE_VPN_ROUTES_UNIT")
|
|
or ""
|
|
)
|
|
self.smartdns_unit = (
|
|
smartdns_unit
|
|
or os.environ.get("SELECTIVE_VPN_SMARTDNS_UNIT")
|
|
or "smartdns-local.service"
|
|
)
|
|
|
|
|
|
__all__ = [
|
|
"DashboardController",
|
|
"TraceMode",
|
|
"ServiceAction",
|
|
"LoginAction",
|
|
"TransportClientAction",
|
|
"TransportFlowPhase",
|
|
"LoginView",
|
|
"StatusOverviewView",
|
|
"VpnStatusView",
|
|
"ActionView",
|
|
"LoginFlowView",
|
|
"VpnAutoconnectView",
|
|
"RoutesNftProgressView",
|
|
"TrafficModeView",
|
|
"RoutesResolveSummaryView",
|
|
"TransportPolicyFlowView",
|
|
]
|