Fix line endings for server.

This commit is contained in:
2020-05-19 12:14:41 +02:00
parent 8db6b5afaa
commit 2a5c7ba463
4 changed files with 36 additions and 16 deletions

View File

@@ -1,4 +1,4 @@
import json
const
defaultPort* = 5555 ## Default port at which the control server will run
@@ -12,4 +12,7 @@ type
parameter*: string ## Optional parameter for the command
proc newCommand*(c: Command, p: string = ""): CommandMessage =
CommandMessage(command: c, parameter: p)
CommandMessage(command: c, parameter: p)
proc wrap*(msg: CommandMessage): string =
$(%msg) & "\r\L"

View File

@@ -2,12 +2,21 @@ import net
import argparse
import commands
var socket = newSocket()
proc sendCommand(server, port: string, msg: CommandMessage) =
socket.connect(server, Port(port.parseInt))
if not socket.trySend(msg.wrap):
echo "Cannot send command: ", msg
socket.close()
var p = newParser("pixctrl"):
help("Control utilitiy for randopix")
option("-s", "--server", help="Host running the randopix server", default="127.0.0.1")
option("-p", "--port", help="Port to connect to the randopix server", default = $defaultPort)
var socket = newSocket()
socket.connect("127.0.0.1", Port(defaultPort))
socket.send("Hello, Sockets!\r\L")
socket.close()
command("refresh"):
run:
let c = newCommand(Command.Refresh)
sendCommand(opts.parentOpts.server, opts.parentOpts.port, c)
p.run(commandLineParams())

View File

@@ -129,6 +129,7 @@ proc checkServerChannel(parameter: string): bool =
else:
echo "Command ignored", msg.command
sleep(100)
result = false
discard idleAdd(checkServerChannel, parameter)

View File

@@ -1,4 +1,4 @@
import net, json, marshal
import net, json
import commands
var
@@ -9,23 +9,28 @@ proc closeServer*() =
var socket = newSocket()
socket.connect("127.0.0.1", Port(defaultPort))
let c = newCommand(Command.Close)
socket.send($(%c))
socket.send(c.wrap)
socket.close()
proc runServer*() =
var socket = newSocket()
socket.bindAddr(Port(defaultPort))
socket.listen()
var server = newSocket()
server.bindAddr(Port(defaultPort))
server.listen()
echo "Control server is listening"
while true:
# Process client requests
var client = newSocket()
socket.accept(client)
echo("Incomming client")
server.accept(client)
echo("Client connected")
try:
var line = client.recvLine()
let msg = to[CommandMessage](line)
if line == "":
echo "No data from client"
continue
var jsonData = parseJson(line)
let msg = jsonData.to(CommandMessage)
case msg.command
of Command.Close:
echo "Server recieved termination command. Exiting."
@@ -37,4 +42,6 @@ proc runServer*() =
except OSError:
echo "Server error: ", getCurrentExceptionMsg()
except:
echo "Invalid command from client"
echo "Invalid command from client: ", getCurrentExceptionMsg()
echo repr(getCurrentException())
server.close()