All Projects → irccloud → Irccat

irccloud / Irccat

Licence: gpl-3.0
cat to IRC

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Irccat

Twitch4j
Modular Async/Sync/Reactive Twitch API Client / IRC Client
Stars: ✭ 209 (+129.67%)
Mutual labels:  webhook, irc
Trickle
600 baud pipe and terminal.
Stars: ✭ 75 (-17.58%)
Mutual labels:  pipe, unix
Kirc
A tiny IRC client written in POSIX C99.
Stars: ✭ 416 (+357.14%)
Mutual labels:  irc, unix
Lessmd
A small markdown viewer/converter for unix terminal.
Stars: ✭ 122 (+34.07%)
Mutual labels:  pipe, unix
pv
Unix Pipe Viewer (pv) utility in Node.js
Stars: ✭ 20 (-78.02%)
Mutual labels:  unix, pipe
Ngircd
Free, portable and lightweight Internet Relay Chat server
Stars: ✭ 292 (+220.88%)
Mutual labels:  irc, unix
Ipt
Interactive Pipe To: The Node.js cli interactive workflow
Stars: ✭ 783 (+760.44%)
Mutual labels:  pipe, unix
Oh
A new Unix shell.
Stars: ✭ 1,206 (+1225.27%)
Mutual labels:  unix
Mirc fish 10
"FiSH 10" - a blowfish encryption script for mIRC 7, compatible to previous FiSH scripts and other clients! Come visit us in #fish10 on EFNet!
Stars: ✭ 81 (-10.99%)
Mutual labels:  irc
Glob
Glob for C++17
Stars: ✭ 74 (-18.68%)
Mutual labels:  unix
Librepcb
A powerful, innovative and intuitive EDA tool for everyone!
Stars: ✭ 1,173 (+1189.01%)
Mutual labels:  unix
Coax
A (barely working) native Wire client for Unix
Stars: ✭ 77 (-15.38%)
Mutual labels:  unix
Hookah
A cross-platform tool for data pipelines.
Stars: ✭ 83 (-8.79%)
Mutual labels:  pipe
Cli Boot.camp
💻 command-line bootcamp adventure in your browser
Stars: ✭ 88 (-3.3%)
Mutual labels:  unix
Magtape
MagTape Policy-as-Code for Kubernetes
Stars: ✭ 85 (-6.59%)
Mutual labels:  webhook
Jobber
An alternative to cron, with sophisticated status-reporting and error-handling
Stars: ✭ 1,217 (+1237.36%)
Mutual labels:  unix
Gvcci
color extraction to turn images into 16 color palettes
Stars: ✭ 86 (-5.49%)
Mutual labels:  unix
Mojo Weixin
使用Perl语言(不会没关系)编写的个人账号微信/weixin/wechat客户端框架(非GUI),可通过插件提供基于HTTP协议的api接口供其他语言或系统调用
Stars: ✭ 1,181 (+1197.8%)
Mutual labels:  irc
Superseriousstats
superseriousstats is a fast and efficient program to create statistics out of various types of chat logs
Stars: ✭ 78 (-14.29%)
Mutual labels:  irc
Localslackirc
IRC gateway for slack, running on localhost for one user
Stars: ✭ 84 (-7.69%)
Mutual labels:  irc

irccat

Build Status

A reimplementation of irccat, the original ChatOps tool, in Go.

irccat lets you easily send events to IRC channels from scripts and other applications.

Installation

Download the latest release from Github, put the example config in /etc/irccat.json or the local directory and customise it, and run!

A Docker container is also provided on Docker Hub.

TCP → IRC

Just cat a string to the TCP port - it'll be sent to the first channel defined in your channel list:

echo "Hello world" | nc irccat-host 12345

Or specify a channel or nickname to send to:

echo "#channel Hello world" | nc irccat-host 12345
echo "@nick Hello world" | nc irccat-host 12345

You can also send to multiple recipients at once:

echo "#channel,@nick Hello world | nc irccat-host 12345

And set a channel topic:

echo "%TOPIC #channel Channel topic" | nc irccat-host 12345

IRC formatting is supported (see a full list of codes):

echo "Status is%GREEN OK %NORMAL" | nc irccat-host 12345

HTTP → IRC

HTTP listeners are configured by setting keys under http.listeners.

Generic HTTP Endpoint

"generic": true

An endpoint for sending messages similar to the TCP port. You can use curl in lieu of netcat, with -d @- to read POST data from stdin, like so:

echo "Hello world" | curl -d @- http://irccat-host/send

Generic HTTP Endpoint with authentication

"generic": {
    "secret": "my_secret"
}

Adding an optional secret allows you to require a single secret token before sending messages to the specified channels. (Using HTTPS is recommended to ensure key security)

echo "Hello world" | curl -H "Authorization: Bearer my_secret" -d @- http://irccat-host/send

Grafana Webhook

"grafana": "#channel"

Grafana alerts can be sent to /grafana. They will be sent to the channel defined in http.listeners.grafana. Note that this endpoint is currently unauthenticated.

GitHub Webhook

"github": {
	"secret": "my_secret",
	"default_channel": "#channel",
	"repositories": {
	    "irccat": "#irccat-dev"
	}
}

Receives GitHub webhooks at /github. Currently supports issues, issue comments, pull requests, pushes, and releases. The webhook needs to be configured to post data as JSON, not as form-encoded.

The destination channel for notifications from each repository is set in http.listeners.github.repositories.repo_name, where repo_name is the name of the repository, lowercased.

If http.listeners.github.default_channel is set, received notifications will be sent to this channel unless overridden in http.listeners.github.repositories. Otherwise, unrecognised repositories will be ignored.

GitHub can be configured to deliver webhooks to irccat on an organisation level which, combined with the default_channel setting, significantly reduces configuration effort compared to GitHub's old integrations system.

Prometheus Alertmanager Webhook

"prometheus": "#channel"

Receives Prometheus Alertmanager webhooks at /prometheus. They will be sent to the channel defined in http.listeners.prometheus. Note that this endpoint is unauthenticated.

IRC → Shell

You can use irccat to execute commands from IRC:

?commandname string of arguments

This will call your commands.handler script, with the following environment variables:

  • IRCCAT_COMMAND: The name of the command, without the preceding ? ("commandname" in this example)
  • IRCCAT_ARGS: The arguments provided ("string of arguments" in this example)
  • IRCCAT_NICK: Nickname of the calling user
  • IRCCAT_USER: Username of the calling user
  • IRCCAT_HOST: Hostname of the calling user
  • IRCCAT_CHANNEL: Channel the command was issued in (may be blank if issued in PM)
  • IRCCAT_RESPOND_TO: The nick or channel that the STDOUT of the command will be sent to
  • IRCCAT_RAW: The raw IRC line received

The command handler's STDOUT will be sent back to the nick or channel where the command was issued.

An example python command handler, which dispatches commands to individual shell scripts, can be found in examples/command_handler.py.

irccat will only recognise commands from users in private message if the user is joined to commands.auth_channel defined in the config.

Full list of differences from RJ/irccat

  • Supports TLS connections to IRC servers.
  • HTTP endpoint handlers.
  • Doesn't support !join, !part commands, but does automatically reload the config and join new channels.
  • Arguments are passed as environment variables to the command handler script, rather than as a single argument.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].