Drunk as I like
Signed-off-by: Aoi K <koizumi.aoi@chaotic.ninja> git-svn-id: file:///srv/svn/repo/suika/trunk@804 f0ae65fe-ee39-954e-97ec-027ff2717ef4
This commit is contained in:
parent
6de8b9c247
commit
cd99ccc1de
2
Makefile
2
Makefile
@ -6,7 +6,7 @@ PREFIX ?= /usr/local
|
||||
BINDIR ?= bin
|
||||
MANDIR ?= share/man
|
||||
|
||||
all: suika suikactl doc/suika.1
|
||||
all: suika suikactl suika-znc-import doc/suika.1
|
||||
|
||||
suika:
|
||||
$(GO) build $(GOFLAGS) ./cmd/suika
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"crypto"
|
||||
@ -57,7 +57,7 @@ func generateCertFP(keyType string, bits int) (privKeyBytes, certBytes []byte, e
|
||||
}
|
||||
cert := &x509.Certificate{
|
||||
SerialNumber: serialNumber,
|
||||
Subject: pkix.Name{CommonName: "soju auto-generated certificate"},
|
||||
Subject: pkix.Name{CommonName: "suika auto-generated certificate"},
|
||||
NotBefore: notBefore,
|
||||
NotAfter: notAfter,
|
||||
KeyUsage: x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
|
||||
|
@ -16,16 +16,16 @@ import (
|
||||
"git.chaotic.ninja/koizumi.aoi/suika/config"
|
||||
)
|
||||
|
||||
const usage = `usage: soju-znc-import [options...] <znc config path>
|
||||
const usage = `usage: suika-znc-import [options...] <znc config path>
|
||||
|
||||
Imports configuration from a ZNC file. Users and networks are merged if they
|
||||
already exist in the soju database. ZNC settings overwrite existing soju
|
||||
already exist in the suika database. ZNC settings overwrite existing suika
|
||||
settings.
|
||||
|
||||
Options:
|
||||
|
||||
-help Show this help message
|
||||
-config <path> Path to soju config file
|
||||
-config <path> Path to suika config file
|
||||
-user <username> Limit import to username (may be specified multiple times)
|
||||
-network <name> Limit import to network (may be specified multiple times)
|
||||
`
|
||||
@ -64,7 +64,7 @@ func main() {
|
||||
|
||||
ctx := context.Background()
|
||||
|
||||
db, err := soju.OpenDB(cfg.SQLDriver, cfg.SQLSource)
|
||||
db, err := suika.OpenDB(cfg.SQLDriver, cfg.SQLSource)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to open database: %v", err)
|
||||
}
|
||||
@ -86,7 +86,7 @@ func main() {
|
||||
if err != nil {
|
||||
log.Fatalf("failed to list users in DB: %v", err)
|
||||
}
|
||||
existingUsers := make(map[string]*soju.User, len(l))
|
||||
existingUsers := make(map[string]*suika.User, len(l))
|
||||
for i, u := range l {
|
||||
existingUsers[u.Username] = &l[i]
|
||||
}
|
||||
@ -107,7 +107,7 @@ func main() {
|
||||
log.Printf("user %q: updating existing user", username)
|
||||
} else {
|
||||
// "!!" is an invalid crypt format, thus disables password auth
|
||||
u = &soju.User{Username: username, Password: "!!"}
|
||||
u = &suika.User{Username: username, Password: "!!"}
|
||||
usersCreated++
|
||||
log.Printf("user %q: creating new user", username)
|
||||
}
|
||||
@ -123,7 +123,7 @@ func main() {
|
||||
if err != nil {
|
||||
log.Fatalf("failed to list networks for user %q: %v", username, err)
|
||||
}
|
||||
existingNetworks := make(map[string]*soju.Network, len(l))
|
||||
existingNetworks := make(map[string]*suika.Network, len(l))
|
||||
for i, n := range l {
|
||||
existingNetworks[n.GetName()] = &l[i]
|
||||
}
|
||||
@ -175,7 +175,7 @@ func main() {
|
||||
if ok {
|
||||
logger.Printf("updating existing network")
|
||||
} else {
|
||||
n = &soju.Network{Name: netName}
|
||||
n = &suika.Network{Name: netName}
|
||||
logger.Printf("creating new network")
|
||||
}
|
||||
|
||||
@ -194,7 +194,7 @@ func main() {
|
||||
if err != nil {
|
||||
logger.Fatalf("failed to list channels: %v", err)
|
||||
}
|
||||
existingChannels := make(map[string]*soju.Channel, len(l))
|
||||
existingChannels := make(map[string]*suika.Channel, len(l))
|
||||
for i, ch := range l {
|
||||
existingChannels[ch.Name] = &l[i]
|
||||
}
|
||||
@ -213,7 +213,7 @@ func main() {
|
||||
if ok {
|
||||
logger.Printf("channel %q: updating existing channel", chName)
|
||||
} else {
|
||||
ch = &soju.Channel{Name: chName}
|
||||
ch = &suika.Channel{Name: chName}
|
||||
logger.Printf("channel %q: creating new channel", chName)
|
||||
}
|
||||
|
||||
@ -232,7 +232,7 @@ func main() {
|
||||
}
|
||||
|
||||
if usersCreated > 0 {
|
||||
log.Printf("warning: user passwords haven't been imported, please set them with `sojuctl change-password <username>`")
|
||||
log.Printf("warning: user passwords haven't been imported, please set them with `suikactl change-password <username>`")
|
||||
}
|
||||
|
||||
log.Printf("imported %v users, %v networks and %v channels", usersImported, networksImported, channelsImported)
|
||||
|
@ -59,7 +59,7 @@ var (
|
||||
tlsCert atomic.Value // *tls.Certificate
|
||||
)
|
||||
|
||||
func loadConfig() (*config.Server, *soju.Config, error) {
|
||||
func loadConfig() (*config.Server, *suika.Config, error) {
|
||||
var raw *config.Server
|
||||
if configPath != "" {
|
||||
var err error
|
||||
@ -88,7 +88,7 @@ func loadConfig() (*config.Server, *soju.Config, error) {
|
||||
tlsCert.Store(&cert)
|
||||
}
|
||||
|
||||
cfg := &soju.Config{
|
||||
cfg := &suika.Config{
|
||||
Hostname: raw.Hostname,
|
||||
Title: raw.Title,
|
||||
LogPath: raw.LogPath,
|
||||
@ -123,7 +123,7 @@ func main() {
|
||||
log.Printf("failed to bump max number of opened files: %v", err)
|
||||
}
|
||||
|
||||
db, err := soju.OpenDB(cfg.SQLDriver, cfg.SQLSource)
|
||||
db, err := suika.OpenDB(cfg.SQLDriver, cfg.SQLSource)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to open database: %v", err)
|
||||
}
|
||||
@ -137,9 +137,9 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
srv := soju.NewServer(db)
|
||||
srv := suika.NewServer(db)
|
||||
srv.SetConfig(serverCfg)
|
||||
srv.Logger = soju.NewLogger(log.Writer(), debug)
|
||||
srv.Logger = suika.NewLogger(log.Writer(), debug)
|
||||
|
||||
for _, listen := range cfg.Listen {
|
||||
listen := listen // copy
|
||||
@ -241,7 +241,7 @@ func main() {
|
||||
}()
|
||||
case "ident":
|
||||
if srv.Identd == nil {
|
||||
srv.Identd = soju.NewIdentd()
|
||||
srv.Identd = suika.NewIdentd()
|
||||
}
|
||||
|
||||
host := u.Host
|
||||
@ -315,7 +315,7 @@ func main() {
|
||||
log.Printf("server listening on %q", listen)
|
||||
}
|
||||
|
||||
if db, ok := db.(soju.MetricsCollectorDatabase); ok && srv.MetricsRegistry != nil {
|
||||
if db, ok := db.(suika.MetricsCollectorDatabase); ok && srv.MetricsRegistry != nil {
|
||||
srv.MetricsRegistry.MustRegister(db.MetricsCollector())
|
||||
}
|
||||
|
||||
@ -344,7 +344,7 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func proxyProtoListener(ln net.Listener, srv *soju.Server) net.Listener {
|
||||
func proxyProtoListener(ln net.Listener, srv *suika.Server) net.Listener {
|
||||
return &proxyproto.Listener{
|
||||
Listener: ln,
|
||||
Policy: func(upstream net.Addr) (proxyproto.Policy, error) {
|
||||
|
@ -15,7 +15,7 @@ import (
|
||||
"golang.org/x/crypto/ssh/terminal"
|
||||
)
|
||||
|
||||
const usage = `usage: sojuctl [-config path] <action> [options...]
|
||||
const usage = `usage: suikactl [-config path] <action> [options...]
|
||||
|
||||
create-user <username> [-admin] Create a new user
|
||||
change-password <username> Change password for a user
|
||||
@ -44,7 +44,7 @@ func main() {
|
||||
cfg = config.Defaults()
|
||||
}
|
||||
|
||||
db, err := soju.OpenDB(cfg.SQLDriver, cfg.SQLSource)
|
||||
db, err := suika.OpenDB(cfg.SQLDriver, cfg.SQLSource)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to open database: %v", err)
|
||||
}
|
||||
@ -73,7 +73,7 @@ func main() {
|
||||
log.Fatalf("failed to hash password: %v", err)
|
||||
}
|
||||
|
||||
user := soju.User{
|
||||
user := suika.User{
|
||||
Username: username,
|
||||
Password: string(hashed),
|
||||
Admin: *admin,
|
||||
|
@ -63,7 +63,7 @@ func Defaults() *Server {
|
||||
return &Server{
|
||||
Hostname: hostname,
|
||||
SQLDriver: "sqlite3",
|
||||
SQLSource: "soju.db",
|
||||
SQLSource: "suika.db",
|
||||
MaxUserNetworks: -1,
|
||||
MultiUpstream: true,
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"context"
|
||||
@ -148,7 +148,7 @@ func (db *PostgresDB) upgrade() error {
|
||||
return nil
|
||||
}
|
||||
if version > len(postgresMigrations) {
|
||||
return fmt.Errorf("soju (version %d) older than schema (version %d)", len(postgresMigrations), version)
|
||||
return fmt.Errorf("suika (version %d) older than schema (version %d)", len(postgresMigrations), version)
|
||||
}
|
||||
|
||||
if version == 0 {
|
||||
@ -343,7 +343,7 @@ func (db *PostgresDB) StoreNetwork(ctx context.Context, userID int64, network *N
|
||||
case "EXTERNAL":
|
||||
// keep saslPlain* nil
|
||||
default:
|
||||
return fmt.Errorf("soju: cannot store network: unsupported SASL mechanism %q", network.SASL.Mechanism)
|
||||
return fmt.Errorf("suika: cannot store network: unsupported SASL mechanism %q", network.SASL.Mechanism)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"context"
|
||||
@ -229,7 +229,7 @@ func (db *SqliteDB) upgrade() error {
|
||||
if version == len(sqliteMigrations) {
|
||||
return nil
|
||||
} else if version > len(sqliteMigrations) {
|
||||
return fmt.Errorf("soju (version %d) older than schema (version %d)", len(sqliteMigrations), version)
|
||||
return fmt.Errorf("suika (version %d) older than schema (version %d)", len(sqliteMigrations), version)
|
||||
}
|
||||
|
||||
tx, err := db.db.Begin()
|
||||
@ -506,7 +506,7 @@ func (db *SqliteDB) StoreNetwork(ctx context.Context, userID int64, network *Net
|
||||
case "EXTERNAL":
|
||||
// keep saslPlain* nil
|
||||
default:
|
||||
return fmt.Errorf("soju: cannot store network: unsupported SASL mechanism %q", network.SASL.Mechanism)
|
||||
return fmt.Errorf("suika: cannot store network: unsupported SASL mechanism %q", network.SASL.Mechanism)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
@ -409,7 +409,7 @@ func (dc *downstreamConn) marshalEntity(net *network, name string) string {
|
||||
name = partialCasemap(net.casemap, name)
|
||||
if dc.network != nil {
|
||||
if dc.network != net {
|
||||
panic("soju: tried to marshal an entity for another network")
|
||||
panic("suika: tried to marshal an entity for another network")
|
||||
}
|
||||
return name
|
||||
}
|
||||
@ -423,7 +423,7 @@ func (dc *downstreamConn) marshalUserPrefix(net *network, prefix *irc.Prefix) *i
|
||||
prefix.Name = partialCasemap(net.casemap, prefix.Name)
|
||||
if dc.network != nil {
|
||||
if dc.network != net {
|
||||
panic("soju: tried to marshal a user prefix for another network")
|
||||
panic("suika: tried to marshal a user prefix for another network")
|
||||
}
|
||||
return prefix
|
||||
}
|
||||
@ -631,7 +631,7 @@ func (dc *downstreamConn) ackMsgID(id string) {
|
||||
}
|
||||
|
||||
func (dc *downstreamConn) sendPing(msgID string) {
|
||||
token := "soju-msgid-" + msgID
|
||||
token := "suika-msgid-" + msgID
|
||||
dc.SendMessage(&irc.Message{
|
||||
Command: "PING",
|
||||
Params: []string{token},
|
||||
@ -639,11 +639,11 @@ func (dc *downstreamConn) sendPing(msgID string) {
|
||||
}
|
||||
|
||||
func (dc *downstreamConn) handlePong(token string) {
|
||||
if !strings.HasPrefix(token, "soju-msgid-") {
|
||||
if !strings.HasPrefix(token, "suika-msgid-") {
|
||||
dc.logger.Printf("received unrecognized PONG token %q", token)
|
||||
return
|
||||
}
|
||||
msgID := strings.TrimPrefix(token, "soju-msgid-")
|
||||
msgID := strings.TrimPrefix(token, "suika-msgid-")
|
||||
dc.ackMsgID(msgID)
|
||||
}
|
||||
|
||||
@ -1411,7 +1411,7 @@ func (dc *downstreamConn) welcome(ctx context.Context) error {
|
||||
dc.SendMessage(&irc.Message{
|
||||
Prefix: dc.srv.prefix(),
|
||||
Command: irc.RPL_WELCOME,
|
||||
Params: []string{dc.nick, "Welcome to soju, " + dc.nick},
|
||||
Params: []string{dc.nick, "Welcome to suika, " + dc.nick},
|
||||
})
|
||||
dc.SendMessage(&irc.Message{
|
||||
Prefix: dc.srv.prefix(),
|
||||
@ -1421,7 +1421,7 @@ func (dc *downstreamConn) welcome(ctx context.Context) error {
|
||||
dc.SendMessage(&irc.Message{
|
||||
Prefix: dc.srv.prefix(),
|
||||
Command: irc.RPL_MYINFO,
|
||||
Params: []string{dc.nick, dc.srv.Config().Hostname, "soju", "aiwroO", "OovaimnqpsrtklbeI"},
|
||||
Params: []string{dc.nick, dc.srv.Config().Hostname, "suika", "aiwroO", "OovaimnqpsrtklbeI"},
|
||||
})
|
||||
for _, msg := range generateIsupport(dc.srv.prefix(), dc.nick, isupport) {
|
||||
dc.SendMessage(msg)
|
||||
@ -2257,7 +2257,7 @@ func (dc *downstreamConn) handleMessageRegistered(ctx context.Context, msg *irc.
|
||||
dc.SendMessage(&irc.Message{
|
||||
Prefix: dc.srv.prefix(),
|
||||
Command: irc.RPL_WHOISSERVER,
|
||||
Params: []string{dc.nick, dc.nick, dc.srv.Config().Hostname, "soju"},
|
||||
Params: []string{dc.nick, dc.nick, dc.srv.Config().Hostname, "suika"},
|
||||
})
|
||||
if dc.user.Admin {
|
||||
dc.SendMessage(&irc.Message{
|
||||
@ -2287,7 +2287,7 @@ func (dc *downstreamConn) handleMessageRegistered(ctx context.Context, msg *irc.
|
||||
dc.SendMessage(&irc.Message{
|
||||
Prefix: dc.srv.prefix(),
|
||||
Command: irc.RPL_WHOISSERVER,
|
||||
Params: []string{dc.nick, serviceNick, dc.srv.Config().Hostname, "soju"},
|
||||
Params: []string{dc.nick, serviceNick, dc.srv.Config().Hostname, "suika"},
|
||||
})
|
||||
dc.SendMessage(&irc.Message{
|
||||
Prefix: dc.srv.prefix(),
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
@ -1,7 +1,7 @@
|
||||
//go:build !go1.16
|
||||
// +build !go1.16
|
||||
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
@ -1,7 +1,7 @@
|
||||
//go:build go1.16
|
||||
// +build go1.16
|
||||
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
18
server.go
18
server.go
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"context"
|
||||
@ -209,7 +209,7 @@ func (s *Server) registerMetrics() {
|
||||
factory := promauto.With(s.MetricsRegistry)
|
||||
|
||||
factory.NewGaugeFunc(prometheus.GaugeOpts{
|
||||
Name: "soju_users_active",
|
||||
Name: "suika_users_active",
|
||||
Help: "Current number of active users",
|
||||
}, func() float64 {
|
||||
s.lock.Lock()
|
||||
@ -219,37 +219,37 @@ func (s *Server) registerMetrics() {
|
||||
})
|
||||
|
||||
factory.NewGaugeFunc(prometheus.GaugeOpts{
|
||||
Name: "soju_downstreams_active",
|
||||
Name: "suika_downstreams_active",
|
||||
Help: "Current number of downstream connections",
|
||||
}, s.metrics.downstreams.Float64)
|
||||
|
||||
factory.NewGaugeFunc(prometheus.GaugeOpts{
|
||||
Name: "soju_upstreams_active",
|
||||
Name: "suika_upstreams_active",
|
||||
Help: "Current number of upstream connections",
|
||||
}, s.metrics.upstreams.Float64)
|
||||
|
||||
s.metrics.upstreamOutMessagesTotal = factory.NewCounter(prometheus.CounterOpts{
|
||||
Name: "soju_upstream_out_messages_total",
|
||||
Name: "suika_upstream_out_messages_total",
|
||||
Help: "Total number of outgoing messages sent to upstream servers",
|
||||
})
|
||||
|
||||
s.metrics.upstreamInMessagesTotal = factory.NewCounter(prometheus.CounterOpts{
|
||||
Name: "soju_upstream_in_messages_total",
|
||||
Name: "suika_upstream_in_messages_total",
|
||||
Help: "Total number of incoming messages received from upstream servers",
|
||||
})
|
||||
|
||||
s.metrics.downstreamOutMessagesTotal = factory.NewCounter(prometheus.CounterOpts{
|
||||
Name: "soju_downstream_out_messages_total",
|
||||
Name: "suika_downstream_out_messages_total",
|
||||
Help: "Total number of outgoing messages sent to downstream clients",
|
||||
})
|
||||
|
||||
s.metrics.downstreamInMessagesTotal = factory.NewCounter(prometheus.CounterOpts{
|
||||
Name: "soju_downstream_in_messages_total",
|
||||
Name: "suika_downstream_in_messages_total",
|
||||
Help: "Total number of incoming messages received from downstream clients",
|
||||
})
|
||||
|
||||
s.metrics.upstreamConnectErrorsTotal = factory.NewCounter(prometheus.CounterOpts{
|
||||
Name: "soju_upstream_connect_errors_total",
|
||||
Name: "suika_upstream_connect_errors_total",
|
||||
Help: "Total number of upstream connection errors",
|
||||
})
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"context"
|
||||
@ -9,10 +9,10 @@ import (
|
||||
"gopkg.in/irc.v3"
|
||||
)
|
||||
|
||||
var testServerPrefix = &irc.Prefix{Name: "soju-test-server"}
|
||||
var testServerPrefix = &irc.Prefix{Name: "suika-test-server"}
|
||||
|
||||
const (
|
||||
testUsername = "soju-test-user"
|
||||
testUsername = "suika-test-user"
|
||||
testPassword = testUsername
|
||||
)
|
||||
|
||||
@ -132,7 +132,7 @@ func registerUpstreamConn(t *testing.T, c ircConn) {
|
||||
c.WriteMessage(&irc.Message{
|
||||
Prefix: testServerPrefix,
|
||||
Command: irc.RPL_YOURHOST,
|
||||
Params: []string{nick, "Your host is soju-test-server"},
|
||||
Params: []string{nick, "Your host is suika-test-server"},
|
||||
})
|
||||
c.WriteMessage(&irc.Message{
|
||||
Prefix: testServerPrefix,
|
||||
@ -142,7 +142,7 @@ func registerUpstreamConn(t *testing.T, c ircConn) {
|
||||
c.WriteMessage(&irc.Message{
|
||||
Prefix: testServerPrefix,
|
||||
Command: irc.RPL_MYINFO,
|
||||
Params: []string{nick, testServerPrefix.Name, "soju", "aiwroO", "OovaimnqpsrtklbeI"},
|
||||
Params: []string{nick, testServerPrefix.Name, "suika", "aiwroO", "OovaimnqpsrtklbeI"},
|
||||
})
|
||||
c.WriteMessage(&irc.Message{
|
||||
Prefix: testServerPrefix,
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"context"
|
||||
@ -21,7 +21,7 @@ import (
|
||||
|
||||
const serviceNick = "BouncerServ"
|
||||
const serviceNickCM = "bouncerserv"
|
||||
const serviceRealname = "soju bouncer service"
|
||||
const serviceRealname = "suika bouncer service"
|
||||
|
||||
// maxRSABits is the maximum number of RSA key bits used when generating a new
|
||||
// private key.
|
||||
@ -261,7 +261,7 @@ func init() {
|
||||
children: serviceCommandSet{
|
||||
"create": {
|
||||
usage: "-username <username> -password <password> [-realname <realname>] [-admin]",
|
||||
desc: "create a new soju user",
|
||||
desc: "create a new suika user",
|
||||
handle: handleUserCreate,
|
||||
admin: true,
|
||||
},
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"testing"
|
||||
@ -22,10 +22,10 @@ func assertSplit(t *testing.T, input string, expected []string) {
|
||||
}
|
||||
|
||||
func TestSplit(t *testing.T) {
|
||||
assertSplit(t, " ch 'up' #soju 'relay'-det\"ache\"d message ", []string{
|
||||
assertSplit(t, " ch 'up' #suika 'relay'-det\"ache\"d message ", []string{
|
||||
"ch",
|
||||
"up",
|
||||
"#soju",
|
||||
"#suika",
|
||||
"relay-detached",
|
||||
"message",
|
||||
})
|
||||
|
@ -1,4 +1,4 @@
|
||||
package soju
|
||||
package suika
|
||||
|
||||
import (
|
||||
"context"
|
||||
@ -199,8 +199,7 @@ func connectToUpstream(ctx context.Context, network *network) (*upstreamConn, er
|
||||
}
|
||||
|
||||
// Don't do the TLS handshake immediately, because we need to register
|
||||
// the new connection with identd ASAP. See:
|
||||
// https://todo.sr.ht/~emersion/soju/69#event-41859
|
||||
// the new connection with identd ASAP.
|
||||
netConn = tls.Client(netConn, tlsConfig)
|
||||
case "irc+insecure":
|
||||
addr := u.Host
|
||||
@ -472,11 +471,11 @@ func (uc *upstreamConn) handleMessage(ctx context.Context, msg *irc.Message) err
|
||||
}
|
||||
|
||||
if msg.Prefix.Name == serviceNick {
|
||||
uc.logger.Printf("skipping %v from soju's service: %v", msg.Command, msg)
|
||||
uc.logger.Printf("skipping %v from suika's service: %v", msg.Command, msg)
|
||||
break
|
||||
}
|
||||
if entity == serviceNick {
|
||||
uc.logger.Printf("skipping %v to soju's service: %v", msg.Command, msg)
|
||||
uc.logger.Printf("skipping %v to suika's service: %v", msg.Command, msg)
|
||||
break
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user