forked from External/ergo
partially-working sqlite-based usermasks
This commit is contained in:
parent
832a5e1e19
commit
69cdad45ac
6 changed files with 200 additions and 89 deletions
52
irc/types.go
52
irc/types.go
|
|
@ -1,7 +1,6 @@
|
|||
package irc
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
|
@ -10,8 +9,7 @@ import (
|
|||
// simple types
|
||||
//
|
||||
|
||||
// a string with wildcards
|
||||
type Mask string
|
||||
type UserMaskSet map[string]bool
|
||||
|
||||
// add, remove, list modes
|
||||
type ModeOp rune
|
||||
|
|
@ -74,40 +72,6 @@ func (channels ChannelNameMap) Remove(channel *Channel) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
type ClientNameMap map[string]*Client
|
||||
|
||||
var (
|
||||
ErrNickMissing = errors.New("nick missing")
|
||||
ErrNicknameInUse = errors.New("nickname in use")
|
||||
ErrNicknameMismatch = errors.New("nickname mismatch")
|
||||
)
|
||||
|
||||
func (clients ClientNameMap) Get(nick string) *Client {
|
||||
return clients[strings.ToLower(nick)]
|
||||
}
|
||||
|
||||
func (clients ClientNameMap) Add(client *Client) error {
|
||||
if !client.HasNick() {
|
||||
return ErrNickMissing
|
||||
}
|
||||
if clients.Get(client.nick) != nil {
|
||||
return ErrNicknameInUse
|
||||
}
|
||||
clients[strings.ToLower(client.nick)] = client
|
||||
return nil
|
||||
}
|
||||
|
||||
func (clients ClientNameMap) Remove(client *Client) error {
|
||||
if !client.HasNick() {
|
||||
return ErrNickMissing
|
||||
}
|
||||
if clients.Get(client.nick) != client {
|
||||
return ErrNicknameMismatch
|
||||
}
|
||||
delete(clients, strings.ToLower(client.nick))
|
||||
return nil
|
||||
}
|
||||
|
||||
type ChannelModeSet map[ChannelMode]bool
|
||||
|
||||
func (set ChannelModeSet) String() string {
|
||||
|
|
@ -209,17 +173,3 @@ type RegServerCommand interface {
|
|||
Command
|
||||
HandleRegServer(*Server)
|
||||
}
|
||||
|
||||
//
|
||||
// structs
|
||||
//
|
||||
|
||||
type UserMask struct {
|
||||
nickname Mask
|
||||
username Mask
|
||||
hostname Mask
|
||||
}
|
||||
|
||||
func (mask *UserMask) String() string {
|
||||
return fmt.Sprintf("%s!%s@%s", mask.nickname, mask.username, mask.hostname)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue