1 | var common = require('@screeps/common'),
|
2 | config = common.configManager.config;
|
3 |
|
4 | Object.assign(config.cli, {
|
5 | greeting: 'Screeps server {build} running on port 21025.\r\nThis CLI interface contains a virtual JavaScript machine which you can use to invoke internal server commands. Any valid JavaScript code is allowed. Type "help()" to learn more about commands.\r\n',
|
6 | connectionListener(socket) {
|
7 |
|
8 | var connectionDesc = `${socket.remoteAddress}:${socket.remotePort}`;
|
9 |
|
10 | console.log(`[${connectionDesc}] Incoming CLI connection`);
|
11 |
|
12 | socket.on('error', error => console.log(`[${connectionDesc}] CLI connection reset`));
|
13 | socket.on('end', () => console.log(`[${connectionDesc}] CLI connection closed`));
|
14 |
|
15 | var runCliCommand = cliSandbox.create((data, isResult) => {
|
16 | if(data === 'undefined') {
|
17 | if(isResult) {
|
18 | socket.write("< ", 'utf8');
|
19 | }
|
20 | return;
|
21 | }
|
22 | socket.write((isResult ? "< " : "") + data + "\r\n", 'utf8');
|
23 | });
|
24 |
|
25 | var buildString = '';
|
26 | try {
|
27 | buildString = `v${require('screeps').version} `;
|
28 | }
|
29 | catch(e) {}
|
30 |
|
31 | socket.write(config.cli.greeting.replace('{build} ', buildString) + '< \r\n');
|
32 |
|
33 | const rl = readline.createInterface({
|
34 | input: socket,
|
35 | output: socket
|
36 | });
|
37 |
|
38 | rl.on('line', line => runCliCommand(line));
|
39 | }
|
40 | });
|
41 |
|
42 | var cliSandbox = require('./sandbox'),
|
43 | q = require('q'),
|
44 | _ = require('lodash'),
|
45 | net = require('net'),
|
46 | readline = require('readline');
|
47 |
|
48 | function startServer() {
|
49 |
|
50 | if (!process.env.CLI_PORT) {
|
51 | throw new Error('CLI_PORT environment variable is not set!');
|
52 | }
|
53 | if (!process.env.CLI_HOST) {
|
54 | throw new Error('CLI_HOST environment variable is not set!');
|
55 | }
|
56 |
|
57 | console.log(`Starting CLI server`);
|
58 |
|
59 | var server = net.createServer(config.cli.connectionListener);
|
60 |
|
61 | server.on('listening', () => console.log(`CLI listening on ${process.env.CLI_HOST}:${process.env.CLI_PORT}`));
|
62 |
|
63 | server.listen(process.env.CLI_PORT, process.env.CLI_HOST);
|
64 |
|
65 | return server;
|
66 | }
|
67 |
|
68 | exports.startServer = startServer; |
\ | No newline at end of file |