Robin Gareus

anyIdentity

the swiss army knife of anyMeta

anyIdentity a collection of QT4 C++ classes to access anyMeta. It's a muliPlatform chameleon that can be used non-interactively on the commandline or display an interactive graphical user interface.

Enlarge

anyIdentity-win-small.png - the anyIdentity registration desk running on winXP.

Introduction

QT is a C++ framework for Applications on Windows, Linux, OSX, BSD and even many mobile application hosts.
anyIdentity uses the QT HTTP interface and liboauth (included in src) to provide a basis for 3rd party access to anyMeta.

High-level functions (eg. image-file upload, title lookup, RFID lookup) are available from the command line . Nearly every programming language can interact with this and the command mode offers a neat and extensible interface for all kind of custom applications on any host operating-system.

anyIdentity includes RFID reader support (qt-serialport is included in src) and has a system independent interchangeable configuration file with multiple user-profiles.

More complex tasks that require tighter integration than the command line can be modeled with QT-GUI . The example applications below were all derived from a shared main class which includes configuration, preferences for the anyMeta connection and the transport layer.

While the anyMeta service interface is part of my work at mediamatic, the anyIdentity framework has been developed in spare time as 3rd party application and is open-source. Many thanks to mediamatic for funding debug time and making it possible in the first place. Kudos to Marc Worrell and the anyMeta team for the great REST interface.

Download and getting started

binaries

compile from source

prerequisites: c-compiler and qt4-development environment

  svn co svn://svn.mediamatic.nl:/mm/anyIdentity/trunk anyIdentity

compile it (osx and linux):

  cd qextserialport ; qmake && make ; cd ..
  qmake && make

cross-compile for windows:

  cd qextserialport ; qmake -spec win32-x-g++ && make ; cd ..
  qmake -spec win32-x-g++ && make

Note: There are build-scripts included with the source to cross compile and package this software, but they are beyond the scope of this article.

getting Started

usage: executing anyIdentity will show the --desk (RFID registration desk) default window. The -h command line argument prints the built-in help.

The windows installer creates some start-menu entries to launch anyIdentity with all gui options.

On osX you can launch the application by using the icon but you need to resort to start it from a terminal in order to pass any parameters:

/Application/anyIdentity.app/Contents/MacOS/anyIdentity -h

Once the GUI has popped up use the Menubar (or keyboard shortcuts) to

  1. Either import a configuration file (Menu->Extra->Import Config) - select a .ini file. Open the profile select dialog (menu->profiles) to switch to the imported profile (this is optional and depends on the .ini file - import can replace the active profile but does not needs not to do so)
  2. or enter the preference dialog (Menu->Preferences) more information on profiles and settings is below.

operation modes

The current development code is a BusyBox: You can launch multiple applications from the same executable. - It's a tentative solution to prevent premature code optimization. Expect future releases to contain standalone executables from the same codebase.

anyIdentity

The classic RFID registration desk.

implemtes two live-search interfaces: one lists persons matching a name ,
the other is coupled to a RFID reader and looks up tag IDs in the system.

By selecting either person and or tag-ID, one can look up existing connections, assign or unlink RFID tags from/to Users.

anyRfid

The public Version of anyIdentity. requires password verification to assign RFIDs and allows the user to confirm assigned tags.

anyMedia

An image file browser that can (batch) upload pictures into anyMeta, create edges and lookup anyMeta IDs for pictures on the local filesystem. - it's a prototype.

anyREST

also known as the --expert mode. It's a GUI that allows you to perform HTTP-REST requests and get the result XML output parsed in a tree. It even reads the online restDocumentation for you and is a nice sandbox for testing the REST interface of anyMeta. - works fine but does not check parameters - see ToDo ;)

anyCMD

the commad line interface to anyIdentity.

Note: You need to use one of the GUI's to configure the system before using the --cmd mode. anyCMD reads the active config (the last recently selected profile). command line configuration and profile is on the ToDo list.

on linux run : anyIdentity -h
on osx run: /Application/anyIdentity.app/Contents/MacOS/anyIdentity -h
on Window: C:/Program Files/anyIdentity/anyIdentity.exe -h (or sometimes C:/proga~01/anyId~01/anyIdentity.exe -h )

example upload.bat: anyIdentity.exe --cmd upload-img 60 C:\image.jpg "test image upload"

Profiles and Preferences

Settings and presets can be exchanged between systems via .ini text files (see the Menubar "Extra" Import/Export). Each configuration consists of a global section and multiple profiles. The global section is concerned with system configuration (eg. RFID reader port), while the profiles specify anyMeta connection settings.

With [CTRL-e] profiles can be hot-swapped on the fly (the last selected will be saved) allowing to switch between servers or use different authentication settings to access anyMeta. - live systems will usually be shipped with one profile only.

Config profiles can be locked in order to prevent the user from viewing the credentials or modify it's settings. OTOH the global configuration remains editable which allows local customization. After the configuration is locked and the app restarted the "Extra" Menu is no longer available and only expert users can unlock the config again (see the help in the preference dialog and dialog windows for more info on locking.)

Screenshots