instantFeeds

Overview
Requirements
Download
Installation
Configuration
Working with firewalls
Usage


Overview
-----------------------------------------------------
This Openfire plugin allows users to subscribe to and receive notifications from RSS and Atom feeds from an XMPP bot using any IM client. The plugin can receive update notifications from services that support the XML-RPC ping notification system and supports REST based web services for managing users subscriptions to feeds.

InstantFeeds is built on top of a variety of open source software including HTML Parser, Rome, Rome Fetcher and Apache XML-RPC.


Requirements
-----------------------------------------------------
  • Openfire 3.4.0 or later



Download
-----------------------------------------------------
  • 1.0.6 -- February 1, 2008 (jar, svn)
    • added support for feeds protected by HTTP Basic Authentication
    • added support for feeds with invalid SSL certificates
  • 1.0.5 -- August 6, 2007 (jar, svn)
    • updated options to give administrator the ability to specify a proxy server for HTTP retrieval of RSS / Atom feeds.
  • 1.0.4 -- July 20, 2007 (jar, svn)
    • updated API to work with Openfire 3.4.0
    • added ability to request the last notification sent
    • added functionality so that the notification sent to users will contain the title, link and description of every item updated since the last notification was sent
    • fixed bug where HTML entities were being sent as part of the notification
  • 1.0.3 -- April 17, 2007 (jar, svn)
    • Updated package references from Wildfire to Openfire
    • Added summary of feed entry to notification messages
    • Added ability to turn off notifications (out of office feature)
  • 1.0.2 -- April 4, 2007 (jar, svn)
    • Fixed a bug where users were able to subscribe to a single feed multiple times.
    • Updated version (which wasn't done in 1.0.1) to 1.0.2.
    • Added the number of subscribers to the feed to the user agent that requests feeds.
    • Added support for autodiscovery of feeds when a user attempts to subscribe to a URL that isn't a a feed.
    • Added support for autodiscovery of feeds when an external system sends an XML-RPC ping with 2 parameters (the blog ping specification says that the url param can either be the URL of the feed or the URL of the site that contains the feed).
  • 1.0.1 -- March 27, 2007 (jar, svn)
    • fixed a bug with the postgres database install script
    • fixed a bug with the hsqldb database install script
  • 1.0.0 -- March 21, 2007 (jar, svn)
    • initial release



Installation
-----------------------------------------------------
Copy the instantFeeds.jar into the plugins directory of your Openfire installation. The plugin will then be automatically deployed. To upgrade to a new version, copy the new instantFeeds.jar file over the existing file.


Configuration
-----------------------------------------------------
The following properties can be set to customize the instantFeeds installation:
  • plugin.instantFeeds.serviceName: the name of the service you want users to interact with, default is 'feeds'. Note that this account will be automatically created by the plugin if it doesn't already exist.
  • plugin.instantFeeds.servicePassword: the password for the service / user created by the system. Default is 'password'.
  • plugin.instantFeeds.allowedUsers: a comma delimited list of users who are allowed to interact with the service. Defaults to an empty string which means all users can interact with the system.
  • plugin.instantFeeds.allowedGroups: a comma delimited list of groups who are allowed to interact with the service. Defaults to an empty string which means all groups can interact with the system.
  • plugin.instantFeeds.numThreads: the number of threads you want each subservice (notifiers, subscribers, and pollers) to use, default is 2.
  • plugin.instantFeeds.pollInterval: the number of milliseconds to wait between each poll of existing feeds. Default is 15 minutes (900000 milliseconds).
  • plugin.instantFeeds.serverName: the path to the HTTP server that will handle verification clicks. Defaults to http://yourserver.com:9090/plugins/instantfeeds/api. Note that this server name can be shortened through the use of mod_proxy and mod_rewrite, see the readme for more information.
  • plugin.instantFeeds.proxyHost: the host name of the proxy server to use when making HTTP requests for RSS / Atom feeds. Optional.
  • plugin.instantFeeds.proxyPort: the port of the proxy server to use when making HTTP requests for RSS / Atom feeds. Optional.



Working with firewalls
-----------------------------------------------------

Because the instantFeeds plugin runs within the Openfire admin console web container, users behind firewalls may have problems accessing the HTTP services it provides. For example, if the Openfire admin console runs on the default port of 9090 and a user is only allowed to receive HTTP traffic on port 80, then a web request like the following won't work:

    http://www.example.com:9090/plugins/instantFeeds/

One solution for Apache users is to use mod_rewrite, mod_proxy and mod_proxy_http to serve traffic for the plugin on port 80. Sample Apache configuration entries for performing this mapping are below. Essentially, we make Apache intercept all requests for the presence plugin on port 80 and then proxy a real connection to the HTTP server on port 9090.

      <virtualhost *:80>
      servername example.com
      ....
      ProxyVia On
      RewriteEngine On
      RewriteCond %{REQUEST_URI} ^/api/
      RewriteRule ^/(.*) http://example.com:9090/plugins/instantFeeds/$1 [P]
      </virtualhost>
      



Usage
-----------------------------------------------------
The plugin can be accesed by end users by sending instant messages to 'feeds.$yourserver$' or 'feeds@$yourserver$' where $yourserver$ is the Server Name of your Openfire installation. The component supports the following commands:
  • help: Returns a list of commands available via the component.
  • list: Returns a list of feeds the user has subscribed to.
  • subscribe $feed: Subscribes the user to the given feed where $feed is the URL of an RSS or Atom feed.
  • last $feed: Returns the last notification sent for the given feed where $feed is the URL of an RSS or Atom feed that the user has subscribed to.
  • $feed: Subscribes the user to the given feed where $feed is the URL of an RSS or Atom feed.
  • unsubscribe $feed: Unsubscribes the user from the given feed where $feed is the URL of an RSS or Atom feed.