mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-26 22:09:24 +01:00
first pass at renaming Oragono to Ergo
This commit is contained in:
parent
7a1695c628
commit
23c7218bf1
@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# exclude vendor/
|
# exclude vendor/
|
||||||
SOURCES="./oragono.go ./irc"
|
SOURCES="./ergo.go ./irc"
|
||||||
|
|
||||||
if [ "$1" = "--fix" ]; then
|
if [ "$1" = "--fix" ]; then
|
||||||
exec gofmt -s -w $SOURCES
|
exec gofmt -s -w $SOURCES
|
||||||
|
8
.gitignore
vendored
8
.gitignore
vendored
@ -95,7 +95,7 @@ _testmain.go
|
|||||||
*.out
|
*.out
|
||||||
|
|
||||||
|
|
||||||
### Oragono ###
|
### custom ###
|
||||||
/_site/
|
/_site/
|
||||||
/.vscode/*
|
/.vscode/*
|
||||||
/ircd*
|
/ircd*
|
||||||
@ -103,10 +103,10 @@ _testmain.go
|
|||||||
/web.*
|
/web.*
|
||||||
/ssl.*
|
/ssl.*
|
||||||
/tls.*
|
/tls.*
|
||||||
/oragono
|
/ergo
|
||||||
/build/*
|
/build/*
|
||||||
_test
|
_test
|
||||||
oragono.prof
|
ergo.prof
|
||||||
oragono.mprof
|
ergo.mprof
|
||||||
/dist
|
/dist
|
||||||
*.pem
|
*.pem
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# .goreleaser.yml
|
# .goreleaser.yml
|
||||||
# Build customization
|
# Build customization
|
||||||
project_name: oragono
|
project_name: ergo
|
||||||
builds:
|
builds:
|
||||||
- main: oragono.go
|
- main: ergo.go
|
||||||
binary: oragono
|
binary: ergo
|
||||||
goos:
|
goos:
|
||||||
- freebsd
|
- freebsd
|
||||||
- windows
|
- windows
|
||||||
@ -44,7 +44,7 @@ archives:
|
|||||||
files:
|
files:
|
||||||
- README
|
- README
|
||||||
- CHANGELOG.md
|
- CHANGELOG.md
|
||||||
- oragono.motd
|
- ergo.motd
|
||||||
- default.yaml
|
- default.yaml
|
||||||
- traditional.yaml
|
- traditional.yaml
|
||||||
- docs/MANUAL.md
|
- docs/MANUAL.md
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Changelog
|
# 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
|
## [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
|
## 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.)
|
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)
|
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
|
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. 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. 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. 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:
|
1. Make the appropriate announcements:
|
||||||
* For a release candidate:
|
* For a release candidate:
|
||||||
1. the channel topic
|
1. the channel topic
|
||||||
@ -49,7 +49,7 @@ Develop branches are either used to work out implementation details in preperati
|
|||||||
* For a production release:
|
* For a production release:
|
||||||
1. everything applicable to a release candidate
|
1. everything applicable to a release candidate
|
||||||
1. Twitter
|
1. Twitter
|
||||||
1. oragono.io/news
|
1. ergo.chat/news
|
||||||
1. ircv3.net support tables, if applicable
|
1. ircv3.net support tables, if applicable
|
||||||
1. other social media?
|
1. other social media?
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ Once it's built and released, you need to setup the new development version. To
|
|||||||
|
|
||||||
```md
|
```md
|
||||||
## Unreleased
|
## Unreleased
|
||||||
New release of Oragono!
|
New release of Ergo!
|
||||||
|
|
||||||
### Config Changes
|
### 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
|
## Debugging
|
||||||
|
|
||||||
It's helpful to enable all loglines while developing. Here's how to configure this:
|
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>
|
$ 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
|
## 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. 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`.
|
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
|
./.check-gofmt.sh
|
||||||
|
|
||||||
smoke:
|
smoke:
|
||||||
oragono mkcerts --conf ./default.yaml || true
|
ergo mkcerts --conf ./default.yaml || true
|
||||||
oragono run --conf ./default.yaml --smoke
|
ergo run --conf ./default.yaml --smoke
|
||||||
|
|
||||||
gofmt:
|
gofmt:
|
||||||
./.check-gofmt.sh --fix
|
./.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
|
* Being simple to set up and use
|
||||||
* Combining the features of an ircd, a services framework, and a bouncer:
|
* 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
|
* Bleeding-edge IRCv3 support
|
||||||
* Highly customizable via a rehashable (runtime-reloadable) YAML config
|
* Highly customizable via a rehashable (runtime-reloadable) YAML config
|
||||||
|
|
||||||
https://oragono.io/
|
https://ergo.chat/
|
||||||
https://github.com/oragono/oragono
|
https://github.com/ergochat/ergo
|
||||||
#oragono on Freenode
|
#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:
|
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:
|
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
|
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
|
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 ===
|
=== 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,
|
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!
|
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
|
# It contains recommended defaults for all settings, including some behaviors
|
||||||
# that differ from conventional ircd+services setups. See traditional.yaml
|
# that differ from conventional ircd+services setups. See traditional.yaml
|
||||||
# for a config with more "mainstream" behavior.
|
# 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
|
# 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
|
# 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
|
# aren't sure what behavior you want, most of the defaults are fine
|
||||||
@ -25,12 +25,12 @@
|
|||||||
# network configuration
|
# network configuration
|
||||||
network:
|
network:
|
||||||
# name of the network
|
# name of the network
|
||||||
name: OragonoTest
|
name: ErgoTest
|
||||||
|
|
||||||
# server configuration
|
# server configuration
|
||||||
server:
|
server:
|
||||||
# server name
|
# server name
|
||||||
name: oragono.test
|
name: ergo.test
|
||||||
|
|
||||||
# addresses to listen on
|
# addresses to listen on
|
||||||
listeners:
|
listeners:
|
||||||
@ -62,12 +62,12 @@ server:
|
|||||||
min-tls-version: 1.2
|
min-tls-version: 1.2
|
||||||
|
|
||||||
# Example of a Unix domain socket for proxying:
|
# 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
|
# 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
|
# 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:
|
# *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
|
# tor: true
|
||||||
|
|
||||||
# Example of a WebSocket listener:
|
# Example of a WebSocket listener:
|
||||||
@ -120,14 +120,14 @@ server:
|
|||||||
|
|
||||||
websockets:
|
websockets:
|
||||||
# Restrict the origin of WebSocket connections by matching the "Origin" HTTP
|
# 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.
|
# 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
|
# 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.
|
# restrictions.
|
||||||
allowed-origins:
|
allowed-origins:
|
||||||
# - "https://oragono.io"
|
# - "https://ergo.chat"
|
||||||
# - "https://*.oragono.io"
|
# - "https://*.ergo.chat"
|
||||||
|
|
||||||
# casemapping controls what kinds of strings are permitted as identifiers (nicknames,
|
# casemapping controls what kinds of strings are permitted as identifiers (nicknames,
|
||||||
# channel names, account names, etc.), and how they are normalized for case.
|
# 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:
|
# the value must begin with a '~' character. comment out / omit to disable:
|
||||||
coerce-ident: '~u'
|
coerce-ident: '~u'
|
||||||
|
|
||||||
# password to login to the server
|
# password to login to the server, generated using `ergo genpasswd`:
|
||||||
# generated using "oragono genpasswd"
|
#password: "$2a$04$0123456789abcdef0123456789abcdef0123456789abcdef01234"
|
||||||
#password: ""
|
|
||||||
|
|
||||||
# motd filename
|
# motd filename
|
||||||
# if you change the motd, you should move it to ircd.motd
|
# if you change the motd, you should move it to ircd.motd
|
||||||
motd: oragono.motd
|
motd: ergo.motd
|
||||||
|
|
||||||
# motd formatting codes
|
# motd formatting codes
|
||||||
# if this is true, the motd is escaped using formatting codes like $c, $b, and $i
|
# 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)
|
# (comment this out to use passwords only)
|
||||||
certfp: "abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789"
|
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"
|
password: "$2a$04$abcdef0123456789abcdef0123456789abcdef0123456789abcde"
|
||||||
|
|
||||||
# IPs/CIDRs that can use this webirc command
|
# IPs/CIDRs that can use this webirc command
|
||||||
@ -228,7 +227,7 @@ server:
|
|||||||
compatibility:
|
compatibility:
|
||||||
# many clients require that the final parameter of certain messages be an
|
# many clients require that the final parameter of certain messages be an
|
||||||
# RFC1459 trailing parameter, i.e., prefixed with :, whether or not this is
|
# 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;
|
# as trailings. this is recommended unless you're testing clients for conformance;
|
||||||
# defaults to true when unset for that reason.
|
# defaults to true when unset for that reason.
|
||||||
force-trailing: true
|
force-trailing: true
|
||||||
@ -241,7 +240,7 @@ server:
|
|||||||
|
|
||||||
# traditionally, IRC servers will truncate and send messages that are
|
# traditionally, IRC servers will truncate and send messages that are
|
||||||
# too long to be relayed intact. this behavior can be disabled by setting
|
# 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
|
# and return an error to the client. (note that this option defaults to true
|
||||||
# when unset.)
|
# when unset.)
|
||||||
allow-truncation: false
|
allow-truncation: false
|
||||||
@ -309,7 +308,7 @@ server:
|
|||||||
# IP cloaking hides users' IP addresses from other users and from channel admins
|
# 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
|
# (but not from server admins), while still allowing channel admins to ban
|
||||||
# offending IP addresses or networks. In place of hostnames derived from reverse
|
# 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
|
# 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 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.
|
# If you disable this, you should probably enable lookup-hostnames in its place.
|
||||||
@ -351,10 +350,10 @@ server:
|
|||||||
secure-nets:
|
secure-nets:
|
||||||
# - "10.0.0.0/8"
|
# - "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
|
# CPU profiling or data export. by default, these files will be written
|
||||||
# to the working directory. set this to customize:
|
# 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",
|
# the hostname used by "services", e.g., NickServ, defaults to "localhost",
|
||||||
# e.g., `NickServ!NickServ@localhost`. uncomment this to override:
|
# e.g., `NickServ!NickServ@localhost`. uncomment this to override:
|
||||||
@ -497,7 +496,7 @@ accounts:
|
|||||||
# nickname after the initial connection is complete
|
# nickname after the initial connection is complete
|
||||||
forbid-anonymous-nick-changes: false
|
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
|
# attach to the same client/nickname identity; this is part of the
|
||||||
# functionality traditionally provided by a bouncer like ZNC
|
# functionality traditionally provided by a bouncer like ZNC
|
||||||
multiclient:
|
multiclient:
|
||||||
@ -658,7 +657,7 @@ opers:
|
|||||||
# operators can be authenticated either by password (with the /OPER command),
|
# 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
|
# 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
|
# 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"
|
password: "$2a$04$0123456789abcdef0123456789abcdef0123456789abcdef01234"
|
||||||
|
|
||||||
# if a SHA-256 certificate fingerprint is configured here, then it will be
|
# if a SHA-256 certificate fingerprint is configured here, then it will be
|
||||||
@ -718,7 +717,7 @@ logging:
|
|||||||
|
|
||||||
# debug options
|
# debug options
|
||||||
debug:
|
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.
|
# client-triggered runtime errors that would normally crash the server.
|
||||||
# this makes the server more resilient to DoS, but could result in incorrect
|
# 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
|
# behavior. deployments that would prefer to "start from scratch", e.g., by
|
||||||
@ -749,9 +748,9 @@ datastore:
|
|||||||
port: 3306
|
port: 3306
|
||||||
# if socket-path is set, it will be used instead of host:port
|
# if socket-path is set, it will be used instead of host:port
|
||||||
#socket-path: "/var/run/mysqld/mysqld.sock"
|
#socket-path: "/var/run/mysqld/mysqld.sock"
|
||||||
user: "oragono"
|
user: "ergo"
|
||||||
password: "hunter2"
|
password: "hunter2"
|
||||||
history-database: "oragono_history"
|
history-database: "ergo_history"
|
||||||
timeout: 3s
|
timeout: 3s
|
||||||
max-conns: 4
|
max-conns: 4
|
||||||
# this may be necessary to prevent middleware from closing your connections:
|
# this may be necessary to prevent middleware from closing your connections:
|
||||||
@ -965,5 +964,5 @@ history:
|
|||||||
# - "typing"
|
# - "typing"
|
||||||
|
|
||||||
# whether to allow customization of the config at runtime using environment variables,
|
# 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
|
allow-environment-overrides: true
|
||||||
|
@ -13,12 +13,13 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"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/bcrypt"
|
||||||
"golang.org/x/crypto/ssh/terminal"
|
"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:
|
// set via linker flags, either by make or by goreleaser:
|
||||||
@ -47,7 +48,7 @@ func fileDoesNotExist(file string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// implements the `oragono mkcerts` command
|
// implements the `ergo mkcerts` command
|
||||||
func doMkcerts(configFile string, quiet bool) {
|
func doMkcerts(configFile string, quiet bool) {
|
||||||
config, err := irc.LoadRawConfig(configFile)
|
config, err := irc.LoadRawConfig(configFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -78,7 +79,7 @@ func doMkcerts(configFile string, quiet bool) {
|
|||||||
if !(fileDoesNotExist(cert) && fileDoesNotExist(key)) {
|
if !(fileDoesNotExist(cert) && fileDoesNotExist(key)) {
|
||||||
log.Fatalf("Preexisting TLS cert and/or key files: %s %s", cert, 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 err == nil {
|
||||||
if !quiet {
|
if !quiet {
|
||||||
log.Printf(" Certificate created at %s : %s\n", cert, key)
|
log.Printf(" Certificate created at %s : %s\n", cert, key)
|
||||||
@ -92,16 +93,16 @@ func doMkcerts(configFile string, quiet bool) {
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
irc.SetVersionString(version, commit)
|
irc.SetVersionString(version, commit)
|
||||||
usage := `oragono.
|
usage := `ergo.
|
||||||
Usage:
|
Usage:
|
||||||
oragono initdb [--conf <filename>] [--quiet]
|
ergo initdb [--conf <filename>] [--quiet]
|
||||||
oragono upgradedb [--conf <filename>] [--quiet]
|
ergo upgradedb [--conf <filename>] [--quiet]
|
||||||
oragono importdb <database.json> [--conf <filename>] [--quiet]
|
ergo importdb <database.json> [--conf <filename>] [--quiet]
|
||||||
oragono genpasswd [--conf <filename>] [--quiet]
|
ergo genpasswd [--conf <filename>] [--quiet]
|
||||||
oragono mkcerts [--conf <filename>] [--quiet]
|
ergo mkcerts [--conf <filename>] [--quiet]
|
||||||
oragono run [--conf <filename>] [--quiet] [--smoke]
|
ergo run [--conf <filename>] [--quiet] [--smoke]
|
||||||
oragono -h | --help
|
ergo -h | --help
|
||||||
oragono --version
|
ergo --version
|
||||||
Options:
|
Options:
|
||||||
--conf <filename> Configuration file to use [default: ircd.yaml].
|
--conf <filename> Configuration file to use [default: ircd.yaml].
|
||||||
--quiet Don't show startup/shutdown lines.
|
--quiet Don't show startup/shutdown lines.
|
||||||
@ -183,7 +184,7 @@ Options:
|
|||||||
|
|
||||||
// warning if running a non-final version
|
// warning if running a non-final version
|
||||||
if strings.Contains(irc.Ver, "unreleased") {
|
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)
|
server, err := irc.NewServer(config, logman)
|
||||||
@ -193,7 +194,7 @@ Options:
|
|||||||
}
|
}
|
||||||
if !arguments["--quiet"].(bool) {
|
if !arguments["--quiet"].(bool) {
|
||||||
logman.Info("server", "Server running")
|
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) {
|
if !arguments["--smoke"].(bool) {
|
||||||
server.Run()
|
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
|
go 1.16
|
||||||
|
|
||||||
|
@ -15,12 +15,12 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
"unicode"
|
"unicode"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/connection_limits"
|
"github.com/ergochat/ergo/irc/connection_limits"
|
||||||
"github.com/oragono/oragono/irc/email"
|
"github.com/ergochat/ergo/irc/email"
|
||||||
"github.com/oragono/oragono/irc/migrations"
|
"github.com/ergochat/ergo/irc/migrations"
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/passwd"
|
"github.com/ergochat/ergo/irc/passwd"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
"github.com/tidwall/buntdb"
|
"github.com/tidwall/buntdb"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// JSON-serializable input and output types for the script
|
// JSON-serializable input and output types for the script
|
||||||
|
@ -5,7 +5,7 @@ package caps
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Set holds a set of enabled capabilities.
|
// Set holds a set of enabled capabilities.
|
||||||
|
@ -15,10 +15,10 @@ import (
|
|||||||
|
|
||||||
"github.com/goshuirc/irc-go/ircutils"
|
"github.com/goshuirc/irc-go/ircutils"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/caps"
|
"github.com/ergochat/ergo/irc/caps"
|
||||||
"github.com/oragono/oragono/irc/history"
|
"github.com/ergochat/ergo/irc/history"
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ChannelSettings struct {
|
type ChannelSettings struct {
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type channelManagerEntry struct {
|
type channelManagerEntry struct {
|
||||||
|
@ -12,8 +12,8 @@ import (
|
|||||||
|
|
||||||
"github.com/tidwall/buntdb"
|
"github.com/tidwall/buntdb"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// this is exclusively the *persistence* layer for channel registration;
|
// this is exclusively the *persistence* layer for channel registration;
|
||||||
|
@ -10,10 +10,10 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"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/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.`
|
const chanservHelp = `ChanServ lets you register and manage channels.`
|
||||||
|
@ -21,13 +21,13 @@ import (
|
|||||||
"github.com/goshuirc/irc-go/ircreader"
|
"github.com/goshuirc/irc-go/ircreader"
|
||||||
ident "github.com/oragono/go-ident"
|
ident "github.com/oragono/go-ident"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/caps"
|
"github.com/ergochat/ergo/irc/caps"
|
||||||
"github.com/oragono/oragono/irc/connection_limits"
|
"github.com/ergochat/ergo/irc/connection_limits"
|
||||||
"github.com/oragono/oragono/irc/flatip"
|
"github.com/ergochat/ergo/irc/flatip"
|
||||||
"github.com/oragono/oragono/irc/history"
|
"github.com/ergochat/ergo/irc/history"
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/sno"
|
"github.com/ergochat/ergo/irc/sno"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -8,9 +8,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/caps"
|
"github.com/ergochat/ergo/irc/caps"
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ClientManager keeps track of clients by nick, enforcing uniqueness of casefolded nicks
|
// ClientManager keeps track of clients by nick, enforcing uniqueness of casefolded nicks
|
||||||
|
@ -6,7 +6,7 @@ package irc
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGenerateBatchID(t *testing.T) {
|
func TestGenerateBatchID(t *testing.T) {
|
||||||
|
@ -8,7 +8,7 @@ import (
|
|||||||
|
|
||||||
"golang.org/x/crypto/sha3"
|
"golang.org/x/crypto/sha3"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CloakConfig struct {
|
type CloakConfig struct {
|
||||||
|
@ -27,19 +27,19 @@ import (
|
|||||||
"github.com/goshuirc/irc-go/ircfmt"
|
"github.com/goshuirc/irc-go/ircfmt"
|
||||||
"gopkg.in/yaml.v2"
|
"gopkg.in/yaml.v2"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/caps"
|
"github.com/ergochat/ergo/irc/caps"
|
||||||
"github.com/oragono/oragono/irc/cloaks"
|
"github.com/ergochat/ergo/irc/cloaks"
|
||||||
"github.com/oragono/oragono/irc/connection_limits"
|
"github.com/ergochat/ergo/irc/connection_limits"
|
||||||
"github.com/oragono/oragono/irc/custime"
|
"github.com/ergochat/ergo/irc/custime"
|
||||||
"github.com/oragono/oragono/irc/email"
|
"github.com/ergochat/ergo/irc/email"
|
||||||
"github.com/oragono/oragono/irc/isupport"
|
"github.com/ergochat/ergo/irc/isupport"
|
||||||
"github.com/oragono/oragono/irc/jwt"
|
"github.com/ergochat/ergo/irc/jwt"
|
||||||
"github.com/oragono/oragono/irc/languages"
|
"github.com/ergochat/ergo/irc/languages"
|
||||||
"github.com/oragono/oragono/irc/logger"
|
"github.com/ergochat/ergo/irc/logger"
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/mysql"
|
"github.com/ergochat/ergo/irc/mysql"
|
||||||
"github.com/oragono/oragono/irc/passwd"
|
"github.com/ergochat/ergo/irc/passwd"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// here's how this works: exported (capitalized) members of the config structs
|
// 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) {
|
func mungeFromEnvironment(config *Config, envPair string) (applied bool, err *configPathError) {
|
||||||
equalIdx := strings.IndexByte(envPair, '=')
|
equalIdx := strings.IndexByte(envPair, '=')
|
||||||
name, value := envPair[:equalIdx], envPair[equalIdx+1:]
|
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
|
return false, nil
|
||||||
}
|
}
|
||||||
name = strings.TrimPrefix(name, "ORAGONO__")
|
|
||||||
pathComponents := strings.Split(name, "__")
|
pathComponents := strings.Split(name, "__")
|
||||||
for i, pathComponent := range pathComponents {
|
for i, pathComponent := range pathComponents {
|
||||||
pathComponents[i] = screamingSnakeToKebab(pathComponent)
|
pathComponents[i] = screamingSnakeToKebab(pathComponent)
|
||||||
|
@ -19,12 +19,12 @@ func TestEnvironmentOverrides(t *testing.T) {
|
|||||||
env := []string{
|
env := []string{
|
||||||
`USER=shivaram`, // unrelated var
|
`USER=shivaram`, // unrelated var
|
||||||
`ORAGONO_USER=oragono`, // this should be ignored as well
|
`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__COMPATIBILITY__FORCE_TRAILING=false`,
|
||||||
`ORAGONO__SERVER__COERCE_IDENT="~user"`,
|
`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__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}`,
|
`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 {
|
for _, envPair := range env {
|
||||||
|
@ -10,8 +10,8 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/flatip"
|
"github.com/ergochat/ergo/irc/flatip"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -8,7 +8,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/flatip"
|
"github.com/ergochat/ergo/irc/flatip"
|
||||||
)
|
)
|
||||||
|
|
||||||
func easyParseIP(ipstr string) (result flatip.IP) {
|
func easyParseIP(ipstr string) (result flatip.IP) {
|
||||||
|
@ -14,8 +14,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
|
|
||||||
"github.com/tidwall/buntdb"
|
"github.com/tidwall/buntdb"
|
||||||
)
|
)
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/flatip"
|
"github.com/ergochat/ergo/irc/flatip"
|
||||||
"github.com/tidwall/buntdb"
|
"github.com/tidwall/buntdb"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/smtp"
|
"github.com/ergochat/ergo/irc/smtp"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Runtime Errors
|
// Runtime Errors
|
||||||
|
@ -9,9 +9,9 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/flatip"
|
"github.com/ergochat/ergo/irc/flatip"
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -9,10 +9,10 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/caps"
|
"github.com/ergochat/ergo/irc/caps"
|
||||||
"github.com/oragono/oragono/irc/languages"
|
"github.com/ergochat/ergo/irc/languages"
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (server *Server) Config() (config *Config) {
|
func (server *Server) Config() (config *Config) {
|
||||||
|
@ -25,14 +25,14 @@ import (
|
|||||||
"github.com/goshuirc/irc-go/ircutils"
|
"github.com/goshuirc/irc-go/ircutils"
|
||||||
"golang.org/x/crypto/bcrypt"
|
"golang.org/x/crypto/bcrypt"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/caps"
|
"github.com/ergochat/ergo/irc/caps"
|
||||||
"github.com/oragono/oragono/irc/custime"
|
"github.com/ergochat/ergo/irc/custime"
|
||||||
"github.com/oragono/oragono/irc/flatip"
|
"github.com/ergochat/ergo/irc/flatip"
|
||||||
"github.com/oragono/oragono/irc/history"
|
"github.com/ergochat/ergo/irc/history"
|
||||||
"github.com/oragono/oragono/irc/jwt"
|
"github.com/ergochat/ergo/irc/jwt"
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/sno"
|
"github.com/ergochat/ergo/irc/sno"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// helper function to parse ACC callbacks, e.g., mailto:person@example.com, tel:16505551234
|
// 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))
|
rb.Notice(fmt.Sprintf("num goroutines: %d", count))
|
||||||
|
|
||||||
case "PROFILEHEAP":
|
case "PROFILEHEAP":
|
||||||
profFile := server.Config().getOutputPath("oragono.mprof")
|
profFile := server.Config().getOutputPath("ergo.mprof")
|
||||||
file, err := os.Create(profFile)
|
file, err := os.Create(profFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rb.Notice(fmt.Sprintf("error: %s", err))
|
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))
|
rb.Notice(fmt.Sprintf("written to %s", profFile))
|
||||||
|
|
||||||
case "STARTCPUPROFILE":
|
case "STARTCPUPROFILE":
|
||||||
profFile := server.Config().getOutputPath("oragono.prof")
|
profFile := server.Config().getOutputPath("ergo.prof")
|
||||||
file, err := os.Create(profFile)
|
file, err := os.Create(profFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rb.Notice(fmt.Sprintf("error: %s", err))
|
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 {
|
for _, line := range infoString1 {
|
||||||
rb.Add(nil, server.name, RPL_INFO, nick, line)
|
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 != "" {
|
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 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, 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, "")
|
||||||
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, "")
|
||||||
rb.Add(nil, server.name, RPL_INFO, nick, client.t("Core Developers:"))
|
rb.Add(nil, server.name, RPL_INFO, nick, client.t("Core Developers:"))
|
||||||
for _, line := range infoString2 {
|
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, 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, 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, "")
|
rb.Add(nil, server.name, RPL_INFO, nick, "")
|
||||||
// show translators for languages other than good ole' regular English
|
// show translators for languages other than good ole' regular English
|
||||||
tlines := server.Languages().Translators()
|
tlines := server.Languages().Translators()
|
||||||
|
16
irc/help.go
16
irc/help.go
@ -9,7 +9,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/languages"
|
"github.com/ergochat/ergo/irc/languages"
|
||||||
)
|
)
|
||||||
|
|
||||||
// HelpEntryType represents the different sorts of help entries that can exist.
|
// HelpEntryType represents the different sorts of help entries that can exist.
|
||||||
@ -37,7 +37,7 @@ type HelpEntry struct {
|
|||||||
var (
|
var (
|
||||||
cmodeHelpText = `== Channel Modes ==
|
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)
|
+b | Client masks that are banned from the channel (e.g. *!*@127.0.0.1)
|
||||||
+e | Client masks that are exempted from bans.
|
+e | Client masks that are exempted from bans.
|
||||||
@ -68,7 +68,7 @@ Oragono supports the following channel modes:
|
|||||||
+v (+) | Voice channel mode.`
|
+v (+) | Voice channel mode.`
|
||||||
umodeHelpText = `== User Modes ==
|
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.
|
+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).
|
+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.`
|
+T | CTCP messages to the user are blocked.`
|
||||||
snomaskHelpText = `== Server Notice Masks ==
|
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.
|
a | Local announcements.
|
||||||
c | Local client connections.
|
c | Local client connections.
|
||||||
@ -502,7 +502,7 @@ given, views the current topic on the channel.`,
|
|||||||
"uban": {
|
"uban": {
|
||||||
text: `UBAN <subcommand> [arguments]
|
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...]
|
1. UBAN ADD <target> [REQUIRE-SASL] [DURATION <duration>] [REASON...]
|
||||||
2. UBAN DEL <target>
|
2. UBAN DEL <target>
|
||||||
@ -638,15 +638,15 @@ for direct use by end users.`,
|
|||||||
"casemapping": {
|
"casemapping": {
|
||||||
text: `RPL_ISUPPORT 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
|
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,
|
helpType: ISupportHelpEntry,
|
||||||
},
|
},
|
||||||
"prefix": {
|
"prefix": {
|
||||||
text: `RPL_ISUPPORT PREFIX
|
text: `RPL_ISUPPORT PREFIX
|
||||||
|
|
||||||
Oragono supports the following channel membership prefixes:
|
Ergo supports the following channel membership prefixes:
|
||||||
|
|
||||||
+q (~) | Founder channel mode.
|
+q (~) | Founder channel mode.
|
||||||
+a (&) | Admin channel mode.
|
+a (&) | Admin channel mode.
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
package history
|
package history
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -11,9 +11,9 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/history"
|
"github.com/ergochat/ergo/irc/history"
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/goshuirc/irc-go/ircfmt"
|
"github.com/goshuirc/irc-go/ircfmt"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -12,7 +12,7 @@ import (
|
|||||||
|
|
||||||
"github.com/tidwall/buntdb"
|
"github.com/tidwall/buntdb"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -12,7 +12,7 @@ import (
|
|||||||
"github.com/goshuirc/irc-go/ircmsg"
|
"github.com/goshuirc/irc-go/ircmsg"
|
||||||
"github.com/goshuirc/irc-go/ircreader"
|
"github.com/goshuirc/irc-go/ircreader"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -13,7 +13,7 @@ import (
|
|||||||
|
|
||||||
"github.com/tidwall/buntdb"
|
"github.com/tidwall/buntdb"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -13,7 +13,7 @@ import (
|
|||||||
|
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -8,8 +8,8 @@ import (
|
|||||||
|
|
||||||
"github.com/goshuirc/irc-go/ircmsg"
|
"github.com/goshuirc/irc-go/ircmsg"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/caps"
|
"github.com/ergochat/ergo/irc/caps"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MessageCache caches serialized IRC messages.
|
// MessageCache caches serialized IRC messages.
|
||||||
|
@ -10,9 +10,9 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/sno"
|
"github.com/ergochat/ergo/irc/sno"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestParseDefaultChannelModes(t *testing.T) {
|
func TestParseDefaultChannelModes(t *testing.T) {
|
||||||
|
@ -16,10 +16,10 @@ import (
|
|||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"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/go-sql-driver/mysql"
|
||||||
"github.com/oragono/oragono/irc/history"
|
|
||||||
"github.com/oragono/oragono/irc/logger"
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -3,8 +3,8 @@ package mysql
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/history"
|
"github.com/ergochat/ergo/irc/history"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 123 / '{' is the magic number that means JSON;
|
// 123 / '{' is the magic number that means JSON;
|
||||||
|
@ -9,11 +9,11 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"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/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 (
|
var (
|
||||||
|
@ -13,10 +13,10 @@ import (
|
|||||||
|
|
||||||
"github.com/goshuirc/irc-go/ircfmt"
|
"github.com/goshuirc/irc-go/ircfmt"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/custime"
|
"github.com/ergochat/ergo/irc/custime"
|
||||||
"github.com/oragono/oragono/irc/passwd"
|
"github.com/ergochat/ergo/irc/passwd"
|
||||||
"github.com/oragono/oragono/irc/sno"
|
"github.com/ergochat/ergo/irc/sno"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// "enabled" callbacks for specific nickserv commands
|
// "enabled" callbacks for specific nickserv commands
|
||||||
|
@ -7,9 +7,9 @@ import (
|
|||||||
"runtime/debug"
|
"runtime/debug"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/ergochat/ergo/irc/caps"
|
||||||
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
"github.com/goshuirc/irc-go/ircmsg"
|
"github.com/goshuirc/irc-go/ircmsg"
|
||||||
"github.com/oragono/oragono/irc/caps"
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -7,9 +7,9 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/history"
|
"github.com/ergochat/ergo/irc/history"
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -5,7 +5,7 @@ package irc
|
|||||||
import (
|
import (
|
||||||
"runtime"
|
"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
|
// 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/goshuirc/irc-go/ircfmt"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/caps"
|
"github.com/ergochat/ergo/irc/caps"
|
||||||
"github.com/oragono/oragono/irc/connection_limits"
|
"github.com/ergochat/ergo/irc/connection_limits"
|
||||||
"github.com/oragono/oragono/irc/flatip"
|
"github.com/ergochat/ergo/irc/flatip"
|
||||||
"github.com/oragono/oragono/irc/history"
|
"github.com/ergochat/ergo/irc/history"
|
||||||
"github.com/oragono/oragono/irc/logger"
|
"github.com/ergochat/ergo/irc/logger"
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
"github.com/oragono/oragono/irc/mysql"
|
"github.com/ergochat/ergo/irc/mysql"
|
||||||
"github.com/oragono/oragono/irc/sno"
|
"github.com/ergochat/ergo/irc/sno"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
"github.com/tidwall/buntdb"
|
"github.com/tidwall/buntdb"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -356,9 +356,9 @@ func (server *Server) tryRegister(c *Client, session *Session) (exiting bool) {
|
|||||||
func (server *Server) playSTSBurst(session *Session) {
|
func (server *Server) playSTSBurst(session *Session) {
|
||||||
nick := utils.SafeErrorParam(session.client.preregNick)
|
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_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_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, RPL_ISUPPORT, nick, "CASEMAPPING=ascii", "are supported by this server")
|
||||||
session.Send(nil, server.name, ERR_NOMOTD, nick, "MOTD is unavailable")
|
session.Send(nil, server.name, ERR_NOMOTD, nick, "MOTD is unavailable")
|
||||||
for _, line := range server.Config().Server.STS.bannerLines {
|
for _, line := range server.Config().Server.STS.bannerLines {
|
||||||
@ -1059,8 +1059,8 @@ var (
|
|||||||
▐█▌.▐▌▐█•█▌▐█ ▪▐▌▐█▄▪▐█▐█▌ ▐▌██▐█▌▐█▌.▐▌
|
▐█▌.▐▌▐█•█▌▐█ ▪▐▌▐█▄▪▐█▐█▌ ▐▌██▐█▌▐█▌.▐▌
|
||||||
▀█▄▀▪.▀ ▀ ▀ ▀ ·▀▀▀▀ ▀█▄▀ ▀▀ █▪ ▀█▄▀▪
|
▀█▄▀▪.▀ ▀ ▀ ▀ ·▀▀▀▀ ▀█▄▀ ▀▀ █▪ ▀█▄▀▪
|
||||||
|
|
||||||
https://oragono.io/
|
https://ergo.chat/
|
||||||
https://github.com/oragono/oragono
|
https://github.com/ergochat/ergo
|
||||||
https://crowdin.com/project/oragono
|
https://crowdin.com/project/oragono
|
||||||
`, "\n")
|
`, "\n")
|
||||||
infoString2 = strings.Split(` Daniel Oakley, DanielOaks, <daniel@danieloaks.net>
|
infoString2 = strings.Split(` Daniel Oakley, DanielOaks, <daniel@danieloaks.net>
|
||||||
|
@ -11,9 +11,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
"github.com/goshuirc/irc-go/ircfmt"
|
"github.com/goshuirc/irc-go/ircfmt"
|
||||||
"github.com/goshuirc/irc-go/ircmsg"
|
"github.com/goshuirc/irc-go/ircmsg"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// defines an IRC service, e.g., NICKSERV
|
// defines an IRC service, e.g., NICKSERV
|
||||||
|
@ -4,8 +4,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
"github.com/ergochat/ergo/irc/sno"
|
||||||
"github.com/goshuirc/irc-go/ircfmt"
|
"github.com/goshuirc/irc-go/ircfmt"
|
||||||
"github.com/oragono/oragono/irc/sno"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// SnoManager keeps track of which clients to send snomasks to.
|
// SnoManager keeps track of which clients to send snomasks to.
|
||||||
|
@ -9,7 +9,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -16,7 +16,7 @@ import (
|
|||||||
"golang.org/x/text/unicode/norm"
|
"golang.org/x/text/unicode/norm"
|
||||||
"golang.org/x/text/width"
|
"golang.org/x/text/width"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -8,7 +8,7 @@ package irc
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/modes"
|
"github.com/ergochat/ergo/irc/modes"
|
||||||
)
|
)
|
||||||
|
|
||||||
type empty struct{}
|
type empty struct{}
|
||||||
|
@ -11,10 +11,10 @@ import (
|
|||||||
|
|
||||||
"github.com/goshuirc/irc-go/ircmsg"
|
"github.com/goshuirc/irc-go/ircmsg"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/custime"
|
"github.com/ergochat/ergo/irc/custime"
|
||||||
"github.com/oragono/oragono/irc/flatip"
|
"github.com/ergochat/ergo/irc/flatip"
|
||||||
"github.com/oragono/oragono/irc/sno"
|
"github.com/ergochat/ergo/irc/sno"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func consumeDuration(params []string, rb *ResponseBuffer) (duration time.Duration, requireSASL bool, remainingParams []string, err error) {
|
func consumeDuration(params []string, rb *ResponseBuffer) (duration time.Duration, requireSASL bool, remainingParams []string, err error) {
|
||||||
|
@ -13,7 +13,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type MaskInfo struct {
|
type MaskInfo struct {
|
||||||
|
@ -6,13 +6,13 @@ package irc
|
|||||||
import "fmt"
|
import "fmt"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// SemVer is the semantic version of Oragono.
|
// SemVer is the semantic version of Ergo.
|
||||||
SemVer = "2.7.0-unreleased"
|
SemVer = "2.7.0-unreleased"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// Ver is the full version of Oragono, used in responses to clients.
|
// Ver is the full version of Ergo, used in responses to clients.
|
||||||
Ver = fmt.Sprintf("oragono-%s", SemVer)
|
Ver = fmt.Sprintf("ergo-%s", SemVer)
|
||||||
// Commit is the full git hash, if available
|
// Commit is the full git hash, if available
|
||||||
Commit string
|
Commit string
|
||||||
)
|
)
|
||||||
@ -21,8 +21,8 @@ var (
|
|||||||
func SetVersionString(version, commit string) {
|
func SetVersionString(version, commit string) {
|
||||||
Commit = commit
|
Commit = commit
|
||||||
if version != "" {
|
if version != "" {
|
||||||
Ver = fmt.Sprintf("oragono-%s", version)
|
Ver = fmt.Sprintf("ergo-%s", version)
|
||||||
} else if len(Commit) == 40 {
|
} 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"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/oragono/oragono/irc/history"
|
"github.com/ergochat/ergo/irc/history"
|
||||||
"github.com/oragono/oragono/irc/utils"
|
"github.com/ergochat/ergo/irc/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
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
|
# 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.
|
# in IRCv3 conformance testing.
|
||||||
|
|
||||||
# network configuration
|
# network configuration
|
||||||
network:
|
network:
|
||||||
# name of the network
|
# name of the network
|
||||||
name: OragonoTest
|
name: ErgoTest
|
||||||
|
|
||||||
# server configuration
|
# server configuration
|
||||||
server:
|
server:
|
||||||
# server name
|
# server name
|
||||||
name: oragono.test
|
name: ergo.test
|
||||||
|
|
||||||
# addresses to listen on
|
# addresses to listen on
|
||||||
listeners:
|
listeners:
|
||||||
@ -36,12 +36,12 @@ server:
|
|||||||
# min-tls-version: 1.2
|
# min-tls-version: 1.2
|
||||||
|
|
||||||
# Example of a Unix domain socket for proxying:
|
# 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
|
# 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
|
# 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:
|
# *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
|
# tor: true
|
||||||
|
|
||||||
# Example of a WebSocket listener:
|
# Example of a WebSocket listener:
|
||||||
@ -94,14 +94,14 @@ server:
|
|||||||
|
|
||||||
websockets:
|
websockets:
|
||||||
# Restrict the origin of WebSocket connections by matching the "Origin" HTTP
|
# 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.
|
# 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
|
# 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.
|
# restrictions.
|
||||||
allowed-origins:
|
allowed-origins:
|
||||||
# - "https://oragono.io"
|
# - "https://ergo.chat"
|
||||||
# - "https://*.oragono.io"
|
# - "https://*.ergo.chat"
|
||||||
|
|
||||||
# casemapping controls what kinds of strings are permitted as identifiers (nicknames,
|
# casemapping controls what kinds of strings are permitted as identifiers (nicknames,
|
||||||
# channel names, account names, etc.), and how they are normalized for case.
|
# 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:
|
# the value must begin with a '~' character. comment out / omit to disable:
|
||||||
#coerce-ident: '~u'
|
#coerce-ident: '~u'
|
||||||
|
|
||||||
# password to login to the server
|
# password to login to the server, generated using `ergo genpasswd`:
|
||||||
# generated using "oragono genpasswd"
|
#password: "$2a$04$0123456789abcdef0123456789abcdef0123456789abcdef01234"
|
||||||
#password: ""
|
|
||||||
|
|
||||||
# motd filename
|
# motd filename
|
||||||
# if you change the motd, you should move it to ircd.motd
|
# if you change the motd, you should move it to ircd.motd
|
||||||
motd: oragono.motd
|
motd: ergo.motd
|
||||||
|
|
||||||
# motd formatting codes
|
# motd formatting codes
|
||||||
# if this is true, the motd is escaped using formatting codes like $c, $b, and $i
|
# 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)
|
# (comment this out to use passwords only)
|
||||||
certfp: "abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789"
|
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"
|
password: "$2a$04$abcdef0123456789abcdef0123456789abcdef0123456789abcde"
|
||||||
|
|
||||||
# IPs/CIDRs that can use this webirc command
|
# IPs/CIDRs that can use this webirc command
|
||||||
@ -201,7 +200,7 @@ server:
|
|||||||
compatibility:
|
compatibility:
|
||||||
# many clients require that the final parameter of certain messages be an
|
# many clients require that the final parameter of certain messages be an
|
||||||
# RFC1459 trailing parameter, i.e., prefixed with :, whether or not this is
|
# 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;
|
# as trailings. this is recommended unless you're testing clients for conformance;
|
||||||
# defaults to true when unset for that reason.
|
# defaults to true when unset for that reason.
|
||||||
force-trailing: true
|
force-trailing: true
|
||||||
@ -214,7 +213,7 @@ server:
|
|||||||
|
|
||||||
# traditionally, IRC servers will truncate and send messages that are
|
# traditionally, IRC servers will truncate and send messages that are
|
||||||
# too long to be relayed intact. this behavior can be disabled by setting
|
# 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
|
# and return an error to the client. (note that this option defaults to true
|
||||||
# when unset.)
|
# when unset.)
|
||||||
allow-truncation: true
|
allow-truncation: true
|
||||||
@ -282,7 +281,7 @@ server:
|
|||||||
# IP cloaking hides users' IP addresses from other users and from channel admins
|
# 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
|
# (but not from server admins), while still allowing channel admins to ban
|
||||||
# offending IP addresses or networks. In place of hostnames derived from reverse
|
# 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
|
# 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 is not already known, it is infeasible to recover it from the cloaked name.
|
||||||
ip-cloaking:
|
ip-cloaking:
|
||||||
@ -323,10 +322,10 @@ server:
|
|||||||
secure-nets:
|
secure-nets:
|
||||||
# - "10.0.0.0/8"
|
# - "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
|
# CPU profiling or data export. by default, these files will be written
|
||||||
# to the working directory. set this to customize:
|
# 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",
|
# the hostname used by "services", e.g., NickServ, defaults to "localhost",
|
||||||
# e.g., `NickServ!NickServ@localhost`. uncomment this to override:
|
# e.g., `NickServ!NickServ@localhost`. uncomment this to override:
|
||||||
@ -469,7 +468,7 @@ accounts:
|
|||||||
# nickname after the initial connection is complete
|
# nickname after the initial connection is complete
|
||||||
forbid-anonymous-nick-changes: false
|
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
|
# attach to the same client/nickname identity; this is part of the
|
||||||
# functionality traditionally provided by a bouncer like ZNC
|
# functionality traditionally provided by a bouncer like ZNC
|
||||||
multiclient:
|
multiclient:
|
||||||
@ -630,7 +629,7 @@ opers:
|
|||||||
# operators can be authenticated either by password (with the /OPER command),
|
# 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
|
# 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
|
# 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"
|
password: "$2a$04$0123456789abcdef0123456789abcdef0123456789abcdef01234"
|
||||||
|
|
||||||
# if a SHA-256 certificate fingerprint is configured here, then it will be
|
# if a SHA-256 certificate fingerprint is configured here, then it will be
|
||||||
@ -691,7 +690,7 @@ logging:
|
|||||||
|
|
||||||
# debug options
|
# debug options
|
||||||
debug:
|
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.
|
# client-triggered runtime errors that would normally crash the server.
|
||||||
# this makes the server more resilient to DoS, but could result in incorrect
|
# 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
|
# behavior. deployments that would prefer to "start from scratch", e.g., by
|
||||||
@ -722,9 +721,9 @@ datastore:
|
|||||||
port: 3306
|
port: 3306
|
||||||
# if socket-path is set, it will be used instead of host:port
|
# if socket-path is set, it will be used instead of host:port
|
||||||
#socket-path: "/var/run/mysqld/mysqld.sock"
|
#socket-path: "/var/run/mysqld/mysqld.sock"
|
||||||
user: "oragono"
|
user: "ergo"
|
||||||
password: "hunter2"
|
password: "hunter2"
|
||||||
history-database: "oragono_history"
|
history-database: "ergo_history"
|
||||||
timeout: 3s
|
timeout: 3s
|
||||||
max-conns: 4
|
max-conns: 4
|
||||||
# this may be necessary to prevent middleware from closing your connections:
|
# this may be necessary to prevent middleware from closing your connections:
|
||||||
@ -937,5 +936,5 @@ history:
|
|||||||
# - "typing"
|
# - "typing"
|
||||||
|
|
||||||
# whether to allow customization of the config at runtime using environment variables,
|
# 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
|
allow-environment-overrides: true
|
||||||
|
Loading…
Reference in New Issue
Block a user