A hight performance and lightweight captive portal solution for HTTP(s)
Go to file
2018-08-31 17:50:33 +08:00
cmake/Modules Create FindPackageMessage.cmake 2018-02-27 14:33:29 +08:00
doc delete curl depends 2018-08-20 14:42:01 +08:00
libhttpd set socket to nonblock 2018-05-25 11:43:21 +08:00
src fix some compile error 2018-08-27 14:03:33 +08:00
_config.yml Set theme jekyll-theme-modernist 2017-03-22 18:05:03 +08:00
.editorconfig Update .editorconfig 2017-03-16 16:31:29 +08:00
.gitignore add tags ignore 2018-08-20 11:04:48 +08:00
.travis.yml Update .travis.yml 2018-08-31 17:50:33 +08:00
apfree_wifidog_mqtt_protocol Create apfree_wifidog_mqtt_protocol 2017-06-09 11:38:59 +08:00
apfreewifidog.jpg add apfreewifidog.jpg 2017-12-04 10:17:29 +08:00
AUTHORS liudf 20161125 Add liudengfeng to AUTHORS file 2016-11-25 14:36:44 +09:00
authserver-offline.html Rename authserver_offline.html to authserver-offline.html 2016-11-24 17:19:03 +08:00
AUTHSERVER.md Update AUTHSERVER.md 2018-07-12 13:50:40 +08:00
CMakeLists.txt comment mqtt support 2018-08-31 11:16:17 +08:00
CONTRIBUTING.md Update CONTRIBUTING.md 2017-10-24 15:02:24 +08:00
contributors.md skip always dns resolve when ip already exist 2017-11-30 15:24:01 +08:00
COPYING Update COPYING 2018-08-22 13:35:25 +08:00
internet-offline.html Rename internet_offline.html to internet-offline.html 2016-11-24 17:19:26 +08:00
login.html Update login.html 2017-10-27 17:52:22 +08:00
logo.png add logo to project 2017-05-22 17:36:38 +09:00
NEWS Update NEWS 2016-12-23 14:24:05 +08:00
README_ZH.md Update README_ZH.md 2018-08-21 15:09:15 +08:00
README.md Update README.md 2018-08-31 16:52:16 +08:00
TODO Update TODO 2016-12-21 18:16:03 +08:00
wifidog-msg.html liudf 20161117 Add 2 file 2016-11-17 13:04:37 +09:00
wifidog-msg.html.in liudf 20160603 Change wifidog-msg page 2016-06-03 19:17:07 +09:00
wifidog-redir.html liudf 20161117 Add 2 file 2016-11-17 13:04:37 +09:00
wifidog-redir.html.front Update wifidog-redir.html.front 2016-11-25 13:29:53 +08:00
wifidog-redir.html.in liudf 20160411 move domains && mac operation to ping thread 2016-04-11 11:24:30 +09:00
wifidog-redir.html.rear Create wifidog-redir.html.rear 2016-11-24 10:48:29 +08:00
wifidog.conf liudf 20151209 Begin apfree wifidog open project 2015-12-09 13:49:51 +08:00

ApFreeWiFiDog

license PRs Welcome Issue Welcome Release Version OpenWRT KunTeng Build

Apfree WiFiDog: Efficient captive portal solution

Apfree-WiFidog is an open source captive portal solution for wireless router which with embeddable Linux(LEDE/Openwrt).

中文介绍

Enhancement of apfree-wifidog

In fact, the title should be why we choose apfree-wifidog, the reason was the following:

Stable

apfree-wifidog was widely used in tens of thousands device, which were running in business scene. In order to improve its stable, we rewrite all iptables rule by api instead of fork call, which will easily cause deadlock in multithread-fork running environment

Efficent

apfree-wifidog's http request-response is more quick, u can find statistic data in our test document

More features

apfree-wifidog support https redirect, mac temporary-pass, ip,domain,pan-domain,white-mac,black-mac rule and etc.


How to added apfree-wifidog into Openwrt package

Please go to package_apfree_wifidog


Getting started

before starting apfree-wifidog, we must know how to configure it. apfree-wifidog use OpenWrt standard uci config system, all your apfree-wifidog configure information stored in /etc/confg/wifidog, which will be parsed by /etc/init.d/wifidog to /tmp/wifidog.conf, apfree-wifidog's real configure file is /tmp/wifidog.conf

The default apfree-wifidog UCI configuration file like this:

config wifidog
    option  gateway_interface   'br-lan'
    option  auth_server_hostname    'wifidog.kunteng.org.cn'
    option  auth_server_port    8001
    option  auth_server_path    '/wifidog/'
    option  check_interval      60
    option  client_timeout      72000
    option  httpd_max_conn      200
    option  pool_mode           1
    option  thread_number       5
    option  queue_size          20
    option  wired_passed        0
    option  enable      0

auth_server_hostname was apfree-wifidog auth server, it can be domain or ip; wifidog.kunteng.org.cn is a free auth server we provided, it was also open source

pool_mode means whether to support thread pool, default supporting it cause this mode is more efficient according to our testing, u can tune thread_number and queue_size to adapt your environment, but we suggest using default value

wired_passed means whether LAN access devices need to auth or not, value 1 means no need to auth

enable means whether start apfree-wifidog when we executed /etc/init.d/wifidog start, if u wanted to start apfree-wifidog, you must set enable to 1 before executing /etc/init.d/wifidog start

How to support https rediret

In order to support https redirect, apfree-wifidog need x509 pem cert and private key, u can generate youself like this:

PX5G_BIN="/usr/sbin/px5g"
OPENSSL_BIN="/usr/bin/openssl"
APFREE_CERT="/etc/apfree.crt"
APFREE_KEY="/etc/apfree.key"

generate_keys() {
    local days bits country state location commonname

    # Prefer px5g for certificate generation (existence evaluated last)
    local GENKEY_CMD=""
    local UNIQUEID=$(dd if=/dev/urandom bs=1 count=4 | hexdump -e '1/1 "%02x"')
    [ -x "$OPENSSL_BIN" ] && GENKEY_CMD="$OPENSSL_BIN req -x509 -sha256 -outform pem -nodes"
    [ -x "$PX5G_BIN" ] && GENKEY_CMD="$PX5G_BIN selfsigned -pem"
    [ -n "$GENKEY_CMD" ] && {
        $GENKEY_CMD \
            -days ${days:-730} -newkey rsa:${bits:-2048} -keyout "${APFREE_KEY}.new" -out "${APFREE_CERT}.new" \
            -subj /C="${country:-CN}"/ST="${state:-localhost}"/L="${location:-Unknown}"/O="${commonname:-ApFreeWiFidog}$UNIQUEID"/CN="${commonname:-ApFreeWiFidog}"
        sync
        mv "${APFREE_KEY}.new" "${APFREE_KEY}"
        mv "${APFREE_CERT}.new" "${APFREE_CERT}"
    }
}

or when u start /etc/init.d/wifidog start, it will generate it automatically

Attention! when apfree-wifidog redirect https request, u will receive certificate file is illegal warning, no need to panic, it's normal response

apfree-wifidog Auth server open source project

apfree wifidog's official auth server is wwas, which support wfc pay and weixin auth-mode and more auth-way will be support.

demo video

http://www.iqiyi.com/w_19s09zie6t.html

More auth server please read AUTHSERVER.md

Test document

1, Apfree_WiFidog与原版wifidog性能对比报告

2, apfree_wifidog性能测试报告

3, 线程池和非线程池性能差别

4, 阈值调整测试技巧报告

How To Contribute

Feel free to create issues or pull-requests if you have any problems.

Please read CONTRIBUTING.md before pushing any changes.

apfree wifidog qq group 331230369

donate

wfc: weiKbu9DYg26gH2zucSHJHgH5KsuuZd3wW