System Details
This software has been developed in C++ in Red Hat Enterprise Linux systems, kernel version 2.6.9-11. It is integrated into the presence server.
Program Internal Operation :
When a SUBSCRIBE request comes in the subscribe handler calls the getAuthorization() API from the SubscriptionAuthorization module which in turn gets the Subscription handling value for that subscriber as a result of rule matching and rule combination processes (PrivacyRuleMatch). The PolicyQuery module acts as an interface for the other modules with the rules database. PrivacyRuleMatch makes use of PolicyQuery object to query the database and get rules that match a given subscriber and a given presentity. It then combines the matched rules into a single rule for that subscriber according to the algorithm specified in the common-policy specification.Once the subscription is handled, the subscriber may be notified with filtered presence document depending on how the subscription is handled..
For filtering the presence document,the PrivacyFilter module comes into play. This module has a function called doFilter() API which internally parses the composed presence document and depending on permissions applicable to the watcher, elements in the presence document may be retained or removed. The final filtered document is returned to the notify handler/publish handler.
Testing
Numerous tests were conducted to cover various types of policy documents (rules) and various types of presence documents. These tests are outlined in the Test Cases Document
Known Bugs/Issues
- Filtering on <provide-services>,<provide-devices> and <provide-persons> when explicit occurences are specified (<all-services>,<all-devices> and <all-persons> work fine).
- Filtering of unknown elements from the presence document.
Acknowledgements
I would like to thank Professor Henning Schzulrinne, Dept. of Computer Science, Columbia University for providing valuable guidance and feedback throughout this project. I would also like to thank Vishal.K.Singh ,Columbia University, for all his help in getting more acquainted with the SIP presence server and providing guidance throughout this project.