diff options
Diffstat (limited to 'src/main/java/org/gnunet/gns/GnsTool.java')
-rw-r--r-- | src/main/java/org/gnunet/gns/GnsTool.java | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/main/java/org/gnunet/gns/GnsTool.java b/src/main/java/org/gnunet/gns/GnsTool.java new file mode 100644 index 0000000..81cd6d3 --- /dev/null +++ b/src/main/java/org/gnunet/gns/GnsTool.java | |||
@@ -0,0 +1,81 @@ | |||
1 | package org.gnunet.gns; | ||
2 | |||
3 | |||
4 | import org.gnunet.gns.callbacks.LookupResultProcessor; | ||
5 | import org.gnunet.identity.Identity; | ||
6 | import org.gnunet.identity.IdentityCallback; | ||
7 | import org.gnunet.util.Program; | ||
8 | import org.gnunet.util.getopt.Argument; | ||
9 | import org.gnunet.util.getopt.ArgumentAction; | ||
10 | |||
11 | public class GnsTool { | ||
12 | public static void main(String[] args) { | ||
13 | int ret = new Program(args) { | ||
14 | @Argument( | ||
15 | shortname = "u", | ||
16 | longname = "lookup", | ||
17 | action = ArgumentAction.STORE_STRING, | ||
18 | description = "Lookup a record for the given name") | ||
19 | String name; | ||
20 | |||
21 | @Argument( | ||
22 | shortname = "z", | ||
23 | longname = "zone", | ||
24 | action = ArgumentAction.STORE_STRING, | ||
25 | description = "Lookup a record in the given zone") | ||
26 | String zone = "master-zone"; | ||
27 | |||
28 | @Argument( | ||
29 | shortname = "t", | ||
30 | longname = "type", | ||
31 | action = ArgumentAction.STORE_STRING, | ||
32 | description = "Lookup a record of the given type (defaut: A)") | ||
33 | String type = "A"; | ||
34 | |||
35 | @Override | ||
36 | protected void run() { | ||
37 | if (null == name) { | ||
38 | System.err.println("no name given"); | ||
39 | setReturnValue(1); | ||
40 | return; | ||
41 | } | ||
42 | |||
43 | final long typeId = GnsRecord.getIdFromString(type); | ||
44 | if (typeId < 0) { | ||
45 | System.err.println(String.format("type '%s' not known", type)); | ||
46 | setReturnValue(1); | ||
47 | return; | ||
48 | } | ||
49 | |||
50 | System.out.println("looking for records of type id " + typeId); | ||
51 | |||
52 | Identity.lookup(getConfiguration(), zone, new IdentityCallback() { | ||
53 | @Override | ||
54 | public void onEgo(Identity.Ego ego) { | ||
55 | System.out.println("looking in zone " + ego.getPublicKey()); | ||
56 | final Gns gns = new Gns(getConfiguration()); | ||
57 | gns.lookup(name, ego.getPublicKey(), typeId, false, null, new LookupResultProcessor() { | ||
58 | @Override | ||
59 | public void process(GnsRecord[] records) { | ||
60 | System.out.println("got " + records.length + " records"); | ||
61 | gns.disconnect(); | ||
62 | for (GnsRecord record : records) { | ||
63 | String s = record.getRecordData().asRecordString(); | ||
64 | System.out.println( | ||
65 | String.format("Type: %s, Value: %s", record.recordType, s)); | ||
66 | } | ||
67 | } | ||
68 | }); | ||
69 | } | ||
70 | |||
71 | @Override | ||
72 | public void onError(String errorMessage) { | ||
73 | System.err.println("could not look up zone ego '" + name + "': " + errorMessage); | ||
74 | } | ||
75 | }); | ||
76 | |||
77 | } | ||
78 | }.start(); | ||
79 | System.exit(ret); | ||
80 | } | ||
81 | } | ||