コード例 #1
0
ファイル: sendMyIP.py プロジェクト: crotwell/dragrace
 async def initConnections(self, daliUpload):
     if self.verbose:
         print("initConnections...{}".format(daliUpload is not None))
     if self.daliUpload is None:
         # create a separate upload datalink
         #self.daliUpload = simpleDali.SocketDataLink(self.host, self.port)
         self.daliUpload = simpleDali.WebSocketDataLink(self.uri)
         self.daliUpload.verbose = False
         await self.authorize()
     else:
         await self.daliUpload.reconnect()
     serverId = await self.daliUpload.id(self.programname, self.username,
                                         self.processid, self.architecture)
     if self.verbose:
         print("Connect Upload: {}".format(serverId))
         serverInfo = await self.daliUpload.info("STATUS")
         print("Server Info: {}".format(serverInfo))
         infoDict = self.daliUpload.parseInfoStatus(serverInfo)
         for k, v in infoDict.items():
             if isinstance(v, dict):
                 print(k)
                 for k, v in v.items():
                     print("   {} = {}".format(k, v))
             else:
                 print("   {} = {}".format(k, v))
     return self.daliUpload
コード例 #2
0
ファイル: testDaliAuth.py プロジェクト: crotwell/dragrace
def doTest(loop, token):
    #dali = simpleDali.SocketDataLink(host, port)
    dali = simpleDali.WebSocketDataLink(uri, verbose=True)
    idTask = loop.create_task(
        dali.id(programname, username, processid, architecture))
    loop.run_until_complete(idTask)
    serverId = idTask.result()
    #serverId = await dali.id(programname, username, processid, architecture)
    print("Resp: {}".format(serverId))
    #serverInfo = yield from dali.info("STATUS")
    #print("Info: {} ".format(serverInfo.message))
    #serverInfo = yield from dali.info("STREAMS")
    #print("Info: {} ".format(serverInfo.message))
    # hptime = "1551313181711158"
    # print("Position after: {}  {:d}".format(hptime, int(hptime)))
    # pafter = yield from dali.positionAfterHPTime(hptime)
    # print("PacketId after: {} {}".format(pafter.type, pafter.value))
    # nextPacket = yield from dali.read(pafter.value)
    # print("next after: {} {} {}".format(nextPacket.type, nextPacket.dataStartTime, nextPacket.dataEndTime))
    # print("hptime round trip: {} {}".format(hptime, simpleDali.datetimeToHPTime(simpleDali.hptimeToDatetime(int(hptime)))))
    # nowTime = simpleDali.utcnowWithTz()
    # print("hptime now: {} {}".format(hptime, simpleDali.datetimeToHPTime(simpleDali.hptimeToDatetime(int(hptime)))))

    # test auth
    if True:
        authTask = loop.create_task(dali.auth(token))
        loop.run_until_complete(authTask)
        print("Auth Resp: {}".format(authTask.result()))

    if True:
        network = "XX"
        station = "TEST"
        location = "00"
        channel = "HNZ"
        starttime = simpleDali.utcnowWithTz()
        numsamples = 100
        sampleRate = 200
        shortData = array("h")  # shorts
        for i in range(numsamples):
            shortData.append(i)
        msh = simpleMiniseed.MiniseedHeader(network, station, location,
                                            channel, starttime, numsamples,
                                            sampleRate)
        msr = simpleMiniseed.MiniseedRecord(msh, shortData)
        print("before writeMSeed")
        sendTask = loop.create_task(dali.writeMSeed(msr))
        loop.run_until_complete(sendTask)
        print("writemseed resp {}".format(sendTask.result()))

    closeTask = loop.create_task(dali.close())
    loop.run_until_complete(closeTask)
コード例 #3
0
 async def initConnections(self, daliUpload):
     if self.daliUpload is None:
         # create a separate upload datalink
         #self.daliUpload = simpleDali.SocketDataLink(self.host, self.port)
         self.daliUpload = simpleDali.WebSocketDataLink(self.uri)
     else:
         self.daliUpload.reconnect()
     #daliUpload.verbose = True
     await self.authorize()
     serverId = await self.daliUpload.id(self.programname, self.username,
                                         self.processid, self.architecture)
     if self.verbose:
         print("Connect Upload: {}".format(serverId))
     return self.daliUpload
コード例 #4
0
async def doTest(loop):
    #dali = simpleDali.SocketDataLink(host, port)
    dali = simpleDali.WebSocketDataLink(uri)
    dali.verbose = True
    serverId = await dali.id(programname, username, processid, architecture)
    print("Resp: {}".format(serverId))
    serverInfo = await dali.info("STATUS")
    print("Info: {} ".format(serverInfo.message))
    #serverInfo = yield from dali.info("STREAMS")
    #print("Info: {} ".format(serverInfo.message))
    r = await dali.match(".*/MAXACC")
    #print("match() Resonse {}".format(r))

    begintime = datetime.utcnow() - timedelta(seconds=2)
    r = await dali.positionAfter(begintime)
    if r.type.startswith("ERROR"):
        print(
            "positionAfter() Resonse {}, ringserver might not know about these packets?"
            .format(r))
    else:
        print("positionAfter() Resonse m={}".format(r.message))
    r = await dali.stream()
    while (keepGoing):
        peakPacket = await dali.parseResponse()
        if not peakPacket.type == "PACKET":
            # might get an OK very first after stream
            print("parseResponse not a PACKET {} ".format(peakPacket))
        else:
            peakInfo = {}
            peakInfo = json.loads(peakPacket.data)
            #print(peakInfo)
            print("{} acceleration is {:7.5f} at {}".format(
                peakInfo["station"], peakInfo["maxacc"], peakInfo["end_time"]))
            peakInfo = {}

    dali.close()
コード例 #5
0
ファイル: channelStats.py プロジェクト: ebarth/scsn-utils
async def connection(loop):
    try:
        dali = simpleDali.WebSocketDataLink(uri)
        await dali.parseResponse()
    except Exception:
        dali = simpleDali.SocketDataLink(host, port)
    dali.verbose = True
    serverId = await dali.id(programname, username, processid, architecture)
    print("Resp: {}".format(serverId))
    serverInfo = await dali.info("STATUS")
    print("Info: {} ".format(serverInfo.message))
    print("File directory?")
    channelLoc = input()
    if channelLoc == '0':
        r = await dali.match("XX.XB08.00.HN./MSEED")
    else:
        r = await dali.match(channelLoc)

    begintime = datetime.utcnow() - timedelta(seconds=2)
    r = await dali.positionAfter(begintime)
    if r.type.startswith("ERROR"):
        print(
            "positionAfter() Resonse {}, ringserver might not know about these packets?"
            .format(r))
    else:
        print("positionAfter() Resonse m={}".format(r.message))
    r = await dali.stream()
    sys.stdout.flush()
    while (keepGoing):
        peakPacket = await dali.parseResponse()
        if not peakPacket.type == "PACKET":
            print("parseResponse not a PACKET {} ".format(peakPacket))
        else:
            peakInfo = {}
            devationValues = []
            squares = []
            peakInfo = simpleMiniseed.unpackMiniseedRecord(
                peakPacket.data).data
            channelX = simpleMiniseed.unpackMiniseedHeader(
                peakPacket.data).channel
            timestamp = simpleMiniseed.unpackMiniseedRecord(
                peakPacket.data).starttime()
            average = sum(peakInfo) / len(peakInfo)
            for x in range(len(peakInfo)):
                squares.append(peakInfo[x]**2)
                rms = math.sqrt(sum(squares) / len(peakInfo))
            for x in range(len(peakInfo)):
                devationValues.append((peakInfo[x] - average)**2)
            devation = math.sqrt(sum(devationValues) / (len(peakInfo) - 1))

            print('-========== Channel {} ==========-'.format(channelX))
            print('standard dev = {}'.format(devation))
            print('rms = {}'.format(rms))
            print('max value = {}'.format(max(peakInfo)))
            print('min value = {}'.format(min(peakInfo)))
            print('average = {}'.format(average))
            print('timestamp = {}'.format(timestamp))

            peakInfo = {}
        sys.stdout.flush()
    dali.close()
コード例 #6
0
ファイル: createToken.py プロジェクト: crotwell/dragrace
def main(argv):
    parser = argparse.ArgumentParser()
    parser.add_argument("-s",
                        dest="secretFile",
                        default="secret.key",
                        type=argparse.FileType('r'),
                        required=True,
                        help="secret key file, key on first line")
    parser.add_argument(
        "-p",
        dest="pattern",
        required=True,
        help="regular expression match pattern for WRITE, like 'XX_.*/MTRIG'")
    parser.add_argument("-u", dest="username", required=True, help="username")
    parser.add_argument("--em",
                        dest="expireMinutes",
                        type=int,
                        default=10,
                        help="expire time from now in minutes")
    parser.add_argument("--ed",
                        dest="expireDays",
                        type=int,
                        default=0,
                        help="expire time from now in days")
    parser.add_argument(
        "--verify",
        dest="verify",
        help=
        "verify by sending an authorization requst to the datalink server at the given uri"
    )

    parser.add_argument("-o",
                        dest="outputFile",
                        type=argparse.FileType('w'),
                        help="output token file, encoded token on first line")
    args = parser.parse_args(argv)

    secretKey = args.secretFile.readline().strip()
    token = simpleDali.encodeAuthToken(
        args.username,
        timedelta(days=args.expireDays, minutes=args.expireMinutes),
        args.pattern, secretKey)

    if args.outputFile is not None:
        args.outputFile.write(token.decode('utf-8'))
        args.outputFile.close()
    else:
        prettyPayload = json.dumps(simpleDali.decodeAuthToken(
            token, secretKey),
                                   indent=4,
                                   sort_keys=True)
        print("token payload as json: \n{}".format(prettyPayload))
        print("token: \n\n{}\n".format(token.decode('utf-8')))
        print("token expires in {}".format(
            simpleDali.timeUntilExpireToken(token)))

    if args.verify is not None:
        loop = asyncio.get_event_loop()
        #loop.set_debug(True)
        programname = "createToken.py"
        username = "******"
        processid = 0
        architecture = "python"
        dali = simpleDali.WebSocketDataLink(args.verify, verbose=True)
        idTask = loop.create_task(
            dali.id(programname, username, processid, architecture))
        loop.run_until_complete(idTask)
        serverId = idTask.result()
        print("Resp: {}".format(serverId))
        authTask = loop.create_task(dali.auth(token))
        loop.run_until_complete(authTask)
        print("Auth Resp: {}".format(authTask.result()))
        authTask = loop.create_task(dali.close())
        loop.run_until_complete(authTask)
        loop.close()