From 8d040f9402b1ff7ce3ac8c4b415712aa527d3771 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Fri, 24 Mar 2017 23:01:47 -0400 Subject: [PATCH 01/27] Adapt to browser.storage if available. Disable proxy for now. Added feature detection for some other chrome.* APIs. --- .../background.coffee | 6 ++--- .../src/chrome_port.coffee | 8 +++--- .../src/external_api.coffee | 1 + .../src/options.coffee | 15 ++++++++--- .../src/proxy_auth.coffee | 3 +++ .../src/storage.coffee | 25 ++++++++++++++----- 6 files changed, 42 insertions(+), 16 deletions(-) diff --git a/omega-target-chromium-extension/background.coffee b/omega-target-chromium-extension/background.coffee index 50fb17c..ca93899 100644 --- a/omega-target-chromium-extension/background.coffee +++ b/omega-target-chromium-extension/background.coffee @@ -147,11 +147,11 @@ actionForUrl = (url) -> } -storage = new OmegaTargetCurrent.Storage(chrome.storage.local, 'local') +storage = new OmegaTargetCurrent.Storage('local') state = new OmegaTargetCurrent.BrowserStorage(localStorage, 'omega.local.') -if chrome.storage.sync - syncStorage = new OmegaTargetCurrent.Storage(chrome.storage.sync, 'sync') +if chrome?.storage?.sync or browser?.storage?.sync + syncStorage = new OmegaTargetCurrent.Storage('sync') sync = new OmegaTargetCurrent.OptionsSync(syncStorage) if localStorage['omega.local.syncOptions'] != '"sync"' sync.enabled = false diff --git a/omega-target-chromium-extension/src/chrome_port.coffee b/omega-target-chromium-extension/src/chrome_port.coffee index 0cddb01..e007b11 100644 --- a/omega-target-chromium-extension/src/chrome_port.coffee +++ b/omega-target-chromium-extension/src/chrome_port.coffee @@ -34,8 +34,10 @@ class TrackedEvent constructor: (@event) -> @callbacks = [] mes = ['hasListener', 'hasListeners', 'addRules', 'getRules', 'removeRules'] - for method in mes - this[method] = @event[method].bind(@event) + for methodName in mes + method = @event[methodName] + if method? + this[methodName] = method.bind(@event) addListener: (callback) -> @event.addListener(callback) @@ -69,7 +71,7 @@ class TrackedEvent ### dispose: -> @removeAllListeners() - if @event.hasListeners() + if @event.hasListeners?() throw new Error("Underlying Event still has listeners!") @event = null @callbacks = null diff --git a/omega-target-chromium-extension/src/external_api.coffee b/omega-target-chromium-extension/src/external_api.coffee index a080718..6768809 100644 --- a/omega-target-chromium-extension/src/external_api.coffee +++ b/omega-target-chromium-extension/src/external_api.coffee @@ -10,6 +10,7 @@ module.exports = class ExternalApi 'padekgcemlokbadohgkifijomclgjgif': 32 disabled: false listen: -> + return unless chrome.runtime.onConnectExternal chrome.runtime.onConnectExternal.addListener (rawPort) => port = new ChromePort(rawPort) port.onMessage.addListener (msg) => @onMessage(msg, port) diff --git a/omega-target-chromium-extension/src/options.coffee b/omega-target-chromium-extension/src/options.coffee index ecf9185..8f5db9f 100644 --- a/omega-target-chromium-extension/src/options.coffee +++ b/omega-target-chromium-extension/src/options.coffee @@ -3,7 +3,14 @@ OmegaPac = OmegaTarget.OmegaPac Promise = OmegaTarget.Promise querystring = require('querystring') chromeApiPromisifyAll = require('./chrome_api') -proxySettings = chromeApiPromisifyAll(chrome.proxy.settings) +if chrome?.proxy?.settings + proxySettings = chromeApiPromisifyAll(chrome.proxy.settings) +else + proxySettings = + setAsync: -> Promise.resolve() + clearAsync: -> Promise.resolve() + get: -> null + onChange: addListener: -> null parseExternalProfile = require('./parse_external_profile') ProxyAuth = require('./proxy_auth') WebRequestMonitor = require('./web_request_monitor') @@ -118,14 +125,14 @@ class ChromeOptions extends OmegaTarget.Options @_proxyChangeListener = (details) => for watcher in @_proxyChangeWatchers watcher(details) - chrome.proxy.settings.onChange.addListener @_proxyChangeListener + proxySettings.onChange.addListener @_proxyChangeListener @_proxyChangeWatchers.push(callback) applyProfileProxy: (profile, meta) -> meta ?= profile if profile.profileType == 'SystemProfile' # Clear proxy settings, returning proxy control to Chromium. return proxySettings.clearAsync({}).then => - chrome.proxy.settings.get {}, @_proxyChangeListener + proxySettings.get {}, @_proxyChangeListener return config = {} if profile.profileType == 'DirectProfile' @@ -161,7 +168,7 @@ class ChromeOptions extends OmegaTarget.Options @_proxyAuth.setProxies(@_watchingProfiles) proxySettings.setAsync({value: config}) ).then => - chrome.proxy.settings.get {}, @_proxyChangeListener + proxySettings.get {}, @_proxyChangeListener return _quickSwitchInit: false diff --git a/omega-target-chromium-extension/src/proxy_auth.coffee b/omega-target-chromium-extension/src/proxy_auth.coffee index e11d17c..50aa764 100644 --- a/omega-target-chromium-extension/src/proxy_auth.coffee +++ b/omega-target-chromium-extension/src/proxy_auth.coffee @@ -13,6 +13,9 @@ module.exports = class ProxyAuth if not chrome.webRequest @options.log.error('Proxy auth disabled! No webRequest permission.') return + if not chrome.webRequest.onAuthRequired + @options.log.error('Proxy auth disabled! onAuthRequired not available.') + return chrome.webRequest.onAuthRequired.addListener( @authHandler.bind(this) {urls: ['']} diff --git a/omega-target-chromium-extension/src/storage.coffee b/omega-target-chromium-extension/src/storage.coffee index c7069e0..0838491 100644 --- a/omega-target-chromium-extension/src/storage.coffee +++ b/omega-target-chromium-extension/src/storage.coffee @@ -28,27 +28,40 @@ class ChromeStorage extends OmegaTarget.Storage # This could happen if the storage area is not available. For example, # some Chromium-based browsers disable access to the sync storage. err = new OmegaTarget.Storage.StorageUnavailableError() + else if err.message.indexOf( + 'Please set webextensions.storage.sync.enabled to true') >= 0 + # This happens when sync storage is disabled in flags. + err = new OmegaTarget.Storage.StorageUnavailableError() return Promise.reject(err) - constructor: (storage, @areaName) -> - @storage = chromeApiPromisifyAll(storage) + constructor: (@areaName) -> + if browser?.storage?[@areaName] + @storage = browser.storage[@areaName] + else + wrapper = chromeApiPromisifyAll(chrome.storage[@areaName]) + @storage = + get: wrapper.getAsync.bind(wrapper), + set: wrapper.setAsync.bind(wrapper), + remove: wrapper.removeAsync.bind(wrapper), + clear: wrapper.clearAsync.bind(wrapper), get: (keys) -> keys ?= null - @storage.getAsync(keys).catch(ChromeStorage.parseStorageErrors) + Promise.resolve(@storage.get(keys)).catch(ChromeStorage.parseStorageErrors) set: (items) -> if Object.keys(items).length == 0 return Promise.resolve({}) - @storage.setAsync(items).catch(ChromeStorage.parseStorageErrors) + Promise.resolve(@storage.set(items)).catch(ChromeStorage.parseStorageErrors) remove: (keys) -> if not keys? - return @storage.clearAsync() + return Promise.resolve(@storage.clear()) if Array.isArray(keys) and keys.length == 0 return Promise.resolve({}) - @storage.removeAsync(keys).catch(ChromeStorage.parseStorageErrors) + Promise.resolve(@storage.remove(keys)) + .catch(ChromeStorage.parseStorageErrors) watch: (keys, callback) -> ChromeStorage.watchers[@areaName] ?= {} From 35cdb7ed6b340922e0ade770b636c388f20577ed Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Sat, 25 Mar 2017 00:13:34 -0400 Subject: [PATCH 02/27] Use browser.downloads.download to export files if available. --- .../omega_debug.coffee | 8 +++++++- .../overlay/manifest.json | 1 + omega-web/src/omega/app.coffee | 17 +++++++++++++++-- omega-web/src/omega/controllers/io.coffee | 4 ++-- omega-web/src/omega/controllers/master.coffee | 4 ++-- .../src/omega/controllers/switch_profile.coffee | 6 +++--- 6 files changed, 30 insertions(+), 10 deletions(-) diff --git a/omega-target-chromium-extension/omega_debug.coffee b/omega-target-chromium-extension/omega_debug.coffee index cf54b15..92ba61b 100644 --- a/omega-target-chromium-extension/omega_debug.coffee +++ b/omega-target-chromium-extension/omega_debug.coffee @@ -5,7 +5,13 @@ window.OmegaDebug = chrome.runtime.getManifest().version downloadLog: -> blob = new Blob [localStorage['log']], {type: "text/plain;charset=utf-8"} - saveAs(blob, "OmegaLog_#{Date.now()}.txt") + filename = "OmegaLog_#{Date.now()}.txt" + + if browser?.downloads?.download? + url = URL.createObjectURL(blob) + browser.downloads.download({url: url, filename: filename}) + else + saveAs(blob, filename) resetOptions: -> localStorage.clear() # Prevent options loading from sync storage after reload. diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index decf050..22c9b7a 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -34,6 +34,7 @@ "alarms", "storage", "webRequest", + "downloads", "webRequestBlocking", "contextMenus", diff --git a/omega-web/src/omega/app.coffee b/omega-web/src/omega/app.coffee index c0cde0d..4a03819 100644 --- a/omega-web/src/omega/app.coffee +++ b/omega-web/src/omega/app.coffee @@ -66,12 +66,14 @@ angular.module('omega').config ($stateProvider, $urlRouterProvider, controller: 'AboutCtrl' ) -angular.module('omega').factory 'omegaDebug', ($window, $rootScope) -> +angular.module('omega').factory 'omegaDebug', ($window, $rootScope, + $injector) -> omegaDebug = $window.OmegaDebug ? {} omegaDebug.downloadLog ?= -> + downloadFile = $injector.get('downloadFile') ? saveAs blob = new Blob [localStorage['log']], {type: "text/plain;charset=utf-8"} - saveAs(blob, "OmegaLog_#{Date.now()}.txt") + downloadFile(blob, "OmegaLog_#{Date.now()}.txt") omegaDebug.reportIssue ?= -> $window.open( @@ -82,3 +84,14 @@ angular.module('omega').factory 'omegaDebug', ($window, $rootScope) -> $rootScope.resetOptions() omegaDebug + +angular.module('omega').factory 'downloadFile', -> + if browser?.downloads?.download? + return (blob, filename) -> + url = URL.createObjectURL(blob) + if filename + browser.downloads.download({url: url, filename: filename}) + else + browser.downloads.download({url: url}) + else + return saveAs diff --git a/omega-web/src/omega/controllers/io.coffee b/omega-web/src/omega/controllers/io.coffee index 970769b..4c9e9b7 100644 --- a/omega-web/src/omega/controllers/io.coffee +++ b/omega-web/src/omega/controllers/io.coffee @@ -1,5 +1,5 @@ angular.module('omega').controller 'IoCtrl', ($scope, $rootScope, - $window, $http, omegaTarget) -> + $window, $http, omegaTarget, downloadFile) -> omegaTarget.state('web.restoreOnlineUrl').then (url) -> if url @@ -10,7 +10,7 @@ angular.module('omega').controller 'IoCtrl', ($scope, $rootScope, plainOptions = angular.fromJson(angular.toJson($rootScope.options)) content = JSON.stringify(plainOptions) blob = new Blob [content], {type: "text/plain;charset=utf-8"} - saveAs(blob, "OmegaOptions.bak") + downloadFile(blob, "OmegaOptions.bak") $scope.importSuccess = -> $rootScope.showAlert( diff --git a/omega-web/src/omega/controllers/master.coffee b/omega-web/src/omega/controllers/master.coffee index 4dbd3c6..399a707 100644 --- a/omega-web/src/omega/controllers/master.coffee +++ b/omega-web/src/omega/controllers/master.coffee @@ -1,7 +1,7 @@ angular.module('omega').controller 'MasterCtrl', ($scope, $rootScope, $window, $q, $modal, $state, profileColors, profileIcons, omegaTarget, $timeout, $location, $filter, getAttachedName, isProfileNameReserved, - isProfileNameHidden, dispNameFilter) -> + isProfileNameHidden, dispNameFilter, downloadFile) -> tr = $filter('tr') @@ -42,7 +42,7 @@ angular.module('omega').controller 'MasterCtrl', ($scope, $rootScope, $window, pac = OmegaPac.PacGenerator.ascii(pac) blob = new Blob [pac], {type: "text/plain;charset=utf-8"} fileName = profileName.replace(/\W+/g, '_') - saveAs(blob, "OmegaProfile_#{fileName}.pac") + downloadFile(blob, "OmegaProfile_#{fileName}.pac") if missingProfile $timeout -> $rootScope.showAlert( diff --git a/omega-web/src/omega/controllers/switch_profile.coffee b/omega-web/src/omega/controllers/switch_profile.coffee index 5aa55e5..76e785a 100644 --- a/omega-web/src/omega/controllers/switch_profile.coffee +++ b/omega-web/src/omega/controllers/switch_profile.coffee @@ -1,6 +1,6 @@ angular.module('omega').controller 'SwitchProfileCtrl', ($scope, $rootScope, $location, $timeout, $q, $modal, profileIcons, getAttachedName, omegaTarget, - trFilter) -> + trFilter, downloadFile) -> # == Rule list == $scope.ruleListFormats = OmegaPac.Profiles.ruleListFormats @@ -20,7 +20,7 @@ angular.module('omega').controller 'SwitchProfileCtrl', ($scope, $rootScope, blob = new Blob [text], {type: "text/plain;charset=utf-8"} fileName = $scope.profile.name.replace(/\W+/g, '_') - saveAs(blob, "OmegaRules_#{fileName}.sorl") + downloadFile(blob, "OmegaRules_#{fileName}.sorl") exportLegacyRuleList = -> wildcardRules = '' @@ -52,7 +52,7 @@ angular.module('omega').controller 'SwitchProfileCtrl', ($scope, $rootScope, """ blob = new Blob [text], {type: "text/plain;charset=utf-8"} fileName = $scope.profile.name.replace(/\W+/g, '_') - saveAs(blob, "SwitchyRules_#{fileName}.ssrl") + downloadFile(blob, "SwitchyRules_#{fileName}.ssrl") # == Condition types == $scope.conditionHelp = From d65c29f34dd045ac81192f366e34579f3a15f266 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Sat, 25 Mar 2017 00:24:39 -0400 Subject: [PATCH 03/27] Ignore about: and moz- URLs in a few places. --- omega-target-chromium-extension/background.coffee | 8 ++++++-- .../omega_target_web.coffee | 3 ++- omega-target-chromium-extension/src/options.coffee | 10 ++++++++-- .../src/web_request_monitor.coffee | 2 ++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/omega-target-chromium-extension/background.coffee b/omega-target-chromium-extension/background.coffee index ca93899..a76258c 100644 --- a/omega-target-chromium-extension/background.coffee +++ b/omega-target-chromium-extension/background.coffee @@ -288,8 +288,12 @@ encodeError = (obj) -> refreshActivePageIfEnabled = -> return if localStorage['omega.local.refreshOnProfileChange'] == 'false' chrome.tabs.query {active: true, lastFocusedWindow: true}, (tabs) -> - if tabs[0].url and tabs[0].url.substr(0, 6) != 'chrome' - chrome.tabs.reload(tabs[0].id, {bypassCache: true}) + url = tabs[0].url + return if not url + return if url.substr(0, 6) == 'chrome' + return if url.substr(0, 6) == 'about:' + return if url.substr(0, 4) == 'moz-' + chrome.tabs.reload(tabs[0].id, {bypassCache: true}) chrome.runtime.onMessage.addListener (request, sender, respond) -> options.ready.then -> diff --git a/omega-target-chromium-extension/omega_target_web.coffee b/omega-target-chromium-extension/omega_target_web.coffee index 0b88bf0..4e2cee1 100644 --- a/omega-target-chromium-extension/omega_target_web.coffee +++ b/omega-target-chromium-extension/omega_target_web.coffee @@ -40,7 +40,8 @@ angular.module('omegaTarget', []).factory 'omegaTarget', ($q) -> port.onMessage.addListener(callback) return - isChromeUrl = (url) -> url.substr(0, 6) == 'chrome' + isChromeUrl = (url) -> url.substr(0, 6) == 'chrome' or + url.substr(0, 4) == 'moz-' or url.substr(0, 6) == 'about:' optionsChangeCallback = [] requestInfoCallback = null diff --git a/omega-target-chromium-extension/src/options.coffee b/omega-target-chromium-extension/src/options.coffee index 8f5db9f..72d0334 100644 --- a/omega-target-chromium-extension/src/options.coffee +++ b/omega-target-chromium-extension/src/options.coffee @@ -201,8 +201,12 @@ class ChromeOptions extends OmegaTarget.Options index = (index + 1) % profiles.length @applyProfile(profiles[index]).then => if @_options['-refreshOnProfileChange'] - if tab.url and tab.url.indexOf('chrome') != 0 - chrome.tabs.reload(tab.id) + url = tab.url + return if not url + return if url.substr(0, 6) == 'chrome' + return if url.substr(0, 6) == 'about:' + return if url.substr(0, 4) == 'moz-' + chrome.tabs.reload(tab.id) else chrome.browserAction.setPopup({popup: 'popup/index.html'}) Promise.resolve() @@ -356,6 +360,8 @@ class ChromeOptions extends OmegaTarget.Options return result if not url else return result + return result if url.substr(0, 6) == 'about:' + return result if url.substr(0, 4) == 'moz-' domain = OmegaPac.getBaseDomain(Url.parse(url).hostname) return { diff --git a/omega-target-chromium-extension/src/web_request_monitor.coffee b/omega-target-chromium-extension/src/web_request_monitor.coffee index 1e14676..cc22bfd 100644 --- a/omega-target-chromium-extension/src/web_request_monitor.coffee +++ b/omega-target-chromium-extension/src/web_request_monitor.coffee @@ -89,6 +89,8 @@ module.exports = class WebRequestMonitor return if req.error.indexOf('net::ERR_FILE_') == 0 return if req.url.indexOf('file:') == 0 return if req.url.indexOf('chrome') == 0 + return if req.url.indexOf('about:') == 0 + return if req.url.indexOf('moz-') == 0 # Some ad-blocking extensions may redirect requests to 127.0.0.1. return if req.url.indexOf('://127.0.0.1') > 0 return unless reqInfo From f421810959634fad4b8f0c3bc719804c369cfd67 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Thu, 13 Apr 2017 22:41:08 -0400 Subject: [PATCH 04/27] Implement proxy script for WebExtensions. #102. --- .../background.coffee | 1 + .../grunt/browserify.coffee | 15 +++ .../grunt/watch.coffee | 3 + .../omega_webext_proxy_script.js | 113 ++++++++++++++++++ .../overlay/manifest.json | 10 +- omega-target-chromium-extension/package.json | 3 +- .../src/options.coffee | 73 +++++++++++ 7 files changed, 216 insertions(+), 2 deletions(-) create mode 100644 omega-target-chromium-extension/omega_webext_proxy_script.js diff --git a/omega-target-chromium-extension/background.coffee b/omega-target-chromium-extension/background.coffee index a76258c..52cb1cc 100644 --- a/omega-target-chromium-extension/background.coffee +++ b/omega-target-chromium-extension/background.coffee @@ -296,6 +296,7 @@ refreshActivePageIfEnabled = -> chrome.tabs.reload(tabs[0].id, {bypassCache: true}) chrome.runtime.onMessage.addListener (request, sender, respond) -> + return unless request and request.method options.ready.then -> target = options method = target[request.method] diff --git a/omega-target-chromium-extension/grunt/browserify.coffee b/omega-target-chromium-extension/grunt/browserify.coffee index b402df7..1381680 100644 --- a/omega-target-chromium-extension/grunt/browserify.coffee +++ b/omega-target-chromium-extension/grunt/browserify.coffee @@ -1,3 +1,4 @@ +path = require('path') module.exports = index: files: @@ -26,3 +27,17 @@ module.exports = browserifyOptions: extensions: '.coffee' standalone: 'OmegaTargetChromium' + omega_webext_proxy_script: + files: + 'build/js/omega_webext_proxy_script.min.js': + 'omega_webext_proxy_script.js' + options: + alias: + 'omega-pac': 'omega-pac/omega_pac.min.js' + plugin: + if process.env.BUILD == 'release' + [['minifyify', {map: false}]] + else + [] + browserifyOptions: + noParse: [require.resolve('omega-pac/omega_pac.min.js')] diff --git a/omega-target-chromium-extension/grunt/watch.coffee b/omega-target-chromium-extension/grunt/watch.coffee index cafeb37..2d18a99 100644 --- a/omega-target-chromium-extension/grunt/watch.coffee +++ b/omega-target-chromium-extension/grunt/watch.coffee @@ -23,6 +23,9 @@ module.exports = src: files: ['src/**/*.coffee'] tasks: ['coffeelint:src', 'browserify', 'copy:target_self'] + browserify_omega_webext_proxy_script: + files: ['omega_webext_proxy_script.js'] + tasks: ['browserify:omega_webext_proxy_script'] coffee: files: ['src/**/*.coffee', '*.coffee'] tasks: ['coffeelint:src', 'coffee', 'copy:target_self'] diff --git a/omega-target-chromium-extension/omega_webext_proxy_script.js b/omega-target-chromium-extension/omega_webext_proxy_script.js new file mode 100644 index 0000000..823fc32 --- /dev/null +++ b/omega-target-chromium-extension/omega_webext_proxy_script.js @@ -0,0 +1,113 @@ +FindProxyForURL = (function () { + var OmegaPac = require('omega-pac'); + var options = {}; + var state = {}; + var activeProfile = null; + var fallbackResult = 'DIRECT'; + var pacCache = {}; + + init(); + + return FindProxyForURL; + + function FindProxyForURL(url, host, details) { + if (!activeProfile) { + warn('Warning: Proxy script not initialized on handling: ' + url); + return fallbackResult; + } + // Moz: Neither path or query is included url regardless of scheme for now. + // This is even more strict than Chromium restricting HTTPS URLs. + // Therefore, it leads to different behavior than the icon and badge. + // https://bugzilla.mozilla.org/show_bug.cgi?id=1337001 + var request = OmegaPac.Conditions.requestFromUrl(url); + var profile = activeProfile; + var matchResult, next; + while (profile) { + matchResult = OmegaPac.Profiles.match(profile, request) + if (!matchResult) { + if (profile.profileType === 'DirectProfile') { + return 'DIRECT'; + } else if (profile.pacScript) { + return runPacProfile(profile.pacScript); + } else { + warn('Warning: Unsupported profile: ' + profile.profileType); + return fallbackResult; + } + } + + if (Array.isArray(matchResult)) { + next = matchResult[0]; + // TODO: Maybe also return user/pass if Mozilla supports it or it ends + // up standardized in WebExtensions in the future. + // MOZ: Mozilla has a bug tracked for user/pass in PAC return value. + // https://bugzilla.mozilla.org/show_bug.cgi?id=1319641 + if (next.charCodeAt(0) !== 43) { + // MOZ: HTTPS proxies are supported under the prefix PROXY. + // https://dxr.mozilla.org/mozilla-central/source/toolkit/components/extensions/ProxyScriptContext.jsm#180 + return next.replace(/HTTPS /g, 'PROXY '); + } + } else if (matchResult.profileName) { + next = OmegaPac.Profiles.nameAsKey(matchResult.profileName) + } else { + return fallbackResult; + } + profile = OmegaPac.Profiles.byKey(next, options) + } + warn('Warning: Cannot find profile: ' + next); + return fallbackResult; + } + + function runPacProfile(profile) { + var cached = pacCache[profile.name]; + if (!cached || cached.revision !== profile.revision) { + // https://github.com/FelisCatus/SwitchyOmega/issues/390 + var body = ';\n' + profile.pacScript + '\n\n/* End of PAC */;' + body += 'return FindProxyForURL'; + var func = new Function(body).call(this); + + if (typeof func !== 'function') { + warn('Warning: Cannot compile pacScript: ' + profile.name); + func = function() { return fallbackResult; }; + } + cached = {func: func, revision: profile.revision} + pacCache[cacheKey] = cached; + } + try { + // Moz: Most scripts probably won't run without global PAC functions. + // Example: dnsDomainIs, shExpMatch, isInNet. + // https://bugzilla.mozilla.org/show_bug.cgi?id=1353510 + return cached.func.call(this); + } catch (ex) { + warn('Warning: Error occured in pacScript: ' + profile.name, ex); + return fallbackResult; + } + } + + function warn(message, error) { + // We don't have console here and alert is not implemented. + // Throwing and messaging seems to be the only ways to communicate. + // MOZ: alert(): https://bugzilla.mozilla.org/show_bug.cgi?id=1353510 + browser.runtime.sendMessage({ + event: 'proxyScriptLog', + message: message, + error: error, + level: 'warn', + }); + } + + function init() { + browser.runtime.sendMessage({event: 'proxyScriptLoaded'}); + browser.runtime.onMessage.addListener(function(message) { + if (message.event === 'proxyScriptStateChanged') { + state = message.state; + options = message.options; + if (!state.currentProfileName) { + activeProfile = state.tempProfile; + } else { + activeProfile = OmegaPac.Profiles.byName(state.currentProfileName, + options); + } + } + }); + } +})(); diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index 22c9b7a..db2fe75 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "__MSG_manifest_app_name__", - "version": "2.4.5", + "version": "2.4.7", "description": "__MSG_manifest_app_description__", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkhwZJT76btQ04EEMOFtZPLESD1TmSVjbLjs0OyesD9Ht8YllFPfJ3qmtbSQGVuvmxH1GK/jUO2QcEWb8bHuOjoRlq20fi5j5Aq90O8FKET+y5D8PxCyi3WmnquiEwaE5cNmaCsw/G2JlO+bZOtdQ/QKOvMxBAegABYimEGfSvCMVUEvpymys0gBhLoch72zPAiJUBkf0z8BtjYTueMRcRXkrSeRPLygUDQnZ1TkQWMYYBp/zqpD5ggxytAklEMQzR9Hn0lqu5s7iuUAgihbysPn/8Wh00Zj5FySpK//KcpG3JS7UWxC28oSt8z5ZR3YimnX+HX3P36V0mC1pgM4o7wIDAQAB", "icons": { @@ -43,11 +43,19 @@ "ftp://*/*", "" ], + "content_security_policy": + "script-src 'self' 'unsafe-eval'; object-src 'self';", "commands": { "_execute_browser_action": { "suggested_key": { "default": "Alt+Shift+O" } } + }, + "applications": { + "gecko": { + "id": "switchyomega@example.com", + "strict_min_version": "55.0a1" + } } } diff --git a/omega-target-chromium-extension/package.json b/omega-target-chromium-extension/package.json index 47fa274..18a7ce7 100644 --- a/omega-target-chromium-extension/package.json +++ b/omega-target-chromium-extension/package.json @@ -24,12 +24,13 @@ "heap": "^0.2.6", "omega-target": "../omega-target", "omega-web": "../omega-web", + "omega-pac": "../omega-pac", "xhr": "^1.16.0" }, "browser": { "omega-target": "./omega_target_shim.js" }, "scripts": { - "dev": "npm link omega-target && npm link omega-web" + "dev": "npm link omega-target && npm link omega-web && npm link omega-pac" } } diff --git a/omega-target-chromium-extension/src/options.coffee b/omega-target-chromium-extension/src/options.coffee index 72d0334..b329885 100644 --- a/omega-target-chromium-extension/src/options.coffee +++ b/omega-target-chromium-extension/src/options.coffee @@ -128,6 +128,14 @@ class ChromeOptions extends OmegaTarget.Options proxySettings.onChange.addListener @_proxyChangeListener @_proxyChangeWatchers.push(callback) applyProfileProxy: (profile, meta) -> + if chrome?.proxy?.settings? + return @applyProfileProxySettings(profile, meta) + else if browser?.proxy?.registerProxyScript? + return @applyProfileProxyScript(profile, meta) + else + ex = new Error('Your browser does not support proxy settings!') + return Promise.reject ex + applyProfileProxySettings: (profile, meta) -> meta ?= profile if profile.profileType == 'SystemProfile' # Clear proxy settings, returning proxy control to Chromium. @@ -171,6 +179,71 @@ class ChromeOptions extends OmegaTarget.Options proxySettings.get {}, @_proxyChangeListener return + _proxyScriptUrl: 'js/omega_webext_proxy_script.min.js' + _proxyScriptDisabled: false + applyProfileProxyScript: (profile, state) -> + state = state ? {} + state.currentProfileName = profile.name + if profile.name == '' + state.tempProfile = @_tempProfile + if profile.profileType == 'SystemProfile' + # MOZ: SystemProfile cannot be done now due to lack of "PASS" support. + # https://bugzilla.mozilla.org/show_bug.cgi?id=1319634 + # In the mean time, let's just set an invalid script to unregister it. + browser.proxy.registerProxyScript('js/omega_invalid_proxy_script.min.js') + @_proxyScriptDisabled = true + else + @_proxyScriptState = state + @_initWebextProxyScript().then => @_proxyScriptStateChanged() + # Proxy authentication is not covered in WebExtensions standard now. + # MOZ: Mozilla has a bug tracked to implemented it in PAC return value. + # https://bugzilla.mozilla.org/show_bug.cgi?id=1319641 + return Promise.resolve() + + _proxyScriptInitialized: false + _proxyScriptState: {} + _initWebextProxyScript: -> + if not @_proxyScriptInitialized + browser.proxy.onProxyError.addListener (err) => + if err and err.message.indexOf('Invalid Proxy Rule: DIRECT') >= 0 + # MOZ: DIRECT cannot be correctly parsed due to a bug. Even though it + # throws, it actually falls back to direct connection so it works. + # https://bugzilla.mozilla.org/show_bug.cgi?id=1355198 + return + @log.error(err) + browser.runtime.onMessage.addListener (message) => + return unless message.event == 'proxyScriptLog' + if message.level == 'error' + @log.error(message) + else if message.level == 'warn' + @log.warn(message) + else + @log.log(message) + + if not @_proxyScriptInitialized or @_proxyScriptDisabled + promise = new Promise (resolve) -> + onMessage = (message) -> + return unless message.event == 'proxyScriptLoaded' + resolve() + browser.runtime.onMessage.removeListener onMessage + return + browser.runtime.onMessage.addListener onMessage + browser.proxy.registerProxyScript(@_proxyScriptUrl) + @_proxyScriptDisabled = false + else + promise = Promise.resolve() + @_proxyScriptInitialized = true + return promise + + _proxyScriptStateChanged: -> + browser.runtime.sendMessage({ + event: 'proxyScriptStateChanged' + state: @_proxyScriptState + options: @_options + }, { + toProxyScript: true + }) + _quickSwitchInit: false _quickSwitchContextMenuCreated: false _quickSwitchCanEnable: false From 2f5c0cb0b1dff3b068a213284d2c0e8e4a8e26fa Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Thu, 13 Apr 2017 23:10:06 -0400 Subject: [PATCH 05/27] Add a testing badge and warning text on options page. --- omega-locales/ach/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/cs/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/de/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/en_US/LC_MESSAGES/omega-web.po | 8 +++++++- omega-locales/es_AR/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/fa/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/fr/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/is/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/ja/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/nb_NO/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/nl/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/pt_BR/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/ru/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/sk/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/sl/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/tr/LC_MESSAGES/omega-web.po | 6 ++++++ omega-locales/zh_CN/LC_MESSAGES/omega-web.po | 8 +++++++- omega-locales/zh_TW/LC_MESSAGES/omega-web.po | 8 +++++++- omega-web/src/omega/controllers/master.coffee | 3 +++ omega-web/src/options.jade | 2 ++ omega-web/src/partials/about.jade | 5 +++++ 21 files changed, 121 insertions(+), 3 deletions(-) diff --git a/omega-locales/ach/LC_MESSAGES/omega-web.po b/omega-locales/ach/LC_MESSAGES/omega-web.po index 0afca9d..f18247d 100644 --- a/omega-locales/ach/LC_MESSAGES/omega-web.po +++ b/omega-locales/ach/LC_MESSAGES/omega-web.po @@ -217,6 +217,9 @@ msgstr "Restore" msgid "options_title" msgstr "SwitchyOmega Options" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "Settings" @@ -1212,6 +1215,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/cs/LC_MESSAGES/omega-web.po b/omega-locales/cs/LC_MESSAGES/omega-web.po index 31fbc5f..b5dee70 100644 --- a/omega-locales/cs/LC_MESSAGES/omega-web.po +++ b/omega-locales/cs/LC_MESSAGES/omega-web.po @@ -219,6 +219,9 @@ msgstr "Obnovit" msgid "options_title" msgstr "SwitchyOmega Nastavení" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "Nastavení" @@ -1208,6 +1211,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/de/LC_MESSAGES/omega-web.po b/omega-locales/de/LC_MESSAGES/omega-web.po index cc0c942..f209f97 100644 --- a/omega-locales/de/LC_MESSAGES/omega-web.po +++ b/omega-locales/de/LC_MESSAGES/omega-web.po @@ -222,6 +222,9 @@ msgstr "Restore" msgid "options_title" msgstr "SwitchyOmega Options" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "Settings" @@ -1217,6 +1220,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/en_US/LC_MESSAGES/omega-web.po b/omega-locales/en_US/LC_MESSAGES/omega-web.po index 4a9af4b..72f285e 100644 --- a/omega-locales/en_US/LC_MESSAGES/omega-web.po +++ b/omega-locales/en_US/LC_MESSAGES/omega-web.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-02-13 10:29+0000\n" "PO-Revision-Date: 2015-02-17 07:02+0200\n" -"Last-Translator: FelisCatus \n" +"Last-Translator: FelisCatus \n" "Language-Team: English (United States) " "\n" "Language: en_US\n" @@ -218,6 +218,9 @@ msgstr "Restore" msgid "options_title" msgstr "SwitchyOmega Options" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "Settings" @@ -1194,6 +1197,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/es_AR/LC_MESSAGES/omega-web.po b/omega-locales/es_AR/LC_MESSAGES/omega-web.po index 5b5d8fd..cd2996e 100644 --- a/omega-locales/es_AR/LC_MESSAGES/omega-web.po +++ b/omega-locales/es_AR/LC_MESSAGES/omega-web.po @@ -222,6 +222,9 @@ msgstr "Restaurar" msgid "options_title" msgstr "Opciones SwitchyOmega" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "Configuraciones" @@ -1217,6 +1220,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/fa/LC_MESSAGES/omega-web.po b/omega-locales/fa/LC_MESSAGES/omega-web.po index 77c7933..e35d534 100644 --- a/omega-locales/fa/LC_MESSAGES/omega-web.po +++ b/omega-locales/fa/LC_MESSAGES/omega-web.po @@ -225,6 +225,9 @@ msgstr "بازگرداندن" msgid "options_title" msgstr "تنظیمات SwitchyOmega" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "تنظیمات" @@ -1221,6 +1224,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/fr/LC_MESSAGES/omega-web.po b/omega-locales/fr/LC_MESSAGES/omega-web.po index a355c1d..82cb228 100644 --- a/omega-locales/fr/LC_MESSAGES/omega-web.po +++ b/omega-locales/fr/LC_MESSAGES/omega-web.po @@ -219,6 +219,9 @@ msgstr "Restore" msgid "options_title" msgstr "SwitchyOmega Options" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "Settings" @@ -1214,6 +1217,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/is/LC_MESSAGES/omega-web.po b/omega-locales/is/LC_MESSAGES/omega-web.po index 9358bf2..5a687c9 100644 --- a/omega-locales/is/LC_MESSAGES/omega-web.po +++ b/omega-locales/is/LC_MESSAGES/omega-web.po @@ -173,6 +173,9 @@ msgstr "" msgid "options_title" msgstr "" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "" @@ -1017,6 +1020,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/ja/LC_MESSAGES/omega-web.po b/omega-locales/ja/LC_MESSAGES/omega-web.po index b5e63db..025bcfc 100644 --- a/omega-locales/ja/LC_MESSAGES/omega-web.po +++ b/omega-locales/ja/LC_MESSAGES/omega-web.po @@ -214,6 +214,9 @@ msgstr "復元" msgid "options_title" msgstr "SwitchyOmega オプション" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "設定" @@ -1202,6 +1205,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/nb_NO/LC_MESSAGES/omega-web.po b/omega-locales/nb_NO/LC_MESSAGES/omega-web.po index 8240b38..87bffb1 100644 --- a/omega-locales/nb_NO/LC_MESSAGES/omega-web.po +++ b/omega-locales/nb_NO/LC_MESSAGES/omega-web.po @@ -181,6 +181,9 @@ msgstr "Gjenopprett" msgid "options_title" msgstr "SwitchyOmega-valg" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "Innstillinger" @@ -1055,6 +1058,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/nl/LC_MESSAGES/omega-web.po b/omega-locales/nl/LC_MESSAGES/omega-web.po index 21cba85..57485fd 100644 --- a/omega-locales/nl/LC_MESSAGES/omega-web.po +++ b/omega-locales/nl/LC_MESSAGES/omega-web.po @@ -163,6 +163,9 @@ msgstr "" msgid "options_title" msgstr "" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "" @@ -1006,6 +1009,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/pt_BR/LC_MESSAGES/omega-web.po b/omega-locales/pt_BR/LC_MESSAGES/omega-web.po index af79a6c..064ef0b 100644 --- a/omega-locales/pt_BR/LC_MESSAGES/omega-web.po +++ b/omega-locales/pt_BR/LC_MESSAGES/omega-web.po @@ -218,6 +218,9 @@ msgstr "Restore" msgid "options_title" msgstr "SwitchyOmega Options" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "Settings" @@ -1213,6 +1216,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/ru/LC_MESSAGES/omega-web.po b/omega-locales/ru/LC_MESSAGES/omega-web.po index e7f376c..c4a17c0 100644 --- a/omega-locales/ru/LC_MESSAGES/omega-web.po +++ b/omega-locales/ru/LC_MESSAGES/omega-web.po @@ -222,6 +222,9 @@ msgstr "Restore" msgid "options_title" msgstr "SwitchyOmega Options" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "Settings" @@ -1217,6 +1220,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/sk/LC_MESSAGES/omega-web.po b/omega-locales/sk/LC_MESSAGES/omega-web.po index 67ffd0b..407d026 100644 --- a/omega-locales/sk/LC_MESSAGES/omega-web.po +++ b/omega-locales/sk/LC_MESSAGES/omega-web.po @@ -172,6 +172,9 @@ msgstr "" msgid "options_title" msgstr "" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "" @@ -1016,6 +1019,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/sl/LC_MESSAGES/omega-web.po b/omega-locales/sl/LC_MESSAGES/omega-web.po index ad9141f..2dddab0 100644 --- a/omega-locales/sl/LC_MESSAGES/omega-web.po +++ b/omega-locales/sl/LC_MESSAGES/omega-web.po @@ -174,6 +174,9 @@ msgstr "" msgid "options_title" msgstr "" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "" @@ -1018,6 +1021,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/tr/LC_MESSAGES/omega-web.po b/omega-locales/tr/LC_MESSAGES/omega-web.po index 4510ece..f8eb395 100644 --- a/omega-locales/tr/LC_MESSAGES/omega-web.po +++ b/omega-locales/tr/LC_MESSAGES/omega-web.po @@ -221,6 +221,9 @@ msgstr "Restore" msgid "options_title" msgstr "SwitchyOmega Options" +msgid "options_experimental_badge" +msgstr "α" + msgid "options_navHeader_setting" msgstr "Settings" @@ -1209,6 +1212,9 @@ msgstr "A proxy configuration tool" msgid "about_version" msgstr "Version $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox support is highly experimental! If you encounter issues, please report using the buttons below." + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega does not provide proxies, VPNs, or other network services." diff --git a/omega-locales/zh_CN/LC_MESSAGES/omega-web.po b/omega-locales/zh_CN/LC_MESSAGES/omega-web.po index 0713239..f91023c 100644 --- a/omega-locales/zh_CN/LC_MESSAGES/omega-web.po +++ b/omega-locales/zh_CN/LC_MESSAGES/omega-web.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-02-13 11:05+0000\n" "PO-Revision-Date: 2015-02-15 14:52+0200\n" -"Last-Translator: FelisCatus \n" +"Last-Translator: FelisCatus \n" "Language-Team: Chinese (China) " "\n" "Language: zh_CN\n" @@ -200,6 +200,9 @@ msgstr "还原" msgid "options_title" msgstr "SwitchyOmega 选项" +msgid "options_experimental_badge" +msgstr "测试版" + msgid "options_navHeader_setting" msgstr "设定" @@ -1070,6 +1073,9 @@ msgstr "一个代理设置工具" msgid "about_version" msgstr "版本 $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox 浏览器支持目前仍处于早期实验阶段!如果您遇到任何问题,请使用下方的按钮进行反馈。" + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega 不提供代理服务器、VPN等网络服务。" diff --git a/omega-locales/zh_TW/LC_MESSAGES/omega-web.po b/omega-locales/zh_TW/LC_MESSAGES/omega-web.po index 1075f8b..4823e43 100644 --- a/omega-locales/zh_TW/LC_MESSAGES/omega-web.po +++ b/omega-locales/zh_TW/LC_MESSAGES/omega-web.po @@ -4,7 +4,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-02-13 11:15+0000\n" "PO-Revision-Date: 2015-02-28 07:52+0200\n" -"Last-Translator: FelisCatus \n" +"Last-Translator: FelisCatus \n" "Language-Team: Chinese (Taiwan) " "\n" "Language: zh_TW\n" @@ -200,6 +200,9 @@ msgstr "還原" msgid "options_title" msgstr "SwitchyOmega 選項" +msgid "options_experimental_badge" +msgstr "測試版" + msgid "options_navHeader_setting" msgstr "設定" @@ -1070,6 +1073,9 @@ msgstr "一個代理設置工具" msgid "about_version" msgstr "版本 $VERSION$" +msgid "about_experimental_warning_moz" +msgstr "Mozilla Firefox 瀏覽器支持目前仍處於早期實驗階段!如果您遇到任何問題,請使用下方的按鈕進行反饋。" + msgid "about_disclaimer_networkService" msgstr "SwitchyOmega 不提供代理伺服器、VPN等網絡服務。" diff --git a/omega-web/src/omega/controllers/master.coffee b/omega-web/src/omega/controllers/master.coffee index 399a707..f0f4874 100644 --- a/omega-web/src/omega/controllers/master.coffee +++ b/omega-web/src/omega/controllers/master.coffee @@ -3,6 +3,9 @@ angular.module('omega').controller 'MasterCtrl', ($scope, $rootScope, $window, $timeout, $location, $filter, getAttachedName, isProfileNameReserved, isProfileNameHidden, dispNameFilter, downloadFile) -> + if not chrome?.proxy?.settings? + $scope.isExperimental = true + tr = $filter('tr') $rootScope.options = null diff --git a/omega-web/src/options.jade b/omega-web/src/options.jade index d8f8f18..d403610 100644 --- a/omega-web/src/options.jade +++ b/omega-web/src/options.jade @@ -14,6 +14,8 @@ html(lang='en' ng-controller='MasterCtrl' ng-csp) header.col-lg-2.col-sm-3.side-nav h1 a(ui-sref='about' title='{{"about_title" | tr}}') {{'appNameShort' | tr}} + sup.om-experimental.text-danger(ng-show='isExperimental') + | {{'options_experimental_badge' | tr}} nav.nav.nav-pills.nav-stacked li.nav-header {{'options_navHeader_setting' | tr}} li(ui-sref-active='active'): a(ui-sref='ui') diff --git a/omega-web/src/partials/about.jade b/omega-web/src/partials/about.jade index 8e47e04..3846608 100644 --- a/omega-web/src/partials/about.jade +++ b/omega-web/src/partials/about.jade @@ -1,5 +1,10 @@ .page-header h2 {{'about_title' | tr}} +section.omega-experimental(ng-show='isExperimental') + p.alert.alert-danger + span.glyphicon.glyphicon-warning-sign + = ' ' + span {{'about_experimental_warning_moz' | tr}} section .media(style='margin: 1em 0') .media-left From 9467a58f6f038b8861ab40b980a9383df58dec5f Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Thu, 13 Apr 2017 23:42:49 -0400 Subject: [PATCH 06/27] Upgrade to angular > 1.5.9. Use non-minified version for testing. Fix #986. --- omega-web/bower.json | 10 +++++----- omega-web/src/coffee/options.coffee | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/omega-web/bower.json b/omega-web/bower.json index 7266191..ba9d716 100644 --- a/omega-web/bower.json +++ b/omega-web/bower.json @@ -21,12 +21,12 @@ "tests" ], "dependencies": { - "angular": "~1.2.16", + "angular": "~1.5.9", "angular-bootstrap": "~0.12.0", - "angular-animate": "~1.2.16", + "angular-animate": "~1.5.9", "angular-ui-router": "~0.2.10", - "angular-loader": "~1.2.16", - "angular-i18n": "~1.2.16", + "angular-loader": "~1.5.9", + "angular-i18n": "~1.5.9", "bootstrap": "~3.3.2", "script.js": "~2.5.3", "ngprogress": "~1.0.4", @@ -51,7 +51,7 @@ "": [] }, "angular": { - "": "*.min.js" + "": "angular.js" }, "angular-animate": { "": "*.min.*" diff --git a/omega-web/src/coffee/options.coffee b/omega-web/src/coffee/options.coffee index abd5f75..5a3b825 100644 --- a/omega-web/src/coffee/options.coffee +++ b/omega-web/src/coffee/options.coffee @@ -51,7 +51,7 @@ $script.ready ['jquery'], -> $script 'lib/spectrum/spectrum.js', 'spectrum' $script.ready ['angular-loader', 'jquery'], -> - $script 'lib/angular/angular.min.js', 'angular' + $script 'lib/angular/angular.js', 'angular' $script.ready ['angular'], -> $script 'lib/angular-ui-router/angular-ui-router.js', 'angular-ui-router' From 4dca36a45f5f1157ef1ad08c7c0eb23c6477f78f Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Fri, 14 Apr 2017 00:50:03 -0400 Subject: [PATCH 07/27] Fix SOCKS5 servers. --- omega-target-chromium-extension/omega_webext_proxy_script.js | 4 +++- omega-target-chromium-extension/overlay/manifest.json | 4 ++-- omega-target-chromium-extension/src/options.coffee | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/omega-target-chromium-extension/omega_webext_proxy_script.js b/omega-target-chromium-extension/omega_webext_proxy_script.js index 823fc32..fc2d36c 100644 --- a/omega-target-chromium-extension/omega_webext_proxy_script.js +++ b/omega-target-chromium-extension/omega_webext_proxy_script.js @@ -43,8 +43,10 @@ FindProxyForURL = (function () { // https://bugzilla.mozilla.org/show_bug.cgi?id=1319641 if (next.charCodeAt(0) !== 43) { // MOZ: HTTPS proxies are supported under the prefix PROXY. + // MOZ: SOCKS5 proxies are supported under the prefix SOCKS. // https://dxr.mozilla.org/mozilla-central/source/toolkit/components/extensions/ProxyScriptContext.jsm#180 - return next.replace(/HTTPS /g, 'PROXY '); + return next.replace(/HTTPS /g, 'PROXY ') + .replace(/SOCKS5 /g, 'SOCKS '); } } else if (matchResult.profileName) { next = OmegaPac.Profiles.nameAsKey(matchResult.profileName) diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index db2fe75..8544e7e 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "__MSG_manifest_app_name__", - "version": "2.4.7", + "version": "2.4.8", "description": "__MSG_manifest_app_description__", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkhwZJT76btQ04EEMOFtZPLESD1TmSVjbLjs0OyesD9Ht8YllFPfJ3qmtbSQGVuvmxH1GK/jUO2QcEWb8bHuOjoRlq20fi5j5Aq90O8FKET+y5D8PxCyi3WmnquiEwaE5cNmaCsw/G2JlO+bZOtdQ/QKOvMxBAegABYimEGfSvCMVUEvpymys0gBhLoch72zPAiJUBkf0z8BtjYTueMRcRXkrSeRPLygUDQnZ1TkQWMYYBp/zqpD5ggxytAklEMQzR9Hn0lqu5s7iuUAgihbysPn/8Wh00Zj5FySpK//KcpG3JS7UWxC28oSt8z5ZR3YimnX+HX3P36V0mC1pgM4o7wIDAQAB", "icons": { @@ -54,7 +54,7 @@ }, "applications": { "gecko": { - "id": "switchyomega@example.com", + "id": "switchyomega@feliscatus.addons.mozilla.org", "strict_min_version": "55.0a1" } } diff --git a/omega-target-chromium-extension/src/options.coffee b/omega-target-chromium-extension/src/options.coffee index b329885..d7b4310 100644 --- a/omega-target-chromium-extension/src/options.coffee +++ b/omega-target-chromium-extension/src/options.coffee @@ -216,7 +216,7 @@ class ChromeOptions extends OmegaTarget.Options if message.level == 'error' @log.error(message) else if message.level == 'warn' - @log.warn(message) + @log.error(message) else @log.log(message) From 4b38034536c5bb28a5978dc4071597fe425fb4bc Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Sat, 15 Apr 2017 20:15:54 -0400 Subject: [PATCH 08/27] Disable PAC support for webext and remove unsafe-eval. --- .../omega_webext_proxy_script.js | 28 ------------------- .../overlay/manifest.json | 2 -- 2 files changed, 30 deletions(-) diff --git a/omega-target-chromium-extension/omega_webext_proxy_script.js b/omega-target-chromium-extension/omega_webext_proxy_script.js index fc2d36c..3b36a9e 100644 --- a/omega-target-chromium-extension/omega_webext_proxy_script.js +++ b/omega-target-chromium-extension/omega_webext_proxy_script.js @@ -27,8 +27,6 @@ FindProxyForURL = (function () { if (!matchResult) { if (profile.profileType === 'DirectProfile') { return 'DIRECT'; - } else if (profile.pacScript) { - return runPacProfile(profile.pacScript); } else { warn('Warning: Unsupported profile: ' + profile.profileType); return fallbackResult; @@ -59,32 +57,6 @@ FindProxyForURL = (function () { return fallbackResult; } - function runPacProfile(profile) { - var cached = pacCache[profile.name]; - if (!cached || cached.revision !== profile.revision) { - // https://github.com/FelisCatus/SwitchyOmega/issues/390 - var body = ';\n' + profile.pacScript + '\n\n/* End of PAC */;' - body += 'return FindProxyForURL'; - var func = new Function(body).call(this); - - if (typeof func !== 'function') { - warn('Warning: Cannot compile pacScript: ' + profile.name); - func = function() { return fallbackResult; }; - } - cached = {func: func, revision: profile.revision} - pacCache[cacheKey] = cached; - } - try { - // Moz: Most scripts probably won't run without global PAC functions. - // Example: dnsDomainIs, shExpMatch, isInNet. - // https://bugzilla.mozilla.org/show_bug.cgi?id=1353510 - return cached.func.call(this); - } catch (ex) { - warn('Warning: Error occured in pacScript: ' + profile.name, ex); - return fallbackResult; - } - } - function warn(message, error) { // We don't have console here and alert is not implemented. // Throwing and messaging seems to be the only ways to communicate. diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index 8544e7e..2b0fa51 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -43,8 +43,6 @@ "ftp://*/*", "" ], - "content_security_policy": - "script-src 'self' 'unsafe-eval'; object-src 'self';", "commands": { "_execute_browser_action": { "suggested_key": { From 7e9bafb9a9b6047c5edc41db9afe483f0b1cffad Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Sat, 15 Apr 2017 20:17:41 -0400 Subject: [PATCH 09/27] Remove ftp scheme from permissions (unrecognized by Firefox). --- omega-target-chromium-extension/overlay/manifest.json | 1 - 1 file changed, 1 deletion(-) diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index 2b0fa51..5325e5a 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -40,7 +40,6 @@ "http://*/*", "https://*/*", - "ftp://*/*", "" ], "commands": { From b9ff15a8759f7a373467699d59f5efb53bfa6744 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Sat, 15 Apr 2017 20:44:53 -0400 Subject: [PATCH 10/27] Add options_ui for options page. --- omega-target-chromium-extension/overlay/manifest.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index 5325e5a..52ce9d6 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -14,6 +14,7 @@ }, "default_locale": "en", "browser_action": { + "browser_style": false, "default_icon": { "16": "img/icons/omega-action-16.png", "19": "img/icons/omega-action-19.png", @@ -28,6 +29,11 @@ }, "minimum_chrome_version": "22.0.0", "options_page": "options.html", + "options_ui": { + "page": "options.html", + "browser_style": false, + "open_in_tab": true + }, "permissions": [ "proxy", "tabs", From ab6425371c678f3c320ff096a6dba26248c322af Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Fri, 21 Apr 2017 18:26:40 -0400 Subject: [PATCH 11/27] Use minified version for libraries where possible. --- .../overlay/manifest.json | 2 +- omega-web/bower.json | 14 +++++++------- omega-web/src/coffee/options.coffee | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index 52ce9d6..00ca117 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "__MSG_manifest_app_name__", - "version": "2.4.8", + "version": "2.4.10", "description": "__MSG_manifest_app_description__", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkhwZJT76btQ04EEMOFtZPLESD1TmSVjbLjs0OyesD9Ht8YllFPfJ3qmtbSQGVuvmxH1GK/jUO2QcEWb8bHuOjoRlq20fi5j5Aq90O8FKET+y5D8PxCyi3WmnquiEwaE5cNmaCsw/G2JlO+bZOtdQ/QKOvMxBAegABYimEGfSvCMVUEvpymys0gBhLoch72zPAiJUBkf0z8BtjYTueMRcRXkrSeRPLygUDQnZ1TkQWMYYBp/zqpD5ggxytAklEMQzR9Hn0lqu5s7iuUAgihbysPn/8Wh00Zj5FySpK//KcpG3JS7UWxC28oSt8z5ZR3YimnX+HX3P36V0mC1pgM4o7wIDAQAB", "icons": { diff --git a/omega-web/bower.json b/omega-web/bower.json index ba9d716..b4095d4 100644 --- a/omega-web/bower.json +++ b/omega-web/bower.json @@ -51,10 +51,10 @@ "": [] }, "angular": { - "": "angular.js" + "": "angular.min.js" }, "angular-animate": { - "": "*.min.*" + "": "*.min.js" }, "angular-bootstrap": { "": "ui-bootstrap-tpls.min.js" @@ -77,16 +77,16 @@ "": "dist/*.min.js" }, "angular-ui-router": { - "": "release/*.js" + "": "release/*.min.js" }, "angular-ui-sortable": { - "": "*.js" + "": "*.min.js" }, "angular-ui-utils": { - "": "*.js" + "": "*.min.js" }, "bootstrap": { - "css": "dist/css/*.min.*", + "css": "dist/css/bootstrap.min.css", "fonts": "dist/fonts/*", "js": "js/dropdown.*" }, @@ -99,7 +99,7 @@ "shepherd.js": { "": [ "*.min.js", - "css/*.css" + "css/shepherd-theme-arrows.css" ] }, "spectrum": { diff --git a/omega-web/src/coffee/options.coffee b/omega-web/src/coffee/options.coffee index 5a3b825..8c3ca8b 100644 --- a/omega-web/src/coffee/options.coffee +++ b/omega-web/src/coffee/options.coffee @@ -51,10 +51,10 @@ $script.ready ['jquery'], -> $script 'lib/spectrum/spectrum.js', 'spectrum' $script.ready ['angular-loader', 'jquery'], -> - $script 'lib/angular/angular.js', 'angular' + $script 'lib/angular/angular.min.js', 'angular' $script.ready ['angular'], -> - $script 'lib/angular-ui-router/angular-ui-router.js', 'angular-ui-router' + $script 'lib/angular-ui-router/angular-ui-router.min.js', 'angular-ui-router' $script 'lib/angular-sanitize/angular-sanitize.min.js', 'angular-sanitize' $script.ready ['angular', 'omega', 'omega-deps', 'angular-ui-router', From 4802b98173b2b9ef7512572c425e80e20a140196 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Wed, 26 Apr 2017 23:00:49 -0400 Subject: [PATCH 12/27] Mark angular ~1.5.11 as a resolution. --- omega-web/bower.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/omega-web/bower.json b/omega-web/bower.json index b4095d4..47a0c80 100644 --- a/omega-web/bower.json +++ b/omega-web/bower.json @@ -21,12 +21,12 @@ "tests" ], "dependencies": { - "angular": "~1.5.9", + "angular": "~1.5.11", "angular-bootstrap": "~0.12.0", - "angular-animate": "~1.5.9", + "angular-animate": "~1.5.11", "angular-ui-router": "~0.2.10", - "angular-loader": "~1.5.9", - "angular-i18n": "~1.5.9", + "angular-loader": "~1.5.11", + "angular-i18n": "~1.5.11", "bootstrap": "~3.3.2", "script.js": "~2.5.3", "ngprogress": "~1.0.4", @@ -120,5 +120,8 @@ "dist/ladda.min.js" ] } + }, + "resolutions": { + "angular": "~1.5.11" } } From d2d9d69eb615b9ad9dabe04c950020e56196da46 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Thu, 27 Apr 2017 00:08:05 -0400 Subject: [PATCH 13/27] Properly document the issues with MOZ proxy return values. #1062. --- .../omega_webext_proxy_script.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/omega-target-chromium-extension/omega_webext_proxy_script.js b/omega-target-chromium-extension/omega_webext_proxy_script.js index 3b36a9e..27857ac 100644 --- a/omega-target-chromium-extension/omega_webext_proxy_script.js +++ b/omega-target-chromium-extension/omega_webext_proxy_script.js @@ -40,11 +40,20 @@ FindProxyForURL = (function () { // MOZ: Mozilla has a bug tracked for user/pass in PAC return value. // https://bugzilla.mozilla.org/show_bug.cgi?id=1319641 if (next.charCodeAt(0) !== 43) { - // MOZ: HTTPS proxies are supported under the prefix PROXY. // MOZ: SOCKS5 proxies are supported under the prefix SOCKS. - // https://dxr.mozilla.org/mozilla-central/source/toolkit/components/extensions/ProxyScriptContext.jsm#180 - return next.replace(/HTTPS /g, 'PROXY ') - .replace(/SOCKS5 /g, 'SOCKS '); + // https://dxr.mozilla.org/mozilla-central/source/toolkit/components/extensions/ProxyScriptContext.jsm#178 + // Note: We have to replace this because MOZ won't process the rest of + // the list if the syntax of the first item is not recognized. + next = next.replace(/SOCKS5 /g, 'SOCKS '); + + // MOZ: HTTP proxies are wrongly treated as HTTPS proxies! + // There is no workaround now. Therefore, they won't work. + // MOZ: HTTPS proxies are (wrongly) supported under the prefix PROXY. + // XXX: Remove the following hack once they are properly supported. + // https://bugzilla.mozilla.org/show_bug.cgi?id=1359417 + next = next.replace(/HTTPS /g, 'PROXY '); + + return next; } } else if (matchResult.profileName) { next = OmegaPac.Profiles.nameAsKey(matchResult.profileName) From 1b524ea32605346289b51c201ea94cbfb2a71ab5 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Thu, 1 Jun 2017 01:11:01 -0400 Subject: [PATCH 14/27] Bump version to 2.4.11. --- omega-target-chromium-extension/overlay/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index 00ca117..a11d52d 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "__MSG_manifest_app_name__", - "version": "2.4.10", + "version": "2.4.11", "description": "__MSG_manifest_app_description__", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkhwZJT76btQ04EEMOFtZPLESD1TmSVjbLjs0OyesD9Ht8YllFPfJ3qmtbSQGVuvmxH1GK/jUO2QcEWb8bHuOjoRlq20fi5j5Aq90O8FKET+y5D8PxCyi3WmnquiEwaE5cNmaCsw/G2JlO+bZOtdQ/QKOvMxBAegABYimEGfSvCMVUEvpymys0gBhLoch72zPAiJUBkf0z8BtjYTueMRcRXkrSeRPLygUDQnZ1TkQWMYYBp/zqpD5ggxytAklEMQzR9Hn0lqu5s7iuUAgihbysPn/8Wh00Zj5FySpK//KcpG3JS7UWxC28oSt8z5ZR3YimnX+HX3P36V0mC1pgM4o7wIDAQAB", "icons": { From 22f52125d75444bb4218b51e57786107978a14be Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Thu, 1 Jun 2017 01:57:52 -0400 Subject: [PATCH 15/27] Remove hack for HTTP / HTTPS proxy types since they work now. Fix #1062. --- .../omega_webext_proxy_script.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/omega-target-chromium-extension/omega_webext_proxy_script.js b/omega-target-chromium-extension/omega_webext_proxy_script.js index 27857ac..63c0e00 100644 --- a/omega-target-chromium-extension/omega_webext_proxy_script.js +++ b/omega-target-chromium-extension/omega_webext_proxy_script.js @@ -46,13 +46,6 @@ FindProxyForURL = (function () { // the list if the syntax of the first item is not recognized. next = next.replace(/SOCKS5 /g, 'SOCKS '); - // MOZ: HTTP proxies are wrongly treated as HTTPS proxies! - // There is no workaround now. Therefore, they won't work. - // MOZ: HTTPS proxies are (wrongly) supported under the prefix PROXY. - // XXX: Remove the following hack once they are properly supported. - // https://bugzilla.mozilla.org/show_bug.cgi?id=1359417 - next = next.replace(/HTTPS /g, 'PROXY '); - return next; } } else if (matchResult.profileName) { From 852e811f5adadb1e652593f4bd91d4e0c9da4b6b Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Sat, 10 Jun 2017 13:36:19 -0400 Subject: [PATCH 16/27] Update angular to 1.6.4, which breaks a lot of things. --- .../overlay/manifest.json | 2 +- omega-web/bower.json | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index a11d52d..73dfeba 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "__MSG_manifest_app_name__", - "version": "2.4.11", + "version": "2.4.12", "description": "__MSG_manifest_app_description__", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkhwZJT76btQ04EEMOFtZPLESD1TmSVjbLjs0OyesD9Ht8YllFPfJ3qmtbSQGVuvmxH1GK/jUO2QcEWb8bHuOjoRlq20fi5j5Aq90O8FKET+y5D8PxCyi3WmnquiEwaE5cNmaCsw/G2JlO+bZOtdQ/QKOvMxBAegABYimEGfSvCMVUEvpymys0gBhLoch72zPAiJUBkf0z8BtjYTueMRcRXkrSeRPLygUDQnZ1TkQWMYYBp/zqpD5ggxytAklEMQzR9Hn0lqu5s7iuUAgihbysPn/8Wh00Zj5FySpK//KcpG3JS7UWxC28oSt8z5ZR3YimnX+HX3P36V0mC1pgM4o7wIDAQAB", "icons": { diff --git a/omega-web/bower.json b/omega-web/bower.json index 47a0c80..aa25c99 100644 --- a/omega-web/bower.json +++ b/omega-web/bower.json @@ -21,12 +21,12 @@ "tests" ], "dependencies": { - "angular": "~1.5.11", + "angular": "~1.6.4", "angular-bootstrap": "~0.12.0", - "angular-animate": "~1.5.11", - "angular-ui-router": "~0.2.10", - "angular-loader": "~1.5.11", - "angular-i18n": "~1.5.11", + "angular-animate": "~1.6.4", + "angular-ui-router": "~0.2.18", + "angular-loader": "~1.6.4", + "angular-i18n": "~1.6.4", "bootstrap": "~3.3.2", "script.js": "~2.5.3", "ngprogress": "~1.0.4", @@ -37,7 +37,7 @@ "FileSaver": "*", "angular-ui-utils": "bower-validate", "angular-ladda": "~0.2.1", - "angular-sanitize": "~1.2.26", + "angular-sanitize": "~1.6.4", "shepherd.js": "~0.5.1" }, "exportsOverride": { @@ -122,6 +122,6 @@ } }, "resolutions": { - "angular": "~1.5.11" + "angular": "1.6.4" } } From 788bfe7d4e6f0c4a3d32e629924b75bc8cbebb06 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Wed, 5 Jul 2017 15:59:00 -0400 Subject: [PATCH 17/27] Use ng-options instead of options element in FixedProfile. --- .../src/omega/controllers/fixed_profile.coffee | 18 +++++++++++++++++- omega-web/src/partials/profile_fixed.jade | 9 ++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/omega-web/src/omega/controllers/fixed_profile.coffee b/omega-web/src/omega/controllers/fixed_profile.coffee index 17ba6dd..74cd8cf 100644 --- a/omega-web/src/omega/controllers/fixed_profile.coffee +++ b/omega-web/src/omega/controllers/fixed_profile.coffee @@ -1,4 +1,5 @@ -angular.module('omega').controller 'FixedProfileCtrl', ($scope, $modal) -> +angular.module('omega').controller 'FixedProfileCtrl', ($scope, $modal, + trFilter) -> $scope.urlSchemes = ['', 'http', 'https', 'ftp'] $scope.urlSchemeDefault = 'fallbackProxy' proxyProperties = @@ -20,6 +21,21 @@ angular.module('omega').controller 'FixedProfileCtrl', ($scope, $modal) -> $scope.showAdvanced = false + $scope.optionsForScheme = {} + for scheme in $scope.urlSchemes + defaultLabel = + if scheme + trFilter('options_protocol_useDefault') + else + trFilter('options_protocol_direct') + $scope.optionsForScheme[scheme] = [ + {label: defaultLabel, value: undefined}, + {label: 'HTTP', value: 'http'}, + {label: 'HTTPS', value: 'https'}, + {label: 'SOCKS4', value: 'socks4'}, + {label: 'SOCKS5', value: 'socks5'}, + ] + $scope.proxyEditors = {} $scope.authSupported = {"http": true, "https": true} diff --git a/omega-web/src/partials/profile_fixed.jade b/omega-web/src/partials/profile_fixed.jade index 3fdbc0f..b30608e 100644 --- a/omega-web/src/partials/profile_fixed.jade +++ b/omega-web/src/partials/profile_fixed.jade @@ -14,13 +14,8 @@ div(ng-controller='FixedProfileCtrl') tr(ng-repeat='scheme in urlSchemes' ng-show='scheme == "" || showAdvanced') td {{schemeDisp[scheme] || ('options_scheme_default' | tr)}} td - select.form-control(ng-model='proxyEditors[scheme].scheme') - option(value='') - | {{(scheme ? 'options_protocol_useDefault' : 'options_protocol_direct') | tr}} - option(value='http') HTTP - option(value='https') HTTPS - option(value='socks4') SOCKS4 - option(value='socks5') SOCKS5 + select.form-control(ng-model='proxyEditors[scheme].scheme' + ng-options='opt.value as opt.label for opt in optionsForScheme[scheme]') td(ng-if='proxyEditors[scheme].scheme') input.form-control(type='text' ng-model='proxyEditors[scheme].host' required) td(ng-if='!proxyEditors[scheme].scheme') From 2b05317813f1fc978540569b437d421ca35b0255 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Wed, 5 Jul 2017 16:02:09 -0400 Subject: [PATCH 18/27] Bump version to 2.4.13. --- omega-target-chromium-extension/overlay/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index 73dfeba..faed7ec 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "__MSG_manifest_app_name__", - "version": "2.4.12", + "version": "2.4.13", "description": "__MSG_manifest_app_description__", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkhwZJT76btQ04EEMOFtZPLESD1TmSVjbLjs0OyesD9Ht8YllFPfJ3qmtbSQGVuvmxH1GK/jUO2QcEWb8bHuOjoRlq20fi5j5Aq90O8FKET+y5D8PxCyi3WmnquiEwaE5cNmaCsw/G2JlO+bZOtdQ/QKOvMxBAegABYimEGfSvCMVUEvpymys0gBhLoch72zPAiJUBkf0z8BtjYTueMRcRXkrSeRPLygUDQnZ1TkQWMYYBp/zqpD5ggxytAklEMQzR9Hn0lqu5s7iuUAgihbysPn/8Wh00Zj5FySpK//KcpG3JS7UWxC28oSt8z5ZR3YimnX+HX3P36V0mC1pgM4o7wIDAQAB", "icons": { From 6616c15272b1bcc51215d65d800c838362ed6698 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Wed, 5 Jul 2017 16:17:53 -0400 Subject: [PATCH 19/27] Update angular to 1.6.5. --- .../overlay/manifest.json | 2 +- omega-web/bower.json | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index faed7ec..7bd1295 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "__MSG_manifest_app_name__", - "version": "2.4.13", + "version": "2.4.14", "description": "__MSG_manifest_app_description__", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkhwZJT76btQ04EEMOFtZPLESD1TmSVjbLjs0OyesD9Ht8YllFPfJ3qmtbSQGVuvmxH1GK/jUO2QcEWb8bHuOjoRlq20fi5j5Aq90O8FKET+y5D8PxCyi3WmnquiEwaE5cNmaCsw/G2JlO+bZOtdQ/QKOvMxBAegABYimEGfSvCMVUEvpymys0gBhLoch72zPAiJUBkf0z8BtjYTueMRcRXkrSeRPLygUDQnZ1TkQWMYYBp/zqpD5ggxytAklEMQzR9Hn0lqu5s7iuUAgihbysPn/8Wh00Zj5FySpK//KcpG3JS7UWxC28oSt8z5ZR3YimnX+HX3P36V0mC1pgM4o7wIDAQAB", "icons": { diff --git a/omega-web/bower.json b/omega-web/bower.json index aa25c99..6546b36 100644 --- a/omega-web/bower.json +++ b/omega-web/bower.json @@ -21,12 +21,12 @@ "tests" ], "dependencies": { - "angular": "~1.6.4", + "angular": "~1.6.5", "angular-bootstrap": "~0.12.0", - "angular-animate": "~1.6.4", + "angular-animate": "~1.6.5", "angular-ui-router": "~0.2.18", - "angular-loader": "~1.6.4", - "angular-i18n": "~1.6.4", + "angular-loader": "~1.6.5", + "angular-i18n": "~1.6.5", "bootstrap": "~3.3.2", "script.js": "~2.5.3", "ngprogress": "~1.0.4", @@ -37,7 +37,7 @@ "FileSaver": "*", "angular-ui-utils": "bower-validate", "angular-ladda": "~0.2.1", - "angular-sanitize": "~1.6.4", + "angular-sanitize": "~1.6.5", "shepherd.js": "~0.5.1" }, "exportsOverride": { @@ -122,6 +122,6 @@ } }, "resolutions": { - "angular": "1.6.4" + "angular": "~1.6.5" } } From fa39d89a7a1769760abce8217e5c6327ed8e2f8a Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Thu, 20 Jul 2017 19:02:30 -0400 Subject: [PATCH 20/27] Bump version to 2.4.15. --- omega-target-chromium-extension/overlay/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index 7bd1295..f5a5a18 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "__MSG_manifest_app_name__", - "version": "2.4.14", + "version": "2.4.15", "description": "__MSG_manifest_app_description__", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkhwZJT76btQ04EEMOFtZPLESD1TmSVjbLjs0OyesD9Ht8YllFPfJ3qmtbSQGVuvmxH1GK/jUO2QcEWb8bHuOjoRlq20fi5j5Aq90O8FKET+y5D8PxCyi3WmnquiEwaE5cNmaCsw/G2JlO+bZOtdQ/QKOvMxBAegABYimEGfSvCMVUEvpymys0gBhLoch72zPAiJUBkf0z8BtjYTueMRcRXkrSeRPLygUDQnZ1TkQWMYYBp/zqpD5ggxytAklEMQzR9Hn0lqu5s7iuUAgihbysPn/8Wh00Zj5FySpK//KcpG3JS7UWxC28oSt8z5ZR3YimnX+HX3P36V0mC1pgM4o7wIDAQAB", "icons": { From db2d2e4d0018a257f553cabde5231b53dc2acb4e Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Thu, 20 Jul 2017 19:05:20 -0400 Subject: [PATCH 21/27] Bump version to 2.4.16. --- omega-target-chromium-extension/overlay/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index f5a5a18..27c9ce8 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "__MSG_manifest_app_name__", - "version": "2.4.15", + "version": "2.4.16", "description": "__MSG_manifest_app_description__", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkhwZJT76btQ04EEMOFtZPLESD1TmSVjbLjs0OyesD9Ht8YllFPfJ3qmtbSQGVuvmxH1GK/jUO2QcEWb8bHuOjoRlq20fi5j5Aq90O8FKET+y5D8PxCyi3WmnquiEwaE5cNmaCsw/G2JlO+bZOtdQ/QKOvMxBAegABYimEGfSvCMVUEvpymys0gBhLoch72zPAiJUBkf0z8BtjYTueMRcRXkrSeRPLygUDQnZ1TkQWMYYBp/zqpD5ggxytAklEMQzR9Hn0lqu5s7iuUAgihbysPn/8Wh00Zj5FySpK//KcpG3JS7UWxC28oSt8z5ZR3YimnX+HX3P36V0mC1pgM4o7wIDAQAB", "icons": { From e23db1771db313126a4ceadce5c81253c41d2e55 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Wed, 26 Jul 2017 12:45:46 -0400 Subject: [PATCH 22/27] Fall back to link if openOptions fails in popup. --- omega-web/src/popup/index.html | 2 +- omega-web/src/popup/js/index.js | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/omega-web/src/popup/index.html b/omega-web/src/popup/index.html index 9182af8..b0826d3 100644 --- a/omega-web/src/popup/index.html +++ b/omega-web/src/popup/index.html @@ -44,7 +44,7 @@
  • - + diff --git a/omega-web/src/popup/js/index.js b/omega-web/src/popup/js/index.js index acc335b..4ec1154 100644 --- a/omega-web/src/popup/js/index.js +++ b/omega-web/src/popup/js/index.js @@ -16,10 +16,14 @@ window.close(); } - function showOptions() { - $script.ready('om-target', function() { - OmegaTargetPopup.openOptions(null, closePopup); - }); + function showOptions(e) { + if (typeof OmegaTargetPopup !== 'undefined') { + try { + OmegaTargetPopup.openOptions(null, closePopup); + e.preventDefault(); + } catch (_) { + } + } } function applyProfile(profileName) { From 7a3ac05cd5660aa8a469dbd1b687424dd7751e4d Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Mon, 31 Jul 2017 15:58:44 -0400 Subject: [PATCH 23/27] Fall back in case of error in popup openOptions. --- omega-target-chromium-extension/omega_target_popup.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omega-target-chromium-extension/omega_target_popup.js b/omega-target-chromium-extension/omega_target_popup.js index 79b3d31..ebacaa7 100644 --- a/omega-target-chromium-extension/omega_target_popup.js +++ b/omega-target-chromium-extension/omega_target_popup.js @@ -43,7 +43,7 @@ OmegaTargetPopup = { chrome.tabs.query({ url: options_url }, function(tabs) { - if (tabs.length > 0) { + if (!chrome.runtime.lastError && tabs && tabs.length > 0) { var props = { active: true }; From 9e016bff4b72686e4f8ac9c86d9e478bb14dfd90 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Mon, 31 Jul 2017 16:02:03 -0400 Subject: [PATCH 24/27] Bump version to 2.4.17. --- omega-target-chromium-extension/overlay/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omega-target-chromium-extension/overlay/manifest.json b/omega-target-chromium-extension/overlay/manifest.json index 27c9ce8..232d942 100644 --- a/omega-target-chromium-extension/overlay/manifest.json +++ b/omega-target-chromium-extension/overlay/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "__MSG_manifest_app_name__", - "version": "2.4.16", + "version": "2.4.17", "description": "__MSG_manifest_app_description__", "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkhwZJT76btQ04EEMOFtZPLESD1TmSVjbLjs0OyesD9Ht8YllFPfJ3qmtbSQGVuvmxH1GK/jUO2QcEWb8bHuOjoRlq20fi5j5Aq90O8FKET+y5D8PxCyi3WmnquiEwaE5cNmaCsw/G2JlO+bZOtdQ/QKOvMxBAegABYimEGfSvCMVUEvpymys0gBhLoch72zPAiJUBkf0z8BtjYTueMRcRXkrSeRPLygUDQnZ1TkQWMYYBp/zqpD5ggxytAklEMQzR9Hn0lqu5s7iuUAgihbysPn/8Wh00Zj5FySpK//KcpG3JS7UWxC28oSt8z5ZR3YimnX+HX3P36V0mC1pgM4o7wIDAQAB", "icons": { From 7a462714874dad1b7594876de7e7bdd683712194 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Mon, 31 Jul 2017 16:33:44 -0400 Subject: [PATCH 25/27] Use new brower.proxy.register/unregister API when possible. --- .../src/options.coffee | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/omega-target-chromium-extension/src/options.coffee b/omega-target-chromium-extension/src/options.coffee index d7b4310..42e8a90 100644 --- a/omega-target-chromium-extension/src/options.coffee +++ b/omega-target-chromium-extension/src/options.coffee @@ -189,8 +189,13 @@ class ChromeOptions extends OmegaTarget.Options if profile.profileType == 'SystemProfile' # MOZ: SystemProfile cannot be done now due to lack of "PASS" support. # https://bugzilla.mozilla.org/show_bug.cgi?id=1319634 - # In the mean time, let's just set an invalid script to unregister it. - browser.proxy.registerProxyScript('js/omega_invalid_proxy_script.min.js') + # In the mean time, let's just unregister the script. + if browser.proxy.unregister? + browser.proxy.unregister() + else + # Some older browers may not ship with .unregister API. + # In that case, let's just set an invalid script to unregister it. + browser.proxy.registerProxyScript('js/omega_invalid_proxy_script.js') @_proxyScriptDisabled = true else @_proxyScriptState = state @@ -206,8 +211,8 @@ class ChromeOptions extends OmegaTarget.Options if not @_proxyScriptInitialized browser.proxy.onProxyError.addListener (err) => if err and err.message.indexOf('Invalid Proxy Rule: DIRECT') >= 0 - # MOZ: DIRECT cannot be correctly parsed due to a bug. Even though it - # throws, it actually falls back to direct connection so it works. + # DIRECT cannot be parsed in Mozilla earlier due to a bug. Even though + # it throws, it actually falls back to direct connection so it works. # https://bugzilla.mozilla.org/show_bug.cgi?id=1355198 return @log.error(err) @@ -228,7 +233,11 @@ class ChromeOptions extends OmegaTarget.Options browser.runtime.onMessage.removeListener onMessage return browser.runtime.onMessage.addListener onMessage - browser.proxy.registerProxyScript(@_proxyScriptUrl) + # The API has been renamed to .register but for some old browsers' sake: + if browser.proxy.register? + browser.proxy.register(@_proxyScriptUrl) + else + browser.proxy.registerProxyScript(@_proxyScriptUrl) @_proxyScriptDisabled = false else promise = Promise.resolve() From 9978279d00821dc585bb7f98b0e7aa32ba1f5d6b Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Wed, 2 Aug 2017 22:46:08 -0400 Subject: [PATCH 26/27] Move more stuff into src/ for target-chromium. --- .../grunt/browserify.coffee | 4 ++-- .../grunt/coffee.coffee | 18 ++++++------------ .../grunt/copy.coffee | 2 ++ .../grunt/watch.coffee | 15 ++++++--------- omega-target-chromium-extension/index.coffee | 13 +------------ .../{ => src/coffee}/background.coffee | 0 .../{ => src/coffee}/background_preload.coffee | 0 .../{ => src/coffee}/omega_debug.coffee | 0 .../{ => src/coffee}/omega_target_web.coffee | 0 .../{ => src/js}/omega_target_popup.js | 0 .../{ => src/js}/omega_webext_proxy_script.js | 0 .../src/{ => module}/chrome_api.coffee | 0 .../src/{ => module}/chrome_port.coffee | 0 .../src/{ => module}/external_api.coffee | 0 .../src/{ => module}/fetch_url.coffee | 0 .../src/module/index.coffee | 12 ++++++++++++ .../src/{ => module}/inspect.coffee | 0 .../src/{ => module}/options.coffee | 0 .../{ => module}/parse_external_profile.coffee | 0 .../src/{ => module}/proxy_auth.coffee | 0 .../src/{ => module}/storage.coffee | 0 .../src/{ => module}/switchysharp.coffee | 0 .../src/{ => module}/tabs.coffee | 0 .../src/{ => module}/upgrade.coffee | 0 .../{ => module}/web_request_monitor.coffee | 0 25 files changed, 29 insertions(+), 35 deletions(-) rename omega-target-chromium-extension/{ => src/coffee}/background.coffee (100%) rename omega-target-chromium-extension/{ => src/coffee}/background_preload.coffee (100%) rename omega-target-chromium-extension/{ => src/coffee}/omega_debug.coffee (100%) rename omega-target-chromium-extension/{ => src/coffee}/omega_target_web.coffee (100%) rename omega-target-chromium-extension/{ => src/js}/omega_target_popup.js (100%) rename omega-target-chromium-extension/{ => src/js}/omega_webext_proxy_script.js (100%) rename omega-target-chromium-extension/src/{ => module}/chrome_api.coffee (100%) rename omega-target-chromium-extension/src/{ => module}/chrome_port.coffee (100%) rename omega-target-chromium-extension/src/{ => module}/external_api.coffee (100%) rename omega-target-chromium-extension/src/{ => module}/fetch_url.coffee (100%) create mode 100644 omega-target-chromium-extension/src/module/index.coffee rename omega-target-chromium-extension/src/{ => module}/inspect.coffee (100%) rename omega-target-chromium-extension/src/{ => module}/options.coffee (100%) rename omega-target-chromium-extension/src/{ => module}/parse_external_profile.coffee (100%) rename omega-target-chromium-extension/src/{ => module}/proxy_auth.coffee (100%) rename omega-target-chromium-extension/src/{ => module}/storage.coffee (100%) rename omega-target-chromium-extension/src/{ => module}/switchysharp.coffee (100%) rename omega-target-chromium-extension/src/{ => module}/tabs.coffee (100%) rename omega-target-chromium-extension/src/{ => module}/upgrade.coffee (100%) rename omega-target-chromium-extension/src/{ => module}/web_request_monitor.coffee (100%) diff --git a/omega-target-chromium-extension/grunt/browserify.coffee b/omega-target-chromium-extension/grunt/browserify.coffee index 1381680..ab15d6c 100644 --- a/omega-target-chromium-extension/grunt/browserify.coffee +++ b/omega-target-chromium-extension/grunt/browserify.coffee @@ -5,7 +5,7 @@ module.exports = 'index.js': 'index.coffee' options: transform: ['coffeeify'] - exclude: ['bluebird', 'omega-pac'] + exclude: ['bluebird', 'omega-pac', 'omega-target'] browserifyOptions: extensions: '.coffee' builtins: [] @@ -30,7 +30,7 @@ module.exports = omega_webext_proxy_script: files: 'build/js/omega_webext_proxy_script.min.js': - 'omega_webext_proxy_script.js' + 'src/js/omega_webext_proxy_script.js' options: alias: 'omega-pac': 'omega-pac/omega_pac.min.js' diff --git a/omega-target-chromium-extension/grunt/coffee.coffee b/omega-target-chromium-extension/grunt/coffee.coffee index db255f8..f97255c 100644 --- a/omega-target-chromium-extension/grunt/coffee.coffee +++ b/omega-target-chromium-extension/grunt/coffee.coffee @@ -1,13 +1,7 @@ module.exports = - target_web: - files: - 'build/js/omega_target_web.js': 'omega_target_web.coffee' - background: - files: - 'build/js/background.js': 'background.coffee' - background_preload: - files: - 'build/js/background_preload.js': 'background_preload.coffee' - omega_debug: - files: - 'build/js/omega_debug.js': 'omega_debug.coffee' + coffee: + expand: true + cwd: 'src/coffee' + src: ['**/*.coffee'] + dest: 'build/js/' + ext: '.js' diff --git a/omega-target-chromium-extension/grunt/copy.coffee b/omega-target-chromium-extension/grunt/copy.coffee index cd4afff..39b1f62 100644 --- a/omega-target-chromium-extension/grunt/copy.coffee +++ b/omega-target-chromium-extension/grunt/copy.coffee @@ -12,6 +12,8 @@ module.exports = src: 'omega_target_chromium_extension.min.js' dest: 'build/js/' target_popup: + expand: true + cwd: 'src/js' src: 'omega_target_popup.js' dest: 'build/js/' overlay: diff --git a/omega-target-chromium-extension/grunt/watch.coffee b/omega-target-chromium-extension/grunt/watch.coffee index 2d18a99..80198ac 100644 --- a/omega-target-chromium-extension/grunt/watch.coffee +++ b/omega-target-chromium-extension/grunt/watch.coffee @@ -18,14 +18,11 @@ module.exports = files: ['overlay/**/*'] tasks: ['copy:overlay'] copy_target_popup: - files: ['omega_target_popup.js'] + files: ['src/js/omega_target_popup.js'] tasks: ['copy:target_popup'] - src: - files: ['src/**/*.coffee'] - tasks: ['coffeelint:src', 'browserify', 'copy:target_self'] - browserify_omega_webext_proxy_script: - files: ['omega_webext_proxy_script.js'] - tasks: ['browserify:omega_webext_proxy_script'] coffee: - files: ['src/**/*.coffee', '*.coffee'] - tasks: ['coffeelint:src', 'coffee', 'copy:target_self'] + files: ['src/**/*.coffee'] + tasks: ['coffeelint:src', 'browserify', 'coffee', 'copy:target_self'] + browserify_omega_webext_proxy_script: + files: ['src/js/omega_webext_proxy_script.js'] + tasks: ['browserify:omega_webext_proxy_script'] diff --git a/omega-target-chromium-extension/index.coffee b/omega-target-chromium-extension/index.coffee index 18adbdb..f900980 100644 --- a/omega-target-chromium-extension/index.coffee +++ b/omega-target-chromium-extension/index.coffee @@ -1,12 +1 @@ -module.exports = - Storage: require('./src/storage') - Options: require('./src/options') - ChromeTabs: require('./src/tabs') - SwitchySharp: require('./src/switchysharp') - ExternalApi: require('./src/external_api.coffee') - WebRequestMonitor: require('./src/web_request_monitor') - Inspect: require('./src/inspect') - Url: require('url') - -for name, value of require('omega-target') - module.exports[name] ?= value +module.exports = require('./src/module') diff --git a/omega-target-chromium-extension/background.coffee b/omega-target-chromium-extension/src/coffee/background.coffee similarity index 100% rename from omega-target-chromium-extension/background.coffee rename to omega-target-chromium-extension/src/coffee/background.coffee diff --git a/omega-target-chromium-extension/background_preload.coffee b/omega-target-chromium-extension/src/coffee/background_preload.coffee similarity index 100% rename from omega-target-chromium-extension/background_preload.coffee rename to omega-target-chromium-extension/src/coffee/background_preload.coffee diff --git a/omega-target-chromium-extension/omega_debug.coffee b/omega-target-chromium-extension/src/coffee/omega_debug.coffee similarity index 100% rename from omega-target-chromium-extension/omega_debug.coffee rename to omega-target-chromium-extension/src/coffee/omega_debug.coffee diff --git a/omega-target-chromium-extension/omega_target_web.coffee b/omega-target-chromium-extension/src/coffee/omega_target_web.coffee similarity index 100% rename from omega-target-chromium-extension/omega_target_web.coffee rename to omega-target-chromium-extension/src/coffee/omega_target_web.coffee diff --git a/omega-target-chromium-extension/omega_target_popup.js b/omega-target-chromium-extension/src/js/omega_target_popup.js similarity index 100% rename from omega-target-chromium-extension/omega_target_popup.js rename to omega-target-chromium-extension/src/js/omega_target_popup.js diff --git a/omega-target-chromium-extension/omega_webext_proxy_script.js b/omega-target-chromium-extension/src/js/omega_webext_proxy_script.js similarity index 100% rename from omega-target-chromium-extension/omega_webext_proxy_script.js rename to omega-target-chromium-extension/src/js/omega_webext_proxy_script.js diff --git a/omega-target-chromium-extension/src/chrome_api.coffee b/omega-target-chromium-extension/src/module/chrome_api.coffee similarity index 100% rename from omega-target-chromium-extension/src/chrome_api.coffee rename to omega-target-chromium-extension/src/module/chrome_api.coffee diff --git a/omega-target-chromium-extension/src/chrome_port.coffee b/omega-target-chromium-extension/src/module/chrome_port.coffee similarity index 100% rename from omega-target-chromium-extension/src/chrome_port.coffee rename to omega-target-chromium-extension/src/module/chrome_port.coffee diff --git a/omega-target-chromium-extension/src/external_api.coffee b/omega-target-chromium-extension/src/module/external_api.coffee similarity index 100% rename from omega-target-chromium-extension/src/external_api.coffee rename to omega-target-chromium-extension/src/module/external_api.coffee diff --git a/omega-target-chromium-extension/src/fetch_url.coffee b/omega-target-chromium-extension/src/module/fetch_url.coffee similarity index 100% rename from omega-target-chromium-extension/src/fetch_url.coffee rename to omega-target-chromium-extension/src/module/fetch_url.coffee diff --git a/omega-target-chromium-extension/src/module/index.coffee b/omega-target-chromium-extension/src/module/index.coffee new file mode 100644 index 0000000..cc69cf9 --- /dev/null +++ b/omega-target-chromium-extension/src/module/index.coffee @@ -0,0 +1,12 @@ +module.exports = + Storage: require('./storage') + Options: require('./options') + ChromeTabs: require('./tabs') + SwitchySharp: require('./switchysharp') + ExternalApi: require('./external_api') + WebRequestMonitor: require('./web_request_monitor') + Inspect: require('./inspect') + Url: require('url') + +for name, value of require('omega-target') + module.exports[name] ?= value diff --git a/omega-target-chromium-extension/src/inspect.coffee b/omega-target-chromium-extension/src/module/inspect.coffee similarity index 100% rename from omega-target-chromium-extension/src/inspect.coffee rename to omega-target-chromium-extension/src/module/inspect.coffee diff --git a/omega-target-chromium-extension/src/options.coffee b/omega-target-chromium-extension/src/module/options.coffee similarity index 100% rename from omega-target-chromium-extension/src/options.coffee rename to omega-target-chromium-extension/src/module/options.coffee diff --git a/omega-target-chromium-extension/src/parse_external_profile.coffee b/omega-target-chromium-extension/src/module/parse_external_profile.coffee similarity index 100% rename from omega-target-chromium-extension/src/parse_external_profile.coffee rename to omega-target-chromium-extension/src/module/parse_external_profile.coffee diff --git a/omega-target-chromium-extension/src/proxy_auth.coffee b/omega-target-chromium-extension/src/module/proxy_auth.coffee similarity index 100% rename from omega-target-chromium-extension/src/proxy_auth.coffee rename to omega-target-chromium-extension/src/module/proxy_auth.coffee diff --git a/omega-target-chromium-extension/src/storage.coffee b/omega-target-chromium-extension/src/module/storage.coffee similarity index 100% rename from omega-target-chromium-extension/src/storage.coffee rename to omega-target-chromium-extension/src/module/storage.coffee diff --git a/omega-target-chromium-extension/src/switchysharp.coffee b/omega-target-chromium-extension/src/module/switchysharp.coffee similarity index 100% rename from omega-target-chromium-extension/src/switchysharp.coffee rename to omega-target-chromium-extension/src/module/switchysharp.coffee diff --git a/omega-target-chromium-extension/src/tabs.coffee b/omega-target-chromium-extension/src/module/tabs.coffee similarity index 100% rename from omega-target-chromium-extension/src/tabs.coffee rename to omega-target-chromium-extension/src/module/tabs.coffee diff --git a/omega-target-chromium-extension/src/upgrade.coffee b/omega-target-chromium-extension/src/module/upgrade.coffee similarity index 100% rename from omega-target-chromium-extension/src/upgrade.coffee rename to omega-target-chromium-extension/src/module/upgrade.coffee diff --git a/omega-target-chromium-extension/src/web_request_monitor.coffee b/omega-target-chromium-extension/src/module/web_request_monitor.coffee similarity index 100% rename from omega-target-chromium-extension/src/web_request_monitor.coffee rename to omega-target-chromium-extension/src/module/web_request_monitor.coffee From 1e06ede549c1b349e5927752472f577102afe467 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Wed, 2 Aug 2017 22:57:44 -0400 Subject: [PATCH 27/27] Remove downloads permission from archive (unneeded for Chromium). --- omega-target-chromium-extension/.gitignore | 1 + .../Gruntfile.coffee | 5 +++++ .../grunt/aliases.coffee | 2 +- .../grunt/compress.coffee | 17 +++++++++++++---- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/omega-target-chromium-extension/.gitignore b/omega-target-chromium-extension/.gitignore index 6654382..26addc4 100644 --- a/omega-target-chromium-extension/.gitignore +++ b/omega-target-chromium-extension/.gitignore @@ -1,5 +1,6 @@ /index.js /omega_target_*.min.js +/tmp /build /release.zip diff --git a/omega-target-chromium-extension/Gruntfile.coffee b/omega-target-chromium-extension/Gruntfile.coffee index 914195d..6c00819 100644 --- a/omega-target-chromium-extension/Gruntfile.coffee +++ b/omega-target-chromium-extension/Gruntfile.coffee @@ -1,3 +1,8 @@ module.exports = (grunt) -> require('load-grunt-config')(grunt) require('./grunt-po2crx')(grunt) + + grunt.registerTask 'chromium-manifest', -> + manifest = grunt.file.readJSON('overlay/manifest.json') + manifest.permissions = manifest.permissions.filter (p) -> p != 'downloads' + grunt.file.write('tmp/manifest.json', JSON.stringify(manifest)) diff --git a/omega-target-chromium-extension/grunt/aliases.coffee b/omega-target-chromium-extension/grunt/aliases.coffee index 21938ba..c296b37 100644 --- a/omega-target-chromium-extension/grunt/aliases.coffee +++ b/omega-target-chromium-extension/grunt/aliases.coffee @@ -7,4 +7,4 @@ module.exports = 'po2crx' ] test: ['mochaTest'] - release: ['default', 'compress'] + release: ['default', 'chromium-manifest', 'compress'] diff --git a/omega-target-chromium-extension/grunt/compress.coffee b/omega-target-chromium-extension/grunt/compress.coffee index 6792332..7528a4b 100644 --- a/omega-target-chromium-extension/grunt/compress.coffee +++ b/omega-target-chromium-extension/grunt/compress.coffee @@ -3,7 +3,16 @@ module.exports = archive: './release.zip' mode: 'zip' build: - cwd: 'build' - src: ['**'] - expand: true - filter: 'isFile' + files: [ + { + cwd: 'build' + src: ['**', '!manifest.json'] + expand: true + filter: 'isFile' + } + { + cwd: 'tmp/' + src: 'manifest.json' + expand: true + } + ]