From 1b93ccfa1f4ef996e7009874127fde0a3c9a2d77 Mon Sep 17 00:00:00 2001
From: Christian Pointner <equinox@helsinki.at>
Date: Fri, 18 Dec 2015 19:56:34 +0100
Subject: some simple telnet commands are implemented now


diff --git a/src/helsinki.at/rhimportd/ctrlTelnet.go b/src/helsinki.at/rhimportd/ctrlTelnet.go
index 1e0a00e..4d60fe2 100644
--- a/src/helsinki.at/rhimportd/ctrlTelnet.go
+++ b/src/helsinki.at/rhimportd/ctrlTelnet.go
@@ -40,6 +40,9 @@ type TelnetClient struct {
 	conn    net.Conn
 	scanner *bufio.Scanner
 	writer  *bufio.Writer
+	conf    *rhimport.Config
+	rddb    *rhimport.RdDb
+	ctx     *rhimport.ImportContext
 }
 
 func (c *TelnetClient) write_string(text string) (err error) {
@@ -49,13 +52,64 @@ func (c *TelnetClient) write_string(text string) (err error) {
 	return c.writer.Flush()
 }
 
-func (c *TelnetClient) handle_command(cmd string) bool {
+func (c *TelnetClient) say(text string) (err error) {
+	return c.write_string(text + "\n")
+}
+
+func (c *TelnetClient) handle_cmd_help(args []string) {
+	c.say(fmt.Sprintf("usage: tba...(args: %v)", args))
+}
+
+func (c *TelnetClient) handle_cmd_set(args []string) {
+	c.say(fmt.Sprintf("setting args: %v", args))
+	if c.ctx == nil {
+		c.ctx = &rhimport.ImportContext{Config: c.conf, RdDb: c.rddb}
+		c.ctx.UserName = "hugo"
+	}
+}
+
+func (c *TelnetClient) handle_cmd_clear(args []string) {
+	if len(args) >= 0 {
+		c.say("too many arguments")
+	}
+	c.ctx = nil
+}
+
+func (c *TelnetClient) handle_cmd_show(args []string) {
+	c.say(fmt.Sprintf("%+v", c.ctx))
+}
+
+func (c *TelnetClient) handle_cmd_run(args []string) {
+	if c.ctx != nil {
+		c.say(fmt.Sprintf("running args: %v", args))
+		c.ctx = nil
+	} else {
+		c.say(fmt.Sprintf("context is empty please set at least one option"))
+	}
+}
+
+func (c *TelnetClient) handle_cmd(cmdstr string) bool {
+	cmdslice := strings.Fields(cmdstr)
+	if len(cmdslice) == 0 || cmdslice[0] == "" {
+		return false
+	}
+	cmd := cmdslice[0]
+	args := cmdslice[1:]
+
 	if cmd == "quit" {
 		return true
-	} else if strings.HasPrefix(cmd, "help") {
-		c.write_string(fmt.Sprintf("usage: tba...\n"))
+	} else if cmd == "help" {
+		c.handle_cmd_help(args)
+	} else if cmd == "set" {
+		c.handle_cmd_set(args)
+	} else if cmd == "clear" {
+		c.handle_cmd_clear(args)
+	} else if cmd == "show" {
+		c.handle_cmd_show(args)
+	} else if cmd == "run" {
+		c.handle_cmd_run(args)
 	} else {
-		c.write_string("unknown command\n")
+		c.say("unknown command")
 	}
 	return false
 }
@@ -67,7 +121,7 @@ func (c *TelnetClient) handle() {
 		return
 	}
 	for c.scanner.Scan() {
-		if exit := c.handle_command(c.scanner.Text()); exit {
+		if exit := c.handle_cmd(c.scanner.Text()); exit {
 			return
 		}
 
@@ -82,12 +136,15 @@ func (c *TelnetClient) handle() {
 	}
 }
 
-func newTelnetClient(conn net.Conn) (c *TelnetClient) {
+func newTelnetClient(conn net.Conn, conf *rhimport.Config, rddb *rhimport.RdDb) (c *TelnetClient) {
 	rhl.Println("telnet-ctrl: new client from:", conn.RemoteAddr())
 	c = &TelnetClient{}
 	c.conn = conn
 	c.scanner = bufio.NewScanner(conn)
 	c.writer = bufio.NewWriter(conn)
+	c.conf = conf
+	c.rddb = rddb
+	c.ctx = nil
 	return c
 }
 
@@ -107,7 +164,7 @@ func StartControlTelnet(addr_s string, conf *rhimport.Config, rddb *rhimport.RdD
 			return
 		}
 
-		c := newTelnetClient(conn)
+		c := newTelnetClient(conn, conf, rddb)
 		go c.handle()
 	}
 }
-- 
cgit v0.10.2