Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eecb1858 authored by IngoZenz's avatar IngoZenz
Browse files

merge manually created config with defaults

parent 1bcd3ccb
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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;
+13 −1
Original line number Diff line number Diff line
@@ -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();
@@ -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 {
+1 −1
Original line number Diff line number Diff line
@@ -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());
+25 −0
Original line number Diff line number Diff line
@@ -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 {
+6 −0
Original line number Diff line number Diff line
@@ -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