diff --git a/.check-gofmt.sh b/.check-gofmt.sh index 1daa7195..b8ab7c78 100755 --- a/.check-gofmt.sh +++ b/.check-gofmt.sh @@ -1,7 +1,7 @@ #!/bin/bash # exclude vendor/ -SOURCES="./oragono.go ./irc" +SOURCES="./ergo.go ./irc" if [ "$1" = "--fix" ]; then exec gofmt -s -w $SOURCES diff --git a/.gitignore b/.gitignore index 9de2763e..49bb335e 100644 --- a/.gitignore +++ b/.gitignore @@ -95,7 +95,7 @@ _testmain.go *.out -### Oragono ### +### custom ### /_site/ /.vscode/* /ircd* @@ -103,10 +103,10 @@ _testmain.go /web.* /ssl.* /tls.* -/oragono +/ergo /build/* _test -oragono.prof -oragono.mprof +ergo.prof +ergo.mprof /dist *.pem diff --git a/.goreleaser.yml b/.goreleaser.yml index 1ed07d0b..dcdbade7 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,9 +1,9 @@ # .goreleaser.yml # Build customization -project_name: oragono +project_name: ergo builds: - - main: oragono.go - binary: oragono + - main: ergo.go + binary: ergo goos: - freebsd - windows @@ -44,7 +44,7 @@ archives: files: - README - CHANGELOG.md - - oragono.motd + - ergo.motd - default.yaml - traditional.yaml - docs/MANUAL.md diff --git a/CHANGELOG.md b/CHANGELOG.md index e7ab3c74..7318feaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ # Changelog -All notable changes to Oragono will be documented in this file. +All notable changes to Ergo will be documented in this file. ## [2.6.1] - 2021-04-26 diff --git a/DEVELOPING.md b/DEVELOPING.md index cb95d46a..cba58857 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -1,18 +1,18 @@ -# Developing Oragono +# Developing Ergo -This is a guide to modifying Oragono's code. If you're just trying to run your own Oragono, or use one, you shouldn't need to worry about these issues. +This is a guide to modifying Ergo's code. If you're just trying to run your own Ergo, or use one, you shouldn't need to worry about these issues. ## Golang issues You should use the [latest distribution of the Go language for your OS and architecture](https://golang.org/dl/). (If `uname -m` on your Raspberry Pi reports `armv7l`, use the `armv6l` distribution of Go; if it reports v8, you may be able to use the `arm64` distribution.) -Oragono vendors all its dependencies. Because of this, Oragono is self-contained and you should not need to fetch any dependencies with `go get`. Doing so is not recommended, since it may fetch incompatible versions of the dependencies. +Ergo vendors all its dependencies. Because of this, Ergo is self-contained and you should not need to fetch any dependencies with `go get`. Doing so is not recommended, since it may fetch incompatible versions of the dependencies. -If you're upgrading the Go version used by Oragono, there are several places where it's hard-coded and must be changed: +If you're upgrading the Go version used by Ergo, there are several places where it's hard-coded and must be changed: 1. `.travis.yml`, which controls the version that our CI test suite uses to build and test the code (e.g., for a PR) -2. `Dockerfile`, which controls the version that the Oragono binaries in our Docker images are built with +2. `Dockerfile`, which controls the version that the Ergo binaries in our Docker images are built with 3. `go.mod`: this should be updated automatically by Go when you do module-related operations @@ -40,7 +40,7 @@ Develop branches are either used to work out implementation details in preperati 1. Publish the release on GitHub (Releases -> "Draft a new release"); use the new tag, post the changelog entries, upload the binaries 1. Update the `irctest_stable` branch with the new changes (this may be a force push). 1. If it's a production release (as opposed to a release candidate), update the `stable` branch with the new changes. (This may be a force push in the event that stable contained a backport. This is fine because all stable releases and release candidates are tagged.) -1. Similarly, for a production release, update the `irctest_stable` branch (this is the branch used by upstream irctest to integration-test against Oragono). +1. Similarly, for a production release, update the `irctest_stable` branch (this is the branch used by upstream irctest to integration-test against Ergo). 1. Make the appropriate announcements: * For a release candidate: 1. the channel topic @@ -49,7 +49,7 @@ Develop branches are either used to work out implementation details in preperati * For a production release: 1. everything applicable to a release candidate 1. Twitter - 1. oragono.io/news + 1. ergo.chat/news 1. ircv3.net support tables, if applicable 1. other social media? @@ -63,7 +63,7 @@ Once it's built and released, you need to setup the new development version. To ```md ## Unreleased -New release of Oragono! +New release of Ergo! ### Config Changes @@ -80,17 +80,6 @@ New release of Oragono! -## Fuzzing and Testing - -Fuzzing can be useful. We don't have testing done inside the IRCd itself, but this fuzzer I've written works alright and has helped shake out various bugs: [irc_fuzz.py](https://gist.github.com/DanielOaks/63ae611039cdf591dfa4). - -In addition, I've got the beginnings of a stress-tester here which is useful: -https://github.com/DanielOaks/irc-stress-test - -As well, there's a decent set of 'tests' here, which I like to run Oragono through now and then: -https://github.com/DanielOaks/irctest - - ## Debugging It's helpful to enable all loglines while developing. Here's how to configure this: @@ -107,12 +96,12 @@ To debug a hang, the best thing to do is to get a stack trace. The easiest way t $ kill -ABRT -This will kill Oragono and print out a stack trace for you to take a look at. +This will kill Ergo and print out a stack trace for you to take a look at. ## Concurrency design -Oragono involves a fair amount of shared state. Here are some of the main points: +Ergo involves a fair amount of shared state. Here are some of the main points: 1. Each client has a separate goroutine that listens for incoming messages and synchronously processes them. 1. All sends to clients are asynchronous; `client.Send` appends the message to a queue, which is then processed on a separate goroutine. It is always safe to call `client.Send`. diff --git a/Makefile b/Makefile index ae0ca33e..0ecc5622 100644 --- a/Makefile +++ b/Makefile @@ -37,12 +37,12 @@ test: ./.check-gofmt.sh smoke: - oragono mkcerts --conf ./default.yaml || true - oragono run --conf ./default.yaml --smoke + ergo mkcerts --conf ./default.yaml || true + ergo run --conf ./default.yaml --smoke gofmt: ./.check-gofmt.sh --fix irctest: git submodule update --init - cd irctest && make oragono + cd irctest && make ergo diff --git a/README b/README index 25069f37..31d57ccf 100644 --- a/README +++ b/README @@ -1,13 +1,12 @@ - - ▄▄▄ ▄▄▄· ▄▄ • ▐ ▄ - ▪ ▀▄ █·▐█ ▀█ ▐█ ▀ ▪▪ •█▌▐█▪ - ▄█▀▄ ▐▀▀▄ ▄█▀▀█ ▄█ ▀█▄ ▄█▀▄▪▐█▐▐▌ ▄█▀▄ - ▐█▌.▐▌▐█•█▌▐█ ▪▐▌▐█▄▪▐█▐█▌ ▐▌██▐█▌▐█▌.▐▌ - ▀█▄▀▪.▀ ▀ ▀ ▀ ·▀▀▀▀ ▀█▄▀ ▀▀ █▪ ▀█▄▀▪ - + ___ _ __ __ _ ___ + / _ \ '__/ _` |/ _ \ + | __/ | | (_| | (_) | + \___|_| \__, |\___/ + __/ | + |___/ ----------------------------------------------------------------------------------------------- -Oragono is a modern IRC server written in Go. Its core design principles are: +Ergo is a modern IRC server written in Go. Its core design principles are: * Being simple to set up and use * Combining the features of an ircd, a services framework, and a bouncer: @@ -17,9 +16,9 @@ Oragono is a modern IRC server written in Go. Its core design principles are: * Bleeding-edge IRCv3 support * Highly customizable via a rehashable (runtime-reloadable) YAML config - https://oragono.io/ - https://github.com/oragono/oragono - #oragono on Freenode + https://ergo.chat/ + https://github.com/ergochat/ergo + #ergo on irc.ergo.chat or irc.libera.chat ----------------------------------------------------------------------------------------------- @@ -34,23 +33,23 @@ Modify the config file as needed (the recommendations at the top may be helpful) To generate passwords for opers and connect passwords, you can use this command: - $ oragono genpasswd + $ ergo genpasswd If you need to generate self-signed TLS certificates, use this command: - $ oragono mkcerts + $ ergo mkcerts -You are now ready to start Oragono! +You are now ready to start Ergo! - $ oragono run + $ ergo run For further instructions, consult the manual. A copy of the manual should be included in your release under `docs/MANUAL.md`. Or you can view it on the -Web: https://oragono.io/manual.html +Web: https://ergo.chat/manual.html === Updating === -If you're updating from a previous version of Oragono, check out the CHANGELOG for a list +If you're updating from a previous version of Ergo, check out the CHANGELOG for a list of important changes you'll want to take a look at. The change log details config changes, fixes, new features and anything else you'll want to be aware of! diff --git a/README.md b/README.md index dec7a999..c5dfbc0d 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,22 @@ -![Oragono logo](docs/logo.png) +![Ergo logo](docs/logo.png) -Oragono is a modern IRC server written in Go. Its core design principles are: +Ergo (formerly known as Oragono) is a modern IRC server written in Go. Its core design principles are: * Being simple to set up and use * Combining the features of an ircd, a services framework, and a bouncer (integrated account management, history storage, and bouncer functionality) * Bleeding-edge [IRCv3 support](https://ircv3.net/software/servers.html), suitable for use as an IRCv3 reference implementation * Highly customizable via a rehashable (i.e., reloadable at runtime) YAML config -Oragono is a fork of the [Ergonomadic](https://github.com/jlatt/ergonomadic) IRC daemon <3 +Ergo is a fork of the [Ergonomadic](https://github.com/jlatt/ergonomadic) IRC daemon <3 --- [![Go Report Card](https://goreportcard.com/badge/github.com/oragono/oragono)](https://goreportcard.com/report/github.com/oragono/oragono) [![Build Status](https://travis-ci.com/oragono/oragono.svg?branch=master)](https://travis-ci.com/oragono/oragono) [![Download Latest Release](https://img.shields.io/badge/downloads-latest%20release-green.svg)](https://github.com/oragono/oragono/releases/latest) -[![Freenode #oragono](https://img.shields.io/badge/Freenode-%23oragono-1e72ff.svg?style=flat)](https://www.irccloud.com/invite?channel=%23oragono&hostname=irc.freenode.net&port=6697&ssl=1) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/oragono/localized.svg)](https://crowdin.com/project/oragono) -If you want to take a look at a running Oragono instance or test some client code, feel free to play with [testnet.oragono.io](https://testnet.oragono.io/) (TLS on port 6697 or plaintext on port 6667). +If you want to take a look at a running Ergo instance or test some client code, feel free to play with [testnet.ergo.chat](https://testnet.ergo.chat/) (TLS on port 6697 or plaintext on port 6667). --- @@ -40,22 +39,22 @@ If you want to take a look at a running Oragono instance or test some client cod * passwords stored with [bcrypt](https://godoc.org/golang.org/x/crypto) * `UBAN`, a unified ban system that can target IPs, networks, masks, and registered accounts (`KLINE` and `DLINE` are also supported) * [IRCv3 support](https://ircv3.net/software/servers.html) -* a focus on developing with [specifications](https://oragono.io/specs.html) +* a focus on developing with [specifications](https://ergo.chat/specs.html) ## Quick start guide -Download the latest release from this page: https://github.com/oragono/oragono/releases/latest +Download the latest release from this page: https://github.com/ergochat/ergo/releases/latest Extract it into a folder, then run the following commands: ```sh cp default.yaml ircd.yaml vim ircd.yaml # modify the config file to your liking -oragono mkcerts -oragono run # server should be ready to go! +ergo mkcerts +ergo run # server should be ready to go! ``` -**Note:** See the [productionizing guide in our manual](https://github.com/oragono/oragono/blob/master/docs/MANUAL.md#productionizing-with-systemd) for recommendations on how to run a production network, including obtaining valid TLS certificates. +**Note:** See the [productionizing guide in our manual](https://github.com/ergochat/ergo/blob/master/docs/MANUAL.md#productionizing-with-systemd) for recommendations on how to run a production network, including obtaining valid TLS certificates. ### Platform Packages @@ -81,13 +80,13 @@ The `stable` branch contains the latest release. You can run this for a producti #### Building -You'll need an [up-to-date distribution of the Go language for your OS and architecture](https://golang.org/dl/). Once you have that, just clone the repository and run `make build`. If everything goes well, you should now have an executable named `oragono` in the base directory of the project. +You'll need an [up-to-date distribution of the Go language for your OS and architecture](https://golang.org/dl/). Once you have that, just clone the repository and run `make build`. If everything goes well, you should now have an executable named `ergo` in the base directory of the project. ## Configuration The default config file [`default.yaml`](default.yaml) helps walk you through what each option means and changes. -You can use the `--conf` parameter when launching Oragono to control where it looks for the config file. For instance: `oragono run --conf /path/to/ircd.yaml`. The configuration file also stores where the log, database, certificate, and other files are opened. Normally, all these files use relative paths, but you can change them to be absolute (such as `/var/log/ircd.log`) when running Oragono as a service. +You can use the `--conf` parameter when launching Ergo to control where it looks for the config file. For instance: `ergo run --conf /path/to/ircd.yaml`. The configuration file also stores where the log, database, certificate, and other files are opened. Normally, all these files use relative paths, but you can change them to be absolute (such as `/var/log/ircd.log`) when running Ergo as a service. ### Logs @@ -98,14 +97,14 @@ By default, logs go to stderr only. They can be configured to go to a file, or y Passwords (for both `PASS` and oper logins) are stored using bcrypt. To generate encrypted strings for use in the config, use the `genpasswd` subcommand as such: ```sh -oragono genpasswd +ergo genpasswd ``` With this, you receive a blob of text which you can plug into your configuration file. ### Nickname and channel registration -Oragono relies heavily on user accounts to enable its distinctive features (such as allowing multiple clients per nickname). As a user, you can register your current nickname as an account using `/msg NickServ register `. Once you have done so, you should [enable SASL in your clients](https://freenode.net/kb/answer/sasl), ensuring that you will be automatically logged into your account on each connection. This will prevent [problems claiming your registered nickname](https://github.com/oragono/oragono/blob/master/docs/MANUAL.md#nick-equals-account). +Ergo relies heavily on user accounts to enable its distinctive features (such as allowing multiple clients per nickname). As a user, you can register your current nickname as an account using `/msg NickServ register `. Once you have done so, you should [enable SASL in your clients](https://freenode.net/kb/answer/sasl), ensuring that you will be automatically logged into your account on each connection. This will prevent [problems claiming your registered nickname](https://github.com/ergochat/ergo/blob/master/docs/MANUAL.md#nick-equals-account). Once you have registered your nickname, you can use it to register channels: @@ -121,4 +120,4 @@ After this, your channel will remember the fact that you're the owner, the topic * Edmund Huber (2014-2015) * Daniel Oaks (2016-present) * Shivaram Lingamneni (2017-present) -* [Many other contributors and friends of the project <3](https://github.com/oragono/oragono/blob/master/CHANGELOG.md) +* [Many other contributors and friends of the project <3](https://github.com/ergochat/ergo/blob/master/CHANGELOG.md) diff --git a/default.yaml b/default.yaml index 7e3605c6..8271bf7d 100644 --- a/default.yaml +++ b/default.yaml @@ -1,9 +1,9 @@ -# This is the default config file for Oragono. +# This is the default config file for Ergo. # It contains recommended defaults for all settings, including some behaviors # that differ from conventional ircd+services setups. See traditional.yaml # for a config with more "mainstream" behavior. # -# If you are setting up a new oragono server, you should copy this file +# If you are setting up a new Ergo server, you should copy this file # to a new one named 'ircd.yaml', then read the whole file to see which # settings you want to customize. If you don't understand a setting, or # aren't sure what behavior you want, most of the defaults are fine @@ -25,12 +25,12 @@ # network configuration network: # name of the network - name: OragonoTest + name: ErgoTest # server configuration server: # server name - name: oragono.test + name: ergo.test # addresses to listen on listeners: @@ -62,12 +62,12 @@ server: min-tls-version: 1.2 # Example of a Unix domain socket for proxying: - # "/tmp/oragono_sock": + # "/tmp/ergo_sock": # Example of a Tor listener: any connection that comes in on this listener will # be considered a Tor connection. It is strongly recommended that this listener # *not* be on a public interface --- it should be on 127.0.0.0/8 or unix domain: - # "/hidden_service_sockets/oragono_tor_sock": + # "/hidden_service_sockets/ergo_tor_sock": # tor: true # Example of a WebSocket listener: @@ -120,14 +120,14 @@ server: websockets: # Restrict the origin of WebSocket connections by matching the "Origin" HTTP - # header. This setting causes oragono to reject websocket connections unless + # header. This setting causes ergo to reject websocket connections unless # they originate from a page on one of the whitelisted websites in this list. # This prevents malicious websites from making their visitors connect to your - # oragono instance without their knowledge. An empty list means there are no + # ergo instance without their knowledge. An empty list means there are no # restrictions. allowed-origins: - # - "https://oragono.io" - # - "https://*.oragono.io" + # - "https://ergo.chat" + # - "https://*.ergo.chat" # casemapping controls what kinds of strings are permitted as identifiers (nicknames, # channel names, account names, etc.), and how they are normalized for case. @@ -164,13 +164,12 @@ server: # the value must begin with a '~' character. comment out / omit to disable: coerce-ident: '~u' - # password to login to the server - # generated using "oragono genpasswd" - #password: "" + # password to login to the server, generated using `ergo genpasswd`: + #password: "$2a$04$0123456789abcdef0123456789abcdef0123456789abcdef01234" # motd filename # if you change the motd, you should move it to ircd.motd - motd: oragono.motd + motd: ergo.motd # motd formatting codes # if this is true, the motd is escaped using formatting codes like $c, $b, and $i @@ -206,7 +205,7 @@ server: # (comment this out to use passwords only) certfp: "abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789" - # password the gateway uses to connect, made with oragono genpasswd + # password the gateway uses to connect, made with `ergo genpasswd` password: "$2a$04$abcdef0123456789abcdef0123456789abcdef0123456789abcde" # IPs/CIDRs that can use this webirc command @@ -228,7 +227,7 @@ server: compatibility: # many clients require that the final parameter of certain messages be an # RFC1459 trailing parameter, i.e., prefixed with :, whether or not this is - # actually required. this forces Oragono to send those parameters + # actually required. this forces Ergo to send those parameters # as trailings. this is recommended unless you're testing clients for conformance; # defaults to true when unset for that reason. force-trailing: true @@ -241,7 +240,7 @@ server: # traditionally, IRC servers will truncate and send messages that are # too long to be relayed intact. this behavior can be disabled by setting - # allow-truncation to false, in which case Oragono will reject the message + # allow-truncation to false, in which case Ergo will reject the message # and return an error to the client. (note that this option defaults to true # when unset.) allow-truncation: false @@ -309,7 +308,7 @@ server: # IP cloaking hides users' IP addresses from other users and from channel admins # (but not from server admins), while still allowing channel admins to ban # offending IP addresses or networks. In place of hostnames derived from reverse - # DNS, users see fake domain names like pwbs2ui4377257x8.oragono. These names are + # DNS, users see fake domain names like pwbs2ui4377257x8.irc. These names are # generated deterministically from the underlying IP address, but if the underlying # IP is not already known, it is infeasible to recover it from the cloaked name. # If you disable this, you should probably enable lookup-hostnames in its place. @@ -351,10 +350,10 @@ server: secure-nets: # - "10.0.0.0/8" - # oragono will write files to disk under certain circumstances, e.g., + # Ergo will write files to disk under certain circumstances, e.g., # CPU profiling or data export. by default, these files will be written # to the working directory. set this to customize: - #output-path: "/home/oragono/out" + #output-path: "/home/ergo/out" # the hostname used by "services", e.g., NickServ, defaults to "localhost", # e.g., `NickServ!NickServ@localhost`. uncomment this to override: @@ -497,7 +496,7 @@ accounts: # nickname after the initial connection is complete forbid-anonymous-nick-changes: false - # multiclient controls whether oragono allows multiple connections to + # multiclient controls whether Ergo allows multiple connections to # attach to the same client/nickname identity; this is part of the # functionality traditionally provided by a bouncer like ZNC multiclient: @@ -658,7 +657,7 @@ opers: # operators can be authenticated either by password (with the /OPER command), # or by certificate fingerprint, or both. if a password hash is set, then a # password is required to oper up (e.g., /OPER dan mypassword). to generate - # the hash, use `oragono genpasswd`. + # the hash, use `ergo genpasswd`. password: "$2a$04$0123456789abcdef0123456789abcdef0123456789abcdef01234" # if a SHA-256 certificate fingerprint is configured here, then it will be @@ -718,7 +717,7 @@ logging: # debug options debug: - # when enabled, oragono will attempt to recover from certain kinds of + # when enabled, Ergo will attempt to recover from certain kinds of # client-triggered runtime errors that would normally crash the server. # this makes the server more resilient to DoS, but could result in incorrect # behavior. deployments that would prefer to "start from scratch", e.g., by @@ -749,9 +748,9 @@ datastore: port: 3306 # if socket-path is set, it will be used instead of host:port #socket-path: "/var/run/mysqld/mysqld.sock" - user: "oragono" + user: "ergo" password: "hunter2" - history-database: "oragono_history" + history-database: "ergo_history" timeout: 3s max-conns: 4 # this may be necessary to prevent middleware from closing your connections: @@ -965,5 +964,5 @@ history: # - "typing" # whether to allow customization of the config at runtime using environment variables, -# e.g., ORAGONO__SERVER__MAX_SENDQ=128k. see the manual for more details. +# e.g., ERGO__SERVER__MAX_SENDQ=128k. see the manual for more details. allow-environment-overrides: true diff --git a/docs/logo.png b/docs/logo.png index 391994ca..4ea7744d 100644 Binary files a/docs/logo.png and b/docs/logo.png differ diff --git a/oragono.go b/ergo.go similarity index 84% rename from oragono.go rename to ergo.go index 308409b6..3820aef2 100644 --- a/oragono.go +++ b/ergo.go @@ -13,12 +13,13 @@ import ( "strings" "syscall" - "github.com/docopt/docopt-go" - "github.com/oragono/oragono/irc" - "github.com/oragono/oragono/irc/logger" - "github.com/oragono/oragono/irc/mkcerts" "golang.org/x/crypto/bcrypt" "golang.org/x/crypto/ssh/terminal" + + "github.com/docopt/docopt-go" + "github.com/ergochat/ergo/irc" + "github.com/ergochat/ergo/irc/logger" + "github.com/ergochat/ergo/irc/mkcerts" ) // set via linker flags, either by make or by goreleaser: @@ -47,7 +48,7 @@ func fileDoesNotExist(file string) bool { return false } -// implements the `oragono mkcerts` command +// implements the `ergo mkcerts` command func doMkcerts(configFile string, quiet bool) { config, err := irc.LoadRawConfig(configFile) if err != nil { @@ -78,7 +79,7 @@ func doMkcerts(configFile string, quiet bool) { if !(fileDoesNotExist(cert) && fileDoesNotExist(key)) { log.Fatalf("Preexisting TLS cert and/or key files: %s %s", cert, key) } - err := mkcerts.CreateCert("Oragono", host, cert, key) + err := mkcerts.CreateCert("Ergo", host, cert, key) if err == nil { if !quiet { log.Printf(" Certificate created at %s : %s\n", cert, key) @@ -92,16 +93,16 @@ func doMkcerts(configFile string, quiet bool) { func main() { irc.SetVersionString(version, commit) - usage := `oragono. + usage := `ergo. Usage: - oragono initdb [--conf ] [--quiet] - oragono upgradedb [--conf ] [--quiet] - oragono importdb [--conf ] [--quiet] - oragono genpasswd [--conf ] [--quiet] - oragono mkcerts [--conf ] [--quiet] - oragono run [--conf ] [--quiet] [--smoke] - oragono -h | --help - oragono --version + ergo initdb [--conf ] [--quiet] + ergo upgradedb [--conf ] [--quiet] + ergo importdb [--conf ] [--quiet] + ergo genpasswd [--conf ] [--quiet] + ergo mkcerts [--conf ] [--quiet] + ergo run [--conf ] [--quiet] [--smoke] + ergo -h | --help + ergo --version Options: --conf Configuration file to use [default: ircd.yaml]. --quiet Don't show startup/shutdown lines. @@ -183,7 +184,7 @@ Options: // warning if running a non-final version if strings.Contains(irc.Ver, "unreleased") { - logman.Warning("server", "You are currently running an unreleased beta version of Oragono that may be unstable and could corrupt your database.\nIf you are running a production network, please download the latest build from https://oragono.io/downloads.html and run that instead.") + logman.Warning("server", "You are currently running an unreleased beta version of Ergo that may be unstable and could corrupt your database.\nIf you are running a production network, please download the latest build from https://ergo.chat/downloads.html and run that instead.") } server, err := irc.NewServer(config, logman) @@ -193,7 +194,7 @@ Options: } if !arguments["--quiet"].(bool) { logman.Info("server", "Server running") - defer logman.Info("server", fmt.Sprintf("Oragono v%s exiting", irc.SemVer)) + defer logman.Info("server", fmt.Sprintf("%s exiting", irc.Ver)) } if !arguments["--smoke"].(bool) { server.Run() diff --git a/oragono.motd b/ergo.motd similarity index 100% rename from oragono.motd rename to ergo.motd diff --git a/go.mod b/go.mod index 8e7fa2c8..9eb305c5 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/oragono/oragono +module github.com/ergochat/ergo go 1.16 diff --git a/irc/accounts.go b/irc/accounts.go index cfa12977..99e4aeb4 100644 --- a/irc/accounts.go +++ b/irc/accounts.go @@ -15,12 +15,12 @@ import ( "time" "unicode" - "github.com/oragono/oragono/irc/connection_limits" - "github.com/oragono/oragono/irc/email" - "github.com/oragono/oragono/irc/migrations" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/passwd" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/connection_limits" + "github.com/ergochat/ergo/irc/email" + "github.com/ergochat/ergo/irc/migrations" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/passwd" + "github.com/ergochat/ergo/irc/utils" "github.com/tidwall/buntdb" ) diff --git a/irc/authscript.go b/irc/authscript.go index 80e7e304..bb5dea95 100644 --- a/irc/authscript.go +++ b/irc/authscript.go @@ -10,7 +10,7 @@ import ( "fmt" "net" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) // JSON-serializable input and output types for the script diff --git a/irc/caps/set.go b/irc/caps/set.go index c33f6ecb..fbd72bd5 100644 --- a/irc/caps/set.go +++ b/irc/caps/set.go @@ -5,7 +5,7 @@ package caps import ( "fmt" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) // Set holds a set of enabled capabilities. diff --git a/irc/channel.go b/irc/channel.go index 22add543..1fdd4332 100644 --- a/irc/channel.go +++ b/irc/channel.go @@ -15,10 +15,10 @@ import ( "github.com/goshuirc/irc-go/ircutils" - "github.com/oragono/oragono/irc/caps" - "github.com/oragono/oragono/irc/history" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/caps" + "github.com/ergochat/ergo/irc/history" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/utils" ) type ChannelSettings struct { diff --git a/irc/channelmanager.go b/irc/channelmanager.go index 671020e3..6b91b885 100644 --- a/irc/channelmanager.go +++ b/irc/channelmanager.go @@ -7,7 +7,7 @@ import ( "sort" "sync" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) type channelManagerEntry struct { diff --git a/irc/channelreg.go b/irc/channelreg.go index 9cc7f8a5..1a3a366e 100644 --- a/irc/channelreg.go +++ b/irc/channelreg.go @@ -12,8 +12,8 @@ import ( "github.com/tidwall/buntdb" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/utils" ) // this is exclusively the *persistence* layer for channel registration; diff --git a/irc/chanserv.go b/irc/chanserv.go index 62e6483c..e6995932 100644 --- a/irc/chanserv.go +++ b/irc/chanserv.go @@ -10,10 +10,10 @@ import ( "strings" "time" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/sno" + "github.com/ergochat/ergo/irc/utils" "github.com/goshuirc/irc-go/ircfmt" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/sno" - "github.com/oragono/oragono/irc/utils" ) const chanservHelp = `ChanServ lets you register and manage channels.` diff --git a/irc/client.go b/irc/client.go index f432c259..a1e1cc3e 100644 --- a/irc/client.go +++ b/irc/client.go @@ -21,13 +21,13 @@ import ( "github.com/goshuirc/irc-go/ircreader" ident "github.com/oragono/go-ident" - "github.com/oragono/oragono/irc/caps" - "github.com/oragono/oragono/irc/connection_limits" - "github.com/oragono/oragono/irc/flatip" - "github.com/oragono/oragono/irc/history" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/sno" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/caps" + "github.com/ergochat/ergo/irc/connection_limits" + "github.com/ergochat/ergo/irc/flatip" + "github.com/ergochat/ergo/irc/history" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/sno" + "github.com/ergochat/ergo/irc/utils" ) const ( diff --git a/irc/client_lookup_set.go b/irc/client_lookup_set.go index 2cc60318..8d96e021 100644 --- a/irc/client_lookup_set.go +++ b/irc/client_lookup_set.go @@ -8,9 +8,9 @@ import ( "strings" "sync" - "github.com/oragono/oragono/irc/caps" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/caps" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/utils" ) // ClientManager keeps track of clients by nick, enforcing uniqueness of casefolded nicks diff --git a/irc/client_test.go b/irc/client_test.go index d371c11f..7aeee37b 100644 --- a/irc/client_test.go +++ b/irc/client_test.go @@ -6,7 +6,7 @@ package irc import ( "testing" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) func TestGenerateBatchID(t *testing.T) { diff --git a/irc/cloaks/cloaks.go b/irc/cloaks/cloaks.go index 0418d993..a46b5208 100644 --- a/irc/cloaks/cloaks.go +++ b/irc/cloaks/cloaks.go @@ -8,7 +8,7 @@ import ( "golang.org/x/crypto/sha3" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) type CloakConfig struct { diff --git a/irc/config.go b/irc/config.go index 02f562cf..e88ff285 100644 --- a/irc/config.go +++ b/irc/config.go @@ -27,19 +27,19 @@ import ( "github.com/goshuirc/irc-go/ircfmt" "gopkg.in/yaml.v2" - "github.com/oragono/oragono/irc/caps" - "github.com/oragono/oragono/irc/cloaks" - "github.com/oragono/oragono/irc/connection_limits" - "github.com/oragono/oragono/irc/custime" - "github.com/oragono/oragono/irc/email" - "github.com/oragono/oragono/irc/isupport" - "github.com/oragono/oragono/irc/jwt" - "github.com/oragono/oragono/irc/languages" - "github.com/oragono/oragono/irc/logger" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/mysql" - "github.com/oragono/oragono/irc/passwd" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/caps" + "github.com/ergochat/ergo/irc/cloaks" + "github.com/ergochat/ergo/irc/connection_limits" + "github.com/ergochat/ergo/irc/custime" + "github.com/ergochat/ergo/irc/email" + "github.com/ergochat/ergo/irc/isupport" + "github.com/ergochat/ergo/irc/jwt" + "github.com/ergochat/ergo/irc/languages" + "github.com/ergochat/ergo/irc/logger" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/mysql" + "github.com/ergochat/ergo/irc/passwd" + "github.com/ergochat/ergo/irc/utils" ) // here's how this works: exported (capitalized) members of the config structs @@ -1025,10 +1025,13 @@ func (ce *configPathError) Error() string { func mungeFromEnvironment(config *Config, envPair string) (applied bool, err *configPathError) { equalIdx := strings.IndexByte(envPair, '=') name, value := envPair[:equalIdx], envPair[equalIdx+1:] - if !strings.HasPrefix(name, "ORAGONO__") { + if strings.HasPrefix(name, "ERGO__") { + name = strings.TrimPrefix(name, "ERGO__") + } else if strings.HasPrefix(name, "ORAGONO__") { + name = strings.TrimPrefix(name, "ORAGONO__") + } else { return false, nil } - name = strings.TrimPrefix(name, "ORAGONO__") pathComponents := strings.Split(name, "__") for i, pathComponent := range pathComponents { pathComponents[i] = screamingSnakeToKebab(pathComponent) diff --git a/irc/config_test.go b/irc/config_test.go index cdc9a24d..3d55865b 100644 --- a/irc/config_test.go +++ b/irc/config_test.go @@ -19,12 +19,12 @@ func TestEnvironmentOverrides(t *testing.T) { env := []string{ `USER=shivaram`, // unrelated var `ORAGONO_USER=oragono`, // this should be ignored as well - `ORAGONO__NETWORK__NAME=example.com`, + `ERGO__NETWORK__NAME=example.com`, `ORAGONO__SERVER__COMPATIBILITY__FORCE_TRAILING=false`, `ORAGONO__SERVER__COERCE_IDENT="~user"`, - `ORAGONO__SERVER__MOTD=short.motd.txt`, + `ERGO__SERVER__MOTD=short.motd.txt`, `ORAGONO__ACCOUNTS__NICK_RESERVATION__ENABLED=true`, - `ORAGONO__ACCOUNTS__DEFAULT_USER_MODES="+iR"`, + `ERGO__ACCOUNTS__DEFAULT_USER_MODES="+iR"`, `ORAGONO__SERVER__IP_CLOAKING={"enabled": true, "enabled-for-always-on": true, "netname": "irc", "cidr-len-ipv4": 32, "cidr-len-ipv6": 64, "num-bits": 64}`, } for _, envPair := range env { diff --git a/irc/connection_limits/limiter.go b/irc/connection_limits/limiter.go index 9b844d99..c5c2f902 100644 --- a/irc/connection_limits/limiter.go +++ b/irc/connection_limits/limiter.go @@ -10,8 +10,8 @@ import ( "sync" "time" - "github.com/oragono/oragono/irc/flatip" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/flatip" + "github.com/ergochat/ergo/irc/utils" ) var ( diff --git a/irc/connection_limits/limiter_test.go b/irc/connection_limits/limiter_test.go index 5328d2c0..0b7638a3 100644 --- a/irc/connection_limits/limiter_test.go +++ b/irc/connection_limits/limiter_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/oragono/oragono/irc/flatip" + "github.com/ergochat/ergo/irc/flatip" ) func easyParseIP(ipstr string) (result flatip.IP) { diff --git a/irc/database.go b/irc/database.go index 5f6e9a59..0851e3fe 100644 --- a/irc/database.go +++ b/irc/database.go @@ -14,8 +14,8 @@ import ( "strings" "time" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/utils" "github.com/tidwall/buntdb" ) diff --git a/irc/dline.go b/irc/dline.go index db7d4ffb..848d7b17 100644 --- a/irc/dline.go +++ b/irc/dline.go @@ -10,7 +10,7 @@ import ( "sync" "time" - "github.com/oragono/oragono/irc/flatip" + "github.com/ergochat/ergo/irc/flatip" "github.com/tidwall/buntdb" ) diff --git a/irc/email/email.go b/irc/email/email.go index 4b7554b0..dad129c2 100644 --- a/irc/email/email.go +++ b/irc/email/email.go @@ -10,7 +10,7 @@ import ( "regexp" "strings" - "github.com/oragono/oragono/irc/smtp" + "github.com/ergochat/ergo/irc/smtp" ) var ( diff --git a/irc/errors.go b/irc/errors.go index 41228b32..30eb3e54 100644 --- a/irc/errors.go +++ b/irc/errors.go @@ -10,7 +10,7 @@ import ( "fmt" "time" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) // Runtime Errors diff --git a/irc/gateways.go b/irc/gateways.go index e7dbbecf..cbc9c4c6 100644 --- a/irc/gateways.go +++ b/irc/gateways.go @@ -9,9 +9,9 @@ import ( "errors" "net" - "github.com/oragono/oragono/irc/flatip" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/flatip" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/utils" ) var ( diff --git a/irc/getters.go b/irc/getters.go index d7c6dcaf..3000c1e4 100644 --- a/irc/getters.go +++ b/irc/getters.go @@ -9,10 +9,10 @@ import ( "time" "unsafe" - "github.com/oragono/oragono/irc/caps" - "github.com/oragono/oragono/irc/languages" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/caps" + "github.com/ergochat/ergo/irc/languages" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/utils" ) func (server *Server) Config() (config *Config) { diff --git a/irc/handlers.go b/irc/handlers.go index 44cf8515..ed8cb422 100644 --- a/irc/handlers.go +++ b/irc/handlers.go @@ -25,14 +25,14 @@ import ( "github.com/goshuirc/irc-go/ircutils" "golang.org/x/crypto/bcrypt" - "github.com/oragono/oragono/irc/caps" - "github.com/oragono/oragono/irc/custime" - "github.com/oragono/oragono/irc/flatip" - "github.com/oragono/oragono/irc/history" - "github.com/oragono/oragono/irc/jwt" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/sno" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/caps" + "github.com/ergochat/ergo/irc/custime" + "github.com/ergochat/ergo/irc/flatip" + "github.com/ergochat/ergo/irc/history" + "github.com/ergochat/ergo/irc/jwt" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/sno" + "github.com/ergochat/ergo/irc/utils" ) // helper function to parse ACC callbacks, e.g., mailto:person@example.com, tel:16505551234 @@ -710,7 +710,7 @@ func debugHandler(server *Server, client *Client, msg ircmsg.Message, rb *Respon rb.Notice(fmt.Sprintf("num goroutines: %d", count)) case "PROFILEHEAP": - profFile := server.Config().getOutputPath("oragono.mprof") + profFile := server.Config().getOutputPath("ergo.mprof") file, err := os.Create(profFile) if err != nil { rb.Notice(fmt.Sprintf("error: %s", err)) @@ -721,7 +721,7 @@ func debugHandler(server *Server, client *Client, msg ircmsg.Message, rb *Respon rb.Notice(fmt.Sprintf("written to %s", profFile)) case "STARTCPUPROFILE": - profFile := server.Config().getOutputPath("oragono.prof") + profFile := server.Config().getOutputPath("ergo.prof") file, err := os.Create(profFile) if err != nil { rb.Notice(fmt.Sprintf("error: %s", err)) @@ -1082,13 +1082,13 @@ func infoHandler(server *Server, client *Client, msg ircmsg.Message, rb *Respons for _, line := range infoString1 { rb.Add(nil, server.name, RPL_INFO, nick, line) } - rb.Add(nil, server.name, RPL_INFO, nick, fmt.Sprintf(client.t("This is Oragono version %s."), SemVer)) + rb.Add(nil, server.name, RPL_INFO, nick, fmt.Sprintf(client.t("This is Ergo version %s."), SemVer)) if Commit != "" { rb.Add(nil, server.name, RPL_INFO, nick, fmt.Sprintf(client.t("It was built from git hash %s."), Commit)) } rb.Add(nil, server.name, RPL_INFO, nick, fmt.Sprintf(client.t("It was compiled using %s."), runtime.Version())) rb.Add(nil, server.name, RPL_INFO, nick, "") - rb.Add(nil, server.name, RPL_INFO, nick, client.t("Oragono is released under the MIT license.")) + rb.Add(nil, server.name, RPL_INFO, nick, client.t("Ergo is released under the MIT license.")) rb.Add(nil, server.name, RPL_INFO, nick, "") rb.Add(nil, server.name, RPL_INFO, nick, client.t("Core Developers:")) for _, line := range infoString2 { @@ -1099,7 +1099,7 @@ func infoHandler(server *Server, client *Client, msg ircmsg.Message, rb *Respons rb.Add(nil, server.name, RPL_INFO, nick, line) } rb.Add(nil, server.name, RPL_INFO, nick, client.t("For a more complete list of contributors, see our changelog:")) - rb.Add(nil, server.name, RPL_INFO, nick, " https://github.com/oragono/oragono/blob/master/CHANGELOG.md") + rb.Add(nil, server.name, RPL_INFO, nick, " https://github.com/ergochat/ergo/blob/master/CHANGELOG.md") rb.Add(nil, server.name, RPL_INFO, nick, "") // show translators for languages other than good ole' regular English tlines := server.Languages().Translators() diff --git a/irc/help.go b/irc/help.go index f750f86f..347f981d 100644 --- a/irc/help.go +++ b/irc/help.go @@ -9,7 +9,7 @@ import ( "strings" "sync" - "github.com/oragono/oragono/irc/languages" + "github.com/ergochat/ergo/irc/languages" ) // HelpEntryType represents the different sorts of help entries that can exist. @@ -37,7 +37,7 @@ type HelpEntry struct { var ( cmodeHelpText = `== Channel Modes == -Oragono supports the following channel modes: +Ergo supports the following channel modes: +b | Client masks that are banned from the channel (e.g. *!*@127.0.0.1) +e | Client masks that are exempted from bans. @@ -68,7 +68,7 @@ Oragono supports the following channel modes: +v (+) | Voice channel mode.` umodeHelpText = `== User Modes == -Oragono supports the following user modes: +Ergo supports the following user modes: +a | User is marked as being away. This mode is set with the /AWAY command. +i | User is marked as invisible (their channels are hidden from whois replies). @@ -81,7 +81,7 @@ Oragono supports the following user modes: +T | CTCP messages to the user are blocked.` snomaskHelpText = `== Server Notice Masks == -Oragono supports the following server notice masks for operators: +Ergo supports the following server notice masks for operators: a | Local announcements. c | Local client connections. @@ -502,7 +502,7 @@ given, views the current topic on the channel.`, "uban": { text: `UBAN [arguments] -Oragono's "unified ban" system. Accepts the following subcommands: +Ergo's "unified ban" system. Accepts the following subcommands: 1. UBAN ADD [REQUIRE-SASL] [DURATION ] [REASON...] 2. UBAN DEL @@ -638,15 +638,15 @@ for direct use by end users.`, "casemapping": { text: `RPL_ISUPPORT CASEMAPPING -Oragono supports an experimental unicode casemapping designed for extended +Ergo supports an experimental unicode casemapping designed for extended Unicode support. This casemapping is based off RFC 7613 and the draft rfc7613 -casemapping spec here: https://oragono.io/specs.html`, +casemapping spec here: https://ergo.chat/specs.html`, helpType: ISupportHelpEntry, }, "prefix": { text: `RPL_ISUPPORT PREFIX -Oragono supports the following channel membership prefixes: +Ergo supports the following channel membership prefixes: +q (~) | Founder channel mode. +a (&) | Admin channel mode. diff --git a/irc/history/history.go b/irc/history/history.go index 0e10e856..db3c0d22 100644 --- a/irc/history/history.go +++ b/irc/history/history.go @@ -4,7 +4,7 @@ package history import ( - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" "sync" "time" ) diff --git a/irc/histserv.go b/irc/histserv.go index 653e6822..c9228809 100644 --- a/irc/histserv.go +++ b/irc/histserv.go @@ -11,9 +11,9 @@ import ( "strconv" "time" - "github.com/oragono/oragono/irc/history" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/history" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/utils" ) const ( diff --git a/irc/hostserv.go b/irc/hostserv.go index 6a8ed9cf..d59774c1 100644 --- a/irc/hostserv.go +++ b/irc/hostserv.go @@ -10,7 +10,7 @@ import ( "github.com/goshuirc/irc-go/ircfmt" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) const ( diff --git a/irc/import.go b/irc/import.go index 55e855ba..c7286cfc 100644 --- a/irc/import.go +++ b/irc/import.go @@ -12,7 +12,7 @@ import ( "github.com/tidwall/buntdb" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) const ( diff --git a/irc/ircconn.go b/irc/ircconn.go index 328b65ad..29efbf8d 100644 --- a/irc/ircconn.go +++ b/irc/ircconn.go @@ -12,7 +12,7 @@ import ( "github.com/goshuirc/irc-go/ircmsg" "github.com/goshuirc/irc-go/ircreader" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) const ( diff --git a/irc/kline.go b/irc/kline.go index be59482a..bc1e9123 100644 --- a/irc/kline.go +++ b/irc/kline.go @@ -13,7 +13,7 @@ import ( "github.com/tidwall/buntdb" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) const ( diff --git a/irc/listeners.go b/irc/listeners.go index 336afed2..9e4592d2 100644 --- a/irc/listeners.go +++ b/irc/listeners.go @@ -13,7 +13,7 @@ import ( "github.com/gorilla/websocket" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) var ( diff --git a/irc/message_cache.go b/irc/message_cache.go index 4efe8234..f6ea17eb 100644 --- a/irc/message_cache.go +++ b/irc/message_cache.go @@ -8,8 +8,8 @@ import ( "github.com/goshuirc/irc-go/ircmsg" - "github.com/oragono/oragono/irc/caps" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/caps" + "github.com/ergochat/ergo/irc/utils" ) // MessageCache caches serialized IRC messages. diff --git a/irc/modes.go b/irc/modes.go index c4c4beb7..0aabfbdd 100644 --- a/irc/modes.go +++ b/irc/modes.go @@ -10,9 +10,9 @@ import ( "strconv" "strings" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/sno" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/sno" + "github.com/ergochat/ergo/irc/utils" ) var ( diff --git a/irc/modes/modes.go b/irc/modes/modes.go index f91cc06b..1024c8ed 100644 --- a/irc/modes/modes.go +++ b/irc/modes/modes.go @@ -10,7 +10,7 @@ import ( "sort" "strings" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) var ( diff --git a/irc/modes_test.go b/irc/modes_test.go index 005d0555..94eca03c 100644 --- a/irc/modes_test.go +++ b/irc/modes_test.go @@ -7,7 +7,7 @@ import ( "reflect" "testing" - "github.com/oragono/oragono/irc/modes" + "github.com/ergochat/ergo/irc/modes" ) func TestParseDefaultChannelModes(t *testing.T) { diff --git a/irc/mysql/history.go b/irc/mysql/history.go index e9b284b9..8d78291e 100644 --- a/irc/mysql/history.go +++ b/irc/mysql/history.go @@ -16,10 +16,10 @@ import ( "sync/atomic" "time" + "github.com/ergochat/ergo/irc/history" + "github.com/ergochat/ergo/irc/logger" + "github.com/ergochat/ergo/irc/utils" _ "github.com/go-sql-driver/mysql" - "github.com/oragono/oragono/irc/history" - "github.com/oragono/oragono/irc/logger" - "github.com/oragono/oragono/irc/utils" ) var ( diff --git a/irc/mysql/serialization.go b/irc/mysql/serialization.go index bc3dbcf9..5226a1dd 100644 --- a/irc/mysql/serialization.go +++ b/irc/mysql/serialization.go @@ -3,8 +3,8 @@ package mysql import ( "encoding/json" - "github.com/oragono/oragono/irc/history" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/history" + "github.com/ergochat/ergo/irc/utils" ) // 123 / '{' is the magic number that means JSON; diff --git a/irc/nickname.go b/irc/nickname.go index b8a153ba..ec652d77 100644 --- a/irc/nickname.go +++ b/irc/nickname.go @@ -9,11 +9,11 @@ import ( "fmt" "strings" + "github.com/ergochat/ergo/irc/history" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/sno" + "github.com/ergochat/ergo/irc/utils" "github.com/goshuirc/irc-go/ircfmt" - "github.com/oragono/oragono/irc/history" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/sno" - "github.com/oragono/oragono/irc/utils" ) var ( diff --git a/irc/nickserv.go b/irc/nickserv.go index 6dcc23af..1c1b606a 100644 --- a/irc/nickserv.go +++ b/irc/nickserv.go @@ -13,10 +13,10 @@ import ( "github.com/goshuirc/irc-go/ircfmt" - "github.com/oragono/oragono/irc/custime" - "github.com/oragono/oragono/irc/passwd" - "github.com/oragono/oragono/irc/sno" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/custime" + "github.com/ergochat/ergo/irc/passwd" + "github.com/ergochat/ergo/irc/sno" + "github.com/ergochat/ergo/irc/utils" ) // "enabled" callbacks for specific nickserv commands diff --git a/irc/responsebuffer.go b/irc/responsebuffer.go index 7e071f99..50cca702 100644 --- a/irc/responsebuffer.go +++ b/irc/responsebuffer.go @@ -7,9 +7,9 @@ import ( "runtime/debug" "time" + "github.com/ergochat/ergo/irc/caps" + "github.com/ergochat/ergo/irc/utils" "github.com/goshuirc/irc-go/ircmsg" - "github.com/oragono/oragono/irc/caps" - "github.com/oragono/oragono/irc/utils" ) const ( diff --git a/irc/roleplay.go b/irc/roleplay.go index 246112ab..97625644 100644 --- a/irc/roleplay.go +++ b/irc/roleplay.go @@ -7,9 +7,9 @@ import ( "fmt" "strings" - "github.com/oragono/oragono/irc/history" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/history" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/utils" ) const ( diff --git a/irc/semaphores.go b/irc/semaphores.go index 1847c87a..e814a1e2 100644 --- a/irc/semaphores.go +++ b/irc/semaphores.go @@ -5,7 +5,7 @@ package irc import ( "runtime" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) // See #237 for context. Operations that might allocate large amounts of temporary diff --git a/irc/server.go b/irc/server.go index 269fd88c..9c81eefb 100644 --- a/irc/server.go +++ b/irc/server.go @@ -22,15 +22,15 @@ import ( "github.com/goshuirc/irc-go/ircfmt" - "github.com/oragono/oragono/irc/caps" - "github.com/oragono/oragono/irc/connection_limits" - "github.com/oragono/oragono/irc/flatip" - "github.com/oragono/oragono/irc/history" - "github.com/oragono/oragono/irc/logger" - "github.com/oragono/oragono/irc/modes" - "github.com/oragono/oragono/irc/mysql" - "github.com/oragono/oragono/irc/sno" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/caps" + "github.com/ergochat/ergo/irc/connection_limits" + "github.com/ergochat/ergo/irc/flatip" + "github.com/ergochat/ergo/irc/history" + "github.com/ergochat/ergo/irc/logger" + "github.com/ergochat/ergo/irc/modes" + "github.com/ergochat/ergo/irc/mysql" + "github.com/ergochat/ergo/irc/sno" + "github.com/ergochat/ergo/irc/utils" "github.com/tidwall/buntdb" ) @@ -356,9 +356,9 @@ func (server *Server) tryRegister(c *Client, session *Session) (exiting bool) { func (server *Server) playSTSBurst(session *Session) { nick := utils.SafeErrorParam(session.client.preregNick) session.Send(nil, server.name, RPL_WELCOME, nick, fmt.Sprintf("Welcome to the Internet Relay Network %s", nick)) - session.Send(nil, server.name, RPL_YOURHOST, nick, fmt.Sprintf("Your host is %[1]s, running version %[2]s", server.name, "oragono")) + session.Send(nil, server.name, RPL_YOURHOST, nick, fmt.Sprintf("Your host is %[1]s, running version %[2]s", server.name, "ergo")) session.Send(nil, server.name, RPL_CREATED, nick, fmt.Sprintf("This server was created %s", time.Time{}.Format(time.RFC1123))) - session.Send(nil, server.name, RPL_MYINFO, nick, server.name, "oragono", "o", "o", "o") + session.Send(nil, server.name, RPL_MYINFO, nick, server.name, "ergo", "o", "o", "o") session.Send(nil, server.name, RPL_ISUPPORT, nick, "CASEMAPPING=ascii", "are supported by this server") session.Send(nil, server.name, ERR_NOMOTD, nick, "MOTD is unavailable") for _, line := range server.Config().Server.STS.bannerLines { @@ -1053,16 +1053,17 @@ func (matcher *elistMatcher) Matches(channel *Channel) bool { } var ( - infoString1 = strings.Split(` ▄▄▄ ▄▄▄· ▄▄ • ▐ ▄ -▪ ▀▄ █·▐█ ▀█ ▐█ ▀ ▪▪ •█▌▐█▪ - ▄█▀▄ ▐▀▀▄ ▄█▀▀█ ▄█ ▀█▄ ▄█▀▄▪▐█▐▐▌ ▄█▀▄ -▐█▌.▐▌▐█•█▌▐█ ▪▐▌▐█▄▪▐█▐█▌ ▐▌██▐█▌▐█▌.▐▌ - ▀█▄▀▪.▀ ▀ ▀ ▀ ·▀▀▀▀ ▀█▄▀ ▀▀ █▪ ▀█▄▀▪ - - https://oragono.io/ - https://github.com/oragono/oragono - https://crowdin.com/project/oragono -`, "\n") + infoString1 = []string{ + " ___ _ __ __ _ ___ ", + " / _ \\ '__/ _` |/ _ \\ ", + " | __/ | | (_| | (_) |", + ` \___|_| \__, |\___/ `, + " __/ | ", + " |___/ ", + "", + " https://ergo.chat/", + "https://github.com/ergochat/ergo ", + } infoString2 = strings.Split(` Daniel Oakley, DanielOaks, Shivaram Lingamneni, slingamn, `, "\n") diff --git a/irc/services.go b/irc/services.go index b3ac1229..df4003cf 100644 --- a/irc/services.go +++ b/irc/services.go @@ -11,9 +11,9 @@ import ( "strings" "time" + "github.com/ergochat/ergo/irc/utils" "github.com/goshuirc/irc-go/ircfmt" "github.com/goshuirc/irc-go/ircmsg" - "github.com/oragono/oragono/irc/utils" ) // defines an IRC service, e.g., NICKSERV diff --git a/irc/snomanager.go b/irc/snomanager.go index 0bd394bc..994934fa 100644 --- a/irc/snomanager.go +++ b/irc/snomanager.go @@ -4,8 +4,8 @@ import ( "fmt" "sync" + "github.com/ergochat/ergo/irc/sno" "github.com/goshuirc/irc-go/ircfmt" - "github.com/oragono/oragono/irc/sno" ) // SnoManager keeps track of which clients to send snomasks to. diff --git a/irc/socket.go b/irc/socket.go index ff5ac5c1..ce8eb008 100644 --- a/irc/socket.go +++ b/irc/socket.go @@ -9,7 +9,7 @@ import ( "io" "sync" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) var ( diff --git a/irc/strings.go b/irc/strings.go index 9bc6ceb7..73e339f3 100644 --- a/irc/strings.go +++ b/irc/strings.go @@ -16,7 +16,7 @@ import ( "golang.org/x/text/unicode/norm" "golang.org/x/text/width" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) const ( diff --git a/irc/types.go b/irc/types.go index 176e7111..9166befc 100644 --- a/irc/types.go +++ b/irc/types.go @@ -8,7 +8,7 @@ package irc import ( "time" - "github.com/oragono/oragono/irc/modes" + "github.com/ergochat/ergo/irc/modes" ) type empty struct{} diff --git a/irc/uban.go b/irc/uban.go index b28fa6f4..7e5821a5 100644 --- a/irc/uban.go +++ b/irc/uban.go @@ -11,10 +11,10 @@ import ( "github.com/goshuirc/irc-go/ircmsg" - "github.com/oragono/oragono/irc/custime" - "github.com/oragono/oragono/irc/flatip" - "github.com/oragono/oragono/irc/sno" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/custime" + "github.com/ergochat/ergo/irc/flatip" + "github.com/ergochat/ergo/irc/sno" + "github.com/ergochat/ergo/irc/utils" ) func consumeDuration(params []string, rb *ResponseBuffer) (duration time.Duration, requireSASL bool, remainingParams []string, err error) { diff --git a/irc/usermaskset.go b/irc/usermaskset.go index e8c97145..81569709 100644 --- a/irc/usermaskset.go +++ b/irc/usermaskset.go @@ -13,7 +13,7 @@ import ( "time" "unsafe" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/utils" ) type MaskInfo struct { diff --git a/irc/version.go b/irc/version.go index 722020b4..c8fc6d11 100644 --- a/irc/version.go +++ b/irc/version.go @@ -6,13 +6,13 @@ package irc import "fmt" const ( - // SemVer is the semantic version of Oragono. + // SemVer is the semantic version of Ergo. SemVer = "2.7.0-unreleased" ) var ( - // Ver is the full version of Oragono, used in responses to clients. - Ver = fmt.Sprintf("oragono-%s", SemVer) + // Ver is the full version of Ergo, used in responses to clients. + Ver = fmt.Sprintf("ergo-%s", SemVer) // Commit is the full git hash, if available Commit string ) @@ -21,8 +21,8 @@ var ( func SetVersionString(version, commit string) { Commit = commit if version != "" { - Ver = fmt.Sprintf("oragono-%s", version) + Ver = fmt.Sprintf("ergo-%s", version) } else if len(Commit) == 40 { - Ver = fmt.Sprintf("oragono-%s-%s", SemVer, Commit[:16]) + Ver = fmt.Sprintf("ergo-%s-%s", SemVer, Commit[:16]) } } diff --git a/irc/znc.go b/irc/znc.go index a9d22d7c..48e066f7 100644 --- a/irc/znc.go +++ b/irc/znc.go @@ -9,8 +9,8 @@ import ( "strings" "time" - "github.com/oragono/oragono/irc/history" - "github.com/oragono/oragono/irc/utils" + "github.com/ergochat/ergo/irc/history" + "github.com/ergochat/ergo/irc/utils" ) const ( diff --git a/irctest b/irctest index f3b53b00..6bdfdf58 160000 --- a/irctest +++ b/irctest @@ -1 +1 @@ -Subproject commit f3b53b00483e0504bdc6bca5701fa98025ea8acf +Subproject commit 6bdfdf58b2c1580a4d7962d54b93f50b934b6f80 diff --git a/traditional.yaml b/traditional.yaml index 47ff6088..43f4a325 100644 --- a/traditional.yaml +++ b/traditional.yaml @@ -1,17 +1,17 @@ -# This is the "traditional" or "mainstream" config file for Oragono. +# This is the "traditional" or "mainstream" config file for Ergo. # It tries to replicate the behavior of other ircds, at the cost of not -# taking full advantage of Oragono's features. This config is suitable for use +# taking full advantage of Ergo's features. This config is suitable for use # in IRCv3 conformance testing. # network configuration network: # name of the network - name: OragonoTest + name: ErgoTest # server configuration server: # server name - name: oragono.test + name: ergo.test # addresses to listen on listeners: @@ -36,12 +36,12 @@ server: # min-tls-version: 1.2 # Example of a Unix domain socket for proxying: - # "/tmp/oragono_sock": + # "/tmp/ergo_sock": # Example of a Tor listener: any connection that comes in on this listener will # be considered a Tor connection. It is strongly recommended that this listener # *not* be on a public interface --- it should be on 127.0.0.0/8 or unix domain: - # "/hidden_service_sockets/oragono_tor_sock": + # "/hidden_service_sockets/ergo_tor_sock": # tor: true # Example of a WebSocket listener: @@ -94,14 +94,14 @@ server: websockets: # Restrict the origin of WebSocket connections by matching the "Origin" HTTP - # header. This setting causes oragono to reject websocket connections unless + # header. This setting causes ergo to reject websocket connections unless # they originate from a page on one of the whitelisted websites in this list. # This prevents malicious websites from making their visitors connect to your - # oragono instance without their knowledge. An empty list means there are no + # ergo instance without their knowledge. An empty list means there are no # restrictions. allowed-origins: - # - "https://oragono.io" - # - "https://*.oragono.io" + # - "https://ergo.chat" + # - "https://*.ergo.chat" # casemapping controls what kinds of strings are permitted as identifiers (nicknames, # channel names, account names, etc.), and how they are normalized for case. @@ -137,13 +137,12 @@ server: # the value must begin with a '~' character. comment out / omit to disable: #coerce-ident: '~u' - # password to login to the server - # generated using "oragono genpasswd" - #password: "" + # password to login to the server, generated using `ergo genpasswd`: + #password: "$2a$04$0123456789abcdef0123456789abcdef0123456789abcdef01234" # motd filename # if you change the motd, you should move it to ircd.motd - motd: oragono.motd + motd: ergo.motd # motd formatting codes # if this is true, the motd is escaped using formatting codes like $c, $b, and $i @@ -179,7 +178,7 @@ server: # (comment this out to use passwords only) certfp: "abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789" - # password the gateway uses to connect, made with oragono genpasswd + # password the gateway uses to connect, made with `ergo genpasswd` password: "$2a$04$abcdef0123456789abcdef0123456789abcdef0123456789abcde" # IPs/CIDRs that can use this webirc command @@ -201,7 +200,7 @@ server: compatibility: # many clients require that the final parameter of certain messages be an # RFC1459 trailing parameter, i.e., prefixed with :, whether or not this is - # actually required. this forces Oragono to send those parameters + # actually required. this forces Ergo to send those parameters # as trailings. this is recommended unless you're testing clients for conformance; # defaults to true when unset for that reason. force-trailing: true @@ -214,7 +213,7 @@ server: # traditionally, IRC servers will truncate and send messages that are # too long to be relayed intact. this behavior can be disabled by setting - # allow-truncation to false, in which case Oragono will reject the message + # allow-truncation to false, in which case Ergo will reject the message # and return an error to the client. (note that this option defaults to true # when unset.) allow-truncation: true @@ -282,7 +281,7 @@ server: # IP cloaking hides users' IP addresses from other users and from channel admins # (but not from server admins), while still allowing channel admins to ban # offending IP addresses or networks. In place of hostnames derived from reverse - # DNS, users see fake domain names like pwbs2ui4377257x8.oragono. These names are + # DNS, users see fake domain names like pwbs2ui4377257x8.irc. These names are # generated deterministically from the underlying IP address, but if the underlying # IP is not already known, it is infeasible to recover it from the cloaked name. ip-cloaking: @@ -323,10 +322,10 @@ server: secure-nets: # - "10.0.0.0/8" - # oragono will write files to disk under certain circumstances, e.g., + # Ergo will write files to disk under certain circumstances, e.g., # CPU profiling or data export. by default, these files will be written # to the working directory. set this to customize: - #output-path: "/home/oragono/out" + #output-path: "/home/ergo/out" # the hostname used by "services", e.g., NickServ, defaults to "localhost", # e.g., `NickServ!NickServ@localhost`. uncomment this to override: @@ -469,7 +468,7 @@ accounts: # nickname after the initial connection is complete forbid-anonymous-nick-changes: false - # multiclient controls whether oragono allows multiple connections to + # multiclient controls whether Ergo allows multiple connections to # attach to the same client/nickname identity; this is part of the # functionality traditionally provided by a bouncer like ZNC multiclient: @@ -630,7 +629,7 @@ opers: # operators can be authenticated either by password (with the /OPER command), # or by certificate fingerprint, or both. if a password hash is set, then a # password is required to oper up (e.g., /OPER dan mypassword). to generate - # the hash, use `oragono genpasswd`. + # the hash, use `ergo genpasswd`. password: "$2a$04$0123456789abcdef0123456789abcdef0123456789abcdef01234" # if a SHA-256 certificate fingerprint is configured here, then it will be @@ -691,7 +690,7 @@ logging: # debug options debug: - # when enabled, oragono will attempt to recover from certain kinds of + # when enabled, Ergo will attempt to recover from certain kinds of # client-triggered runtime errors that would normally crash the server. # this makes the server more resilient to DoS, but could result in incorrect # behavior. deployments that would prefer to "start from scratch", e.g., by @@ -722,9 +721,9 @@ datastore: port: 3306 # if socket-path is set, it will be used instead of host:port #socket-path: "/var/run/mysqld/mysqld.sock" - user: "oragono" + user: "ergo" password: "hunter2" - history-database: "oragono_history" + history-database: "ergo_history" timeout: 3s max-conns: 4 # this may be necessary to prevent middleware from closing your connections: @@ -937,5 +936,5 @@ history: # - "typing" # whether to allow customization of the config at runtime using environment variables, -# e.g., ORAGONO__SERVER__MAX_SENDQ=128k. see the manual for more details. +# e.g., ERGO__SERVER__MAX_SENDQ=128k. see the manual for more details. allow-environment-overrides: true