From fa13c071b04554d7f43e19310db72e347f2e2b31 Mon Sep 17 00:00:00 2001 From: brantje Date: Wed, 18 Jan 2017 20:44:44 +0100 Subject: [PATCH] Add setting to disable javascript console. This setting is enabled by default. Signed-off-by: brantje --- Gruntfile.js | 1 - js/app/controllers/main.js | 23 +++++++++++++++++++++-- js/app/services/settingsservice.js | 3 +++ js/settings-admin.js | 5 +++++ lib/Service/SettingsService.php | 1 + templates/part.admin.php | 8 ++++++++ 6 files changed, 38 insertions(+), 3 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 9c03ad64..791ca0f8 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -179,7 +179,6 @@ module.exports = function (grunt) { mangle: false, screwIE8: true, banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n', - footer: "(function() { (function a() { try { (function b(i) { if (('' + (i / i)).length !== 1 || i % 20 === 0) { (function() {}).constructor('debugger')(); } else { debugger; } b(++i); })(0); } catch (e) { setTimeout(a, 5000); } })() })();" }, build: { old_files_array: [ diff --git a/js/app/controllers/main.js b/js/app/controllers/main.js index b8f2dbbd..c122501c 100644 --- a/js/app/controllers/main.js +++ b/js/app/controllers/main.js @@ -42,14 +42,33 @@ } $rootScope.$on('settings_loaded', function(){ - if (SettingsService.getSetting('disable_contextmenu') === '1' || SettingsService.getSetting('disable_contextmenu') === 1) { + if (SettingsService.isEnabled('disable_contextmenu')) { document.addEventListener('contextmenu', function (event) { event.preventDefault(); }); } - if (SettingsService.getSetting('https_check') === '0' || SettingsService.getSetting('https_check') === 0) { + if (SettingsService.isEnabled('https_check')) { $scope.http_warning_hidden = true; } + + if(SettingsService.isEnabled('disable_debugger')){ + (function a() { + try { + (function b(i) { + if (('' + (i / i)).length !== 1 || i % 20 === 0) { + (function() {}).constructor('debugger')(); + } else { + // This debugger statement is allowed to block javascript console + /*jshint -W087 */ + debugger; + } + b(++i); + })(0); + } catch (e) { + setTimeout(a, 5000); + } + })(); + } }); $rootScope.setHttpWarning = function (state) { diff --git a/js/app/services/settingsservice.js b/js/app/services/settingsservice.js index 7db91069..70e07d42 100644 --- a/js/app/services/settingsservice.js +++ b/js/app/services/settingsservice.js @@ -57,6 +57,9 @@ setSetting: function (name, value) { settings[name] = value; localStorageService.set('settings', settings); + }, + isEnabled: function (name) { + return settings[name] === 1 || settings[name] === '1'; } }; }]); diff --git a/js/settings-admin.js b/js/settings-admin.js index f9225069..f91f4719 100644 --- a/js/settings-admin.js +++ b/js/settings-admin.js @@ -95,6 +95,7 @@ $(document).ready(function () { $('#passman_check_version').prop('checked', (settings.getKey('check_version').toString().toLowerCase() === '1')); $('#passman_https_check').prop('checked', (settings.getKey('https_check').toString().toLowerCase() === '1')); $('#passman_disable_contextmenu').prop('checked', (settings.getKey('disable_contextmenu').toString().toLowerCase() === '1')); + $('#passman_disable_debugger').prop('checked', (settings.getKey('disable_debugger').toString().toLowerCase() === '1')); $('#vault_key_strength').val(settings.getKey('vault_key_strength')); @@ -110,6 +111,10 @@ $(document).ready(function () { settings.setAdminKey('disable_contextmenu', ($(this).is(":checked")) ? 1 : 0); }); + $('#passman_disable_debugger').change(function () { + settings.setAdminKey('disable_debugger', ($(this).is(":checked")) ? 1 : 0); + }); + $('#passman_sharing_enabled').change(function () { settings.setAdminKey('user_sharing_enabled', ($(this).is(":checked")) ? 1 : 0); }); diff --git a/lib/Service/SettingsService.php b/lib/Service/SettingsService.php index 6aee268d..82bbc34b 100644 --- a/lib/Service/SettingsService.php +++ b/lib/Service/SettingsService.php @@ -56,6 +56,7 @@ class SettingsService { 'disable_contextmenu' => intval($this->config->getAppValue('passman', 'disable_contextmenu', 1)), 'server_side_encryption' => $this->config->getAppValue('passman', 'server_side_encryption', 'aes-256-cbc'), 'rounds_pbkdf2_stretching' => $this->config->getAppValue('passman', 'rounds_pbkdf2_stretching', 100), + 'disable_debugger' => $this->config->getAppValue('passman', 'disable_debugger', 1), 'settings_loaded' => 1 ); } diff --git a/templates/part.admin.php b/templates/part.admin.php index 5aca8912..be2d21be 100644 --- a/templates/part.admin.php +++ b/templates/part.admin.php @@ -83,6 +83,14 @@ $ciphers = openssl_get_cipher_methods(); t('Disable context menu')); ?>

+

+ + +