linux raw ip support

This commit is contained in:
sirjonasxx 2020-05-19 10:13:42 +02:00
parent dd548a4206
commit c24e1fb24e
5 changed files with 46 additions and 17 deletions

View File

@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.List;
// Temporary class for the sake of not getting nullpointers on linux&mac until they have an IpMapper as well
public class EmptyIpMapper implements IpMapper {
public class EmptyIpMapper extends IpMapper {
@Override
public void enable() {

View File

@ -1,16 +1,27 @@
package gearth.protocol.hostreplacer.ipmapping;
import java.io.IOException;
import java.util.List;
// always map to 127.0.0.1, same port
public interface IpMapper {
public abstract class IpMapper {
void enable();
void runCommand(String... args) {
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command(args);
try {
processBuilder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
void addMapping(String ip);
abstract public void enable();
void deleteMapping(String ip);
abstract public void addMapping(String ip);
List<String> getCurrentMappings();
abstract public void deleteMapping(String ip);
abstract public List<String> getCurrentMappings();
}

View File

@ -7,6 +7,7 @@ public class IpMapperFactory {
public static IpMapper get() {
if (OSValidator.isWindows()) return new WindowsIpMapper();
if (OSValidator.isUnix()) return new LinuxIpMapper();
return new EmptyIpMapper();
}

View File

@ -0,0 +1,27 @@
package gearth.protocol.hostreplacer.ipmapping;
import java.util.List;
public class LinuxIpMapper extends IpMapper {
@Override
public void enable() {
}
@Override
public void addMapping(String ip) {
runCommand("iptables", "-t", "nat", "-A", "OUTPUT",
"-p", "all", "-d", ip, "-j", "DNAT", "--to-destination", "127.0.0.1");
}
@Override
public void deleteMapping(String ip) {
runCommand("iptables", "-t", "nat", "-D", "OUTPUT",
"-p", "all", "-d", ip, "-j", "DNAT", "--to-destination", "127.0.0.1");
}
@Override
public List<String> getCurrentMappings() {
return null;
}
}

View File

@ -4,17 +4,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class WindowsIpMapper implements IpMapper {
private void runCommand(String... args) {
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command(args);
try {
processBuilder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
public class WindowsIpMapper extends IpMapper {
@Override
public void enable() {