from ..enums import (ConnectionMetadataEnum, ConnectionStatusEnum, KillSwitchInterfaceTrackerEnum, KillswitchStatusEnum, MetadataEnum, ProtocolEnum) from .environment import ExecutionEnvironment class Status: """Status Class. Use it to get status information about the current Proton VPN connection. """ def __init__(self): self.user_settings = ExecutionEnvironment().settings self.server_list = ExecutionEnvironment().api_session.servers self.killswitch_obj = ExecutionEnvironment().killswitch self.connection_metadata = ExecutionEnvironment().connection_metadata def get_active_connection_status(self): """Get active connection status. Args: readeable_format (bool): If true then all content will be returnes in human readeable format, else all content is returned in enum objects. Returns: dict: Keys: ConnectionStatusEnum """ connection_information = self.connection_metadata\ .get_connection_metadata( MetadataEnum.CONNECTION ) servername = connection_information[ ConnectionMetadataEnum.SERVER.value ] protocol = connection_information[ ConnectionMetadataEnum.PROTOCOL.value ] connected_time = connection_information[ ConnectionMetadataEnum.CONNECTED_TIME.value ] try: exit_server_ip = connection_information[ ConnectionMetadataEnum.DISPLAY_SERVER_IP.value ] # noqa except KeyError: exit_server_ip = None server = self.server_list.filter( lambda server: server.name.lower() == servername.lower() ).get_fastest_server() self.killswitch_obj.update_connection_status() ks_status = KillswitchStatusEnum.HARD if ( not self.killswitch_obj.interface_state_tracker[self.killswitch_obj.ks_conn_name][ # noqa KillSwitchInterfaceTrackerEnum.IS_RUNNING ] and self.user_settings.killswitch != KillswitchStatusEnum.DISABLED # noqa ): # if DISABLED then KS is currently not running, # otherwise it's ENABLED ks_status = KillswitchStatusEnum.DISABLED raw_dict = { ConnectionStatusEnum.SERVER_INFORMATION: server, ConnectionStatusEnum.PROTOCOL: ProtocolEnum(protocol), ConnectionStatusEnum.KILLSWITCH: ks_status, ConnectionStatusEnum.TIME: connected_time, ConnectionStatusEnum.NETSHIELD: self.user_settings.netshield, # noqa ConnectionStatusEnum.SERVER_IP: exit_server_ip, } return raw_dict
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
accounting | Folder | 0755 |
|
|
client_config | Folder | 0755 |
|
|
connection_backend | Folder | 0755 |
|
|
dbus | Folder | 0755 |
|
|
keyring | Folder | 0755 |
|
|
killswitch | Folder | 0755 |
|
|
location | Folder | 0755 |
|
|
metadata | Folder | 0755 |
|
|
notification | Folder | 0755 |
|
|
report | Folder | 0755 |
|
|
servers | Folder | 0755 |
|
|
session | Folder | 0755 |
|
|
streaming | Folder | 0755 |
|
|
user_settings | Folder | 0755 |
|
|
vpn | Folder | 0755 |
|
|
__init__.py | File | 966 B | 0644 |
|
country.py | File | 2.95 KB | 0644 |
|
environment.py | File | 4.42 KB | 0644 |
|
status.py | File | 2.77 KB | 0644 |
|
subprocess_wrapper.py | File | 4.1 KB | 0644 |
|
utilities.py | File | 5.2 KB | 0644 |
|
utils.py | File | 961 B | 0644 |
|