From 8d8ae1a3abff647d692a264d3937aced82d32397 Mon Sep 17 00:00:00 2001 From: "WFAGuy.com" <37864434+wfaguy@users.noreply.github.com> Date: Wed, 14 Sep 2022 16:54:25 +0200 Subject: [PATCH 1/5] added mysql secure connection --- CHANGELOG.md | 8 +++++ client/package.json | 16 ++++----- client/src/views/Credentials.vue | 7 ++-- server/package.json | 38 +++++++++++----------- server/src/db/create_schema_and_tables.sql | 1 + server/src/lib/mysql.js | 10 ++++++ server/src/models/credential.model.js | 3 +- server/src/models/schema.model.js | 1 + server/src/swagger.json | 2 +- 9 files changed, 55 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7ab3d71..e63f6698 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Allow secure connection for mysql + +### Changed + +- Updated nodejs packages + ## [3.0.6] - 2022-08-10 ### Fixed diff --git a/client/package.json b/client/package.json index 0f3d1e60..42b200b8 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "ansible_forms_vue", - "version": "3.0.6", + "version": "3.0.7", "private": true, "scripts": { "serve": "vue-cli-service serve", @@ -20,7 +20,7 @@ "vue-router": "~3.5.4", "vue-toastification" : "1.7.14", "vue-json-pretty" : "1.8.3", - "copy-to-clipboard" : "*", + "copy-to-clipboard" : "~3.3.2", "bulma" : "0.9.4", "bulma-quickview" : "*", "bulma-checkradio": "~2.1.3", @@ -33,11 +33,11 @@ "yaml": "1.10.2", "thenby": "*", "vue-showdown": "2.4.1", - "@fortawesome/fontawesome-svg-core":"~6.1.1", - "@fortawesome/free-solid-svg-icons":"~6.1.1", - "@fortawesome/free-regular-svg-icons":"~6.1.1", - "@fortawesome/free-brands-svg-icons":"~6.1.1", - "@fortawesome/vue-fontawesome":"2.0.6", + "@fortawesome/fontawesome-svg-core":"~6.2.0", + "@fortawesome/free-solid-svg-icons":"~6.2.0", + "@fortawesome/free-regular-svg-icons":"~6.2.0", + "@fortawesome/free-brands-svg-icons":"~6.2.0", + "@fortawesome/vue-fontawesome":"2.0.8", "@femessage/log-viewer":"*" }, @@ -47,7 +47,7 @@ "@vue/cli-plugin-eslint": "~4.5.0", "@vue/cli-service": "~4.5.0", "babel-eslint": "~10.1.0", - "eslint": "~7.5.0", + "eslint": "~6.8.0", "eslint-plugin-vue": "~6.2.2", "vue-template-compiler": "~2.6.11", "nodemon": "~2.0.16", diff --git a/client/src/views/Credentials.vue b/client/src/views/Credentials.vue index fece0400..896fb67d 100644 --- a/client/src/views/Credentials.vue +++ b/client/src/views/Credentials.vue @@ -32,6 +32,7 @@ +

@@ -49,6 +50,7 @@ import BulmaAdminTable from './../components/BulmaAdminTable.vue' import BulmaInput from './../components/BulmaInput.vue' import BulmaModal from './../components/BulmaModal.vue' + import BulmaCheckbox from './../components/BulmaCheckRadio.vue' import TokenStorage from './../lib/TokenStorage' import { required, email, minValue,maxValue,minLength,maxLength,helpers,requiredIf,sameAs,numeric } from 'vuelidate/lib/validators' @@ -59,7 +61,7 @@ authenticated:{type:Boolean}, isAdmin:{type:Boolean} }, - components:{BulmaButton,BulmaInput,BulmaModal,BulmaAdminTable}, + components:{BulmaButton,BulmaInput,BulmaModal,BulmaAdminTable,BulmaCheckbox}, data(){ return { credential:{ @@ -68,7 +70,8 @@ password:"", host:"", port:3306, - description:"" + description:"", + secure:false }, showDelete:false, credentialItem:undefined, diff --git a/server/package.json b/server/package.json index 5ecf7314..9d77b7b6 100644 --- a/server/package.json +++ b/server/package.json @@ -1,6 +1,6 @@ { "name": "ansible_forms", - "version": "3.0.6", + "version": "3.0.7", "repository": { "type": "git", "url": "git://github.com/ansibleguy76/ansibleforms.git" @@ -17,15 +17,15 @@ "clean": "rimraf dist" }, "dependencies": { - "core-js": "~3.22.8", + "core-js": "~3.25.1", "axios": "~0.27.2", "cors": "~2.8.5", "bcrypt": "~5.0.1", - "cheerio": "~1.0.0-rc.11", + "cheerio": "~1.0.0-rc.12", "connect-history-api-fallback": "~1.6.0", "express": "~4.18.1", - "winston": "~3.7.2", - "winston-syslog": "~2.5.0", + "winston": "~3.8.2", + "winston-syslog": "~2.6.0", "passport": "~0.6.0", "passport-http": "~0.3.0", "passport-jwt": "~4.0.0", @@ -34,30 +34,30 @@ "ajv-error-parser": "~1.0.7", "bluebird": "~3.7.2", "node-jq": "~2.3.3", - "moment": "~2.29.3", + "moment": "~2.29.4", "yaml": "~1.10.2", "cert-info":"~1.5.1", "thenby":"~1.3.4", - "mssql":"~8.1.2", - "mongodb":"~4.6.0", - "pg":"~8.7.3", + "mssql":"~8.1.4", + "mongodb":"~4.9.1", + "pg":"~8.8.0", "fs-extra":"~10.1.0", "node-cache":"~5.1.2", - "ldap-authentication": "~2.2.9", - "ldapjs": "~2.3.2", + "ldap-authentication": "~2.3.1", + "ldapjs": "~2.3.3", "read-last-lines": "~1.8.0", - "swagger-ui-express": "~4.4.0", - "nodemailer": "~6.7.5" + "swagger-ui-express": "~4.5.0", + "nodemailer": "~6.7.8" }, "devDependencies": { - "@babel/core": "7.18.2", - "@babel/cli": "~7.17.10", - "@babel/node": "~7.17.10", - "@babel/eslint-parser": "7.18.2", - "nodemon": "~2.0.16", + "@babel/core": "7.19.0", + "@babel/cli": "~7.18.10", + "@babel/node": "~7.18.10", + "@babel/eslint-parser": "7.18.9", + "nodemon": "~2.0.19", "rifraf": "~2.0.3", "npm-run-all": "*", - "dotenv": "~16.0.1", + "dotenv": "~16.0.2", "eslint": "~7.5.0" }, "eslintConfig": { diff --git a/server/src/db/create_schema_and_tables.sql b/server/src/db/create_schema_and_tables.sql index 4e32c606..9c5826fd 100644 --- a/server/src/db/create_schema_and_tables.sql +++ b/server/src/db/create_schema_and_tables.sql @@ -35,6 +35,7 @@ CREATE TABLE `credentials` ( `host` varchar(250) DEFAULT NULL, `port` int(11) DEFAULT NULL, `description` text NOT NULL, + `secure` tinyint(4) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_AnsibleForms_credentials_natural_key` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/server/src/lib/mysql.js b/server/src/lib/mysql.js index c67547df..ac039d09 100644 --- a/server/src/lib/mysql.js +++ b/server/src/lib/mysql.js @@ -15,6 +15,16 @@ MySql.query=function(connection_name,query){ try{ logger.debug(`[${connection_name}] connection found : ${config.name}`) config.multipleStatements=true + if(config.secure){ + config.ssl={ + sslmode:"required", + rejectUnauthorized:false + } + }else{ + config.ssl={ + sslmode:"none" + } + } // get connection conn = client.createConnection(config) }catch(err){ diff --git a/server/src/models/credential.model.js b/server/src/models/credential.model.js index 1c138294..3d951387 100644 --- a/server/src/models/credential.model.js +++ b/server/src/models/credential.model.js @@ -16,6 +16,7 @@ var Credential=function(credential){ this.host = credential.host; this.port = credential.port; this.user = credential.user; + this.secure = (credential.secure)?1:0; this.password = encrypt(credential.password); this.description = credential.description; }; @@ -79,7 +80,7 @@ Credential.findByName = function (name) { logger.debug(`Finding credential ${name}`) var cred = cache.get(name) if(cred==undefined){ - return mysql.do("SELECT host,port,name,user,password FROM AnsibleForms.`credentials` WHERE name=?;",name) + return mysql.do("SELECT host,port,name,user,password,secure FROM AnsibleForms.`credentials` WHERE name=?;",name) .then((res)=>{ if(res.length>0){ res[0].multipleStatements = true diff --git a/server/src/models/schema.model.js b/server/src/models/schema.model.js index 2769983c..ea66d95f 100644 --- a/server/src/models/schema.model.js +++ b/server/src/models/schema.model.js @@ -204,6 +204,7 @@ function patchAll(){ tablePromises.push(addColumn("jobs","parent_id","int(11)",true,"NULL")) // add for multistep tablePromises.push(renameColumn("jobs","playbook","target","VARCHAR(250)")) // better column name tablePromises.push(addColumn("jobs","step","varchar(250)",true,"NULL")) // add column to hold current step + tablePromises.push(addColumn("credentials","secure","tinyint(4)",true,"0")) // add column to have secure connection buffer = fs.readFileSync(`${__dirname}/../db/create_settings_table.sql`) sql = buffer.toString() tablePromises.push(addTable("settings",sql)) // add settings table diff --git a/server/src/swagger.json b/server/src/swagger.json index c6e060a9..423e64b7 100644 --- a/server/src/swagger.json +++ b/server/src/swagger.json @@ -2,7 +2,7 @@ "swagger": "2.0", "info": { "description": "This is the swagger interface for AnsibleForms.\r\nUse the `/auth/login` api with basic authentication to obtain a JWT token.\r\nThen use the access token, prefixed with the word '**Bearer**' to use all other api's.\r\nNote that the access token is limited in time. You can then either login again and get a new set of tokens or use the `/token` api and the refresh token to obtain a new set (preferred).", - "version": "3.0.6", + "version": "3.0.7", "title": "AnsibleForms", "contact": { "email": "info@ansibleforms.com" From 1fc2dfb044542133e624ea37f8f525e96d574138 Mon Sep 17 00:00:00 2001 From: "WFAGuy.com" <37864434+wfaguy@users.noreply.github.com> Date: Thu, 15 Sep 2022 14:18:02 +0200 Subject: [PATCH 2/5] added credential check with database type --- client/src/components/BulmaSelect.vue | 4 +- client/src/views/Credentials.vue | 28 +++++++++-- .../src/controllers/credential.controller.js | 30 ++++++++++++ server/src/db/create_schema_and_tables.sql | 1 + server/src/lib/mysql.js | 3 +- server/src/models/credential.model.js | 5 +- server/src/models/db.model.js | 30 ------------ server/src/models/schema.model.js | 1 + server/src/routes/credential.routes.js | 2 + server/src/swagger.json | 48 +++++++++++++++++++ 10 files changed, 113 insertions(+), 39 deletions(-) diff --git a/client/src/components/BulmaSelect.vue b/client/src/components/BulmaSelect.vue index 0bcd455d..a20509b8 100644 --- a/client/src/components/BulmaSelect.vue +++ b/client/src/components/BulmaSelect.vue @@ -26,8 +26,8 @@ icon:{type:[String,Array],default:''}, label:{type:String,required:true}, list:{type:Array,required:true}, - valuecol:{type:String,required:true}, - labelcol:{type:String,required:true}, + valuecol:{type:String,required:false}, + labelcol:{type:String,required:false}, hasError:{type:Boolean,default:false}, errors:{type:Array}, },data(){ diff --git a/client/src/views/Credentials.vue b/client/src/views/Credentials.vue index 896fb67d..6272a9db 100644 --- a/client/src/views/Credentials.vue +++ b/client/src/views/Credentials.vue @@ -17,11 +17,12 @@ :columns="['name','user','host']" :filters="['name','user','host']" identifier="id" - :actions="[{name:'select',title:'edit credential',icon:'pencil-alt',color:'has-text-warning'},{name:'delete',title:'delete credential',icon:'times',color:'has-text-danger'}]" + :actions="[{name:'select',title:'edit credential',icon:'pencil-alt',color:'has-text-warning'},{name:'delete',title:'delete credential',icon:'times',color:'has-text-danger'},{name:'test',title:'test credential',icon:'database',color:'has-text-link'}]" :currentItem="credentialItem" @select="selectItem" @reset="resetItem" @delete="deleteItem" + @test="testItem" /> @@ -32,6 +33,7 @@ +

@@ -51,6 +53,7 @@ import BulmaInput from './../components/BulmaInput.vue' import BulmaModal from './../components/BulmaModal.vue' import BulmaCheckbox from './../components/BulmaCheckRadio.vue' + import BulmaSelect from './../components/BulmaSelect.vue' import TokenStorage from './../lib/TokenStorage' import { required, email, minValue,maxValue,minLength,maxLength,helpers,requiredIf,sameAs,numeric } from 'vuelidate/lib/validators' @@ -61,7 +64,7 @@ authenticated:{type:Boolean}, isAdmin:{type:Boolean} }, - components:{BulmaButton,BulmaInput,BulmaModal,BulmaAdminTable,BulmaCheckbox}, + components:{BulmaButton,BulmaInput,BulmaModal,BulmaAdminTable,BulmaCheckbox,BulmaSelect}, data(){ return { credential:{ @@ -71,7 +74,8 @@ host:"", port:3306, description:"", - secure:false + secure:false, + db_type:"" }, showDelete:false, credentialItem:undefined, @@ -107,6 +111,21 @@ this.selectItem(value) this.showDelete=true }, + testItem(value){ + var ref= this; + if(value){ + axios.get('/api/v1/credential/testdb/' + value,TokenStorage.getAuthentication()) + .then((result)=>{ + if(result.data.status=='success'){ + ref.$toast.success(result.data.message) + }else{ + ref.$toast.error(result.data.message + "\r\n" + result.data.data.error) + } + }),function(error){ + ref.$toast.error(error.message); + }; + } + }, loadCredential(){ var ref= this; if(this.credentialItem!=undefined && this.credentialItem!=-1){ @@ -124,7 +143,8 @@ name:"" } } - },deleteCredential(){ + }, + deleteCredential(){ var ref= this; axios.delete('/api/v1/credential/'+this.credentialItem,TokenStorage.getAuthentication()) .then((result)=>{ diff --git a/server/src/controllers/credential.controller.js b/server/src/controllers/credential.controller.js index 3a686039..bab164d9 100644 --- a/server/src/controllers/credential.controller.js +++ b/server/src/controllers/credential.controller.js @@ -1,6 +1,9 @@ 'use strict'; const Credential = require('../models/credential.model'); var RestResult = require('../models/restResult.model'); +const mysql=require("../lib/mysql") +const postgres=require("../lib/postgres") +const mssql=require("../lib/mssql") exports.find = function(req, res) { if(req.query.name){ @@ -49,3 +52,30 @@ exports.delete = function(req, res) { .then(()=>{res.json(new RestResult("success","credential deleted",null,""))}) .catch((err)=>{res.json(new RestResult("error","failed to delete credential",null,err))}) }; +exports.testDb = function(req,res){ + Credential.findById(req.params.id) + .then((cred)=>{ + var db_type = cred[0].db_type + if(db_type=='mysql'){ + return mysql.query(cred[0].name,'select 1') + }else if(db_type=='mssql'){ + return mssql.query(cred[0].name,'select 1') + }else if(db_type=='postgres'){ + return postgres.query(cred[0].name,'select 1') + }else if(db_type=='mongodb'){ + throw "Mongodb test is not implemented" + }else{ + throw "Database type not set" + } + }) + .then(()=>{res.json(new RestResult("success","Database connection ok",null,""))}) + .catch((err)=>{ + if(err.includes("not set")){ + res.json(new RestResult("error","Database type not set",null,"")) + }else{ + res.json(new RestResult("error","Database connection failed",null,err)) + } + + }) + +} diff --git a/server/src/db/create_schema_and_tables.sql b/server/src/db/create_schema_and_tables.sql index 9c5826fd..34c3876b 100644 --- a/server/src/db/create_schema_and_tables.sql +++ b/server/src/db/create_schema_and_tables.sql @@ -36,6 +36,7 @@ CREATE TABLE `credentials` ( `port` int(11) DEFAULT NULL, `description` text NOT NULL, `secure` tinyint(4) DEFAULT NULL, + `db_type` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_AnsibleForms_credentials_natural_key` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/server/src/lib/mysql.js b/server/src/lib/mysql.js index ac039d09..5896e529 100644 --- a/server/src/lib/mysql.js +++ b/server/src/lib/mysql.js @@ -22,7 +22,8 @@ MySql.query=function(connection_name,query){ } }else{ config.ssl={ - sslmode:"none" + sslmode:"none", + rejectUnauthorized:false } } // get connection diff --git a/server/src/models/credential.model.js b/server/src/models/credential.model.js index 3d951387..413aa290 100644 --- a/server/src/models/credential.model.js +++ b/server/src/models/credential.model.js @@ -19,6 +19,7 @@ var Credential=function(credential){ this.secure = (credential.secure)?1:0; this.password = encrypt(credential.password); this.description = credential.description; + this.db_type = credential.db_type; }; Credential.create = function (record) { @@ -40,7 +41,7 @@ Credential.delete = function(id){ }; Credential.findAll = function () { logger.info("Finding all credentials") - return mysql.do("SELECT id,name,user,host,port,description FROM AnsibleForms.`credentials`;") + return mysql.do("SELECT id,name,user,host,port,description,secure,db_type FROM AnsibleForms.`credentials`;") }; Credential.findById = function (id) { logger.info(`Finding credential ${id}`) @@ -80,7 +81,7 @@ Credential.findByName = function (name) { logger.debug(`Finding credential ${name}`) var cred = cache.get(name) if(cred==undefined){ - return mysql.do("SELECT host,port,name,user,password,secure FROM AnsibleForms.`credentials` WHERE name=?;",name) + return mysql.do("SELECT host,port,name,user,password,secure,db_type FROM AnsibleForms.`credentials` WHERE name=?;",name) .then((res)=>{ if(res.length>0){ res[0].multipleStatements = true diff --git a/server/src/models/db.model.js b/server/src/models/db.model.js index bd776151..32c2a320 100644 --- a/server/src/models/db.model.js +++ b/server/src/models/db.model.js @@ -37,36 +37,6 @@ MySql.do=function(query,vars){ } }) }; -// MySql.query=function(query,vars,callback){ -// logger.info("[ansibleforms] running query : " + query) -// var conn -// try{ -// var conn = client.createConnection(dbConfig) -// }catch(err){ -// logger.error("[ansibleforms] Connection error : " + err) -// callback(null,null) -// return; -// } -// try{ -// conn.query(query,vars,function(err,result){ -// // logger.debug("[ansibleforms] Closing connection") -// conn.end() -// if(err){ -// logger.error("[ansibleforms] Query error : " + err) -// callback(err,null) -// }else{ -// logger.debug("[ansibleforms] query result : " + JSON.stringify(result)) -// callback(null,result) -// } -// }) -// }catch(err){ -// // logger.debug("[ansibleforms] Closing connection") -// conn.end() -// logger.error("[ansibleforms] " + err) -// callback(null,null) -// } -// -// }; module.exports = MySql diff --git a/server/src/models/schema.model.js b/server/src/models/schema.model.js index ea66d95f..188ff70c 100644 --- a/server/src/models/schema.model.js +++ b/server/src/models/schema.model.js @@ -205,6 +205,7 @@ function patchAll(){ tablePromises.push(renameColumn("jobs","playbook","target","VARCHAR(250)")) // better column name tablePromises.push(addColumn("jobs","step","varchar(250)",true,"NULL")) // add column to hold current step tablePromises.push(addColumn("credentials","secure","tinyint(4)",true,"0")) // add column to have secure connection + tablePromises.push(addColumn("credentials","db_type","varchar(10)",true,"NULL")) // add column to have db type buffer = fs.readFileSync(`${__dirname}/../db/create_settings_table.sql`) sql = buffer.toString() tablePromises.push(addTable("settings",sql)) // add settings table diff --git a/server/src/routes/credential.routes.js b/server/src/routes/credential.routes.js index 57ccdcb4..7e1c15e8 100644 --- a/server/src/routes/credential.routes.js +++ b/server/src/routes/credential.routes.js @@ -12,4 +12,6 @@ router.put('/:id', credentialController.update); // Delete a credential with id router.delete('/:id', credentialController.delete); +router.get('/testdb/:id', credentialController.testDb) + module.exports = router diff --git a/server/src/swagger.json b/server/src/swagger.json index 423e64b7..ffea8fa9 100644 --- a/server/src/swagger.json +++ b/server/src/swagger.json @@ -1997,6 +1997,54 @@ } } }, + "/credential/testdb/{credentialId}": { + "get": { + "tags": [ + "credentials" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "summary": "Test a credential against a database", + "parameters": [ + { + "in": "path", + "name": "credentialId", + "type": "integer", + "required": true, + "description": "Numeric ID of the credential to get." + } + ], + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "successful operation", + "schema": { + "type": "object", + "example": { + "status": "success", + "message": "Mysql connection success", + "data": { + "output": "", + "error": "" + } + } + } + }, + "401": { + "description": "unauthorized", + "schema": { + "type": "string", + "example": "Authorize with a valid Bearer access token" + } + } + } + } + }, "/user": { "get": { "tags": [ From bd1f0978130bf260f07534469871734bc02a7032 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 26 Sep 2022 09:38:20 +0000 Subject: [PATCH 3/5] Prepare release 3.0.7 --- CHANGELOG.md | 10 +++++++--- app_versions.gradle | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e63f6698..e0076661 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,13 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [3.0.7] - 2022-09-26 + ### Added -- Allow secure connection for mysql +- Allow secure connection for mysql ### Changed -- Updated nodejs packages +- Updated nodejs packages ## [3.0.6] - 2022-08-10 @@ -311,7 +313,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Allow change password for current local user - Start tracking versions -[Unreleased]: https://github.com/ansibleguy76/ansibleforms/compare/3.0.6...HEAD +[Unreleased]: https://github.com/ansibleguy76/ansibleforms/compare/3.0.7...HEAD + +[3.0.7]: https://github.com/ansibleguy76/ansibleforms/compare/3.0.6...3.0.7 [3.0.6]: https://github.com/ansibleguy76/ansibleforms/compare/3.0.5...3.0.6 diff --git a/app_versions.gradle b/app_versions.gradle index 29e3cbed..bbc0606b 100644 --- a/app_versions.gradle +++ b/app_versions.gradle @@ -1,2 +1,2 @@ -ext.version_code = 30006 -ext.version_name = "3.0.6" +ext.version_code = 30007 +ext.version_name = "3.0.7" From 535126aeee12099f40d56d5a975eb0ed549a41b1 Mon Sep 17 00:00:00 2001 From: AnsibleGuy76 <89778474+ansibleguy76@users.noreply.github.com> Date: Mon, 26 Sep 2022 11:40:37 +0200 Subject: [PATCH 4/5] Update package.json --- server/package.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/server/package.json b/server/package.json index 9d77b7b6..946595de 100644 --- a/server/package.json +++ b/server/package.json @@ -17,12 +17,12 @@ "clean": "rimraf dist" }, "dependencies": { - "core-js": "~3.25.1", + "core-js": "~3.25.3", "axios": "~0.27.2", "cors": "~2.8.5", "bcrypt": "~5.0.1", "cheerio": "~1.0.0-rc.12", - "connect-history-api-fallback": "~1.6.0", + "connect-history-api-fallback": "~2.0.0", "express": "~4.18.1", "winston": "~3.8.2", "winston-syslog": "~2.6.0", @@ -35,11 +35,11 @@ "bluebird": "~3.7.2", "node-jq": "~2.3.3", "moment": "~2.29.4", - "yaml": "~1.10.2", + "yaml": "~2.1.1", "cert-info":"~1.5.1", "thenby":"~1.3.4", - "mssql":"~8.1.4", - "mongodb":"~4.9.1", + "mssql":"~9.0.1", + "mongodb":"~4.10.0", "pg":"~8.8.0", "fs-extra":"~10.1.0", "node-cache":"~5.1.2", @@ -50,15 +50,15 @@ "nodemailer": "~6.7.8" }, "devDependencies": { - "@babel/core": "7.19.0", + "@babel/core": "7.19.1", "@babel/cli": "~7.18.10", - "@babel/node": "~7.18.10", - "@babel/eslint-parser": "7.18.9", - "nodemon": "~2.0.19", + "@babel/node": "~7.19.1", + "@babel/eslint-parser": "7.19.1", + "nodemon": "~2.0.20", "rifraf": "~2.0.3", "npm-run-all": "*", "dotenv": "~16.0.2", - "eslint": "~7.5.0" + "eslint": "~8.24.0" }, "eslintConfig": { "root": true, From e04a1f95f0aadb600f5aa623824e9a13ade34d91 Mon Sep 17 00:00:00 2001 From: AnsibleGuy76 <89778474+ansibleguy76@users.noreply.github.com> Date: Mon, 26 Sep 2022 11:41:08 +0200 Subject: [PATCH 5/5] Update package.json --- client/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/package.json b/client/package.json index 42b200b8..4b9bda28 100644 --- a/client/package.json +++ b/client/package.json @@ -12,7 +12,7 @@ "lint": "vue-cli-service lint" }, "dependencies": { - "core-js": "~3.22.8", + "core-js": "~3.25.3", "vue": "~2.6.14", "axios": "~0.27.2", "es6-promise": "~4.2.8", @@ -50,7 +50,7 @@ "eslint": "~6.8.0", "eslint-plugin-vue": "~6.2.2", "vue-template-compiler": "~2.6.11", - "nodemon": "~2.0.16", + "nodemon": "~2.0.20", "sass" :"~1.49.11", "sass-loader":"10.1.1" },