Annotation of embedaddon/miniupnpc/java/JavaBridgeTest.java, revision 1.1.1.3

1.1       misho       1: import java.nio.ByteBuffer;
1.1.1.2   misho       2: import java.nio.IntBuffer;
                      3: 
1.1       misho       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: 
1.1.1.3 ! misho      32:         devlist = miniupnpc.upnpDiscover(UPNP_DELAY, (String) null, (String) null, 0, 0, (byte)2, IntBuffer.allocate(1));
1.1       misho      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),
1.1.1.3 ! misho      75:                         args[0], args[1], null, intClient, intPort,
1.1       misho      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 = " +
1.1.1.2   misho      80:                         new String(intClient.array()) + ":" + new String(intPort.array()) +
1.1       misho      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>