about summary refs log tree commit diff
path: root/chat.c (follow)
Commit message (Collapse)AuthorAge
...
* OpenBSD: unveil XDG directories only when neededKlemens Nanni2021-06-06
| | | | | | | | | | | | | | | The (not perfectly obvious) way catgirl crafts directories gets triggered by unveilAll() even if no passed option requires filesystem access: $ env -i TERM=xterm ./catgirl -h irc.hackint.eu -R -n nobody catgirl: HOME unset Here unveil(2) is used due to the "restrict" option, but besides terminfo(5) and certificates catgirl does not need any other files, yet it tries to init the data path -- passing XDG_DATA_HOME=/var/empty makes above invocation work showing how the then successful path setup is not required. Fix this by not unveiling the unneeded data path in the first place.
* Hash the username in kiosk modeJune McEnroe2021-05-27
| | | | So that the first part of $SSH_CLIENT can be passed as username.
* Disable nick and channel colors with hash bound 0June McEnroe2021-03-08
|
* Error if hash bound is less than 2June McEnroe2021-02-25
| | | | Bad things happen otherwise.
* Change default timestamp format to %XJune McEnroe2021-01-27
| | | | This respects the user's locale settings.
* Add toggleable display of timestampsJune McEnroe2021-01-27
|
* Drop filesystem access iff possibleKlemens Nanni2021-01-23
| | | | | | | Log files and state save/restore both require read/write access to the filesystem, both during start and exit. If neither features are used, catgirl may run with "stdio tty".
* Drop exec capability iff restrictedKlemens Nanni2021-01-23
| | | | Nothing must be executed when running /copy, et al.
* Drop network capability after ircConnect()Klemens Nanni2021-01-23
| | | | | | catgirl has no reconnect feature and generally must not do anything but read/write from/to the connected socket which does not require "inet" or "dns" promises.
* Call pledge(2) after unveil(2)Klemens Nanni2021-01-23
| | | | | | Simplify logic, be more idiomatic and finalize by pledging after all unveiling is done by omitting the "unveil" promise and thereby not allowing further calls to it.
* Separate kiosk mode from restrict modeJune McEnroe2021-01-23
| | | | | | | | | | | Restrict mode will focus on sandboxing, while kiosk will continue to restrict IRC access through a public kiosk. Kiosk mode without restrict mode allows execution of man 1 catgirl with /help, assuming external sandboxing. The /list and /part commands are also added to the list of disabled commands in kiosk mode, since they are pointless without access to /join.
* Add -I highlight option and /highlightJune McEnroe2021-01-16
|
* Rename ignore code to filterJune McEnroe2021-01-16
|
* Sandbox with unveil(2) on OpenBSD in restricted modeJune McEnroe2021-01-10
| | | | I wrote all this in vi and it was nice.
* Print chain to stdout with -oJune McEnroe2021-01-10
|
* Exit immediately when using -oJune McEnroe2021-01-10
|
* Add -o and -t options to trust self-signed certificatesJune McEnroe2021-01-09
|
* Allow configuring the upper bound of the hash functionJune McEnroe2021-01-09
| | | | | | | This allows limiting the nick colors used to the 16-color terminal set without modifying the TERM environment variable. Produces different results from just using the default configuration in a 16-color terminal, but what can you do?
* Sandbox with pledge(2) on OpenBSDJune McEnroe2021-01-06
|
* Split /exec lines by \r as well as \nJune McEnroe2020-11-24
| | | | | This fixes local rendering of /exec toilet --irc, which outputs \r\n line endings.
* Avoid eating C-c while connectingJune McEnroe2020-10-12
| | | | | Split UI initialization into two steps either side of the call to connect, so that C-c works as interrupt while it's blocked.
* Use configPath to load TLS cert/privJune McEnroe2020-08-20
|
* Say "OpenSSL" in additional permission noticesJune McEnroe2020-08-04
| | | | LibreSSL is "a modified version of that library".
* Bump ParamCap to 254June McEnroe2020-06-24
| | | | | | | | | | | | Apparently IRCds have decided that the 15-parameter limit doesn't matter anymore. 254 is the maximum number of single-byte parameters (following a single-byte command) which fit in a 512-byte CR-LF-terminated line. When everyone decides that the 512-byte line length limit doesn't matter either, I will delete my software and people can use some JavaScript garbage instead. This makes struct Message 2080 bytes, but there's only ever one or two of them around at once. Avoid passing it by value to handle.
* Add additional permission for linking with LibreSSLJune McEnroe2020-06-08
| | | | https://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs
* Revert "Send blank line after 10 minutes idle"June McEnroe2020-05-18
| | | | | | This reverts commit 1d5c4a5e346f0a295818441eb37697be283130ec. This is fixed instead by pounce using TCP keepalive.
* Use a for loop for getoptJune McEnroe2020-04-02
|
* Generate short option string with a loopJune McEnroe2020-04-02
| | | | | Also change the way option structs are initialized so that the array sorts the same way as the switch statement.
* Add /ignore message filtering patternsJune McEnroe2020-03-31
|
* Replace some declaration; while loops with for loopsJune McEnroe2020-03-30
| | | | | I should have been using this for getopt loops already but the call here is slightly too long to fit on one line as a for loop.
* Add text macrosJune McEnroe2020-03-30
|
* Add logging functionsJune McEnroe2020-03-25
| | | | The mkdir dance is a bit awkward...
* Assume worst case for unknown user and host in splitMessageJune McEnroe2020-03-23
| | | | | | The default USERLEN of 9 doesn't have a great source, the RFC only says that nicks are length 9, so my assumption is that usernames are not longer.
* Send blank line after 10 minutes idleJune McEnroe2020-03-17
| | | | | | | Without this, I was having catgirl "time out" from pounce's POV, but without catgirl noticing anything... I still don't understand this. Been using this fix for a couple weeks though and it stopped happening, and it's otherwise harmless, but yikes.
* Various small cleanupsJune McEnroe2020-02-16
| | | | Haven't really gone through ui.c yet.
* Set defaults for various types of modesJune McEnroe2020-02-15
| | | | | | | These are actually from RFC 1459, since that seems to be the more likely lowest common denominator, so I should maybe it it to STANDARDS (along with ircdocs' section on ISUPPORT). RFC 2812 has a lot of stuff that isn't currently used.
* Replace small integers in size_t with uintJune McEnroe2020-02-15
|
* Separate network info from selfJune McEnroe2020-02-15
|
* Add /execJune McEnroe2020-02-13
|
* Rename procPipe to utilPipeJune McEnroe2020-02-13
|
* Add -g for generating certificatesJune McEnroe2020-02-13
| | | | Copied from pounce.
* Explicitly close the TLS connectionJune McEnroe2020-02-13
| | | | Just to be nice.
* Add -N flag for notificationsJune McEnroe2020-02-12
|
* Implement source address selectionmultiplexd2020-02-13
| | | | | | This commit adds a '-S' command line option and a "bind" configuration file option to specify the source address to bind to when connecting to the IRC server.
* Allow for arguments to open/copy utilitiesJune McEnroe2020-02-12
|
* Add -R restricted flagJune McEnroe2020-02-11
|
* Add startup GPLv3 note and URLJune McEnroe2020-02-11
| | | | I am a degenerate.
* Set self.nick to * initiallyJune McEnroe2020-02-11
| | | | | | | Allows removing a bunch of checks that self.nick is set, and it's what the server usually calls you before registration. Never highlight notices as mentions.
* Synthesize a QUIT message to handle on exitJune McEnroe2020-02-10
| | | | So that the end of a saved buffer contains the self quit.
* Factor out XDG base directory codeJune McEnroe2020-02-10
| | | | | And add warnings to configOpen, since that's the only way to be accurate if a weird error occurs.