diff options
author | Florian Dold <florian.dold@gmail.com> | 2012-08-29 23:30:23 +0000 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2012-08-29 23:30:23 +0000 |
commit | 04e201c146bd83f9c14a35202c4896acdbe1b9bb (patch) | |
tree | 53715a5491fcfbbe42b3a87dd0c35bec87b8a2e4 | |
parent | 23aed377bd314368a523d09da5b2a2fcf4564d77 (diff) | |
download | gnunet-java-ext-04e201c146bd83f9c14a35202c4896acdbe1b9bb.tar.gz gnunet-java-ext-04e201c146bd83f9c14a35202c4896acdbe1b9bb.zip |
now works with the latest gnunet-java again, added example service and corresponding client
-rwxr-xr-x | bin/gnunet-ext | 3 | ||||
-rwxr-xr-x | bin/gnunet-greeting | 10 | ||||
-rwxr-xr-x | bin/gnunet-service-greeting | 10 | ||||
-rw-r--r-- | config/greeting.conf | 12 | ||||
-rwxr-xr-x | envcfg | 6 | ||||
-rw-r--r-- | src/org/gnunet/construct/MsgMap.txt | 4 | ||||
-rw-r--r-- | src/org/gnunet/ext/GreetingBannedMessage.java | 16 | ||||
-rw-r--r-- | src/org/gnunet/ext/GreetingClient.java | 59 | ||||
-rw-r--r-- | src/org/gnunet/ext/GreetingRequestMessage.java | 17 | ||||
-rw-r--r-- | src/org/gnunet/ext/GreetingResponseMessage.java | 16 | ||||
-rw-r--r-- | src/org/gnunet/ext/GreetingService.java | 58 | ||||
-rwxr-xr-x | tools/update-msgtypes | 20 |
12 files changed, 228 insertions, 3 deletions
diff --git a/bin/gnunet-ext b/bin/gnunet-ext index e0146f6..8b9a826 100755 --- a/bin/gnunet-ext +++ b/bin/gnunet-ext | |||
@@ -5,6 +5,7 @@ | |||
5 | BASEDIR=`dirname $0`/.. | 5 | BASEDIR=`dirname $0`/.. |
6 | 6 | ||
7 | source $BASEDIR/envcfg | 7 | source $BASEDIR/envcfg |
8 | CP="$BASEDIR/build/:$BASEDIR/lib/*:$GNUNET_JAVA_CLASSPATH:$GNUNET_JAVA_DEPS/*" | ||
8 | 9 | ||
9 | java -ea -cp "$BASEDIR/build/:$BASEDIR/lib/*:$GNUNET_JAVA_CLASSPATH:$GNUNET_JAVA_DEPS/*" org.gnunet.ext.MyExt "$@" | 10 | java -ea -cp "$CP" org.gnunet.ext.MyExt "$@" |
10 | 11 | ||
diff --git a/bin/gnunet-greeting b/bin/gnunet-greeting new file mode 100755 index 0000000..b814b53 --- /dev/null +++ b/bin/gnunet-greeting | |||
@@ -0,0 +1,10 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | # Template for a gnunet-java extension. Modify to fit your needs. | ||
4 | |||
5 | BASEDIR=`dirname $0`/.. | ||
6 | |||
7 | source $BASEDIR/envcfg | ||
8 | |||
9 | java -ea -cp "$BASEDIR/build/:$BASEDIR/lib/*:$GNUNET_JAVA_CLASSPATH:$GNUNET_JAVA_DEPS/*" org.gnunet.ext.GreetingClient "$@" | ||
10 | |||
diff --git a/bin/gnunet-service-greeting b/bin/gnunet-service-greeting new file mode 100755 index 0000000..7b2dede --- /dev/null +++ b/bin/gnunet-service-greeting | |||
@@ -0,0 +1,10 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | # Template for a gnunet-java extension. Modify to fit your needs. | ||
4 | |||
5 | BASEDIR=`dirname $0`/.. | ||
6 | |||
7 | source $BASEDIR/envcfg | ||
8 | |||
9 | java -ea -cp "$BASEDIR/build/:$BASEDIR/lib/*:$GNUNET_JAVA_CLASSPATH:$GNUNET_JAVA_DEPS/*" org.gnunet.ext.GreetingService "$@" | ||
10 | |||
diff --git a/config/greeting.conf b/config/greeting.conf new file mode 100644 index 0000000..d4a01c5 --- /dev/null +++ b/config/greeting.conf | |||
@@ -0,0 +1,12 @@ | |||
1 | [greeting] | ||
2 | PORT = 3001 | ||
3 | HOSTNAME = localhost | ||
4 | ACCEPT_FROM = 127.0.0.1 | ||
5 | # names that the greeting service won't greet! | ||
6 | BANNED = "dold;Florian Dold" | ||
7 | # message for banned entities | ||
8 | BAN_MESSAGE = "%s, you are not welcome here!" | ||
9 | BINARY = gnunet-service-greeting | ||
10 | CONFIG = $DEFAULTCONFIG | ||
11 | PIPECONTROL = YES | ||
12 | OPTIONS = -LDEBUG | ||
@@ -1,7 +1,9 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | 2 | ||
3 | # location the the gnunet-java-jar | 3 | # location the the gnunet-java-jar |
4 | GNUNET_JAVA_CLASSPATH= # e.g. /home/<your-name>/gnunet-java/gnunet-java.jar | 4 | #GNUNET_JAVA_CLASSPATH= # e.g. /home/<your-name>/gnunet-java/gnunet-java.jar |
5 | GNUNET_JAVA_CLASSPATH="/home/dold/svn/gnunet-java/gnunet-java.jar" | ||
5 | 6 | ||
6 | # location of gnunet-java's lib directory | 7 | # location of gnunet-java's lib directory |
7 | GNUNET_JAVA_DEPS= # e.g. /home/<your-name>/gnunet-java/lib/ | 8 | #GNUNET_JAVA_DEPS= # e.g. /home/<your-name>/gnunet-java/lib/ |
9 | GNUNET_JAVA_DEPS="/home/dold/svn/gnunet-java/lib/" | ||
diff --git a/src/org/gnunet/construct/MsgMap.txt b/src/org/gnunet/construct/MsgMap.txt new file mode 100644 index 0000000..0a8e7dc --- /dev/null +++ b/src/org/gnunet/construct/MsgMap.txt | |||
@@ -0,0 +1,4 @@ | |||
1 | org.gnunet.util.GnunetMessage$Body|42003=org.gnunet.ext.GreetingBannedMessage | ||
2 | org.gnunet.util.GnunetMessage$Body|42002=org.gnunet.ext.GreetingResponseMessage | ||
3 | org.gnunet.util.GnunetMessage$Body|42001=org.gnunet.ext.GreetingRequestMessage | ||
4 | # generated 2012/08/29 02:16:37 | ||
diff --git a/src/org/gnunet/ext/GreetingBannedMessage.java b/src/org/gnunet/ext/GreetingBannedMessage.java new file mode 100644 index 0000000..06a5289 --- /dev/null +++ b/src/org/gnunet/ext/GreetingBannedMessage.java | |||
@@ -0,0 +1,16 @@ | |||
1 | package org.gnunet.ext; | ||
2 | |||
3 | import org.gnunet.construct.UnionCase; | ||
4 | import org.gnunet.construct.ZeroTerminatedString; | ||
5 | import org.gnunet.util.GnunetMessage; | ||
6 | |||
7 | /** | ||
8 | * Message sent by the server when the requested name for the greeting is banned. | ||
9 | * | ||
10 | * @author Florian Dold | ||
11 | */ | ||
12 | @UnionCase(42003) | ||
13 | public class GreetingBannedMessage implements GnunetMessage.Body { | ||
14 | @ZeroTerminatedString | ||
15 | public String banText; | ||
16 | } | ||
diff --git a/src/org/gnunet/ext/GreetingClient.java b/src/org/gnunet/ext/GreetingClient.java new file mode 100644 index 0000000..c390b0f --- /dev/null +++ b/src/org/gnunet/ext/GreetingClient.java | |||
@@ -0,0 +1,59 @@ | |||
1 | package org.gnunet.ext; | ||
2 | |||
3 | import org.gnunet.util.*; | ||
4 | import org.gnunet.util.getopt.Argument; | ||
5 | import org.gnunet.util.getopt.ArgumentAction; | ||
6 | |||
7 | /** | ||
8 | * ... | ||
9 | * | ||
10 | * @author Florian Dold | ||
11 | */ | ||
12 | public class GreetingClient { | ||
13 | public static void main(String[] args) { | ||
14 | new Program(args) { | ||
15 | @Argument( | ||
16 | action = ArgumentAction.STORE_STRING, | ||
17 | argumentName = "name", | ||
18 | description = "name to greet", | ||
19 | shortname = "n", | ||
20 | longname = "name") | ||
21 | String name; | ||
22 | |||
23 | public void run() { | ||
24 | if (name == null) { | ||
25 | System.out.println("no name given"); | ||
26 | System.exit(2); | ||
27 | } | ||
28 | final Client client = new Client("greeting", getConfiguration()); | ||
29 | GreetingRequestMessage m = new GreetingRequestMessage(); | ||
30 | m.name = name; | ||
31 | client.transmitWhenReady(RelativeTime.SECOND, m, new Continuation() { | ||
32 | @Override | ||
33 | public void cont(boolean success) { | ||
34 | if (success) { | ||
35 | client.receive(RelativeTime.SECOND, new RunaboutMessageReceiver() { | ||
36 | public void visit(GreetingResponseMessage m) { | ||
37 | System.out.println("you were greeted:"); | ||
38 | System.out.println(m.greeting); | ||
39 | } | ||
40 | public void visit(GreetingBannedMessage m) { | ||
41 | System.out.println("you are banned:"); | ||
42 | System.out.println(m.banText); | ||
43 | } | ||
44 | @Override | ||
45 | public void handleError() { | ||
46 | System.out.println("could not receive from service"); | ||
47 | System.exit(1); | ||
48 | } | ||
49 | }); | ||
50 | } else { | ||
51 | System.out.println("could not send to service"); | ||
52 | System.exit(1); | ||
53 | } | ||
54 | } | ||
55 | }); | ||
56 | } | ||
57 | }.start(); | ||
58 | } | ||
59 | } | ||
diff --git a/src/org/gnunet/ext/GreetingRequestMessage.java b/src/org/gnunet/ext/GreetingRequestMessage.java new file mode 100644 index 0000000..eac18d5 --- /dev/null +++ b/src/org/gnunet/ext/GreetingRequestMessage.java | |||
@@ -0,0 +1,17 @@ | |||
1 | package org.gnunet.ext; | ||
2 | |||
3 | import org.gnunet.construct.Union; | ||
4 | import org.gnunet.construct.UnionCase; | ||
5 | import org.gnunet.construct.ZeroTerminatedString; | ||
6 | import org.gnunet.util.GnunetMessage; | ||
7 | |||
8 | /** | ||
9 | * Message to request a greeting from the greeting server. | ||
10 | * | ||
11 | * @author Florian Dold | ||
12 | */ | ||
13 | @UnionCase(42001) | ||
14 | public class GreetingRequestMessage implements GnunetMessage.Body { | ||
15 | @ZeroTerminatedString | ||
16 | public String name; | ||
17 | } | ||
diff --git a/src/org/gnunet/ext/GreetingResponseMessage.java b/src/org/gnunet/ext/GreetingResponseMessage.java new file mode 100644 index 0000000..89c463d --- /dev/null +++ b/src/org/gnunet/ext/GreetingResponseMessage.java | |||
@@ -0,0 +1,16 @@ | |||
1 | package org.gnunet.ext; | ||
2 | |||
3 | import org.gnunet.construct.UnionCase; | ||
4 | import org.gnunet.construct.ZeroTerminatedString; | ||
5 | import org.gnunet.util.GnunetMessage; | ||
6 | |||
7 | /** | ||
8 | * Response to a greeting request from a client, sent by the server if name is not banned. | ||
9 | * | ||
10 | * @author Florian Dold | ||
11 | */ | ||
12 | @UnionCase(42002) | ||
13 | public class GreetingResponseMessage implements GnunetMessage.Body { | ||
14 | @ZeroTerminatedString | ||
15 | public String greeting; | ||
16 | } | ||
diff --git a/src/org/gnunet/ext/GreetingService.java b/src/org/gnunet/ext/GreetingService.java new file mode 100644 index 0000000..4c917e6 --- /dev/null +++ b/src/org/gnunet/ext/GreetingService.java | |||
@@ -0,0 +1,58 @@ | |||
1 | package org.gnunet.ext; | ||
2 | |||
3 | import org.gnunet.util.RelativeTime; | ||
4 | import org.gnunet.util.Server; | ||
5 | import org.gnunet.util.Service; | ||
6 | import org.gnunet.util.getopt.Argument; | ||
7 | import org.gnunet.util.getopt.ArgumentAction; | ||
8 | |||
9 | import javax.swing.*; | ||
10 | import java.util.*; | ||
11 | |||
12 | /** | ||
13 | * ... | ||
14 | * | ||
15 | * @author Florian Dold | ||
16 | */ | ||
17 | public class GreetingService { | ||
18 | |||
19 | public static void main(String... argv) { | ||
20 | new Service("greeting", RelativeTime.FOREVER, true, argv) { | ||
21 | @Argument( | ||
22 | action = ArgumentAction.STORE_STRING, | ||
23 | argumentName = "GREETING_TEMPLATE", | ||
24 | description = "Template for the greeting, '%s' is substituted for the name!", | ||
25 | shortname = "g", | ||
26 | longname = "greeting") | ||
27 | String greetingTemplate = "Hello, %s"; | ||
28 | |||
29 | @Override | ||
30 | public void run() { | ||
31 | final String bannedStr = getConfiguration().getValueString("greeting", "BANNED"); | ||
32 | final String banMessage = getConfiguration().getValueString("greeting", "BAN_MESSAGE"); | ||
33 | final List<String> banned; | ||
34 | if (bannedStr != null) { | ||
35 | banned = Arrays.asList(bannedStr.split(";")); | ||
36 | } else { | ||
37 | banned = Collections.emptyList(); | ||
38 | } | ||
39 | |||
40 | getServer().setHandler(new Server.MessageRunabout() { | ||
41 | public void visit(GreetingRequestMessage rm) { | ||
42 | if (banned.contains(rm.name.trim())) { | ||
43 | GreetingBannedMessage m = new GreetingBannedMessage(); | ||
44 | m.banText = banMessage == null ? "" : banMessage.replace("%s", rm.name); | ||
45 | getSender().transmitWhenReady(RelativeTime.FOREVER, m, null); | ||
46 | } else { | ||
47 | GreetingResponseMessage m = new GreetingResponseMessage(); | ||
48 | m.greeting = greetingTemplate.replace("%s", rm.name); | ||
49 | getSender().transmitWhenReady(RelativeTime.FOREVER, m, null); | ||
50 | } | ||
51 | } | ||
52 | }); | ||
53 | |||
54 | } | ||
55 | }.start(); | ||
56 | |||
57 | } | ||
58 | } | ||
diff --git a/tools/update-msgtypes b/tools/update-msgtypes new file mode 100755 index 0000000..a294ce5 --- /dev/null +++ b/tools/update-msgtypes | |||
@@ -0,0 +1,20 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/.. | ||
4 | SOURCES=$( mktemp "/tmp/gnunet-java-sources-XXX" ) | ||
5 | |||
6 | source $BASEDIR/envcfg | ||
7 | |||
8 | CP="$BASEDIR/build/:$BASEDIR/lib/*:$GNUNET_JAVA_CLASSPATH:$GNUNET_JAVA_DEPS/*" | ||
9 | |||
10 | # collect all source files | ||
11 | find $BASEDIR/src/ $BASEDIR/test/ -name "*.java" > $SOURCES | ||
12 | |||
13 | # run annotation processor | ||
14 | javac -cp $CP -processor org.gnunet.construct.MessageIdAnnotationProcessor -proc:only -s src @$SOURCES | ||
15 | |||
16 | if [ $? ] ; then | ||
17 | rm $SOURCES | ||
18 | else | ||
19 | exit 1 | ||
20 | fi | ||