RADIUSdesk

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
user_guide:mikrotik:openwrt_rb750gr3_sdk_19 [2021/02/16 12:06] – [Introduction] adminuser_guide:mikrotik:openwrt_rb750gr3_sdk_19 [2021/03/15 09:14] (current) – [Select required packages] admin
Line 55: Line 55:
 ./scripts/feeds install luci-theme-material ./scripts/feeds install luci-theme-material
 </code> </code>
 +
 +===== Tweak CoovaChilli to include support for JSON =====
 +  * We will borrow some things from the config files inside the the master branch of OpenWRT to include the option for the JOSN interface when configuring the firmware before building it.
 +  * Edit the **openwrt/feeds/packages/net/coova-chilli/Config.in** to look like this (Repalce with this file)
 +<file bash  Config.in>
 +# CoovaChilli advanced configuration
 +
 +if PACKAGE_coova-chilli
 +
 +config COOVACHILLI_PROXY
 + bool "Enable support for chilli proxy. Required for AAA Proxy through http"
 + default n
 +
 +config COOVACHILLI_REDIR
 + bool "Enable support for redir server. Required for uamregex"
 + default n
 +
 +config COOVACHILLI_MINIPORTAL
 + bool "Enable support Coova miniportal"
 + default n
 +
 +config COOVACHILLI_USERAGENT
 + bool "Enable recording user-agent"
 + default n
 +
 +config COOVACHILLI_UAMDOMAINFILE
 + bool "Enable loading of mass uamdomains from file"
 + default n
 +
 +config COOVACHILLI_LARGELIMITS
 + bool "Enable larger limits for use with non-embedded systems"
 + default n
 +
 +config COOVACHILLI_JSONINTERFACE
 + bool "Enable the JSON interface for the CoovaChilli Controller"
 + default n
 +
 +choice
 + prompt "SSL library"
 + default COOVACHILLI_NOSSL
 +
 +config COOVACHILLI_NOSSL
 + bool "No SSL support"
 +
 +config COOVACHILLI_WOLFSSL
 + bool "wolfSSL"
 +
 +config COOVACHILLI_OPENSSL
 + bool "OpenSSL"
 +
 +endchoice
 +
 +endif
 +</file>
 +  * Edit the **openwrt/feeds/packages/net/coova-chilli/Makefile** to look like this (Replace existing one)
 +<file bash Makefile>
 +#
 +# Copyright (C) 2007-2018 OpenWrt.org
 +#
 +# This is free software, licensed under the GNU General Public License v2.
 +# See /LICENSE for more information.
 +#
 +
 +include $(TOPDIR)/rules.mk
 +
 +PKG_NAME:=coova-chilli
 +PKG_VERSION:=1.4
 +PKG_RELEASE:=10
 +
 +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 +PKG_SOURCE_URL:=https://codeload.github.com/coova/coova-chilli/tar.gz/$(PKG_VERSION)?
 +PKG_HASH:=987647a4c8efe7b1e2d7108d56068e3bd7830d326680f0eaa2c705e4c59c46d9
 +
 +PKG_MAINTAINER:=Jaehoon You <teslamint@gmail.com>
 +PKG_LICENSE:=GPL-2.0-or-later
 +PKG_LICENSE_FILES:=COPYING
 +
 +PKG_FIXUP:=autoreconf
 +PKG_INSTALL:=1
 +PKG_BUILD_PARALLEL:=0
 +
 +PKG_CONFIG_DEPENDS:= \
 +  COOVACHILLI_JSONINTERFACE \
 +  COOVACHILLI_LARGELIMITS \
 +  COOVACHILLI_MINIPORTAL \
 +  COOVACHILLI_NOSSL \
 +  COOVACHILLI_OPENSSL \
 +  COOVACHILLI_PROXY \
 +  COOVACHILLI_REDIR \
 +  COOVACHILLI_UAMDOMAINFILE \
 +  COOVACHILLI_USERAGENT \
 +  COOVACHILLI_WOLFSSL \
 +  IPV6
 +
 +include $(INCLUDE_DIR)/package.mk
 +include $(INCLUDE_DIR)/kernel.mk
 +
 +define Package/coova-chilli
 +  SUBMENU:=Captive Portals
 +  SECTION:=net
 +  CATEGORY:=Network
 +  DEPENDS:=+kmod-tun +librt +COOVACHILLI_MINIPORTAL:haserl \
 +  +COOVACHILLI_WOLFSSL:libwolfssl +COOVACHILLI_OPENSSL:libopenssl \
 +  +COOVACHILLI_JSONINTERFACE:libjson-c
 +  TITLE:=Wireless LAN HotSpot controller (Coova Chilli Version)
 +  URL:=https://coova.github.io/
 +  MENU:=1
 +endef
 +
 +define Package/coova-chilli/description
 + CoovaChilli is an open source access controller for wireless LAN
 + access points and is based on ChilliSpot. It is used for authenticating
 + users of a wireless (or wired) LAN. It supports web based login (UAM)
 + which is today's standard for public HotSpots and it supports Wireless
 + Protected Access (WPA) which is the standard of the future.
 + Authentication, authorization and accounting (AAA) is handled by your
 + favorite radius server.
 +endef
 +
 +define Package/coova-chilli/config
 +  source "$(SOURCE)/Config.in"
 +endef
 +
 +define KernelPackage/ipt-coova
 +  URL:=http://www.coova.org/CoovaChilli
 +  SUBMENU:=Netfilter Extensions
 +  DEPENDS:=coova-chilli +kmod-ipt-core +libxtables
 +  TITLE:=Coova netfilter module
 +  FILES:=$(PKG_BUILD_DIR)/src/linux/xt_*.$(LINUX_KMOD_SUFFIX)
 +  AUTOLOAD:=$(call AutoProbe,xt_coova)
 +endef
 +
 +define KernelPackage/ipt-coova/description
 + Netfilter kernel module for CoovaChilli
 + Includes:
 + - coova
 +endef
 +
 +DISABLE_NLS=
 +
 +TARGET_CFLAGS += $(FPIC) -Wno-error
 +
 +CONFIGURE_VARS += \
 +       ARCH="$(LINUX_KARCH)" \
 +       KERNEL_DIR="$(LINUX_DIR)"
 +
 +MAKE_FLAGS += \
 +       ARCH="$(LINUX_KARCH)" \
 +       KERNEL_DIR="$(LINUX_DIR)"
 +
 +MAKE_INSTALL_FLAGS += \
 +       ARCH="$(LINUX_KARCH)" \
 +       KERNEL_DIR="$(LINUX_DIR)" \
 +       INSTALL_MOD_PATH="$(PKG_INSTALL_DIR)"
 +
 +define Build/Prepare
 +$(call Build/Prepare/Default)
 + ( cd $(PKG_BUILD_DIR) ; \
 + [ -f ./configure ] || { \
 + ./bootstrap ; \
 + } \
 + )
 +endef
 +
 +define Build/Configure
 + $(call Build/Configure/Default, \
 + $(if $(CONFIG_COOVACHILLI_PROXY),--enable,--disable)-chilliproxy \
 + $(if $(CONFIG_COOVACHILLI_REDIR),--enable,--disable)-chilliredir \
 + $(if $(CONFIG_COOVACHILLI_MINIPORTAL),--enable,--disable)-miniportal \
 + $(if $(CONFIG_COOVACHILLI_USERAGENT),--enable,--disable)-useragent \
 + $(if $(CONFIG_COOVACHILLI_LARGELIMITS),--enable,--disable)-largelimits \
 + $(if $(CONFIG_COOVACHILLI_JSONINTERFACE),--enable,--disable)-libjson \
 + $(if $(CONFIG_COOVACHILLI_JSONINTERFACE),--enable,--disable)-json \
 + $(if $(CONFIG_COOVACHILLI_UAMDOMAINFILE),--enable,--disable)-uamdomainfile \
 + $(if $(CONFIG_IPV6),--with,--without)-ipv6 \
 + $(if $(CONFIG_COOVACHILLI_WOLFSSL),--with,--without)-cyassl \
 + $(if $(CONFIG_COOVACHILLI_OPENSSL),--with,--without)-openssl \
 + $(if $(CONFIG_PACKAGE_kmod-ipt-coova),--with-nfcoova) \
 + )
 +endef
 +
 +define Package/coova-chilli/conffiles
 +/etc/config/chilli
 +endef
 +
 +define Package/coova-chilli/install
 + $(INSTALL_DIR) $(1)/etc
 + $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/chilli.conf $(1)/etc/
 + $(INSTALL_DIR) $(1)/etc/chilli
 + $(CP) $(PKG_INSTALL_DIR)/etc/chilli/* $(1)/etc/chilli/
 + $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
 + $(INSTALL_DATA) ./files/chilli.hotplug $(1)/etc/hotplug.d/iface/30-chilli
 + $(INSTALL_DIR) $(1)/usr/sbin
 + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/chilli* $(1)/usr/sbin/
 + $(INSTALL_DIR) $(1)/usr/lib/
 + $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so.* $(1)/usr/lib/
 + $(if $(CONFIG_PACKAGE_kmod-ipt-coova), \
 + $(INSTALL_DIR) $(1)/usr/lib/iptables; \
 + $(CP) $(PKG_INSTALL_DIR)/usr/lib/iptables/lib*.so $(1)/usr/lib/iptables/ \
 + )
 + $(INSTALL_DIR) $(1)/etc/init.d
 + $(INSTALL_BIN) files/chilli.init $(1)/etc/init.d/chilli
 + $(INSTALL_DIR) $(1)/etc/config
 + $(INSTALL_DATA) files/chilli.config $(1)/etc/config/chilli
 +endef
 +
 +$(eval $(call BuildPackage,coova-chilli))
 +$(eval $(call KernelPackage,ipt-coova))
 +
 +</file>
 +===== Select target system and model =====
 +  * Under the **openwrt** folder type:
 +<code bash>
 +make menuconfig
 +</code>
 +  * For **Target System** select **MediaTek Ralink MIPS**
 +  * For **Subtarget** select **MT7621based boards**
 +  * For **Profile** select **Mikrotik RouterBOARD 750Gr3**
 +
 +Next we will select the packages to include
 +
 +
 +===== Select required packages =====
 +  * The default package selection by OpenWRT is pretty good to get a standard working firmware done.
 +  * We will do the following additional selections
 +
 +^ Package      ^ Location       ^ Comment          ^
 +| coova-chilli   | Network -> Captive Portals    | Select **Enable the JSON interface for the CoovaChilli Controller**, **Enable support Coova miniportal** and  **OpenSSL** as **SSL Library**       |
 +| luci  | Luci -> Collections | Required for web management    |
 +| luci-theme-material  | Luci -> Themes | Modern theme as a nice-to-have    |
 +
 +  * After that you can save and exit
 +
 +===== Kick off the built =====
 +  * Everything is now in place to start the firmware built
 +  * Enter the following under the **openwrt** folder
 +<code bash>
 +make
 +</code>
 +  * If the build completes with success it will be located here:
 +<code bash>
 +ls -l bin/targets/ramips/mt7621/
 +total 9412
 +-rw-r--r-- 1 system system    1590 Feb 16 15:39 config.buildinfo
 +-rw-r--r-- 1 system system     343 Feb 16 15:39 feeds.buildinfo
 +-rw-r--r-- 1 system system    3196 Feb 16 15:41 openwrt-ramips-mt7621-device-mikrotik-rb750gr3.manifest
 +-rwxr-xr-x 1 system system 4692436 Feb 16 15:41 openwrt-ramips-mt7621-mikrotik_rb750gr3-initramfs-kernel.bin
 +-rw-r--r-- 1 system system 4915980 Feb 16 15:41 openwrt-ramips-mt7621-mikrotik_rb750gr3-squashfs-sysupgrade.bin
 +drwxr-xr-x 2 system system    4096 Feb 16 15:40 packages
 +-rw-r--r-- 1 system system     628 Feb 16 15:41 sha256sums
 +-rw-r--r-- 1 system system      18 Feb 16 15:39 version.buildinfo
 +
 +</code>
 +
 +