示例#1
0
文件: dixlibaprs.py 项目: iddq/DIXPRS
    def __init__(self, port):
        self.soctx = None
        self.rxdtq = Queue.Queue()
        self.txdtq = Queue.Queue()
        self.evntq = Queue.Queue()
        self.bcntx = None
        self.axhdr = None
        self.srvid = ''
        self.srvpr = 0
        self.srvfl = ''
        self.connr = 0

        try:
            self.soctx = dixdrvudp.UDPTx(port)
            self.soctx.settimeout(0.001)
        except socket.error:
            self.soctx = None
        return
示例#2
0
    def start(self):
        self.dbcon = sqlite3.connect(':memory:')
        self.dbcur = self.dbcon.cursor()

        self.dbcur.execute(
            '''CREATE TABLE traffic (tm real, ln integer, rxtx integer)''')
        self.dbcon.commit()

        if self.udptx <> None:
            try:
                self.soctx = dixdrvudp.UDPTx(self.udptx)

            except socket.error:
                pass

        if self.hwtyp == 'KISS':
            self.drvpr = multiprocessing.Process(target=dixpkiss.procmain, args=(self.prtid, (self.udpmn, \
            self.udpgw, self.udptx, self.udpcc), (self.hwcfg[0], self.hwcfg[1], self.hwcfg[2]), \
            self.ptton, self.debug, cvars.get('genCFGcall')))

            self.drvpr.start()

        elif self.hwtyp == 'AGWPE':
            self.drvpr = multiprocessing.Process(target=dixpagwpe.procmain, args=(self.prtid, (self.udpmn, \
            self.udpgw, self.udptx, self.udpcc), (self.hwcfg[0], self.hwcfg[1], self.hwcfg[2], self.hwcfg[3]), \
            self.ptton, self.debug, cvars.get('genCFGcall')))

            self.drvpr.start()

        elif self.hwtyp == "AX25":
            self.drvpr = multiprocessing.Process(target=dixpax25.procmain, args=(self.prtid, (self.udpmn, \
            self.udpgw, self.udptx, self.udpcc), (self.hwcfg[0], self.hwcfg[1]), self.ptton, self.debug, cvars.get('genCFGcall')))

            self.drvpr.start()

        return
示例#3
0
文件: dixpigate.py 项目: iddq/DIXPRS
def procmain(udpbase, servr, prtnr, ruser, filtr, versn):
    #################################################
    # Default settings
    #################################################

    #################################################
    # Initialize variables

    igate = IGATECON()

    igate.servr = servr
    igate.prtnr = prtnr
    igate.ruser = ruser
    igate.filtr = filtr
    igate.versn = versn

    # Setup UDP listening port

    socrx = dixdrvudp.UDPRx(udpbase + 1)
    socrx.settimeout(1.0)

    # Setup UDP sending port

    soctx = dixdrvudp.UDPTx(udpbase)

    # Setup server connection

    igate.phase = 0

    # Main program loop

    while True:
        try:
            # Wait for data or command
            # This is the highest priority event

            v = socrx.receive()

            t1 = time.time()

            # Process packets received from UDP command/data port

            if v <> None:
                if True:

                    #if v[1][0] == '127.0.0.1':
                    cmd = v[0]

                    # Rf->Igate gating data
                    if cmd == 'R':
                        w = v[3:]

                        # Unwrap encapsulated frames for gating
                        while True:
                            k = w.find(':')

                            if k < 0:
                                break

                            try:
                                id = w[k + 1]
                            except IndexError:
                                break

                            if id <> '}':
                                break

                            w = w[k + 2:]

                        # Is it a generic query?
                        k = w.find(':')

                        if k > 6:
                            try:
                                id = w[k + 1]
                                head = w[:k]
                                tail = w[k + 1:]

                                if tail[0] <> '?':
                                    if head.find('TCPIP') < 0 and head.find('TCPXX') < 0 \
                                         and head.find('NOGATE') < 0  and head.find('RFONLY') < 0:

                                        r2 = head + ',qAR,%s:' % (
                                            igate.ruser) + tail

                                        # Send r2 to igate
                                        igate.send(r2)

                            except IndexError:
                                pass

                    # Data frame received
                    elif cmd == 'D':
                        igate.send(v[1:])

                    # Termination command received
                    elif cmd == 'Q':
                        break

            else:
                # Do lower priority job

                # Send status / life beat signal to main program
                soctx.send('SI0' + "%d|%s|%d" %
                           (igate.phase, igate.srvid, igate.connr))

                # Check Internet incoming data server
                while True:
                    igate.engine()
                    r = igate.receive()

                    # Process received lines from server
                    if r <> None:
                        soctx.send('RI0' + r)
                    else:
                        break

        except KeyboardInterrupt:
            pass

    print "igate terminating"
    # Shutting down
    socrx.close()
    soctx.close()
    igate.stop()
示例#4
0
    return w


def procmain(dev, (udptx, udpgw, udprx, udpcc), (axdev, ctrl), ptt, debug,
             mycall):

    # Open UDP ports

    socgw = None
    socrx = None
    soctx = None
    soccc = []

    if udpgw <> 0:
        socgw = dixdrvudp.UDPTx(udpgw)
        socgw.settimeout(0.01)

    if udprx <> 0:
        socrx = dixdrvudp.UDPRx(udprx)
        socrx.settimeout(0.01)

    if udptx <> 0:
        soctx = dixdrvudp.UDPTx(udptx)
        soctx.settimeout(0.01)

    for i in range(0, len(udpcc)):
        soccc.append(socket.socket(socket.AF_INET, socket.SOCK_DGRAM))
        soccc[i].settimeout(0.1)

    # Initialize AX25 port