parse incoming datagrams

pull/4/head
Zlatin Balevsky 2018-07-10 05:11:37 +01:00
parent 945d4a6731
commit 5491596e6d
1 changed files with 20 additions and 5 deletions

View File

@ -1,5 +1,6 @@
package com.muwire.hostcache package com.muwire.hostcache
import groovy.json.JsonSlurper
import net.i2p.client.I2PClientFactory import net.i2p.client.I2PClientFactory
import net.i2p.client.I2PSession import net.i2p.client.I2PSession
import net.i2p.client.I2PSessionMuxedListener import net.i2p.client.I2PSessionMuxedListener
@ -56,6 +57,8 @@ public class HostCache {
} }
static class Listener implements I2PSessionMuxedListener { static class Listener implements I2PSessionMuxedListener {
final def json = new JsonSlurper()
void reportAbuse(I2PSession sesison, int severity) {} void reportAbuse(I2PSession sesison, int severity) {}
void disconnected(I2PSession session) { void disconnected(I2PSession session) {
println "ERROR: session disconnected, exiting" println "ERROR: session disconnected, exiting"
@ -76,9 +79,21 @@ public class HostCache {
try { try {
dissector.loadI2PDatagram(payload) dissector.loadI2PDatagram(payload)
def sender = dissector.getSender() def sender = dissector.getSender()
def query = dissector.getPayload() println "INFO: Received something from ${sender}"
println "INFO: from ${sender.toBase64()} received query ${query}"
} catch (DataFormatException dfe) { payload = dissector.getPayload()
payload = json.parse(payload)
switch(payload.type) {
case "Ping" :
println "Ping"
break
case "CrawlerPong":
println "CrawlerPong"
break
default:
println "WARN: Unexpected message type ${payload.type}, dropping"
}
} catch (Exception dfe) {
println "WARN: invalid datagram ${dfe}" println "WARN: invalid datagram ${dfe}"
} }
} }