Beispiel #1
0
 def _check_pid(pid_file: str, log_lvl=logger.TRACE) -> int:
     try:
         logger.log(log_lvl, f'Read PID file {pid_file}')
         pid = FileHelper.read_file_by_line(pid_file)
         pid = int(pid)
         if pid and pid > 0 and SystemHelper.is_pid_exists(pid):
             return pid
     except Exception as _:
         FileHelper.rm(pid_file)
     return 0
Beispiel #2
0
 def remove(self, svc_opts: UnixServiceOpts, force: bool = False):
     service_fqn = self.to_service_fqn(svc_opts.service_dir,
                                       svc_opts.service_name)
     self.stop(svc_opts.service_name)
     self.disable(svc_opts.service_name)
     if force and FileHelper.is_exists(service_fqn):
         logger.info(f'Remove System service [{svc_opts.service_name}]...')
         FileHelper.rm(service_fqn)
     SystemHelper.exec_command("systemctl daemon-reload",
                               silent=True,
                               log_lvl=logger.INFO)
Beispiel #3
0
 def reset_hook(self, vpn_nameserver_hook_conf: Path):
     logger.info(f'Reset VPN DNS config file...')
     if FileHelper.is_writable(vpn_nameserver_hook_conf):
         FileHelper.write_file(vpn_nameserver_hook_conf,
                               mode=0o644,
                               content='')
         FileHelper.create_symlink(vpn_nameserver_hook_conf,
                                   self._dnsmasq_vpn_hook_cfg,
                                   force=True)
     else:
         FileHelper.rm(self._dnsmasq_vpn_hook_cfg)
Beispiel #4
0
 def restore_config(self, backup_dir: Path, keep_backup: bool):
     logger.info(
         f'Restore VPN configuration [{backup_dir}] to [{self.opts.vpn_dir}]...'
     )
     FileHelper.copy(backup_dir.joinpath(self.opts.VPN_CONFIG_FILE),
                     self.opts.config_file,
                     force=True)
     FileHelper.copy(backup_dir.joinpath(self.opts.RUNTIME_FOLDER),
                     self.opts.runtime_dir,
                     force=True)
     FileHelper.rm(backup_dir, force=not keep_backup)
Beispiel #5
0
 def restore_config(self, vpn_service: str, keep_dnsmasq=True):
     if not keep_dnsmasq:
         logger.debug(
             f'Remove dnsmasq vpn hook config [{self._dnsmasq_vpn_hook_cfg}]'
         )
         FileHelper.rm(self._dnsmasq_vpn_hook_cfg)
         logger.debug(
             f'Remove dnsmasq vpn config [{self._dnsmasq_vpn_cfg(vpn_service)}]'
         )
         FileHelper.rm(self._dnsmasq_vpn_cfg(vpn_service))
     if self._resolver:
         self._resolver.restore_config(vpn_service, keep_dnsmasq)
Beispiel #6
0
 def cleanup_config(self, vpn_service: str, keep_dnsmasq=True):
     if self.is_connman():
         return
     resolver = self._resolver()
     if keep_dnsmasq:
         resolver.reset_hook(self.vpn_hook_cfg)
     elif FileHelper.is_readable(self.origin_resolv_cfg):
         logger.info(f'Restore System DNS config file...')
         FileHelper.backup(self.origin_resolv_cfg,
                           DNSResolver.DNS_SYSTEM_FILE)
         FileHelper.rm(self.vpn_resolv_cfg)
     resolver.restore_config(vpn_service, keep_dnsmasq)
     resolver.restart(_all=not keep_dnsmasq, keep_dnsmasq=keep_dnsmasq)
Beispiel #7
0
 def do_uninstall(self,
                  keep_vpn: bool = True,
                  keep_dnsmasq: bool = True,
                  service_opts: UnixServiceOpts = None,
                  log_lvl: int = logger.INFO):
     vpn_service = self._standard_service_opt(service_opts).service_name
     logger.info(f'Uninstall VPN service [{vpn_service}]...')
     self.do_delete([a.account for a in self.storage.list()],
                    force_stop=True,
                    log_lvl=log_lvl)
     if not keep_vpn:
         logger.log(log_lvl, f'Remove VPN Client [{self.opts.vpn_dir}]...')
         self.device.ip_resolver.remove_hook(vpn_service)
         self.opts.remove_env()
         FileHelper.rm(self.opts.vpn_dir)
     self.device.dns_resolver.cleanup_config(vpn_service,
                                             keep_dnsmasq=keep_dnsmasq)
Beispiel #8
0
 def remove_hook(self, service_name: str):
     exit_hook_file = self._to_hook_file(service_name)
     logger.log(self.log_lvl,
                f'Remove DHCP client VPN hook[{exit_hook_file}]...')
     FileHelper.rm(exit_hook_file, force=True)
Beispiel #9
0
 def _common_remove_dnsmasq(self, vpn_service: str, keep_dnsmasq: bool):
     if not keep_dnsmasq:
         cfg = self.config.to_fqn_cfg(self.DNSMASQ_TUNED_CFG)
         logger.debug(
             f'Remove [dnsmasq] and [{vpn_service}] plugin[{cfg}]...')
         FileHelper.rm(cfg)
Beispiel #10
0
 def cleanup(self):
     FileHelper.rm(self._pid_files())
Beispiel #11
0
 def remove_env():
     FileHelper.rm(VpnDirectory.PROFILE_D_ENV)