diff --git a/Makefile b/Makefile index 741f301..5603393 100644 --- a/Makefile +++ b/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 diff --git a/bridge.go b/bridge.go index fda02ff..7bb7aa8 100644 --- a/bridge.go +++ b/bridge.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "context" diff --git a/certfp.go b/certfp.go index fc99383..9180f7c 100644 --- a/certfp.go +++ b/certfp.go @@ -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, diff --git a/cmd/suika-znc-import/main.go b/cmd/suika-znc-import/main.go index 02cf08a..1afc483 100644 --- a/cmd/suika-znc-import/main.go +++ b/cmd/suika-znc-import/main.go @@ -16,16 +16,16 @@ import ( "git.chaotic.ninja/koizumi.aoi/suika/config" ) -const usage = `usage: soju-znc-import [options...] +const usage = `usage: suika-znc-import [options...] 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 to soju config file + -config Path to suika config file -user Limit import to username (may be specified multiple times) -network 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 `") + log.Printf("warning: user passwords haven't been imported, please set them with `suikactl change-password `") } log.Printf("imported %v users, %v networks and %v channels", usersImported, networksImported, channelsImported) diff --git a/cmd/suika/main.go b/cmd/suika/main.go index ea49a68..07c87be 100644 --- a/cmd/suika/main.go +++ b/cmd/suika/main.go @@ -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) { diff --git a/cmd/suikactl/main.go b/cmd/suikactl/main.go index 64aa160..4817cf7 100644 --- a/cmd/suikactl/main.go +++ b/cmd/suikactl/main.go @@ -15,7 +15,7 @@ import ( "golang.org/x/crypto/ssh/terminal" ) -const usage = `usage: sojuctl [-config path] [options...] +const usage = `usage: suikactl [-config path] [options...] create-user [-admin] Create a new user change-password 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, diff --git a/config/config.go b/config/config.go index 07b7124..b691529 100644 --- a/config/config.go +++ b/config/config.go @@ -63,7 +63,7 @@ func Defaults() *Server { return &Server{ Hostname: hostname, SQLDriver: "sqlite3", - SQLSource: "soju.db", + SQLSource: "suika.db", MaxUserNetworks: -1, MultiUpstream: true, } diff --git a/conn.go b/conn.go index 04b1237..cbac6e5 100644 --- a/conn.go +++ b/conn.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "context" diff --git a/db.go b/db.go index a227978..54de633 100644 --- a/db.go +++ b/db.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "context" diff --git a/db_postgres.go b/db_postgres.go index 008fdef..1fbdf04 100644 --- a/db_postgres.go +++ b/db_postgres.go @@ -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) } } diff --git a/db_postgres_test.go b/db_postgres_test.go index 577cc7e..7692f31 100644 --- a/db_postgres_test.go +++ b/db_postgres_test.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "database/sql" diff --git a/db_sqlite.go b/db_sqlite.go index 44556eb..34018cd 100644 --- a/db_sqlite.go +++ b/db_sqlite.go @@ -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) } } diff --git a/db_sqlite_test.go b/db_sqlite_test.go index 9524d28..9dfcd80 100644 --- a/db_sqlite_test.go +++ b/db_sqlite_test.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "database/sql" diff --git a/downstream.go b/downstream.go index 9f018d3..6208acd 100644 --- a/downstream.go +++ b/downstream.go @@ -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(), diff --git a/ident.go b/ident.go index a596a86..f33b002 100644 --- a/ident.go +++ b/ident.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "bufio" diff --git a/irc.go b/irc.go index aa725cd..1799e32 100644 --- a/irc.go +++ b/irc.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "fmt" diff --git a/irc_test.go b/irc_test.go index 76b3345..8757bc8 100644 --- a/irc_test.go +++ b/irc_test.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "testing" diff --git a/msgstore.go b/msgstore.go index deb63b4..ed57429 100644 --- a/msgstore.go +++ b/msgstore.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "bytes" diff --git a/msgstore_fs.go b/msgstore_fs.go index b7bd850..90bd76a 100644 --- a/msgstore_fs.go +++ b/msgstore_fs.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "bufio" diff --git a/msgstore_memory.go b/msgstore_memory.go index 4bac476..25ab953 100644 --- a/msgstore_memory.go +++ b/msgstore_memory.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "context" diff --git a/net_go113.go b/net_go113.go index be4f740..24bde7f 100644 --- a/net_go113.go +++ b/net_go113.go @@ -1,7 +1,7 @@ //go:build !go1.16 // +build !go1.16 -package soju +package suika import ( "strings" diff --git a/net_go116.go b/net_go116.go index e52ffc5..ef1256a 100644 --- a/net_go116.go +++ b/net_go116.go @@ -1,7 +1,7 @@ //go:build go1.16 // +build go1.16 -package soju +package suika import ( "errors" diff --git a/rate.go b/rate.go index 74225a3..a14bce2 100644 --- a/rate.go +++ b/rate.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "math/rand" diff --git a/server.go b/server.go index b86c027..015dc6f 100644 --- a/server.go +++ b/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", }) } diff --git a/server_test.go b/server_test.go index b163e0e..b3bcd5d 100644 --- a/server_test.go +++ b/server_test.go @@ -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, diff --git a/service.go b/service.go index 32143a7..f622ed9 100644 --- a/service.go +++ b/service.go @@ -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 -password [-realname ] [-admin]", - desc: "create a new soju user", + desc: "create a new suika user", handle: handleUserCreate, admin: true, }, diff --git a/service_test.go b/service_test.go index b2a056d..1f3fe6b 100644 --- a/service_test.go +++ b/service_test.go @@ -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", }) diff --git a/upstream.go b/upstream.go index 97cc960..f23b17c 100644 --- a/upstream.go +++ b/upstream.go @@ -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 } diff --git a/user.go b/user.go index 0364ff3..fd734f9 100644 --- a/user.go +++ b/user.go @@ -1,4 +1,4 @@ -package soju +package suika import ( "context"