Changeset 117 in code for trunk


Ignore:
Timestamp:
Mar 18, 2020, 11:23:08 AM (5 years ago)
Author:
contact
Message:

Add basic infrastructure for bouncer service

Location:
trunk
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r114 r117  
    327327        switch msg.Command {
    328328        case "NICK":
    329                 if err := parseMessageParams(msg, &dc.nick); err != nil {
    330                         return err
    331                 }
     329                var nick string
     330                if err := parseMessageParams(msg, &nick); err != nil {
     331                        return err
     332                }
     333                if nick == serviceNick {
     334                        return ircError{&irc.Message{
     335                                Command: irc.ERR_NICKNAMEINUSE,
     336                                Params:  []string{dc.nick, nick, "Nickname reserved for bouncer service"},
     337                        }}
     338                }
     339                dc.nick = nick
    332340        case "USER":
    333                 var username string
    334                 if err := parseMessageParams(msg, &username, nil, nil, &dc.realname); err != nil {
    335                         return err
    336                 }
    337                 dc.rawUsername = username
     341                if err := parseMessageParams(msg, &dc.rawUsername, nil, nil, &dc.realname); err != nil {
     342                        return err
     343                }
    338344        case "PASS":
    339345                if err := parseMessageParams(msg, &dc.password); err != nil {
     
    891897
    892898                for _, name := range strings.Split(targetsStr, ",") {
     899                        if name == serviceNick {
     900                                handleServicePRIVMSG(dc, text)
     901                                continue
     902                        }
     903
    893904                        uc, upstreamName, err := dc.unmarshalChannel(name)
    894905                        if err != nil {
  • trunk/go.mod

    r98 r117  
    55require (
    66        github.com/emersion/go-sasl v0.0.0-20191210011802-430746ea8b9b
     7        github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
    78        github.com/mattn/go-sqlite3 v2.0.3+incompatible
    89        golang.org/x/crypto v0.0.0-20200311171314-f7b00557c8c4
  • trunk/go.sum

    r96 r117  
    33github.com/emersion/go-sasl v0.0.0-20191210011802-430746ea8b9b h1:uhWtEWBHgop1rqEk2klKaxPAkVDCXexai6hSuRQ7Nvs=
    44github.com/emersion/go-sasl v0.0.0-20191210011802-430746ea8b9b/go.mod h1:G/dpzLu16WtQpBfQ/z3LYiYJn3ZhKSGWn83fyoyQe/k=
     5github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
     6github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
    57github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=
    68github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
  • trunk/upstream.go

    r115 r117  
    559559                })
    560560        case "PRIVMSG":
    561                 if err := parseMessageParams(msg, nil, nil); err != nil {
    562                         return err
    563                 }
     561                if msg.Prefix == nil {
     562                        return fmt.Errorf("expected a prefix")
     563                }
     564
     565                var nick string
     566                if err := parseMessageParams(msg, &nick, nil); err != nil {
     567                        return err
     568                }
     569
     570                if msg.Prefix.Name == serviceNick {
     571                        uc.logger.Printf("skipping PRIVMSG from soju's service: %v", msg)
     572                        break
     573                }
     574                if nick == serviceNick {
     575                        uc.logger.Printf("skipping PRIVMSG to soju's service: %v", msg)
     576                        break
     577                }
     578
    564579                uc.ring.Produce(msg)
    565580        case "INVITE":
Note: See TracChangeset for help on using the changeset viewer.