Version 4 vs 9
Version 4 vs 9
Edits
Edits
- Edit by stwalkerster, Version 9
- Aug 16 2019 11:54 PM
- Edit by stwalkerster, Version 4
- Mar 17 2018 2:19 PM
Edit Older Version 4... | Edit Current Version 9... |
Content Changes
Content Changes
== Installation ==
1. Download the latest binaries from the project page: #eyeinthesky
1. Extract the archive to an empty folder
1. Configure the bot by editing configuration.xml
1. (optional) [[ https://logging.apache.org/log4net/release/manual/configuration.html | Configure logging ]] by editing the file log4net.xml
1. Launch EyeInTheSky.exe
== Configuration ==
For the most part, the comments within configuration.xml should be self-explanatory, because I'm lazy and I don't want to have to update this page very often.
The key parts you need to know -
* Four general things to configure - the bot itself, the listening IRC network, the reporting IRC network, and the email server.
* Bot
* Channels to join on each network
* A prefix to all commands - commonly `!` but I use `=`, as does this documentation.
* A path to the configuration file for the stalks - this doesn't need to exist as it is managed by the bot.
* The full mask of the RC user to listen to
* The owner of the bot (full mask needed)
* The [[ https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings | format for displaying dates ]]
* Templates for IRC and email messages (advanced users only)
* Monitoring port (TCP, reports status of IRC connections)
* IRC networks (two of these)
* Most of this should be self-explanatory.
* Notably, `clientName` is just a name for logging and reporting.
* `username` is used both as the ident field, and the NickServ username if `authToServices` is set.
* `password` is the NickServ password, not the server password.
* Email
* `#{name}` style values [[ https://github.com/castleproject/Windsor/blob/master/docs/xml-configuration-properties.md | reference properties ]] from the top section
* The location of the configuration.xml file can be changed, pass the new location as the first command line parameter. This helps with upgrades, as your config can be held outside the application directory at a location of your choosing. As the stalk config location is also specified in the configuration file, this is able to be moved outside the application directory.
== Commands ==
The latest help for all commands can be found using the `=help` command.
### Help ###
Requires: Standard
```
=help
```
```
=help <Command>
```
Returns all available help for the specified command.
```
=help <Command> <Subcommand>
```
Returns the help for the specified subcommand.
Location: `Stwalkerster.Bot.CommandLib.Commands`
### Die ###
Requires: Owner
```
=die
```
Shuts down the bot.
Location: `Stwalkerster.Bot.CommandLib.Commands.BotManagement`
### Command Access ###
Requires: Standard
```
=commandaccess <command>
```
Retrieves the flag required to use the specified command.
Location: `Stwalkerster.Bot.CommandLib.Commands.AccessControl`
### My Flags ###
Requires: Standard
```
=myflags
=myaccess
=whoami
```
Retrieves the flags available to the current user.
Location: `Stwalkerster.Bot.CommandLib.Commands.AccessControl`
### Quick ###
Requires: Protected
```
=quick <Flag> <Type> <Match>
```
Sets up a new basic stalk with the specified match and type, and default options specified.
Specifically, `=quick foo page bar` would create a new stalk `foo` monitoring the page `bar`.
Location: `EyeInTheSky.Commands`
### Stalk ###
Requires: Protected
```
=stalk list
```
Lists all configured stalks
```
=stalk add <Flag>
```
Adds a new unconfigured stalk
```
=stalk del <Flag>
```
Deletes a stalk
```
=stalk enabled <Flag> <true|false>
```
Marks a stalk as enabled or disabled
```
=stalk mail <Flag> <true|false>
```
Enables or disables email notifications for each trigger of the specified stalk
```
=stalk description <Flag> <Description...>
```
Sets the description of the specified stalk
```
=stalk expiry <Flag> <Description...>
```
Sets the description of the specified stalk
```
=stalk set <Flag> <user|page|summary|xml> <Match...>
```
Sets the stalk configuration of the specified stalk to specified user, page, or edit summary regex. Alternatively, manually specify an XML tree (advanced).
```
=stalk and <Flag> <user|page|summary|xml> <Match...>
```
Sets the stalk configuration of the specified stalk to the logical AND of the current configuration, and a specified user, page, or edit summary regex; or XML tree (advanced).
```
=stalk or <Flag> <user|page|summary|xml> <Match...>
```
Sets the stalk configuration of the specified stalk to the logical OR of the current configuration, and a specified user, page, or edit summary regex; or XML tree (advanced).
An XML search tree is an XML root element from the list: `and`, `or`, `not`, `true`, `false`, `user`, `page`, `summary`, `flag`. `and` and `or` MUST have two child nodes, `not` MUST have one child node, and the rest MUST have zero child nodes. `user`, `page`, `flag` and `summary` MUST have an attribute called value containing a regular expression to match.
For example:
```
<and>
<or>
<page value="Wikipedia:New contributors' help page"/>
<page value="Wikipedia:Help Desk"/>
</or>
<and>
<not>
<user value="Stwalkerster"/>
</not>
<summary value="/\* New Section \*/"/>
</and>
</and>
```
Use the mail option to enable or disable logging of stalk triggers via email. By default, every stalk has it enabled.
### ACC ###
Requires: Protected
```
=acc <id> <username>
```
Adds a new temporary stalk with key `acc<id>` (eg `acc12345`) for any match on the specified username
Location: `EyeInTheSky.Commands`
### Version ###
Requires: Standard
```
=version
```
Shows the current bot version.
Location: `EyeInTheSky.Commands`
## Edit Flags ##
For the flag-based stalks, this is a description of //some// of the flags:
```
! - unreviewed
M - minor
N - new
B - bot
move - move
```
== Installation ==
1. Download the latest binaries from the project page: #eyeinthesky
1. Extract the archive to an empty folder
1. Configure the bot by editing configuration.xml
1. (optional) [[ https://logging.apache.org/log4net/release/manual/configuration.html | Configure logging ]] by editing the file log4net.xml
1. Launch EyeInTheSky.exe
== Configuration ==
For the most part, the comments within configuration.xml should be self-explanatory, because I'm lazy and I don't want to have to update this page very often.
The key parts you need to know -
* Four general things to configure - the bot itself, the listening IRC network, the reporting IRC network, and the email server.
* Bot
* Channels to join on each network
* A prefix to all commands - commonly `!` but I use `=`, as does this documentation.
* A path to the configuration file for users - this doesn't need to exist as it is managed by the bot.
* A path to the configuration file for channels - this doesn't need to exist as it is managed by the bot.
* A path to the configuration file for the stalk templates - this doesn't need to exist as it is managed by the bot.
* The full mask of the RC user to listen to
* The owner of the bot (full mask needed)
* The [[ https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings | format for displaying dates ]]
* The MediaWiki (aka Wikipedia) API endpoint to use. The default is then English Wikipedia.
* The user agent string to use when talking to web services. It's very good practice to put your contact details here
* A URL to the privacy policy for the bot.
* IRC networks (two of these)
* Most of this should be self-explanatory.
* Notably, `clientName` is just a name for logging and reporting.
* `username` is used both as the ident field, and the NickServ username if `authToServices` is set.
* `password` is the NickServ password, not the server password.
* Email
* `#{name}` style values [[ https://github.com/castleproject/Windsor/blob/master/docs/xml-configuration-properties.md | reference properties ]] from the top section
* The location of the configuration.xml file can be changed, pass the new location as the first command line parameter. This helps with upgrades, as your config can be held outside the application directory at a location of your choosing. As the stalk and template config locations are also specified in the configuration file, these are able to be moved outside the application directory.
== Commands ==
Main article: [[eyeinthesky/commands|Commands]]
== Access control ==
Access control is done on a flag system. There are seven flags available - three are technical can be ignored for most purposes.
1. Owner (`+O`). Can only be granted globally, and is granted automatically to the user listed in the configuration file. Grants full access to all bot features **and data**. Anyone with this role has the ability to see stalks and channels which they might be forbidden from entering.
2. Global admin (`+A`). Can only be granted globally. The most powerful role beneath owner, this flag grants the ability to control all flags globally, and locally in any channel the user can enter. This also allows the user to perform user maintenance tasks, such as deleting a user account or removing a registered email address from an account. Global admin grants the ability to see **all** channels, but not the channel configuration, nor the ability to subscribe to a channel or a stalk. It also does not grant the ability to configure stalks, but it is possible for users with this flag to grant themselves that ability locally if they can enter the channel
3. Channel join (`+J`). Can only be granted globally. Allows joining the bot to new channels. Local admin and local configuration access is granted automatically on any channels joined with this right.
4. Local admin (`+a`). Can only be granted locally, and is automatically granted to channel operators. Allows management of local flags, and the ability to remove the bot from the channel. It does not grant the ability to configure stalks, but it is possible for users with this flag to grant themselves that ability. It does allow the user to see a channel and it's configuration.
5. Configuration (`+C`). Can be granted either globally or locally, and is automatically granted locally to channel operators. Allows the modification of stalk configuration in the channel in which it is granted, or all visible channels if granted globally.
6. User (`+u`). Cannot be granted, but applies to every user registered with NickServ automatically.
7. Standard (`+S`). Cannot be granted, but applies to everybody automatically.
For the most part, this means access is in three sections - who can manage access (`+A`, `+a`, and to some extent `+J`), who can change settings (`+C`), and everyone else
== Edit Flags ==
For the flag-based stalks, this is a description of //some// of the flags:
```
! - unreviewed
M - minor
N - new
B - bot
move - move
```
== Templates ==
Templates can be defined in the template configuration file.
In version 2.2, the "acc" and "quick" commands were removed, due to the expectation that these would be replaced by templates. The relevant configuration for these is listed below:
``` lang=xml
<template flag="acc" description="ACC {0}: {1}" stalkflag="acc{0}" immediatemail="true"
stalkenabled="true" templateenabled="true" expiryduration="P90D">
<searchtree>
<![CDATA[<or><user value="{1:R}" /><page value="{1:R}" /><summary value="{1:R}" /></or>]]>
</searchtree>
</template>
<template flag="quick" immediatemail="true" stalkenabled="true" templateenabled="true"
expiryduration="P90D">
<searchtree><![CDATA[<{0} value="{1:R}" />]]></searchtree>
</template>
```
The attributes available are:
* `flag` - the identification tag for this template. Also acts as the command name for instantiating an instance of this template.
* `description` - the default description for an instance of this template. Accepts parameters in the form `{0}`, `{1}`, etc.
* `stalkflag` - if set, a default pattern for the flag of the stalk. Accepts parameters in the form `{0}`, `{1}`, etc.
* `stalkenabled` - the default value for the `enabled` attribute on the stalk.
* `templateenabled` - whether or not to register this template as a command to allow instantiation
* `expiryduration` - a time duration in [[https://en.wikipedia.org/wiki/ISO_8601#Durations|ISO 8601]] format.
Within the template should be a string representing the XML search tree of the stalk. Accepts parameters in the form `{0}`, `{1}`, etc. Beware of regular expressions - use the format `{0}`, `{1}`, etc to escape the content of the parameter into a form which will match a regular expression.
== Installation ==
1. Download the latest binaries from the project page: #eyeinthesky
1. Extract the archive to an empty folder
1. Configure the bot by editing configuration.xml
1. (optional) [[ https://logging.apache.org/log4net/release/manual/configuration.html | Configure logging ]] by editing the file log4net.xml
1. Launch EyeInTheSky.exe
== Configuration ==
For the most part, the comments within configuration.xml should be self-explanatory, because I'm lazy and I don't want to have to update this page very often.
The key parts you need to know -
* Four general things to configure - the bot itself, the listening IRC network, the reporting IRC network, and the email server.
* Bot
* Channels to join on each network
* A prefix to all commands - commonly `!` but I use `=`, as does this documentation.
* A path to the configuration file for the stalkusers - this doesn't need to exist as it is managed by the bot.
* A path to the configuration file for channels - this doesn't need to exist as it is managed by the bot.
* A path to the configuration file for the stalk templates - this doesn't need to exist as it is managed by the bot.
* The full mask of the RC user to listen to
* The owner of the bot (full mask needed)
* The [[ https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings | format for displaying dates ]]
* Templates for IRC and email messages (advanced users only)he MediaWiki (aka Wikipedia) API endpoint to use. The default is then English Wikipedia.
* The user agent string to use when talking to web services. It's very good practice to put your contact details here
* Monitoring port (TCP, reports status of IRC connections)* A URL to the privacy policy for the bot.
* IRC networks (two of these)
* Most of this should be self-explanatory.
* Notably, `clientName` is just a name for logging and reporting.
* `username` is used both as the ident field, and the NickServ username if `authToServices` is set.
* `password` is the NickServ password, not the server password.
* Email
* `#{name}` style values [[ https://github.com/castleproject/Windsor/blob/master/docs/xml-configuration-properties.md | reference properties ]] from the top section
* The location of the configuration.xml file can be changed, pass the new location as the first command line parameter. This helps with upgrades, as your config can be held outside the application directory at a location of your choosing. As the stalk and template config location iss are also specified in the configuration file, this isthese are able to be moved outside the application directory.
== Commands ==
The latest help for all commands can be found using the `=help` command.
### Help ###
Requires: Standard
```
=help
```
```
=help <Command>
```
Returns all available help for the specified command.
```
=help <Command> <Subcommand>
```
Returns the help for the specified subcommand.
Location: `Stwalkerster.Bot.CommandLib.Commands`
### Die ###
Requires: Owner
```
=die
```
Shuts down the bot.Main article: [[eyeinthesky/commands|Commands]]
Location: `Stwalkerster.Bot.CommandLib.Commands.BotManagement`
### Command Access ###
Requires: Standard
```
=commandaccess <command>
```== Access control ==
Retrieves theAccess control is done on a flag required to use the specified commandsystem. There are seven flags available - three are technical can be ignored for most purposes.
Location: `Stwalkerster.Bot.CommandLib.Commands.AccessControl`1. Owner (`+O`). Can only be granted globally, and is granted automatically to the user listed in the configuration file. Grants full access to all bot features **and data**. Anyone with this role has the ability to see stalks and channels which they might be forbidden from entering.
### My Flags ###2. Global admin (`+A`). Can only be granted globally. The most powerful role beneath owner, this flag grants the ability to control all flags globally, and locally in any channel the user can enter. This also allows the user to perform user maintenance tasks, such as deleting a user account or removing a registered email address from an account. Global admin grants the ability to see **all** channels, but not the channel configuration, nor the ability to subscribe to a channel or a stalk. It also does not grant the ability to configure stalks, but it is possible for users with this flag to grant themselves that ability locally if they can enter the channel
Requires: Standard3. Channel join (`+J`). Can only be granted globally. Allows joining the bot to new channels. Local admin and local configuration access is granted automatically on any channels joined with this right.
```
=myflags4. Local admin (`+a`). Can only be granted locally, and is automatically granted to channel operators. Allows management of local flags, and the ability to remove the bot from the channel. It does not grant the ability to configure stalks, but it is possible for users with this flag to grant themselves that ability. It does allow the user to see a channel and it's configuration.
=myaccess5. Configuration (`+C`). Can be granted either globally or locally, and is automatically granted locally to channel operators. Allows the modification of stalk configuration in the channel in which it is granted, or all visible channels if granted globally.
=whoami6. User (`+u`). Cannot be granted, but applies to every user registered with NickServ automatically.
```7. Standard (`+S`). Cannot be granted, but applies to everybody automatically.
Retrieves the flags available to the current user.For the most part, this means access is in three sections - who can manage access (`+A`, `+a`, and to some extent `+J`), who can change settings (`+C`), and everyone else
Location: `Stwalkerster.Bot.CommandLib.Commands.AccessControl`
### Quick ###
Requires: Protected== Edit Flags ==
```
=quick <Flag> <Type> <Match>
```
Sets up a new basic stalk with the specified match and type, and default options specified.
SpecificallyFor the flag-based stalks, `=quick foo page bar` would create a new stalk `foo` monitoring the page `bar`.this is a description of //some// of the flags:
Location: `EyeInTheSky.Commands`
### Stalk ###
Requires: Protected
```
=stalk list
```
Lists all configured stalks
```
=stalk add <Flag>
```
Adds a new unconfigured stalk
```
=stalk del <Flag>
```
Deletes a stalk
```
=stalk enabled <Flag> <true|false>
```
Marks a stalk as enabled or disabled
```
=stalk mail <Flag> <true|false>
```
Enables or disables email notifications for each trigger of the specified stalk
```
=stalk description <Flag> <Description...>
```
Sets the description of the specified stalk
```
=stalk expiry <Flag> <Description...>
```
Sets the description of the specified stalk
```
=stalk set <Flag> <user|page|summary|xml> <Match...>
```
Sets the stalk configuration of the specified stalk to specified user, page, or edit summary regex. Alternatively, manually specify an XML tree (advanced).
```
=stalk and <Flag> <user|page|summary|xml> <Match...>! - unreviewed
``` M - minor
Sets the stalk configuration of the specified stalk to the logical AND of the current configuration, and a specified user, page, or edit summary regex; or XML tree (advanced).N - new
``` B - bot
=stalk or <Flag> <user|page|summary|xml> <Match...> move - move
```
Sets the stalk configuration of the specified stalk to the logical OR of the current configuration, and a specified user, page, or edit summary regex; or XML tree (advanced).
An XML search tree is an XML root element from the list: `and`, `or`, `not`, `true`, `false`, `user`, `page`, `summary`, `flag`. `and` and `or` MUST have two child nodes, `not` MUST have one child node, and the rest MUST have zero child nodes. `user`, `page`, `flag` and `summary` MUST have an attribute called value containing a regular expression to match.
For example:
```== Templates ==
<and>Templates can be defined in the template configuration file.
In version 2.2, the "acc" and "quick" commands were removed, due to the expectation that these would be replaced by templates. The relevant configuration for these is listed below:
<or>``` lang=xml
<page value="Wikipedia:New contributors' help page"/><template flag="acc" description="ACC {0}: {1}" stalkflag="acc{0}" immediatemail="true"
<page value="Wikipedia:Help Desk"/ stalkenabled="true" templateenabled="true" expiryduration="P90D">
</or<searchtree>
<and>
<not>
<user![CDATA[<or><user value="{1:R}" /><page value="{1:R}" /><summary value="Stwalkerster"/{1:R}" /></or>]]>
</not</searchtree>
<summary value="/\* New Section \*/"/</template>
</and<template flag="quick" immediatemail="true" stalkenabled="true" templateenabled="true"
expiryduration="P90D">
</and>
```
Use the mail option to enable or disable logging of stalk triggers via email. By default, every stalk has it enabled.
### ACC ###
Requires: Protected
```searchtree><![CDATA[<{0} value="{1:R}" />]]></searchtree>
=acc <id> <username </template>
```
Adds a new temporary stalk with key `acc<id>` (eg `acc12345`) for any match on the specified username
Location: `EyeInTheSky.Commands`
### Version ###The attributes available are:
Requires: Standard* `flag` - the identification tag for this template. Also acts as the command name for instantiating an instance of this template.
```* `description` - the default description for an instance of this template. Accepts parameters in the form `{0}`, `{1}`, etc.
=version* `stalkflag` - if set, a default pattern for the flag of the stalk. Accepts parameters in the form `{0}`, `{1}`, etc.
```* `stalkenabled` - the default value for the `enabled` attribute on the stalk.
Shows the current bot version.
Location: `EyeInTheSky.C* `templateenabled` - whether or not to register this template as a commands`
## Edit Flags ## to allow instantiation
For the flag-based stalks, this is a description of //some// of the flags:* `expiryduration` - a time duration in [[https://en.wikipedia.org/wiki/ISO_8601#Durations|ISO 8601]] format.
```
Within the template should be a string representing the XML search tree of the stalk. ! - unreviewed
Accepts parameters in the form `{0}`, M - minor
`{1}`, N - new
etc. B - bot
Beware of regular expressions - use the format `{0}`, move - move
````{1}`, etc to escape the content of the parameter into a form which will match a regular expression.