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"
},