first commit
This commit is contained in:
43
lib/telnetserver.js
Normal file
43
lib/telnetserver.js
Normal file
@@ -0,0 +1,43 @@
|
||||
'use strict'
|
||||
|
||||
const net = require('net')
|
||||
|
||||
let server = null
|
||||
let sockets = []
|
||||
|
||||
// cleans the input of carriage return, newline
|
||||
const cleanInput = data => data.toString().replace(/(\r\n|\n|\r)/gm, '')
|
||||
|
||||
// executed when data is received from a socket
|
||||
const receiveData = (socket, data) => {
|
||||
const cleanData = cleanInput(data)
|
||||
if (cleanData === "@quit") {
|
||||
socket.end('Goodbye!\n')
|
||||
} else {
|
||||
for (let i = 0; i < sockets.length; i++) {
|
||||
if (sockets[i] !== socket) {
|
||||
sockets[i].write(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// executed when a socket ends
|
||||
const closeSocket = socket => {
|
||||
const i = sockets.indexOf(socket)
|
||||
if (i != -1) sockets.splice(i, 1)
|
||||
}
|
||||
|
||||
// callback method executed when a new TCP socket is opened
|
||||
const newSocket = socket => {
|
||||
sockets.push(socket)
|
||||
socket.write('Welcome to the Telnet server!\n')
|
||||
socket.on('data', data => receiveData(socket, data))
|
||||
socket.on('end', () => closeSocket(socket))
|
||||
}
|
||||
|
||||
// create a new server
|
||||
module.exports = (port) => {
|
||||
if (server === null) server = net.createServer(newSocket).listen(port)
|
||||
return server
|
||||
}
|
||||
Reference in New Issue
Block a user