@@ -601,3 +601,107 @@ Expected outcomes
601
601
from `ansible-openwisp2
602
602
<https://github.com/openwisp/ansible-openwisp2> `_ and `docker-openwisp
603
603
<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.
0 commit comments