From 49eb9f4fa26347213e587fc4b4b492b726719847 Mon Sep 17 00:00:00 2001 From: toolsprods Date: Wed, 16 Oct 2019 07:54:37 +0200 Subject: [PATCH] Detect app version --- README.md | 2 +- add-on/popup/js/script.js | 50 +++++++++++++++++++++++++------------ app/Windows/easydoh.exe | Bin 3990679 -> 3990724 bytes app/macOS-Linux/easydoh.py | 7 +++++- 4 files changed, 41 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index d95f190..704c9c9 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # EasyDoH -EasyDoH is a simple addon for Firefox that allows to easily activate [DNS over HTTPS](https://en.wikipedia.org/wiki/DNS_over_HTTPS) and its mode with one click. +EasyDoH is a simple addon for Firefox that allows to easily activate [DNS over HTTPS](https://en.wikipedia.org/wiki/DNS_over_HTTPS) and its working mode with just one click. It contains explanations for the different modes allowed (only available in _about:config_) and DoH servers to choose from. diff --git a/add-on/popup/js/script.js b/add-on/popup/js/script.js index 0bfeb37..75549a4 100644 --- a/add-on/popup/js/script.js +++ b/add-on/popup/js/script.js @@ -1,14 +1,14 @@ -$(function() { - var data = { mode: "init", uri: "" }; - port.postMessage(JSON.stringify(data)); - - loadJSON(); -}); - var port = browser.extension .getBackgroundPage() .browser.runtime.connectNative("com.elevenpaths.easydoh"); +$(function() { + var version = { mode: "version", uri: "" }; + port.postMessage(JSON.stringify(version)); + + loadJSON("doh.json", 1, "default"); +}); + var dnsValues = ""; document.getElementById("change-content").onclick = function() { @@ -35,7 +35,7 @@ document.getElementById("serverInput").onclick = function() { var server = document.getElementById("serverInput"); var serverSelect = server.options[server.selectedIndex].value; - if (serverSelect === "manual") { + if (serverSelect == "manual") { document.getElementById("serverManualInput").classList.remove("d-none"); document.getElementById("change-content").setAttribute("disabled", true); } else { @@ -55,17 +55,35 @@ Listen for messages from the app. */ port.onMessage.addListener(response => { console.log("Received: " + response); + mode = response["mode"]; - uri = getDnsFromUri(response["uri"]); + uri = response["uri"]; + + if (mode == "version") { + var version = browser.runtime.getManifest().version; + if (version != uri) { + message = + '

Addon version incorrect.
Please, download and install new version from here.

'; + setMessage(message); + } else { + var data = { mode: "init", uri: "" }; + port.postMessage(JSON.stringify(data)); + } + } else { + uri = getDnsFromUri(uri); - loadJSON(mode, uri); + var dohRepo = + "https://raw.githubusercontent.com/ElevenPaths/EasyDoH/master/add-on/popup/doh.json"; + loadJSON("doh.json", mode, uri); + loadJSON(dohRepo, mode, uri); + } }); port.onDisconnect.addListener(response => { console.log("Disconnect: " + response); message = - '

Addon not detected.

Check if it is in the right path or download and install it from here.

'; + '

Addon not detected.
Check if it is in the right path or download and install it from here.

'; setMessage(message); }); @@ -75,7 +93,7 @@ function buttonAction() { var uri = document.getElementById("serverInput"); var valueUri = uri.options[uri.selectedIndex].value; - if (valueUri === "manual") { + if (valueUri == "manual") { valueUri = "manual;" + document.getElementById("serverManualInput").value; } else { valueUri = dnsValues[valueUri].url; @@ -107,7 +125,7 @@ function sendData(mode, uri) { port.postMessage(JSON.stringify(data)); message = - "

Restart the browser to apply changes
EasyDoH will show Cloudfare configuration by default,
but your configuration wil be shown in TRR about:config

"; + "

Restart the browser to apply changes.
Your configuration will be shown in TRR about:config.

"; setMessage(message); } @@ -123,7 +141,7 @@ function setOptionsValue(mode, uri) { document.getElementById("modeInput").options.selectedIndex = mode; var serverInput = document.getElementById("serverInput").options; - if (uri === "default") { + if (uri == "default") { uri = "cloudflare"; } else if (uri.includes("manual;")) { var manual = uri.split(";"); @@ -141,7 +159,7 @@ function setOptionsValue(mode, uri) { } } -function loadJSON(mode, uri) { +function loadJSON(cdn, mode, uri) { xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { @@ -159,6 +177,6 @@ function loadJSON(mode, uri) { setOptionsValue(mode, uri); } }; - xmlhttp.open("GET", "doh.json", true); + xmlhttp.open("GET", cdn, true); xmlhttp.send(); } diff --git a/app/Windows/easydoh.exe b/app/Windows/easydoh.exe index f5f8eb2e0f1eda061f268df0baf9219f0fc078a9..5ad5319890e2f453791a8e36a89e7b5b7264f0e6 100644 GIT binary patch delta 2672 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 BHDmw) diff --git a/app/macOS-Linux/easydoh.py b/app/macOS-Linux/easydoh.py index d84b365..3378f19 100755 --- a/app/macOS-Linux/easydoh.py +++ b/app/macOS-Linux/easydoh.py @@ -9,6 +9,8 @@ import subprocess import sys +VERSION = "1.1.0" + # Templates for configuration parameters trr_mode = 'network.trr.mode' trr_uri = 'network.trr.uri' @@ -155,7 +157,10 @@ def write_firefox_user_pref(mode, uri): while True: received_message = get_message() data = json.loads(received_message) - if data["mode"] == "init": + if data["mode"] == "version": + values = {"mode": "version", "uri": VERSION} + send_message(encode_message(values)) + elif data["mode"] == "init": mode, uri = get_firefox_dns_pref() values = {"mode": mode, "uri": uri} send_message(encode_message(values))