New Indigo Plugin Catalog & Plugin Update System (Updated 9/7/2011)

Indigo v5 has introduced a new Plugin system, to extend the hardware and functionality of the Indigo server.  This is a terrific step forward, but there’s another issue lurking in the background….

I won’t count the number of times where someone has reported a problem with an Attachment script, or plugin, and it has already been fixed…

I feel that we need to be pro-active, and fix this issue…  Indigo Plugins need a way to check for an updated plugin, to help ensure that the operators know when a new version of a plugin is available.  http://www.indigo-plugins.com is the first step in solving this problem…

Currently, I am a beginner with Django.  I would welcome any assistance from the Indigo Community, in assisting in the creation of this site…

In a nutshell, the site assists in several different ways:

  1. How can I find new plugins? Try here, http://www.indigo-plugins.com/ListAll .
  2. What information is available through the web site?
    1. The current Version of the Plugin
    2. What version of Indigo this plugin ahas been tested with
    3. The Price of the plugin (This is my own future planning. I do not know if this field will ever be used)
    4. What URL downloads can be found at
    5. A Short description
    6. A Long description
    7. Author’s name
    8. Author’s web site
    9. Author’s Email
    10. The Bundle ID of the plugin that Indigo recognizes
  3. How can I be sure that I am running the latest version of a plugin? If the developers enable the Update system built-in to this website, you will be notified in the Indigo log when a newer version of the plugin is released.
  4. How can developers use this to help ensure their plugins are up to date? When you register your plugin at the web site, one of the fields contains the bundle ID of the plugin.  The plugin contacts the server, and requests the latest version number of the plugin.  When the site returns the version number, the plugin checks to see if it’s newer.  If so, it writes an alert to the log file…  No personal information is ever sent to the server…

Technical Details, and the first prototype

Demo URL for update server…
http://127.0.0.1:8000/VersionCheck/com. … xternal_IP

These are the changes necessary, to make this update engine work… These are the changes that I made when I updated the External IP Address & Dynamic DNS plugin:

I added the following Globals variables:

plugin_id = r’com.schollnick.indigoplugin.External_IP’
version_check_site = r’http://www.indigo-plugins.com’
version_check_url = version_check_site + “/VersionCheck/%s” % plugin_id

In the startup() function:

Added self.VersionCheck ()

def VersionCheck ( self ):
#
# Run a VersionCheck to help ensure that the plugin is up to date
#
data = urllib2.urlopen( version_check_url ).read()
version_found, update_url, plugin_name = data.split(“,”) 
self.debugLog (“Version Check Server reports %s is available.” % version_found)

if float(version_found) > float(self.pluginVersion):
indigo.server.log ( “A New Version of %s v.%s is available.  You can download the upgrade from %s” % (self.pluginDisplayName, version_found, update_url), type=”Upgrade”, isError=True )
#self.browserOpen ( update_url )

And that’s it. The server will return the version number of the latest version of the plugin, the URL to find the update, and the Plugin Name.  The VersionCheck function will fetch this, and compare that with the existing plugin’s version number. If the server “wins”, then a log message is entered into the log.  Optionally (self.browserOpen), a web browser window can be opened to the URL that the server sent.

I am planning to add additional features to the server, but I want to invite all the developers to contact me, so that we can start to register their plugins and enable these features… 

At this point, one missing feature on the server is user registration… So please email me at Benjamin AT schollnick DOT net, and I’ll setup an account for you, so that you can enter your plugin information… (Or you can email it to me…)

If you have any suggestions, please feel free to send it as well…

Updated 9/7/2011, with the addition of the browser URL & Plugin name, being sent from the update server.