aboutsummaryrefslogtreecommitdiffstats
path: root/src/server/ConsoleInput.hx
blob: 8b2463fc17b198c11f9abfcfcd5116ca7da7b7e9 (plain) (blame)
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
package server;

import js.html.Console;
import js.node.Readline;
import js.Node.process;
using StringTools;

class ConsoleInput {

	final main:Main;

	public function new(main:Main) {
		this.main = main;
	}

	public function initConsoleInput():Void {
		final rl = Readline.createInterface(process.stdin, process.stdout);
		haxe.Log.trace = (msg, ?pos) -> {
			Readline.clearLine(process.stdout, 0);
			Readline.cursorTo(process.stdout, 0, null);
			Console.log(msg);
			rl.prompt(true);
		};
		rl.prompt();
		rl.on("line", line -> {
			parseLine(line);
			rl.prompt();
		});
		// rl.on("close", exit);
	}

	function parseLine(line:String):Void {
		if (line.startsWith("/addAdmin")) {
			final args = line.split(" ");
			if (args.length != 3) {
				trace("Wrong count of arguments");
				return;
			}
			final name = args[1];
			final password = args[2];
			if (main.badNickName(name)) {
				final error = Lang.get("usernameError")
					.replace("$MAX", '${main.config.maxLoginLength}');
				trace(error);
				return;
			}
			main.addAdmin(name, password);

		} else if (line == "/exit") {
			main.exit();
			return;
		} else {
			trace('Unknown command "$line". List:
/addAdmin name password | Adds channel admin
/exit | Exit process');
		}
	}

}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage