summaryrefslogtreecommitdiff
path: root/deprecated-webircgateway/pkg/irc
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated-webircgateway/pkg/irc')
-rw-r--r--deprecated-webircgateway/pkg/irc/isupport.go56
-rw-r--r--deprecated-webircgateway/pkg/irc/message.go217
-rw-r--r--deprecated-webircgateway/pkg/irc/state.go79
3 files changed, 0 insertions, 352 deletions
diff --git a/deprecated-webircgateway/pkg/irc/isupport.go b/deprecated-webircgateway/pkg/irc/isupport.go
deleted file mode 100644
index fdb7bee..0000000
--- a/deprecated-webircgateway/pkg/irc/isupport.go
+++ /dev/null
@@ -1,56 +0,0 @@
-package irc
-
-import (
- "strings"
- "sync"
-)
-
-type ISupport struct {
- Received bool
- Injected bool
- Tags map[string]string
- tokens map[string]string
- tokensMutex sync.RWMutex
-}
-
-func (m *ISupport) ClearTokens() {
- m.tokensMutex.Lock()
- m.tokens = make(map[string]string)
- m.tokensMutex.Unlock()
-}
-
-func (m *ISupport) AddToken(tokenPair string) {
- m.tokensMutex.Lock()
- m.addToken(tokenPair)
- m.tokensMutex.Unlock()
-}
-
-func (m *ISupport) AddTokens(tokenPairs []string) {
- m.tokensMutex.Lock()
- for _, tp := range tokenPairs {
- m.addToken(tp)
- }
- m.tokensMutex.Unlock()
-}
-
-func (m *ISupport) HasToken(key string) (ok bool) {
- m.tokensMutex.RLock()
- _, ok = m.tokens[strings.ToUpper(key)]
- m.tokensMutex.RUnlock()
- return
-}
-
-func (m *ISupport) GetToken(key string) (val string) {
- m.tokensMutex.RLock()
- val = m.tokens[strings.ToUpper(key)]
- m.tokensMutex.RUnlock()
- return
-}
-
-func (m *ISupport) addToken(tokenPair string) {
- kv := strings.Split(tokenPair, "=")
- if len(kv) == 1 {
- kv = append(kv, "")
- }
- m.tokens[strings.ToUpper(kv[0])] = kv[1]
-}
diff --git a/deprecated-webircgateway/pkg/irc/message.go b/deprecated-webircgateway/pkg/irc/message.go
deleted file mode 100644
index 18477d6..0000000
--- a/deprecated-webircgateway/pkg/irc/message.go
+++ /dev/null
@@ -1,217 +0,0 @@
-package irc
-
-import (
- "errors"
- "strings"
-)
-
-type Mask struct {
- Nick string
- Username string
- Hostname string
- Mask string
-}
-type Message struct {
- Raw string
- Tags map[string]string
- Prefix *Mask
- Command string
- Params []string
-}
-
-func NewMessage() *Message {
- return &Message{
- Tags: make(map[string]string),
- Prefix: &Mask{},
- }
-}
-
-// GetParam - Get a param value, returning a default value if it doesn't exist
-func (m *Message) GetParam(idx int, def string) string {
- if idx < 0 || idx > len(m.Params)-1 {
- return def
- }
-
- return m.Params[idx]
-}
-
-// GetParamU - Get a param value in uppercase, returning a default value if it doesn't exist
-func (m *Message) GetParamU(idx int, def string) string {
- return strings.ToUpper(m.GetParam(idx, def))
-}
-
-// ToLine - Convert the Message struct to its raw IRC line
-func (m *Message) ToLine() string {
- line := ""
-
- if len(m.Tags) > 0 {
- line += "@"
- tagCount := 0
- for tagName, tagVal := range m.Tags {
- tagCount++
- line += tagName
- if tagVal != "" {
- line += "=" + tagVal
- }
- if tagCount < len(m.Tags) {
- line += ";"
- }
- }
- }
-
- if m.Prefix != nil && (m.Prefix.Nick != "" || m.Prefix.Username != "" || m.Prefix.Hostname != "") {
- prefix := ""
-
- if m.Prefix.Nick != "" {
- prefix += m.Prefix.Nick
- }
-
- if m.Prefix.Username != "" && m.Prefix.Nick != "" {
- prefix += "!" + m.Prefix.Username
- } else if m.Prefix.Username != "" {
- prefix += m.Prefix.Username
- }
-
- if m.Prefix.Hostname != "" && prefix != "" {
- prefix += "@" + m.Prefix.Username
- } else if m.Prefix.Hostname != "" {
- prefix += m.Prefix.Hostname
- }
-
- if line != "" {
- line += " :" + prefix
- } else {
- line += ":" + prefix
- }
- }
-
- if line != "" {
- line += " " + m.Command
- } else {
- line += m.Command
- }
-
- paramLen := len(m.Params)
- for idx, param := range m.Params {
- if idx == paramLen-1 && (strings.Contains(param, " ") || strings.HasPrefix(param, ":")) {
- line += " :" + param
- } else {
- line += " " + param
- }
- }
-
- return line
-}
-
-func createMask(maskStr string) *Mask {
- mask := &Mask{
- Mask: maskStr,
- }
-
- usernameStart := strings.Index(maskStr, "!")
- hostStart := strings.Index(maskStr, "@")
-
- if usernameStart == -1 && hostStart == -1 {
- mask.Nick = maskStr
- } else if usernameStart > -1 && hostStart > -1 {
- mask.Nick = maskStr[0:usernameStart]
- mask.Username = maskStr[usernameStart+1 : hostStart]
- mask.Hostname = maskStr[hostStart+1:]
- } else if usernameStart > -1 && hostStart == -1 {
- mask.Nick = maskStr[0:usernameStart]
- mask.Username = maskStr[usernameStart+1:]
- } else if usernameStart == -1 && hostStart > -1 {
- mask.Username = maskStr[0:hostStart]
- mask.Hostname = maskStr[hostStart+1:]
- }
-
- return mask
-}
-
-// ParseLine - Turn a raw IRC line into a message
-func ParseLine(input string) (*Message, error) {
- line := strings.Trim(input, "\r\n")
-
- message := NewMessage()
- message.Raw = line
-
- token := ""
- rest := ""
-
- token, rest = nextToken(line, false)
- if token == "" {
- return message, errors.New("Empty line")
- }
-
- // Tags. Starts with "@"
- if token[0] == 64 {
- tagsRaw := token[1:]
- tags := strings.Split(tagsRaw, ";")
- for _, tag := range tags {
- parts := strings.Split(tag, "=")
- if len(parts) > 0 && parts[0] == "" {
- continue
- }
-
- if len(parts) == 1 {
- message.Tags[parts[0]] = ""
- } else {
- message.Tags[parts[0]] = parts[1]
- }
- }
-
- token, rest = nextToken(rest, false)
- }
-
- // Prefix. Starts with ":"
- if token != "" && token[0] == 58 {
- message.Prefix = createMask(token[1:])
- token, rest = nextToken(rest, false)
- } else {
- message.Prefix = createMask("")
- }
-
- // Command
- if token == "" {
- return message, errors.New("Missing command")
- }
-
- message.Command = token
-
- // Params
- for {
- token, rest = nextToken(rest, true)
- if token == "" {
- break
- }
-
- message.Params = append(message.Params, token)
- }
-
- return message, nil
-}
-
-func nextToken(s string, allowTrailing bool) (string, string) {
- s = strings.TrimLeft(s, " ")
-
- if len(s) == 0 {
- return "", ""
- }
-
- // The last token (trailing) start with :
- if allowTrailing && s[0] == 58 {
- return s[1:], ""
- }
-
- token := ""
- spaceIdx := strings.Index(s, " ")
- if spaceIdx > -1 {
- token = s[:spaceIdx]
- s = s[spaceIdx+1:]
- } else {
- token = s
- s = ""
- }
-
- return token, s
-}
diff --git a/deprecated-webircgateway/pkg/irc/state.go b/deprecated-webircgateway/pkg/irc/state.go
deleted file mode 100644
index 69480fc..0000000
--- a/deprecated-webircgateway/pkg/irc/state.go
+++ /dev/null
@@ -1,79 +0,0 @@
-package irc
-
-import (
- "strings"
- "sync"
- "time"
-)
-
-type State struct {
- LocalPort int
- RemotePort int
- Username string
- Nick string
- RealName string
- Password string
- Account string
- Modes map[string]string
-
- channelsMutex sync.Mutex
- Channels map[string]*StateChannel
- ISupport *ISupport
-}
-
-type StateChannel struct {
- Name string
- Modes map[string]string
- Joined time.Time
-}
-
-func NewState() *State {
- return &State{
- Channels: make(map[string]*StateChannel),
- ISupport: &ISupport{
- tokens: make(map[string]string),
- },
- }
-}
-
-func NewStateChannel(name string) *StateChannel {
- return &StateChannel{
- Name: name,
- Modes: make(map[string]string),
- Joined: time.Now(),
- }
-}
-
-func (m *State) HasChannel(name string) (ok bool) {
- m.channelsMutex.Lock()
- _, ok = m.Channels[strings.ToLower(name)]
- m.channelsMutex.Unlock()
- return
-}
-
-func (m *State) GetChannel(name string) (channel *StateChannel) {
- m.channelsMutex.Lock()
- channel = m.Channels[strings.ToLower(name)]
- m.channelsMutex.Unlock()
- return
-}
-
-func (m *State) SetChannel(channel *StateChannel) {
- m.channelsMutex.Lock()
- m.Channels[strings.ToLower(channel.Name)] = channel
- m.channelsMutex.Unlock()
-}
-
-func (m *State) RemoveChannel(name string) {
- m.channelsMutex.Lock()
- delete(m.Channels, strings.ToLower(name))
- m.channelsMutex.Unlock()
-}
-
-func (m *State) ClearChannels() {
- m.channelsMutex.Lock()
- for i := range m.Channels {
- delete(m.Channels, i)
- }
- m.channelsMutex.Unlock()
-}