# GuardianSuit **Repository Path**: binghe021/GuardianSuit ## Basic Information - **Project Name**: GuardianSuit - **Description**: No description available - **Primary Language**: JavaScript - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-21 - **Last Updated**: 2026-08-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Captive Portal Template
If you like my work and appreciate my commitment, you can buy me a coffee.
If you want to customize this template to your own needs, please contact me! ( mix@proask.pl ) I offer professional help in customizing solutions that perfectly match your requirements. Write what you need, and together we will create something exceptional! 🚀
## What is a Captive Portal? A Captive Portal allows you to force authentication or redirect to a clickable page to access the network. This is commonly used in hotspot networks, but is also widely used in corporate networks or small local area networks (e.g. shopping malls, restaurants, hotels, airports, etc.) as an additional layer of security for wireless or internet access. OPNsense’s unique template manager makes setting up your own login page an easy task. At the same time it offers additional functionalities, such as: - URL redirection - Option for your own Pop-up - Custom Splash page To read more about the captive portal, I suggest you have a look here: [OPNsense Captive Portal](https://docs.opnsense.org/manual/captiveportal.html?highlight=captive%20portal) ## 🛡️ GuardianSuit – Project Name (since v2.6.0) Starting from version 2.6.0, the Captive Portal Template is identified under the name GuardianSuit. The name is used for project identification, documentation, and further development. Earlier versions remain fully compatible, and the change does not affect configuration or usage. The repository itself will not be replaced or migrated — only its name will change at a later stage. All history, issues, releases, and existing links will remain preserved by GitHub. ## Demo OPNsense Captive Portal Page - [Globe animation](https://opnsense.myhome.cool:8001) - [Globe animation WCAG](https://opnsense.myhome.cool:8002) - [Birds animation](https://opnsense.myhome.cool:8003) - [Cells animation](https://opnsense.myhome.cool:8004) - [Fog animation](https://opnsense.myhome.cool:8005) - [Halo animation](https://opnsense.myhome.cool:8006) - [Net animation](https://opnsense.myhome.cool:8007) - [Rings animation](https://opnsense.myhome.cool:8008) - [Waves animation](https://opnsense.myhome.cool:8009)login: demo
password: demo


## Modal Configuration Group `"modal"`"css_params": {
"bg_section": "#252828" ← 1 → Global background color of the entire login section "bg_image": "" ← 2 → Optional background image displayed over bg_section "bg_repeat": "no-repeat" ← 3 → Defines background image repeat behavior "bg_position": "center center" ← 4 → Position of the global background image "bg_size": "cover" ← 5 → Scaling method of the global background image "bg_attachment": "" ← 6 → Controls background image scroll behavior (fixed / scroll) "bg_color_left_side": "" ← 7 → Background color of the left panel "bg_img_left_side": "url('/images/bg_left_side.png')" ← 8 → Background image of the left panel "bg_img_left_side_repeat": "no-repeat" ← 9 → Repeat behavior of the left panel background image "bg_img_left_side_position": "top left" ← 10 → Position of the left panel background image "bg_img_left_side_size": "cover" ← 11 → Scaling method of the left panel background image "bg_img_left_side_attachment": "" ← 12 → Scroll behavior of the left panel background image "bg_left_side_blend": "linear-gradient(0deg, #005f6b4d 0%, #005f6bbf 83.85%)" ← 13 → Gradient overlay blended with the left panel background image "logo_bg_color": "rgba(249, 253, 255, 1)" ← 14 → Background color of the logo container "logo_bg_border_radius": "6px 6px 6px 6px" ← 15 → Border radius of the logo container "bg_color_right_side": "rgba(249, 253, 255, 1)" ← 16 → Background color of the right panel "bg_img_right_side": "" ← 17 → Background image of the right panel "bg_img_right_side_repeat": "no-repeat" ← 18 → Repeat behavior of the right panel background image "bg_img_right_side_position": "top left" ← 19 → Position of the right panel background image "bg_img_right_side_size": "cover" ← 20 → Scaling method of the right panel background image "bg_img_right_side_attachment": "" ← 21 → Scroll behavior of the right panel background image "bg_right_side_blend": "" ← 22 → Optional gradient overlay for the right panel background "left_side_shadow": "0 0 40px 0 rgba(0, 0, 0, .35)" ← 23 → Shadow cast by the left panel "right_side_shadow": "0 0 40px 0 rgba(0, 0, 0, .35)" ← 24 → Shadow cast by the right panel "bg_alternate": "#818a91" ← 25 → Alternate background color used for UI accents and borders "color_primary": "#7a7a7a" ← 26 → Main text color "color_secondary": "#ffffff" ← 27 → Secondary text color "color_alternate": "#373a3c" ← 28 → Alternate text color (labels, placeholders) "link_color": "#348893" ← 29 → Default link color "link_hover_color": "#f12184" ← 30 → Link hover color "input_field_color": "#e8e8e8" ← 31 → Text color inside input fields "input_field_label_color": "#373a3c" ← 32 → Label color for input fields "input_field_bg_color": "#ffffff" ← 33 → Background color of input fields "input_field_border_color": "rgba(145, 156, 167, .27)" ← 34 → Border color of input fields "input_field_border_radius": "5px 0px 0px 5px" ← 35 → Border radius of input fields "input_field_before_bg_color": "#00b5cb" ← 36 → Background color of input prefix element "input_field_after_bg_color": "#00b5cb" ← 37 → Background color of input suffix element "input_field_placeholder_color": "#373a3c" ← 38 → Placeholder text color "button_bg_color": "#00b5cb" ← 39 → Primary button background color "button_hover_bg_color": "#f12184" ← 40 → Primary button hover background color "button_color": "#ffffff" ← 41 → Primary button text color "button_hover_color": "#ffffff" ← 42 → Primary button hover text color "lang_switcher": "#00b5cb" ← 43 → Language switcher main background "lang_switcher_trigger": "#009db1" ← 44 → Language switcher trigger background "lang_switcher_link": "#5aecff" ← 45 → Language option link color "lang_switcher_hover": "#f12184" ← 46 → Language option hover background "lang_switcher_dropdown": "#216f7a" ← 47 → Language dropdown background "lang_switcher_dropdown_hover": "#f12184" ← 48 → Language dropdown hover background "fadein": "0.5s" ← 49 → Fade-in animation duration after page load "block_padding": "50px" ← 50 → Inner padding of left and right panels "left_side_block_radius": "15px 15px 15px 15px" ← 51 → Border radius of left panel content wrapper "right_side_block_radius": "15px 15px 15px 15px" ← 52 → Border radius of right panel content wrapper "helper_bg_color": "#00b5cb" ← 53 → Background color of the TourGuide helper button "helper_color": "#ffffff" ← 54 → Text/icon color of the TourGuide helper button "helper_size": "78px" ← 55 → Width and height of the TourGuide helper button "offcanvas_margin": "15px" ← 56 → Margin around the offcanvas menu "offcanvas_trigger_border_radius": "8px 8px 8px 8px" ← 57 → Border radius of the offcanvas trigger button "offcanvas_trigger_bg_color": "#00b5cb" ← 58 → Background color of the offcanvas trigger button "offcanvas_trigger_bg_hover_color": "#f12184" ← 59 → Background color of the offcanvas trigger button on hover "offcanvas_trigger_color": "#ffffff" ← 60 → Text/icon color of the offcanvas trigger button "offcanvas_trigger_hover_color": "#ffffff" ← 61 → Text/icon color of the offcanvas trigger button on hover "offcanvas_bg_color": "#ffffff" ← 62 → Background color of the offcanvas menu panel "offcanvas_border_radius": "8px 8px 8px 8px" ← 63 → Border radius of the offcanvas menu panel "offcanvas_text_color": "#373a3c" ← 64 → Main text color inside the offcanvas menu "offcanvas_link_bg_color": "transparent" ← 65 → Background color of offcanvas menu links "offcanvas_link_bg_hover_color": "#00b5cb1a" ← 66 → Background color of offcanvas menu links on hover "offcanvas_link_color": "#348893" ← 67 → Text color of offcanvas menu links "offcanvas_link_hover_color": "#f12184" ← 68 → Text color of offcanvas menu links on hover };
## Animate Configuration Group `"animate"`"modal": {
"auth_failed_header_color": "#f12184" Color of the header for the authentication failed modal "conn_failed_header_color": "#f12184" Color of the header for the connection failed modal "show_rules_header_color": "#4ca1af" Color of the header when showing ISP rules or regulations modal "bg_color": "#ffffff" Background color of the modal content area "icon_color": "rgba(255, 255, 255, .5)" Default color of icons inside the modal "overlay_color": "rgba(0,0,0,.3)" Background overlay color covering the page when modal is visible "timeout": 5000 Time in milliseconds after which the modal automatically closes (0 = no auto-close) "zindex": 1050 Z-index used for the modal to ensure it appears above other content };
## What has changed in the template recently: - Further work on the development of the template is planned, hence the bootstrap 5.3.8 and jquery 3.7.1 libraries have been included, at the same time libraries provided natively by OPNsense will not be used - Some functions have been separated from the API, their notation has been changed - A method for dynamically loading scripts into the template has been added - in the current version it is used by vanta.js dependencies, eventually it will be used more widely - The layout has been changed, which was modeled on the Login Screen Design prepared by **Ankur Tripathi** - CSS declarations have been improved, rtl support has been improved - Particles.js has been abandoned, **Vanta.js** has been implemented in its place - thanks and respect to [@tengbao](https://github.com/tengbao/vanta) - great job! The following effects are available: **birds**, **cells**, **fog**, **globe**, **halo**, **net**, **rings** and **waves**, which can be configured in a simplified way in settings.json in the **animate** key as the preferred **effect**, its **params** and the **preset** of the declared effect. - Slovak translation included - thanks to [@Gouster4](https://github.com/Gouster4). - Optimizing the code of javascript functions. - Splitting CSS into smaller portions, nesting CSS selectors. - Blocking the ability to log into the system for a specified period of time, after a specified number of possible attempts. - Logo update for OPNsense v25 - many thanks for the update and vigilance to [@OctoCharm](https://github.com/OctoCharm). - Language selector layout modified. - Expanded digital accessibility support (**WCAG**). - Introduced a new interactive Accessibility Tour Guide (TourGuide) compliant with WCAG 2.1 AA. - Automatic locale and flag mapping has been added, updating flags and locales based on the browser's language while keeping two-letter language codes unchanged. - Added a new **Offcanvas Menu** with configurable position and items. - New translations generated using AI for multiple languages, including new locales: Shona (`sn`), Tongan (`to`), Telugu (`te`), Tamil (`ta`), Samoan (`sm`), Punjabi (`pa`), Norwegian Nynorsk (`nn`), Marathi (`mr`), Malayalam (`ml`), Kannada (`kn`), Latin (`la`), Maori (`mi`), Kazakh (`kk`), Abkhazian (`ab`), Luxembourgish (`lb`), Aymara (`ay`), Guarani (`gn`), Quechua (`qu`), and Belarusian (`be`)."animate": {
"effect": "globe", Selected animation (available: birds, cells, fog, globe, halo, net, rings, waves) "params": { Common parameters for all effects "el": "#animate-js", CSS id where the animation will be embedded "bg_position": "center center", Set the position of the background "mouseControls": true, Controlling animation by mouse movement "touchControls": true, Controlling animation by swiping on the touch screen "gyroControls": false, Controlling animations with the gyrocompass of mobile devices "minHeight": 200.00, "minWidth": 200.00 }, "preset": { Animation presets ... Other configuration keys - here I refer to the Vanta.js online configurator https://www.vantajs.com/ } };