Google Wave Server Admin

Posted on Wed 16 December 2009 in Tech

Download here.

What it does

Execute commands from google wave on your remote server.

How to set it up

You need python2.6 or greater, which sucks for a lot of debian users but I need it to be able to kill processes nicely.

Fill in the details required here. Deploy it to your own google app engine deployment and continue on the easy option.

How it works

Using google wave's api and google's datastore, when a blip is submitted an xmlrpc request is sent to your server, along with your hashed password for authentication. The python code running on the server is then executed as a sub process and the output is returned. If the server subprocess lasts more than 3 seconds it is killed and that output is returned, I can't seem to be able to wait any longer before the request times out.

As I mentioned the data is stored on google datastore. All passwords are hashed as soon as they're entered.

If you need any further details, check the source.

Why

Generating ideas with what you can do with wave mostly. Obviously this script needs locking down to be useful, I'm doubting very many want to run ls -alh from google wave a lot. But if you start extending the code you can write some cool things into waves.

o2sms it allows me to send text messages from the command line for free using my mobile phone operator's web-account(this tool only works in Ireland however). So for me to send a text message I would type. o2sms sender_in_phonebook -M 'a message'

o2sms mum -M 'Hi I am sending you a message'

So with a few changes to my script I can create a new wave add the robot participant and type

mum Hi I am sending you a message

And presto I'm sending texts from my google wave, for free.

Happys Days!

And I'm sure there is a truck load of ideas that can be done around this, the project itself is purely a proof of concept that I hope will generate some cool stuff.

Note:I did this project to learn both python and google wave's api, so apologies if the code sucks/is very PHPish.