/gorcon

Golang based Rcon package for connecting to BF2CC admin servers.

Primary LanguageGoMozilla Public License 2.0MPL-2.0

gorcon

gorcon package contains the essential functions needed for, connecting to & running commands on, BF2CC based Rcon servers.

EXAMPLES:

Basic:

package main

import (
	"fmt"
	"github.com/lee8oi/gorcon"
)

func main() {
	var r gorcon.Rcon
	if err := r.Connect("ADDRESS:PORT"); err != nil {
		fmt.Println(err)
		return
	}
	if err := r.Login(ADMINNAME, PASSWORD); err != nil {
		fmt.Println(err)
		return
	}
	result, err := r.Send("RCON COMMAND")
	if err != nil {
		fmt.Println(err)
	}
	if len(result) > 1 {
		fmt.Println(result)
	}
}

Command console including Reconnect & Config:

package main

import (
	"bufio"
	"fmt"
	"github.com/lee8oi/gorcon"
	"os"
)

var config = gorcon.Config{
	Admin:    "Gorcon",
	Address:  "123.123.123.123",
	Pass:     "SeCrEtPaSsWoRd",
	RconPort: "18666",
}

func main() {
	var r gorcon.Rcon
	if err := r.Connect(config.Address + ":" + config.Port); err != nil {
		fmt.Println(err)
		return
	}
	if err := r.Login(config.Admin, config.Pass); err != nil {
		fmt.Println(err)
		return
	}
	r.AutoReconnect("30s") //see time.ParseDuration for valid time units
	go r.Init()
	go r.Handler(handle)
	for {
		in := bufio.NewReader(os.Stdin)
		line, err := in.ReadString('\n')
		if err != nil {
			fmt.Println(err)
			return
		}
		if len(line) > 1 {
			r.Enqueue(line)
		}
	}
}
func handle(s string) {
	fmt.Println(s)
}