def stop(self): if self.__status == CS_STOPPED: return try: if self.__check_kss_thrd: self.__check_kss_thrd.stop() self.__check_kss_thrd = None if self.__config.mount_type == MOUNT_LOCAL: ret_code = self.__webdav_mount.unmount() for api_instance in self.__api_list: try: logger.debug('stopping %s ...' % api_instance.get_name()) api_instance.stop() logger.info('%s is stopped!' % api_instance.get_name()) except Exception, err: logger.error('stopping %s error: %s' % (api_instance.get_name(), err)) if self.__nibbler: self.__nibbler.stop() logger.info('IdepositboxClient is stopped')
def run(self): self.stopped = False old_status = None mgmt_addr = '127.0.0.1:%s'%DAEMON_PORT time.sleep(2) while not self.stopped: try: conn = httplib.HTTPConnection(mgmt_addr, timeout=10) try: conn.request('GET', '/get_service_status') response = conn.getresponse() if response.status != 200: raise Exception('mgmt service error! [%s %s] %s'%(response.status, response.reason, response.read())) data = response.read() except socket.error, err: raise Exception('Mgmt server does not respond! Details: %s'%err) finally: conn.close() data = json.loads(data) progress = None if data.get('service_status', CS_FAILED) != CS_STARTED: status = STATUS_STOPPED else: if data.get('sync_status', SS_SYNC_PROGRESS): status = STATUS_SYNCING progress = '%i%s'%(int(data.get('sum_progress', 0)), '%') else: status = STATUS_STARTED if status == STATUS_SYNCING or status != old_status: self.wind.changed_service_status.emit(status, progress) old_status = status except Exception, err: logger.error('CheckSyncStatusThread: %s'%err)
def start(self, ks_type, ks_path, ks_passwd): if self.__status == CS_STARTED: raise Exception('IdepositboxClient is already started') self.__config.refresh() config = self.__config try: sm_class = SM_TYPES_MAP.get(ks_type, None) if not sm_class: raise Exception('Unsupported key chain type: "%s"'%ks_type) security_provider = sm_class(ks_path, ks_passwd) self.__last_ks_path = ks_path self.__last_ks_type = ks_type self.__nibbler = Nibbler(config.fabnet_hostname, security_provider, \ config.parallel_put_count, config.parallel_get_count, \ config.data_dir, config.cache_size) try: registered = self.__nibbler.is_registered() except Exception, err: logger.error(err) raise Exception('Service %s does not respond! Please, '\ 'ensure that network is configured correctly'%config.fabnet_hostname) if not registered: try: self.__nibbler.register_user() #FIXME: this is dangerous call! user should accept this case... except Exception, err: logger.error('Register user error: %s'%err) raise Exception('User does not registered in service')
def start(self, ks_type, ks_path, ks_passwd): if self.__status == CS_STARTED: raise Exception('IdepositboxClient is already started') self.__config.refresh() config = self.__config try: sm_class = SM_TYPES_MAP.get(ks_type, None) if not sm_class: raise Exception('Unsupported key chain type: "%s"' % ks_type) security_provider = sm_class(ks_path, ks_passwd) self.__last_ks_path = ks_path self.__last_ks_type = ks_type self.__nibbler = Nibbler(config.fabnet_hostname, security_provider, \ config.parallel_put_count, config.parallel_get_count, \ config.data_dir, config.cache_size) try: registered = self.__nibbler.is_registered() except Exception, err: logger.error(err) raise Exception('Service %s does not respond! Please, '\ 'ensure that network is configured correctly'%config.fabnet_hostname) if not registered: try: self.__nibbler.register_user( ) #FIXME: this is dangerous call! user should accept this case... except Exception, err: logger.error('Register user error: %s' % err) raise Exception('User does not registered in service')
def stop(self, s=None, p=None): logger.info('Stopping IDClientDaemon...') try: self.server.stop() logger.info('IDClientDaemon is stopped') except Exception, err: logger.error('IDClientDaemon stopping error: %s' % err) logger.traceback_info()
def stop(self, s=None, p=None): logger.info('Stopping IDClientDaemon...') try: self.server.stop() logger.info('IDClientDaemon is stopped') except Exception, err: logger.error('IDClientDaemon stopping error: %s'%err) logger.traceback_info()
def stop(self): try: self.idespositbox_client.stop() logger.info('Stopping management server...') if self.server: self.server.stop() except Exception, err: logger.error('Stopping management server error: %s' % err) logger.traceback_info()
def stop(self): try: self.idespositbox_client.stop() logger.info('Stopping management server...') if self.server: self.server.stop() except Exception, err: logger.error('Stopping management server error: %s'%err) logger.traceback_info()
def __set_log_level(self): log_level = self.__config.log_level.lower() ll_map = {'debug': logging.DEBUG, 'info': logging.INFO, 'warning': logging.WARNING, 'error': logging.ERROR} l_level = ll_map.get(log_level, None) if l_level == None: logger.error('Unknown log level "%s"'%log_level) logger.setLevel(l_level) nimbus_logger.setLevel(l_level)
def read(self): if self.is_linux: tmp_file = TempFile() file_path = tmp_file.name try: self.__bdm_call(self.__dev_path, "read", file_path) data = open(file_path, "rb").read() return data except Exception, err: logger.error("read key chain failed: %s" % err) finally:
def main(): try: app = QApplication(sys.argv) if MainWind.isMgmtServerStarted(): if not MainWind.show_question('WARNING', 'Management console is already started! Do you really want start application?'): sys.exit(1) app.setQuitOnLastWindowClosed(False) mw = MainWind() except Exception, err: logger.error('UI error: %s'%err) sys.exit(1)
def run(self): logger.debug('thread is started') while not self.stopped.is_set(): try: ks_status = self.id_client.key_storage_status() if ks_status != AbstractSecurityManager.KSS_EXISTS \ and self.id_client.get_status() == CS_STARTED: self.id_client.stop() except Exception, err: logger.error('CheckKSStatusThread: %s'%err) logger.traceback_debug() finally:
def run(self): logger.debug('thread is started') while not self.stopped.is_set(): try: ks_status = self.id_client.key_storage_status() if ks_status != AbstractSecurityManager.KSS_EXISTS \ and self.id_client.get_status() == CS_STARTED: self.id_client.stop() except Exception, err: logger.error('CheckKSStatusThread: %s' % err) logger.traceback_debug() finally:
def __set_log_level(self): log_level = self.__config.log_level.lower() ll_map = { 'debug': logging.DEBUG, 'info': logging.INFO, 'warning': logging.WARNING, 'error': logging.ERROR } l_level = ll_map.get(log_level, None) if l_level == None: logger.error('Unknown log level "%s"' % log_level) logger.setLevel(l_level) nimbus_logger.setLevel(l_level)
def run(self): web_app = WSGIApplication(self.idespositbox_client, HANDLERS_MAP, self.static_path) version = "iDepositBox %s" % wsgiserver.CherryPyWSGIServer.version wsgiserver.CherryPyWSGIServer.version = version logger.info("Running %s, listening on %s://%s:%s" % (version, 'http', self.host, self.port)) try: self.server = wsgiserver.CherryPyWSGIServer((self.host, self.port), web_app,) self.server.start() except Exception, err: logger.error('Management server error: %s'%err) logger.traceback_info()
def run(self): web_app = WSGIApplication(self.idespositbox_client, HANDLERS_MAP, self.static_path) version = "iDepositBox %s" % wsgiserver.CherryPyWSGIServer.version wsgiserver.CherryPyWSGIServer.version = version logger.info("Running %s, listening on %s://%s:%s" % (version, 'http', self.host, self.port)) try: self.server = wsgiserver.CherryPyWSGIServer( (self.host, self.port), web_app, ) self.server.start() except Exception, err: logger.error('Management server error: %s' % err) logger.traceback_info()
def run(self): try: import win32pipe, win32file import win32file fileHandle = win32pipe.CreateNamedPipe( r'\\.\pipe\idepositbox_daemon_pipe', win32pipe.PIPE_ACCESS_DUPLEX, win32pipe.PIPE_TYPE_MESSAGE | win32pipe.PIPE_WAIT, 1, 65536, 65536, 300, None) win32pipe.ConnectNamedPipe(fileHandle, None) data = win32file.ReadFile(fileHandle, 4096) if data == (0, 'STOP'): self.stop_hdlr() win32pipe.DisconnectNamedPipe(fileHandle) win32file.CloseHandle(fileHandle) except Exception, err: logger.error('Win32StopThread error: %s' % err)
def run(self): try: import win32pipe, win32file import win32file fileHandle = win32pipe.CreateNamedPipe(r'\\.\pipe\idepositbox_daemon_pipe', win32pipe.PIPE_ACCESS_DUPLEX, win32pipe.PIPE_TYPE_MESSAGE | win32pipe.PIPE_WAIT, 1, 65536, 65536,300,None) win32pipe.ConnectNamedPipe(fileHandle, None) data = win32file.ReadFile(fileHandle, 4096) if data == (0, 'STOP'): self.stop_hdlr() win32pipe.DisconnectNamedPipe(fileHandle) win32file.CloseHandle(fileHandle) except Exception, err: logger.error('Win32StopThread error: %s'%err)
def stop(self): if self.__status == CS_STOPPED: return try: if self.__check_kss_thrd: self.__check_kss_thrd.stop() self.__check_kss_thrd = None if self.__config.mount_type == MOUNT_LOCAL: ret_code = self.__webdav_mount.unmount() for api_instance in self.__api_list: try: logger.debug('stopping %s ...'%api_instance.get_name()) api_instance.stop() logger.info('%s is stopped!'%api_instance.get_name()) except Exception, err: logger.error('stopping %s error: %s'%(api_instance.get_name(), err)) if self.__nibbler: self.__nibbler.stop() logger.info('IdepositboxClient is stopped')
class IdepositboxClient(object): def __init__(self): self.__nibbler = None self.__api_list = [] self.__config = Config() self.__status = CS_STOPPED self.__ms_mgr = get_media_storage_manager() self.__check_kss_thrd = None self.__last_ks_type = None self.__last_ks_path = None self.__events = [] self.__webdav_mount = WebdavMounter() events_provider.append_listener(Event.ET_CRITICAL, self.on_critical_event) self.__set_log_level() def __set_log_level(self): log_level = self.__config.log_level.lower() ll_map = { 'debug': logging.DEBUG, 'info': logging.INFO, 'warning': logging.WARNING, 'error': logging.ERROR } l_level = ll_map.get(log_level, None) if l_level == None: logger.error('Unknown log level "%s"' % log_level) logger.setLevel(l_level) nimbus_logger.setLevel(l_level) @IDEventLock def on_critical_event(self, event): self.__events.append(event) @IDEventLock def get_events(self): events = self.__events self.__events = [] return events @IDEventLock def get_events_count(self): return len(self.__events) def get_version(self): return VERSION @IDLock def get_nibbler(self): return self.__nibbler @IDLock def get_status(self): return self.__status @IDLock def get_mount_point(self): return self.__webdav_mount.get_mount_point() @IDLock def get_last_key_storage_type(self): return self.__last_ks_type @IDLock def get_last_key_storage_path(self): return self.__last_ks_path @IDLock def start(self, ks_type, ks_path, ks_passwd): if self.__status == CS_STARTED: raise Exception('IdepositboxClient is already started') self.__config.refresh() config = self.__config try: sm_class = SM_TYPES_MAP.get(ks_type, None) if not sm_class: raise Exception('Unsupported key chain type: "%s"' % ks_type) security_provider = sm_class(ks_path, ks_passwd) self.__last_ks_path = ks_path self.__last_ks_type = ks_type self.__nibbler = Nibbler(config.fabnet_hostname, security_provider, \ config.parallel_put_count, config.parallel_get_count, \ config.data_dir, config.cache_size) try: registered = self.__nibbler.is_registered() except Exception, err: logger.error(err) raise Exception('Service %s does not respond! Please, '\ 'ensure that network is configured correctly'%config.fabnet_hostname) if not registered: try: self.__nibbler.register_user( ) #FIXME: this is dangerous call! user should accept this case... except Exception, err: logger.error('Register user error: %s' % err) raise Exception('User does not registered in service') self.__nibbler.start() #init API instances self.__api_list = [] if config.mount_type == MOUNT_LOCAL: ext_host = '127.0.0.1' else: ext_host = config.webdav_bind_host log_level = logger.getEffectiveLevel() webdav_server = WebDavAPI(self.__nibbler, ext_host, config.webdav_bind_port, log_level) self.__api_list.append(webdav_server) for api_instance in self.__api_list: logger.debug('starting %s...' % api_instance.get_name()) api_instance.start() logger.debug('waiting while %s is started...' % api_instance.get_name()) for i in xrange(api_instance.get_start_waittime()): time.sleep(1) if api_instance.is_ready(): break else: raise Exception('%s does not started!' % api_instance.get_name()) logger.info('%s is started!' % api_instance.get_name()) if config.mount_type == MOUNT_LOCAL: time.sleep(1) ret_code = self.__webdav_mount.mount(ext_host, config.webdav_bind_port) mount_point = self.__webdav_mount.get_mount_point() if not mount_point: mount_point = 'UnknownMountPoint' if ret_code: logger.error('WebDav resource does not mounted at %s!' % mount_point) else: logger.info('WebDav resource is mounted at %s' % mount_point) self.__check_kss_thrd = CheckKSStatusThread(self) self.__check_kss_thrd.start() logger.info('IdepositboxClient is started')
def start(self): try: self.server.run() except Exception, err: logger.error('IDClientDaemon error: %s' % err) logger.traceback_info()
def start(self): try: self.server.run() except Exception, err: logger.error('IDClientDaemon error: %s'%err) logger.traceback_info()
if config.mount_type == MOUNT_LOCAL: time.sleep(1) ret_code = self.__webdav_mount.mount(ext_host, config.webdav_bind_port) mount_point = self.__webdav_mount.get_mount_point() if not mount_point: mount_point = 'UnknownMountPoint' if ret_code: logger.error('WebDav resource does not mounted at %s!'%mount_point) else: logger.info('WebDav resource is mounted at %s'%mount_point) self.__check_kss_thrd = CheckKSStatusThread(self) self.__check_kss_thrd.start() logger.info('IdepositboxClient is started') except Exception, err: logger.error('init nimbusfs client error: %s'%err) if not isinstance(err, NimbusException): logger.traceback_info() self.__status = CS_FAILED self.stop() raise err self.__status = CS_STARTED @IDLock def get_config(self): self.__config.refresh() return self.__config.get_config_dict() @IDLock def update_config(self, new_config): log_level = new_config.get('log_level', self.__config.log_level)
def __run_linux_mounter(self, cmd): proc = Subprocess('%s %s'%(LINUX_MOUNTER_BIN, cmd)) cout, cerr = proc.communicate() if proc.returncode: logger.error('webdav mounter error: %s %s'%(cout, cerr)) return proc.returncode
config.webdav_bind_port) mount_point = self.__webdav_mount.get_mount_point() if not mount_point: mount_point = 'UnknownMountPoint' if ret_code: logger.error('WebDav resource does not mounted at %s!' % mount_point) else: logger.info('WebDav resource is mounted at %s' % mount_point) self.__check_kss_thrd = CheckKSStatusThread(self) self.__check_kss_thrd.start() logger.info('IdepositboxClient is started') except Exception, err: logger.error('init nimbusfs client error: %s' % err) if not isinstance(err, NimbusException): logger.traceback_info() self.__status = CS_FAILED self.stop() raise err self.__status = CS_STARTED @IDLock def get_config(self): self.__config.refresh() return self.__config.get_config_dict() @IDLock def update_config(self, new_config): log_level = new_config.get('log_level', self.__config.log_level)
def __run_linux_mounter(self, cmd): proc = Subprocess('%s %s' % (LINUX_MOUNTER_BIN, cmd)) cout, cerr = proc.communicate() if proc.returncode: logger.error('webdav mounter error: %s %s' % (cout, cerr)) return proc.returncode
Win32StopThread(self.stop).start() else: static_path = None #default static path will be used signal.signal(signal.SIGINT, self.stop) self.server = MgmtServer('0.0.0.0', DAEMON_PORT, IdepositboxClient(), static_path) def start(self): try: self.server.run() except Exception, err: logger.error('IDClientDaemon error: %s'%err) logger.traceback_info() def stop(self, s=None, p=None): logger.info('Stopping IDClientDaemon...') try: self.server.stop() logger.info('IDClientDaemon is stopped') except Exception, err: logger.error('IDClientDaemon stopping error: %s'%err) logger.traceback_info() if __name__ == '__main__': try: IDClientDaemon().start() except Exception, err: logger.error('IDClientDaemon failed: %s'%err) logger.traceback_info() sys.exit(1)
else: static_path = None #default static path will be used signal.signal(signal.SIGINT, self.stop) self.server = MgmtServer('0.0.0.0', DAEMON_PORT, IdepositboxClient(), static_path) def start(self): try: self.server.run() except Exception, err: logger.error('IDClientDaemon error: %s' % err) logger.traceback_info() def stop(self, s=None, p=None): logger.info('Stopping IDClientDaemon...') try: self.server.stop() logger.info('IDClientDaemon is stopped') except Exception, err: logger.error('IDClientDaemon stopping error: %s' % err) logger.traceback_info() if __name__ == '__main__': try: IDClientDaemon().start() except Exception, err: logger.error('IDClientDaemon failed: %s' % err) logger.traceback_info() sys.exit(1)