From 7470fb45332d843c6250c703cb139ff89e90b030 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Thu, 11 Jun 2020 21:36:13 +0200 Subject: [PATCH] specify port iptables linux only --- .../connection/proxy/unix/LinuxRawIpProxyProvider.java | 4 ++-- .../proxy/windows/WindowsRawIpProxyProvider.java | 4 ++-- .../protocol/hostreplacer/ipmapping/IpMapper.java | 4 ++-- .../protocol/hostreplacer/ipmapping/LinuxIpMapper.java | 10 ++++++---- .../protocol/hostreplacer/ipmapping/MacIpMapper.java | 4 ++-- .../hostreplacer/ipmapping/WindowsIpMapper.java | 4 ++-- 6 files changed, 16 insertions(+), 14 deletions(-) diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/unix/LinuxRawIpProxyProvider.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/unix/LinuxRawIpProxyProvider.java index f8916a1..04ba160 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/unix/LinuxRawIpProxyProvider.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/unix/LinuxRawIpProxyProvider.java @@ -190,11 +190,11 @@ public class LinuxRawIpProxyProvider extends ProxyProvider { protected void maybeAddMapping() { ipMapper.enable(); - ipMapper.addMapping(proxy.getActual_domain()); + ipMapper.addMapping(proxy.getActual_domain(), proxy.getActual_port(), proxy.getIntercept_port()); } protected void maybeRemoveMapping() { - ipMapper.deleteMapping(proxy.getActual_domain()); + ipMapper.deleteMapping(proxy.getActual_domain(), proxy.getActual_port(), proxy.getIntercept_port()); } diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/windows/WindowsRawIpProxyProvider.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/windows/WindowsRawIpProxyProvider.java index 54d48d2..9d28d5d 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/windows/WindowsRawIpProxyProvider.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/windows/WindowsRawIpProxyProvider.java @@ -48,7 +48,7 @@ public class WindowsRawIpProxyProvider extends LinuxRawIpProxyProvider { hasMapped = true; if (isNoneConnected()) { ipMapper.enable(); - ipMapper.addMapping(proxy.getActual_domain()); + ipMapper.addMapping(proxy.getActual_domain(), proxy.getActual_port(), proxy.getIntercept_port()); } addMappingCache(); } @@ -60,7 +60,7 @@ public class WindowsRawIpProxyProvider extends LinuxRawIpProxyProvider { hasMapped = false; removeMappingCache(); if (isNoneConnected()) { - ipMapper.deleteMapping(proxy.getActual_domain()); + ipMapper.deleteMapping(proxy.getActual_domain(), proxy.getActual_port(), proxy.getIntercept_port()); } } } diff --git a/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/IpMapper.java b/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/IpMapper.java index e5eb9c2..3d3adc7 100644 --- a/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/IpMapper.java +++ b/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/IpMapper.java @@ -18,9 +18,9 @@ public abstract class IpMapper { abstract public void enable(); - abstract public void addMapping(String ip); + abstract public void addMapping(String ip, int listenport, int connectport); - abstract public void deleteMapping(String ip); + abstract public void deleteMapping(String ip, int listenport, int connectport); abstract public List getCurrentMappings(); diff --git a/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/LinuxIpMapper.java b/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/LinuxIpMapper.java index f7e1229..e5427a4 100644 --- a/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/LinuxIpMapper.java +++ b/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/LinuxIpMapper.java @@ -9,15 +9,17 @@ public class LinuxIpMapper extends IpMapper { } @Override - public void addMapping(String ip) { + public void addMapping(String ip, int listenport, int connectport) { runCommand("iptables", "-t", "nat", "-A", "OUTPUT", - "-p", "all", "-d", ip, "-j", "DNAT", "--to-destination", "127.0.0.1"); + "-p", "all", "-d", ip, "--dport", listenport+"", "-j", "DNAT", + "--to-destination", "127.0.0.1:"+connectport); } @Override - public void deleteMapping(String ip) { + public void deleteMapping(String ip, int listenport, int connectport) { runCommand("iptables", "-t", "nat", "-D", "OUTPUT", - "-p", "all", "-d", ip, "-j", "DNAT", "--to-destination", "127.0.0.1"); + "-p", "all", "-d", ip, "--dport", listenport+"", "-j", "DNAT", + "--to-destination", "127.0.0.1:"+connectport); } @Override diff --git a/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/MacIpMapper.java b/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/MacIpMapper.java index b22c4bf..4aad16d 100644 --- a/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/MacIpMapper.java +++ b/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/MacIpMapper.java @@ -10,12 +10,12 @@ public class MacIpMapper extends IpMapper { } @Override - public void addMapping(String ip) { + public void addMapping(String ip, int listenport, int connectport) { runCommand("ifconfig", "lo0", "alias", ip); } @Override - public void deleteMapping(String ip) { + public void deleteMapping(String ip, int listenport, int connectport) { runCommand("ifconfig", "lo0", "-alias", ip); } diff --git a/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/WindowsIpMapper.java b/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/WindowsIpMapper.java index fcf44ed..7cd8acf 100644 --- a/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/WindowsIpMapper.java +++ b/G-Earth/src/main/java/gearth/protocol/hostreplacer/ipmapping/WindowsIpMapper.java @@ -12,12 +12,12 @@ public class WindowsIpMapper extends IpMapper { } @Override - public void addMapping(String ip) { + public void addMapping(String ip, int listenport, int connectport) { runCommand("netsh", "interface", "ip", "add", "address", "\"Loopback\"", ip, "255.255.255.255"); } @Override - public void deleteMapping(String ip) { + public void deleteMapping(String ip, int listenport, int connectport) { runCommand("netsh", "interface", "ip", "delete", "address", "\"Loopback\"", ip); }