Eric Mertens
3650446156
Pass MODE and TOPIC through for unjoined channels
2023-08-23 19:44:55 +02:00
Simon Ser
33a83b3b41
contrib/clients: drop mention of single-upstream mode
...
We no longer have multi-upstream mode, so no need to specify
explicitly the mode anymore.
2023-08-23 09:54:27 +02:00
Simon Ser
2e131cda6d
doc: remove mention of dropped multi-upstream mode
2023-08-17 18:27:46 +02:00
Simon Ser
c06d97ab9b
doc: clarify that client suffixes are not required for chathistory
2023-08-17 18:25:07 +02:00
Simon Ser
1a1610c1ce
doc: expand on message store specificities
2023-08-17 18:13:11 +02:00
Simon Ser
00877b50c5
Upgrade dependencies
2023-08-16 21:04:37 +02:00
Eric Mertens
15e31e629a
ERR_NOSUCHSERVER unqueues WHOIS
2023-08-16 20:58:02 +02:00
Eric Mertens
d9db48d879
Don't drop RPL_LISTSTART - passthrough to downstream
2023-08-13 20:28:55 +02:00
Eric Mertens
e43e472c53
Fix capability associated with account message-tag
2023-08-13 09:38:01 +02:00
Simon Ser
fc1151326c
service: add a way to reset a network certfp
2023-08-09 18:04:30 +02:00
Simon Ser
97cfb366b0
Replace soju.im/pre-away with draft/pre-away
...
The IRCv3 draft spec ended up being merged!
2023-08-03 20:14:46 +02:00
Simon Ser
c36bb342fb
Introduce soju.im/pre-away
...
The IRCv3 spec is stalled, so let's just ship a vendored extension
for now.
References: https://github.com/ircv3/ircv3-specifications/pull/514
2023-08-03 19:38:31 +02:00
delthas
0ee94759f7
Fix SEARCH queries with special characters on SQLite
...
Previously, we would pass SQLite FTS5 MATCH queries as is from the
SEARCH parameter, when searching for messages.
By default FTS5 queries follow a specific syntax, e.g. AND, OR, ...
can be used to filter searches logically.
Passing special characters in these unescaped queries, like `.`,
would be rejected by SQLite, failing the SEARCH request.
Here, in order to replicate PostgreSQL and FS behavior, we simply
want to search for the string as is, and not give it glob or logic
operators semantics.
To do that, we quote each token of the string, skipping over
separators.
2023-08-02 15:19:38 +02:00
Simon Ser
2351fc8b83
server: add metric for goroutine panics
...
This is useful to setup an alert when a panic occurs.
2023-06-02 11:03:21 +02:00
Simon Ser
64196d5b6e
Upgrade dependencies
2023-06-01 13:07:39 +02:00
Simon Ser
c8d5c90d9d
downstream: improve SASL error logging
2023-06-01 11:37:03 +02:00
Simon Ser
40a40566f4
msgstore/znclog: fix error message
...
err may be nil.
Fixes: 2b2a2fd479
("msgstore/znclog: fix panic on malformed input line")
2023-05-23 23:11:05 +02:00
Simon Ser
2b2a2fd479
msgstore/znclog: fix panic on malformed input line
...
If the line is "[01:02:03]" without a trailing space, we trip on
a "slice bounds out of range" panic.
Closes: https://todo.sr.ht/~emersion/soju/214
2023-05-23 23:08:44 +02:00
Simon Ser
fa33ce986c
downstream: fix nick in auth error message
...
We were always printing "*" here.
2023-05-23 18:28:50 +02:00
Simon Ser
9659de8ff3
Add CHATHISTORY test
2023-05-23 13:06:22 +02:00
Simon Ser
9b9fc60f62
Rename Config.Log{Driver,Path} to MsgStore
2023-05-23 11:23:38 +02:00
Simon Ser
cbdaf46592
service: reject params for commands that don't take any
...
We were already rejecting extraneous params for commands that take
one or more.
2023-04-25 09:51:37 +02:00
Simon Ser
582ac97c24
Use database.GetNick in network.isHighlight
...
The network nickname can be empty, and defaults to the global nick
setting.
2023-04-16 21:24:27 +02:00
Simon Ser
e5bce700a9
Panic if isHighlight is called with empty nick
...
Let's make sure callers never do this. We'd go into an infinite
loop previously.
2023-04-16 21:22:08 +02:00
Simon Ser
0548fdfa09
database/sqlite: fix missing argument in DeleteUser
2023-04-14 17:37:53 +02:00
Simon Ser
f6421c3498
doc/packaging: add section about binding to privileged ports
2023-04-14 17:35:51 +02:00
Simon Ser
662e3f3afe
contrib/systemd: add AmbientCapabilities=CAP_NET_BIND_SERVICE
...
soju needs to bind to port 113 for identd.
2023-04-13 12:40:12 +02:00
Simon Ser
6f01bd86c3
downstream: pass context to SendMessage
...
Just like upstream does.
2023-04-06 13:23:20 +02:00
Simon Ser
51768c256a
upstream: introduce upstreamConn.forwardMessage
2023-04-06 13:10:18 +02:00
Simon Ser
43e6febc15
downstream: error out if SASL PLAIN identity is specified
2023-04-05 21:18:57 +02:00
Simon Ser
b3be05559b
downstream: add support for ANONYMOUS SASL auth
...
This clears any saved SASL credentials.
Closes: https://todo.sr.ht/~emersion/soju/198
2023-04-05 21:15:18 +02:00
Simon Ser
92796248d2
downstream: rename downstreamRegistration.password to pass
...
This is more descriptive.
2023-04-05 20:30:34 +02:00
Simon Ser
f6043e5b98
Stop setting *user in downstreamConn.register
...
Set it in downstreamConn.welcome instead. Makes it clearer that it
must not be accessed before welcome is called (because it can only
be accessed from the user goroutine).
2023-04-05 16:54:55 +02:00
Simon Ser
c5079f7ac3
downstream: fix connection registration
...
Fixes: 1df1ccf91e
("downstream: take irc.Message in handleCap")
2023-04-05 16:53:18 +02:00
Simon Ser
0b1a4b9081
user: fix upstream connections closed after 1 minute
...
Fixes: ac16729f93
("user: fix dup upstream connections due to race")
2023-04-05 16:43:02 +02:00
Simon Ser
8637550e68
downstream: inline authenticate function
2023-04-05 15:43:51 +02:00
Simon Ser
53017a7a5c
Improve Server.Handle readability
2023-04-05 15:11:36 +02:00
Simon Ser
1df1ccf91e
downstream: take irc.Message in handleCap
2023-04-05 14:35:51 +02:00
Simon Ser
de02cb98fe
downstream: return FAIL on unknown BOUNCER command before registration
2023-04-05 13:36:36 +02:00
Simon Ser
41399ca6fd
user: unconditonally stop network in updateNetwork()
2023-04-05 13:03:24 +02:00
Simon Ser
ac16729f93
user: fix dup upstream connections due to race
...
Closes: https://todo.sr.ht/~emersion/soju/207
2023-04-05 12:57:42 +02:00
Simon Ser
6cfa908f40
gitignore: add doc/sojuctl.1
2023-04-05 10:56:36 +02:00
Simon Ser
f12f10a7bb
downstream: return channel in cached WHO reply
...
References: https://github.com/ircdocs/modern-irc/pull/211
2023-04-05 10:54:43 +02:00
Simon Ser
5358d93ab9
upstream: don't print "unhandled message" for registration errors
2023-04-03 22:35:38 +02:00
Simon Ser
b514306a06
upstream: forward ERR_NOSUCHNICK
2023-04-03 22:35:16 +02:00
Simon Ser
b0f2f9c36b
upstream: add forwardMsgByID
2023-04-03 22:32:49 +02:00
Simon Ser
be6cc27981
downstream: set CLIENTTAGDENY=* when upstream is missing message-tags
2023-03-28 18:48:47 +02:00
Simon Ser
f2b6d0864b
doc/packaging: clarify and expand
2023-03-22 16:25:15 +01:00
Simon Ser
9579998e63
downstream: fix panic due to nil user in setUser
...
Fixes: 4ca8dfa37d
("downstream: fix nil pointer deref in downstreamConn.setUser")
2023-03-21 18:02:59 +01:00
Дамјан Георгиевски
e510cef208
add an example systemd service file
...
The service file will run `/usr/bin/soju --config /etc/soju/config`.
By default it'll run as a dynamically created `soju` user and group (DynamicUser=yes),
and it will run in a constrained environment[1], only having write access to
/var/lib/soju and /run/soju
If the admin creates a static `soju` user and group, those static uid/gid will be used,
with the same service constraints. This can be useful to share the static `soju` group
with other services, so they can access the soju logs and database even
if the service is not running (or before it's running).
The procedure for the initial user and database scaffold still
works normally, when run as `root`:
```
mkdir /var/lib/soju/
sojudb -config /etc/soju/config create-user myname -admin
```
NOTE: systemd will automatically change the ownership of files in /var/lib/soju/ when the service
is started.
`sojuctl` will work for root, or with `sudo -u soju`, just normally.
References:
- [1] https://www.freedesktop.org/software/systemd/man/systemd.exec.html#DynamicUser=
2023-03-20 18:12:31 +01:00