[triplea] 03/03: some fixes for upnp library

Scott Sheridan Howard showard at alioth.debian.org
Thu Oct 10 17:58:39 UTC 2013


This is an automated email from the git hooks/post-receive script.

showard pushed a commit to branch master
in repository triplea.

commit 1788a5790cbee0b5bd7cd6202587b93397b5b2dc
Author: Scott Howard <showard314 at gmail.com>
Date:   Thu Oct 10 13:57:22 2013 -0400

    some fixes for upnp library
---
 debian/patches/UPNP_FTBFS.patch       |   13 ++
 debian/patches/launcher_scripts.patch |   10 +-
 debian/patches/not                    |  319 +++++++++++++++++++++++++++++++++
 debian/rules                          |    5 +-
 debian/source/include-binaries        |    2 +
 5 files changed, 342 insertions(+), 7 deletions(-)

diff --git a/debian/patches/UPNP_FTBFS.patch b/debian/patches/UPNP_FTBFS.patch
new file mode 100644
index 0000000..08d6a02
--- /dev/null
+++ b/debian/patches/UPNP_FTBFS.patch
@@ -0,0 +1,13 @@
+Index: triplea/src/games/strategy/net/UniversalPlugAndPlanHelper.java
+===================================================================
+--- triplea.orig/src/games/strategy/net/UniversalPlugAndPlanHelper.java	2013-05-08 21:23:04.298608496 -0400
++++ triplea/src/games/strategy/net/UniversalPlugAndPlanHelper.java	2013-05-08 21:23:32.342609162 -0400
+@@ -211,7 +211,7 @@
+ 		boolean mapped = false;
+ 		try
+ 		{
+-			mapped = m_device.addPortMapping("TripleA Game Hosting", "TCP", null, externalPort, m_local.getHostAddress(), internalPort, 0);
++			mapped = m_device.addPortMapping("TripleA Game Hosting", "TCP", 0, externalPort, m_local.getHostAddress(), internalPort, 0);
+ 		} catch (final IOException e)
+ 		{
+ 			System.out.println("Port Mapping Failed! Please try to Forward Ports manually! \r\n " + e.getMessage());
diff --git a/debian/patches/launcher_scripts.patch b/debian/patches/launcher_scripts.patch
index 627d875..0745943 100644
--- a/debian/patches/launcher_scripts.patch
+++ b/debian/patches/launcher_scripts.patch
@@ -3,8 +3,8 @@ Author: Scott Howard <showard at debian.org>
 
 Index: triplea/run-server.sh
 ===================================================================
---- triplea.orig/run-server.sh	2012-06-10 15:09:39.000000000 -0400
-+++ triplea/run-server.sh	2012-12-05 21:24:54.560929551 -0500
+--- triplea.orig/run-server.sh	2013-05-07 15:23:20.507122766 -0400
++++ triplea/run-server.sh	2013-05-07 15:23:20.487122766 -0400
 @@ -1,2 +1,3 @@
 -cd $(dirname $0)
 +#!/bin/sh
@@ -12,8 +12,8 @@ Index: triplea/run-server.sh
  java -server  -Xmx192m -classpath bin/triplea.jar:lib/derby_10_1_2.jar -Dtriplea.lobby.port=3303 -Dtriplea.lobby.console=true  games.strategy.engine.lobby.server.LobbyServer 
 Index: triplea/triplea_unix.sh
 ===================================================================
---- triplea.orig/triplea_unix.sh	2012-12-05 21:03:27.164935807 -0500
-+++ triplea/triplea_unix.sh	2012-12-05 21:24:54.560929551 -0500
+--- triplea.orig/triplea_unix.sh	2013-05-07 15:23:20.507122766 -0400
++++ triplea/triplea_unix.sh	2013-05-07 15:23:20.487122766 -0400
 @@ -7,8 +7,7 @@
  exit
  fi
@@ -23,4 +23,4 @@ Index: triplea/triplea_unix.sh
 +cd /usr/share/triplea
  
  
- java -Xmx640m -cp bin/patch.jar:bin/triplea.jar games.strategy.engine.framework.GameRunner
+ java -Xmx768m -cp bin/patch.jar:bin/triplea.jar games.strategy.engine.framework.GameRunner
diff --git a/debian/patches/not b/debian/patches/not
new file mode 100644
index 0000000..8004e49
--- /dev/null
+++ b/debian/patches/not
@@ -0,0 +1,319 @@
+Description: <short summary of the patch>
+ TODO: Put a short summary on the line above and replace this paragraph
+ with a longer explanation of this change. Complete the meta-information
+ with other relevant fields (see below for details). To make it easier, the
+ information below has been extracted from the changelog. Adjust it or drop
+ it.
+ .
+ triplea (1.6.1.4-1) unstable; urgency=low
+ .
+   * Merge from experimental to unstable
+   * New upstream release
+Author: Scott Howard <showard at debian.org>
+
+---
+The information above should follow the Patch Tagging Guidelines, please
+checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
+are templates for supplementary fields that you might want to add:
+
+Origin: <vendor|upstream|other>, <url of original patch>
+Bug: <url in upstream bugtracker>
+Bug-Debian: http://bugs.debian.org/<bugnumber>
+Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
+Forwarded: <no|not-needed|url proving that it has been forwarded>
+Reviewed-By: <name and email of someone who approved the patch>
+Last-Update: <YYYY-MM-DD>
+
+--- /dev/null
++++ triplea-1.6.1.4/home/showard/debian-packaging/triplea-debian-git/triplea/src/games/strategy/net/UniversalPlugAndPlanHelper.java
+@@ -0,0 +1,290 @@
++package games.strategy.net;
++
++import java.awt.Component;
++import java.io.IOException;
++import java.io.InputStream;
++import java.net.Inet4Address;
++import java.net.InetAddress;
++import java.net.NetworkInterface;
++import java.net.ServerSocket;
++import java.net.Socket;
++import java.net.SocketException;
++import java.net.SocketTimeoutException;
++import java.util.Enumeration;
++
++import javax.swing.JOptionPane;
++import javax.swing.JScrollPane;
++import javax.swing.JTextArea;
++
++import net.sbbi.upnp.impls.InternetGatewayDevice;
++import net.sbbi.upnp.messages.UPNPResponseException;
++
++/**
++ * 
++ * @author veqryn
++ * 
++ */
++public class UniversalPlugAndPlanHelper
++{
++	private int m_port = 3300;
++	private InetAddress m_local = null;
++	private InternetGatewayDevice m_device = null;
++	private static UniversalPlugAndPlanHelper s_lastInstance = null;
++	
++	public static void main(final String[] args)
++	{
++		UniversalPlugAndPlanHelper.attemptAddingPortForwarding(null, 3300);
++	}
++	
++	public UniversalPlugAndPlanHelper(final int port)
++	{
++		m_port = port;
++	}
++	
++	public static UniversalPlugAndPlanHelper getLastInstance()
++	{
++		return s_lastInstance;
++	}
++	
++	public static boolean attemptAddingPortForwarding(final Component parent, final int port)
++	{
++		final UniversalPlugAndPlanHelper upnpHelper = new UniversalPlugAndPlanHelper(port);
++		final JTextArea textArea = new JTextArea();
++		textArea.setEditable(false);
++		final String error = upnpHelper.attemptAddingPortForwarding(textArea);
++		textArea.append("\r\n \r\n \r\n \r\n");
++		final boolean worked = (error == null);
++		final String textResult;
++		if (worked)
++		{
++			textResult = "It looks like it worked.  This program will close now.\r\n"
++						+ "Please try hosting again, to see if it 'really' worked.\r\n"
++						+ "Remember that your firewall must allow TripleA, or else you still won't be able to host.\r\n";
++		}
++		else
++		{
++			textResult = "It appears TripleA failed to set your Port Forwarding.\r\n"
++						+ "Please make sure UPnP is turned on, in your router's settings.\r\n\r\n"
++						+ "If you still can not get TripleA to set them correctly, then you must set them yourself!\r\n"
++						+ "See 'How To Host...' in the help menu, at the top of the lobby screen in order to manually set them.\r\n\r\n"
++						+ "\r\nThis program will close now.\r\n";
++		}
++		System.out.println(textResult);
++		textArea.append(textResult);
++		JOptionPane.showMessageDialog(parent, new JScrollPane(textArea), "Setting Port Forwarding with UPnP", JOptionPane.INFORMATION_MESSAGE);
++		return worked;
++	}
++	
++	public String attemptAddingPortForwarding(final JTextArea textArea)
++	{
++		System.out.println("Starting Universal Plug and Play (UPnP) add port forward map script.");
++		textArea.append("Starting Universal Plug and Play (UPnP) add port forward map script.\r\n");
++		final String localError = findLocalInetAddress();
++		if (localError != null)
++		{
++			textArea.append(localError + "\r\n");
++			return localError;
++		}
++		textArea.append("Found Local IP/Inet Address to use: " + m_local + "\r\n");
++		final String gatewayError = findInternetGatewayDevice();
++		if (gatewayError != null)
++		{
++			textArea.append(gatewayError + "\r\n");
++			return gatewayError;
++		}
++		textArea.append("Internet Gateway Device (normally a router) found!\r\n");
++		final String addPortError = addPortForwardUPNP();
++		if (addPortError != null)
++		{
++			textArea.append(addPortError + "\r\n");
++			return addPortError;
++		}
++		textArea.append("Port Forwarding map added successfully.\r\n");
++		/*
++		final String testError = testConnection();
++		if (testError != null)
++		{
++			textArea.append(testError);
++			return testError;
++		}
++		textArea.append("Test Connection made!");
++		*/
++		s_lastInstance = this;
++		return null;
++	}
++	
++	public String testConnection()
++	{
++		System.out.println("Waiting for a connection");
++		final int internalPort = m_port;
++		boolean connection = false;
++		// boolean bytes = false;
++		ServerSocket ss = null;
++		try
++		{
++			ss = new ServerSocket(internalPort);
++			ss.setSoTimeout(5000);
++			try
++			{
++				final Socket s = ss.accept();
++				connection = true;
++				final InputStream in = s.getInputStream();
++				while (in.available() > 0)
++				{
++					System.out.println("byte : " + in.read());
++					// bytes = true;
++				}
++			} catch (final SocketTimeoutException stoe)
++			{
++				System.out.println("Connection Test Timed Out. Port Forward may still work anyway.");
++				return "Connection Test Timed Out. Port Forward may still work anyway.";
++			} finally
++			{
++				ss.close();
++			}
++		} catch (final IOException e)
++		{
++			System.out.println("Connection Test Timed Out. Port Forward may still work anyway. \r\n " + e.getMessage());
++			return "Connection Test Timed Out. Port Forward may still work anyway. \r\n " + e.getMessage();
++		} finally
++		{
++			if (ss != null)
++				try
++				{
++					ss.close();
++				} catch (final IOException e)
++				{
++					e.printStackTrace();
++				}
++		}
++		if (!connection)
++		{
++			System.out.println("Connection Test Timed Out. Port Forward may still work anyway.");
++			return "Connection Test Timed Out. Port Forward may still work anyway.";
++		}
++		System.out.println("Connection made!");
++		return null;
++	}
++	
++	public String removePortForwardUPNP()
++	{
++		System.out.println("Attempting to remove Port Forwarding");
++		final int externalPort = m_port;
++		boolean removed = false;
++		try
++		{
++			removed = m_device.deletePortMapping(null, externalPort, "TCP");
++		} catch (final IOException e)
++		{
++			System.out.println("Failed to remove port mapping! \r\n " + e.getMessage());
++			return "Failed to remove port mapping! \r\n " + e.getMessage();
++		} catch (final UPNPResponseException e)
++		{
++			System.out.println("Failed to remove port mapping! \r\n " + e.getMessage());
++			return "Failed to remove port mapping! \r\n " + e.getMessage();
++		}
++		if (!removed)
++		{
++			System.out.println("Failed to remove port mapping!");
++			return "Failed to remove port mapping!";
++		}
++		System.out.println("Success. Port Forwarding map removed.");
++		return null;
++	}
++	
++	private String addPortForwardUPNP()
++	{
++		final int internalPort = m_port;
++		final int externalPort = m_port;
++		// System.out.println("Attempting to map port on " + m_device.msgFactory.service.serviceType + " service");
++		System.out.print("Adding mapping from ");
++		try
++		{
++			System.out.print(m_device.getExternalIPAddress());
++		} catch (final UPNPResponseException e1)
++		{
++		} catch (final IOException e1)
++		{
++		}
++		System.out.println(":" + externalPort);
++		System.out.println("To " + m_local.getHostAddress() + ":" + internalPort);
++		boolean mapped = false;
++		try
++		{
++			mapped = m_device.addPortMapping("TripleA Game Hosting", "TCP", null, externalPort, m_local.getHostAddress(), internalPort, 0);
++		} catch (final IOException e)
++		{
++			System.out.println("Port Mapping Failed! Please try to Forward Ports manually! \r\n " + e.getMessage());
++			return "Port Mapping Failed! Please try to Forward Ports manually! \r\n " + e.getMessage();
++		} catch (final UPNPResponseException e)
++		{
++			System.out.println("Port Mapping Failed! Please try to Forward Ports manually! \r\n " + e.getMessage());
++			return "Port Mapping Failed! Please try to Forward Ports manually! \r\n " + e.getMessage();
++		}
++		if (!mapped)
++		{
++			System.out.println("Port Mapping Failed! Please try to Forward Ports manually!");
++			return "Port Mapping Failed! Please try to Forward Ports manually!";
++		}
++		System.out.println("Success. Port Forwarding map added.");
++		return null;
++	}
++	
++	private String findInternetGatewayDevice()
++	{
++		System.out.println("Attempting to find internet gateway device (normally a router).");
++		InternetGatewayDevice[] devices = null;
++		try
++		{
++			devices = InternetGatewayDevice.getDevices(2000);
++		} catch (final IOException e)
++		{
++			System.out.println("Router/Device UPnP turned off. Or no Routers/Devices found.  Please make sure your router's UPNP is turned on! \r\n " + e.getMessage());
++			return "Router/Device UPnP turned off. Or no Routers/Devices found.  Please make sure your router's UPNP is turned on! \r\n " + e.getMessage();
++		}
++		if (devices == null || 1 > devices.length)
++		{
++			System.out.println("Router/Device UPnP turned off. Or no Routers/Devices found.  Please make sure your router's UPNP is turned on!");
++			return "Router/Device UPnP turned off. Or no Routers/Devices found.  Please make sure your router's UPNP is turned on!";
++		}
++		m_device = devices[0];
++		System.out.println("Device found!");
++		return null;
++	}
++	
++	private String findLocalInetAddress()
++	{
++		m_local = null;
++		System.out.println("Attempting to find local ip/inet address.");
++		try
++		{
++			final Enumeration<NetworkInterface> ifaces = NetworkInterface.getNetworkInterfaces();
++			while (ifaces.hasMoreElements() && m_local == null)
++			{
++				final NetworkInterface iface = ifaces.nextElement();
++				final Enumeration<InetAddress> addresses = iface.getInetAddresses();
++				
++				while (addresses.hasMoreElements() && m_local == null)
++				{
++					final InetAddress addr = addresses.nextElement();
++					if (addr instanceof Inet4Address && !addr.isLoopbackAddress())
++					{
++						m_local = addr;
++					}
++				}
++			}
++		} catch (final SocketException e)
++		{
++			m_local = null;
++			System.out.println("Could not determine local ip/inet address!");
++			return "Could not determine local ip/inet address! \r\n " + e.getMessage();
++		}
++		if (m_local == null)
++		{
++			System.out.println("Could not determine local ip/inet address!");
++			return "Could not determine local ip/inet address!";
++		}
++		System.out.println("Local Address to use: " + m_local);
++		return null;
++	}
++}
diff --git a/debian/rules b/debian/rules
index b4717e0..dfec5ad 100755
--- a/debian/rules
+++ b/debian/rules
@@ -5,7 +5,7 @@
 export JAVA_HOME=/usr/lib/jvm/default-java
 
 # Put depended upon jars in here
-export CLASSPATH=/usr/share/java/commons-httpclient.jar:/usr/share/java/commons-logging.jar:/usr/share/java/commons-codec.jar:/usr/share/java/substance.jar:/usr/share/java/laf-widget.jar:/usr/share/java/gnumail.jar
+export CLASSPATH=/usr/share/java/commons-httpclient.jar:/usr/share/java/commons-logging.jar:/usr/share/java/commons-codec.jar:/usr/share/java/substance.jar:/usr/share/java/laf-widget.jar:/usr/share/java/gnumail.jar:/usr/share/java/upnp.jar
 
 %:
 	dh --with javahelper $@
@@ -37,7 +37,8 @@ override_dh_auto_configure:
 	cp icons/triplea_icon.png debian/icons/256x256/apps/triplea.png
 	convert icons/triplea_icon.png -resize 32x32 debian/triplea.xpm
 
-
+override_dh_builddeb:
+	dh_builddeb -- -Zxz -z9
 
 get-orig-source:
 	uscan --rename --repack --download-current-version
diff --git a/debian/source/include-binaries b/debian/source/include-binaries
new file mode 100644
index 0000000..88fae6c
--- /dev/null
+++ b/debian/source/include-binaries
@@ -0,0 +1,2 @@
+lib/upnp-1.0.4.jar
+lib/upnp.jar

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/triplea.git



More information about the pkg-java-commits mailing list