From 1643172425e5dd1c4afa1225928c9d491fa60760 Mon Sep 17 00:00:00 2001 From: Ramiro Saenz Date: Mon, 23 Jan 2017 16:16:56 -0300 Subject: [PATCH] Fixed Certification Warning and added URL display on mouse over Fixes #573 Fixes #588 Fixes #587 Fixes #585 Fixes #506 Fixes #576 --- app/model/Service.js | 2 +- app/ux/WebView.js | 47 ++++++++++++++----- app/view/add/Add.js | 2 +- app/view/add/AddController.js | 18 +++---- electron/main.js | 22 --------- .../rambox-default-theme/sass/etc/all.scss | 8 ++++ 6 files changed, 55 insertions(+), 44 deletions(-) diff --git a/app/model/Service.js b/app/model/Service.js index 5f14eb83..e108fa3c 100644 --- a/app/model/Service.js +++ b/app/model/Service.js @@ -48,7 +48,7 @@ Ext.define('Rambox.model.Service', { },{ name: 'trust' ,type: 'boolean' - ,defaultValue: false + ,defaultValue: true },{ name: 'enabled' ,type: 'boolean' diff --git a/app/ux/WebView.js b/app/ux/WebView.js index cbe15891..420bd32a 100644 --- a/app/ux/WebView.js +++ b/app/ux/WebView.js @@ -6,9 +6,9 @@ Ext.define('Rambox.ux.WebView',{ ,xtype: 'webview' ,requires: [ - 'Rambox.util.Format', - 'Rambox.util.Notifier', - 'Rambox.util.UnreadCounter' + 'Rambox.util.Format' + ,'Rambox.util.Notifier' + ,'Rambox.util.UnreadCounter' ] // private @@ -34,7 +34,7 @@ Ext.define('Rambox.ux.WebView',{ } // Allow Custom sites with self certificates - if ( me.record.get('trust') ) ipc.send('allowCertificate', me.src); + //if ( me.record.get('trust') ) ipc.send('allowCertificate', me.src); Ext.apply(me, { items: me.webViewConstructor() @@ -123,6 +123,18 @@ Ext.define('Rambox.ux.WebView',{ ] } } + ,bbar: { + xtype: 'statusbar' + ,defaultText: ' Ready' + ,busyIconCls : '' + ,busyText: ' Loading...' + ,items: [ + ,{ + xtype: 'tbtext' + ,itemId: 'url' + } + ] + } ,listeners: { afterrender: me.onAfterRender } @@ -186,17 +198,15 @@ Ext.define('Rambox.ux.WebView',{ // Show and hide spinner when is loading webview.addEventListener("did-start-loading", function() { console.info('Start loading...', me.src); - me.mask('Loading...', 'bottomMask'); - // Manually remove modal from mask - Ext.cq1('#'+me.id).el.dom.getElementsByClassName('bottomMask')[0].parentElement.className = ''; + me.down('statusbar').showBusy(); }); webview.addEventListener("did-stop-loading", function() { - me.unmask(); + me.down('statusbar').clearStatus({useDefaults: true}); }); webview.addEventListener("did-finish-load", function(e) { Rambox.app.setTotalServicesLoaded( Rambox.app.getTotalServicesLoaded() + 1 ); - + // Apply saved zoom level webview.setZoomLevel(me.record.get('zoomLevel')); }); @@ -262,10 +272,21 @@ Ext.define('Rambox.ux.WebView',{ */ console.groupEnd(); - - // Scroll always to top (bug) webview.executeJavaScript('document.body.scrollTop=0;'); + + // Handles Certificate Errors + webview.getWebContents().on('certificate-error', function(event, url, error, certificate, callback) { + if ( me.record.get('trust') ) { + event.preventDefault(); + callback(true); + } else { + callback(false); + } + me.down('statusbar').setStatus({ + text: ' Certification Warning' + }); + }); }); webview.addEventListener('ipc-message', function(event) { @@ -321,6 +342,10 @@ Ext.define('Rambox.ux.WebView',{ if ( e.isMainFrame ) webview.loadURL(e.newURL); }); + webview.addEventListener('update-target-url', function( url ) { + me.down('statusbar #url').setText(url.url); + }); + if(ipc.sendSync('getConfig').spellcheck) { /* var webFrame = require('electron').webFrame; diff --git a/app/view/add/Add.js b/app/view/add/Add.js index 26790f9b..ca4cde5e 100644 --- a/app/view/add/Add.js +++ b/app/view/add/Add.js @@ -157,7 +157,7 @@ Ext.define('Rambox.view.add.Add',{ ,boxLabel: 'Trust invalid authority certificates' ,name: 'trust' ,hidden: me.record.get('type') !== 'custom' - ,checked: me.edit ? me.record.get('trust') : false + ,checked: me.edit ? me.record.get('trust') : true ,uncheckedValue: false ,inputValue: true } diff --git a/app/view/add/AddController.js b/app/view/add/AddController.js index 5c4e6cbb..af8acb4e 100644 --- a/app/view/add/AddController.js +++ b/app/view/add/AddController.js @@ -33,10 +33,10 @@ Ext.define('Rambox.view.add.AddController', { ,url: formValues.url ,align: formValues.align ,notifications: formValues.notifications - ,muted: formValues.muted, - displayTabUnreadCounter: formValues.displayTabUnreadCounter, - includeInGlobalUnreadCounter: formValues.includeInGlobalUnreadCounter, - trust: formValues.trust + ,muted: formValues.muted + ,displayTabUnreadCounter: formValues.displayTabUnreadCounter + ,includeInGlobalUnreadCounter: formValues.includeInGlobalUnreadCounter + ,trust: formValues.trust ,js_unread: formValues.js_unread }); @@ -76,7 +76,7 @@ Ext.define('Rambox.view.add.AddController', { if ( win.record.get('url').indexOf('___') >= 0 ) { formValues.url = formValues.cycleValue === '1' ? win.record.get('url').replace('___', formValues.url) : formValues.url; } - + var service = Ext.create('Rambox.model.Service', { type: win.record.get('id') ,logo: formValues.logo @@ -84,10 +84,10 @@ Ext.define('Rambox.view.add.AddController', { ,url: formValues.url ,align: formValues.align ,notifications: formValues.notifications - ,muted: formValues.muted, - displayTabUnreadCounter: formValues.displayTabUnreadCounter, - includeInGlobalUnreadCounter: formValues.includeInGlobalUnreadCounter, - trust: formValues.trust + ,muted: formValues.muted + ,displayTabUnreadCounter: formValues.displayTabUnreadCounter + ,includeInGlobalUnreadCounter: formValues.includeInGlobalUnreadCounter + ,trust: formValues.trust ,js_unread: formValues.js_unread }); service.save(); diff --git a/electron/main.js b/electron/main.js index 73f9b476..d17e85db 100644 --- a/electron/main.js +++ b/electron/main.js @@ -306,28 +306,6 @@ if (shouldQuit) { return; } -var allowedURLCertificates = []; -ipcMain.on('allowCertificate', (event, url) => { - allowedURLCertificates.push(require('url').parse(url).host); -}); -app.on('certificate-error', function(event, webContents, url, error, certificate, callback) { - if ( allowedURLCertificates.indexOf(require('url').parse(url).host) >= 0 ) { - event.preventDefault(); - callback(true); - } else { - callback(false); - dialog.showMessageBox(mainWindow, { - title: 'Certification Warning' - ,message: 'The service with the following URL has an invalid authority certification.\n\n'+url+'\n\nIf is a Custom Service, you have to remove it and add it again, enabling the "Trust invalid authority certificates" in the Options.' - ,buttons: ['OK'] - ,type: 'warning' - }, function() { - - }); - } -}); - - // Code for downloading images as temporal files // Credit: Ghetto Skype (https://github.com/stanfieldr/ghetto-skype) const tmp = require('tmp'); diff --git a/packages/local/rambox-default-theme/sass/etc/all.scss b/packages/local/rambox-default-theme/sass/etc/all.scss index 1eda5991..bab3a8a9 100644 --- a/packages/local/rambox-default-theme/sass/etc/all.scss +++ b/packages/local/rambox-default-theme/sass/etc/all.scss @@ -260,3 +260,11 @@ body { .auth0-lock.auth0-lock .auth0-lock-header-logo { height: 50px !important; } + +.x-statusbar { + padding: 0px !important; + &.x-docked-bottom { + border-top: 1px solid #CCC !important; + border-top-width: 1px !important; + } +}