File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / miniupnpd / miniupnpc / java / JavaBridgeTest.java
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Sep 27 11:25:11 2023 UTC (18 months, 2 weeks ago) by misho
Branches: miniupnpd, MAIN
CVS tags: v2_3_3p0, HEAD
Version 2.3.3p0

    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>