3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-11-21 19:39:43 +01:00

Merge pull request #1653 from slingamn/ergo.1

first pass at renaming Oragono to Ergo
This commit is contained in:
Shivaram Lingamneni 2021-05-26 18:57:40 -04:00 committed by GitHub
commit 9dad717c04
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
66 changed files with 284 additions and 294 deletions

View File

@ -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

8
.gitignore vendored
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 <procid>
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`.

View File

@ -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

33
README
View File

@ -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!

View File

@ -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 <password>`. 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 <password>`. 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)

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -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 <filename>] [--quiet]
oragono upgradedb [--conf <filename>] [--quiet]
oragono importdb <database.json> [--conf <filename>] [--quiet]
oragono genpasswd [--conf <filename>] [--quiet]
oragono mkcerts [--conf <filename>] [--quiet]
oragono run [--conf <filename>] [--quiet] [--smoke]
oragono -h | --help
oragono --version
ergo initdb [--conf <filename>] [--quiet]
ergo upgradedb [--conf <filename>] [--quiet]
ergo importdb <database.json> [--conf <filename>] [--quiet]
ergo genpasswd [--conf <filename>] [--quiet]
ergo mkcerts [--conf <filename>] [--quiet]
ergo run [--conf <filename>] [--quiet] [--smoke]
ergo -h | --help
ergo --version
Options:
--conf <filename> 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()

2
go.mod
View File

@ -1,4 +1,4 @@
module github.com/oragono/oragono
module github.com/ergochat/ergo
go 1.16

View File

@ -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"
)

View File

@ -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

View File

@ -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.

View File

@ -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 {

View File

@ -7,7 +7,7 @@ import (
"sort"
"sync"
"github.com/oragono/oragono/irc/utils"
"github.com/ergochat/ergo/irc/utils"
)
type channelManagerEntry struct {

View File

@ -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;

View File

@ -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.`

View File

@ -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 (

View File

@ -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

View File

@ -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) {

View File

@ -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 {

View File

@ -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)

View File

@ -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 {

View File

@ -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 (

View File

@ -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) {

View File

@ -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"
)

View File

@ -10,7 +10,7 @@ import (
"sync"
"time"
"github.com/oragono/oragono/irc/flatip"
"github.com/ergochat/ergo/irc/flatip"
"github.com/tidwall/buntdb"
)

View File

@ -10,7 +10,7 @@ import (
"regexp"
"strings"
"github.com/oragono/oragono/irc/smtp"
"github.com/ergochat/ergo/irc/smtp"
)
var (

View File

@ -10,7 +10,7 @@ import (
"fmt"
"time"
"github.com/oragono/oragono/irc/utils"
"github.com/ergochat/ergo/irc/utils"
)
// Runtime Errors

View File

@ -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 (

View File

@ -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) {

View File

@ -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()

View File

@ -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 <subcommand> [arguments]
Oragono's "unified ban" system. Accepts the following subcommands:
Ergo's "unified ban" system. Accepts the following subcommands:
1. UBAN ADD <target> [REQUIRE-SASL] [DURATION <duration>] [REASON...]
2. UBAN DEL <target>
@ -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.

View File

@ -4,7 +4,7 @@
package history
import (
"github.com/oragono/oragono/irc/utils"
"github.com/ergochat/ergo/irc/utils"
"sync"
"time"
)

View File

@ -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 (

View File

@ -10,7 +10,7 @@ import (
"github.com/goshuirc/irc-go/ircfmt"
"github.com/oragono/oragono/irc/utils"
"github.com/ergochat/ergo/irc/utils"
)
const (

View File

@ -12,7 +12,7 @@ import (
"github.com/tidwall/buntdb"
"github.com/oragono/oragono/irc/utils"
"github.com/ergochat/ergo/irc/utils"
)
const (

View File

@ -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 (

View File

@ -13,7 +13,7 @@ import (
"github.com/tidwall/buntdb"
"github.com/oragono/oragono/irc/utils"
"github.com/ergochat/ergo/irc/utils"
)
const (

View File

@ -13,7 +13,7 @@ import (
"github.com/gorilla/websocket"
"github.com/oragono/oragono/irc/utils"
"github.com/ergochat/ergo/irc/utils"
)
var (

View File

@ -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.

View File

@ -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 (

View File

@ -10,7 +10,7 @@ import (
"sort"
"strings"
"github.com/oragono/oragono/irc/utils"
"github.com/ergochat/ergo/irc/utils"
)
var (

View File

@ -7,7 +7,7 @@ import (
"reflect"
"testing"
"github.com/oragono/oragono/irc/modes"
"github.com/ergochat/ergo/irc/modes"
)
func TestParseDefaultChannelModes(t *testing.T) {

View File

@ -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 (

View File

@ -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;

View File

@ -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 (

View File

@ -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

View File

@ -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 (

View File

@ -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 (

View File

@ -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

View File

@ -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, <daniel@danieloaks.net>
Shivaram Lingamneni, slingamn, <slingamn@cs.stanford.edu>
`, "\n")

View File

@ -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

View File

@ -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.

View File

@ -9,7 +9,7 @@ import (
"io"
"sync"
"github.com/oragono/oragono/irc/utils"
"github.com/ergochat/ergo/irc/utils"
)
var (

View File

@ -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 (

View File

@ -8,7 +8,7 @@ package irc
import (
"time"
"github.com/oragono/oragono/irc/modes"
"github.com/ergochat/ergo/irc/modes"
)
type empty struct{}

View File

@ -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) {

View File

@ -13,7 +13,7 @@ import (
"time"
"unsafe"
"github.com/oragono/oragono/irc/utils"
"github.com/ergochat/ergo/irc/utils"
)
type MaskInfo struct {

View File

@ -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])
}
}

View File

@ -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 (

@ -1 +1 @@
Subproject commit f3b53b00483e0504bdc6bca5701fa98025ea8acf
Subproject commit 6bdfdf58b2c1580a4d7962d54b93f50b934b6f80

View File

@ -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