[BACK]Return to README.md CVS log [TXT][DIR] Up to [local] / acopm

File: [local] / acopm / README.md (download)

Revision 1.1, Sat May 8 15:42:17 2021 UTC (2 years, 11 months ago) by bountyht
Branch point for: MAIN

Initial revision

# ACOPM [![Build Status](https://travis-ci.org/AlphaChat/ACOPM.svg?branch=master)](https://travis-ci.org/AlphaChat/ACOPM)

ACOPM (The AlphaChat Open Proxy Monitor) is a from-scratch implementation of
a DNSBL and proxy checking program for IRC networks.

For similar programs in this area, look no further than HOPM (The Hybrid Open
Proxy Monitor), and the program it is based on, BOPM (The Blitzed Open Proxy
Monitor), which is no longer under development.

This implementation strives to achieve a number of goals not currently met by
either of the above programs:

- Easily readable and auditable sourcecode, written to a high standard and
  with thorough testing

- Reuse of existing libraries instead of creation of new ones for tasks such
  as event handling (libevent) and configuration file parsing (libconfig)

- Efficiency (e.g. by blocking as much as possible, and reading & processing
  as much data at a time as possible, or with the use of highly scalable I/O
  instead of plain `poll(2)` or `select(2)`)

- The use of a TLS library other than OpenSSL for communicating with HTTPS
  proxies (which may be malicious) and with IRCd (which BOPM/HOPM do not do)

- IRCv3/SASL support for identification to IRC Services at IRCd registration
  time


# WARNING

This program is currently under development. It is not production-ready and
lacks a few planned features. While it is constantly debugged and tested
from a safety point of view using tools like Valgrind, ASan, and Clang's
static analyzer (`scan-build(1)`), it has not yet been thoroughly tested from
a behaviour point of view on a production IRC network with real data.

We recommend running it in report-only mode (see the example configuration
file) so that it does not disconnect clients in error.


# Requirements

- A supported operating system (see the Notes section below)

- To speak TLS to an IRCd and scan for HTTPS CONNECT proxies, you need a
  version of ARM mbedTLS, at least 2.2, and `./configure --with-mbedtls`.

    - If you do not have it, you can use `./configure --with-mbedtls=internal`
      to build a local copy of 2.5 instead. Note that if you wish to do this,
      you must clone this project with `git(1)` directly, instead of using a
      source code tarball, because the in-tree copy of ARM mbedTLS is a Git
      sub-module

- To use the proxy scanning feature, the machine you run this software on
  must be hosted by a provider that permits port scanning of foreign networks
  and addresses. Many do not, so consult your provider before enabling this
  feature, or they may seize or destroy the machine without warning!

- To use the provided DroneBL submission script to automatically report open
  proxies to the DroneBL project for listing, you will need to obtain an RPC
  key from that project; [do so here](https://dronebl.org/rpckey_signup).
  Once you have a key, see the example configuration file for how to use it.
  However, you should not request a key if you will not be using the script!


# Notes

Before you can configure and make this program, you must execute `autogen.sh`.

Additionally, the machine will need to have the requisite libraries (libconfig
and libevent) available and installed.

This program should compile without (serious) warnings and run on any of the
following supported operating systems. Please see the Help section below for
where to report a possible issue if it does not.

- Most modern Linux distributions (Alpine, Arch, Debian, Gentoo, Ubuntu, ...)

- OpenBSD, FreeBSD, and NetBSD versions that still receive support from their
  respective developers and/or vendors


# Help

For assistance with this software, please drop by
[`#AlphaDev on AlphaChat`](https://webchat.alphachat.net/?channels=AlphaDev)