From 3e31429a4f992e4b135e4bc422a67b84c345f593 Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Mon, 8 Mar 2021 11:44:12 +1100 Subject: [PATCH] Ripped out the pseudonym reserve system Moving to JWT tokens in future --- .envdev | 3 +-- .github/workflows/docker.yml | 3 +++ README.md | 7 +++++ package-lock.json | 33 ----------------------- package.json | 1 - server/chat/index.js | 4 +-- server/chat/reserve.js | 39 ---------------------------- server/database/models/index.js | 2 +- server/database/models/pseudonyms.js | 28 -------------------- server/server.js | 7 +++-- 10 files changed, 17 insertions(+), 110 deletions(-) delete mode 100644 server/chat/reserve.js delete mode 100644 server/database/models/pseudonyms.js diff --git a/.envdev b/.envdev index 80bf2b7..2c9446a 100644 --- a/.envdev +++ b/.envdev @@ -1,4 +1,4 @@ -WEB_PORT=3200 +WEB_PORT=3300 DB_HOSTNAME=database DB_DATABASE=chat @@ -6,4 +6,3 @@ DB_USERNAME=chat DB_PASSWORD=blastoise DB_TIMEZONE=Australia/Sydney -CHAT_KEY=chattychattybangbang \ No newline at end of file diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9686fe3..f72fa8b 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,6 +2,9 @@ name: Publish Docker image on: release: types: [ published ] + push: + tags: + - v1.* jobs: push_to_registry: name: Push Docker Image to Docker Hub diff --git a/README.md b/README.md index 574b5f2..60ce55a 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,11 @@ An API centric chat server. Uses Sequelize and mariaDB by default. +# Setup + +TODO: document the chat server setup + +# API + +TODO: document the chat server api diff --git a/package-lock.json b/package-lock.json index 0b5e61e..37bae72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "cors": "^2.8.5", "dotenv": "^8.2.0", "express": "^4.17.1", - "express-formidable": "^1.2.0", "mariadb": "^2.5.2", "sequelize": "^6.5.0" }, @@ -667,17 +666,6 @@ "node": ">= 0.10.0" } }, - "node_modules/express-formidable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/express-formidable/-/express-formidable-1.2.0.tgz", - "integrity": "sha512-w1vXjF3gb50UKTNkFaW8/4rqY4dUrKfZ1sAZzwAF9YxCAgj/29QZsycf71di0GkskrZOAkubk9pvGYfxyAMYiw==", - "dependencies": { - "formidable": "^1.0.17" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -707,14 +695,6 @@ "node": ">= 0.8" } }, - "node_modules/formidable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==", - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, "node_modules/forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -2564,14 +2544,6 @@ "vary": "~1.1.2" } }, - "express-formidable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/express-formidable/-/express-formidable-1.2.0.tgz", - "integrity": "sha512-w1vXjF3gb50UKTNkFaW8/4rqY4dUrKfZ1sAZzwAF9YxCAgj/29QZsycf71di0GkskrZOAkubk9pvGYfxyAMYiw==", - "requires": { - "formidable": "^1.0.17" - } - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2595,11 +2567,6 @@ "unpipe": "~1.0.0" } }, - "formidable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==" - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", diff --git a/package.json b/package.json index 716e1bf..27fadcc 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,6 @@ "cors": "^2.8.5", "dotenv": "^8.2.0", "express": "^4.17.1", - "express-formidable": "^1.2.0", "mariadb": "^2.5.2", "sequelize": "^6.5.0" }, diff --git a/server/chat/index.js b/server/chat/index.js index 29a4e8c..594c3e8 100644 --- a/server/chat/index.js +++ b/server/chat/index.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -//reserve the name using a pseudonym -router.post('/reserve', require('./reserve')); +//basic route management +//TODO: import the routes module.exports = router; diff --git a/server/chat/reserve.js b/server/chat/reserve.js deleted file mode 100644 index b56bc9b..0000000 --- a/server/chat/reserve.js +++ /dev/null @@ -1,39 +0,0 @@ -const crypto = require("crypto"); - -const Sequelize = require('sequelize'); -const Op = Sequelize.Op; -const { pseudonyms } = require('../database/models'); - -const route = async (req, res) => { - //check the key - if (req.fields.key != process.env.CHAT_KEY) { - return res.status(403).send('Invalid chat key'); - } - - //generate a UUID to act as a pseudonym (starting with a period) - const pseudonym = `.${uuid()}`; - - //find or create the record (using the username) - const [instance, created] = await pseudonyms.findOrCreate({ - where: { - username: req.fields.username - } - }); - - //save the pseudonym (overwriting existing pseudonyms) - const result = await pseudonyms.update({ - pseudonym: pseudonym - },{ - where: { - username: instance.username - } - }); - - //OK - return res.status(200).send({ pseudonym: pseudonym }); -}; - -//lazy -const uuid = (bytes = 16) => crypto.randomBytes(bytes).toString("hex"); - -module.exports = route; \ No newline at end of file diff --git a/server/database/models/index.js b/server/database/models/index.js index f059559..aabbaee 100644 --- a/server/database/models/index.js +++ b/server/database/models/index.js @@ -1,3 +1,3 @@ module.exports = { - pseudonyms: require('./pseudonyms') + //TODO: models }; \ No newline at end of file diff --git a/server/database/models/pseudonyms.js b/server/database/models/pseudonyms.js deleted file mode 100644 index ebd84e0..0000000 --- a/server/database/models/pseudonyms.js +++ /dev/null @@ -1,28 +0,0 @@ -const Sequelize = require('sequelize'); -const sequelize = require('..'); - -module.exports = sequelize.define('pseudonyms', { - id: { - type: Sequelize.INTEGER(11), - allowNull: false, - autoIncrement: true, - primaryKey: true, - unique: true - }, - - username: { - type: 'varchar(320)', - unique: true - }, - - pseudonym: { - type: 'varchar(320)', - unique: true - }, - - deletion: { - type: 'DATETIME', - allowNull: true, - defaultValue: null - } -}); diff --git a/server/server.js b/server/server.js index 7c2ceaa..fe1aa6b 100644 --- a/server/server.js +++ b/server/server.js @@ -5,12 +5,10 @@ require('dotenv').config(); const express = require('express'); const app = express(); const server = require('http').Server(app); -const formidable = require('express-formidable'); const bodyParser = require('body-parser'); const cors = require('cors'); //config -app.use(formidable()); app.use(bodyParser.json()); app.use(cors()); @@ -26,6 +24,7 @@ app.get('*', (req, res) => { }); //startup -server.listen(process.env.WEB_PORT || 3200, (err) => { - console.log(`listening to localhost:${process.env.WEB_PORT || 3200}`); +server.listen(process.env.WEB_PORT || 3300, async (err) => { + await database.sync(); + console.log(`listening to localhost:${process.env.WEB_PORT || 3300}`); });