aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2012-08-29 23:30:23 +0000
committerFlorian Dold <florian.dold@gmail.com>2012-08-29 23:30:23 +0000
commit04e201c146bd83f9c14a35202c4896acdbe1b9bb (patch)
tree53715a5491fcfbbe42b3a87dd0c35bec87b8a2e4
parent23aed377bd314368a523d09da5b2a2fcf4564d77 (diff)
downloadgnunet-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-xbin/gnunet-ext3
-rwxr-xr-xbin/gnunet-greeting10
-rwxr-xr-xbin/gnunet-service-greeting10
-rw-r--r--config/greeting.conf12
-rwxr-xr-xenvcfg6
-rw-r--r--src/org/gnunet/construct/MsgMap.txt4
-rw-r--r--src/org/gnunet/ext/GreetingBannedMessage.java16
-rw-r--r--src/org/gnunet/ext/GreetingClient.java59
-rw-r--r--src/org/gnunet/ext/GreetingRequestMessage.java17
-rw-r--r--src/org/gnunet/ext/GreetingResponseMessage.java16
-rw-r--r--src/org/gnunet/ext/GreetingService.java58
-rwxr-xr-xtools/update-msgtypes20
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 @@
5BASEDIR=`dirname $0`/.. 5BASEDIR=`dirname $0`/..
6 6
7source $BASEDIR/envcfg 7source $BASEDIR/envcfg
8CP="$BASEDIR/build/:$BASEDIR/lib/*:$GNUNET_JAVA_CLASSPATH:$GNUNET_JAVA_DEPS/*"
8 9
9java -ea -cp "$BASEDIR/build/:$BASEDIR/lib/*:$GNUNET_JAVA_CLASSPATH:$GNUNET_JAVA_DEPS/*" org.gnunet.ext.MyExt "$@" 10java -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
5BASEDIR=`dirname $0`/..
6
7source $BASEDIR/envcfg
8
9java -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
5BASEDIR=`dirname $0`/..
6
7source $BASEDIR/envcfg
8
9java -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]
2PORT = 3001
3HOSTNAME = localhost
4ACCEPT_FROM = 127.0.0.1
5# names that the greeting service won't greet!
6BANNED = "dold;Florian Dold"
7# message for banned entities
8BAN_MESSAGE = "%s, you are not welcome here!"
9BINARY = gnunet-service-greeting
10CONFIG = $DEFAULTCONFIG
11PIPECONTROL = YES
12OPTIONS = -LDEBUG
diff --git a/envcfg b/envcfg
index d982fc9..ae5e782 100755
--- a/envcfg
+++ b/envcfg
@@ -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
4GNUNET_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
5GNUNET_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
7GNUNET_JAVA_DEPS= # e.g. /home/<your-name>/gnunet-java/lib/ 8#GNUNET_JAVA_DEPS= # e.g. /home/<your-name>/gnunet-java/lib/
9GNUNET_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 @@
1org.gnunet.util.GnunetMessage$Body|42003=org.gnunet.ext.GreetingBannedMessage
2org.gnunet.util.GnunetMessage$Body|42002=org.gnunet.ext.GreetingResponseMessage
3org.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 @@
1package org.gnunet.ext;
2
3import org.gnunet.construct.UnionCase;
4import org.gnunet.construct.ZeroTerminatedString;
5import 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)
13public 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 @@
1package org.gnunet.ext;
2
3import org.gnunet.util.*;
4import org.gnunet.util.getopt.Argument;
5import org.gnunet.util.getopt.ArgumentAction;
6
7/**
8 * ...
9 *
10 * @author Florian Dold
11 */
12public 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 @@
1package org.gnunet.ext;
2
3import org.gnunet.construct.Union;
4import org.gnunet.construct.UnionCase;
5import org.gnunet.construct.ZeroTerminatedString;
6import 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)
14public 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 @@
1package org.gnunet.ext;
2
3import org.gnunet.construct.UnionCase;
4import org.gnunet.construct.ZeroTerminatedString;
5import 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)
13public 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 @@
1package org.gnunet.ext;
2
3import org.gnunet.util.RelativeTime;
4import org.gnunet.util.Server;
5import org.gnunet.util.Service;
6import org.gnunet.util.getopt.Argument;
7import org.gnunet.util.getopt.ArgumentAction;
8
9import javax.swing.*;
10import java.util.*;
11
12/**
13 * ...
14 *
15 * @author Florian Dold
16 */
17public 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
3BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/..
4SOURCES=$( mktemp "/tmp/gnunet-java-sources-XXX" )
5
6source $BASEDIR/envcfg
7
8CP="$BASEDIR/build/:$BASEDIR/lib/*:$GNUNET_JAVA_CLASSPATH:$GNUNET_JAVA_DEPS/*"
9
10# collect all source files
11find $BASEDIR/src/ $BASEDIR/test/ -name "*.java" > $SOURCES
12
13# run annotation processor
14javac -cp $CP -processor org.gnunet.construct.MessageIdAnnotationProcessor -proc:only -s src @$SOURCES
15
16if [ $? ] ; then
17 rm $SOURCES
18else
19 exit 1
20fi