-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
82 lines (73 loc) · 2.34 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
const net = require('net');
var fs = require('fs');
var Commands = require('./nntp/commands.js');
var Response = require('./nntp/response.js');
var debug = require('debug');
var LogServer = debug('server');
var LogClientData = LogServer.extend('client data');
let Settings;
if (fs.existsSync('./settings.json')) {
Settings = JSON.parse(fs.readFileSync('./settings.json', 'utf8'))
}
var sockets = [];
var server = net.createServer();
server.on('connection', handleConnection);
server.listen(Settings.serverport, Settings.serveradres);
LogFallback(`Server Created at ${Settings.serveradres}:${Settings.serverport}`);
function handleConnection(conn) {
conn.setEncoding('utf8');
var remoteAddress = conn.remoteAddress + ':' + conn.remotePort;
LogFallback('new client connection from ' + remoteAddress);
conn.write(Response.code[201]);
conn.on('data', onData);
conn.once('close', onClose);
conn.on('error', onError);
function onData(d) {
LogClientData(d.replace("\r\n", ""));
var temp = d.replace("\r\n", "").split(" ");
if (!Commands.ValidCommands().includes(temp[0])) {
}
switch (temp[0]) {
case "CAPABILITIES":
Commands.Capabilities(conn);
break;
case "MODE":
Commands.Mode(conn, temp[1]);
break;
case "LIST":
Commands.List(conn, sockets);
break;
case "GROUP":
Commands.Group(conn, sockets, temp);
break;
case "DATE":
Commands.Date(conn);
break;
case "OVER":
case "XOVER":
Commands.Xover(conn, sockets, temp);
break;
case "ARTICLE":
Commands.Article(conn, sockets, temp);
break;
case "HEAD":
Commands.Head(conn, sockets, temp);
break;
default:
break;
}
}
function onClose() {
LogFallback(`connection from ${remoteAddress} closed`);
}
function onError(err) {
LogFallback(`Connection ${remoteAddress} error: ${err.message}`);
}
}
function LogFallback(params) {
if (LogServer.enabled) {
LogServer(params);
} else {
console.log("[s] " + params);
}
}