Three months have passed since the beginning of this experience. I was quite fortunate to work for OpenWISP on django-freeradius under the guidance of my mentors Federico Capoano, Iacopo Spalletti and Ilaria De Marinis. With this project, I managed to learn many new things but above all, I started to understand freeradius . This summer I have improved my knowledge and skills thanks to the guidance and the patience of my mentors.
The Project
Django-freeradius is the project I worked on this summer and it is part of the OpenWISP project.
Django-freeradius is a web interface for freeradius. But what’s freeradius exactly?
“FreeRADIUS is the most popular open source RADIUS server and the most widely deployed RADIUS server in the world. It supports all common authentication protocols, and the server comes with a PHP-based web user administration tool called dialupadmin. It is the basis for many commercial RADIUS products and services, such as embedded systems, RADIUS appliances that support Network Access Control, and WiMAX. It supplies the AAA needs of many Fortune-500 companies, telcos, and Tier 1 ISPs. It is also widely used in the academic community, including eduroam. The server is fast, feature-rich, modular, and scalable”.
This app, in substance, will be a web interface to manage a freeradius database, with an additional RESTful API (using django REST framework) that will be used to retrieve session data from freeradius and to allow new users to register via third party apps.
All goals archived:
- implement a reusable django app which allows to manage the main freeradius database tables (session/accounting, check, group, nas, reply) via the django-admin. (#1, #6, #7)
- model references to the
User
must should be implemented using the swappable user model mechanism of django and default todjango.contrib.auth.models.
(#13)
- implement a RESTful API that is dedicated to performing freeradius authorization. Authorization refers to the process of determining what permissions are granted to the user. (#30)
- implement a RESTful API that is dedicated to performing freeradius post-authentication. (#29)
- implement a RESTful API through which authorized users will be able to retrieve radius sessions, this API must be implemented using django REST framework. Accounting in the RADIUS protocol is the part that is responsible for keeping track of user sessions. (#3, #38)
- achieve a test coverage higher than 80%
- implement a “batch add users” feature, each batch operation and its details must be saved to the database (work in progress)
- tests added
- provide documentation using python-sphinx, the documentation must be included in a docs/ directory in the repository. http://django-freeradius.readthedocs.io/en/latest/
Main Links:
Project Repository: https://github.com/openwisp/django-freeradius
Documentation: http://django-freeradius.readthedocs.io/en/latest/
Organization Website: http://openwisp.org/
Organization Github Page: https://github.com/openwisp
Thanks to this project I learned to use freeradius, to improve my knowledge of python, django and git. I also became acquainted with Travis (how many fights with you!) and python-sphinx. I am very glad for participating in GSOC that gave me the opportunity to contribute to an open-source project. I would like to thank Google for this amazing experience. Thanks also to the OpenWISP community but above all to my mentors for their suggestions and teachings.