Add create-network bouncer service command
This commit is contained in:
parent
37e56a01b2
commit
37eb162b75
@ -638,7 +638,10 @@ func (dc *downstreamConn) setNetwork(networkName string) error {
|
|||||||
|
|
||||||
dc.logger.Printf("auto-saving network %q", networkName)
|
dc.logger.Printf("auto-saving network %q", networkName)
|
||||||
var err error
|
var err error
|
||||||
network, err = dc.user.createNetwork(networkName, dc.nick)
|
network, err = dc.user.createNetwork(&Network{
|
||||||
|
Addr: networkName,
|
||||||
|
Nick: dc.nick,
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
45
service.go
45
service.go
@ -1,7 +1,9 @@
|
|||||||
package soju
|
package soju
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/google/shlex"
|
"github.com/google/shlex"
|
||||||
@ -58,6 +60,11 @@ func init() {
|
|||||||
desc: "print help message",
|
desc: "print help message",
|
||||||
handle: handleServiceHelp,
|
handle: handleServiceHelp,
|
||||||
},
|
},
|
||||||
|
"create-network": {
|
||||||
|
usage: "-addr <addr> [-name name] [-username username] [-pass pass] [-realname realname] [-nick nick]",
|
||||||
|
desc: "add a new network",
|
||||||
|
handle: handleServiceCreateNetwork,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,3 +92,41 @@ func handleServiceHelp(dc *downstreamConn, params []string) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleServiceCreateNetwork(dc *downstreamConn, params []string) error {
|
||||||
|
fs := flag.NewFlagSet("", flag.ContinueOnError)
|
||||||
|
fs.SetOutput(ioutil.Discard)
|
||||||
|
addr := fs.String("addr", "", "")
|
||||||
|
name := fs.String("name", "", "")
|
||||||
|
username := fs.String("username", "", "")
|
||||||
|
pass := fs.String("pass", "", "")
|
||||||
|
realname := fs.String("realname", "", "")
|
||||||
|
nick := fs.String("nick", "", "")
|
||||||
|
|
||||||
|
if err := fs.Parse(params); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if *addr == "" {
|
||||||
|
return fmt.Errorf("flag addr is required")
|
||||||
|
}
|
||||||
|
|
||||||
|
if *nick == "" {
|
||||||
|
*nick = dc.nick
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
network, err := dc.user.createNetwork(&Network{
|
||||||
|
Addr: *addr,
|
||||||
|
Name: *name,
|
||||||
|
Username: *username,
|
||||||
|
Pass: *pass,
|
||||||
|
Realname: *realname,
|
||||||
|
Nick: *nick,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("could not create network: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
sendServicePRIVMSG(dc, fmt.Sprintf("created network %s successfully", network.GetName()))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
7
user.go
7
user.go
@ -158,11 +158,8 @@ func (u *user) run() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *user) createNetwork(addr, nick string) (*network, error) {
|
func (u *user) createNetwork(net *Network) (*network, error) {
|
||||||
network := newNetwork(u, &Network{
|
network := newNetwork(u, net)
|
||||||
Addr: addr,
|
|
||||||
Nick: nick,
|
|
||||||
})
|
|
||||||
err := u.srv.db.StoreNetwork(u.Username, &network.Network)
|
err := u.srv.db.StoreNetwork(u.Username, &network.Network)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
Loading…
Reference in New Issue
Block a user