Annotation of embedaddon/miniupnpd/miniupnpc/java/JavaBridgeTest.java, revision 1.1.1.1
1.1 misho 1: import java.nio.ByteBuffer;
2: import java.nio.IntBuffer;
3:
4: import fr.free.miniupnp.*;
5:
6: /**
7: *
8: * @author syuu
9: */
10: public class JavaBridgeTest {
11: public static void main(String[] args) {
12: int UPNP_DELAY = 2000;
13: MiniupnpcLibrary miniupnpc = MiniupnpcLibrary.INSTANCE;
14: UPNPDev devlist = null;
15: UPNPUrls urls = new UPNPUrls();
16: IGDdatas data = new IGDdatas();
17: ByteBuffer lanaddr = ByteBuffer.allocate(16);
18: ByteBuffer intClient = ByteBuffer.allocate(16);
19: ByteBuffer intPort = ByteBuffer.allocate(6);
20: ByteBuffer desc = ByteBuffer.allocate(80);
21: ByteBuffer enabled = ByteBuffer.allocate(4);
22: ByteBuffer leaseDuration = ByteBuffer.allocate(16);
23: int ret;
24: int i;
25:
26: if(args.length < 2) {
27: System.err.println("Usage : java [...] JavaBridgeTest port protocol");
28: System.out.println(" port is numeric, protocol is TCP or UDP");
29: return;
30: }
31:
32: devlist = miniupnpc.upnpDiscover(UPNP_DELAY, (String) null, (String) null, 0, 0, (byte)2, IntBuffer.allocate(1));
33: if (devlist != null) {
34: System.out.println("List of UPNP devices found on the network :");
35: for (UPNPDev device = devlist; device != null; device = device.pNext) {
36: System.out.println("desc: " + device.descURL.getString(0) + " st: " + device.st.getString(0));
37: }
38: if ((i = miniupnpc.UPNP_GetValidIGD(devlist, urls, data, lanaddr, 16)) != 0) {
39: switch (i) {
40: case 1:
41: System.out.println("Found valid IGD : " + urls.controlURL.getString(0));
42: break;
43: case 2:
44: System.out.println("Found a (not connected?) IGD : " + urls.controlURL.getString(0));
45: System.out.println("Trying to continue anyway");
46: break;
47: case 3:
48: System.out.println("UPnP device found. Is it an IGD ? : " + urls.controlURL.getString(0));
49: System.out.println("Trying to continue anyway");
50: break;
51: default:
52: System.out.println("Found device (igd ?) : " + urls.controlURL.getString(0));
53: System.out.println("Trying to continue anyway");
54:
55: }
56: System.out.println("Local LAN ip address : " + new String(lanaddr.array()));
57: ByteBuffer externalAddress = ByteBuffer.allocate(16);
58: miniupnpc.UPNP_GetExternalIPAddress(urls.controlURL.getString(0),
59: new String(data.first.servicetype), externalAddress);
60: System.out.println("ExternalIPAddress = " + new String(externalAddress.array()));
61: ret = miniupnpc.UPNP_AddPortMapping(
62: urls.controlURL.getString(0), // controlURL
63: new String(data.first.servicetype), // servicetype
64: args[0], // external Port
65: args[0], // internal Port
66: new String(lanaddr.array()), // internal client
67: "added via miniupnpc/JAVA !", // description
68: args[1], // protocol UDP or TCP
69: null, // remote host (useless)
70: "0"); // leaseDuration
71: if (ret != MiniupnpcLibrary.UPNPCOMMAND_SUCCESS)
72: System.out.println("AddPortMapping() failed with code " + ret);
73: ret = miniupnpc.UPNP_GetSpecificPortMappingEntry(
74: urls.controlURL.getString(0), new String(data.first.servicetype),
75: args[0], args[1], null, intClient, intPort,
76: desc, enabled, leaseDuration);
77: if (ret != MiniupnpcLibrary.UPNPCOMMAND_SUCCESS)
78: System.out.println("GetSpecificPortMappingEntry() failed with code " + ret);
79: System.out.println("InternalIP:Port = " +
80: new String(intClient.array()) + ":" + new String(intPort.array()) +
81: " (" + new String(desc.array()) + ")");
82: ret = miniupnpc.UPNP_DeletePortMapping(
83: urls.controlURL.getString(0),
84: new String(data.first.servicetype),
85: args[0], args[1], null);
86: if (ret != MiniupnpcLibrary.UPNPCOMMAND_SUCCESS)
87: System.out.println("DelPortMapping() failed with code " + ret);
88: miniupnpc.FreeUPNPUrls(urls);
89: } else {
90: System.out.println("No valid UPNP Internet Gateway Device found.");
91: }
92: miniupnpc.freeUPNPDevlist(devlist);
93: } else {
94: System.out.println("No IGD UPnP Device found on the network !\n");
95: }
96: }
97: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>