mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-23 04:19:25 +01:00
first pass at renaming Oragono to Ergo
This commit is contained in:
parent
7a1695c628
commit
23c7218bf1
@ -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
8
.gitignore
vendored
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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`.
|
||||
|
4
Makefile
4
Makefile
@ -37,8 +37,8 @@ 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
|
||||
|
20
README
20
README
@ -7,7 +7,7 @@
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
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 +17,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 +34,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!
|
||||
|
||||
|
51
default.yaml
51
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
|
||||
|
@ -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
2
go.mod
@ -1,4 +1,4 @@
|
||||
module github.com/oragono/oragono
|
||||
module github.com/ergochat/ergo
|
||||
|
||||
go 1.16
|
||||
|
||||
|
@ -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"
|
||||
)
|
||||
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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 {
|
||||
|
@ -7,7 +7,7 @@ import (
|
||||
"sort"
|
||||
"sync"
|
||||
|
||||
"github.com/oragono/oragono/irc/utils"
|
||||
"github.com/ergochat/ergo/irc/utils"
|
||||
)
|
||||
|
||||
type channelManagerEntry struct {
|
||||
|
@ -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;
|
||||
|
@ -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.`
|
||||
|
@ -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 (
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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 {
|
||||
|
@ -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)
|
||||
|
@ -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 {
|
||||
|
@ -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 (
|
||||
|
@ -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) {
|
||||
|
@ -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"
|
||||
)
|
||||
|
@ -10,7 +10,7 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/oragono/oragono/irc/flatip"
|
||||
"github.com/ergochat/ergo/irc/flatip"
|
||||
"github.com/tidwall/buntdb"
|
||||
)
|
||||
|
||||
|
@ -10,7 +10,7 @@ import (
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/oragono/oragono/irc/smtp"
|
||||
"github.com/ergochat/ergo/irc/smtp"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -10,7 +10,7 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/oragono/oragono/irc/utils"
|
||||
"github.com/ergochat/ergo/irc/utils"
|
||||
)
|
||||
|
||||
// Runtime Errors
|
||||
|
@ -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 (
|
||||
|
@ -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) {
|
||||
|
@ -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()
|
||||
|
16
irc/help.go
16
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 <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.
|
||||
|
@ -4,7 +4,7 @@
|
||||
package history
|
||||
|
||||
import (
|
||||
"github.com/oragono/oragono/irc/utils"
|
||||
"github.com/ergochat/ergo/irc/utils"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
@ -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 (
|
||||
|
@ -10,7 +10,7 @@ import (
|
||||
|
||||
"github.com/goshuirc/irc-go/ircfmt"
|
||||
|
||||
"github.com/oragono/oragono/irc/utils"
|
||||
"github.com/ergochat/ergo/irc/utils"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -12,7 +12,7 @@ import (
|
||||
|
||||
"github.com/tidwall/buntdb"
|
||||
|
||||
"github.com/oragono/oragono/irc/utils"
|
||||
"github.com/ergochat/ergo/irc/utils"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -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 (
|
||||
|
@ -13,7 +13,7 @@ import (
|
||||
|
||||
"github.com/tidwall/buntdb"
|
||||
|
||||
"github.com/oragono/oragono/irc/utils"
|
||||
"github.com/ergochat/ergo/irc/utils"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -13,7 +13,7 @@ import (
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
|
||||
"github.com/oragono/oragono/irc/utils"
|
||||
"github.com/ergochat/ergo/irc/utils"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -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.
|
||||
|
@ -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 (
|
||||
|
@ -10,7 +10,7 @@ import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/oragono/oragono/irc/utils"
|
||||
"github.com/ergochat/ergo/irc/utils"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -7,7 +7,7 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/oragono/oragono/irc/modes"
|
||||
"github.com/ergochat/ergo/irc/modes"
|
||||
)
|
||||
|
||||
func TestParseDefaultChannelModes(t *testing.T) {
|
||||
|
@ -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 (
|
||||
|
@ -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;
|
||||
|
@ -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 (
|
||||
|
@ -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
|
||||
|
@ -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 (
|
||||
|
@ -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 (
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
@ -1059,8 +1059,8 @@ var (
|
||||
▐█▌.▐▌▐█•█▌▐█ ▪▐▌▐█▄▪▐█▐█▌ ▐▌██▐█▌▐█▌.▐▌
|
||||
▀█▄▀▪.▀ ▀ ▀ ▀ ·▀▀▀▀ ▀█▄▀ ▀▀ █▪ ▀█▄▀▪
|
||||
|
||||
https://oragono.io/
|
||||
https://github.com/oragono/oragono
|
||||
https://ergo.chat/
|
||||
https://github.com/ergochat/ergo
|
||||
https://crowdin.com/project/oragono
|
||||
`, "\n")
|
||||
infoString2 = strings.Split(` Daniel Oakley, DanielOaks, <daniel@danieloaks.net>
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -9,7 +9,7 @@ import (
|
||||
"io"
|
||||
"sync"
|
||||
|
||||
"github.com/oragono/oragono/irc/utils"
|
||||
"github.com/ergochat/ergo/irc/utils"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -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 (
|
||||
|
@ -8,7 +8,7 @@ package irc
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/oragono/oragono/irc/modes"
|
||||
"github.com/ergochat/ergo/irc/modes"
|
||||
)
|
||||
|
||||
type empty struct{}
|
||||
|
@ -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) {
|
||||
|
@ -13,7 +13,7 @@ import (
|
||||
"time"
|
||||
"unsafe"
|
||||
|
||||
"github.com/oragono/oragono/irc/utils"
|
||||
"github.com/ergochat/ergo/irc/utils"
|
||||
)
|
||||
|
||||
type MaskInfo struct {
|
||||
|
@ -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])
|
||||
}
|
||||
}
|
||||
|
@ -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,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
|
||||
|
Loading…
Reference in New Issue
Block a user