mirror of
https://github.com/janishutz/libreevent.git
synced 2025-11-25 13:24:24 +00:00
add more mysql stuff
This commit is contained in:
@@ -18,9 +18,14 @@ const fs = require( 'fs' );
|
||||
const mail = require( './backend/mail/mailSender.js' );
|
||||
const mailManager = new mail();
|
||||
|
||||
const dbh = require( './backend/db/mysqldb.js' );
|
||||
const db = new dbh();
|
||||
|
||||
db.connect();
|
||||
|
||||
// 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
|
||||
// TODO: Generate random token
|
||||
|
||||
28
src/server/backend/credentials/2fa.js
Normal file
28
src/server/backend/credentials/2fa.js
Normal 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;
|
||||
@@ -16,6 +16,10 @@ module.exports.getData = function getData ( db, searchQuery ) {
|
||||
} );
|
||||
};
|
||||
|
||||
module.exports.writeData = function writeData ( db ) {
|
||||
|
||||
};
|
||||
|
||||
module.exports.getJSONData = function getData ( file ) {
|
||||
return new Promise( ( resolve, reject ) => {
|
||||
fs.readFile( path.join( __dirname + '/../../' + file ), ( error, data ) => {
|
||||
|
||||
@@ -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 {
|
||||
constructor () {
|
||||
this.sqlconnection = mysql.createConnection( {
|
||||
host: 'janishutz.com',
|
||||
port: '3306',
|
||||
user: 'janishut_libreeventTest',
|
||||
password: '^PVgj&xkaQKmMDCgz&2^aCaYxc7nCS#*%7%',
|
||||
connectionLimit: 200
|
||||
this.sqlConnection = mysql.createConnection( db.getJSONDataSync( '/config/db.config.secret.json' ) );
|
||||
}
|
||||
|
||||
connect () {
|
||||
this.sqlConnection.connect( function( err ) {
|
||||
if ( err ) {
|
||||
console.error( 'error connecting: ' + err.stack );
|
||||
return;
|
||||
}
|
||||
return 'connection';
|
||||
} );
|
||||
}
|
||||
|
||||
disconnect () {
|
||||
this.sqlConnection.end();
|
||||
}
|
||||
|
||||
async setupDB () {
|
||||
this.sqlConnection.query( '' );
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = SQLDB;
|
||||
@@ -12,7 +12,7 @@ const html2text = require( 'html-to-text' );
|
||||
|
||||
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 {
|
||||
|
||||
@@ -8,20 +8,16 @@
|
||||
*/
|
||||
|
||||
|
||||
class TokenGenerator {
|
||||
genTok () {
|
||||
let token = '';
|
||||
let min = 48;
|
||||
let max = 122;
|
||||
for ( let i = 0; i < 61; i++ ) {
|
||||
let randomNumber = Math.floor( Math.random() * ( max - min ) ) + min;
|
||||
while ( randomNumber === 92 || randomNumber === 58 || randomNumber === 96 || randomNumber === 94 || randomNumber === 64 ) {
|
||||
randomNumber = Math.floor( Math.random() * ( max - min ) ) + min;
|
||||
}
|
||||
token += String.fromCharCode( randomNumber );
|
||||
module.exports.generateToken = () => {
|
||||
let token = '';
|
||||
let min = 48;
|
||||
let max = 122;
|
||||
for ( let i = 0; i < 61; i++ ) {
|
||||
let randomNumber = Math.floor( Math.random() * ( max - min ) ) + min;
|
||||
while ( randomNumber === 92 || randomNumber === 58 || randomNumber === 96 || randomNumber === 94 || randomNumber === 64 ) {
|
||||
randomNumber = Math.floor( Math.random() * ( max - min ) ) + min;
|
||||
}
|
||||
return token;
|
||||
token += String.fromCharCode( randomNumber );
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = TokenGenerator;
|
||||
return token;
|
||||
};
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
const db = require( './db/db.js' );
|
||||
const pwdmanager = require( './credentials/pwdmanager.js' );
|
||||
const auth = require( './credentials/2fa.js' );
|
||||
const twoFA = new auth();
|
||||
|
||||
module.exports = ( app, settings ) => {
|
||||
app.post( '/api/reserveTicket', ( request, response ) => {
|
||||
@@ -20,9 +22,12 @@ module.exports = ( app, settings ) => {
|
||||
if ( request.body.mail && request.body.password ) {
|
||||
pwdmanager.checkpassword( request.body.mail, request.body.password ).then( data => {
|
||||
if ( data ) {
|
||||
if ( settings.twoFA ) {
|
||||
if ( settings.twoFA === 'standard' ) {
|
||||
// TODO: Support both methods of 2fa
|
||||
response.send( '2fa' );
|
||||
} else if ( settings.twoFA === 'enhanced' ) {
|
||||
// TODO: Support both methods of 2fa
|
||||
response.send( '2fa+' );
|
||||
} else {
|
||||
request.session.loggedInUser = true;
|
||||
response.send( 'ok' );
|
||||
@@ -35,4 +40,8 @@ module.exports = ( app, settings ) => {
|
||||
response.send( 'missingCredentials' );
|
||||
}
|
||||
} );
|
||||
|
||||
app.get( '/user/2fa', ( request, response ) => {
|
||||
|
||||
} );
|
||||
};
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"init":true,
|
||||
"twoFA": true
|
||||
}
|
||||
7
src/server/config/db.config.json
Normal file
7
src/server/config/db.config.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"host": "",
|
||||
"database": "",
|
||||
"user": "",
|
||||
"password": "",
|
||||
"port": 3306
|
||||
}
|
||||
4
src/server/config/settings.config.json
Normal file
4
src/server/config/settings.config.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"init":true,
|
||||
"twoFA": "disabled"
|
||||
}
|
||||
36
src/server/package-lock.json
generated
36
src/server/package-lock.json
generated
@@ -15,8 +15,8 @@
|
||||
"express": "^4.18.2",
|
||||
"express-session": "^1.17.3",
|
||||
"html-to-text": "^9.0.5",
|
||||
"mysql": "^2.18.1",
|
||||
"nodemailer": "^6.9.3",
|
||||
"promise-mysql": "^5.2.0",
|
||||
"serve-favicon": "^2.5.0",
|
||||
"serve-static": "^1.15.0"
|
||||
},
|
||||
@@ -150,24 +150,6 @@
|
||||
"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": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||
@@ -264,11 +246,6 @@
|
||||
"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": {
|
||||
"version": "1.20.2",
|
||||
"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",
|
||||
"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": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
|
||||
@@ -47,8 +47,8 @@
|
||||
"express": "^4.18.2",
|
||||
"express-session": "^1.17.3",
|
||||
"html-to-text": "^9.0.5",
|
||||
"mysql": "^2.18.1",
|
||||
"nodemailer": "^6.9.3",
|
||||
"promise-mysql": "^5.2.0",
|
||||
"serve-favicon": "^2.5.0",
|
||||
"serve-static": "^1.15.0"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user