Skip to content

Commit a211d32

Browse files
committed
[gsoc25] Added U-spot project idea
1 parent 030fa3e commit a211d32

File tree

2 files changed

+105
-0
lines changed

2 files changed

+105
-0
lines changed

developer/gsoc-ideas-2025.rst

+104
Original file line numberDiff line numberDiff line change
@@ -601,3 +601,107 @@ Expected outcomes
601601
from `ansible-openwisp2
602602
<https://github.com/openwisp/ansible-openwisp2>`_ and `docker-openwisp
603603
<https://github.com/openwisp/docker-openwisp/>`_.
604+
605+
Enhancing Uspot Captive Portal for OpenWrt
606+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
607+
608+
.. image:: ../images/gsoc/ideas/2025/uspot.png
609+
610+
.. important::
611+
612+
Languages and technologies used: **C**, **OpenWrt**, **RADIUS**.
613+
614+
**Mentors**: *Federico Capoano*, *Sankalp*.
615+
616+
**Project size**: 350 hours.
617+
618+
**Difficulty rate**: hard.
619+
620+
This GSoC project aims to improve **Uspot**, a relatively new captive
621+
portal for OpenWrt, by implementing critical missing features that are
622+
essential for large-scale deployments. **Uspot** is a promising
623+
replacement for **CoovaChilli**, which is no longer actively developed and
624+
only receives occasional maintenance patches. However, **Uspot** lacks
625+
several important capabilities that **CoovaChilli** provides. This project
626+
will focus on adding the most critical missing features to ensure Uspot
627+
can be a viable alternative.
628+
629+
Feature list
630+
++++++++++++
631+
632+
**1. Traffic Reporting for RADIUS Accounting Interim-Updates**
633+
634+
- Implement RADIUS accounting interim-update support.
635+
- Add an option to swap input and output traffic counters (similar to
636+
CoovaChilli's ``swapoctets`` option).
637+
638+
**2. No-Challenge Authentication Mode**
639+
640+
- Implement a **nochallenge** mode where passwords are sent in plain-text
641+
to RADIUS.
642+
- Justification: OpenWISP uses Django’s modern hashing algorithms, which
643+
are significantly stronger than those supported by RADIUS.
644+
- Security: This method is secure as long as communication between the
645+
captive portal and RADIUS is encrypted using VPNs or **RadSec**.
646+
647+
**3. Support for RadSec (RADIUS over TLS)**
648+
649+
- Ensure **RadSec** can be used to encrypt RADIUS packets.
650+
- Provide documentation on how to configure Uspot with **RadSec**.
651+
652+
**4. Secure Web Authentication**
653+
654+
- Ensure that the web server can be configured to accept authentication
655+
credentials over **HTTPS**.
656+
- Provide detailed documentation on how to set up HTTPS authentication
657+
securely.
658+
659+
**5. Bandwidth Limitation Features**
660+
- **Static Configuration**: Applied to all users globally.
661+
- **Dynamic RADIUS-based Configuration**: Bandwidth limits based on
662+
RADIUS attributes (e.g., ``WISPr-Bandwidth-Max-Down``,
663+
``WISPr-Bandwidth-Max-Up``), allowing differentiated speeds based on
664+
user type.
665+
666+
**6. Traffic Consumption Limits**
667+
668+
Implement RADIUS attributes to limit total data consumption per user:
669+
670+
- ``ChilliSpot-Max-Total-Octets``
671+
- ``WISPr-Bandwidth-Max-Total``
672+
- ``CoovaChilli-Max-Total-Gigawords`` (important for limits above **4.29
673+
GB**, overcoming 32-bit integer limitations).
674+
675+
**7. VLAN Tagging Support**
676+
677+
Allow tagging user traffic with VLANs:
678+
679+
- **Global VLAN Configuration**: Apply a default VLAN tag to all users.
680+
- **RADIUS-based VLAN Assignment**: Dynamically assign VLANs based on
681+
RADIUS Access-Accept attributes, which allows to tag traffic with
682+
different VLANs based on rules defined at the application level.
683+
684+
Prerequisites to Work on This Project
685+
+++++++++++++++++++++++++++++++++++++
686+
687+
Applicants must demonstrate a solid understanding of:
688+
689+
- **C programming** (for modifying Uspot’s core functionality).
690+
- **Networking protocols**, including **RADIUS** and **VLANs**.
691+
- **OpenWrt development** (building and packaging OpenWrt software).
692+
- **Secure authentication mechanisms** (RadSec, HTTPS authentication).
693+
- **Linux network stack**, particularly how OpenWrt handles network
694+
interfaces and firewall rules.
695+
696+
Expected Outcomes
697+
+++++++++++++++++
698+
699+
- Implementation of the missing features in **Uspot**, getting closer to
700+
parity with key **CoovaChilli** functionalities.
701+
- Comprehensive testing and validation of each new feature.
702+
- Ensure all changes are merged upstream into the **Uspot** repository.
703+
- Update OpenWrt packages for the most recent **three** OpenWrt versions
704+
to include these enhancements.
705+
- Provide documentation on how to configure and use these new features.
706+
- Potential adoption of **Uspot** as a fully functional captive portal
707+
replacement for **CoovaChilli** in OpenWISP deployments.

spelling_wordlist.txt

+1
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,7 @@ upgrader
277277
upgraders
278278
uptime
279279
urlconf
280+
uspot
280281
utils
281282
uwsgi
282283
uWSGI

0 commit comments

Comments
 (0)