Changeset 77 in code for trunk/upstream.go


Ignore:
Timestamp:
Mar 4, 2020, 5:22:58 PM (5 years ago)
Author:
contact
Message:

Add SQLite database

Closes: https://todo.sr.ht/~emersion/jounce/9

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/upstream.go

    r74 r77  
    2626
    2727type upstreamConn struct {
    28         upstream *Upstream
     28        network  *network
    2929        logger   Logger
    3030        net      net.Conn
     
    4242        registered bool
    4343        nick       string
     44        username   string
     45        realname   string
    4446        closed     bool
    4547        modes      modeSet
     
    4850}
    4951
    50 func connectToUpstream(u *user, upstream *Upstream) (*upstreamConn, error) {
    51         logger := &prefixLogger{u.srv.Logger, fmt.Sprintf("upstream %q: ", upstream.Addr)}
    52         logger.Printf("connecting to server")
    53 
    54         netConn, err := tls.Dial("tcp", upstream.Addr, nil)
     52func connectToUpstream(network *network) (*upstreamConn, error) {
     53        logger := &prefixLogger{network.user.srv.Logger, fmt.Sprintf("upstream %q: ", network.Addr)}
     54
     55        addr := network.Addr
     56        if !strings.ContainsRune(addr, ':') {
     57                addr = addr + ":6697"
     58        }
     59
     60        logger.Printf("connecting to TLS server at address %q", addr)
     61        netConn, err := tls.Dial("tcp", addr, nil)
    5562        if err != nil {
    56                 return nil, fmt.Errorf("failed to dial %q: %v", upstream.Addr, err)
     63                return nil, fmt.Errorf("failed to dial %q: %v", addr, err)
    5764        }
    5865
     
    6168        msgs := make(chan *irc.Message, 64)
    6269        uc := &upstreamConn{
    63                 upstream: upstream,
     70                network: network,
    6471                logger:   logger,
    6572                net:      netConn,
    6673                irc:      irc.NewConn(netConn),
    67                 srv:      u.srv,
    68                 user:     u,
     74                srv:      network.user.srv,
     75                user:     network.user,
    6976                messages: msgs,
    70                 ring:     NewRing(u.srv.RingCap),
     77                ring:     NewRing(network.user.srv.RingCap),
    7178                channels: make(map[string]*upstreamChannel),
    7279                history:  make(map[string]uint64),
     
    103110func (uc *upstreamConn) forEachDownstream(f func(*downstreamConn)) {
    104111        uc.user.forEachDownstream(func(dc *downstreamConn) {
    105                 if dc.upstream != nil && dc.upstream != uc.upstream {
     112                if dc.network != nil && dc.network != uc.network {
    106113                        return
    107114                }
     
    164171                uc.logger.Printf("connection registered")
    165172
    166                 for _, ch := range uc.upstream.Channels {
     173                channels, err := uc.srv.db.ListChannels(uc.network.ID)
     174                if err != nil {
     175                        uc.logger.Printf("failed to list channels from database: %v", err)
     176                        break
     177                }
     178
     179                for _, ch := range channels {
    167180                        uc.SendMessage(&irc.Message{
    168181                                Command: "JOIN",
    169                                 Params:  []string{ch},
     182                                Params:  []string{ch.Name},
    170183                        })
    171184                }
     
    372385
    373386func (uc *upstreamConn) register() {
    374         uc.nick = uc.upstream.Nick
     387        uc.nick = uc.network.Nick
     388        uc.username = uc.network.Username
     389        if uc.username == "" {
     390                uc.username = uc.nick
     391        }
     392        uc.realname = uc.network.Realname
     393        if uc.realname == "" {
     394                uc.realname = uc.nick
     395        }
     396
    375397        uc.SendMessage(&irc.Message{
    376398                Command: "NICK",
     
    379401        uc.SendMessage(&irc.Message{
    380402                Command: "USER",
    381                 Params:  []string{uc.upstream.Username, "0", "*", uc.upstream.Realname},
     403                Params:  []string{uc.username, "0", "*", uc.realname},
    382404        })
    383405}
Note: See TracChangeset for help on using the changeset viewer.