diff options
author | Nathan Lasseter <Nathan Lasseter nathan@bytemark.co.uk> | 2013-10-21 20:14:27 +0100 |
---|---|---|
committer | Nathan Lasseter <Nathan Lasseter nathan@bytemark.co.uk> | 2013-10-21 20:14:27 +0100 |
commit | 8480e8287fdf3aa933ad7b82457b3e67ab0bfa0b (patch) | |
tree | 7d0cbd32d390218a24217b657907a8a5dc949605 /server.d |
First commit
Diffstat (limited to 'server.d')
-rw-r--r-- | server.d | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/server.d b/server.d new file mode 100644 index 0000000..640271c --- /dev/null +++ b/server.d @@ -0,0 +1,26 @@ +import std.socket, std.stdio, + std.conv, std.file, + std.string; +import serverutils; + +void main(string[] args) { + if (args.length != 2) return; + auto sock = new TcpSocket(); + sock.bind(new InternetAddress("127.0.0.1", to!ushort(args[1]))); + sock.listen(1000); + while (true) { + auto level = 0; + auto pair = sock.accept(); + char[255] filename; + auto len = pair.receive(filename); + auto file = filename[0 .. len]; + file = strip(file); + if (inRoot(file)) { + pair.send(readText(file)); + } else { + pair.send("ERROR: Client left root!\n"); + } + pair.shutdown(SocketShutdown.BOTH); + pair.close(); + } +} |