Loading app/src/main/java/dnsfilter/ConfigurationAccess.java +2 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ public abstract class ConfigurationAccess { abstract public void updateConfig(byte[] config) throws IOException; public abstract void updateConfigMergeDefaults(byte[] config) throws IOException; abstract public byte[] getAdditionalHosts(int limit) throws IOException; abstract public void updateAdditionalHosts(byte[] bytes) throws IOException; Loading app/src/main/java/dnsfilter/DNSFilterManager.java +13 −1 Original line number Diff line number Diff line Loading @@ -355,7 +355,7 @@ public class DNSFilterManager extends ConfigurationAccess { } mergedout.flush(); mergedout.close(); Logger.getLogger().logLine("Merged configuration 'dnsfilter.conf' after update to version " + DNSFilterManager.VERSION + "!"); Logger.getLogger().logLine("Merged configuration 'dnsfilter.conf' with defaults of current version " + DNSFilterManager.VERSION + "!"); InputStream in = new FileInputStream(mergedConfig); byte[] configBytes = Utils.readFully(in, 1024); in.close(); Loading Loading @@ -411,6 +411,18 @@ public class DNSFilterManager extends ConfigurationAccess { } } @Override public void updateConfigMergeDefaults(byte[] config) throws IOException { try { config = mergeAndPersistConfig(config); this.config.load(new ByteArrayInputStream(config)); Logger.getLogger().message("Config changed!\nRestart might be required!"); } catch (IOException e) { throw new ConfigurationAccessException(e.getMessage(), e); } } @Override public byte[] getAdditionalHosts(int limit) throws IOException { try { Loading app/src/main/java/dnsfilter/android/DNSProxyActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -854,7 +854,7 @@ public class DNSProxyActivity extends Activity implements OnClickListener, Logge if (!addHostsTxt.equals("")) { if (manuallyConfEdited) try { CONFIG.updateConfig(addHostsTxt.getBytes()); CONFIG.updateConfigMergeDefaults(addHostsTxt.getBytes()); loadAndApplyConfig(false); } catch (IOException eio) { Logger.getLogger().logLine("Cannot persist manually edited config!\n" + eio.toString()); Loading app/src/main/java/dnsfilter/remote/RemoteAccessClient.java +25 −0 Original line number Diff line number Diff line Loading @@ -292,6 +292,31 @@ public class RemoteAccessClient extends ConfigurationAccess implements TimeoutLi } } @Override public void updateConfigMergeDefaults(byte[] config) throws IOException { try { InputStream in = getInputStream(); DataOutputStream out = new DataOutputStream(getOutputStream()); out.write("updateConfigMergeDefaults()\n".getBytes()); out.writeInt(config.length); out.write(config); out.flush(); String response = Utils.readLineFromStream(in); if (!response.equals("OK")) { throw new ConfigurationAccessException(response, null); } } catch (ConfigurationAccessException e) { connectedLogger.logLine("Remote action failed! "+e.getMessage()); throw e; } catch (IOException e) { connectedLogger.logLine("Remote action updateConfig() failed! "+e.getMessage()); closeConnectionReconnect(); throw e; } } @Override public byte[] getAdditionalHosts(int limit) throws IOException { try { Loading app/src/main/java/dnsfilter/remote/RemoteAccessServer.java +6 −0 Original line number Diff line number Diff line Loading @@ -235,6 +235,12 @@ public class RemoteAccessServer implements Runnable { ConfigurationAccess.getLocal().updateConfig(cfg); out.write("OK\n".getBytes()); out.flush(); } else if (action.equals("updateConfigMergeDefaults()")) { byte[] cfg = new byte[in.readInt()]; in.readFully(cfg); ConfigurationAccess.getLocal().updateConfigMergeDefaults(cfg); out.write("OK\n".getBytes()); out.flush(); } else if (action.equals("getAdditionalHosts()")) { int limit = in.readInt(); byte[] result = ConfigurationAccess.getLocal().getAdditionalHosts(limit); Loading Loading
app/src/main/java/dnsfilter/ConfigurationAccess.java +2 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ public abstract class ConfigurationAccess { abstract public void updateConfig(byte[] config) throws IOException; public abstract void updateConfigMergeDefaults(byte[] config) throws IOException; abstract public byte[] getAdditionalHosts(int limit) throws IOException; abstract public void updateAdditionalHosts(byte[] bytes) throws IOException; Loading
app/src/main/java/dnsfilter/DNSFilterManager.java +13 −1 Original line number Diff line number Diff line Loading @@ -355,7 +355,7 @@ public class DNSFilterManager extends ConfigurationAccess { } mergedout.flush(); mergedout.close(); Logger.getLogger().logLine("Merged configuration 'dnsfilter.conf' after update to version " + DNSFilterManager.VERSION + "!"); Logger.getLogger().logLine("Merged configuration 'dnsfilter.conf' with defaults of current version " + DNSFilterManager.VERSION + "!"); InputStream in = new FileInputStream(mergedConfig); byte[] configBytes = Utils.readFully(in, 1024); in.close(); Loading Loading @@ -411,6 +411,18 @@ public class DNSFilterManager extends ConfigurationAccess { } } @Override public void updateConfigMergeDefaults(byte[] config) throws IOException { try { config = mergeAndPersistConfig(config); this.config.load(new ByteArrayInputStream(config)); Logger.getLogger().message("Config changed!\nRestart might be required!"); } catch (IOException e) { throw new ConfigurationAccessException(e.getMessage(), e); } } @Override public byte[] getAdditionalHosts(int limit) throws IOException { try { Loading
app/src/main/java/dnsfilter/android/DNSProxyActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -854,7 +854,7 @@ public class DNSProxyActivity extends Activity implements OnClickListener, Logge if (!addHostsTxt.equals("")) { if (manuallyConfEdited) try { CONFIG.updateConfig(addHostsTxt.getBytes()); CONFIG.updateConfigMergeDefaults(addHostsTxt.getBytes()); loadAndApplyConfig(false); } catch (IOException eio) { Logger.getLogger().logLine("Cannot persist manually edited config!\n" + eio.toString()); Loading
app/src/main/java/dnsfilter/remote/RemoteAccessClient.java +25 −0 Original line number Diff line number Diff line Loading @@ -292,6 +292,31 @@ public class RemoteAccessClient extends ConfigurationAccess implements TimeoutLi } } @Override public void updateConfigMergeDefaults(byte[] config) throws IOException { try { InputStream in = getInputStream(); DataOutputStream out = new DataOutputStream(getOutputStream()); out.write("updateConfigMergeDefaults()\n".getBytes()); out.writeInt(config.length); out.write(config); out.flush(); String response = Utils.readLineFromStream(in); if (!response.equals("OK")) { throw new ConfigurationAccessException(response, null); } } catch (ConfigurationAccessException e) { connectedLogger.logLine("Remote action failed! "+e.getMessage()); throw e; } catch (IOException e) { connectedLogger.logLine("Remote action updateConfig() failed! "+e.getMessage()); closeConnectionReconnect(); throw e; } } @Override public byte[] getAdditionalHosts(int limit) throws IOException { try { Loading
app/src/main/java/dnsfilter/remote/RemoteAccessServer.java +6 −0 Original line number Diff line number Diff line Loading @@ -235,6 +235,12 @@ public class RemoteAccessServer implements Runnable { ConfigurationAccess.getLocal().updateConfig(cfg); out.write("OK\n".getBytes()); out.flush(); } else if (action.equals("updateConfigMergeDefaults()")) { byte[] cfg = new byte[in.readInt()]; in.readFully(cfg); ConfigurationAccess.getLocal().updateConfigMergeDefaults(cfg); out.write("OK\n".getBytes()); out.flush(); } else if (action.equals("getAdditionalHosts()")) { int limit = in.readInt(); byte[] result = ConfigurationAccess.getLocal().getAdditionalHosts(limit); Loading