From 5fd05a8cf069e3b7a5d047f996689b810e125f6d Mon Sep 17 00:00:00 2001 From: HR Date: Sat, 29 Jun 2019 03:04:48 +0100 Subject: [PATCH] Update styles, fix buffer security bug #41 and other bugs --- app/config.js | 6 +++--- app/script/logger.js | 4 +++- app/script/utils.js | 14 ++++++++++++++ app/src/crypter.js | 15 +++++++++------ app/static/styles/settings.css | 2 +- app/static/styles/settings.less | 4 ++++ 6 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 app/script/utils.js diff --git a/app/config.js b/app/config.js index 5709ef2..3520623 100644 --- a/app/config.js +++ b/app/config.js @@ -77,12 +77,12 @@ module.exports = { DECRYPT: 'Not a Crypter file (can not get salt, iv and authTag)', MS: { INVALID_FILE: 'Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?', - AUTH_FAIL: 'Unsupported state or unable to authenticate data' + AUTH_FAIL: 'Unsupported state or unable to authenticate data', } }, COLORS: { - bad: '#9F3A38', - good: '#2ECC71', + bad: '#dc3545', + good: '#28a745', highlight: '#333333' }, SETTINGS: { diff --git a/app/script/logger.js b/app/script/logger.js index f3b8b51..f93da6d 100644 --- a/app/script/logger.js +++ b/app/script/logger.js @@ -4,8 +4,10 @@ * Custom logger for debugging ******************************/ const { createLogger, format, transports } = require('winston') +const { isRenderer } = require('./utils') + // const { app } = require('electron') -if (process.env.TEST_RUN) { +if (process.env.TEST_RUN || isRenderer()) { module.exports = createLogger({ silent: true, exitOnError: false diff --git a/app/script/utils.js b/app/script/utils.js new file mode 100644 index 0000000..0aaa0d2 --- /dev/null +++ b/app/script/utils.js @@ -0,0 +1,14 @@ +module.exports = { + isRenderer: function () { + // running in a web browser + if (typeof process === 'undefined') return true + + // node-integration is disabled + if (!process) return true + + // We're in node.js somehow + if (!process.type) return false + + return process.type === 'renderer' + } +} \ No newline at end of file diff --git a/app/src/crypter.js b/app/src/crypter.js index 01d6950..779290a 100644 --- a/app/src/crypter.js +++ b/app/src/crypter.js @@ -51,12 +51,15 @@ exports.window = function (global, callback) { .catch((err) => { logger.info(`decryptFile error`) logger.error(err) - if (err.message == ERRORS.MS.INVALID_FILE) { - webContents.send('cryptErr', ERRORS.INVALID_FILE) - } else if (err.message == ERRORS.MS.AUTH_FAIL) { - webContents.send('cryptErr', ERRORS.AUTH_FAIL) - } else { - webContents.send('cryptErr', err.message) + switch (err.message.trim()) { + case ERRORS.MS.INVALID_FILE: + webContents.send('cryptErr', ERRORS.INVALID_FILE) + break; + case ERRORS.MS.AUTH_FAIL: + webContents.send('cryptErr', ERRORS.AUTH_FAIL) + break; + default: + webContents.send('cryptErr', err.message) } }) }) diff --git a/app/static/styles/settings.css b/app/static/styles/settings.css index b638d91..af8b72a 100644 --- a/app/static/styles/settings.css +++ b/app/static/styles/settings.css @@ -1 +1 @@ -@import "../../node_modules/normalize.css/normalize.css";body,p{margin:0}.button,body,button{background-color:#FFF;width:100%}.fancy,button.fancy{color:#FFF;animation:OrangeAnimGrad 3s ease infinite}.fancy:active,.fancy:hover,button.fancy:active,button.fancy:hover{opacity:.8}@keyframes colorTrans{from{border-bottom:1px solid #DDD}to{border-bottom:1px solid #333}}body{font-family:Roboto,HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",Helvetica,"Lucida Grande",sans-serif;font-weight:300;padding:0;height:100vh;overflow:scroll}div.none{display:none}.left{align-self:flex-start!important;-webkit-align-self:flex-start}.right{margin-left:auto!important}.button,button{border:1px solid #DDD;padding:.3rem;font-weight:400;outline:0}.button:active,.button:hover,button:active,button:hover{background-color:#DDD}button.fancy{margin-top:.2rem;border:none;width:30%!important;background:linear-gradient(to right,#EEA849,#F46B45);background-size:200% 200%}.fancy{border:none;background:linear-gradient(to right,#EEA849,#F46B45);background-size:200% 200%}input[type=text]{border:none;border-bottom:1px solid #DDD;outline:0;vertical-align:top}input[type=text]:focus{animation-name:colorTrans;animation-duration:2s;border-bottom:1px solid #333}img.info{padding-left:.2rem;height:.8rem}p.intrfo{color:#9D9D9D;font-size:.8rem;margin:.4rem}a,a:not(.navigationLink){color:#222;outline:0;text-decoration:none;font-size:.8rem}p.info{display:block;width:100%;box-sizing:border-box;max-height:0;padding:0 .5rem;transition:max-height .5s,padding .3s;background-color:#DDD;font-size:.8rem}img.info:hover+p.info{max-height:10rem;padding-top:.5rem;padding-bottom:.5rem}a{cursor:pointer;cursor:hand}a.back{float:left}a.back>img{height:1rem;padding:.2rem;width:auto}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Italic.eot);src:url(../fonts/Roboto-Italic.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Italic.woff) format('woff'),url(../fonts/Roboto-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-BlackItalic.eot);src:url(../fonts/Roboto-BlackItalic.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-BlackItalic.woff) format('woff'),url(../fonts/Roboto-BlackItalic.ttf) format('truetype');font-weight:900;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Bold.eot);src:url(../fonts/Roboto-Bold.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Bold.woff) format('woff'),url(../fonts/Roboto-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Thin.eot);src:url(../fonts/Roboto-Thin.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Thin.woff) format('woff'),url(../fonts/Roboto-Thin.ttf) format('truetype');font-weight:100;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Medium.eot);src:url(../fonts/Roboto-Medium.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Medium.woff) format('woff'),url(../fonts/Roboto-Medium.ttf) format('truetype');font-weight:500;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Light.eot);src:url(../fonts/Roboto-Light.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Light.woff) format('woff'),url(../fonts/Roboto-Light.ttf) format('truetype');font-weight:300;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Regular.eot);src:url(../fonts/Roboto-Regular.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Regular.woff) format('woff'),url(../fonts/Roboto-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-ThinItalic.eot);src:url(../fonts/Roboto-ThinItalic.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-ThinItalic.woff) format('woff'),url(../fonts/Roboto-ThinItalic.ttf) format('truetype');font-weight:100;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-BoldItalic.eot);src:url(../fonts/Roboto-BoldItalic.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-BoldItalic.woff) format('woff'),url(../fonts/Roboto-BoldItalic.ttf) format('truetype');font-weight:700;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Black.eot);src:url(../fonts/Roboto-Black.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Black.woff) format('woff'),url(../fonts/Roboto-Black.ttf) format('truetype');font-weight:900;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-MediumItalic.eot);src:url(../fonts/Roboto-MediumItalic.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-MediumItalic.woff) format('woff'),url(../fonts/Roboto-MediumItalic.ttf) format('truetype');font-weight:500;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-LightItalic.eot);src:url(../fonts/Roboto-LightItalic.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-LightItalic.woff) format('woff'),url(../fonts/Roboto-LightItalic.ttf) format('truetype');font-weight:300;font-style:italic}.panel-container{overflow:hidden;position:relative;height:100vh}.panel-container>div:not(.menu){position:absolute;text-align:center;transform:translateX(-110%);transition:transform .5s}div.item,h4,section.category{text-align:left}.panel-container>div:not(.menu)>button{margin-top:1rem}.panel-container>div.current{width:100%;min-height:100vh;transform:none;position:relative;display:flex;flex-direction:column}.panel-container>div.current section{height:90vh}.panel-container>div.current~div{transform:translateX(110%)}section#settings{min-height:100%;position:relative;background-color:#FFF}.menu{display:flex;margin-left:0;margin-right:0;border-bottom:2px solid rgba(0,0,0,.15);align-self:flex-end;transition:color .1s ease}.menu:after{content:'';display:block;height:0;clear:both;visibility:hidden}.menu .item:after{display:none}.menu .item{position:relative;cursor:pointer;line-height:1.4rem;text-decoration:none;-webkit-tap-highlight-color:transparent;-webkit-box-flex:0;flex:0 0 auto;-webkit-user-select:none;user-select:none;padding:.7rem 1.1rem .1rem;text-transform:none;color:rgba(0,0,0,.87);transition:background .1s ease,box-shadow .1s ease,color .1s ease}div.item,footer{align-items:center;display:flex}.active.item,.menu .active.item{box-shadow:none;color:rgba(0,0,0,.95)}.menu .active.item{border-bottom:2px solid rgba(0,0,0,.8);font-weight:400}a.item:active{border-bottom:2px solid rgba(0,0,0,.1);margin-bottom:-2px}.active.item{background-color:transparent;border-color:#333;font-weight:700;margin-bottom:-2px}div.item,h4,section.contribute header{border-bottom:1px solid #DDD}.item.right{display:flex;margin-left:auto!important}img.icon{width:1.4rem;height:1.4rem}img.header{width:6rem;height:auto;bottom:0}h3{margin:.5rem 0;font-weight:400}h4,section.contribute div.list .item .name{font-weight:300}h4{margin-top:.5rem;margin-bottom:.5rem}header img.icon{width:6rem;height:6rem}footer{position:absolute;border-top:1px solid #DDD;width:100%;bottom:0;left:0;padding:.3rem 0;font-size:.8rem;justify-content:center;background:#FFF}footer>img{height:1rem!important}input[type=text]{width:15rem}section.category{padding:1rem}div.options{margin-left:1rem}div.option{display:flex;margin-top:.2rem;font-size:.8rem}div.list{height:10rem;width:100%;overflow-y:auto}div.item{padding:.4rem 0}section.general{width:90%;margin:auto}section.general button{margin:.4rem 0}section.general button:nth-child(1){margin-right:.4rem}section.contribute{width:70%;margin:auto}section.contribute div.list{width:100%;margin-bottom:3rem;height:100%}section.contribute div.list .item a{display:flex;align-items:center;text-align:left}section.contribute div.list .item .icon{padding:.4rem}section.crypto{width:90%;margin:1rem auto auto}section.crypto header>img{height:4rem!important;width:auto}section.crypto button{width:20%} \ No newline at end of file +@import "../../node_modules/normalize.css/normalize.css";body,p{margin:0}.button,body,button{background-color:#FFF;width:100%}.fancy,button.fancy{color:#FFF;animation:OrangeAnimGrad 3s ease infinite}.fancy:active,.fancy:hover,button.fancy:active,button.fancy:hover{opacity:.8}@keyframes colorTrans{from{border-bottom:1px solid #DDD}to{border-bottom:1px solid #333}}body{font-family:Roboto,HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",Helvetica,"Lucida Grande",sans-serif;font-weight:300;padding:0;height:100vh;overflow:scroll}div.none{display:none}.left{align-self:flex-start!important;-webkit-align-self:flex-start}.right{margin-left:auto!important}.button,button{border:1px solid #DDD;padding:.3rem;font-weight:400;outline:0}.button:active,.button:hover,button:active,button:hover{background-color:#DDD}button.fancy{margin-top:.2rem;border:none;width:30%!important;background:linear-gradient(to right,#EEA849,#F46B45);background-size:200% 200%}.fancy{border:none;background:linear-gradient(to right,#EEA849,#F46B45);background-size:200% 200%}input[type=text]{border:none;border-bottom:1px solid #DDD;outline:0;vertical-align:top}input[type=text]:focus{animation-name:colorTrans;animation-duration:2s;border-bottom:1px solid #333}img.info{padding-left:.2rem;height:.8rem}p.intrfo{color:#9D9D9D;font-size:.8rem;margin:.4rem}a,a:not(.navigationLink){color:#222;outline:0;text-decoration:none;font-size:.8rem}p.info{display:block;width:100%;box-sizing:border-box;max-height:0;padding:0 .5rem;transition:max-height .5s,padding .3s;background-color:#DDD;font-size:.8rem}img.info:hover+p.info{max-height:10rem;padding-top:.5rem;padding-bottom:.5rem}a{cursor:pointer;cursor:hand}a.back{float:left}a.back>img{height:1rem;padding:.2rem;width:auto}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Italic.eot);src:url(../fonts/Roboto-Italic.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Italic.woff) format('woff'),url(../fonts/Roboto-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-BlackItalic.eot);src:url(../fonts/Roboto-BlackItalic.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-BlackItalic.woff) format('woff'),url(../fonts/Roboto-BlackItalic.ttf) format('truetype');font-weight:900;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Bold.eot);src:url(../fonts/Roboto-Bold.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Bold.woff) format('woff'),url(../fonts/Roboto-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Thin.eot);src:url(../fonts/Roboto-Thin.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Thin.woff) format('woff'),url(../fonts/Roboto-Thin.ttf) format('truetype');font-weight:100;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Medium.eot);src:url(../fonts/Roboto-Medium.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Medium.woff) format('woff'),url(../fonts/Roboto-Medium.ttf) format('truetype');font-weight:500;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Light.eot);src:url(../fonts/Roboto-Light.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Light.woff) format('woff'),url(../fonts/Roboto-Light.ttf) format('truetype');font-weight:300;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Regular.eot);src:url(../fonts/Roboto-Regular.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Regular.woff) format('woff'),url(../fonts/Roboto-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-ThinItalic.eot);src:url(../fonts/Roboto-ThinItalic.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-ThinItalic.woff) format('woff'),url(../fonts/Roboto-ThinItalic.ttf) format('truetype');font-weight:100;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-BoldItalic.eot);src:url(../fonts/Roboto-BoldItalic.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-BoldItalic.woff) format('woff'),url(../fonts/Roboto-BoldItalic.ttf) format('truetype');font-weight:700;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-Black.eot);src:url(../fonts/Roboto-Black.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-Black.woff) format('woff'),url(../fonts/Roboto-Black.ttf) format('truetype');font-weight:900;font-style:normal}@font-face{font-family:Roboto;src:url(../fonts/Roboto-MediumItalic.eot);src:url(../fonts/Roboto-MediumItalic.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-MediumItalic.woff) format('woff'),url(../fonts/Roboto-MediumItalic.ttf) format('truetype');font-weight:500;font-style:italic}@font-face{font-family:Roboto;src:url(../fonts/Roboto-LightItalic.eot);src:url(../fonts/Roboto-LightItalic.eot?#iefix) format('embedded-opentype'),url(../fonts/Roboto-LightItalic.woff) format('woff'),url(../fonts/Roboto-LightItalic.ttf) format('truetype');font-weight:300;font-style:italic}.panel-container{overflow:hidden;position:relative;height:100vh}.panel-container>div:not(.menu){position:absolute;text-align:center;transform:translateX(-110%);transition:transform .5s}.panel-container>div:not(.menu)>button{margin-top:1rem}.panel-container>div.current{width:100%;min-height:100vh;transform:none;position:relative;display:flex;flex-direction:column}.panel-container>div.current section{height:90vh}.panel-container>div.current~div{transform:translateX(110%)}section#settings{min-height:100%;position:relative;background-color:#FFF}p#errLabel{text-align:center}div.item,h4,section.category{text-align:left}.menu{display:flex;margin-left:0;margin-right:0;border-bottom:2px solid rgba(0,0,0,.15);align-self:flex-end;transition:color .1s ease}.menu:after{content:'';display:block;height:0;clear:both;visibility:hidden}.menu .item:after{display:none}.menu .item{position:relative;cursor:pointer;line-height:1.4rem;text-decoration:none;-webkit-tap-highlight-color:transparent;-webkit-box-flex:0;flex:0 0 auto;-webkit-user-select:none;user-select:none;padding:.7rem 1.1rem .1rem;text-transform:none;color:rgba(0,0,0,.87);transition:background .1s ease,box-shadow .1s ease,color .1s ease}div.item,footer{align-items:center;display:flex}.active.item,.menu .active.item{box-shadow:none;color:rgba(0,0,0,.95)}.menu .active.item{border-bottom:2px solid rgba(0,0,0,.8);font-weight:400}a.item:active{border-bottom:2px solid rgba(0,0,0,.1);margin-bottom:-2px}.active.item{background-color:transparent;border-color:#333;font-weight:700;margin-bottom:-2px}div.item,h4,section.contribute header{border-bottom:1px solid #DDD}.item.right{display:flex;margin-left:auto!important}img.icon{width:1.4rem;height:1.4rem}img.header{width:6rem;height:auto;bottom:0}h3{margin:.5rem 0;font-weight:400}h4,section.contribute div.list .item .name{font-weight:300}h4{margin-top:.5rem;margin-bottom:.5rem}header img.icon{width:6rem;height:6rem}footer{position:absolute;border-top:1px solid #DDD;width:100%;bottom:0;left:0;padding:.3rem 0;font-size:.8rem;justify-content:center;background:#FFF}footer>img{height:1rem!important}input[type=text]{width:15rem}section.category{padding:1rem}div.options{margin-left:1rem}div.option{display:flex;margin-top:.2rem;font-size:.8rem}div.list{height:10rem;width:100%;overflow-y:auto}div.item{padding:.4rem 0}section.general{width:90%;margin:auto}section.general button{margin:.4rem 0}section.general button:nth-child(1){margin-right:.4rem}section.contribute{width:70%;margin:auto}section.contribute div.list{width:100%;margin-bottom:3rem;height:100%}section.contribute div.list .item a{display:flex;align-items:center;text-align:left}section.contribute div.list .item .icon{padding:.4rem}section.crypto{width:90%;margin:1rem auto auto}section.crypto header>img{height:4rem!important;width:auto}section.crypto button{width:20%} \ No newline at end of file diff --git a/app/static/styles/settings.less b/app/static/styles/settings.less index 932ae78..6f15272 100644 --- a/app/static/styles/settings.less +++ b/app/static/styles/settings.less @@ -50,6 +50,10 @@ section#settings { background-color: @white; } +p#errLabel { + text-align: center; +} + a:not(.navigationLink) { font-size: 0.8rem; color: @blacker;