Improve profile retrieval-related logic
This commit is contained in:
parent
b34a6f8935
commit
669cddc2b4
5 changed files with 38 additions and 17 deletions
|
@ -96,25 +96,28 @@ class BaseProfile:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def exists(id: int):
|
def exists(id: int):
|
||||||
return os.path.isdir(BaseProfile.__get_config_path(id)) and re.match(r'^\d+$', str(id))
|
return re.match(r'^\d{1,2}$', str(id)) and os.path.isfile(f'{BaseProfile.__get_config_path(id)}/config.json')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def all():
|
def all():
|
||||||
|
|
||||||
profiles = {}
|
profiles = {}
|
||||||
|
|
||||||
for id in map(int, sorted(os.listdir(Constants.SP_PROFILE_CONFIG_HOME))):
|
for directory_entry in os.listdir(Constants.SP_PROFILE_CONFIG_HOME):
|
||||||
|
|
||||||
|
try:
|
||||||
|
id = int(directory_entry)
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
|
||||||
if BaseProfile.exists(id):
|
if BaseProfile.exists(id):
|
||||||
|
|
||||||
if os.path.exists(f'{BaseProfile.__get_config_path(id)}/config.json'):
|
|
||||||
|
|
||||||
profile = BaseProfile.find_by_id(id)
|
profile = BaseProfile.find_by_id(id)
|
||||||
|
|
||||||
if profile is not None:
|
if profile is not None:
|
||||||
profiles[id] = profile
|
profiles[id] = profile
|
||||||
|
|
||||||
return profiles
|
return dict(sorted(profiles.items()))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def save(profile):
|
def save(profile):
|
||||||
|
|
|
@ -21,6 +21,9 @@ class Subscription:
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def get_sanitized_billing_code(self):
|
||||||
|
return '-'.join(['****'] * 3 + [self.billing_code[-4:]])
|
||||||
|
|
||||||
def has_been_activated(self):
|
def has_been_activated(self):
|
||||||
return self.expires_at is not None
|
return self.expires_at is not None
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ class SessionProfile(BaseProfile):
|
||||||
return proxy_configuration
|
return proxy_configuration
|
||||||
|
|
||||||
def has_proxy_configuration(self):
|
def has_proxy_configuration(self):
|
||||||
return os.path.exists(f'{self.get_config_path()}/proxy.json')
|
return os.path.isfile(f'{self.get_config_path()}/proxy.json')
|
||||||
|
|
||||||
def has_wireguard_configuration(self):
|
def has_wireguard_configuration(self):
|
||||||
return os.path.exists(f'{self.get_config_path()}/wg.conf')
|
return os.path.isfile(f'{self.get_config_path()}/wg.conf')
|
||||||
|
|
|
@ -45,7 +45,7 @@ class SystemProfile(BaseProfile):
|
||||||
return f'{self.get_system_config_path()}/wg.conf'
|
return f'{self.get_system_config_path()}/wg.conf'
|
||||||
|
|
||||||
def has_wireguard_configuration(self):
|
def has_wireguard_configuration(self):
|
||||||
return os.path.exists(f'{self.get_system_config_path()}/wg.conf')
|
return os.path.isfile(f'{self.get_system_config_path()}/wg.conf')
|
||||||
|
|
||||||
def delete(self):
|
def delete(self):
|
||||||
|
|
||||||
|
|
27
main.py
27
main.py
|
@ -20,7 +20,7 @@ from core.observers.ConnectionObserver import ConnectionObserver
|
||||||
from core.observers.InvoiceObserver import InvoiceObserver
|
from core.observers.InvoiceObserver import InvoiceObserver
|
||||||
from core.observers.ProfileObserver import ProfileObserver
|
from core.observers.ProfileObserver import ProfileObserver
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Optional
|
from typing import Optional, Union
|
||||||
import argparse
|
import argparse
|
||||||
import pprint
|
import pprint
|
||||||
import re
|
import re
|
||||||
|
@ -44,10 +44,10 @@ if __name__ == '__main__':
|
||||||
invoice_observer.subscribe('processing', lambda event: print('A payment has been detected and is being verified...\n'))
|
invoice_observer.subscribe('processing', lambda event: print('A payment has been detected and is being verified...\n'))
|
||||||
invoice_observer.subscribe('settled', lambda event: print('The payment has been successfully verified.\n'))
|
invoice_observer.subscribe('settled', lambda event: print('The payment has been successfully verified.\n'))
|
||||||
|
|
||||||
profile_observer.subscribe('created', lambda event: pprint.pp((event.subject, 'Created')))
|
profile_observer.subscribe('created', lambda event: pprint.pp((__sanitize_profile(event.subject), 'Created')))
|
||||||
profile_observer.subscribe('destroyed', lambda event: pprint.pp((event.subject, 'Destroyed')))
|
profile_observer.subscribe('destroyed', lambda event: pprint.pp((__sanitize_profile(event.subject), 'Destroyed')))
|
||||||
profile_observer.subscribe('disabled', lambda event: pprint.pp((event.subject, 'Disabled')) if event.meta.get('explicitly') else None)
|
profile_observer.subscribe('disabled', lambda event: pprint.pp((__sanitize_profile(event.subject), 'Disabled')) if event.meta.get('explicitly') else None)
|
||||||
profile_observer.subscribe('enabled', lambda event: pprint.pp((event.subject, 'Enabled')))
|
profile_observer.subscribe('enabled', lambda event: pprint.pp((__sanitize_profile(event.subject), 'Enabled')))
|
||||||
|
|
||||||
def __parse_application_string(application_string: Optional[str] = None):
|
def __parse_application_string(application_string: Optional[str] = None):
|
||||||
|
|
||||||
|
@ -61,6 +61,15 @@ if __name__ == '__main__':
|
||||||
else:
|
else:
|
||||||
return parsed_application_string.groupdict()
|
return parsed_application_string.groupdict()
|
||||||
|
|
||||||
|
def __sanitize_profile(candidate: Optional[Union[SessionProfile, SystemProfile]]):
|
||||||
|
|
||||||
|
if candidate is not None and candidate.has_subscription():
|
||||||
|
|
||||||
|
sanitized_billing_code = candidate.subscription.get_sanitized_billing_code()
|
||||||
|
candidate.subscription.billing_code = sanitized_billing_code
|
||||||
|
|
||||||
|
return candidate
|
||||||
|
|
||||||
pristine_parser = argparse.ArgumentParser(add_help=False)
|
pristine_parser = argparse.ArgumentParser(add_help=False)
|
||||||
pristine_parser.add_argument('--pristine', '-p', action='store_true')
|
pristine_parser.add_argument('--pristine', '-p', action='store_true')
|
||||||
|
|
||||||
|
@ -144,7 +153,13 @@ if __name__ == '__main__':
|
||||||
profile_parser.print_help()
|
profile_parser.print_help()
|
||||||
|
|
||||||
elif arguments.subcommand == 'list':
|
elif arguments.subcommand == 'list':
|
||||||
pprint.pp(ProfileController.get_all())
|
|
||||||
|
profiles = ProfileController.get_all()
|
||||||
|
|
||||||
|
for key, value in profiles.items():
|
||||||
|
profiles[key] = __sanitize_profile(value)
|
||||||
|
|
||||||
|
pprint.pp(profiles)
|
||||||
|
|
||||||
elif arguments.subcommand == 'show':
|
elif arguments.subcommand == 'show':
|
||||||
pprint.pp(ProfileController.get(arguments.id))
|
pprint.pp(ProfileController.get(arguments.id))
|
||||||
|
|
Loading…
Reference in a new issue