add more mysql stuff

This commit is contained in:
2023-07-12 09:06:29 +02:00
parent 865141d945
commit fbedf9e95e
13 changed files with 105 additions and 65 deletions

View File

@@ -18,9 +18,14 @@ const fs = require( 'fs' );
const mail = require( './backend/mail/mailSender.js' ); const mail = require( './backend/mail/mailSender.js' );
const mailManager = new mail(); const mailManager = new mail();
const dbh = require( './backend/db/mysqldb.js' );
const db = new dbh();
db.connect();
// const env = process.env.PROD || false; // const env = process.env.PROD || false;
const settings = JSON.parse( fs.readFileSync( path.join( __dirname + '/config.json' ) ) ); const settings = JSON.parse( fs.readFileSync( path.join( __dirname + '/config/settings.config.json' ) ) );
// initialise express with middlewares // initialise express with middlewares
// TODO: Generate random token // TODO: Generate random token

View File

@@ -0,0 +1,28 @@
/*
* libreevent - 2fa.js
*
* Created by Janis Hutz 07/11/2023, Licensed under the GPL V3 License
* https://janishutz.com, development@janishutz.com
*
*
*/
const token = require( '../token.js' );
class TwoFA {
constructor () {
this.tokenStore = {};
}
registerStandardAuthentication () {
let token = token.generateToken();
this.tokenStore[ token ] = 'standard';
}
registerEnhancedAuthentication () {
let token = token.generateToken();
}
}
module.exports = TwoFA;

View File

@@ -16,6 +16,10 @@ module.exports.getData = function getData ( db, searchQuery ) {
} ); } );
}; };
module.exports.writeData = function writeData ( db ) {
};
module.exports.getJSONData = function getData ( file ) { module.exports.getJSONData = function getData ( file ) {
return new Promise( ( resolve, reject ) => { return new Promise( ( resolve, reject ) => {
fs.readFile( path.join( __dirname + '/../../' + file ), ( error, data ) => { fs.readFile( path.join( __dirname + '/../../' + file ), ( error, data ) => {

View File

@@ -1,15 +1,40 @@
const mysql = require( 'promise-mysql' ); /*
* libreevent - mysqldb.js
*
* Created by Janis Hutz 07/12/2023, Licensed under the GPL V3 License
* https://janishutz.com, development@janishutz.com
*
*
*/
const mysql = require( 'mysql' );
const db = require( './db.js' );
// If the connection does not work for you, you will need to add your ip
// to the whitelist of the database
class SQLDB { class SQLDB {
constructor () { constructor () {
this.sqlconnection = mysql.createConnection( { this.sqlConnection = mysql.createConnection( db.getJSONDataSync( '/config/db.config.secret.json' ) );
host: 'janishutz.com', }
port: '3306',
user: 'janishut_libreeventTest', connect () {
password: '^PVgj&xkaQKmMDCgz&2^aCaYxc7nCS#*%7%', this.sqlConnection.connect( function( err ) {
connectionLimit: 200 if ( err ) {
console.error( 'error connecting: ' + err.stack );
return;
}
return 'connection';
} ); } );
} }
disconnect () {
this.sqlConnection.end();
}
async setupDB () {
this.sqlConnection.query( '' );
}
} }
module.exports = SQLDB; module.exports = SQLDB;

View File

@@ -12,7 +12,7 @@ const html2text = require( 'html-to-text' );
const db = require( '../db/db.js' ); const db = require( '../db/db.js' );
let transporter = mailer.createTransport( db.getJSONDataSync( 'mail.secret.json' ) ); let transporter = mailer.createTransport( db.getJSONDataSync( '/config/mail.config.secret.json' ) );
class MailManager { class MailManager {

View File

@@ -8,8 +8,7 @@
*/ */
class TokenGenerator { module.exports.generateToken = () => {
genTok () {
let token = ''; let token = '';
let min = 48; let min = 48;
let max = 122; let max = 122;
@@ -21,7 +20,4 @@ class TokenGenerator {
token += String.fromCharCode( randomNumber ); token += String.fromCharCode( randomNumber );
} }
return token; return token;
} };
}
module.exports = TokenGenerator;

View File

@@ -9,6 +9,8 @@
const db = require( './db/db.js' ); const db = require( './db/db.js' );
const pwdmanager = require( './credentials/pwdmanager.js' ); const pwdmanager = require( './credentials/pwdmanager.js' );
const auth = require( './credentials/2fa.js' );
const twoFA = new auth();
module.exports = ( app, settings ) => { module.exports = ( app, settings ) => {
app.post( '/api/reserveTicket', ( request, response ) => { app.post( '/api/reserveTicket', ( request, response ) => {
@@ -20,9 +22,12 @@ module.exports = ( app, settings ) => {
if ( request.body.mail && request.body.password ) { if ( request.body.mail && request.body.password ) {
pwdmanager.checkpassword( request.body.mail, request.body.password ).then( data => { pwdmanager.checkpassword( request.body.mail, request.body.password ).then( data => {
if ( data ) { if ( data ) {
if ( settings.twoFA ) { if ( settings.twoFA === 'standard' ) {
// TODO: Support both methods of 2fa // TODO: Support both methods of 2fa
response.send( '2fa' ); response.send( '2fa' );
} else if ( settings.twoFA === 'enhanced' ) {
// TODO: Support both methods of 2fa
response.send( '2fa+' );
} else { } else {
request.session.loggedInUser = true; request.session.loggedInUser = true;
response.send( 'ok' ); response.send( 'ok' );
@@ -35,4 +40,8 @@ module.exports = ( app, settings ) => {
response.send( 'missingCredentials' ); response.send( 'missingCredentials' );
} }
} ); } );
app.get( '/user/2fa', ( request, response ) => {
} );
}; };

View File

@@ -1,4 +0,0 @@
{
"init":true,
"twoFA": true
}

View File

@@ -0,0 +1,7 @@
{
"host": "",
"database": "",
"user": "",
"password": "",
"port": 3306
}

View File

@@ -0,0 +1,4 @@
{
"init":true,
"twoFA": "disabled"
}

View File

@@ -15,8 +15,8 @@
"express": "^4.18.2", "express": "^4.18.2",
"express-session": "^1.17.3", "express-session": "^1.17.3",
"html-to-text": "^9.0.5", "html-to-text": "^9.0.5",
"mysql": "^2.18.1",
"nodemailer": "^6.9.3", "nodemailer": "^6.9.3",
"promise-mysql": "^5.2.0",
"serve-favicon": "^2.5.0", "serve-favicon": "^2.5.0",
"serve-static": "^1.15.0" "serve-static": "^1.15.0"
}, },
@@ -150,24 +150,6 @@
"url": "https://ko-fi.com/killymxi" "url": "https://ko-fi.com/killymxi"
} }
}, },
"node_modules/@types/bluebird": {
"version": "3.5.38",
"resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.38.tgz",
"integrity": "sha512-yR/Kxc0dd4FfwtEoLZMoqJbM/VE/W7hXn/MIjb+axcwag0iFmSPK7OBUZq1YWLynJUoWQkfUrI7T0HDqGApNSg=="
},
"node_modules/@types/mysql": {
"version": "2.15.21",
"resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.21.tgz",
"integrity": "sha512-NPotx5CVful7yB+qZbWtXL2fA4e7aEHkihHLjklc6ID8aq7bhguHgeIoC1EmSNTAuCgI6ZXrjt2ZSaXnYX0EUg==",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/node": {
"version": "20.4.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.1.tgz",
"integrity": "sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg=="
},
"node_modules/abbrev": { "node_modules/abbrev": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -264,11 +246,6 @@
"node": "*" "node": "*"
} }
}, },
"node_modules/bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
},
"node_modules/body-parser": { "node_modules/body-parser": {
"version": "1.20.2", "version": "1.20.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
@@ -1534,17 +1511,6 @@
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
}, },
"node_modules/promise-mysql": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/promise-mysql/-/promise-mysql-5.2.0.tgz",
"integrity": "sha512-IKkBe7OukgCpy5U5EZPlgH6BRvnngmP+HwD6PoMNzvGXBYVZkiJ5nx6SY7bo+sgwXsMOVE7zQf6CfS9qaFs2pw==",
"dependencies": {
"@types/bluebird": "^3.5.26",
"@types/mysql": "^2.15.2",
"bluebird": "^3.5.1",
"mysql": "^2.18.1"
}
},
"node_modules/proxy-addr": { "node_modules/proxy-addr": {
"version": "2.0.7", "version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",

View File

@@ -47,8 +47,8 @@
"express": "^4.18.2", "express": "^4.18.2",
"express-session": "^1.17.3", "express-session": "^1.17.3",
"html-to-text": "^9.0.5", "html-to-text": "^9.0.5",
"mysql": "^2.18.1",
"nodemailer": "^6.9.3", "nodemailer": "^6.9.3",
"promise-mysql": "^5.2.0",
"serve-favicon": "^2.5.0", "serve-favicon": "^2.5.0",
"serve-static": "^1.15.0" "serve-static": "^1.15.0"
}, },