def store_data(self, id, data): id = id.replace('/', '_') directory = ApplicationData.get('images') filename = os.path.join(directory, id + '.png') makedirs(directory) pixmap = QPixmap() if data is not None and pixmap.loadFromData(data): image_size = pixmap.size() if image_size.width() > self.max_size or image_size.height() > self.max_size: pixmap = pixmap.scaled(self.max_size, self.max_size, Qt.KeepAspectRatio, Qt.SmoothTransformation) if imghdr.what(None, data) != 'png' or pixmap.size() != image_size: buffer = QBuffer() pixmap.save(buffer, 'png') data = str(buffer.data()) with open(filename, 'wb') as f: f.write(data) icon = QIcon(pixmap) icon.filename = filename icon.content = data icon.content_type = 'image/png' else: unlink(filename) icon = None self.iconmap[id] = icon return icon
def store_file(self, id, file): directory = ApplicationData.get('images') filename = os.path.join(directory, id + '.png') if filename == os.path.normpath(file): return self.iconmap.get(id, None) makedirs(directory) pixmap = QPixmap() if file is not None and pixmap.load(file): if pixmap.size().width() > self.max_size or pixmap.size().height( ) > self.max_size: pixmap = pixmap.scaled(self.max_size, self.max_size, Qt.KeepAspectRatio, Qt.SmoothTransformation) buffer = QBuffer() pixmap.save(buffer, 'png') data = str(buffer.data()) with open(filename, 'wb') as f: f.write(data) icon = QIcon(pixmap) icon.filename = filename icon.content = data else: unlink(filename) icon = None self.iconmap[id] = icon return icon
def initialize(self, stream, session): super(IncomingFileTransferHandler, self).initialize(stream, session) try: directory = self.save_directory or SIPSimpleSettings().file_transfer.directory.normalized makedirs(directory) with self.metadata as metadata: try: prev_file = metadata.pop(stream.file_selector.hash.lower()) mtime = os.path.getmtime(prev_file.filename) if mtime != prev_file.mtime: raise ValueError('file was modified') filename = os.path.join(directory, os.path.basename(stream.file_selector.name)) try: os.link(prev_file.filename, filename) except (AttributeError, OSError): stream.file_selector.name = prev_file.filename else: stream.file_selector.name = filename unlink(prev_file.filename) stream.file_selector.fd = openfile(stream.file_selector.name, 'ab') # open doesn't seek to END in append mode on win32 until first write, but openfile does self.offset = stream.file_selector.fd.tell() self.hash = prev_file.partial_hash except (KeyError, EnvironmentError, ValueError): for name in UniqueFilenameGenerator.generate(os.path.join(directory, os.path.basename(stream.file_selector.name))): try: stream.file_selector.fd = openfile(name, 'xb') except FileExistsError: continue else: stream.file_selector.name = name break except Exception, e: NotificationCenter().post_notification('FileTransferHandlerDidNotInitialize', sender=self, data=NotificationData(reason=str(e)))
def save_certificates(self, sip_address, crt, key, ca): crt = crt.strip() + os.linesep key = key.strip() + os.linesep ca = ca.strip() + os.linesep X509Certificate(crt) X509PrivateKey(key) X509Certificate(ca) makedirs(ApplicationData.get('tls')) certificate_path = ApplicationData.get(os.path.join('tls', sip_address+'.crt')) file = open(certificate_path, 'w') os.chmod(certificate_path, 0600) file.write(crt+key) file.close() ca_path = ApplicationData.get(os.path.join('tls', 'ca.crt')) try: existing_cas = open(ca_path).read().strip() + os.linesep except: file = open(ca_path, 'w') file.write(ca) file.close() else: if ca not in existing_cas: file = open(ca_path, 'w') file.write(existing_cas+ca) file.close() settings = SIPSimpleSettings() settings.tls.ca_list = ca_path settings.save() return certificate_path
def _save_certificates(sip_address, crt, key, ca): crt = crt.strip() + os.linesep key = key.strip() + os.linesep ca = ca.strip() + os.linesep X509Certificate(crt) X509PrivateKey(key) X509Certificate(ca) makedirs(ApplicationData.get('tls')) certificate_path = ApplicationData.get( os.path.join('tls', sip_address + '.crt')) certificate_file = open(certificate_path, 'w') os.chmod(certificate_path, 0600) certificate_file.write(crt + key) certificate_file.close() ca_path = ApplicationData.get(os.path.join('tls', 'ca.crt')) try: existing_cas = open(ca_path).read().strip() + os.linesep except: certificate_file = open(ca_path, 'w') certificate_file.write(ca) certificate_file.close() else: if ca not in existing_cas: certificate_file = open(ca_path, 'w') certificate_file.write(existing_cas + ca) certificate_file.close() settings = SIPSimpleSettings() settings.tls.ca_list = ca_path settings.save() return certificate_path
def initialize(self, stream, session): super(IncomingFileTransferHandler, self).initialize(stream, session) try: directory = self.save_directory or SIPSimpleSettings().file_transfer.directory.normalized makedirs(directory) with self.metadata as metadata: try: prev_file = metadata.pop(stream.file_selector.hash.lower()) mtime = os.path.getmtime(prev_file.filename) if mtime != prev_file.mtime: raise ValueError('file was modified') filename = os.path.join(directory, os.path.basename(stream.file_selector.name)) try: os.link(prev_file.filename, filename) except (AttributeError, OSError): stream.file_selector.name = prev_file.filename else: stream.file_selector.name = filename unlink(prev_file.filename) stream.file_selector.fd = openfile(stream.file_selector.name, 'ab') # open doesn't seek to END in append mode on win32 until first write, but openfile does self.offset = stream.file_selector.fd.tell() self.hash = prev_file.partial_hash except (KeyError, EnvironmentError, ValueError): for name in UniqueFilenameGenerator.generate(os.path.join(directory, os.path.basename(stream.file_selector.name))): try: stream.file_selector.fd = openfile(name, 'xb') except FileExistsError: continue else: stream.file_selector.name = name break except Exception as e: NotificationCenter().post_notification('FileTransferHandlerDidNotInitialize', sender=self, data=NotificationData(reason=str(e))) else: NotificationCenter().post_notification('FileTransferHandlerDidInitialize', sender=self)
def save(self, data): """ Given a dictionary conforming to the IConfigurationBackend specification, write the data to the file configured with this backend in a format suitable to be read back using load(). """ lines = self._build_group(data, 0) config_directory = os.path.dirname(self.filename) tmp_filename = '%s.%d.%08X' % (self.filename, os.getpid(), random.getrandbits(32)) try: if config_directory: makedirs(config_directory) file = openfile(tmp_filename, 'wb', permissions=0o600) file.write( (os.linesep.join(lines) + os.linesep).encode(self.encoding)) file.close() if platform.system() == 'Windows': # os.rename does not work on Windows if the destination file already exists. # It seems there is no atomic way to do this on Windows. unlink(self.filename) os.rename(tmp_filename, self.filename) except (IOError, OSError) as e: raise ConfigurationBackendError( "failed to write configuration file: %s" % str(e))
def store_data(self, id, data): directory = ApplicationData.get('images') filename = os.path.join(directory, id + '.png') makedirs(directory) pixmap = QPixmap() if data is not None and pixmap.loadFromData(data): image_size = pixmap.size() if image_size.width() > self.max_size or image_size.height( ) > self.max_size: pixmap = pixmap.scaled(self.max_size, self.max_size, Qt.KeepAspectRatio, Qt.SmoothTransformation) if imghdr.what(None, data) != 'png' or pixmap.size() != image_size: buffer = QBuffer() pixmap.save(buffer, 'png') data = str(buffer.data()) with open(filename, 'wb') as f: f.write(data) icon = QIcon(pixmap) icon.filename = filename icon.content = data else: unlink(filename) icon = None self.iconmap[id] = icon return icon
def store_file(self, id, file): id = id.replace('/', '_') directory = ApplicationData.get('images') filename = os.path.join(directory, id + '.png') if filename == os.path.normpath(file): return self.iconmap.get(id, None) makedirs(directory) pixmap = QPixmap() if file is not None and pixmap.load(file): if pixmap.size().width() > self.max_size or pixmap.size().height() > self.max_size: pixmap = pixmap.scaled(self.max_size, self.max_size, Qt.KeepAspectRatio, Qt.SmoothTransformation) buffer = QBuffer() pixmap.save(buffer, 'png') data = str(buffer.data()) with open(filename, 'wb') as f: f.write(data) icon = QIcon(pixmap) icon.filename = filename icon.content = data icon.content_type = 'image/png' else: unlink(filename) icon = None self.iconmap[id] = icon return icon
def show(self, activate=True): settings = BlinkSettings() makedirs(settings.transfers_directory.normalized) self.setAttribute(Qt.WA_ShowWithoutActivating, not activate) super(FileTransferWindow, self).show() self.raise_() if activate: self.activateWindow()
def loadConfigurations(self): path = ApplicationData.get('conference') makedirs(path) try: with open(self.storage_path, 'rb') as f: self.conference_configurations = pickle.load(f) except Exception as e: self.conference_configurations = {}
def start(self): # There is still a race condition here in that the directory can be removed # before the PJSIP opens the file. There's nothing that can be done about # it as long as PJSIP doesn't accept an already open file descriptor. -Luci makedirs(os.path.dirname(self.filename)) self._recording_wave_file = RecordingWaveFile(self.mixer, self.filename) self._recording_wave_file.start() notification_center = NotificationCenter() notification_center.post_notification('AudioPortDidChangeSlots', sender=self, data=NotificationData(consumer_slot_changed=True, producer_slot_changed=False, old_consumer_slot=None, new_consumer_slot=self._recording_wave_file.slot))
def _init_log_directory(self): settings = SIPSimpleSettings() log_directory = settings.logs.directory.normalized try: makedirs(log_directory) except Exception, e: if not self._log_directory_error: print "failed to create logs directory '%s': %s" % (log_directory, e) self._log_directory_error = True self._janustrace_error = True raise
def _init_log_directory(self): settings = SIPSimpleSettings() log_directory = settings.logs.directory.normalized try: makedirs(log_directory) except Exception, e: if not self._log_directory_error: print "failed to create logs directory '%s': %s" % ( log_directory, e) self._log_directory_error = True self._wstrace_error = True raise
def __init__(self, peer_options={}): self.peer_options = DEFAULT_OTR_FLAGS.copy() self.peer_options.update(peer_options) path = ApplicationData.get('chat') makedirs(path) super(BlinkOtrAccount, self).__init__('blink', 'sip', '1024', privkey=None) self.defaultQuery = b'?OTRv{versions}?\n{accountname} has requested ' \ b'end-to-end encryption but this ' \ b'software does not support this feature. '; self.keyFilePath = ApplicationData.get('chat/private_key.dsa') self.trustedPeersPath = ApplicationData.get('chat/trusted_peers')
def initWithFrame_transfer_(self, frame, transfer): self = NSView.initWithFrame_(self, frame) if self: self.transfer = transfer NotificationCenter().add_observer(self, sender=transfer) NSBundle.loadNibNamed_owner_("FileTransferItemView", self) self.file_path = os.path.basename(self.transfer.ft_info.file_path) self.nameText.setStringValue_(self.file_path) self.remote_uri = self.transfer.ft_info.remote_uri self.local_uri = self.transfer.ft_info.local_uri if type(self.transfer) == OutgoingPushFileTransferHandler: self.fromText.setStringValue_("To: %s" % self.transfer.account.id) else: self.fromText.setStringValue_("From: %s" % self.transfer.account.id) self.revealButton.setHidden_(True) # XXX: there should be a better way to do this! tmp_folder = ApplicationData.get('.tmp_file_transfers') makedirs(tmp_folder, 0o700) tmpf = tmp_folder + "/tmpf-" + self.file_path.decode( ) if isinstance(self.file_path, bytes) else self.file_path with open(tmpf, "wb+"): self.updateIcon( NSWorkspace.sharedWorkspace().iconForFile_(tmpf)) unlink(tmpf) self.updateProgressInfo() self.progressBar.setIndeterminate_(True) self.progressBar.startAnimation_(None) self.checksumProgressBar.setIndeterminate_(False) self.checksumProgressBar.startAnimation_(None) if transfer.direction == 'outgoing': self.progressBar.setHidden_(True) self.checksumProgressBar.setHidden_(False) else: self.progressBar.setHidden_(False) self.checksumProgressBar.setHidden_(True) frame.size = self.view.frame().size self.setFrame_(frame) self.addSubview_(self.view) self.originalHeight = NSHeight(frame) return self
def storeCaptured(self): path = ApplicationData.get('photos') makedirs(path) dt = datetime.datetime.now().strftime("%Y%m%d%H%M%S") if not self.photoView.image(): self.captureImage() image = self.photoView.getCropped() path = path+"/photo%s.tiff"%dt image.TIFFRepresentation().writeToFile_atomically_(path, False) self.refreshLibrary() return path, image
def save(self, name, data): """Write the data in a file identified by name.""" filename = os.path.join(self.directory, self.account_id, name) tmp_filename = '%s.%d.%08X' % (filename, os.getpid(), random.getrandbits(32)) try: makedirs(os.path.join(self.directory, self.account_id)) file = openfile(tmp_filename, 'wb', permissions=0600) file.write(data) file.close() if platform.system() == 'Windows': # os.rename does not work on Windows if the destination file already exists. # It seems there is no atomic way to do this on Windows. unlink(filename) os.rename(tmp_filename, filename) except (IOError, OSError), e: raise XCAPStorageError("failed to save XCAP data for %s/%s: %s" % (self.account_id, name, str(e)))
def __new__(self): configuration = CassandraConfig.__cfgtype__(CassandraConfig.__cfgfile__) if configuration.files: msg='Reading storage configuration from {}'.format(', '.join(configuration.files)) log_event(loggers=settings.params.loggers, msg=msg, level='info') makedirs(ServerConfig.spool_dir.normalized) if CASSANDRA_MODULES_AVAILABLE and CassandraConfig.cluster_contact_points: if CassandraConfig.debug: logging.getLogger('cassandra').setLevel(logging.DEBUG) else: logging.getLogger('cassandra').setLevel(logging.INFO) log_event(loggers=settings.params.loggers, msg='Using Cassandra for token storage', level='info') return CassandraStorage() else: log_event(loggers=settings.params.loggers, msg='Using pickle file for token storage', level='info') return FileStorage()
def save(self, name, data): """Write the data in a file identified by name.""" filename = os.path.join(self.directory, self.account_id, name) tmp_filename = '%s.%d.%08X' % (filename, os.getpid(), random.getrandbits(32)) try: makedirs(os.path.join(self.directory, self.account_id)) file = os.fdopen(os.open(tmp_filename, os.O_WRONLY|os.O_CREAT|os.O_TRUNC, 0600), 'wb') file.write(data) file.close() if platform.system() == 'Windows': # os.rename does not work on Windows if the destination file already exists. # It seems there is no atomic way to do this on Windows. unlink(filename) os.rename(tmp_filename, filename) except (IOError, OSError), e: raise XCAPStorageError("failed to save XCAP data for %s/%s: %s" % (self.account_id, name, str(e)))
def start(self): # There is still a race condition here in that the directory can be removed # before the PJSIP opens the file. There's nothing that can be done about # it as long as PJSIP doesn't accept an already open file descriptor. -Luci makedirs(os.path.dirname(self.filename)) self._recording_wave_file = RecordingWaveFile(self.mixer, self.filename) self._recording_wave_file.start() notification_center = NotificationCenter() notification_center.post_notification( 'AudioPortDidChangeSlots', sender=self, data=NotificationData( consumer_slot_changed=True, producer_slot_changed=False, old_consumer_slot=None, new_consumer_slot=self._recording_wave_file.slot))
def __init__(self): self.logger = log.get_logger('weblog') self.logger.setLevel(log.level.INFO) if Logging.directory: if not os.path.exists(Logging.directory): try: makedirs(Logging.directory) except OSError as e: raise RuntimeError('Cannot create logging directory {}: {}'.format(Logging.directory, e)) self.filename = os.path.join(Logging.directory, 'access.log') formatter = log.Formatter() formatter.prefix_format = '' handler = FileHandler(self.filename) handler.setFormatter(formatter) self.logger.addHandler(handler) self.logger.propagate = False else: self.filename = None
def initialize(self, stream, session): super(IncomingFileTransferHandler, self).initialize(stream, session) try: directory = self.save_directory or SIPSimpleSettings().file_transfer.directory.normalized makedirs(directory) with self.metadata as metadata: try: prev_file = metadata.pop(stream.file_selector.hash.lower()) mtime = os.path.getmtime(prev_file.filename) if mtime != prev_file.mtime: raise ValueError('file was modified') filename = os.path.join(directory, os.path.basename(stream.file_selector.name)) try: os.link(prev_file.filename, filename) except (AttributeError, OSError): stream.file_selector.name = prev_file.filename else: stream.file_selector.name = filename unlink(prev_file.filename) stream.file_selector.fd = open(stream.file_selector.name.encode(sys.getfilesystemencoding()), 'ab') if sys.platform == 'win32': stream.file_selector.fd.seek(0, os.SEEK_END) self.offset = stream.file_selector.fd.tell() self.hash = prev_file.partial_hash except (KeyError, EnvironmentError, ValueError): filename = None fd = None flags = os.O_WRONLY | os.O_CREAT | os.O_EXCL if sys.platform == 'win32': flags |= os.O_BINARY for name in UniqueFilenameGenerator.generate(os.path.join(directory, os.path.basename(stream.file_selector.name))): try: fd = os.open(name, flags, 0644) except OSError, e: if e.args[0] == errno.EEXIST: continue raise filename = name break stream.file_selector.name = filename stream.file_selector.fd = os.fdopen(fd, 'wb') except Exception, e: NotificationCenter().post_notification('FileTransferHandlerDidNotInitialize', sender=self, data=NotificationData(reason=str(e)))
def start(self): if self.started: return self.started = True directory = ServerConfig.trace_dir.normalized try: makedirs(directory) except Exception as e: log.error('Failed to create tracelog directory at {directory}: {exception!s}'.format(directory=directory, exception=e)) else: for logger in (logger for logger in self.loggers if logger.enabled): logger.start() for name in logger.handled_notifications: self.notification_map[name].add(logger) if self.notification_map: notification_center = NotificationCenter() notification_center.add_observer(self) log.info('TraceLogManager started in {} for: {}'.format(directory, ', '.join(sorted(logger.name for logger in self.loggers if logger.enabled)))) else: log.info('TraceLogManager started in {}'.format(directory))
def loadConfigurations(self): path = ApplicationData.get('conference') makedirs(path) try: with open(ApplicationData.get('conference_configurations.pickle')): pass except IOError: pass else: src = ApplicationData.get('conference_configurations.pickle') dst = ApplicationData.get('conference/conference_configurations.pickle') try: shutil.move(src, dst) except shutil.Error: pass self.storage_path = ApplicationData.get('conference/conference_configurations.pickle') try: self.conference_configurations = cPickle.load(open(self.storage_path)) except: self.conference_configurations = {}
def loadConfigurations(self): path = ApplicationData.get('conference') makedirs(path) try: with open(ApplicationData.get('conference_configurations.pickle'), 'rb'): pass except IOError: pass else: src = ApplicationData.get('conference_configurations.pickle') dst = ApplicationData.get('conference/conference_configurations.pickle') try: shutil.move(src, dst) except shutil.Error: pass try: with open(ApplicationData.get('conference/conference_configurations.pickle'), 'rb') as f: self.conference_configurations = pickle.load(f) except: self.conference_configurations = {}
def save(self, data): """ Given a dictionary conforming to the IConfigurationBackend specification, write the data to the file configured with this backend in a format suitable to be read back using load(). """ lines = self._build_group(data, 0) config_directory = os.path.dirname(self.filename) tmp_filename = "%s.%d.%08X" % (self.filename, os.getpid(), random.getrandbits(32)) try: if config_directory: makedirs(config_directory) file = os.fdopen(os.open(tmp_filename, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0600), "wb") file.write((os.linesep.join(lines) + os.linesep).encode(self.encoding)) file.close() if platform.system() == "Windows": # os.rename does not work on Windows if the destination file already exists. # It seems there is no atomic way to do this on Windows. unlink(self.filename) os.rename(tmp_filename, self.filename) except (IOError, OSError), e: raise ConfigurationBackendError("failed to write configuration file: %s" % str(e))
def _start(self): self.file_selector = self.stream.file_selector path = IMG_PATH makedirs(path) self.filename = filename = os.path.join(path, self.file_selector.name.decode('utf-8')) basename, ext = os.path.splitext(filename) i = 1 while os.path.exists(filename): filename = '%s_%d%s' % (basename, i, ext) i += 1 self.filename = filename try: self.file = open(self.filename, 'wb') except EnvironmentError: log.msg('Room %s - cannot write destination filename: %s' % (self.uri, self.filename)) self.session.end() return notification_center = NotificationCenter() notification_center.add_observer(self, sender=self) notification_center.add_observer(self, sender=self.session) notification_center.add_observer(self, sender=self.stream) self.hash = hashlib.sha1()
def storeCaptured(self): makedirs(self.storage_folder) dt = datetime.datetime.now().strftime("%Y%m%d%H%M%S") if not self.captured_image: return if self.high_res: image = self.captured_image else: image = self.photoView.getCropped() path = self.storage_folder + "/photo%s.jpg" % dt jpg_data = NSBitmapImageRep.alloc().initWithData_( image.TIFFRepresentation()).representationUsingType_properties_( NSJPEGFileType, {NSImageCompressionFactor: 0.9}) data = jpg_data.bytes().tobytes() with open(path, 'wb') as f: f.write(data) self.refreshLibrary() return path, image
def _init_log_directory(self): settings = SIPSimpleSettings() log_directory = settings.logs.directory.normalized try: makedirs(log_directory) except Exception as e: if not self._log_directory_error: print("failed to create logs directory '%s': %s" % (log_directory, e)) self._log_directory_error = True self._siptrace_error = True self._pjsiptrace_error = True self._notifications_error = True raise else: self._log_directory_error = False # sip trace if self._siptrace_filename is None: self._siptrace_filename = os.path.join(log_directory, 'sip_trace.txt') self._siptrace_error = False # msrp trace if self._msrptrace_filename is None: self._msrptrace_filename = os.path.join( log_directory, 'msrp_trace.txt') self._msrptrace_error = False # pjsip trace if self._pjsiptrace_filename is None: self._pjsiptrace_filename = os.path.join( log_directory, 'pjsip_trace.txt') self._pjsiptrace_error = False # notifications trace if self._notifications_filename is None: self._notifications_filename = os.path.join( log_directory, 'notifications_trace.txt') self._notifications_error = False
def storeCaptured(self): makedirs(self.storage_folder) dt = datetime.datetime.now().strftime("%Y%m%d%H%M%S") if not self.photoView.image(): self.captureImage() if self.high_res: imageRep = self.latestImageRep image = NSImage.alloc().initWithSize_(imageRep.size()) image.addRepresentation_(imageRep) else: image = self.photoView.getCropped() tiff_data = image.TIFFRepresentation() path = self.storage_folder + "/photo%s.png" % dt bitmap_data = NSBitmapImageRep.alloc().initWithData_(tiff_data) png_data = bitmap_data.representationUsingType_properties_(NSPNGFileType, None) data = png_data.bytes().tobytes() with open(path, 'w') as f: f.write(data) self.refreshLibrary() return path, image
def _start(self): self.file_selector = self.stream.file_selector path = IMG_PATH makedirs(path) self.filename = filename = os.path.join( path, self.file_selector.name.decode('utf-8')) basename, ext = os.path.splitext(filename) i = 1 while os.path.exists(filename): filename = '%s_%d%s' % (basename, i, ext) i += 1 self.filename = filename try: self.file = open(self.filename, 'wb') except EnvironmentError: log.msg('Room %s - cannot write destination filename: %s' % (self.uri, self.filename)) self.session.end() return notification_center = NotificationCenter() notification_center.add_observer(self, sender=self) notification_center.add_observer(self, sender=self.session) notification_center.add_observer(self, sender=self.stream) self.hash = hashlib.sha1()
from blink.configuration.settings import SIPSimpleSettingsExtension from blink.logging import LogManager from blink.mainwindow import MainWindow from blink.presence import PresenceManager from blink.resources import ApplicationData, Resources from blink.sessions import SessionManager from blink.update import UpdateManager from blink.util import QSingleton, run_in_gui_thread __all__ = ['Blink'] if hasattr(sys, 'frozen'): import httplib2 httplib2.CA_CERTS = os.environ['SSL_CERT_FILE'] = Resources.get( 'tls/cacerts.pem') makedirs(ApplicationData.get('logs')) sys.stdout.file = ApplicationData.get('logs/output.log') class IPAddressMonitor(object): """ An object which monitors the IP address used for the default route of the host and posts a SystemIPAddressDidChange notification when a change is detected. """ def __init__(self): self.greenlet = None @run_in_green_thread def start(self): notification_center = NotificationCenter()
from blink.configuration.addressbook import ContactExtension, GroupExtension from blink.configuration.settings import SIPSimpleSettingsExtension from blink.logging import LogManager from blink.mainwindow import MainWindow from blink.presence import PresenceManager from blink.resources import ApplicationData, Resources from blink.sessions import SessionManager from blink.update import UpdateManager from blink.util import QSingleton, run_in_gui_thread __all__ = ["Blink"] if hasattr(sys, "frozen"): makedirs(ApplicationData.get("logs")) sys.stdout.file = open(ApplicationData.get("logs/output.log"), "a", 0) import httplib2 httplib2.CA_CERTS = os.environ["SSL_CERT_FILE"] = Resources.get("tls/cacerts.pem") class IPAddressMonitor(object): """ An object which monitors the IP address used for the default route of the host and posts a SystemIPAddressDidChange notification when a change is detected. """ def __init__(self): self.greenlet = None
def file(self): if 'file' not in self.__dict__: directory = os.path.dirname(self.filename) makedirs(directory) self.__dict__['file'] = open(self.filename, 'a') return self.__dict__['file']
def _AH_LogsWindowActionTriggered(self, checked): directory = ApplicationData.get('logs') makedirs(directory) QDesktopServices.openUrl(QUrl.fromLocalFile(directory))
def get_contacts_backup_directory(self): path = ApplicationData.get('contacts_backup') makedirs(path) return path
def _AH_ReceivedFilesWindowActionTriggered(self, checked): settings = BlinkSettings() directory = settings.transfers_directory.normalized makedirs(directory) QDesktopServices.openUrl(QUrl.fromLocalFile(directory))
from blink.configuration.account import AccountExtension, BonjourAccountExtension from blink.configuration.addressbook import ContactExtension, GroupExtension from blink.configuration.datatypes import InvalidToken from blink.configuration.settings import SIPSimpleSettingsExtension from blink.logging import LogManager from blink.mainwindow import MainWindow from blink.presence import PresenceManager from blink.resources import ApplicationData, Resources from blink.sessions import SessionManager from blink.update import UpdateManager from blink.util import QSingleton, run_in_gui_thread if getattr(sys, 'frozen', False): output = sys.stdout makedirs(ApplicationData.get('logs')) sys.stdout = sys.stderr = open(ApplicationData.get('logs/output.log'), 'a') sys.stdout.write(output.getvalue()) output.close() class IPAddressMonitor(object): """ An object which monitors the IP address used for the default route of the host and posts a SystemIPAddressDidChange notification when a change is detected. """ def __init__(self): self.greenlet = None
def get_contacts_backup_directory(self): storage_path = ApplicationData.get('contacts_backup/dummy') makedirs(os.path.dirname(storage_path)) return ApplicationData.get('contacts_backup')
def save(self): if self.image is not None: filename = next(filename for filename in self.filename_generator() if not os.path.exists(filename)) makedirs(os.path.dirname(filename)) self.image.save(filename)
def _AH_ScreenshotsWindowActionTriggered(self, checked): settings = BlinkSettings() directory = settings.screen_sharing.screenshots_directory.normalized makedirs(directory) QDesktopServices.openUrl(QUrl.fromLocalFile(directory))
def _AH_ReceivedFilesWindowActionTriggered(self, checked): settings = SIPSimpleSettings() directory = settings.file_transfer.directory.normalized makedirs(directory) QDesktopServices.openUrl(QUrl.fromLocalFile(directory))
def start(self): self.sessions = {} self.transfer_handlers = set() NotificationCenter().add_observer(self, name='IncomingFileTransferHandlerGotFile') makedirs(IMG_PATH)
def _initialize_subsystems(self): notification_center = NotificationCenter() with self._lock: stop_pending = self._stop_pending if stop_pending: self.state = 'stopping' if stop_pending: notification_center.post_notification('SIPApplicationWillEnd', sender=self) reactor.stop() return account_manager = AccountManager() dns_manager = DNSManager() session_manager = SessionManager() settings = SIPSimpleSettings() # Initialize default account default_account = DefaultAccount() account_manager.default_account = default_account # initialize TLS self._initialize_tls() # initialize PJSIP internal resolver self.engine.set_nameservers(['8.8.8.8']) # initialize audio objects voice_mixer = AudioMixer(None, None, settings.audio.sample_rate, 0, 9999) self.voice_audio_device = AudioDevice(voice_mixer) self.voice_audio_bridge = RootAudioBridge(voice_mixer) self.voice_audio_bridge.add(self.voice_audio_device) # initialize video objects self.video_device = VideoDevice(u'Colorbar generator', settings.video.resolution, settings.video.framerate) # initialize instance id settings.instance_id = uuid4().urn settings.save() # initialize ZRTP cache makedirs(ServerConfig.spool_dir.normalized) self.engine.zrtp_cache = os.path.join(ServerConfig.spool_dir.normalized, 'zrtp.db') # initialize middleware components dns_manager.start() account_manager.start() session_manager.start() notification_center.add_observer(self, name='CFGSettingsObjectDidChange') self.state = 'started' notification_center.post_notification('SIPApplicationDidStart', sender=self) # start SylkServer components self.web_server = WebServer() self.web_server.start() self.request_handler = IncomingRequestHandler() self.request_handler.start() if ThorNodeConfig.enabled: from sylk.interfaces.sipthor import ConferenceNode self.thor_interface = ConferenceNode() thor_roles = [] if 'conference' in self.request_handler.application_registry: thor_roles.append('conference_server') if 'xmppgateway' in self.request_handler.application_registry: thor_roles.append('xmpp_gateway') if 'webrtcgateway' in self.request_handler.application_registry: thor_roles.append('webrtc_gateway') self.thor_interface.start(thor_roles)
def start(self): self.sessions = {} self.transfer_handlers = set() NotificationCenter().add_observer( self, name='IncomingFileTransferHandlerGotFile') makedirs(IMG_PATH)
def _AH_ScreenshotsWindowActionTriggered(self, checked): settings = BlinkSettings() directory = settings.screenshots_directory.normalized makedirs(directory) QDesktopServices.openUrl(QUrl.fromLocalFile(directory))