summary refs log tree commit diff
Commit message (Collapse)AuthorAge
* Use Xr for the first "pounce" in README 1.1June McEnroe2020-01-17
|
* Add litterbox to READMEJune McEnroe2020-01-17
|
* Rename SASL EXTERNAL section to CertFPJune McEnroe2020-01-17
|
* Document process of generating client certificatesJune McEnroe2020-01-17
|
* Set certificate expiry to 10 yearsJune McEnroe2020-01-16
| | | | | I'm pretty sure any kind of "renewing" of these is going to suck, so just set it long enough that the world will probably be ash by then.
* Allow signing by CA in -gJune McEnroe2020-01-12
|
* Clean up documentation for -AJune McEnroe2020-01-12
|
* Rename all local-related options to local-June McEnroe2020-01-12
| | | | | | | This disambiguates client-ca and client-pass from client-cert and client-key, which apply to opposite sides of the program. The old option names will continue to work.
* Use the CAP_PREAD rightJune McEnroe2020-01-12
| | | | Required for the rewind call when loading the CA.
* Add option to set local client CAJune McEnroe2020-01-12
| | | | | | | | | This is a little bit messy. Allows setting either -A or -W or both. Implements SASL EXTERNAL for clients that expect that when connecting with a client certificate. Need to test that reloading still works inside capsicum, since I suspect that rewind call may be blocked.
* Add a vendor capability for passive clientsJune McEnroe2020-01-10
| | | | | | This way things like litterbox can do it automatically without having to be configured with a hyphen-prefixed username, which is usually invalid anywhere else.
* Rename -A and -Q to -y and -qJune McEnroe2020-01-07
| | | | | | | | | | | The other upper-case options are related to the listening side of things, not the server side, so this is more consistent. This is incompatible, but will fail loudly, and I expect these options are more likely set in a configuration file, if they are set at all. I also want to free up -A for setting a client CA, but assuming your away message is not also an existing file path, that will continue to fail loudly.
* Intercept client QUIT with no parameter 1.0p3June McEnroe2019-12-28
| | | | Oops! Clients could get pounce to quit if they didn't send a message.
* Update source URLJune McEnroe2019-12-24
| | | | Oops, thought I did this already.
* Exit on zero-length server readJune McEnroe2019-12-22
|
* Revert "Exit when server gets POLLHUP"June McEnroe2019-12-22
| | | | | | | Turns out the more likely thing is that the fd will just continue to be POLLIN and produce zero-length reads. This reverts commit 5707b15920a1ce57f01db0d592487d833218be9d.
* Exit when server gets POLLHUPJune McEnroe2019-12-20
| | | | | | This should maybe gracefully inform clients of what happened, but for now this is much better than the infinite poll loop that happened previously.
* Add CONTRIBUTING section to READMEJune McEnroe2019-12-17
|
* Don't send self-PMs to the server 1.0p2June McEnroe2019-12-08
|
* Reference openssl(1) by absolute pathedef2019-11-27
| | | | | This still allows using openssl(1) from PATH, but defaults to using ${LIBRESSL_PREFIX}/bin/openssl.
* Simplify Linux.mkJune McEnroe2019-11-27
| | | | | This should just be what is definitely necessary, and all distros have their own problems. This works on Void Linux at least.
* Don't always create ${ETCDIR}/rc.dJune McEnroe2019-11-26
|
* Link calico with libcrypto on Linux 1.0p1June McEnroe2019-11-21
| | | | For the strlcpy implementation.
* Fix wordcmp return value when the words have differing lengthsMichael Forney2019-11-21
| | | | | | | | | | Otherwise, the result of strncmp gets converted size_t, since size_t has greater rank than int. Since wordcmp is only ever used as a boolean condition, this poses no real issue, but presumably, it is meant to behave like the other *cmp function and return a value less than, equal to, or greater than 0 depending on the result of the comparison.
* Declare globals as extern in headers, and define in source fileMichael Forney2019-11-21
| | | | | | | | | | | | | | | Otherwise, each source file that includes the header gets its own definition, and according to the C standard (C99 6.9p5): > If an identifier declared with external linkage is used in an > expression (other than as part of the operand of a sizeof operator > whose result is an integer constant), somewhere in the entire > program there shall be exactly one external definition for the > identifier Most compilers use the .bss section for zero data, but if it uses .data instead, or if -Wl,--warn-common is used, this will cause a linking error.
* Zero temporary SASL PLAIN bufferJune McEnroe2019-11-21
|
* Use a static buffer for plainBase64June McEnroe2019-11-21
|
* Use a fixed buffer size for SASL PLAIN authenticationMichael Forney2019-11-21
| | | | | | | handleAuthenticate only sends a single AUTHENTICATE message, so according to https://ircv3.net/specs/extensions/sasl-3.1.html, its maximum length is 399. So, we know that the authentication string can be at most 299 bytes.
* Avoid a couple VLAs with constant sizeMichael Forney2019-11-20
| | | | These are really just regular arrays masquerading as VLAs.
* client: Include time.h for gmtime and strftimeMichael Forney2019-11-20
|
* Use strlcpy for sun_pathsJune McEnroe2019-11-20
| | | | | | | | | | | | My understanding is that sun_path need not be nul-terminated, but I didn't notice that SUN_LEN actually requires it. > The length of UNIX-domain address, required by bind(2) and connect(2), > can be calculated by the macro SUN_LEN() defined in <sys/un.h>. The > sun_path field must be terminated by a NUL character to be used with > SUN_LEN(), but the terminating NUL is not part of the address. Thanks to Duncan Overbruck <mail@duncano.de> for the report.
* Format milliseconds as intJune McEnroe2019-11-20
| | | | | I don't know what I was thinking. I'm expecting a number less than 1000 of course that fits in int.
* Mention the name CertFP in SASL EXTERNAL guide 1.0June McEnroe2019-11-18
|
* Document accept and exit behaviorJune McEnroe2019-11-18
|
* Remove ISUPPORT draft referenceJune McEnroe2019-11-18
| | | | | I don't actually deal with it at all other than storing them for syncing clients.
* Document inadvertent echo bugJune McEnroe2019-11-18
|
* Request NAMES on sync by defaultJune McEnroe2019-11-15
| | | | This inverts the meaning of -N!
* Add concept of passive clientsJune McEnroe2019-11-14
|
* Save and load full struct timevalJune McEnroe2019-11-14
|
* Use struct timeval for sub-second precisionJune McEnroe2019-11-14
|
* Remove server-time filter TODOJune McEnroe2019-11-14
| | | | | I think it's fine to keep it separate since it's a core function of the bouncer.
* Tweak filter regexesJune McEnroe2019-11-14
|
* Filter multi-prefixJune McEnroe2019-11-14
|
* Replace filters with regex replacesJune McEnroe2019-11-14
|
* Refactor filterUserhostInNamesJune McEnroe2019-11-13
|
* Factor out wordcpy for filtersJune McEnroe2019-11-13
|
* Revert "Test getopt_config"June McEnroe2019-11-11
| | | | | | This reverts commit c8a771828e1d5fc8c476bbd650fafcfb7ba390a8. It just feels gross... idk.
* Test getopt_configJune McEnroe2019-11-11
|
* Add userhost-in-names to manualJune McEnroe2019-11-11
|
* Skip initial NAMES parametersJune McEnroe2019-11-11
| | | | | | | Channel names can contain '!' so splitting the whole message on it won't work. I hate this code though.