GZRBOT 0.1 released

December 23, 2009

Hi world !

First of all happy christmas and a happy new year to all of you.

I want to release GZRBOT to the world. This is a rename of the CMNDBOT bot, since this name matches the one of GOZERBOT the best and thats what this bot is best described .. GOZERBOT on the Google Application Engine.

So this is really CMNDBOT 0.1 after BETA1 and BETA2, but then renamed to GZRBOT.

Most of all GZRBOT is there for its code and reuse of it is highly recommended. I made a script which makes it easy to clone gzrbot and rename it so you can run your own bot off the GZRBOT code. GZRBOT has a plugin system that lets you program your own plugin and provide you a way to add custom functionality to your bot. Both writing commands and reacting on events through callbacks is supported.

A live web demo of GZRBOT can be seen at http://gzrbot.appspot.com. For wave or jabber (gtalk or any other jabber client) add gzrbot@appspot.com to your contactlist or join me on this wave:

GZRBOT 0.1 released

Source code and documentation (still needs to be written) is available at http://gzrbot.googlecode.com

If you have any question about GZRBOT you can reach me at bthate@gmail.com

Have fun with it ! ;]

Bart


CMNDBOT 0.1 BETA2 released

December 7, 2009

Hello world !
a week after BETA1 i’m releasing BETA2, changes go fast ;]

what changed in this version:

* RSS plugin can now push to xmpp clients .. add cmnd…@appspot.com to your jabber client and do 1) rss-add to add a feed 2) use rss-start to make the bot start sending you feed updates.

* a gadget plugin that enables you to load gadgets with one command (well two if you need to add the gadgets url)

* a iframe gadget was made that loads the bots web interface into wave and other gadget containers

* focus of the command box is now off when loading the gadget

* a plugin dedicated to wave functionality was made. currently it has commands to get the id of the wave, getting the url redirecting to the wave and one to get a list of the wave’s participants

* lots of other bug fixes .. running from one to the other ;]

Bart

About CMNDBOT:
CMNDBOT is an IRC like command bot for wave, web and xmpp, and has a plugin structure to allow users to program there own plugins. CMNDBOT is free code (BSD) so you can clone it and run a CMNDBOT yourself.

Source is available at http://cmndbot.googlecode.com/

For a live example of CMNDBOT see cmnd…@appspot.com for jabber and wave and http://cmndbot.appspot.com for web. You can also try the new iframe gadget at http://cmndbot.appspot.com/iframe.xml or … invite the bot to your wave and run !load cmndbot ;]


CMNDBOT 0.1 BETA1 released

November 28, 2009

So once again i bite the bullet because i can no longer wait on going public with this.

I’m pleased to announce CMNDBOT 0.1 BETA1 to the world as this is the first released of my port of GOZERBOT to the Google Application Engine, enabling it on wave, web and xmpp.

I’ll paste here the README to explain what it does:

CMNDBOT is a port of gozerbot to google wave platform. GOZERBOT needed to
be completely rewritten as programs running on google application engine
(GAE) run within a CGI model which means that the bot get loaded on every
request (unless its cached). Core functionality is available right now but
most plugins need to be ported still. Besides wave the bot also supports web
and jabber (XMPP) access.

this is the code that is being run by the cmndbot.appspot.com bot and is
free code (BSD license). you can clone it to run your own cmndbot or
just to read how things are being done. no fear in reading cmndbot code !

as the name says cmndbot allows you to execute commands that you can program
easily through the use of plugins.

example:

from gozerlib.commands import cmnds

def handle_hello(bot, event):
event.reply(“hello %s” % event.userhost)

cmnds.add(‘hello’, handle_hello, ‘USER’)

as of now a few gozerbot plugins are being ported to cmndbot, namely:

* eight ball
* ipcalc
* todo
* wikipedia
* infoitem
* gcalc
* RSS

other plugins will follow but the focus is now mainly on the bots core.

CMNDBOT is accessible at http://cmndbot.appspot.com (WEB) or cmndbot@appspot.com (WAVE/XMPP).

A gadget is also in the works at http://cmndbot.appspot.com/cmnd.xml but it only works with google chrome for now .. my javascript skills are very *kuch* young ;]

actualy this code is still young as docs are mostely missing and the bot really needs to be tested, but thats what this release is for, rememer this is still version 0.1 !

code is at http://cmndbot.googlecode.com/hg

I hope people are interested in developing this bot with me, if you do you can contact me at bthate@gmail.com or bthate@googlewave.com

Bart


GOZERBOT 0.9.1 released

August 11, 2009

here it is .. GOZERBOT 0.9.1 !!

Main change this time is the distribution method, we now provide a tar.gz with all the dependencies included. This means that you can run the bot locally without any root required. Python 2.5 or higher needed, see http://gozerbot.org

Enjoy !


GOZERBOT 0.9.1 BETA2 released

July 3, 2009

GOZERBOT has a new website !! check it out at http://gozerbot.org. This is all in preparation for the 0.9.1 release and the latest GOZERBOT beta has been released as well. Please try this version and let me know how goes.

Install is as simple as .. easy_install gozerbot gozerplugs, see README.

This release will be used to move GOZERBOT 0.9 into the debian repositories and freebsd ports.

we can be contacted on #dunkbots EFNET/IRCNET or use http://dev.gozerbot.org for any bugs you might find.

NEW IN THIS RELEASE:

* GOZERBOT is now truely free as it no longer depends on GPL licensed xmpppy, a own xmpp package has been implemented for this.

* GOZERBOT now depends on setuptools to install the proper packages

* gozerbot-nest script can be used to install all dependacies and bot code in 1 directory that can be run by the user (no root required)

* morphs are added that allow for encryption of input and output streams (not used yet)

groet,

Bart


gozerbot goes nesting

April 13, 2009

so we use pypi now to distribute gozerbot and this made me realize that easy_install could also be used to make a local installation of gozerbot. this puts gozerbot and all its dependancies into 1 directory from which gozerbot can be run. thus i made this script which is downloadable from http://gozerbot.org/gozerbot-nest

quickrun:

  • wget http://gozerbot.org/gozerbot-nest
  • chmod +x gozerbot-nest
  • ./gozerbot-nest
  • cd gozernest
  • ./gozerbot –owner <your userhost>
  • edit gozerdata/mainconfig and gozerdata/fleet/default/config
  • DONE !! ;]

here is the script for the curious:

#!/usr/bin/env python
#
#

__copyright__ = 'this file is in the public domain'

from subprocess import Popen, PIPE
import sys, site, os, subprocess

if not os.path.isdir('gozernest'):
os.mkdir('gozernest')
nestdir = os.path.abspath(os.path.join(os.getcwd(), 'gozernest'))
os.environ['PYTHONPATH'] = nestdir
proc = Popen('easy_install --install-dir gozernest -U gozerbot gozerplugs'.split() + sys.argv[1:], stdout=sys.stdout, shell=False)
proc.wait()
print 'done'
os._exit(0)


GOZERBOT 0.9 RELEASED

February 6, 2009

Finally gozerbot 0.9 has been released.  This is a huge step forward to version 1.0 and contains a number of changes:

  • use json as the format to save data in instead of pickles
  • let config files also use json, this makes them more readable and human editable
  • remove popen usage from the bot core
  • remove execfile() calls from the bot core
  • rewrite the gozerbot package into several subpackages
  • use sqlaclhemy to provide database backend (sqlite3 is default)
  • require python2.5
  • move most of the plugins into their own package
  • restructure the gozerdata layout so its more readable

All these changes makes upgrading from older versions of gozerbot necessary so a gozerbot-upgrade program is provided (upgrading from 0.7 is not supported yet, will follow soon).

See http://gozerbot.org on how to install gozerbot 0.9


shell injection bug found in the ping.py plugin

February 5, 2009

last week a shell injection bug was found in the ping.py plugin. this plugin is not part of the basic gozerbot distribution but can be installed from a remote plugin server with the !install-plug command. this plugin is also provided with the following gozerplug distributions:

  • gozerplugs-BETA1.tar.gz
  • gozerplugs-BETA2.tar.gz
  • gozerplugs-BETA3.tar.gz

all gozerbot maintainers are asked to remove the ping.py plugin from the myplugs (0.8) or gozerplugs (0.9) directory and restart the bot.

because this is a serious bug the gozerbot core is rewritten to remove usage of popen as much as possible and not to allow remote execution of popen calls to the user. therefor the install plugin and upgrade plugins have been removed from core and a seperate program gozerbot-install has been made to allow bot maintainers to install remote plugins while not exposing the installation of plugins to bot users.

this is all done in the new 0.9 release of gozerbot which i will anounce soon.

Bart


Request For (gozerbot) Testers

January 2, 2009

So 0.9 is getting in shape and there is one issue that keeps me from releasing 0.9 and that is the upgrade path. 0.9 is vastely different from 0.8 so a special upgrade script has been written to aid with this. Now i have tested this on some gozerbot users but i need a more broader audience that wants to test this for me. So if you run a 0.8 gozerbot you could help me out with testing the 0.9 upgrade script, testing can be done along side your own bot so you dont loose your old configuration.

To test do the following:

1) hg clone http://core.gozerbot.org/hg/dev/0.9 0.9bot
2) cd 0.9bot
3) hg clone http://core.gozerbot.org/hg/plugs/gozerplugs
4) ./bin/gozerbot-upgrade <oldbotdir> .
5) ./bin/gozerbot

Check if the bot has converted your data properly with the !size command. As a last step you can test the plugins with the !test-plugs command.
If you have any problems with testing gozerbot 0.9 let me know on #dunkbots IRCnet or at bthate@gmail.com .. THNX ;]

Bart


GOZERBOT and the battle of the beta’s

December 1, 2008

version 1.0 of gozerbot is drawing nearer and nearer and this makes me nervous. When 1.0 hits the streets it needs to be API stable so people that write plugins for gozerbot can rely on gozerbot to NOT change. This however turned out difficult for me todo as i have the desperate urge to change the core once every while. So while we are at 0.8.1.1 now i thought of making small changes in 0.8.2 0.8.3 etc until we reached 0.9 hoping at that time that things would have stabilized.

This however turned more difficult because the changes i needed to make in gozerbot were so drastic that the code base got FORKED because keeping backwards compatible code in gozerbot made it grow into obscurity. The fork was made by maze one of gozerbot biggest contributors see http://boozer.codehub.org/.

Like a wakeup call this made my alarm fase turn red and rushed me into moving towards a 0.9 release now in which i try to do all the changes i think are necessary for gozerbot 1.0.

changes as i have them at this moment are:

  • rewriting of the gozerbot package into several subpackages
  • moving base plugins into the gozerbot package so basic bot functionality is provided into the core
  • use sqlite3 as the base backend storage
  • depend on sqlalchemy to also provide backends to other databases
  • moving locally installed plugins into a “gozerplugs” package, this is because the “myplugs” install target didn’t provide enough namespace purity
  • use a new config file format based on json .. no execfile used anymore, plugin config files are now human editable
  • use a new layout of the gozerdata dir adding users, fleet and plugins directories to store related data
  • let Persist class now use json to serialize data to disk as well, getting rid of pickles all to gether since they were the root of a lot of upgrade problems (peristed classed are stored by name making it difficult to move modules around)
  • move third party software into the botdir level. This makes the code as if it the code were globally installed. Basically done so that gozerbot is easier installed on systems like debian and freebsd
  • rename some of the provided programs .. gozerbot-init gozerbot-upgrade

These changes make a huge difference in format in which data is stored, so a seperate upgrade program will be provided in 0.9 to convert older formats into the new one. This however needs a lot of testing and is not yet completed

Anyone who want to help cranking the bugs out of 0.9 is very welcome in out channel #dunkbots on IRCNET. Tarballs are available from http://gozerbot.org but if you want to get into gozerbot development or testing running it from the developement mercurial repository is best. By running it from mercurial it makes it easy to sync changes i make to the bot base by simply running the !upgrade command. repo is at http://core.gozerbot.org/hg/dev/0.9

I really hope that i can finish this need to change urge and stabilize the bot API wise.

Bart