1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package server
- // import "github.com/beoran/woe/telnet"
- import "github.com/beoran/woe/world"
- import "github.com/beoran/woe/monolog"
- /* Actiondata are the params passed to an Actin, neatly wrapped in
- * a struct */
- type ActionData struct {
- Client * Client
- Server * Server
- World * world.World
- Action * Action
- Command string
- Argv []string
- }
- /* A handler for an action. */
- type ActionHandler func(data * ActionData) (err error)
- /* Actions that a client can perform on a server or in
- * the server's world. */
- type Action struct {
- Name string
- Privilege world.Privilege
- Handler ActionHandler
- }
- var ActionMap map[string] Action
- func AddAction(name string, privilege world.Privilege, handler ActionHandler) {
- monolog.Info("Adding new action %s with privilege %d", name, privilege)
- action := Action{name, privilege, handler}
- ActionMap[name] = action
- }
- func doShutdown(data * ActionData) (err error) {
- return nil
- }
- func doRestart(data * ActionData) (err error) {
- return nil
- }
- func doQuit(data * ActionData) (err error) {
- return nil
- }
- func ParseCommand(command string, data * ActionData) {
- data.Command = command
- }
- func init() {
- ActionMap = make(map[string] Action)
- AddAction("/shutdown" , world.PRIVILEGE_LORD, doShutdown)
- AddAction("/restart" , world.PRIVILEGE_LORD, doRestart)
- AddAction("/quit" , world.PRIVILEGE_ZERO, doQuit)
- }
|