Wednesday, November 23, 2011

New version of GVMax released

Yesterday I released a new version of GVMax. I have not had time to update the documentation on the website yet, but thought I would write something here until I do.

Although to most users nothing much changes, this version is in fact an almost complete rewrite. I completely restructured GVMax to make it much more robust. I is now split into 6 different programs:

  • web: The website and api endpoints.
  • smtp: The mail server in charge of receiving the SMS and VM emails
  • server: Where all the magic happens
  • relay: In charge of handling GTalk messages and out-bound emails (runs on appengine)
  • keyman: In charge of encryption keys (runs on appengine)
  • queue: Holds the incoming emails and GTalk messages until server picks it up.
I can now upgrade the server for example without bringing down the web interface and without losing any messages while it is down.


This new version of GVMax is also much more secure. Each user's settings is stored in the database using a user-specific encryption key which is based on their email and pin. What this means is that even I cannot decrypt the data unless the user tells me his email or pin.

Additionally no keys are stored in the server, key management is handled by 'keyman' which is running on appengine. When I start 'server' for example I must enter my 'master' password as well as a 'OneTimePassword' generated by a Yubico key. So for anyone to be able to get the required keys they would need to know my password as well as have access to my Yubico key. Additionally an email is sent to me whenever someone attempts to authenticate with 'keyman'

New Features

This version does have a number of new features as well as some bug fixes
  • Missed call notifications. You can now get missed call notification. (Note you will have to log into GoogleVoice and ensure that GoogleVoice is sending missed call notification emails, since I have not updated my account creation code to do it automatically as I do with SMS and Voicemail.
  • Group SMS. Sending SMS to groups in the old version was hit and miss. It should be working much better in the new version. Note that I will stagger the sending of these SMSs to ensure I don't get blocked. I have access to 50 odd numbers for testing and can send a group SMS to those numbers with no problems. Another user let me know that he was able to send it to a group containing 260 contacts.
  • Two-factor login support. You can now use GVMax even if your Google Voice account uses two-factor authentication. You will ofcourse need to generate a application-specific password for GVMax.
  • Extended API. I have extended the functionality of GVMax's API, so instead of only being able to send SMS, it now has all the functionality available to GVMax (for example you can change settings etc)
There are a number of other small features that I have added and quite a few bug fixes, but I can't remember them right now.

ps: Since there was so much change under the hood, I am sure I have also introduced a few bugs, but hopefully I can iron these out quickly.

Hope you guys like it.