ZNC Push ======== ZNC Push is a module for [ZNC][] that will send notifications to multiple push notification services for any private message or channel highlight that matches a configurable set of conditions. ZNC Push current supports the following services: * [Boxcar][] * [Boxcar 2][] * [Notify My Android][] (NMA) * [Pushover][] * [Prowl][] * [Supertoasty][] * [PushBullet][] * [Airgram][] * [Faast][] * Custom URL GET requests This project is still a Work In Progress, but should be functional enough and stable enough for everyday usage. Users are more than welcome to submit feature requests or patches for discussion or inclusion. Bug reports and feature requests can be submitted to [the repository issues list][issues], or sent via email. For full functionality, this module requires ZNC version 0.090 or newer, but should compile and run with a reduced feature set on versions as old as 0.078, the current version used by Ubuntu. However, development and testing is done exclusively against the latest source distribution, so feedback on older releases of ZNC is needed to continue supporting them. If you want to use ZNC versions before 1.0 (0.206 or older), you will need to check out the "legacy" branch in order to compile it correctly. ZNC Push was created by [John Reese](http://johnmreese.com) and designed to fill a personal need. It may not fit your use cases, but any and all feedback would be greatly appreciated. Dependencies ------------ If you have installed ZNC from a Linux distribution's repository, you will most likely need to install the development package before building this module. On Ubuntu, this can be installed with: $ sudo aptitude install znc-dev Optionally, if you want to use libcurl for http requests, you also need to install cURL development header files. On Ubuntu, development headers can be installed by installing `libcurl3-dev` or `libcurl4-openssl-dev` package: $ sudo aptitude install libcurl4-openssl-dev Compiling --------- If you have `make` installed, you can compile the module with: $ make Otherwise, run the full command: $ znc-buildmod push.cpp ### Advanced If you would like to compile ZNC Push using libcurl for http requests, you must use: $ make curl=yes If libcurl is not in the default system library paths, you will need to populate `$CXXFLAGS` with the appropriate GCC flags so that it can find and link ZNC Push with libcurl. Note: You are strongly encouraged to use libcurl transport. The reason for that is, that the default CSocket transport doesn't verify server's SSL certificate which leaves you vulnerable to MITM attacks. However, use of libcurl will *block* the main ZNC thread at every push notification; for installations with many users, libcurl is *not* yet ideal, even with the above security concerns in mind. Installation ------------ Copy the compiled module into your ZNC profile: $ make install Now, load the module in ZNC: /msg *status loadmod push Note: the above command will only enable ZNC Push for a single network in ZNC. If instead you would like to load ZNC Push as a "user level" module, so that you can share configuration options across multiple networks, load it like this: /msg *status loadmod --type=user push Or you can use either the web admin page for the user to enable the "push" module, or you can use ZNC's "controlpanel" module: /msg *status loadmod controlpanel /msg *controlpanel loadmod push Then select the push service you want to use, and set your username and secret as needed. The secret is not your password, and can be obtained by logging into the service's website and looking in your profile or settings: /msg *push set service pushover /msg *push set username foo /msg *push set secret ... If you're using Boxcar or Airgram, you need to use the following command to send a subscription request to your account, before ZNC Push can start working: /msg *push subscribe At this point, it should start sending notifications every time you get a private message or someone says your name in a channel. If this is everything you wanted, congratulations, you're done! For further, detailed instructions specific to each push notification service, the following documentation is available: * [Pushover](doc/pushover.md) Commands -------- * `help` Links you to this fine document. * `version` Tells you the tagged build version currently running. * `set