diff options
Diffstat (limited to '')
28 files changed, 22 insertions, 71 deletions
diff --git a/server/.gitignore b/.gitignore index 46de862..4bf93f7 100644 --- a/server/.gitignore +++ b/.gitignore @@ -60,4 +60,4 @@ typings/ # next.js build output .next -config/
\ No newline at end of file +server/config/
\ No newline at end of file diff --git a/server/package-lock.json b/package-lock.json index 8a8228d..df5ebe8 100644 --- a/server/package-lock.json +++ b/package-lock.json @@ -393,4 +393,4 @@ } } } -} +}
\ No newline at end of file diff --git a/server/package.json b/package.json index 8417c13..6ce7271 100644 --- a/server/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "hack.chat-v2", "version": "2.0.1", "description": "a minimal distraction free chat application", - "main": "main.js", + "main": "server/main.js", "repository": { "type": "git", "url": "git+https://github.com/hack-chat/main.git" @@ -12,11 +12,10 @@ "npm": ">= 5.7.1" }, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "start": "node server.js", - "config": "node src/scripts/configure.js", - "debug": "node src/scripts/debug.js", - "dev": "node src/scripts/debug.js" + "start": "node server/main.js", + "config": "node server/src/scripts/configure.js", + "debug": "node server/src/scripts/debug.js", + "dev": "node server/src/scripts/debug.js" }, "author": "Marzavec", "license": "WTFPL", @@ -31,4 +30,4 @@ "readdir-recursive": "0.0.4", "ws": "^5.0.0" } -} +}
\ No newline at end of file diff --git a/server/README.md b/server/README.md deleted file mode 100644 index 292daab..0000000 --- a/server/README.md +++ /dev/null @@ -1 +0,0 @@ -(TODO) diff --git a/server/src/commands/admin/addmod.js b/server/src/commands/admin/addmod.js index e9dde2c..4c13b22 100644 --- a/server/src/commands/admin/addmod.js +++ b/server/src/commands/admin/addmod.js @@ -2,8 +2,6 @@ Description: Adds the target trip to the mod list then elevates the uType */ -'use strict'; - exports.run = async (core, server, socket, data) => { if (socket.uType != 'admin') { // ignore if not admin diff --git a/server/src/commands/admin/listusers.js b/server/src/commands/admin/listusers.js index 226b000..a539a3c 100644 --- a/server/src/commands/admin/listusers.js +++ b/server/src/commands/admin/listusers.js @@ -2,8 +2,6 @@ Description: Outputs all current channels and their user nicks */ -'use strict'; - exports.run = async (core, server, socket, data) => { if (socket.uType != 'admin') { // ignore if not admin diff --git a/server/src/commands/admin/reload.js b/server/src/commands/admin/reload.js index 387ae97..e2cfbe6 100644 --- a/server/src/commands/admin/reload.js +++ b/server/src/commands/admin/reload.js @@ -2,8 +2,6 @@ Description: Clears and resets the command modules, outputting any errors */ -'use strict'; - exports.run = async (core, server, socket, data) => { if (socket.uType != 'admin') { // ignore if not admin @@ -34,3 +32,4 @@ exports.info = { name: 'reload', description: '(Re)loads any new commands into memory, outputs errors if any' }; + diff --git a/server/src/commands/admin/saveconfig.js b/server/src/commands/admin/saveconfig.js index 0c4e0c9..ed3a312 100644 --- a/server/src/commands/admin/saveconfig.js +++ b/server/src/commands/admin/saveconfig.js @@ -2,8 +2,6 @@ Description: Writes any changes to the config to the disk */ -'use strict'; - exports.run = async (core, server, socket, data) => { if (socket.uType != 'admin') { // ignore if not admin diff --git a/server/src/commands/admin/shout.js b/server/src/commands/admin/shout.js index 736134a..1358dd9 100644 --- a/server/src/commands/admin/shout.js +++ b/server/src/commands/admin/shout.js @@ -2,8 +2,6 @@ Description: Emmits a server-wide message as `info` */ -'use strict'; - exports.run = async (core, server, socket, data) => { if (socket.uType != 'admin') { // ignore if not admin @@ -22,4 +20,4 @@ exports.info = { name: 'shout', usage: 'shout {text}', description: 'Displays passed text to every client connected' -}; +};
\ No newline at end of file diff --git a/server/src/commands/core/changenick.js b/server/src/commands/core/changenick.js index 6b2932c..4041bb0 100644 --- a/server/src/commands/core/changenick.js +++ b/server/src/commands/core/changenick.js @@ -2,8 +2,6 @@ Description: Generates a semi-unique channel name then broadcasts it to each client */ -'use strict'; - const verifyNickname = (nick) => { return /^[a-zA-Z0-9_]{1,24}$/.test(nick); }; diff --git a/server/src/commands/core/chat.js b/server/src/commands/core/chat.js index ee45425..bce6adb 100644 --- a/server/src/commands/core/chat.js +++ b/server/src/commands/core/chat.js @@ -2,8 +2,6 @@ Description: Rebroadcasts any `text` to all clients in a `channel` */ -'use strict'; - const parseText = (text) => { if (typeof text !== 'string') { return false; @@ -61,4 +59,4 @@ exports.info = { name: 'chat', usage: 'chat {text}', description: 'Broadcasts passed `text` field to the calling users channel' -}; +};
\ No newline at end of file diff --git a/server/src/commands/core/disconnect.js b/server/src/commands/core/disconnect.js index 1a9c635..9b54214 100644 --- a/server/src/commands/core/disconnect.js +++ b/server/src/commands/core/disconnect.js @@ -4,8 +4,6 @@ by a client to have the connection severed. */ -'use strict'; - exports.run = async (core, server, socket, data) => { if (socket.channel) { server.broadcast({ @@ -20,4 +18,4 @@ exports.run = async (core, server, socket, data) => { exports.info = { name: 'disconnect', description: 'Event handler or force disconnect (if your into that kind of thing)' -}; +};
\ No newline at end of file diff --git a/server/src/commands/core/help.js b/server/src/commands/core/help.js index 71cc745..7f63d3d 100644 --- a/server/src/commands/core/help.js +++ b/server/src/commands/core/help.js @@ -2,8 +2,6 @@ Description: Outputs the current command module list or command categories */ -'use strict'; - const stripIndents = require('common-tags').stripIndents; exports.run = async (core, server, socket, data) => { @@ -48,4 +46,4 @@ exports.info = { name: 'help', usage: 'help ([ type:categories] | [category:<category name> | command:<command name> ])', description: 'Outputs information about the servers current protocol' -}; +};
\ No newline at end of file diff --git a/server/src/commands/core/invite.js b/server/src/commands/core/invite.js index bd85812..bcf9097 100644 --- a/server/src/commands/core/invite.js +++ b/server/src/commands/core/invite.js @@ -2,8 +2,6 @@ Description: Generates a semi-unique channel name then broadcasts it to each client */ -'use strict'; - const verifyNickname = (nick) => { return /^[a-zA-Z0-9_]{1,24}$/.test(nick); }; @@ -64,4 +62,4 @@ exports.info = { name: 'invite', usage: 'invite {nick}', description: 'Generates a unique (more or less) room name and passes it to two clients' -}; +};
\ No newline at end of file diff --git a/server/src/commands/core/join.js b/server/src/commands/core/join.js index 82b48d2..f2b2c9d 100644 --- a/server/src/commands/core/join.js +++ b/server/src/commands/core/join.js @@ -2,8 +2,6 @@ Description: Initial entry point, applies `channel` and `nick` to the calling socket */ -'use strict'; - const crypto = require('crypto'); const hash = (password) => { @@ -134,4 +132,4 @@ exports.info = { name: 'join', usage: 'join {channel} {nick}', description: 'Place calling socket into target channel with target nick & broadcast event to channel' -}; +};
\ No newline at end of file diff --git a/server/src/commands/core/morestats.js b/server/src/commands/core/morestats.js index d8bc23d..5510cb1 100644 --- a/server/src/commands/core/morestats.js +++ b/server/src/commands/core/morestats.js @@ -2,8 +2,6 @@ Description: Outputs more info than the legacy stats command */ -'use strict'; - const stripIndents = require('common-tags').stripIndents; const formatTime = (time) => { @@ -52,4 +50,4 @@ exports.run = async (core, server, socket, data) => { exports.info = { name: 'morestats', description: 'Sends back current server stats to the calling client' -}; +};
\ No newline at end of file diff --git a/server/src/commands/core/move.js b/server/src/commands/core/move.js index 862025c..c5efafd 100644 --- a/server/src/commands/core/move.js +++ b/server/src/commands/core/move.js @@ -2,8 +2,6 @@ Description: Generates a semi-unique channel name then broadcasts it to each client */ -'use strict'; - exports.run = async (core, server, socket, data) => { if (server._police.frisk(socket.remoteAddress, 6)) { server.reply({ @@ -82,4 +80,4 @@ exports.info = { name: 'move', usage: 'move {channel}', description: 'This will change the current channel to the new one provided' -}; +};
\ No newline at end of file diff --git a/server/src/commands/core/stats.js b/server/src/commands/core/stats.js index a1abddb..b9dc002 100644 --- a/server/src/commands/core/stats.js +++ b/server/src/commands/core/stats.js @@ -2,8 +2,6 @@ Description: Legacy stats output, kept for compatibility, outputs user and channel count */ -'use strict'; - exports.run = async (core, server, socket, data) => { let ips = {}; let channels = {}; @@ -31,4 +29,4 @@ exports.run = async (core, server, socket, data) => { exports.info = { name: 'stats', description: 'Sends back legacy server stats to the calling client' -}; +};
\ No newline at end of file diff --git a/server/src/commands/mod/ban.js b/server/src/commands/mod/ban.js index 409217a..e19efc2 100644 --- a/server/src/commands/mod/ban.js +++ b/server/src/commands/mod/ban.js @@ -2,8 +2,6 @@ Description: Adds the target socket's ip to the ratelimiter */ -'use strict'; - exports.run = async (core, server, socket, data) => { if (socket.uType == 'user') { // ignore if not mod or admin diff --git a/server/src/commands/mod/kick.js b/server/src/commands/mod/kick.js index f32eaf5..157592d 100644 --- a/server/src/commands/mod/kick.js +++ b/server/src/commands/mod/kick.js @@ -2,8 +2,6 @@ Description: Forces a change on the target socket's channel, then broadcasts event */ -'use strict'; - exports.run = async (core, server, socket, data) => { if (socket.uType === 'user') { // ignore if not mod or admin @@ -77,4 +75,4 @@ exports.info = { name: 'kick', usage: 'kick {nick}', description: 'Silently forces target client(s) into another channel. `nick` may be string or array of strings' -}; +};
\ No newline at end of file diff --git a/server/src/commands/mod/unban.js b/server/src/commands/mod/unban.js index 2406644..e82f0b9 100644 --- a/server/src/commands/mod/unban.js +++ b/server/src/commands/mod/unban.js @@ -2,8 +2,6 @@ Description: Removes a target ip from the ratelimiter */ -'use strict'; - exports.run = async (core, server, socket, data) => { if (socket.uType == 'user') { // ignore if not mod or admin @@ -54,4 +52,4 @@ exports.info = { name: 'unban', usage: 'unban {[ip || hash]}', description: 'Removes target ip from the ratelimiter' -}; +};
\ No newline at end of file diff --git a/server/src/core/rateLimiter.js b/server/src/core/rateLimiter.js index 0d94ef2..0c2a384 100644 --- a/server/src/core/rateLimiter.js +++ b/server/src/core/rateLimiter.js @@ -8,15 +8,13 @@ * */ -'use strict'; - class Police { /** * Create a ratelimiter instance. */ constructor () { this._records = {}; - this._halflife = 30000; // ms + this._halflife = 30 * 1000; // milliseconds this._threshold = 25; this._hashes = []; } diff --git a/server/src/core/server.js b/server/src/core/server.js index 9bea738..855aeba 100644 --- a/server/src/core/server.js +++ b/server/src/core/server.js @@ -7,8 +7,6 @@ * */ -'use strict'; - const wsServer = require('ws').Server; const socketReady = require('ws').OPEN; const crypto = require('crypto'); diff --git a/server/src/managers/commands.js b/server/src/managers/commands.js index 569206d..c38fb4d 100644 --- a/server/src/managers/commands.js +++ b/server/src/managers/commands.js @@ -7,8 +7,6 @@ * */ -'use strict'; - const path = require('path'); const chalk = require('chalk'); const didYouMean = require('didyoumean2'); diff --git a/server/src/managers/config.js b/server/src/managers/config.js index 1848cac..2865d00 100644 --- a/server/src/managers/config.js +++ b/server/src/managers/config.js @@ -8,8 +8,6 @@ * */ -'use strict'; - const stripIndents = require('common-tags').stripIndents; const dateFormat = require('dateformat'); const chalk = require('chalk'); diff --git a/server/src/managers/imports-manager.js b/server/src/managers/imports-manager.js index f4096b7..d8b2144 100644 --- a/server/src/managers/imports-manager.js +++ b/server/src/managers/imports-manager.js @@ -7,8 +7,6 @@ * */ -'use strict'; - const read = require('readdir-recursive'); const path = require('path'); diff --git a/server/src/managers/stats.js b/server/src/managers/stats.js index c3b6f9f..20f1ae3 100644 --- a/server/src/managers/stats.js +++ b/server/src/managers/stats.js @@ -7,8 +7,6 @@ * */ -'use strict'; - class Stats { /** * Create a stats instance. diff --git a/server/src/commands/core/showcase.js b/templateCommand.js index 5eca4a2..90b9aa3 100644 --- a/server/src/commands/core/showcase.js +++ b/templateCommand.js @@ -2,8 +2,6 @@ Description: This is a template module that should not be on prod */ -'use strict'; - // you can require() modules here // this function will only be only in the scope of the module @@ -50,4 +48,4 @@ exports.info = { aliases: ['templateModule'], // optional, an array of other names this module can be executed by usage: 'showcase {echo}', // used for help output, can be ommited if no parameters are required description: 'Simple command module template & info' // used for help output -}; +};
\ No newline at end of file |