Alexey Yerin
3109340651
downstream: handle name=... in BOUNCER
2021-10-14 16:03:14 +02:00
Simon Ser
28e1ca51e7
db_postgres: remove unnecessary DEFAULT NULL in schema
2021-10-14 10:09:01 +02:00
Simon Ser
d334bb18a2
db_postgres: use tx for all queries in StoreClientDeliveryReceipts
2021-10-13 19:15:50 +02:00
Simon Ser
79dbb20f98
db_postgres: quote table name in StoreClientDeliveryReceipts
2021-10-13 17:38:20 +02:00
Simon Ser
2ed4491c17
Don't strip spaces at start of MOTD
...
This breaks ASCII art. Instead, just drop the final newline if any.
2021-10-13 12:53:43 +02:00
Simon Ser
a9a066faac
Add bouncer MOTD
...
Closes: https://todo.sr.ht/~emersion/soju/137
2021-10-13 10:58:34 +02:00
Simon Ser
ca9fa9198c
db_postgres: fix constraints errors
...
Stop using ON CONFLICT DO UPDATE.
Closes: https://todo.sr.ht/~emersion/soju/138
2021-10-13 10:12:14 +02:00
Hubert Hirtz
eb41ed4171
db_postgres: handle both constraints on network updates
...
Closes: https://todo.sr.ht/~emersion/soju/138
2021-10-13 08:53:49 +02:00
Simon Ser
d646ffc9d6
contrib/clients: update IRCv3 caps for Weechat 3.3
2021-10-12 21:49:06 +02:00
Simon Ser
c8aba6286f
doc.soju.1: fix typo and improve formatting for "certfp generate"
2021-10-12 21:34:25 +02:00
Simon Ser
8ef2de196d
doc/soju.1: add descriptions for all flags for "user create"
2021-10-12 21:31:12 +02:00
Simon Ser
96f8751e3d
doc/soju.1: use angle-brackets for URL
...
Helps a bit terminal emulators to recognize the link.
2021-10-12 21:27:48 +02:00
Simon Ser
e55d0d7552
Stop sending RPL_CREATED
...
There's no point in sending this numeric if it doesn't contain any
useful info.
2021-10-12 19:28:44 +02:00
Simon Ser
8a0400c5cc
msgstore_fs: fix ListTargets error on missing log dir
...
Initially, before connecting to the network, the log dir will be
empty. Return an empty list of chat history targets in this case.
2021-10-12 17:36:00 +02:00
Simon Ser
6e8b6fa153
Fix printf formatting in error message
2021-10-12 17:36:00 +02:00
Simon Ser
5c20c4c0f4
Upgrade dependencies
2021-10-12 16:54:51 +02:00
Simon Ser
4e9ddf78ab
service: allow updating other users
2021-10-12 09:11:14 +02:00
Simon Ser
96d4111be2
ci: run PostgreSQL tests
2021-10-11 16:06:37 +02:00
Simon Ser
1cd99ce2f7
Fix unused imports in tests
2021-10-11 16:01:50 +02:00
Simon Ser
2b8691ff40
Run server test with PostgreSQL too
2021-10-11 15:57:37 +02:00
Simon Ser
2b23828842
db_postgres: add migration test
2021-10-11 15:55:07 +02:00
Hubert Hirtz
6e06663615
PostgreSQL support
2021-10-11 15:21:04 +02:00
Simon Ser
a4f631f3e3
db_sqlite: add migration test
2021-10-11 12:26:51 +02:00
Hubert Hirtz
3a171607e0
Correctly send back PRIVMSGs and NOTICEs to self
2021-10-10 12:05:41 +02:00
Hubert Hirtz
d4b7bb02da
Send back TAGMSGs to self
2021-10-10 12:05:41 +02:00
Hubert Hirtz
0fd81f38fa
Dismiss TAGMSGs directed to BouncerServ
2021-10-10 12:05:40 +02:00
Simon Ser
5a2d6246ec
Add "server notice" command
2021-10-08 10:52:03 +02:00
Simon Ser
e3b4687ac7
Split CertFP logic into separate file
2021-10-08 09:47:25 +02:00
Simon Ser
81782fefe8
build: don't clobber config file
...
Use `test -f` instead of `cp -n`, because the former is POSIX.
References: https://github.com/emersion/soju/pull/32
2021-10-08 09:11:31 +02:00
Simon Ser
94dbfff11d
Add max-user-networks config option
2021-10-07 20:43:10 +02:00
Simon Ser
9f021ba9a9
doc/soju.1: mention that accept-proxy-ip affects PROXY proto
2021-10-07 20:04:20 +02:00
Alex Karle
8951760733
chathistory: Fix truncated backlog due to timezones
...
Because msgstore_fs writes logs in localtime, the CHATHISTORY timestamps
(UTC) must be converted to localtime prior to filtering ranges ensure
the right range is sent back to the client.
Prior to this patch, the iteration back from the BEFORE time failed to
load the hours between midnight UTC and midnight localtime in each day's
logged messages. This is because the final time to be considered in a
day's log file (the "start" time) reuses the previous start time's
locale:
start = time.Date(year, month, day, 0, 0, 0, 0, start.Location()).Add(-1)
By converting the original start and end from the CHATHISTORY commands
to localtime in Load*Time and ListTargets, we ensure we read through
midnight each day.
2021-10-07 11:57:42 +02:00
Simon Ser
1d56ef19e7
Add WHOIS reply for BouncerServ
2021-10-06 11:50:12 +02:00
Simon Ser
2814512da7
msgstore_fs: add limit on number of opened files
2021-10-06 11:41:39 +02:00
Simon Ser
e177977c30
Add DB stats
2021-10-05 19:31:06 +02:00
Simon Ser
5405923aa2
Add limit for RSA bits
2021-10-05 19:21:43 +02:00
Simon Ser
f93616fb41
Add "server status" command
...
Right now, it prints the number of active users and number of
downstream connections.
2021-10-05 19:13:53 +02:00
Simon Ser
0d2829c180
test: get rid of testUpstream
...
No need for this complexity.
2021-10-05 14:26:10 +02:00
Simon Ser
c672763068
test: add NOTICE broadcast
2021-10-05 14:14:31 +02:00
Simon Ser
74297d607b
test: add upstream
2021-10-05 14:03:17 +02:00
Simon Ser
1626ffb97b
Use isErrClosed in Server.Serve
2021-10-05 14:02:59 +02:00
Simon Ser
e4f22a8f40
Add basic server test
2021-10-05 12:11:40 +02:00
Simon Ser
410ba47277
Close DB on shutdown
2021-10-05 11:53:38 +02:00
Simon Ser
1b8d8d08c9
db_sqlite: fix realname not fetched in ListUsers
...
This fixes per-user realname not being used on bouncer startup.
2021-10-05 11:10:48 +02:00
Simon Ser
5bedcd24e2
Add support for IRCv3 WebSocket text subprotocol
...
Technically we aren't spec-compliant since we don't serve
binary.ircv3.net. Any complaints will be redirected to /dev/null.
2021-09-28 21:25:06 +02:00
Simon Ser
fce86b0f0d
db_sqlite: switch to sql.Named
...
This allows us to avoid mixing up arguments.
2021-09-27 16:54:06 +02:00
Hubert Hirtz
6b9c99821a
Fix DeliveryReceipt not being cleaned up
2021-09-21 18:19:05 +02:00
Simon Ser
872ed736b4
Workaround lack of net.ErrClosed in WebSocket library
2021-09-21 11:49:48 +02:00
Simon Ser
27ea855ea2
readme: add note to use system libsqlite3
2021-09-21 11:44:08 +02:00
Chris Smith
c607fd5a58
Set a higher timeout for proxyproto listeners
...
go-proxyproto added support for a read timeout in 0.6.0[1] and
defaulted it to 200ms. After this time if no data is read on
the socket, it is closed.
This is _really_ low if the underlying connection is a TLS
one as no data pops out the other end until the handshake is
done. It effectively limits you to TLS connections within
a 50ms RTT of your bouncer with clients that are fast enough
at responding.
It appears that HexChat on Arch is somehow slow enough at
TLS connections thant it consistently takes longer than
200ms even over localhost, meaning it outright can't connect
to soju any longer.
To make this a lot less painful, have soju pass in a read
timeout of 5 seconds. This feels like a reasonable tradeoff
between keeping (possibly malicious) connections open and
accepting the realities of network connections.
[1]: https://github.com/pires/go-proxyproto/issues/65
2021-09-19 17:00:40 +02:00