From 649fea0f298a02d5463c4e9336ed6b40c0489caa Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Fri, 29 Jun 2018 10:39:03 +0200 Subject: [PATCH] windows hosts file bug fi --- src/main/protocol/HConnection.java | 10 +++-- .../protocol/hostreplacer/HostReplacer.java | 4 +- .../hostreplacer/UnixHostReplacer.java | 44 ++++++++++--------- 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/main/protocol/HConnection.java b/src/main/protocol/HConnection.java index 43f4e78..f801fda 100644 --- a/src/main/protocol/HConnection.java +++ b/src/main/protocol/HConnection.java @@ -229,7 +229,7 @@ public class HConnection { handler.act(buffer); if (!datastream[0] && handler.isDataStream()) { clientHostAndPort = client.getInetAddress().getHostAddress() + ":" + client.getPort(); - System.out.println(clientHostAndPort); + if (DEBUG) System.out.println(clientHostAndPort); datastream[0] = true; setState(State.CONNECTED); onConnect(); @@ -359,15 +359,19 @@ public class HConnection { } private void addToHosts() { + String[] lines = new String[input_domain.size()]; for (int i = 0; i < input_domain.size(); i++) { - hostsReplacer.addRedirect(input_domain.get(i), "127.0.0." + (i+1)); + lines[i] = ("127.0.0." + (i+1)) + " " + input_domain.get(i); } + hostsReplacer.addRedirect(lines); hostRedirected = true; } private void removeFromHosts(){ + String[] lines = new String[input_domain.size()]; for (int i = 0; i < input_domain.size(); i++) { - hostsReplacer.removeRedirect(input_domain.get(i), "127.0.0." + (i+1)); + lines[i] = ("127.0.0." + (i+1)) + " " + input_domain.get(i); } + hostsReplacer.removeRedirect(lines); hostRedirected = false; } diff --git a/src/main/protocol/hostreplacer/HostReplacer.java b/src/main/protocol/hostreplacer/HostReplacer.java index 60c1366..f006266 100644 --- a/src/main/protocol/hostreplacer/HostReplacer.java +++ b/src/main/protocol/hostreplacer/HostReplacer.java @@ -2,8 +2,8 @@ package main.protocol.hostreplacer; public interface HostReplacer { - void addRedirect(String original, String redirect); + void addRedirect(String[] lines); - void removeRedirect(String original, String redirect); + void removeRedirect(String[] lines); } diff --git a/src/main/protocol/hostreplacer/UnixHostReplacer.java b/src/main/protocol/hostreplacer/UnixHostReplacer.java index 1e23c72..760da52 100644 --- a/src/main/protocol/hostreplacer/UnixHostReplacer.java +++ b/src/main/protocol/hostreplacer/UnixHostReplacer.java @@ -2,6 +2,7 @@ package main.protocol.hostreplacer; import java.io.*; import java.util.ArrayList; +import java.util.List; /** * Created by Jeunez on 04/04/18. @@ -15,8 +16,11 @@ class UnixHostReplacer implements HostReplacer { } @Override - public void addRedirect(String original, String redirect) { - String text = redirect + " " + original + "\t# G-Earth replacement"; + public void addRedirect(String[] lines) { + List adders = new ArrayList<>(); + for (int i = 0; i < lines.length; i++) { + adders.add(lines[i] + "\t# G-Earth replacement"); + } FileReader fr = null; BufferedReader br = null; @@ -25,17 +29,15 @@ class UnixHostReplacer implements HostReplacer { try { - ArrayList lines = new ArrayList<>(); + ArrayList fileLines = new ArrayList<>(); File f1 = new File(hostsFileLocation); fr = new FileReader(f1); br = new BufferedReader(fr); String line = null; - boolean containmmm = false; while ((line = br.readLine()) != null) { - if (line.equals(text)) - containmmm = true; - lines.add(line); + adders.remove(line); + fileLines.add(line); } fr.close(); br.close(); @@ -43,12 +45,12 @@ class UnixHostReplacer implements HostReplacer { fw = new FileWriter(f1); out = new BufferedWriter(fw); - if (!containmmm) { - out.write(text); + for (String li : adders) { + out.write(li + System.getProperty("line.separator")); } - for (int i = 0; i < lines.size(); i++) { - out.write(((containmmm && i == 0) ? "" : System.getProperty("line.separator"))+ lines.get(i)); + for (int i = 0; i < fileLines.size(); i++) { + out.write(((i == 0) ? "" : System.getProperty("line.separator"))+ fileLines.get(i)); } out.flush(); fw.close(); @@ -61,8 +63,11 @@ class UnixHostReplacer implements HostReplacer { } @Override - public void removeRedirect(String original, String redirect) { - String text = redirect + " " + original + "\t# G-Earth replacement"; + public void removeRedirect(String[] lines) { + ArrayList removers = new ArrayList<>(); + for (int i = 0; i < lines.length; i++) { + removers.add(lines[i] + "\t# G-Earth replacement"); + } FileReader fr = null; BufferedReader br = null; @@ -71,16 +76,15 @@ class UnixHostReplacer implements HostReplacer { try { - ArrayList lines = new ArrayList(); + ArrayList fileLines = new ArrayList(); File f1 = new File(hostsFileLocation); fr = new FileReader(f1); br = new BufferedReader(fr); String line = null; while ((line = br.readLine()) != null) { - if (!line.equals(text)) - lines.add(line); - + if (!removers.contains(line)) + fileLines.add(line); } fr.close(); br.close(); @@ -88,9 +92,9 @@ class UnixHostReplacer implements HostReplacer { fw = new FileWriter(f1); out = new BufferedWriter(fw); - for (int i = 0; i < lines.size(); i++) { - out.write(lines.get(i)); - if (i != lines.size() - 1) out.write(System.getProperty("line.separator")); + for (int i = 0; i < fileLines.size(); i++) { + out.write(fileLines.get(i)); + if (i != fileLines.size() - 1) out.write(System.getProperty("line.separator")); } out.flush(); fw.close();