How to build a special purpose browser

Ambition
One of our bravest customers, Mathias Frey from WU Vienna, is in charge of all new public IT-services for the brand new WU-campus in Vienna. His recent projects (among some fantastic others) was to provide public surf-stations: here’s Mathias’ story where he got inspiration for the new stations. The challenge with this terminals is, that it should only provide full internet access if the user is authorized via his student ID (read: a MIFARE smart card) or a username/password combination. This is were he called us and told us his idea about building a custom web-browser: lovingly called Dorfbrowser.

How we’ve done it:
If you want to reach development goals fast, Python is your friend – and so is Qt. Qt can be used directly in Python via PyQt bindings. What’s missing is a fully functional web browser: WebKit directly integrates to Qt and makes it the perfect combination to build a custom web browser. What you’ll get for free is total independence of the target deployment platform.

A simple library for accessing the necessary information from the students’ smart card has been found with RFIDIOt. Whenever an authorized card is wiped over the contact-less card-reader the browser mode changes to unlimited internet access. Limitation of internet access is implemented through two different proxy servers – one only allows access to the university network whereas the other one allows full access to the internet.

Another cool thing is the easy way to support Adobe Flash: since WebKit is compatible with Netscape plugins (npapi) the only thing to do on Ubuntu is to install Adobe Flash and activate plugins for WebKit by setting an attribute. This also theoretically works for all other plugins that provide a npapi interface.

QtWebKit.QWebSettings.setAttribute(
                 QtWebKit.QWebSettings.PluginsEnabled,
                 True)

Simplicity
It’s amazing how simple it is to build a fully functional browser with history and tab support, fullscreen mode, authentication via username/password (LDAP) or NFC-smartcard. Creating UI components with QtDesigner and PyQt to enrich them with functionality is not only easy but real fun.

Browser with limited access

Browser with limited access

Browser with full internet access

Browser with full internet access - user is automatically logged off after 90 seconds of inactivity

 

What’s missing for full kiosk-happyness:
The next step is to lock down the host OS to prevent normal users to do unintended things. An excellent step-by-step recipe can be found here: http://www.alandmoore.com/blog/2011/11/05/creating-a-kiosk-with-linux-and-x11-2011-edition/.

Do you need detailed information about implementation details: Don’t hesitate and get in touch with us – just leave a comment – we’re happy to help!

This entry was posted in General. Bookmark the permalink.

3 Responses to How to build a special purpose browser

  1. Franky says:

    “you can’t simply ‘import essay’” ;)
    http://www.icanhasinternets.com/2011/02/programming-languages-in-school/

    ne, ernsthaft mal: Opera z.B. hat nen Kiosk-Mode der easy über die commandline zu starten ist: http://de.opera.com/support/mastering/kiosk/ das blockt dann auch automatisch alt-tab und so spaß, also warum das Rad neu erfinden?

  2. Pingback: Mathias' Blog » Kiosk-Terminal mit schnellem Login