Compare commits
	
		
			6 Commits
		
	
	
		
			5165f76b7c
			...
			v1.5.0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						b358f53ec3
	
				 | 
					
					
						|||
| 
						
						
							
						
						2eb315f5c4
	
				 | 
					
					
						|||
| 
						
						
							
						
						851c2ee548
	
				 | 
					
					
						|||
| 
						
						
							
						
						f9848ed627
	
				 | 
					
					
						|||
| 
						
						
							
						
						686a39df38
	
				 | 
					
					
						|||
| 
						
						
							
						
						9cea3fca91
	
				 | 
					
					
						
@@ -1,15 +1,19 @@
 | 
				
			|||||||
cmake_minimum_required (VERSION 3.0)
 | 
					# Ubuntu 18.04 LTS and OpenBSD 6.4
 | 
				
			||||||
project (uirc3 VERSION 1.4.0 LANGUAGES C)
 | 
					cmake_minimum_required (VERSION 3.10)
 | 
				
			||||||
 | 
					project (uirc3 VERSION 1.5.0 LANGUAGES C)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Options
 | 
					# Options
 | 
				
			||||||
option (WANT_READLINE "Use GNU Readline for the UI (better)" ON)
 | 
					option (WANT_READLINE "Use GNU Readline for the UI (better)" ON)
 | 
				
			||||||
option (WANT_LIBEDIT "Use BSD libedit for the UI" OFF)
 | 
					option (WANT_LIBEDIT "Use BSD libedit for the UI" OFF)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Moar warnings
 | 
					# Moar warnings
 | 
				
			||||||
 | 
					set (CMAKE_C_STANDARD 99)
 | 
				
			||||||
 | 
					set (CMAKE_C_STANDARD_REQUIRED ON)
 | 
				
			||||||
 | 
					set (CMAKE_C_EXTENSIONS OFF)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUCC)
 | 
					if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUCC)
 | 
				
			||||||
	# -Wunused-function is pretty annoying here, as everything is static
 | 
						# -Wunused-function is pretty annoying here, as everything is static
 | 
				
			||||||
	set (wdisabled "-Wno-unused-function")
 | 
						set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wno-unused-function")
 | 
				
			||||||
	set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -Wextra ${wdisabled}")
 | 
					 | 
				
			||||||
endif ()
 | 
					endif ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Version
 | 
					# Version
 | 
				
			||||||
@@ -57,6 +61,8 @@ if ("${CMAKE_SYSTEM_NAME}" MATCHES "BSD")
 | 
				
			|||||||
	# Need this for SIGWINCH in FreeBSD and OpenBSD respectively;
 | 
						# Need this for SIGWINCH in FreeBSD and OpenBSD respectively;
 | 
				
			||||||
	# our POSIX version macros make it undefined
 | 
						# our POSIX version macros make it undefined
 | 
				
			||||||
	add_definitions (-D__BSD_VISIBLE=1 -D_BSD_SOURCE=1)
 | 
						add_definitions (-D__BSD_VISIBLE=1 -D_BSD_SOURCE=1)
 | 
				
			||||||
 | 
					elseif (APPLE)
 | 
				
			||||||
 | 
						add_definitions (-D_DARWIN_C_SOURCE)
 | 
				
			||||||
endif ()
 | 
					endif ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# -lrt is only for glibc < 2.17
 | 
					# -lrt is only for glibc < 2.17
 | 
				
			||||||
@@ -112,10 +118,16 @@ endif ()
 | 
				
			|||||||
if ((WANT_READLINE AND WANT_LIBEDIT) OR (NOT WANT_READLINE AND NOT WANT_LIBEDIT))
 | 
					if ((WANT_READLINE AND WANT_LIBEDIT) OR (NOT WANT_READLINE AND NOT WANT_LIBEDIT))
 | 
				
			||||||
	message (SEND_ERROR "You have to choose either GNU Readline or libedit")
 | 
						message (SEND_ERROR "You have to choose either GNU Readline or libedit")
 | 
				
			||||||
elseif (WANT_READLINE)
 | 
					elseif (WANT_READLINE)
 | 
				
			||||||
 | 
						pkg_check_modules (readline readline)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	# OpenBSD's default readline is too old
 | 
						# OpenBSD's default readline is too old
 | 
				
			||||||
	if ("${CMAKE_SYSTEM_NAME}" MATCHES "OpenBSD")
 | 
						if ("${CMAKE_SYSTEM_NAME}" MATCHES "OpenBSD")
 | 
				
			||||||
		include_directories (${OPENBSD_LOCALBASE}/include/ereadline)
 | 
							include_directories (${OPENBSD_LOCALBASE}/include/ereadline)
 | 
				
			||||||
		list (APPEND xC_libraries ereadline)
 | 
							list (APPEND xC_libraries ereadline)
 | 
				
			||||||
 | 
						elseif (readline_FOUND)
 | 
				
			||||||
 | 
							list (APPEND xC_libraries ${readline_LIBRARIES})
 | 
				
			||||||
 | 
							include_directories (${readline_INCLUDE_DIRS})
 | 
				
			||||||
 | 
							link_directories (${readline_LIBRARY_DIRS})
 | 
				
			||||||
	else ()
 | 
						else ()
 | 
				
			||||||
		list (APPEND xC_libraries readline)
 | 
							list (APPEND xC_libraries readline)
 | 
				
			||||||
	endif ()
 | 
						endif ()
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										15
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								NEWS
									
									
									
									
									
								
							@@ -1,3 +1,18 @@
 | 
				
			|||||||
 | 
					1.5.0 (2021-12-21) "The Show Must Go On"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 * xC: made it possible to pass the cursor position to external editors,
 | 
				
			||||||
 | 
					   in particular VIM and Emacs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 * xC: started quoting text coming from bracketed pastes,
 | 
				
			||||||
 | 
					   to minimize the risk of trying to execute filesystem paths as commands
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 * xC: fixed to work with post-2021-08-29 editline
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 * xC: extended editline's autocomplete to show all options
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 * utm-filter.lua: added Facebook's tracking parameter to the filter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1.4.0 (2021-10-06) "Call Me Scruffy Scruffington"
 | 
					1.4.0 (2021-10-06) "Call Me Scruffy Scruffington"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 * xC: made message autosplitting respect text formatting
 | 
					 * xC: made message autosplitting respect text formatting
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										47
									
								
								README.adoc
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								README.adoc
									
									
									
									
									
								
							@@ -1,18 +1,16 @@
 | 
				
			|||||||
uirc3
 | 
					uirc3
 | 
				
			||||||
=====
 | 
					=====
 | 
				
			||||||
:compact-option:
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
The unreasonable IRC trinity.  This project consists of an IRC client, daemon,
 | 
					The unreasonable IRC trinity.  This project consists of an IRC client, daemon,
 | 
				
			||||||
and bot.  It's all you're ever going to need for chatting, as long as you can
 | 
					and bot.  It's all you're ever going to need for chatting, as long as you can
 | 
				
			||||||
make do with minimalist software.
 | 
					make do with minimalist software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
All of them have these potentially interesting properties:
 | 
					They have these potentially interesting properties:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 - IPv6 support
 | 
					 - supporting IRCv3, SOCKS, IPv6, TLS (including client certificates)
 | 
				
			||||||
 - TLS support, including client certificates
 | 
					 - lean on dependencies
 | 
				
			||||||
 - lean on dependencies (with the exception of 'xC')
 | 
					 | 
				
			||||||
 - compact and arguably easy to hack on
 | 
					 - compact and arguably easy to hack on
 | 
				
			||||||
 - very permissive license
 | 
					 - maximally permissive license
 | 
				
			||||||
 | 
					
 | 
				
			||||||
xC
 | 
					xC
 | 
				
			||||||
--
 | 
					--
 | 
				
			||||||
@@ -22,11 +20,12 @@ weechat or irssi users.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
image::xC.png[align="center"]
 | 
					image::xC.png[align="center"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This is the largest application within the project.  It has most of the stuff
 | 
					This is the core of the project.  It has most of the stuff you'd expect of
 | 
				
			||||||
you'd expect of an IRC client, such as being able to set up multiple servers,
 | 
					an IRC client, such as being multiserver, a powerful configuration system,
 | 
				
			||||||
a powerful configuration system, integrated help, text formatting, CTCP queries,
 | 
					integrated help, text formatting, automatic splitting of overlong messages,
 | 
				
			||||||
automatic splitting of overlong messages, autocomplete, logging to file,
 | 
					multiline editing, bracketed paste support, decent word wrapping, autocomplete,
 | 
				
			||||||
auto-away, command aliases and basic support for Lua scripting.
 | 
					logging, CTCP queries, auto-away, command aliases, and basic support for Lua
 | 
				
			||||||
 | 
					scripting.  As a unique bonus, you can launch a full text editor from within.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
xD
 | 
					xD
 | 
				
			||||||
--
 | 
					--
 | 
				
			||||||
@@ -37,10 +36,8 @@ do it just fine.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Notable features:
 | 
					Notable features:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 - TLS autodetection (why doesn't everyone have this?), using secure defaults
 | 
					 - TLS autodetection (I'm still wondering why everyone doesn't have this)
 | 
				
			||||||
 - IRCop authentication via TLS client certificates
 | 
					 - IRCop authentication via TLS client certificates
 | 
				
			||||||
 - epoll/kqueue support; this means that it should be able to handle quite
 | 
					 | 
				
			||||||
   a number of concurrent user connections
 | 
					 | 
				
			||||||
 - partial IRCv3 support
 | 
					 - partial IRCv3 support
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Not supported:
 | 
					Not supported:
 | 
				
			||||||
@@ -58,16 +55,14 @@ and development continues over there.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
xB
 | 
					xB
 | 
				
			||||||
--
 | 
					--
 | 
				
			||||||
The IRC bot.  It builds upon the concept of my other VitaminA IRC bot.  The main
 | 
					The IRC bot.  While originally intended to be a simple rewrite of my old GNU AWK
 | 
				
			||||||
characteristic of these two bots is that they run plugins as coprocesses, which
 | 
					bot in C, it fairly quickly became a playground, and it eventually got me into
 | 
				
			||||||
allows for enhanced reliability and programming language freedom.
 | 
					writing the rest of this package.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
While originally intended to be a simple rewrite of the original AWK bot in C,
 | 
					Its main characteristic is that it runs plugins as coprocesses, allowing for
 | 
				
			||||||
it fairly quickly became a playground, and it eventually got me into writing
 | 
					enhanced reliability and programming language freedom.  Moreover, it recovers
 | 
				
			||||||
the rest of the package.
 | 
					from any crashes, and offers native SOCKS support (even though socksify can add
 | 
				
			||||||
 | 
					that easily to any program).
 | 
				
			||||||
It survives crashes, server disconnects and timeouts, and also has native SOCKS
 | 
					 | 
				
			||||||
support (even though socksify can add that easily to any program).
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Packages
 | 
					Packages
 | 
				
			||||||
--------
 | 
					--------
 | 
				
			||||||
@@ -87,7 +82,7 @@ acting up and I have no clue about fixing it.
 | 
				
			|||||||
 $ git clone --recursive https://git.janouch.name/p/uirc3.git
 | 
					 $ git clone --recursive https://git.janouch.name/p/uirc3.git
 | 
				
			||||||
 $ mkdir uirc3/build
 | 
					 $ mkdir uirc3/build
 | 
				
			||||||
 $ cd uirc3/build
 | 
					 $ cd uirc3/build
 | 
				
			||||||
 $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug \
 | 
					 $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=RelWithDebInfo \
 | 
				
			||||||
            -DWANT_READLINE=ON -DWANT_LIBEDIT=OFF -DWANT_LUA=ON
 | 
					            -DWANT_READLINE=ON -DWANT_LIBEDIT=OFF -DWANT_LUA=ON
 | 
				
			||||||
 $ make
 | 
					 $ make
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -95,9 +90,9 @@ To install the application, you can do either the usual:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 # make install
 | 
					 # make install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Or you can try telling CMake to make a package for you.  For Debian it is:
 | 
					Or you can try telling CMake to make a package for you:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 $ cpack -G DEB
 | 
					 $ cpack -G DEB  # also supported: RPM, FreeBSD
 | 
				
			||||||
 # dpkg -i uirc3-*.deb
 | 
					 # dpkg -i uirc3-*.deb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Usage
 | 
					Usage
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
--
 | 
					--
 | 
				
			||||||
-- utm-filter.lua: filter out Google Analytics bullshit from URLs
 | 
					-- utm-filter.lua: filter out Google Analytics bullshit etc. from URLs
 | 
				
			||||||
--
 | 
					--
 | 
				
			||||||
-- Copyright (c) 2015, Přemysl Eric Janouch <p@janouch.name>
 | 
					-- Copyright (c) 2015 - 2021, Přemysl Eric Janouch <p@janouch.name>
 | 
				
			||||||
--
 | 
					--
 | 
				
			||||||
-- Permission to use, copy, modify, and/or distribute this software for any
 | 
					-- Permission to use, copy, modify, and/or distribute this software for any
 | 
				
			||||||
-- purpose with or without fee is hereby granted.
 | 
					-- purpose with or without fee is hereby granted.
 | 
				
			||||||
@@ -18,6 +18,7 @@
 | 
				
			|||||||
-- A list of useless URL parameters that don't affect page function
 | 
					-- A list of useless URL parameters that don't affect page function
 | 
				
			||||||
local banned = {
 | 
					local banned = {
 | 
				
			||||||
	gclid        = 1,
 | 
						gclid        = 1,
 | 
				
			||||||
 | 
						fbclid       = 1,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	utm_source   = 1,
 | 
						utm_source   = 1,
 | 
				
			||||||
	utm_medium   = 1,
 | 
						utm_medium   = 1,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user