Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
/hiiPublic

A file-based IRC client inspired by ii

License

NotificationsYou must be signed in to change notification settings

nmeum/hii

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A file-based IRC client inspired byii(1).

Motivation

I originally only intended to write a frontend for ii instead ofcompletely rewriting it from scratch. However, while working on thefrontend I noticed that I couldn't implement certain features in thefrontend without changes to the backend (ii). I briefly consideredpatching ii but ultimately decided for a rewrite. During the rewrite,various features have been implemented that are not supported by ii(e.g. various IRCv3 features, builtin TLS and IPv6 support, et cetera).

Status

I currently consider hii feature complete and use it myself daily incombination withinsomnia and a per-serverrunituser service for automaticallystarting and supervising hii processes.

Features

New features (compared to ii):

  • Memory safety
  • A proper IRC protocol implementation throughgirc
  • Support for automatically joining channels on startup
  • Support forIRCv3.2 monitoring
  • Support for a per-channel nick list using a UNIX domain socket
  • Support for recording messages mentioning the users
  • Support for authentication using TLS client certificates (CertFP)
  • Built-in TLS support
  • Built-in IPv6 support

Features intentionally not implemented:

  • Automatic authorization using thePASS command isnot implemented (ii-k flag).
  • Shortcut commands, e.g./j. If you need them write yourself a shellscript for mapping shortcut commands to real commands.

While hii has more features than ii it is still supposed to have a limitfeature set and shouldn't"expand until it can read mail".

Compatibility with ii

Backwards compatibility with ii wasn't a goal. While the directorystructure is mostly backwards compatible everything else is pretty muchdifferent. This is the case because proper backwards compatibility wouldhave been a lot of work and I personally didn't need it.

Installation

The program can be installed either usinggo install ormake.

go install

To install to the program usinggo install run the following command:

$ go install github.com/nmeum/hii@latest

Note that this will not install additional documentation files, e.g. man pages.

make

To install to the program usingmake run the following commands:

$ git clone https://github.com/nmeum/hii.git$ cd hii$ make && make install

This will also install documentation files to the correct location andmay thus be preferable when packaging this software for a distribution.

FAQ

Q: Sockets cannot be used with standard utilities such asgrep(1).Why are nick names served using a unix domain socket anyhow?

A: Several ways of implementing a nick list have been considered.Using a regular file has various obvious disadvantages. For instance,the file would need to be truncated every time the nick list changes,which causes a lot of file system operation. Using a FUSE for servingthe nick list was also briefly considered, however, while this wouldallow interaction with standard utilities it would require linkingagainst FUSE and would complicate things quite a bit. Serving nicksusing a unix domain socket seemed to be a reasonable compromise.

Q: Why are mentions recorded in a separate file? Can't this beimplemented using inotify, kqueue, … in the frontend?

A: While this might certainly be possible it would complicate thefrontend code quite a bit. Implementing this in the backend was fairlyeasy and only required a few changes. Additionally, neither kqueue norinotify are mandated by POSIX.

Q: Can feature X/Y/Z be added to hii?

A: No.

License

This program is free software: you can redistribute it and/or modify itunder the terms of the GNU General Public License as published by theFree Software Foundation, either version 3 of the License, or (at youroption) any later version.

This program is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU GeneralPublic License for more details.

You should have received a copy of the GNU General Public License alongwith this program. If not, seehttp://www.gnu.org/licenses/.


[8]ページ先頭

©2009-2025 Movatter.jp