Commit Graph

628 Commits

Author SHA1 Message Date
Přemysl Eric Janouch fdeb550ee0 degesch: fix backlog limit
It was effectively infinite.
2016-01-15 22:11:05 +01:00
Přemysl Eric Janouch c4a18ec8a7 degesch: fix and simplify screen handling
Now with less madness.
2016-01-15 05:40:20 +01:00
Přemysl Eric Janouch d0db1a6cdc degesch: enforce fullscreen buffers
Probably long overdue.

Now we actually look like something resembling a regular IRC client.
2016-01-15 05:12:03 +01:00
Přemysl Eric Janouch 9333081178 degesch: option for fullscreen buffers 2016-01-15 05:09:42 +01:00
Přemysl Eric Janouch b7c9e8ca23 degesch: make backlog limit configurable 2016-01-15 05:09:42 +01:00
Přemysl Eric Janouch f39e2a4bc8 degesch: Lua: add autocomplete hooks 2016-01-15 02:39:10 +01:00
Přemysl Eric Janouch 56858a97dd degesch: Lua: allow simulating user input
Also added UTF-8 validation to buffer:log() while I'm at it.
2016-01-14 03:34:29 +01:00
Přemysl Eric Janouch 331d1842b9 Bump liberty, shuffle some code 2016-01-14 03:26:02 +01:00
Přemysl Eric Janouch 32f719dec7 degesch: Lua: pass hostname to on_connected 2016-01-09 06:19:54 +01:00
Přemysl Eric Janouch 0b92e9210c degesch: Lua: set sockets to nonblocking 2016-01-09 05:47:24 +01:00
Přemysl Eric Janouch 092e9b5101 Bump liberty 2016-01-09 05:27:45 +01:00
Přemysl Eric Janouch faa0c989f8 degesch: Lua: actually allow filtering out input 2016-01-09 05:05:46 +01:00
Přemysl Eric Janouch 53e72dd12d degesch: Lua: provide a traceback on load error 2016-01-09 05:01:50 +01:00
Přemysl Eric Janouch 83c14ba264 degesch: Lua: fix plugin configuration names 2016-01-09 05:01:50 +01:00
Přemysl Eric Janouch 64143a5957 degesch: Lua: fix luaL_ref() usage 2016-01-09 05:01:50 +01:00
Přemysl Eric Janouch aca153f575 degesch: Lua: fix configuration loading
Not the cleanest solution but it has to do for now.
2016-01-09 05:01:50 +01:00
Přemysl Eric Janouch 79f46752d4 degesch: make sure newlines are output correctly 2016-01-08 08:40:40 +01:00
Přemysl Eric Janouch 2a180ee084 degesch: Lua: finish implementation of connection 2016-01-07 22:49:53 +01:00
Přemysl Eric Janouch 6754c59890 degesch: Lua: avoid resource leak
If a connector's on_success callback fails, we need to destroy the connection.
2016-01-07 22:49:53 +01:00
Přemysl Eric Janouch 376bbea249 Factor out socket_io_try_{read,write}()
To be reused in Lua connection API.
2016-01-07 22:49:53 +01:00
Přemysl Eric Janouch a5ac0d24b8 degesch: fix handling of input editor death 2016-01-07 22:49:53 +01:00
Přemysl Eric Janouch 1d3910fd8e degesch: fix switching of buffers by command
Readline used to erase the new buffer's contents.

Defer processing.
2016-01-07 22:49:49 +01:00
Přemysl Eric Janouch a259e96405 degesch: Lua: fix a resource leak 2016-01-06 00:23:54 +01:00
Přemysl Eric Janouch a7be2bf160 degesch: refactor Lua
And fix handling of nil returns from filter callbacks.
2016-01-05 23:19:28 +01:00
Přemysl Eric Janouch e1c7b8dcaf degesch: Lua: halfplement a connector wrapper
You can't do anything reasonable with the socket now.
2016-01-05 22:12:22 +01:00
Přemysl Eric Janouch e9b39a1ef7 degesch: Lua: allow arbitrary userdata properties 2016-01-04 23:14:38 +01:00
Přemysl Eric Janouch a227060383 degesch: Lua: use references for hook callbacks
Don't associate the callback with the full userdata object,
we'll need this for something else.
2016-01-04 22:24:05 +01:00
Přemysl Eric Janouch 4832a99461 degesch: add basic autocomplete for /topic 2016-01-04 22:06:29 +01:00
Přemysl Eric Janouch aeb047260f Bump liberty, enable TLS SNI
Involves some rewrites to fit the new APIs.

SNI has been implemented Mostly just because we can, I don't think it's
widely in use and kike doesn't support this feature of the protocol either.
2016-01-04 01:12:42 +01:00
Přemysl Eric Janouch 1a73f1f1d7 degesch: fix a memory leak under libedit 2016-01-01 02:00:02 +01:00
Přemysl Eric Janouch 8564297e2a degesch: fix segfault on /quit under libedit 2015-12-31 23:42:43 +01:00
Přemysl Eric Janouch 74bed4bc02 degesch: Alt-Tab switch to the last buffer 2015-12-31 05:07:28 +01:00
Přemysl Eric Janouch 8f229f41e1 degesch: avoid fileno() after fork()
It's not guaranteed to be async-signal-safe, which may matter once
we start using threads. And it's also cleaner to just pass the FD.
2015-12-31 05:07:28 +01:00
Přemysl Eric Janouch b4d6decc06 degesch: typos 2015-12-31 03:57:09 +01:00
Přemysl Eric Janouch 04f87b7587 degesch: enable configuration in Lua plugins 2015-12-28 04:08:45 +01:00
Přemysl Eric Janouch b7dd384048 degesch: little step towards localisation
We don't use LC_MESSAGES, though, so it doesn't really matter as of now.

liberty currently isn't prepared for non-ASCII errors or filenames,
and just silently expects everything to be in the same all-compatible
encoding.  degesch further expects the encoding to be UTF-8.

All strings should ideally be converted to UTF-8 as soon as possible.
2015-12-25 21:36:56 +01:00
Přemysl Eric Janouch e101afab38 degesch: allow launching an editor for input
Useful for editing multiline text (such as making it single-line).

Some refactoring and cleanup.
2015-12-25 05:20:50 +01:00
Přemysl Eric Janouch 37e9165548 degesch: better handling of terminal suspension 2015-12-25 05:03:02 +01:00
Přemysl Eric Janouch 25bb7a978d degesch: refactoring 2015-12-25 05:02:58 +01:00
Přemysl Eric Janouch 7d531a9bbf Bump liberty 2015-12-13 22:44:27 +01:00
Přemysl Eric Janouch 1c009f394a Bump liberty 2015-12-11 03:01:25 +01:00
Přemysl Eric Janouch 620418fa3b degesch: add a test for configuration 2015-12-10 21:26:17 +01:00
Přemysl Eric Janouch 28e4bc1399 degesch: add more tests, bump liberty
The UTF-8 common prefix test discovered a bug in UTF-8 parsing.

Made $[1-9] in aliases insert nothing if there's no argument at that index.
2015-12-10 20:04:26 +01:00
Přemysl Eric Janouch 86d7b7aed5 degesch: add a unit test for message wrapping algo 2015-12-09 21:07:01 +01:00
Přemysl Eric Janouch 07201b7bdc degesch: compactify word wrapping algorithm 2015-12-08 23:24:40 +01:00
Přemysl Eric Janouch 2ae916fc1a degesch: clarify text wrapping algorithm 2015-12-08 22:11:11 +01:00
Přemysl Eric Janouch 2ba8908024 degesch: fix timer hook resource leak 2015-11-29 17:55:35 +01:00
Přemysl Eric Janouch 4a287a724e degesch: Lua: add a "server" property to buffers 2015-11-24 21:52:31 +01:00
Přemysl Eric Janouch 87e1236b30 degesch: Lua: add a "buffer" property to servers 2015-11-24 21:42:08 +01:00
Přemysl Eric Janouch e921a619b0 degesch: readline fixups
When a new buffer was created automatically (channel was joined),
we didn't bother to erase the current line buffer.
2015-11-24 03:04:14 +01:00
Přemysl Eric Janouch 25282cfe23 degesch: fix a segfault-inducing typo in hooks 2015-11-24 02:32:11 +01:00
Přemysl Eric Janouch 79140c3abc degesch: make auto-away less spammy 2015-11-23 08:33:58 +01:00
Přemysl Eric Janouch 4d11be0b85 degesch: implement auto-away 2015-11-22 23:12:18 +01:00
Přemysl Eric Janouch f69edd6606 degesch: optimize prompt changes
We used to do lots of unnecessary redisplays.
2015-11-22 17:49:27 +01:00
Přemysl Eric Janouch 385de6f4fe degesch: better terminal suspension
Don't print date changes while something else is using the terminal.
2015-11-22 16:43:21 +01:00
Přemysl Eric Janouch 0fdffa0e50 degesch: fix hook debug logs
Obviously we can receive back the same pointer with different contents.

I just didn't think of that.
2015-11-22 03:01:38 +01:00
Přemysl Eric Janouch 36c59ff375 Enable TCP_NODELAY 2015-11-22 02:12:52 +01:00
Přemysl Eric Janouch d135728424 degesch: pop() the Lua error in timer dispatch 2015-11-21 21:29:56 +01:00
Přemysl Eric Janouch 02c7c6dcd6 degesch: export timers to Lua 2015-11-21 19:48:15 +01:00
Přemysl Eric Janouch 364eb009ca degesch: hook implementation cleanup 2015-11-21 19:00:56 +01:00
Přemysl Eric Janouch d4cbc576e2 degesch: typos, cleanups 2015-11-21 19:00:56 +01:00
Přemysl Eric Janouch cd8e3d6d41 degesch: make Ctrl-L also fix window size 2015-11-21 14:09:34 +01:00
Přemysl Eric Janouch fa965a85e4 degesch: make /buffer with no arguments print list 2015-11-21 14:09:34 +01:00
Přemysl Eric Janouch 59a4c356dd degesch: export input and IRC hooks 2015-11-21 14:09:34 +01:00
Přemysl Eric Janouch c912726f49 degesch: add ability to hook IRC and user input
We're going to make this available to the Lua API soon.
2015-11-21 14:09:34 +01:00
Přemysl Eric Janouch fbfe0ba18a degesch: add a stubbed Lua plugin loader 2015-11-21 14:09:33 +01:00
Přemysl Eric Janouch 5ee210a5b7 degesch: stubplement plugins 2015-11-21 14:09:33 +01:00
Přemysl Eric Janouch 5d55d7f6de degesch: refcountify "struct {buffer,server}" 2015-11-19 19:11:35 +01:00
Přemysl Eric Janouch b952fc1f6d degesch: extend weak pointers 2015-11-18 23:03:21 +01:00
Přemysl Eric Janouch 89065e4d34 degesch: fix highlights 2015-11-17 00:06:48 +01:00
Přemysl Eric Janouch 281ef2e93e degesch: split input text at newlines
This makes pasting multiline text possible again.
2015-11-15 15:56:33 +01:00
Přemysl Eric Janouch 9b22d72fd1 Extend split_str() for multiple split chars 2015-11-15 15:56:10 +01:00
Přemysl Eric Janouch f11635ed7f degesch: better SIGTSTP handling 2015-11-15 15:36:03 +01:00
Přemysl Eric Janouch a1e47ca4c9 degesch: cleanup
Unnecessary oneliner function.
2015-11-15 01:48:10 +01:00
Přemysl Eric Janouch 6c7a2ce3c8 degesch: unseen PMs show up as highlights
I used to miss them.
2015-11-15 01:43:00 +01:00
Přemysl Eric Janouch 153d8c55d9 degesch: don't spam with all unseen messages
On high-traffic channels, it has shown to take quite some time.
2015-11-15 01:32:49 +01:00
Přemysl Eric Janouch d14bc2df53 degesch: have just one input buffer 2015-11-15 01:23:32 +01:00
Přemysl Eric Janouch d8299a1231 degesch: enable and use bracketed paste mode
urxvt, xterm and maybe others support quoting text pasted by the user
from clipboard, which prevents leading tabs from changing into
highlights.

The handling isn't perfect so far, just wrong in a different way, as
we mishandle newlines.
2015-11-15 01:07:12 +01:00
Přemysl Eric Janouch 465c2e4082 degesch: mv input_insert{_c,}() 2015-11-15 01:07:09 +01:00
Přemysl Eric Janouch 2a97c01215 degesch: make the libedit backend work again 2015-11-15 01:07:05 +01:00
Přemysl Eric Janouch 152ba0847d Add a CMake target for clang-tidy 2015-11-13 09:22:48 +01:00
Přemysl Eric Janouch fe88e30bf5 degesch: fix beeping on "unimportant" PM events
Which in practice means stop beeping on quits in PM buffers.
2015-10-30 23:49:43 +01:00
Přemysl Eric Janouch a8a852d4b3 degesch: fix reconnect delays 2015-10-28 03:46:41 +01:00
Přemysl Eric Janouch e41f503202 degesch: add an /oper command
Mostly just because bitlbee suggested it to me and it didn't work.
2015-10-01 21:39:47 +02:00
Přemysl Eric Janouch 762aaffecf degesch: make text attributes toggle formatting
Instead of just setting it on.

Fixes bitlbee.
2015-10-01 21:06:34 +02:00
Přemysl Eric Janouch bc54bf520d degesch: add Meta-H to open the full log file
As opposed to just the visible backlog.
2015-09-24 16:16:31 +02:00
Přemysl Eric Janouch 11aaf1b325 degesch: fix logging of outgoing status messages
"/msg @#test test" would log "MSG(): test"
2015-09-24 15:41:39 +02:00
Přemysl Eric Janouch 5ca07656a1 degesch: fix handling of status messages
That is, messages using the STATUSMSG feature.
2015-09-24 15:41:39 +02:00
Přemysl Eric Janouch f20c6fb28e degesch: fix logging of RPL_INVITING 2015-09-24 15:41:39 +02:00
Přemysl Eric Janouch 1613e75a48 mv 'struct config_item'{_,}
Finally we can get rid of the trailing underscore.
2015-08-17 00:13:05 +02:00
Přemysl Eric Janouch 4ae95be9db degesch: add self to completion in server buffers 2015-08-13 00:23:56 +02:00
Přemysl Eric Janouch 328bf9af1e degesch: display ERROR messages
So that the user knows he was killed.
2015-08-12 23:21:11 +02:00
Přemysl Eric Janouch ce83f8244c degesch: don't ignore data right before an EOF 2015-08-12 23:20:46 +02:00
Přemysl Eric Janouch 8a8ff11887 degesch: don't use black for nicks on 256-color
Except for self.
2015-08-11 21:38:28 +02:00
Přemysl Eric Janouch 131aee6f08 degesch: update comments 2015-08-10 23:24:57 +02:00
Přemysl Eric Janouch 07f6d0b350 degesch: enable bright backgrounds on 8-color terms 2015-08-10 23:07:05 +02:00
Přemysl Eric Janouch 1cc8656368 degesch: precompute the filtered color cube 2015-08-10 07:53:03 +02:00
Přemysl Eric Janouch 4c81112840 degesch: show CTCPs to channels as such 2015-08-10 07:39:43 +02:00
Přemysl Eric Janouch 5dda5661ae degesch: send after-connect joins more cleverly 2015-08-10 07:35:42 +02:00
Přemysl Eric Janouch 628facf286 degesch: properly flush the read marker 2015-08-10 00:09:43 +02:00
Přemysl Eric Janouch 7225b68f74 degesch: safer defaults for backlog helper 2015-08-09 15:05:49 +02:00
Přemysl Eric Janouch e188de5501 degesch: don't show joins etc. as new activity
It's mostly just spam that shouldn't get your attention.
2015-08-08 21:19:25 +02:00
Přemysl Eric Janouch cdf6544c94 degesch: use formatting in the backlog
It's a rather crude solution to just pipe the raw terminfo strings
to less but hey, it works.
2015-08-08 20:44:24 +02:00
Přemysl Eric Janouch a28528d260 degesch: add backlog/scrollback functionality
Finally!  I went with possibly the simplest solution, which is to
run less, instead of badly reimplementing its functionality.
2015-08-08 20:44:24 +02:00
Přemysl Eric Janouch d207c90577 degesch: properly flush formatting resets 2015-08-06 23:58:42 +02:00
Přemysl Eric Janouch 2afc9f99c3 degesch: better name resolution failure messages 2015-08-06 23:53:00 +02:00
Přemysl Eric Janouch 4ab247ead0 degesch: fix /server usage 2015-08-06 23:27:35 +02:00
Přemysl Eric Janouch 1dd464f35c degesch; fix handling of CTCP requests 2015-08-06 23:23:56 +02:00
Přemysl Eric Janouch 955b3728a3 degesch: don't send PART on /close when not joined 2015-08-06 21:58:34 +02:00
Přemysl Eric Janouch cfc78ffdf0 Fix OpenBSD build 2015-07-30 18:29:12 +02:00
Přemysl Eric Janouch 637a3d2bf7 More SSL -> TLS renaming 2015-07-28 20:31:42 +02:00
Přemysl Eric Janouch a912b3f28c degesch: use hopefully better colors for nicks
- exclude white from the 16-color range
 - use colors from the 256-color cube when available
2015-07-27 01:29:44 +02:00
Přemysl Eric Janouch 27cd8b3a63 degesch: fix memory leak 2015-07-27 00:08:28 +02:00
Přemysl Eric Janouch 2bde385dc7 degesch: order the nicknames in /names 2015-07-26 23:27:39 +02:00
Přemysl Eric Janouch 74c9759932 degesch: make showing all prefixes optional 2015-07-26 22:44:34 +02:00
Přemysl Eric Janouch f622107592 degesch: fix regression in alias expansion 2015-07-23 21:44:04 +02:00
Přemysl Eric Janouch 67b67cb171 Fix immediate connects
Apparently FreeBSD can do this while Linux can not.
2015-07-23 10:17:28 +02:00
Přemysl Eric Janouch 7be129b72c degesch: fix one last SOCKS corner case 2015-07-23 04:56:40 +02:00
Přemysl Eric Janouch 4a89572089 SOCKS: various fixes to API and code 2015-07-23 04:26:59 +02:00
Přemysl Eric Janouch 318b7400d1 Rewrite socks to async
Not quite working yet, however it's a massive and important change.
2015-07-20 23:56:31 +02:00
Přemysl Eric Janouch 553f06d3ec degesch: fix literal IPv6 server addresses 2015-07-19 23:30:28 +02:00
Přemysl Eric Janouch b947a2e4bc degesch: add a "command_delay" option to servers
E.g. for channels that are for registered users only.
2015-07-18 14:16:10 +02:00
Přemysl Eric Janouch 5c0a2975e8 degesch: refactor and fix reconnect delays 2015-07-18 13:39:30 +02:00
Přemysl Eric Janouch baacb27d4b degesch: allow executing a command when registered
To authenticate with NickServ or whatever.
2015-07-18 13:27:50 +02:00
Přemysl Eric Janouch b3acc4904f degesch: add exponential reconnect backoff 2015-07-17 21:23:01 +02:00
Přemysl Eric Janouch 403dbc83ab degesch: allow multiple commands in aliases
Separated by ;, which can be escaped as $;
2015-07-16 22:12:59 +02:00
Přemysl Eric Janouch 1b56b4ee72 degesch: skip unrecognized config items in /set 2015-07-16 20:40:10 +02:00
Přemysl Eric Janouch 6f3b48e4eb SSL -> TLS; fix error handling 2015-07-15 23:34:36 +02:00
Přemysl Eric Janouch c8496a83d8 Unfuck OpenSSL error messages
We still take just the first error message in the queue, though.
2015-07-15 23:11:12 +02:00
Přemysl Eric Janouch 6351ff387e degesch: set a limit on backlog entries
So that buffers don't grow indefinitely in memory.
2015-07-15 23:05:45 +02:00
Přemysl Eric Janouch bcbbdbc4bc degesch: fix some encoding issues 2015-07-15 22:59:55 +02:00
Přemysl Eric Janouch b257340ad2 Fix compiler warning 2015-07-15 22:57:12 +02:00
Přemysl Eric Janouch ad08545f8f Bump liberty 2015-07-15 22:56:53 +02:00
Přemysl Eric Janouch d6a4ca1434 Bump liberty, fix map iterators 2015-07-14 22:25:30 +02:00
Přemysl Eric Janouch 955552f4fa degesch: implement /server rename 2015-07-14 21:16:35 +02:00
Přemysl Eric Janouch 0c5591fed2 degesch: fix server loading 2015-07-14 07:49:28 +02:00
Přemysl Eric Janouch 855a9d81ba degesch: simplify check_server_name_for_addition() 2015-07-14 07:29:30 +02:00
Přemysl Eric Janouch c573435996 degesch: implement /server remove 2015-07-14 06:50:39 +02:00
Přemysl Eric Janouch 880a8ef080 degesch: finally fix rearm_date_change_timer() 2015-07-14 06:43:15 +02:00
Přemysl Eric Janouch 6f966d4aee degesch: factor out buffer_remove_safe() 2015-07-14 06:11:14 +02:00
Přemysl Eric Janouch 1285ba2d13 degesch: make "/server" alone list all servers 2015-07-13 20:51:23 +02:00
Přemysl Eric Janouch a3074ef83d degesch: fix the date change timer 2015-07-13 02:39:28 +02:00
Přemysl Eric Janouch 606f0b1faa degesch: fix /server add 2015-07-13 00:13:14 +02:00
Přemysl Eric Janouch e86dc2fbcd Disable SSL 2 and 3 2015-07-13 00:13:14 +02:00
Přemysl Eric Janouch de61f9ce5b degesch: don't save on quit after a parse error 2015-07-13 00:13:14 +02:00
Přemysl Eric Janouch efe5112a8f degesch: force a TLS handshake
This is sort of a no-op.
2015-07-13 00:13:10 +02:00
Přemysl Eric Janouch fc87d54649 Cleanup 2015-07-12 17:39:29 +02:00
Přemysl Eric Janouch 3c1bbbc513 degesch: add an "ssl_ciphers" option to servers 2015-07-12 17:15:33 +02:00
Přemysl Eric Janouch 88b2200051 degesch: log certificate verification errors
At last, there should be no more serious issues with TLS.
2015-07-12 06:03:28 +02:00
Přemysl Eric Janouch d5a153bbe3 Call ERR_clear_error() where necessary 2015-07-12 05:30:13 +02:00