soju

package module
v0.11.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 24, 2026 License: AGPL-3.0 Imports: 56 Imported by: 0

README

soju

soju is a user-friendly IRC bouncer. soju connects to upstream IRC servers on behalf of the user to provide extra functionality. soju supports many features such as multiple users, numerous IRCv3 extensions, chat history playback and detached channels. It is well-suited for both small and large deployments.

Usage

Building and installing

Dependencies:

  • Go
  • BSD or GNU make
  • a C89 compiler (optional, for SQLite)
  • scdoc (optional, for man pages)

For end users, a Makefile is provided:

make
sudo make install

For development, you can use go run ./cmd/soju as usual. See the development setup page.

To link with the system libsqlite3, set GOFLAGS="-tags=libsqlite3". To disable SQLite support, set GOFLAGS="-tags=nosqlite". To use an alternative SQLite library that does not require CGO, set GOFLAGS="-tags=moderncsqlite". To build with PAM authentication support, set GOFLAGS="-tags=pam".

Contributing

Send patches on Codeberg and report bugs on the issue tracker. Discuss in #soju on Libera Chat.

License

AGPLv3, see LICENSE.

Copyright (C) 2020 The soju Contributors

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewRetryListener

func NewRetryListener(ln net.Listener) net.Listener

Types

type Config

type Config struct {
	config.BasicServer

	IconPath     string
	IconURL      string
	MOTD         string
	Auth         *auth.Authenticator
	FileUploader fileupload.Uploader
}

type DebugLogger added in v0.9.0

type DebugLogger struct {
	// contains filtered or unexported fields
}

func NewLogger

func NewLogger(out io.Writer, debug bool) *DebugLogger

func (*DebugLogger) Debugf added in v0.9.0

func (l *DebugLogger) Debugf(format string, v ...interface{})

type Logger

type Logger interface {
	Printf(format string, v ...interface{})
	Debugf(format string, v ...interface{})
}

type Server

type Server struct {
	Logger          *DebugLogger
	Identd          *identd.Identd        // can be nil
	MetricsRegistry prometheus.Registerer // can be nil
	// contains filtered or unexported fields
}

func NewServer

func NewServer(db database.Database) *Server

func (*Server) Config

func (s *Server) Config() *Config

func (*Server) Serve

func (s *Server) Serve(ln net.Listener) error

func (*Server) ServeAdmin added in v0.11.0

func (s *Server) ServeAdmin(ln net.Listener) error

func (*Server) ServeHTTP

func (s *Server) ServeHTTP(w http.ResponseWriter, req *http.Request)

func (*Server) SetConfig

func (s *Server) SetConfig(cfg *Config)

func (*Server) Shutdown

func (s *Server) Shutdown()

func (*Server) Start

func (s *Server) Start() error

func (*Server) Stats

func (s *Server) Stats() *ServerStats

type ServerStats

type ServerStats struct {
	Users       int
	Downstreams int64
	Upstreams   int64
}

type UserUpdateFunc

type UserUpdateFunc func(record *database.User) error

Directories

Path Synopsis
cmd
soju command
sojuctl command
sojudb command
contrib
migrate-db command
migrate-logs command
quassel-import command
znc-import command
Package identd implements an Identification Protocol server.
Package identd implements an Identification Protocol server.
Package xirc contains an extended IRC library.
Package xirc contains an extended IRC library.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL