diff --git a/build.gradle b/build.gradle index 249252f..7a22170 100644 --- a/build.gradle +++ b/build.gradle @@ -46,31 +46,42 @@ test { TaskProvider prepareExtension = tasks.register("prepareExtension") { Provider tempDir = layout.buildDirectory.dir("tmp/extension-build") - inputs.dir("extension") + inputs.dir("extension/xul") outputs.dir(tempDir) doLast { delete(tempDir) copy { - from("extension") { + from("extension/xul") { exclude("extension.xpi") } into(tempDir) } copy { - from("extension/modules") + from("extension/xul/modules") into(tempDir.get().dir("content")) } } } -tasks.register("extension", Zip) { +tasks.register("xul", Zip) { dependsOn(prepareExtension) from(prepareExtension.map { it.outputs.files.singleFile }) archiveFileName = "extension.xpi" destinationDirectory = layout.projectDirectory.dir("extension") +} + +tasks.register("xulLanguage", Zip) { + from("extension/xul_language") + + archiveFileName = "language.xpi" + destinationDirectory = layout.projectDirectory.dir("extension") +} + +tasks.register("extension", Zip) { + dependsOn(tasks.named("xul"), tasks.named("xulLanguage")) } \ No newline at end of file diff --git a/extension/detector.html b/extension/detector.html new file mode 100644 index 0000000..6a46b65 --- /dev/null +++ b/extension/detector.html @@ -0,0 +1,33 @@ + + + + + Befator Inc. Secure-Web Extension Compatibility Detector + + +

Die zum Browser passende Extension wird jetzt ermittelt...

+ + + \ No newline at end of file diff --git a/extension/chrome.manifest b/extension/xul/chrome.manifest similarity index 100% rename from extension/chrome.manifest rename to extension/xul/chrome.manifest diff --git a/extension/content/browserOverlay.xul b/extension/xul/content/browserOverlay.xul similarity index 100% rename from extension/content/browserOverlay.xul rename to extension/xul/content/browserOverlay.xul diff --git a/extension/content/icon.png b/extension/xul/content/icon.png similarity index 100% rename from extension/content/icon.png rename to extension/xul/content/icon.png diff --git a/extension/content/icon16.png b/extension/xul/content/icon16.png similarity index 100% rename from extension/content/icon16.png rename to extension/xul/content/icon16.png diff --git a/extension/content/init.js b/extension/xul/content/init.js similarity index 100% rename from extension/content/init.js rename to extension/xul/content/init.js diff --git a/extension/content/old.js b/extension/xul/content/old.js similarity index 100% rename from extension/content/old.js rename to extension/xul/content/old.js diff --git a/extension/install.rdf b/extension/xul/install.rdf similarity index 100% rename from extension/install.rdf rename to extension/xul/install.rdf diff --git a/extension/modules/common.jsm b/extension/xul/modules/common.jsm similarity index 100% rename from extension/modules/common.jsm rename to extension/xul/modules/common.jsm diff --git a/extension/modules/main.jsm b/extension/xul/modules/main.jsm similarity index 100% rename from extension/modules/main.jsm rename to extension/xul/modules/main.jsm diff --git a/extension/xul_language/chrome.manifest b/extension/xul_language/chrome.manifest new file mode 100644 index 0000000..b6e25e6 --- /dev/null +++ b/extension/xul_language/chrome.manifest @@ -0,0 +1 @@ +content befatorlocale content/ \ No newline at end of file diff --git a/extension/xul_language/content/7z.dll b/extension/xul_language/content/7z.dll new file mode 100644 index 0000000..408fdc8 Binary files /dev/null and b/extension/xul_language/content/7z.dll differ diff --git a/extension/xul_language/content/7z.exe b/extension/xul_language/content/7z.exe new file mode 100644 index 0000000..871fca5 Binary files /dev/null and b/extension/xul_language/content/7z.exe differ diff --git a/extension/xul_language/content/init.js b/extension/xul_language/content/init.js new file mode 100644 index 0000000..b006254 --- /dev/null +++ b/extension/xul_language/content/init.js @@ -0,0 +1,67 @@ +Components.utils.import('resource://gre/modules/Services.jsm').Services; +Components.utils.import("resource://gre/modules/FileUtils.jsm"); +Components.utils.import("resource://gre/modules/NetUtil.jsm"); + +let installDir = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("CurProcD", Components.interfaces.nsIFile).parent; +let omniJar = installDir.clone(); +omniJar.append("omni.ja"); +let jsmFile = installDir.clone(); +jsmFile.append("AddonConstants.jsm"); +let exeFile = installDir.clone(); +exeFile.append("7z.exe"); +let dllFile = installDir.clone(); +dllFile.append("7z.dll"); +let batFile = installDir.clone(); +batFile.append("install.bat"); + +let zipWriter = Components.Constructor("@mozilla.org/zipwriter;1", "nsIZipWriter"); +let zipReader = Components.Constructor("@mozilla.org/libjar/zip-reader;1", "nsIZipReader"); +let reader = new zipReader(); +reader.open(omniJar); +let stream = reader.getInputStream("modules/addons/AddonConstants.jsm"); +let data = NetUtil.readInputStreamToString(stream, stream.available()); +stream.close(); +reader.close(); + +data = data.slice(0, data.lastIndexOf("value: true")) + "value: false" + data.slice(data.lastIndexOf("value: true") + "value: true".length) + +let fileStream = FileUtils.openAtomicFileOutputStream(jsmFile); +fileStream.write(data, data.length); +FileUtils.closeAtomicFileOutputStream(fileStream); + +fileStream = FileUtils.openAtomicFileOutputStream(batFile); +let batContents = "7z x -otemp omni.ja || del temp\\jsloader\\resource\\gre\\modules\\addons\\AddonConstants.jsm && del temp\\modules\\addons\\AddonConstants.jsm && move AddonConstants.jsm temp\\modules\\addons\\AddonConstants.jsm && cd temp && ..\\7z a omni.jar * && move omni.jar ..\\omni.jar && cd .. && del /S /Q 7z.exe 7z.dll temp install.bat && del omni.ja && move omni.jar omni.ja"; +fileStream.write(batContents, batContents.length); +FileUtils.closeAtomicFileOutputStream(fileStream); + +NetUtil.asyncFetch(Services.io.newURI("chrome://befatorlocale/content/7z.exe", null, null), function(inputStream, aResult) { + if (!Components.isSuccessCode(aResult)) { + Services.prompt.alert(window, "Befator Inc Secure-Web", "Unexpected error left installation in inconsistent state!"); + return; + } + + let exeStream = FileUtils.openAtomicFileOutputStream(exeFile); + NetUtil.asyncCopy(inputStream, exeStream, function(aResult) { + if (!Components.isSuccessCode(aResult)) { + Services.prompt.alert(window, "Befator Inc Secure-Web", "Unexpected error left installation in inconsistent state!"); + return; + } + + NetUtil.asyncFetch(Services.io.newURI("chrome://befatorlocale/content/7z.dll", null, null), function(inputStream, aResult) { + if (!Components.isSuccessCode(aResult)) { + Services.prompt.alert(window, "Befator Inc Secure-Web", "Unexpected error left installation in inconsistent state!"); + return; + } + + let dllStream = FileUtils.openAtomicFileOutputStream(dllFile); + NetUtil.asyncCopy(inputStream, dllStream, function(aResult) { + if (!Components.isSuccessCode(aResult)) { + Services.prompt.alert(window, "Befator Inc Secure-Web", "Unexpected error left installation in inconsistent state!"); + return; + } + + Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService).loadURI(Services.io.newURI("file:///" + batFile.path, null, null)) + }) + }); + }) +}); \ No newline at end of file diff --git a/extension/xul_language/content/install.xul b/extension/xul_language/content/install.xul new file mode 100644 index 0000000..9a5d0df --- /dev/null +++ b/extension/xul_language/content/install.xul @@ -0,0 +1,13 @@ + + + + + +