Esempio n. 1
0
 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
Esempio n. 2
0
 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)))
Esempio n. 4
0
 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
Esempio n. 5
0
 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
Esempio n. 6
0
 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)
Esempio n. 7
0
 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))
Esempio n. 8
0
 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
Esempio n. 9
0
 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
Esempio n. 10
0
 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()
Esempio n. 11
0
 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 = {}
Esempio n. 13
0
 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))
Esempio n. 14
0
 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
Esempio n. 15
0
 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
Esempio n. 16
0
    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
Esempio n. 18
0
    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
Esempio n. 19
0
 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)))
Esempio n. 20
0
 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()
Esempio n. 21
0
 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)))
Esempio n. 22
0
 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))
Esempio n. 23
0
 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
Esempio n. 24
0
 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)))
Esempio n. 25
0
 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 = {}
Esempio n. 28
0
 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))
Esempio n. 29
0
 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()
Esempio n. 30
0
    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
Esempio n. 31
0
    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
Esempio n. 32
0
    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
Esempio n. 33
0
 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()
Esempio n. 34
0
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()
Esempio n. 35
0
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
Esempio n. 36
0
 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']
Esempio n. 37
0
 def _AH_LogsWindowActionTriggered(self, checked):
     directory = ApplicationData.get('logs')
     makedirs(directory)
     QDesktopServices.openUrl(QUrl.fromLocalFile(directory))
Esempio n. 38
0
 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']
Esempio n. 39
0
 def get_contacts_backup_directory(self):
     path = ApplicationData.get('contacts_backup')
     makedirs(path)
     return path
Esempio n. 40
0
 def _AH_LogsWindowActionTriggered(self, checked):
     directory = ApplicationData.get('logs')
     makedirs(directory)
     QDesktopServices.openUrl(QUrl.fromLocalFile(directory))
Esempio n. 41
0
 def _AH_ReceivedFilesWindowActionTriggered(self, checked):
     settings = BlinkSettings()
     directory = settings.transfers_directory.normalized
     makedirs(directory)
     QDesktopServices.openUrl(QUrl.fromLocalFile(directory))
Esempio n. 42
0
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
Esempio n. 43
0
 def get_contacts_backup_directory(self):
     storage_path = ApplicationData.get('contacts_backup/dummy')
     makedirs(os.path.dirname(storage_path))
     return ApplicationData.get('contacts_backup')
Esempio n. 44
0
 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)
Esempio n. 45
0
 def _AH_ScreenshotsWindowActionTriggered(self, checked):
     settings = BlinkSettings()
     directory = settings.screen_sharing.screenshots_directory.normalized
     makedirs(directory)
     QDesktopServices.openUrl(QUrl.fromLocalFile(directory))
Esempio n. 46
0
 def _AH_ReceivedFilesWindowActionTriggered(self, checked):
     settings = SIPSimpleSettings()
     directory = settings.file_transfer.directory.normalized
     makedirs(directory)
     QDesktopServices.openUrl(QUrl.fromLocalFile(directory))
Esempio n. 47
0
 def start(self):
     self.sessions = {}
     self.transfer_handlers = set()
     NotificationCenter().add_observer(self, name='IncomingFileTransferHandlerGotFile')
     makedirs(IMG_PATH)
Esempio n. 48
0
 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)
Esempio n. 49
0
 def get_contacts_backup_directory(self):
     storage_path = ApplicationData.get('contacts_backup/dummy')
     makedirs(os.path.dirname(storage_path))
     return ApplicationData.get('contacts_backup')
Esempio n. 50
0
    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)
Esempio n. 51
0
 def start(self):
     self.sessions = {}
     self.transfer_handlers = set()
     NotificationCenter().add_observer(
         self, name='IncomingFileTransferHandlerGotFile')
     makedirs(IMG_PATH)
Esempio n. 52
0
 def get_contacts_backup_directory(self):
     path = ApplicationData.get('contacts_backup')
     makedirs(path)
     return path
Esempio n. 53
0
 def _AH_ScreenshotsWindowActionTriggered(self, checked):
     settings = BlinkSettings()
     directory = settings.screenshots_directory.normalized
     makedirs(directory)
     QDesktopServices.openUrl(QUrl.fromLocalFile(directory))