예제 #1
0
def main(argv):
    if len(argv) != 4:
        print "Usage: portscan_cg.py localhost 1 80"
        return 1

    host = argv[1]
    start = int(argv[2])
    end = int(argv[3])

    r = cg.Receiver()
    r[Result] = lambda m: m, cg.Message

    scanners = [cg.spawn(scan) for i in range(0, NUM_OF_WORKERS)]

    i = 0
    for port in range(start, end + 1):
        scanners[i] | (cg.self(), Target(host, port))
        i += 1
        if i == NUM_OF_WORKERS:
            i = 0

    port_count = end - start + 1
    ports = []
    j = 0
    while j != port_count:
        result = r.receive()
        j += 1
        if result.is_success:
            ports.append(result.port)

    ports.sort()
    for port in ports:
        print "Connected to port %s" % port

    return 0
예제 #2
0
 def testReset(self):
     # test that Receiver resets pointer back to front of mailbox after switching
     # to another process
     r1 = cg.Receiver()
     r1.addHandler(1, cg.self().send, "one")
     proc1 = cg.spawn(self.receive, r1)
     proc1.send(2)
     proc1.send(1)
     r = cg.Receiver()
     r.addHandler("one", lambda: "success")
     assert r.receive(1000) == "success"
     proc2 = cg.spawn(self.receive, r1)
     proc2.send(1)
     assert r.receive(1000) == "success"
     cg.exit(proc1, "kill")
     cg.exit(proc2, "kill")
예제 #3
0
    def test2(self):
        import candygram as cg
        import time

        def proc_func():
            r = cg.Receiver()
            r.addHandler("land shark", shut_door, cg.Message)
            r.addHandler("candygram", open_door, cg.Message)
            for message in r:
                print >> self.out, message

        def shut_door(name):
            return "Go Away " + name

        def open_door(name):
            return "Hello " + name

        proc = cg.spawn(proc_func)
        proc.send("land shark")
        proc.send("candygram")
        # Give the proc a chance to print its messages before termination:
        time.sleep(1)
        cg.exit(proc, "kill")
        # Assert print statements worked as advertised
        assert self.out.getvalue(
        ) == "Go Away land shark\n" "Hello candygram\n"
예제 #4
0
	def testReset(self):
		# test that Receiver resets pointer back to front of mailbox after switching
		# to another process
		r1 = cg.Receiver()
		r1.addHandler(1, cg.self().send, 'one')
		proc1 = cg.spawn(self.receive, r1)
		proc1.send(2)
		proc1.send(1)
		r = cg.Receiver()
		r.addHandler('one', lambda: 'success')
		self.assertEqual(r.receive(1000), 'success')
		proc2 = cg.spawn(self.receive, r1)
		proc2.send(1)
		self.assertEqual(r.receive(1000), 'success')
		cg.exit(proc1, 'kill')
		cg.exit(proc2, 'kill')
예제 #5
0
 def testMultiProc(self):
     r1 = cg.Receiver()
     r1.addHandler(1, cg.self().send, "one")
     proc1 = cg.spawn(self.receive, r1)
     proc2 = cg.spawn(self.receive, r1)
     proc1.send(1)
     proc2.send(1)
     r = cg.Receiver()
     r.addHandler("one", lambda: "success")
     assert r.receive(1000) == "success"
     assert r.receive(1000) == "success"
     proc3 = cg.spawn(self.receive, r1)
     proc3.send(1)
     assert r.receive(1000) == "success"
     cg.exit(proc1, "kill")
     cg.exit(proc2, "kill")
     cg.exit(proc3, "kill")
예제 #6
0
	def testSpawnMyProcess(self):
		proc = cg.spawn(echo, cg.self(), _processClass=MyProcess)
		self.assert_(isinstance(proc, MyProcess))
		proc.send('test')
		r = cg.Receiver()
		r.addHandler(cg.Any, lambda m: m, cg.Message)
		self.assertEqual(r.receive(), ('MyProcess', 'test'))
		cg.exit(proc, 'kill')
예제 #7
0
 def testSpawnMyProcess(self):
     proc = cg.spawn(echo, cg.self(), _processClass=MyProcess)
     assert isinstance(proc, MyProcess)
     proc.send("test")
     r = cg.Receiver()
     r.addHandler(cg.Any, lambda m: m, cg.Message)
     assert r.receive() == ("MyProcess", "test")
     cg.exit(proc, "kill")
예제 #8
0
	def testMultiProc(self):
		r1 = cg.Receiver()
		r1.addHandler(1, cg.self().send, 'one')
		proc1 = cg.spawn(self.receive, r1)
		proc2 = cg.spawn(self.receive, r1)
		proc1.send(1)
		proc2.send(1)
		r = cg.Receiver()
		r.addHandler('one', lambda: 'success')
		self.assertEqual(r.receive(1000), 'success')
		self.assertEqual(r.receive(1000), 'success')
		proc3 = cg.spawn(self.receive, r1)
		proc3.send(1)
		self.assertEqual(r.receive(1000), 'success')
		cg.exit(proc1, 'kill')
		cg.exit(proc2, 'kill')
		cg.exit(proc3, 'kill')
예제 #9
0
 def testSingleProc(self):
     r = cg.Receiver()
     r.addHandler(1, cg.self().send, "one")
     proc = cg.spawn(self.receive, r)
     proc.send(1)
     r = cg.Receiver()
     r.addHandler("one", lambda: "success")
     assert r.receive(1000) == "success"
     cg.exit(proc, "kill")
예제 #10
0
	def testSingleProc(self):
		r = cg.Receiver()
		r.addHandler(1, cg.self().send, 'one')
		proc = cg.spawn(self.receive, r)
		proc.send(1)
		r = cg.Receiver()
		r.addHandler('one', lambda: 'success')
		self.assertEqual(r.receive(1000), 'success')
		cg.exit(proc, 'kill')
예제 #11
0
		def test(dict):
			proc = cg.spawn(dict['s1'])
			proc.send('msg_a')
			proc.send('msg_x')
			proc.send('msg_b')
			proc.send('msg_c')
			proc.send('msg_y')
			proc.send('msg_h')
			proc.send('msg_i')
			time.sleep(PAUSE)
			self.assert_(proc.isAlive())
			self.assertEqual(len(proc._mailbox), 0)
			proc.send('msg_a')
			proc.send('msg_x')
			time.sleep(PAUSE)
			self.assertEqual(len(proc._mailbox), 2)
			cg.exit(proc, 'kill')
예제 #12
0
 def test(dict):
     proc = cg.spawn(dict["s1"])
     proc.send("msg_a")
     proc.send("msg_x")
     proc.send("msg_b")
     proc.send("msg_c")
     proc.send("msg_y")
     proc.send("msg_h")
     proc.send("msg_i")
     time.sleep(PAUSE)
     assert proc.isAlive()
     assert len(proc._mailbox) == 0
     proc.send("msg_a")
     proc.send("msg_x")
     time.sleep(PAUSE)
     assert len(proc._mailbox) == 2
     cg.exit(proc, "kill")
예제 #13
0
파일: wxprocess.py 프로젝트: pjz/candygram
def sampleSpawn():
	"""Start GUI event loop in separate process"""
	# Unique value used to acknowledge that the wx.App has been created:
	ack = object()
	# Unique value used to signal a receive() timeout:
	timeout = object()
	# Spawn a new wxProcess, calling mainLoop():
	proc = cg.spawn(mainLoop, cg.self(), ack, _processClass=wxProcess)
	# We wait for acknowledgement from the spawned process before proceeding,
	# since we should make sure that the wx.App has been instantiated before
	# allowing anyone to send messages to the process.
	r = cg.Receiver()
	r.addHandler(ack)
	# Wait at most 30 seconds.
	result = r.receive(30000, lambda: timeout)
	assert result is not timeout
	return proc
예제 #14
0
def sampleSpawn():
    """Start GUI event loop in separate process"""
    # Unique value used to acknowledge that the wx.App has been created:
    ack = object()
    # Unique value used to signal a receive() timeout:
    timeout = object()
    # Spawn a new wxProcess, calling mainLoop():
    proc = cg.spawn(mainLoop, cg.self(), ack, _processClass=wxProcess)
    # We wait for acknowledgement from the spawned process before proceeding,
    # since we should make sure that the wx.App has been instantiated before
    # allowing anyone to send messages to the process.
    r = cg.Receiver()
    r.addHandler(ack)
    # Wait at most 30 seconds.
    result = r.receive(30000, lambda: timeout)
    assert result is not timeout
    return proc
예제 #15
0
	def test2(self):
		import candygram as cg
		import time
		def proc_func():
			r = cg.Receiver()
			r.addHandler('land shark', shut_door, cg.Message)
			r.addHandler('candygram', open_door, cg.Message)
			for message in r:
				print >> self.out, message
		def shut_door(name):
			return 'Go Away ' + name
		def open_door(name):
			return 'Hello ' + name
		proc = cg.spawn(proc_func)
		proc.send('land shark')
		proc.send('candygram')
		# Give the proc a chance to print its messages before termination:
		time.sleep(1)
		cg.exit(proc, 'kill')
		# Assert print statements worked as advertised
		self.assertEqual(self.out.getvalue(),
				'Go Away land shark\n' \
				'Hello candygram\n')
예제 #16
0
        """ 将运行标志设成False """
        self.running = False

    def run(self):
        """ 线程的入口点 """
        #Register the handle functions for various messages:
        r = cg.Receiver()
        r.addHandler('increment', self.increment)
        r.addHandler((cg.Process, 'value'), self.sendVal, cg.Message)
        r.addHandler('stop', self.setStop)
        #断续处理新消息,直到被要求结束
        while self.running:
            r.receive()

#为了启动一个线程,要这样做
counter = cg.spawn(ExampleThread().run)
#为了处理counter线程的回应,需要一个Receiver对象,并且正确注册:
response = cg.Receiver()
response.addHandler((counter, int), lambda msg: msg[1], cg.Message)

#示例
counter.send('increment')
counter.send('increment')
#请求线程的当前值,并打印线程的回应
counter.send((cg.self(), 'value'))
print response.receive()
#告诉线程再递增一次
counter.send('increment')
#再次请求线程的当前值,并打印线程的回应
counter.send((cg.self(), 'value'))
print response.receive()
예제 #17
0
        self.running = False

    def run(self):
        """ 线程的入口点 """
        #Register the handle functions for various messages:
        r = cg.Receiver()
        r.addHandler('increment', self.increment)
        r.addHandler((cg.Process, 'value'), self.sendVal, cg.Message)
        r.addHandler('stop', self.setStop)
        #断续处理新消息,直到被要求结束
        while self.running:
            r.receive()


#为了启动一个线程,要这样做
counter = cg.spawn(ExampleThread().run)
#为了处理counter线程的回应,需要一个Receiver对象,并且正确注册:
response = cg.Receiver()
response.addHandler((counter, int), lambda msg: msg[1], cg.Message)

#示例
counter.send('increment')
counter.send('increment')
#请求线程的当前值,并打印线程的回应
counter.send((cg.self(), 'value'))
print response.receive()
#告诉线程再递增一次
counter.send('increment')
#再次请求线程的当前值,并打印线程的回应
counter.send((cg.self(), 'value'))
print response.receive()
예제 #18
0
    def run(self):
        """Entry point of thread."""
        # Register the handler functions for various messages:
        r = cg.Receiver()
        r.addHandler('increment', self.increment)
        r.addHandler((cg.Process, 'value'), self.sendVal, cg.Message)
        r.addHandler('stop', self.setStop)
        # Keep handling new messages until the stop flag is set.
        while not self.stop:
            r.receive()
        # end while


# Create new thread.
counter = cg.spawn(Thread().run)
# Define a receiver that will return the thread's response values:
response = cg.Receiver()
response.addHandler((counter, int), lambda msg: msg[1], cg.Message)
# Tell thread to increment twice.
counter.send('increment')
counter.send('increment')
# Request thread's current value.
counter.send((cg.self(), 'value'))
# Print the response
print response.receive()
# Tell thread to increment one more time.
counter.send('increment')
# And print it's current value.
counter.send((cg.self(), 'value'))
print response.receive()
예제 #19
0
    def run(self):
        """Entry point of thread."""
        # Register the handler functions for various messages:
        r = cg.Receiver()
        r.addHandler('increment', self.increment)
        r.addHandler((cg.Process, 'value'), self.sendVal, cg.Message)
        r.addHandler('stop', self.setStop)
        # Keep handling new messages until the stop flag is set.
        while not self.stop:
            r.receive()
        # end while


# Create new thread.
counter = cg.spawn(Thread().run)
# Define a receiver that will return the thread's response values:
response = cg.Receiver()
response.addHandler((counter, int), lambda msg: msg[1], cg.Message)
# Tell thread to increment twice.
counter.send('increment')
counter.send('increment')
# Request thread's current value.
counter.send((cg.self(), 'value'))
# Print the response
print response.receive()
# Tell thread to increment one more time.
counter.send('increment')
# And print it's current value.
counter.send((cg.self(), 'value'))
print response.receive()