Exemple #1
0
def create_connection(addr, port):
    con = SuperSocket()
    Client(con)
    con.add_map(CONNECT, on_connect, addr, port)
    con.add_map(CONNECT_ERR, on_connect_err, addr, port)
    con.add_map(CONNECT, lambda con: die())
    con.add_map(CONNECT_ERR, lambda con, err: die())

    con.connect_ex((addr, port))
Exemple #2
0
def scan(addr, min, max):
    task = Task()
    for ind in range(min, max):
        task.add(create_connection(addr, ind), CONNECT, CONNECT_ERR)

    task.start()
    task.add_map(DONE, lambda task: die())
Exemple #3
0
def setup(con, msg):
    SockReader(con)
    SockWriter(con)
    con.dump(msg.encode('utf8'))
    con.settimeout(1)

    con.add_map(DUMPED, lambda con: die('Msg dumped!'))
Exemple #4
0
 def terminate(self):
     lose(self.ssock)
     lose(self.server)
     die()
Exemple #5
0
 def handle_done(self, client, a, b):
     self.assertEqual(a, b'abc' * 100)
     self.assertEqual(b, b'efg' * 100)
     lose(client)
     lose(self.server)
     die()
Exemple #6
0
 def handle_done(self, client, data):
     print('Received bytes from:', self.client)
     lose(client)
     lose(self.server)
     die()
Exemple #7
0
 def handle_done(self, ssock, data):
     print('Received bytes from:', ssock)
     lose(ssock)
     lose(self.server)
     die()
Exemple #8
0
from untwisted.core import die
from untwisted import core
from untwisted.task import Task
from untwisted.job import Job, DONE
import time


def sum(x, y):
    time.sleep(3)
    return x + y


def show(job, result):
    print(result)


task = Task()
# Tell the task it can start trigging events.
task.start()

for ind in range(100):
    job = Job(sum, ind, 1000)
    job.add_map(DONE, show)
    task.add(job, DONE)

task.add_map(DONE, lambda task: die())
core.gear.mainloop()
Exemple #9
0
 def handle_done(self, task):
     self.drive(self.EMPTY)
     die()
Exemple #10
0
 def handle_connect(self, client):
     print('Connected!', client)
     lose(client)
     lose(self.server)
     die()
Exemple #11
0
def handle_connect_err(ssock, err):
    print('Connect err.', err)
    die()
Exemple #12
0
def handle_close(ssock, err):
    print('Closed.')
    die()
Exemple #13
0
def on_close(expect):
    print('Closing..')
    die()
Exemple #14
0
def setup(con, msg):
    Stdout(con)
    Stdin(con)
    con.dump(msg)
    xmap(con, DUMPED, lambda con: die('Msg dumped!'))
Exemple #15
0
 def update(self):
     die()
Exemple #16
0
 def handle_done(self, job, retval):
     self.retval = retval
     die()
Exemple #17
0
class Miner(list):
    task = Task()
    task.add_map(DONE, lambda task: die())
    task.start()

    def __init__(self,
                 url,
                 headers=default_headers,
                 args={},
                 method='get',
                 payload=None,
                 auth=None,
                 attempts=5):
        """
        Resource
            Param: url

        Headers to be send.        
            Param: headers

        Url query.
            Param: args

        The HTTP method.
            Param: method

        The payload data in case of method is 'post'.
            Param: payload

        Authentication user/pass.
            Param: auth

        The number of times a given url should be tried
        in case of corrupted response.
            Param: attempts.
        
        """
        self.url = url
        self.auth = auth
        self.args = args

        self.encoding = 'utf-8'
        self.response = None
        self.headers = headers
        self.payload = payload
        self.method = method
        self.attempts = attempts
        self.urlparser = urlparse(url)

        super(list, self).__init__()

        self.next(self.url)

    def setup(self, response):
        # Reset the fd so it can be reread later.
        data = response.fd.read()
        response.fd.seek(0)

        type = response.headers.get('content-type',
                                    'text/html; charset=%s' % self.encoding)

        # Sets the encoding for later usage
        # in self.geturl for example.
        params = cgi.parse_header(type)
        self.encoding = params[1]['charset']
        self.response = response

        data = data.decode(self.encoding, 'ignore')
        self.build_dom(data)

    def build_dom(self, data):
        pass

    def handle_success(self, request, response):
        self.setup(response)

    def fetcher(self):
        request = Get(self.url,
                      headers=self.headers,
                      auth=self.auth,
                      attempts=self.attempts)

        self.task.add(request, ResponseHandle.ERROR, ResponseHandle.DONE)
        request.add_map('200', self.handle_success)
        return request

    def poster(self):
        request = Post(self.url,
                       headers=self.headers,
                       payload=self.payload,
                       auth=self.auth,
                       attempts=self.attempts)

        self.task.add(request, ResponseHandle.ERROR, ResponseHandle.DONE)
        request.add_map('200', self.handle_success)
        return request

    def geturl(self, reference):
        """
        """

        urlparser = urlparse(reference)
        if not urlparser.scheme:
            return urljoin(
                '%s://%s' % (self.urlparser.scheme, self.urlparser.hostname),
                reference)
        return reference

    def next(self, reference):
        self.url = self.geturl(reference)
        self.urlparser = urlparse(self.url)

        if self.method == 'get':
            return self.fetcher()
        return self.poster()

    def run(self, dom):
        """
        Implement your rules here.
        """

        pass
Exemple #18
0
def setup(con, msg):
    Stdout(con)
    Stdin(con)
    con.dump(msg.encode('utf8'))
    xmap(con, DUMPED, lambda con: die('Msg dumped!'))
Exemple #19
0
 def handle_accept(self, server, ssock):
     self.ssock = ssock
     self.ssock.add_map(CLOSE, lambda ssock, err: die())
Exemple #20
0
class Miner(list):
    task    = Task()
    task.add_map(DONE, lambda task: die())
    task.start()

    def __init__(self, url, pool=None, 
        headers=HEADERS, method='get', payload={}, auth=()):
        self.pool      = pool
        self.url       = url
        self.urlparser = urlparse(url)
        self.headers   = headers
        self.method    = method
        self.payload   = payload
        self.auth      = auth
        self.encoding  = 'utf-8'
        self.response  = None

        super(list, self).__init__()
        self.expand()

    def expand(self):
        """
        No exception being raised.
        """
        try:
            self.create_connection()
        except Exception as excpt:
            print(excpt)

    def setup(self, response):
        data = response.fd.read()
        
        # Reset the fd so it can be reread later.
        response.fd.seek(0)

        type = response.headers.get('content-type', 
        'text/html; charset=%s' % self.encoding)

        params = cgi.parse_header(type)

        # Sets the encoding for later usage
        # in self.geturl for example.
        self.encoding = params[1]['charset']
        self.response = response
        data          = data.decode(self.encoding, 'ignore')
        self.build_dom(data)

    def build_dom(self, data):
        pass

    def create_connection(self):
        if self.method == 'get':
            return Fetcher(self) 
        return Poster(self)

    def geturl(self, reference):
        """
        """
        
        # It is necessary to encode back the url
        # because websnake get method inserts the host header
        # with the wrong encoding and some web servers wouldnt
        # accept it as valid header.
        reference = reference
        urlparser = urlparse(reference)
        url       = urljoin('%s://%s' % (self.urlparser.scheme, 
        self.urlparser.hostname), reference) \
        if not urlparser.scheme else reference
        return url

    def next(self, reference):
        self.url       = self.geturl(reference)
        self.urlparser = urlparse(self.url)
        self.expand()

    def run(self, dom):
        """
        Implement your rules here.
        """

        pass
Exemple #21
0
 def handle_accept(self, server, ssock):
     print('Accepted:', ssock)
     lose(ssock)
     lose(self.server)
     die()