本文整理汇总了Python中Interface.Interface.remember方法的典型用法代码示例。如果您正苦于以下问题:Python Interface.remember方法的具体用法?Python Interface.remember怎么用?Python Interface.remember使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Interface.Interface
的用法示例。
在下文中一共展示了Interface.remember方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Connector
# 需要导入模块: from Interface import Interface [as 别名]
# 或者: from Interface.Interface import remember [as 别名]
class Connector():
'''Модуль для обеспечения взаимодействия модуля-обработчика OpenVPN
и интерфейса QML, обеспечивает полное многоуровневое логирование
событий (через модуль logging)
'''
def __init__(self):
'''Инициализация модуля
Выполняется инициализация интерфейса, логгера и статуса соединения
Определяется операционная система и задаются соответствующие пути
'''
self.view = Interface(self)
self.logger = logging.getLogger('RocketOne.Connector')
self.connected = False
# Пути до OpenVPN
if os.name == "nt":
#Windows paths
self.ovpnpath = 'C:\\Program Files (x86)\\OpenVPN'
self.path = getBasePath() + '/'
self.ovpnconfigpath = self.ovpnpath + '\\config\\'
self.configfile = 'config.ini' # self.ovpnconfigpath +
self.ovpnexe = self.ovpnpath + '\\bin\\openvpnserv.exe'
self.traymsg = 'OpenVPN Connection Manager'
self.logger.debug("Started on Windows")
elif os.name == "posix":
#Linux Paths
self.ovpnpath = ''
self.path = getBasePath() + '/'
self.ovpnconfigpath = self.ovpnpath + '//home//alexei//SOLOWAY//'
self.ovpnexe = self.ovpnpath + 'openvpn'
self.configfile = 'config.ini'
self.traymsg = 'OpenVPN Connection Manager'
self.logger.debug("Started on Linux")
# Интерфейс обрабатывающий входящие сигналы
@QtCore.Slot(str, str)
def connect(self, login, passwd):
""" Процедура инициализации соединения
Является слотом QT (для получения логина и пароля из QML)
"""
self.port = 0
port = self.getNextAvailablePort()
# Если логин и пароль пусты или дефолтные то не соединяемся
if (not login) or (not passwd) \
or (login == "Login") or (passwd == "password"):
return
self.login = login
self.password = passwd
# если стоит галочка запомнить пароль TODO: убрать конструкцию
if self.view.remember():
self.write_settings(login, passwd, remember=True)
else:
self.write_settings("", "")
# Пробуем запустить OpenVPN, не получается - не подключаемся
try:
self.process = subprocess.Popen([self.ovpnexe,
'--config', self.ovpnconfigpath + 'Soloway.ovpn',
'--management', '127.0.0.1', '{0}'.format(port),
'--management-query-passwords',
'--management-log-cache', '200',
'--management-hold'],
cwd=self.ovpnconfigpath)
except Exception as e:
self.logger.error("OpenVPN process failed to execute " + str(e))
return
self.logger.debug("Subprocess started")
# Задаем таймер для asyncore loop устанавливаем на 1 раз в секунду
self.timer = QTimer()
self.timer.connect(SIGNAL("timeout()"), self.looper)
self.timer.start(500)
self.port = port
""" Устанавливаем однократный таймер для запуска обработчика OpenVPN
Без таймера openvpn не успевает запуститься, так что при
попытке соединения с ним asyncore.async_chat выпадает
"""
self.atimer = QTimer()
self.atimer.setSingleShot(True)
self.atimer.timeout.connect(self.manage_process)
self.atimer.start(1000)
# Записываем время старта, через 20 секунд без подключения - disconnect
self.start_time = datetime.now()
# Отправляем сигнал в QML о начале соединения
self.emit_signal("100")
def looper(self):
""" looper проверяет не наступил ли таймаут подключения и
собирает данные с async_chat. Завязан на таймер self.timer
"""
ex_time = datetime.now() - self.start_time
ex_time = ex_time.total_seconds()
if (ex_time > 20) and not self.connected:
self.logger.error("Connection time out")
self.disconnect("401")
asyncore.poll()
def manage_process(self):
"""Запускает обработчик OpenVPN. Выделить в отдельную процедуру пришлось,
так как завязан на однократный таймер self.atimer.
"""
self.sock = ManagementInterfaceHandler(self, '127.0.0.1', self.port)
#.........这里部分代码省略.........