Beispiel #1
0
    def _write_file(self, file_path, data):

        with open(file_path, 'w') as f:
            # d = Deferred()
            fd = f.fileno()
            setNonBlocking(fd)
            writeToFD(fd, data)
Beispiel #2
0
    def _dump_file(self, file, submission_gus, file_gus):

        result = {}
        result['file_gus'] = file_gus
        result['name'] = file['filename']
        result['type'] = file['content_type']
        result['size'] = len(file['body'])

        # XXX verify this token what's is it
        result['token'] = submission_gus

        if not os.path.isdir(config.advanced.submissions_dir):
            print "%s does not exist. Creating it." % config.advanced.submissions_dir
            os.mkdir(config.advanced.submissions_dir)

        the_submission_dir = config.advanced.submissions_dir

        # this happen only at the first execution
        if not os.path.isdir(the_submission_dir):
            os.mkdir(the_submission_dir)

        filelocation = os.path.join(the_submission_dir, file_gus)

        print "Saving file \"%s\" of %d byte [%s] type, to %s" % \
              (result['name'], result['size'], result['type'], filelocation )

        with open(filelocation, 'w+') as fd:
            fdesc.setNonBlocking(fd.fileno())
            fdesc.writeToFD(fd.fileno(), file['body'])

        return result
Beispiel #3
0
 def updateReport(self, report_filename, data):
     try:
         with open(report_filename, 'a+') as fd:
             fdesc.setNonBlocking(fd.fileno())
             fdesc.writeToFD(fd.fileno(), data)
     except IOError as e:
         web.HTTPError(404, "Report not found")
Beispiel #4
0
 def updateReport(self, report_filename, data):
     try:
         with open(report_filename, 'a+') as fd:
             fdesc.setNonBlocking(fd.fileno())
             fdesc.writeToFD(fd.fileno(), data)
     except IOError as e:
         e.OONIBError(404, "Report not found")
Beispiel #5
0
    def _create_ipfile(self, username, ip_addr):
        """
        Create configuration file for static IP allocation.

        :param username (str): account username
        :param ip_addr (IPv4Address): IP address allocated for the account.
        """
        log.info("ACCOUNTS:: Creating IP file for client.")

        # OpenVPN will look for files inside this directory. Its filename must
        # be the same as the username
        ip_filename = os.path.join(self.path['client-ips'], username)
        log.debug("ACCOUNTS: Creating {} with {}.".format(
            ip_filename, str(ip_addr)))

        # From `Configuring client-specific rules and access policies` in
        # https://openvpn.net/index.php/open-source/documentation/howto.html
        virtual_client = ip_addr
        server_endpoint = ip_addr + 1

        log.debug("ACCOUNTS:: ifconfig-push {} {}".format(
            virtual_client, server_endpoint))
        data = "ifconfig-push {} {}\n".format(str(virtual_client),
                                              str(server_endpoint))
        with open(ip_filename, 'w+') as f:
            fd = f.fileno()
            setNonBlocking(fd)
            writeToFD(fd, data)

        fp = FilePath(ip_filename)
        fp.chmod(0644)
Beispiel #6
0
    def contentReceived(self, chunk):
        #log.msg('Content %s bytes received:', len(chunk))
        fdesc.writeToFD(self.file, chunk)
        
        if self.beginning == 2:
            log.msg('File should be closed here')

        return self.headerReceived, HEADER_LENGTH
Beispiel #7
0
    def process_image(self, payload, **kwargs):
        """ Writes images to the cache """

        filecache_loc = settings.CACHE_LOCATION
        webcache_loc = settings.WEB_CACHE_LOCATION
        cache_filename_parts = payload['image_path'].split('.')
        filefront = cache_filename_parts[0]
        fileend = cache_filename_parts[1]
        cache_filename = ''

        original_filename = '%s.%s' % (
            filefront,
            fileend,
        )
        cache_filename = '%s_%sx%s_%s.%s' % (
            filefront,
            payload['width'],
            payload['height'],
            payload['mode'],
            fileend,
        )

        file_cache = os.path.join(filecache_loc, cache_filename)
        web_cache = os.path.join(webcache_loc, cache_filename)

        # Files are normally binned in subdir, create them in cache
        dirs = os.path.dirname(file_cache)
        try:
            os.makedirs(dirs)
        except os.error:
            pass

        if 'skip_resize' in payload.keys():
            # Just save/servwe original image as there is no resized image
            file_cache = os.path.join(filecache_loc, original_filename)
            web_cache = os.path.join(webcache_loc, original_filename)

        # Save image to be served
        fd = open(file_cache, 'w')
        fdesc.setNonBlocking(fd.fileno())
        yield fdesc.writeToFD(fd.fileno(), payload['image'])
        fd.close()

        if 'skip_resize' not in payload.keys():
            # If image to be served has beenr esized, also cache full size image
            file_cache = os.path.join(filecache_loc, original_filename)
            fd = open(file_cache, 'w')
            fdesc.setNonBlocking(fd.fileno())
            yield fdesc.writeToFD(fd.fileno(), payload['original_image'])
            fd.close()

        if settings.DEBUG:
            log.msg(
                "[%s] Cached image location: %s" % (datetime.now().isoformat(), file_cache),
                logLevel=logging.DEBUG
            )

        defer.returnValue(web_cache)
Beispiel #8
0
    def process_image(self, payload, **kwargs):
        """ Writes images to the cache """

        filecache_loc = settings.CACHE_LOCATION
        webcache_loc = settings.WEB_CACHE_LOCATION
        cache_filename_parts = payload['image_path'].split('.')
        filefront = cache_filename_parts[0]
        fileend = cache_filename_parts[1]
        cache_filename = ''

        original_filename = '%s.%s' % (
            filefront,
            fileend,
        )
        cache_filename = '%s_%sx%s_%s.%s' % (
            filefront,
            payload['width'],
            payload['height'],
            payload['mode'],
            fileend,
        )

        file_cache = os.path.join(filecache_loc, cache_filename)
        web_cache = os.path.join(webcache_loc, cache_filename)

        # Files are normally binned in subdir, create them in cache
        dirs = os.path.dirname(file_cache)
        try:
            os.makedirs(dirs)
        except os.error:
            pass

        if 'skip_resize' in payload.keys():
            # Just save/servwe original image as there is no resized image
            file_cache = os.path.join(filecache_loc, original_filename)
            web_cache = os.path.join(webcache_loc, original_filename)

        # Save image to be served
        fd = open(file_cache, 'w')
        fdesc.setNonBlocking(fd.fileno())
        yield fdesc.writeToFD(fd.fileno(), payload['image'])
        fd.close()

        if 'skip_resize' not in payload.keys():
            # If image to be served has beenr esized, also cache full size image
            file_cache = os.path.join(filecache_loc, original_filename)
            fd = open(file_cache, 'w')
            fdesc.setNonBlocking(fd.fileno())
            yield fdesc.writeToFD(fd.fileno(), payload['original_image'])
            fd.close()

        if settings.DEBUG:
            log.msg("[%s] Cached image location: %s" %
                    (datetime.now().isoformat(), file_cache),
                    logLevel=logging.DEBUG)

        defer.returnValue(web_cache)
Beispiel #9
0
 def writeSomeData(self, data):
     self._write_buf += data
     while True:
         length = self.get_frame(self._write_buf)
         if length == -1:
             break
         frame = self._write_buf[:length]
         self._write_buf = self._write_buf[length:]
         fdesc.writeToFD(self.tunfd, frame)
Beispiel #10
0
 def writeSomeData(self, data):
     self._write_buf += data
     while True:
         length = self.get_frame(self._write_buf)
         if length == -1:
             break
         frame = self._write_buf[:length]
         self._write_buf = self._write_buf[length:]
         fdesc.writeToFD(self.tunfd, frame)
Beispiel #11
0
    def do_verbose_log(self, content):
        """
        Record in the verbose log the content as defined by Cyclone wrappers.
        """
        content = sanitize_str(content)

        try:
            with open(GLSetting.httplogfile, "a+") as fd:
                fdesc.writeToFD(fd.fileno(), content + "\n")
        except Exception as excep:
            log.err("Unable to open %s: %s" % (GLSetting.httplogfile, excep))
Beispiel #12
0
    def do_verbose_log(self, content):
        """
        Record in the verbose log the content as defined by Cyclone wrappers.
        """
        content = log_remove_escapes(content)
        content = log_encode_html(content)

        try:
            with open(GLSetting.httplogfile, 'a+') as fd:
                fdesc.writeToFD(fd.fileno(), content + "\n")
        except Exception as excep:
            log.err("Unable to open %s: %s" % (GLSetting.httplogfile, excep))
Beispiel #13
0
    def do_verbose_log(self, content):
        """
        Record in the verbose log the content as defined by Cyclone wrappers.
        """
        content = log_remove_escapes(content)
        content = log_encode_html(content)

        try:
            with open(GLSetting.httplogfile, 'a+') as fd:
                fdesc.writeToFD(fd.fileno(), content + "\n")
        except Exception as excep:
            log.err("Unable to open %s: %s" % (GLSetting.httplogfile, excep))
Beispiel #14
0
    def do_verbose_log(self, content):
        """
        Record in the verbose log the content as defined by Cyclone wrappers.

        This option is only available in devel mode and intentionally does not filter
        any input/output; It should be used only for debug purposes.
        """

        try:
            with open(GLSettings.httplogfile, 'a+') as fd:
                fdesc.writeToFD(fd.fileno(), content + "\n")
        except Exception as excep:
            log.err("Unable to open %s: %s" % (GLSettings.httplogfile, excep))
Beispiel #15
0
    def do_verbose_log(self, content):
        """
        Record in the verbose log the content as defined by Cyclone wrappers.

        This option is only available in devel mode and intentionally does not filter
        any input/output; It should be used only for debug purposes.
        """

        try:
            with open(GLSettings.httplogfile, "a+") as fd:
                fdesc.writeToFD(fd.fileno(), content + "\n")
        except Exception as excep:
            log.err("Unable to open %s: %s" % (GLSettings.httplogfile, excep))
Beispiel #16
0
    def receiveContent(self, chunk):

        start = time.time()
        log.msg('Content %s bytes received:', len(chunk))
        fdesc.writeToFD(self.file, chunk)

        if self.beginning == 2:
            log.msg('Last chunk go to processing')
            for websock in self.factory.browsers:
                websock.write(self.path.split('/')[-1].encode('utf-8')) 
            self.startProcessing()
        stop = time.time()
        return self.receiveHeader, HEADER_LENGTH
Beispiel #17
0
    def updateReport(self, report_id, parsed_request):

        log.debug("Got this request %s" % parsed_request)
        report_filename = os.path.join(config.main.report_dir,
                report_id)
        
        config.reports[report_id].refresh()

        try:
            with open(report_filename, 'a+') as fd:
                fdesc.setNonBlocking(fd.fileno())
                fdesc.writeToFD(fd.fileno(), parsed_request['content'])
        except IOError as exc:
            e.OONIBError(404, "Report not found")
        self.write({})
Beispiel #18
0
 def writeSomeData(self, data):
     """
     Write some data to the open process.
     """
     rv = fdesc.writeToFD(self.fd, data)
     if rv == len(data) and self.enableReadHack:
         self.startReading()
     return rv
Beispiel #19
0
 def writeSomeData(self, data):
     """
     Write some data to the open process.
     """
     rv = fdesc.writeToFD(self.fd, data)
     if rv == len(data) and self.enableReadHack:
         self.startReading()
     return rv
Beispiel #20
0
 def writeSomeData(self, data):
     """
     Write some data to the open process.
     """
     rv = fdesc.writeToFD(self.fd, data)
     if rv == len(data) and self.enableReadHack:
         # If the send buffer is now empty and it is necessary to monitor
         # this descriptor for readability to detect close, try detecting
         # readability now.
         self.startReading()
     return rv
Beispiel #21
0
 def writeSomeData(self, data):
     """
     Write some data to the open process.
     """
     rv = fdesc.writeToFD(self.fd, data)
     if rv == len(data) and self.enableReadHack:
         # If the send buffer is now empty and it is necessary to monitor
         # this descriptor for readability to detect close, try detecting
         # readability now.
         self.startReading()
     return rv
Beispiel #22
0
    def _dump_file(self, file, submission_gus, file_gus):

        result = {}
        result['file_gus'] = file_gus
        result['name'] = file['filename']
        result['type'] = file['content_type']
        result['size'] = len(file['body'])

        # XXX verify this token what's is it
        # TODO, remind the also ReceiverTip can upload file, not just Submission
        result['token'] = submission_gus

        if not os.path.isdir(config.advanced.submissions_dir):
            print "%s does not exist. Creating it." % config.advanced.submissions_dir
            os.mkdir(config.advanced.submissions_dir)

        the_submission_dir = config.advanced.submissions_dir

        # this happen only at the first execution
        if not os.path.isdir(the_submission_dir):
            os.mkdir(the_submission_dir)

        filelocation = os.path.join(the_submission_dir, file_gus)

        print "Saving file \"%s\" of %d byte [%s] type, to %s" % \
              (result['name'], result['size'], result['type'], filelocation )

        # *The file is complete*
        # because Cyclone cache them before pass to the handler.
        # This mean that need to be limited client and Cyclone side,
        # and we here can't track about incomplete file.
        with open(filelocation, 'w+') as fd:
            fdesc.setNonBlocking(fd.fileno())
            fdesc.writeToFD(fd.fileno(), file['body'])

        return result
Beispiel #23
0
 def dataReceived(self,data):
     """docstring for writeData"""
     fdesc.writeToFD(self.outfile,data)
Beispiel #24
0
 def writeData(self,data):
     """docstring for writeData"""
     fdesc.writeToFD(self.outfile,data)
 def writeSomeData(self, data):
     """
     Write some data to the serial device.
     """
     return fdesc.writeToFD(self.fileno(), data)
 def writeSomeData(self, data):
     return fdesc.writeToFD(self.fp.fileno(), data)
Beispiel #27
0
 def writeSomeData(self, data):
     """
     Write some data to the open process.
     """
     return fdesc.writeToFD(self.fd, data)
Beispiel #28
0
 def writeToReport(self, report_filename, data):
     with open(report_filename, 'w+') as fd:
         fdesc.setNonBlocking(fd.fileno())
         fdesc.writeToFD(fd.fileno(), data)
Beispiel #29
0
 def writeSomeData(self, data):
     """
     Write some data to the serial device.
     """
     return fdesc.writeToFD(self.fileno(), data)
Beispiel #30
0
 def write(self, data):
     fdesc.writeToFD(self._port.fileno(), data)
Beispiel #31
0
 def writeSomeData(self, data):
     rw = fdesc.writeToFD(self.fileno(), data)
     if rw == len(data) and self.backToReading:
         self.backToReading = False
         self.startReading()
     return rw
Beispiel #32
0
 def dataReceived(self, data):
     """docstring for writeData"""
     fdesc.writeToFD(self.outfile, data)
Beispiel #33
0
 def writeData(self, data):
     """docstring for writeData"""
     fdesc.writeToFD(self.outfile, data)
Beispiel #34
0
 def write(self, data):
     fdesc.writeToFD(self._port.fileno(), data)
Beispiel #35
0
 def writeSomeData(self, data):
     """
     Write some data to the open process.
     """
     return fdesc.writeToFD(self.fd, data)
 def writeToFile(self, data):
     if self.outputFile is not None:
         # Write to nonblocking output file descriptor
         fdesc.writeToFD(self.outputFile.fileno(), data)
Beispiel #37
0
 def writeSomeData(self, data):
     rw = fdesc.writeToFD(self.fileno(), data)
     if rw == len(data) and self.backToReading:
         self.backToReading = False
         self.startReading()
     return rw
Beispiel #38
0
 def write(self, d):
     """
     Write data to the pipe.
     """
     return fdesc.writeToFD(self.w, d)
Beispiel #39
0
 def writeSomeData(self, data):
     return writeToFD(self.file, data)
Beispiel #40
0
 def writeSomeData(self, data):
     """
     Write data to the FIFO. Should not be used by protocols -
     use L{write<twisted.internet.abstract.FileDescriptor.write>} instead.
     """
     return writeToFD(self.fileno(), data)
Beispiel #41
0
 def writeToReport(self, report_filename, data):
     with open(report_filename, 'w+') as fd:
         fdesc.setNonBlocking(fd.fileno())
         fdesc.writeToFD(fd.fileno(), data)
Beispiel #42
0
 def writeSomeData(self, data):
     return fdesc.writeToFD(self.fileno(), data)
Beispiel #43
0
 def write(self, d):
     """
     Write data to the pipe.
     """
     return fdesc.writeToFD(self.w, d)