Commit Graph

311 Commits

Author SHA1 Message Date
John Reese 7817e98dba Add option for service name
Currently enforces either "notifo" or "boxcar", but does not yet change
any behaviors in the rest of the module.  Also prevents appending or
prepending to the option value.

Issue #226
2011-09-29 10:21:15 -04:00
John Reese 1f76601c56 Get missing defaults and save options when loading
Follow-up to ref 60632d42f.  Initial implementation would lose loaded
options when the module was reloaded, and would cause errors if the
loaded dictionary did not contain all of the option values.
2011-09-29 09:54:44 -04:00
John Reese a69ec09d6b Rebrand project as ZNC Push
Issue #226
2011-09-29 09:30:08 -04:00
John Reese 60632d42fb Implement save/load for user options
In preparation for renaming the project and supparting multiple
notification services, there needs to be a simple method for migrating
user options to the new module name.  Using the built-in dictionary
read/write mechanism, migrating to a new module name would be as simple
as issuing `/msg *notifo save foo` and `/msg *notify load foo`.
2011-09-28 16:28:10 -04:00
John Reese e2ddfe78e9 Added clean make target 2011-09-28 16:28:10 -04:00
John Reese 94ad55784e Implement notification uri keyword expansion
Resolves #198.  Four keywords are supported: context, nick, datetime,
and unixtime.
2011-03-09 11:02:34 -05:00
John Reese df891c0c69 Issue #198: Implement dictionary string expansion 2011-03-09 10:44:52 -05:00
John Reese 3a09f6c1fc Add details on obtaining the user's api secret 2011-03-09 09:39:29 -05:00
John Reese b9c7049bc6 Update bug tracker info to select project 2011-03-09 09:37:01 -05:00
John Reese a70ff4a364 Fix logic error in eval_tokens and add debug output
When faced with sub-expressions, the parser was not correctly advancing
its iterator to the sub-expression's matching end parenthesis, causing
it to evaluate inner conditions twice, and incorrectly terminate early
when it reached the first end parenthesis.

Added preprocessor flag NOTIFO_DEBUG to generate debug output to
PutModule() to validate the expression parsing logic.
2011-02-15 10:18:13 -05:00
John Reese a855fe7eb5 Update readme to use quotes for channel_conditions details 2011-02-14 14:33:52 -05:00
John Reese 33b381eb87 Implemented custom expression evaluation options
This option allows customization of the boolean logic used to
determine how conditional values are used to filter notifications for
channel messages.  It evaluates as a full boolean logic expression,
including the use of sub-expressions.  The default value of "all" will
bypass this evaluation and simply require all conditions to be true.

The expression consists of space-separated tokens in the following grammar:

* expression = expression operator expression | "(" expression ")" | value
* operator = "and" | "or"
* value = "true" | "false" | condition
* condition = <any condition option>

Also implemented EVAL command for testing purposes.
2011-02-14 14:27:18 -05:00
John Reese c462f15201 Fix client_count condition not applying to queries 2011-02-14 10:20:56 -05:00
John Reese 5b24f18c37 Fix bug in replied condition
For any channel/PM where the user hasn't yet sent a message, the replied
condition would always return false due to failing a `0 < 0`
expression.  The fix special-cases last_notification_time values of 0 to
always return true.
2011-01-26 21:09:37 -05:00
John Reese 5c5c198ab7 Implemented replied condition, defaulted to yes
If set to "yes", notifications will only be sent if you have replied to the
channel or query window more recently than the last time a notification was
sent for that context.
2011-01-26 13:09:55 -05:00
John Reese e913ed4558 Updated roadmap again, all conditions are done 2011-01-19 13:53:08 -05:00
John Reese 3f11b309b8 Updated roadmap 2011-01-19 13:50:24 -05:00
John Reese 06fac8b254 Implemented configurable highlight terms 2011-01-19 13:48:43 -05:00
John Reese 74c813a656 Implemented PREPEND command for modifying config values 2011-01-19 12:54:05 -05:00
John Reese f2de10139c Implemented APPEND command for modifying config values 2011-01-19 11:36:07 -05:00
John Reese d4fd3ce741 Fix #191: ZNC < 0.090 does not support IsIRCAway()
To maintain compatibility with ZNC < 0.090 (such as 0.078 used by
Ubuntu), we need to conditionally disable the away_only condition when
compiled against versions that don't support CUser->IsIRCAway().
2011-01-19 09:27:39 -05:00
John Reese de4c84a36b Added context parameter to STATUS command 2011-01-18 16:14:16 -05:00
John Reese c85cb39c12 Implemented idle condition
Time in seconds since the last activity by the user on any channel or query
window, including joins, parts, messages, and actions.  Notifications will
only be sent if the elapsed time is greater than this value.  A value of
0 (zero) will disable this condition.
2011-01-18 15:24:50 -05:00
John Reese c9cac29c0e Implemented last_active condition
Time in seconds since the last message sent by the user on that channel or
query window. Notifications will only be sent if the elapsed time is greater
than this value.  A value of 0 (zero) will disable this condition.

Note that this condition keeps track of the last message sent to each channel
and query window separately, so a recent PM to Joe will not affect a
notification sent from channel #foo.
2011-01-18 13:06:07 -05:00
John Reese 16f28cb04a Implemented nick_blacklist condition
Space-separated list of nicks.  Applies to both channel mentions and
query windows. Notifications will only be sent for messages from nicks
that are not present in this list, using a case-insensitive comparison.

Note that wildcard patterns can be used to match multiple nicks with
a single blacklist entry. For example, `set nick_blacklist *bot` will
not send notifications from nicks like "channelbot", "FooBot", or
"Robot".  Care must be used to not accidentally blacklist legitimate
nicks with wildcards.
2011-01-18 11:12:58 -05:00
John Reese 6fb80cff1f Modify SET command to accept space-separated values
In preparation for nick_blacklist, which needs to allow input of a
space-separated list of nicks to ignore, the SET command shouldn't be
requirement an exact number of tokens.  Any tokens past the first three
should be included in the option's new value, such that a command like
"set nick_blacklist nick1 nick2 nick3" will be accepted.
2011-01-18 10:44:23 -05:00
John Reese 54f9607f0d Updated readme with bugtracker info 2011-01-14 12:47:06 -08:00
John Reese 2b30fc39e3 Updated roadmap 2011-01-14 10:55:04 -05:00
John Reese 798a50f3a8 Implemented last_notification condition
Time in seconds since the last notification sent from that channel or query
window. Notifications will only be sent if the elapsed time is greater than
this value. A value of 0 (zero) will disable this condition.

Note that this condition keeps track of the last notification sent from each
channel and query window separately, so a recent PM from Joe will not affect a
notification sent from channel #foo.
2011-01-14 10:49:08 -05:00
John Reese 786e0b4928 Updated roadmap 2011-01-14 10:02:51 -05:00
John Reese dbd442b931 Compact condition checking 2011-01-14 09:48:56 -05:00
John Reese 307f17e493 Implemented away_only condition 2011-01-14 09:45:47 -05:00
John Reese 9f89dc5c9c Added roadmap to readme 2011-01-14 09:18:46 -05:00
John Reese 5b2389d8d1 Expanded project description 2011-01-13 23:14:06 -05:00
John Reese cbcaeaa9c8 Removed debug sections 2011-01-13 23:01:27 -05:00
John Reese 828b51bb32 Copout HELP command 2011-01-13 22:58:49 -05:00
John Reese e2906f5aab Hide vim:set from rendered README 2011-01-13 22:57:35 -05:00
John Reese 3aaafb7ffb Implemented UNSET command to restore default values 2011-01-13 22:56:15 -05:00
John Reese 6c191f6471 Rearrange commands 2011-01-13 22:51:53 -05:00
John Reese 563b52bab7 Added message_length option 2011-01-13 22:46:02 -05:00
John Reese c749f4874b Added message_uri option 2011-01-13 22:43:02 -05:00
John Reese 53a965fe5c Modified format for condition options/defaults 2011-01-13 22:16:32 -05:00
John Reese 90aa6bdb0a Documented commands and client_count condition 2011-01-13 22:15:20 -05:00
John Reese 1c2e9b019b Added STATUS command to check current conditions 2011-01-13 22:03:49 -05:00
John Reese 01885f39f4 Modify GET command to optionally list all values 2011-01-13 22:03:30 -05:00
John Reese db077ea78a Implemented client_count condition
Config option client_count_less_than (uint) determines if notifications
will be sent based on how many IRC clients are connected to ZNC.  A
value of zero disables this condition (always met), otherwise only sends
notifications if the number of connected clients is less than the
configured threshold.

Personal use case is client_count_less_than = 2, in that I always have
Irssi connected from my server, but if also connected from my phone, I
don't want duplicate notifications.
2011-01-13 22:00:24 -05:00
John Reese 7bcae40012 Fix error when sending commind with zero tokens 2011-01-13 22:00:08 -05:00
John Reese 0c5829ff0e Don't override default option values with empty strings 2011-01-13 21:59:44 -05:00
John Reese 42dc9a34e0 Capitalization 2011-01-13 21:23:42 -05:00
John Reese f3e6c8eafb Added ZNC and Notifo links to readme 2011-01-13 21:23:06 -05:00