diff --git a/ffac-dsl/LICENSE b/ffac-dsl/LICENSE new file mode 100644 index 00000000..fa1f0002 --- /dev/null +++ b/ffac-dsl/LICENSE @@ -0,0 +1,24 @@ +BSD 2-Clause License + +Copyright (c) 2024, Florian Maurer + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/ffac-dsl/Makefile b/ffac-dsl/Makefile new file mode 100644 index 00000000..e96d19b6 --- /dev/null +++ b/ffac-dsl/Makefile @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: 2024 Florian Maurer +# SPDX-License-Identifier: BSD-2-Clause +include $(TOPDIR)/rules.mk + +PKG_NAME:=ffac-dsl +PKG_VERSION:=1.0 +PKG_RELEASE:=1 + +PKG_LICENSE:=BSD-2-Clause + +include $(TOPDIR)/../package/gluon.mk + +define Package/$(PKG_NAME) + TITLE:=Configure Gluon firmware for DSL usage + DEPENDS:=ppp +endef + +define Package/$(PKG_NAME)/description + This package allows to set DSL credentials in gluon to connect WAN directly from DSL. + Besides the username and password, the vlanid can be set. +endef + +$(eval $(call BuildPackageGluon,$(PKG_NAME))) diff --git a/ffac-dsl/luasrc/lib/gluon/upgrade/510-wan-dsl b/ffac-dsl/luasrc/lib/gluon/upgrade/510-wan-dsl new file mode 100755 index 00000000..e3738222 --- /dev/null +++ b/ffac-dsl/luasrc/lib/gluon/upgrade/510-wan-dsl @@ -0,0 +1,34 @@ +#!/usr/bin/lua + +local uci = require('simple-uci').cursor() + +local enabled = uci:get_bool('gluon', 'dsl', 'enabled', false) +local vlanid = uci:get('gluon', 'dsl', 'vlanid') +local username = uci:get('gluon', 'dsl', 'username') +local password = uci:get('gluon', 'dsl', 'password') + +if enabled == true then + -- add interface for DSL + uci:section('network','interface','wdsl',{ + device = 'dsl0.' .. tostring(vlanid), + proto='pppoe', + username=username, + password=password, + ipv6='auto', + }) + + uci:section('firewall','rule','wdsl_dhcpv6',{ + name = 'DSL DHCPv6', + src = 'wdsl', + family = 'ipv6', + dest_port = '546', + proto = 'udp', + target = 'ACCEPT', + }) +else + uci:delete('network', 'wdsl') + uci:delete('network', 'wdsl6') + uci:delete('firewall', 'wdsl_dhcpv6') +end + +uci:commit('network') diff --git a/ffac-web-dsl/Makefile b/ffac-web-dsl/Makefile new file mode 100644 index 00000000..9d89376f --- /dev/null +++ b/ffac-web-dsl/Makefile @@ -0,0 +1,14 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=ffac-web-dsl +PKG_VERSION:=1 +PKG_RELEASE:=1 + +include $(TOPDIR)/../package/gluon.mk + +define Package/$(PKG_NAME) + TITLE:=gluon-web module to configure ffac-dsl + DEPENDS:=+gluon-web-admin +ffac-dsl +endef + +$(eval $(call BuildPackageGluon,$(PKG_NAME))) diff --git a/ffac-web-dsl/i18n/de.po b/ffac-web-dsl/i18n/de.po new file mode 100644 index 00000000..bd628570 --- /dev/null +++ b/ffac-web-dsl/i18n/de.po @@ -0,0 +1,30 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2024-12-26 12:00+0100\n" +"Last-Translator: \n" +"Language-Team: German\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Enabled" +msgstr "Aktiviert" + +msgid "DSL" +msgstr "" + +msgid "VLAN-ID" +msgstr "" + +msgid "Username" +msgstr "Nutzername" + +msgid "Password" +msgstr "Passwort" + +msgid "ffac-web-dsl:description" +msgstr "" +"Setzt die DSL Authenfizierung für direkte WAN Anbindung des Uplinks durch DSL" diff --git a/ffac-web-dsl/i18n/en.po b/ffac-web-dsl/i18n/en.po new file mode 100644 index 00000000..dc700d96 --- /dev/null +++ b/ffac-web-dsl/i18n/en.po @@ -0,0 +1,15 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2024-12-26 12:00+0100\n" +"Last-Translator: \n" +"Language-Team: English\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "ffac-web-dsl:description" +msgstr "" +"Sets DSL credentials for direct usage of WAN as mesh-vpn uplink" diff --git a/ffac-web-dsl/i18n/ffac-web-dsl.pot b/ffac-web-dsl/i18n/ffac-web-dsl.pot new file mode 100644 index 00000000..7fd82929 --- /dev/null +++ b/ffac-web-dsl/i18n/ffac-web-dsl.pot @@ -0,0 +1,20 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Enabled" +msgstr "" + +msgid "Username" +msgstr "" + +msgid "Password" +msgstr "" + +msgid "VLAN-ID" +msgstr "" + +msgid "DSL" +msgstr "" + +msgid "ffac-web-dsl:description" +msgstr "" diff --git a/ffac-web-dsl/luasrc/lib/gluon/config-mode/controller/admin/ffac_dsl.lua b/ffac-web-dsl/luasrc/lib/gluon/config-mode/controller/admin/ffac_dsl.lua new file mode 100644 index 00000000..5084192e --- /dev/null +++ b/ffac-web-dsl/luasrc/lib/gluon/config-mode/controller/admin/ffac_dsl.lua @@ -0,0 +1,3 @@ +package 'ffac-web-dsl' + +entry({"admin", "ffac_dsl"}, model("admin/ffac_dsl"), _("DSL"), 50) diff --git a/ffac-web-dsl/luasrc/lib/gluon/config-mode/model/admin/ffac_dsl.lua b/ffac-web-dsl/luasrc/lib/gluon/config-mode/model/admin/ffac_dsl.lua new file mode 100644 index 00000000..f9fa0321 --- /dev/null +++ b/ffac-web-dsl/luasrc/lib/gluon/config-mode/model/admin/ffac_dsl.lua @@ -0,0 +1,38 @@ +local uci = require("simple-uci").cursor() + +local f = Form(translate("DSL")) + +local s = f:section(Section, nil, translate('ffac-web-dsl:description')) + +local enabled = s:option(Flag, "enabled", translate("Enabled")) +enabled.default = uci:get_bool('gluon', 'dsl', 'enabled', false) + +local username = s:option(Value, "username", translate("Username")) +username:depends(enabled, true) +username.default = uci:get('gluon', 'dsl', 'username') + +local password = s:option(Value, "password", translate("Password")) +password:depends(enabled, true) +password.default = uci:get('gluon', 'dsl', 'password') + +local vlanid = s:option(Value, "vlanid", translate("VlanID")) +vlanid:depends(enabled, true) +vlanid.default = uci:get('gluon', 'dsl', 'vlanid') or '0' + +function f:write() + local dsl_enabled = false + if enabled.data then + dsl_enabled = true + end + + uci:section('gluon', 'dsl', 'dsl', { + enabled = dsl_enabled, + vlanid = vlanid.data, + username = username.data, + password = password.data, + }) + + uci:commit('gluon') +end + +return f