mirror of https://github.com/SeanOMik/znc-push.git
Merge latest features from master branch
This commit is contained in:
commit
11f5882e20
3
Makefile
3
Makefile
|
@ -1,5 +1,8 @@
|
||||||
push.so: push.cpp
|
push.so: push.cpp
|
||||||
znc-buildmod push.cpp
|
znc-buildmod push.cpp
|
||||||
|
|
||||||
|
install: push.so
|
||||||
|
cp push.so $(HOME)/.znc/modules/push.so
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rm -f push.so
|
-rm -f push.so
|
||||||
|
|
30
README.md
30
README.md
|
@ -8,13 +8,14 @@ conditions. ZNC Push current supports the following services:
|
||||||
* [Boxcar][]
|
* [Boxcar][]
|
||||||
* [Notifo][]
|
* [Notifo][]
|
||||||
* [Notify My Android][] (NMA)
|
* [Notify My Android][] (NMA)
|
||||||
|
* [Pushover][]
|
||||||
* [Prowl][]
|
* [Prowl][]
|
||||||
|
* [Supertoasty][]
|
||||||
|
|
||||||
This project is still a Work In Progress, but should be functional enough and stable enough
|
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
|
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
|
discussion or inclusion. Bug reports and feature requests can be submitted to
|
||||||
[my bug tracker][mantis] by selecting the "ZNC Push" project from the top right, or
|
[the repository issues list][issues], or sent via email.
|
||||||
sent via email.
|
|
||||||
|
|
||||||
For full functionality, this module requires ZNC version 0.090 or newer, but should compile
|
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
|
and run with a reduced feature set on versions as old as 0.078, the current version used by
|
||||||
|
@ -160,7 +161,9 @@ Configuration
|
||||||
* "boxcar"
|
* "boxcar"
|
||||||
* "notifo"
|
* "notifo"
|
||||||
* "nma"
|
* "nma"
|
||||||
|
* "pushover"
|
||||||
* "prowl"
|
* "prowl"
|
||||||
|
* "supertoasty"
|
||||||
|
|
||||||
* `username = ""`
|
* `username = ""`
|
||||||
|
|
||||||
|
@ -172,7 +175,14 @@ Configuration
|
||||||
|
|
||||||
Authentication token for push notifications.
|
Authentication token for push notifications.
|
||||||
|
|
||||||
This option must be set when using Notifo, Notify My Android, or Prowl.
|
This option must be set when using Notifo, Notify My Android, Pushover, Prowl or Supertoasty.
|
||||||
|
|
||||||
|
* `target = ""`
|
||||||
|
|
||||||
|
Device or target name for push notifications.
|
||||||
|
|
||||||
|
When using Pushover, this option allows you to specify a single device name to send
|
||||||
|
notifications to; if blank or unset, notifications will be sent to all devices.
|
||||||
|
|
||||||
|
|
||||||
### Conditions
|
### Conditions
|
||||||
|
@ -265,7 +275,7 @@ Configuration
|
||||||
truncated and ellipsized at or before this length is reached. A value of 0 (zero) will
|
truncated and ellipsized at or before this length is reached. A value of 0 (zero) will
|
||||||
disable this option.
|
disable this option.
|
||||||
|
|
||||||
* `message_url = ""`
|
* `message_uri = ""`
|
||||||
|
|
||||||
URI that will be sent with the notification to Notifo. This could be a web address or a
|
URI that will be sent with the notification to Notifo. This could be a web address or a
|
||||||
local scheme to access a mobile application. Keyword expansion is performed on this
|
local scheme to access a mobile application. Keyword expansion is performed on this
|
||||||
|
@ -321,14 +331,6 @@ Configuration
|
||||||
in your `*push` window.
|
in your `*push` window.
|
||||||
|
|
||||||
|
|
||||||
Roadmap
|
|
||||||
-------
|
|
||||||
|
|
||||||
### Settings
|
|
||||||
|
|
||||||
* Customizable notification titles and message formats.
|
|
||||||
|
|
||||||
|
|
||||||
License
|
License
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
@ -339,9 +341,11 @@ This project is licensed under the MIT license. See the `LICENSE` file for deta
|
||||||
[Boxcar]: http://boxcar.io
|
[Boxcar]: http://boxcar.io
|
||||||
[Notifo]: http://notifo.com
|
[Notifo]: http://notifo.com
|
||||||
[Notify My Android]: http://www.notifymyandroid.com
|
[Notify My Android]: http://www.notifymyandroid.com
|
||||||
|
[Pushover]: http://pushover.net
|
||||||
[Prowl]: http://www.prowlapp.com
|
[Prowl]: http://www.prowlapp.com
|
||||||
|
[Supertoasty]: http://www.supertoasty.com
|
||||||
|
|
||||||
[mantis]: http://leetcode.net/mantis
|
[issues]: http://github.com/jreese/znc-push/issues
|
||||||
[ZNC]: http://en.znc.in "ZNC, an advanced IRC bouncer"
|
[ZNC]: http://en.znc.in "ZNC, an advanced IRC bouncer"
|
||||||
[ISO 8601]: http://en.wikipedia.org/wiki/ISO_8601 "ISO 8601 Date Format"
|
[ISO 8601]: http://en.wikipedia.org/wiki/ISO_8601 "ISO 8601 Date Format"
|
||||||
|
|
||||||
|
|
69
push.cpp
69
push.cpp
|
@ -108,6 +108,7 @@ class CPushMod : public CModule
|
||||||
defaults["service"] = "";
|
defaults["service"] = "";
|
||||||
defaults["username"] = "";
|
defaults["username"] = "";
|
||||||
defaults["secret"] = "";
|
defaults["secret"] = "";
|
||||||
|
defaults["target"] = "";
|
||||||
|
|
||||||
// Condition strings
|
// Condition strings
|
||||||
defaults["channel_conditions"] = "all";
|
defaults["channel_conditions"] = "all";
|
||||||
|
@ -275,6 +276,34 @@ class CPushMod : public CModule
|
||||||
params["description"] = short_message;
|
params["description"] = short_message;
|
||||||
params["url"] = uri;
|
params["url"] = uri;
|
||||||
}
|
}
|
||||||
|
else if (service == "pushover")
|
||||||
|
{
|
||||||
|
if (options["secret"] == "")
|
||||||
|
{
|
||||||
|
PutModule("Error: secret (user key) not set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CString pushover_api_token = "h6RToHDU7gNnB3IMyUb94SuwKtBzOD";
|
||||||
|
|
||||||
|
service_host = "api.pushover.net";
|
||||||
|
service_url = "/1/messages.json";
|
||||||
|
|
||||||
|
params["token"] = pushover_api_token;
|
||||||
|
params["user"] = options["secret"];
|
||||||
|
params["title"] = title;
|
||||||
|
params["message"] = short_message;
|
||||||
|
|
||||||
|
if (uri != "")
|
||||||
|
{
|
||||||
|
params["url"] = uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options["target"] != "")
|
||||||
|
{
|
||||||
|
params["device"] = options["target"];
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (service == "prowl")
|
else if (service == "prowl")
|
||||||
{
|
{
|
||||||
if (options["secret"] == "")
|
if (options["secret"] == "")
|
||||||
|
@ -292,6 +321,26 @@ class CPushMod : public CModule
|
||||||
params["description"] = short_message;
|
params["description"] = short_message;
|
||||||
params["url"] = uri;
|
params["url"] = uri;
|
||||||
}
|
}
|
||||||
|
else if (service == "supertoasty")
|
||||||
|
{
|
||||||
|
if (options["secret"] == "")
|
||||||
|
{
|
||||||
|
PutModule("Error: secret (device id) not set");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
use_post = false;
|
||||||
|
use_port = 80;
|
||||||
|
use_ssl = false;
|
||||||
|
|
||||||
|
service_host = "api.supertoasty.com";
|
||||||
|
service_url = "/notify/"+options["secret"];
|
||||||
|
|
||||||
|
params["title"] = title;
|
||||||
|
params["text"] = short_message;
|
||||||
|
params["image"] = "https://github.com/jreese/znc-push/raw/supertoasty/logo.png";
|
||||||
|
params["sender"] = "ZNC Push";
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PutModule("Error: service type not selected");
|
PutModule("Error: service type not selected");
|
||||||
|
@ -885,10 +934,18 @@ class CPushMod : public CModule
|
||||||
{
|
{
|
||||||
PutModule("Note: NMA requires setting the 'secret' option");
|
PutModule("Note: NMA requires setting the 'secret' option");
|
||||||
}
|
}
|
||||||
|
else if (value == "pushover")
|
||||||
|
{
|
||||||
|
PutModule("Note: Pushover requires setting the 'secret' option");
|
||||||
|
}
|
||||||
else if (value == "prowl")
|
else if (value == "prowl")
|
||||||
{
|
{
|
||||||
PutModule("Note: Prowl requires setting the 'secret' option");
|
PutModule("Note: Prowl requires setting the 'secret' option");
|
||||||
}
|
}
|
||||||
|
else if (value == "supertoasty")
|
||||||
|
{
|
||||||
|
PutModule("Note: Supertoasty requires setting the 'secret' option with device id");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PutModule("Error: unknown service name");
|
PutModule("Error: unknown service name");
|
||||||
|
@ -898,6 +955,8 @@ class CPushMod : public CModule
|
||||||
|
|
||||||
options[option] = value;
|
options[option] = value;
|
||||||
SetNV(option, options[option]);
|
SetNV(option, options[option]);
|
||||||
|
|
||||||
|
PutModule("Ok");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// APPEND command
|
// APPEND command
|
||||||
|
@ -926,6 +985,8 @@ class CPushMod : public CModule
|
||||||
options[option] += " " + value;
|
options[option] += " " + value;
|
||||||
options[option].Trim();
|
options[option].Trim();
|
||||||
SetNV(option, options[option]);
|
SetNV(option, options[option]);
|
||||||
|
|
||||||
|
PutModule("Ok");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// PREPEND command
|
// PREPEND command
|
||||||
|
@ -954,6 +1015,8 @@ class CPushMod : public CModule
|
||||||
options[option] = value + " " + options[option];
|
options[option] = value + " " + options[option];
|
||||||
options[option].Trim();
|
options[option].Trim();
|
||||||
SetNV(option, options[option]);
|
SetNV(option, options[option]);
|
||||||
|
|
||||||
|
PutModule("Ok");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// UNSET command
|
// UNSET command
|
||||||
|
@ -976,6 +1039,8 @@ class CPushMod : public CModule
|
||||||
{
|
{
|
||||||
options[option] = defaults[option];
|
options[option] = defaults[option];
|
||||||
DelNV(option);
|
DelNV(option);
|
||||||
|
|
||||||
|
PutModule("Ok");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// GET command
|
// GET command
|
||||||
|
@ -1200,12 +1265,16 @@ class CPushMod : public CModule
|
||||||
sock->Connect(service_host, use_port, use_ssl);
|
sock->Connect(service_host, use_port, use_ssl);
|
||||||
sock->Request(use_post, service_host, service_url, params, service_auth);
|
sock->Request(use_post, service_host, service_url, params, service_auth);
|
||||||
AddSocket(sock);
|
AddSocket(sock);
|
||||||
|
|
||||||
|
PutModule("Ok");
|
||||||
}
|
}
|
||||||
// SEND command
|
// SEND command
|
||||||
else if (action == "send")
|
else if (action == "send")
|
||||||
{
|
{
|
||||||
CString message = command.Token(1, true, " ", true);
|
CString message = command.Token(1, true, " ", true);
|
||||||
send_message(message);
|
send_message(message);
|
||||||
|
|
||||||
|
PutModule("Ok");
|
||||||
}
|
}
|
||||||
// HELP command
|
// HELP command
|
||||||
else if (action == "help")
|
else if (action == "help")
|
||||||
|
|
Loading…
Reference in New Issue