Exemplo n.º 1
0
            print("send msg", send_msg)
            sock.sendto(send_msg, address)

        battle_manager.dispatch_receive_data(data, send_func)

        # # 如果没有需要发的,就什么都不发
        # if len(msg_datas) == 0:
        #     return
        # client_manager.broadcast_to_clients(send_func)

        # for address in all_clients:
        #    for send_msg in send_msgs:
        #        send_msg = send_msg.encode()
        #        print("send msg", send_msg)
        #        sock.sendto(send_msg, address)


battle_manager = BattleManager()
queue_manager = QueueManager()
client_manager = ClientManager()
frame_manager = FrameManager()

if __name__ == '__main__':
    from socketserver import ThreadingUDPServer

    from test_package.demo import test_import
    test_import()
    frame_manager.start_step()
    server = ThreadingUDPServer(('', 20000), TimeHandler)
    server.serve_forever()
Exemplo n.º 2
0
 def __init__(self, port=53, lib={}, debug_mode=0, dns_addr=''):
     DNSServer.lib = lib
     self.port = port
     DNSServer.debug_mode = debug_mode
     DNSServer.dns_addr = dns_addr
     self.server = ThreadingUDPServer((HOST_IP, self.port), DNSHandler)
Exemplo n.º 3
0
                            FileType    TEXT NOT NULL
                        );''')
        conn.execute(
            'INSERT INTO FILES (FileName, FileType) VALUES (:file_name, :file_type)',
            {
                "file_name": 'test_text.txt',
                "file_type": 'text'
            })
        conn.commit()
        conn.execute(
            'INSERT INTO FILES (FileName, FileType) VALUES (:file_name, :file_type)',
            {
                "file_name": 'hello.bin',
                "file_type": 'binary'
            })
        conn.commit()
    conn.close()

    ThreadingUDPServer.allow_reuse_address = True
    ThreadingUDPServer.daemon_threads = True
    with ThreadingUDPServer((host, port), ThreadedServerHandler) as server:
        try:
            print(
                f'\n{datetime.now()}',
                f'\nStarting UDP server at {host}:{port}\nQuit the server with CONTROL-C.\n'
            )
            server.serve_forever()
        except KeyboardInterrupt:
            print('')
            server.shutdown()
Exemplo n.º 4
0
        default="Empty")

    parser.add_argument("--port",
                        help="set listen port",
                        action="store",
                        type=int,
                        default=53)
    parser.add_argument("--debug",
                        help="enable debug logging",
                        action="store_true")
    args = parser.parse_args()

    if str(args.ip).upper() == "ENV":
        args.ip = environ.get("PUB_IP")

    if args.debug:
        print('IP: %s Port: %s' % (args.ip, args.port))

    if environ.get("DNS_ALLOW_ALL") == "YES" or args.whitelist == "ALL":
        allow_all = True
    else:
        if args.whitelist != "Empty":
            with open(args.whitelist) as f:
                w_list.extend(f.read().splitlines())
    try:
        udp_sock = ThreadingUDPServer(("0.0.0.0", args.port), PacketHandler)
        udp_sock.serve_forever()
    except KeyboardInterrupt:
        if args.debug:
            print("done.")
Exemplo n.º 5
0
 def init_udp(self):
     """Init and start UDP server"""
     server = ThreadingUDPServer(('0.0.0.0', self.conf['port']),
                                 ServerSearchHandler)
     server.app = self
     return server
Exemplo n.º 6
0
        self.rcode = bitslice(byte2, 4, 4)
        self.qdcount = recvData[4:6]
        self.ancount = recvData[6:8]
        self.nscount = recvData[8:10]
        self.arcount = recvData[10:12]


class question(object):
    def parse(self, recvData):
        length = len(recvData)
        self.qname = recvData[12:length - 4]
        self.qtype = recvData[length - 4:length - 2]
        self.qclass = recvData[length - 2:]


class answer(object):
    def response(self, qname, ip):
        self.name = qname
        self.type = 1
        self.aclass = 1
        self.ttl = 600
        self.rdlength = 4
        ip = ip.split('.', 3)
        self.rdata = int(ip[0]) * (1 << 24) + int(ip[1]) * (1 << 16) + int(
            ip[2]) * (1 << 8) + int(ip[3])


if __name__ == '__main__':
    serv = ThreadingUDPServer(('127.0.0.1', 53), myserver)
    serv.serve_forever()
Exemplo n.º 7
0
from socketserver import BaseRequestHandler, ThreadingUDPServer
from base_datos import clientes
from sys import argv, exit

if len(argv) != 2:
    print("you are idiot")
    exit(1)


class QueHacerUdp(BaseRequestHandler):
    def handle(self):
        #print("Conexion de {}".format(self.client_address))
        data, conn = self.request
        conn.sendto("501\n".encode(), self.client_address)
        data = data.decode().split(";")
        cuenta = int(data[0]) - 3
        cobro = int(data[1]) + 3
        user = clientes.obtener_key(cuenta)
        if clientes.retire_saldo(user, cobro):
            conn.sendto("True\n".encode(), self.client_address)
        else:
            conn.sendto("False\n".encode(), self.client_address)

    #def decodificar(self)


ip = str(argv[1])
udp = ThreadingUDPServer((ip, 6689), QueHacerUdp)
udp.serve_forever()
Exemplo n.º 8
0
 def __init__(self, ip, port):
     self.server = ThreadingUDPServer((ip, port), UdpHandler)
Exemplo n.º 9
0
with sqlite3.connect('botnet.sqlite3') as db:
    db.execute("""
        CREATE TABLE IF NOT EXISTS ping (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            datetime DATETIME,
            host TEXT,
            port INTEGER)""")


class UDPHandler(BaseRequestHandler):
    def handle(self):
        host, port = self.client_address
        data = json.loads(self.request[0])
        log.info(f'Received ping from {host}:{port}/UDP')

        with sqlite3.connect('botnet.sqlite3') as db:
            db.execute(
                'INSERT INTO ping VALUES (NULL, :datetime, :host, :port)', {
                    'datetime': datetime.now(tz=timezone.utc),
                    'host': data['host'],
                    'port': data['port'],
                })


if __name__ == '__main__':
    log.info(f'Listening for pings on {HOST}:{PORT}/UDP...')

    listener = ThreadingUDPServer((HOST, PORT), UDPHandler)
    listener.serve_forever()
Exemplo n.º 10
0
def run_server() -> None:
    """
    Run a threaded UDP server that logs DNS packets with detail
    """
    server = ThreadingUDPServer(HOST_PORT, DNSUDPHandler)
    server.serve_forever()
Exemplo n.º 11
0
To do so the socketserver library can be used
"""
from socketserver import BaseRequestHandler, UDPServer, ThreadingUDPServer
import time


class TimeHandler(BaseRequestHandler):
    def handle(self) -> None:
        print("Got connection from", self.client_address)

        # Get message and client socket
        msg, sock = self.request
        resp = time.ctime()
        sock.sendto(resp.encode("ascii"), self.client_address)


"""
if __name__ == "__main__":
    serv = UDPServer(("", 20000), TimeHandler)
    serv.serve_forever()


A typical UDP server receives an incoming datagram (message) + client address.
If the server responds it sends a datagram back  - for this sendto() and
recvfrom() should be used. """

# Create a ThreadingUDPServer
if __name__ == "__main__":
    serv = ThreadingUDPServer(("", 20000), TimeHandler)
    serv.serve_forever()
Exemplo n.º 12
0
import sys
import time
from socketserver import DatagramRequestHandler, ThreadingUDPServer


def upper(msg):
    time.sleep(1)  # simulates a complex job
    return msg.upper()


class UpperHandler(DatagramRequestHandler):
    def __init__(self, *args):
        self.n = 0
        DatagramRequestHandler.__init__(self, *args)

    def handle(self):
        self.n += 1
        print("New request: {} {}".format(self.n, self.client_address))
        msg = self.rfile.read()
        self.wfile.write(upper(msg))


if len(sys.argv) != 2:
    print(__doc__.format(sys.argv[0]))
    sys.exit(1)

server = ThreadingUDPServer(('', int(sys.argv[1])),
                            UpperHandler)
server.serve_forever()
Exemplo n.º 13
0
        if request_type == 'gen_key':
            encrypted_tgs_mandate = params['encrypted_tgs_mandate']
            tgs_mandate = simplejson.loads(Fernet(TGS_KEY).decrypt(encrypted_tgs_mandate.encode('utf-8')))
            tgs_session_key = tgs_mandate['tgs_session_key']
            if self.validate_mandate(tgs_mandate):
                session_key = Fernet.generate_key()
                DATABASE[username] = (session_key, time())
                encrypted_session_key = Fernet(tgs_session_key).encrypt(session_key)
                sock.sendto(simplejson.dumps({'encrypted_ts_session_key': encrypted_session_key}).encode('utf-8'),
                            self.client_address)
            else:
                sock.close()
        elif request_type == 'basic':
            key, key_creation_time = DATABASE[username]
            if time() - key_creation_time < 86400:
                encrypted_data = params['encrypted_data'].encode('utf-8')
                data = Fernet(key).decrypt(encrypted_data)

                user_ip, _ = self.client_address
                print('Request from {ip}: {data}'.format(ip=user_ip, data=data))
                sock.sendto(simplejson.dumps({'result': 'data is recieved'}).encode('utf-8'),
                            self.client_address)
            else:
                sock.close()


if __name__ == '__main__':
    serv = ThreadingUDPServer(('', 20002), TSHandler)
    serv.serve_forever()
Exemplo n.º 14
0
# -*- coding: utf-8 -*-

from socketserver import BaseRequestHandler, UDPServer, ThreadingUDPServer
import time

class TimeHandler(BaseRequestHandler):
    def handle(self):
        print("connected to", self.client_address)
        msg, sock = self.request 
        resp = time.ctime()
        sock.sendto(resp.encode('ascii'), self.client_address)

if __name__ == '__main__':
    #serv = UDPServer(('localhost', 8086), TimeHandler)
    
    serv = ThreadingUDPServer(('localhost', 8086), TimeHandler) 
    serv.serve_forever()