package main import ( "flag" "fmt" "log" "net" "strings" "time" "go.rctt.net/solec/client" "go.rctt.net/solec/core" "go.rctt.net/solec/prompt" ) var ( conn net.Conn c *client.Client ) type Handler struct{} func (h *Handler) HandleMessage(msg core.Message) { fmt.Printf("%s\t%s -> %s %s\n", msg.Timestamp.Format("2006/01/02 15:04:05.000"), msg.Source, msg.Target, msg.Content) } func (h *Handler) HandleError(err error) { log.Println("client error:", err) } func main() { prompt.Commands["send"] = sendMessage prompt.Commands["join"] = join prompt.Commands["leave"] = leave prompt.Commands["history"] = history var cfg client.Config flag.StringVar(&cfg.Addr, "a", "localhost:9999", "Server address:port") flag.StringVar(&cfg.User, "u", "user", "username") flag.StringVar(&cfg.Pass, "p", "valid", "password") flag.BoolVar(&cfg.Tls, "tls", false, "Enable TLS") flag.BoolVar(&cfg.TlsInsecure, "tls-insecure", false, "Allow insecure TLS certificate") flag.Parse() log.Println("connecting to " + cfg.Addr + " as " + cfg.User) c = client.NewClient(&Handler{}, cfg) go prompt.Read() if err := c.Connect(); err != nil { log.Fatal(err) return } } func sendMessage(args []string) { err := c.SendMessage(args[0], strings.Join(args[1:], " ")) if err != nil { log.Println("cannot send message:", err) } } func join(args []string) { err := c.Join(args[0]) if err != nil { log.Println("cannot join channel:", err) } } func leave(args []string) { err := c.Leave(args[0]) if err != nil { log.Println("cannot leave channel:", err) } } func history(args []string) { err := c.GetHistory(args[0], time.Time{}, 99999999, 0) if err != nil { log.Println("cannot read channel history:", err) } }