Coder Social home page Coder Social logo

zhaojh329 / wifidog-ng Goto Github PK

View Code? Open in Web Editor NEW
224.0 25.0 61.0 451 KB

Next generation WifiDog implemented in Lua.

License: GNU Lesser General Public License v2.1

C 30.36% Makefile 5.29% Shell 6.37% Lua 57.99%
wifidog portal wifi auth captive epoll weixin lua

wifidog-ng's Introduction

WifiDog-ng(中文)

license PRs Welcome Issue Welcome Release Version

Next generation WifiDog

WifiDog-ng is a very efficient captive portal solution for wireless router which with embedded linux(LEDE/Openwrt) system implemented in Lua.

Keep Watching for More Actions on This Space

Features

  • Written in Lua, so development is very efficient
  • Use ipset and writing kernel module to implement authentication management instead of using iptables to create firewall rules
  • Support roam
  • Code structure is concise and understandable

UCI Config options

Section gateway

Name Type Required Default Description
enabled bool no 0 Whether to enable wifidog
dhcp_host_white bool no 1 dhcp mac is whitelist
id string no Gateway id. If not set, the mac address of the ifname will be used
interface Openwrt interface no lan The device belong to the interface to listen by wifidog
port port number no 2060 port to listen by wifidog
ssl_port port number no 8443 ssl port to listen by wifidog
ssid ssid no Used for WeChat
checkinterval seconds no 30 How often the gateway will ping the auth server
temppass_time seconds no 30 Temporary pass time

Section server

Name Type Required Default
host string yes no
port port number no 80
ssl bool no 0
path string no /wifidog
login_path string no login
portal_path string no portal
msg_path string no gw_message.php
ping_path string no ping
auth_path string no auth

Section validated_user

Name Type Description
mac string A macaddr
comment string A comment

Section validated_domain

Name Type Description
domain string Can be a domain or ipaddr
comment string A comment

Protocol

Gateway heartbeating (Ping Protocol)

http://authserver/wifidog/ping?gw_id=xx&sys_uptime=xx&sys_memfree=xx&sys_load=xx&wifidog_uptime=xx

To this the auth server is expected to respond with an http message containing the word "Pong".

Login

http://authserver/wifidog/login?gw_address=xx&gw_port=xx&gw_id=xx&ip=xx&mac=xx&ssid=xx

Auth

http://gw_address:gw_port/wifidog/auth?token=xx

Auth confirm

http://authserver/wifidog/auth?stage=login&ip=xx&mac=xx&token=xx&incoming=xx&outgoing=xx

The response of the auth server should be "Auth: 1" or "Auth: 0"

Roam

http://authserver/wifidog/auth?stage=roam&ip=xx&max=xx

The response of the auth server should be "token=xxxxxxx" or other.

Temporary pass

http://gw_address:gw_port/wifidog/temppass?script=startWeChatAuth();

Manage

Kick off the term

wget "http://lanip:2060/wifidog/ctl?op=kick&mac=0C:1D:AF:C4:DB:FC" -O /dev/null

Relaod config

wget "http://lanip:2060/wifidog/ctl?op=reload" -O /dev/null

Show device

ipset list wifidog-ng-mac

Contributing

If you would like to help making wifidog-ng better, see the CONTRIBUTING.md file.

QQ group: 153530783

If the project is helpful to you, please do not hesitate to star. Thank you!

wifidog-ng's People

Contributors

netcookies avatar qlwz avatar zhaojh329 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wifidog-ng's Issues

What auth servers are compatible with wifidog-ng?

Hi.

I tried wifidog-ng with wifidog auth server(classic) and authpuppy.
wifidog auth server(classic) - failed to login.
authpuppy - success.

What auth servers are compatible with wifidog-ng?
What auth server do you use?

Thanks.

Is this fully working

I'm glad there are a few wifidog options nowadays, this one only has 1/10 of the code lines comparing to apfree-wifidog, is this a full implementation comparing to original wifidog? there are only 1200 lines of lua code it appears.

Captive on mesh networks

Any plans or suggestions about how to use on mesh networks? I would like to try wifidog-ng on Libre Mesh.

Walled Garden or URLs allowed before authenticating

Is it possible to create a walled Garden, to allow DNS's, URL's before authentication? In place of IP's. Since large sites like FB or GL use thousands of different ip. Example: Display an ADS during authentication (not after). A login button for FB and WiFiDog simultaneously. Etc. At this point, I seek to work with URLs, not with IP

https redirect certificates error

If first request is https, then wifidog redirect it, it will show certificates error in the browser? how to fix it? If the first request is http, it's ok!

Wechat

@zhaojh329 Can I have your 微信. I have got some questions related to an OEM router I'm testing.

Thank you!

Configure timeout of MAC Address

I have setup the Lease time of 2 hrs but still timeout of MAC is 4294967. Can you please advise how to we set this value.

root@Infi:~# ipset list wifidog-ng-mac
Name: wifidog-ng-mac
Type: hash:mac
Revision: 0
Header: hashsize 1024 maxelem 65536 timeout 4294967
Size in memory: 192
References: 0
Members:
38:C9:86:16:8A:37 timeout 4294904

screenshot 2018-10-27 at 3 39 30 pm

Thanks in advance.

setment fault on netgear R7800, latest version (wifidog-ng-nossl 1.5.6-1)

root@OpenWrt:#
root@OpenWrt:
# strace wifidog-ng
execve("/usr/bin/wifidog-ng", ["wifidog-ng"], 0xbed14df0 /* 12 vars /) = 0
set_tls(0xb6f75544, 0xbe81dc28, 0x4908aab4, 0, 0xb6f754a0) = 0
set_tid_address(0xb6f754bc) = 5392
open("/etc/ld-musl-armhf.path", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib/libuhttpd.so.2.0.3", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libuhttpd.so.2.0.3", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libuhttpd.so.2.0.3", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=28675, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\260\33\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 118784, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6ee2000
mmap2(0xb6ef8000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x6000) = 0xb6ef8000
mmap2(0xb6efa000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6efa000
close(3) = 0
open("/lib/libubox.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=32821, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\340\37\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 102400, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6ec9000
mmap2(0xb6ee0000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x7000) = 0xb6ee0000
close(3) = 0
open("/lib/libuci.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0755, st_size=32811, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\210\24\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 102400, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6eb0000
mmap2(0xb6ec7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x7000) = 0xb6ec7000
close(3) = 0
open("/lib/libuclient.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libuclient.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libuclient.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=16393, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0000\22\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 86016, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6e9b000
mmap2(0xb6eae000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x3000) = 0xb6eae000
close(3) = 0
open("/lib/libblobmsg_json.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=8195, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0x\n\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 77824, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6e88000
mmap2(0xb6e99000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1000) = 0xb6e99000
close(3) = 0
open("/lib/libubus.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=20582, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\374\21\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 90112, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6e72000
mmap2(0xb6e86000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x4000) = 0xb6e86000
close(3) = 0
open("/lib/libcares.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libcares.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libcares.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0755, st_size=57458, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\240\31\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 126976, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6e53000
mmap2(0xb6e70000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xd000) = 0xb6e70000
close(3) = 0
open("/lib/libipset.so.3", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libipset.so.3", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libipset.so.3", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0755, st_size=158723, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0000\221\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 225280, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6e1c000
mmap2(0xb6e49000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1d000) = 0xb6e49000
close(3) = 0
open("/lib/libpcap.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libpcap.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libpcap.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=188649, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\250M\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 258048, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6ddd000
mmap2(0xb6e1a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2d000) = 0xb6e1a000
close(3) = 0
open("/lib/libgcc_s.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=45347, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\20<\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 114688, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6dc1000
mmap2(0xb6ddb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xa000) = 0xb6ddb000
close(3) = 0
open("/lib/liblua.so.5.1.5", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/liblua.so.5.1.5", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/liblua.so.5.1.5", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=122883, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0`9\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 192512, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6d92000
mmap2(0xb6dbf000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x1d000) = 0xb6dbf000
close(3) = 0
open("/lib/libjson-c.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libjson-c.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libjson-c.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0755, st_size=28692, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\0\36\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 98304, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6d7a000
mmap2(0xb6d90000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x6000) = 0xb6d90000
close(3) = 0
open("/lib/libmnl.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/local/lib/libmnl.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libmnl.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0755, st_size=12291, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\370\23\0\0004\0\0\0"..., 936) = 936
mmap2(NULL, 81920, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xb6d66000
mmap2(0xb6d78000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) = 0xb6d78000
close(3) = 0
mprotect(0xb6ef8000, 4096, PROT_READ) = 0
mprotect(0xb6ee0000, 4096, PROT_READ) = 0
mprotect(0xb6ec7000, 4096, PROT_READ) = 0
mprotect(0xb6eae000, 4096, PROT_READ) = 0
mprotect(0xb6e99000, 4096, PROT_READ) = 0
mprotect(0xb6e86000, 4096, PROT_READ) = 0
mprotect(0xb6e70000, 4096, PROT_READ) = 0
mprotect(0xb6e49000, 28672, PROT_READ) = 0
mprotect(0xb6e1a000, 4096, PROT_READ) = 0
mprotect(0xb6ddb000, 4096, PROT_READ) = 0
mprotect(0xb6dbf000, 4096, PROT_READ) = 0
mprotect(0xb6d90000, 4096, PROT_READ) = 0
mprotect(0xb6d78000, 4096, PROT_READ) = 0
mprotect(0x29000, 4096, PROT_READ) = 0
brk(NULL) = 0xa24000
brk(0xa28000) = 0xa28000
socket(AF_NETLINK, SOCK_RAW, NETLINK_NETFILTER) = 3
bind(3, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 0
getsockname(3, {sa_family=AF_NETLINK, nl_pid=5392, nl_groups=00000000}, [12]) = 0
clock_gettime(CLOCK_REALTIME, {tv_sec=1542197340, tv_nsec=47813856}) = 0
sendto(3, {{len=28, type=0x601 /
NLMSG_??? /, flags=NLM_F_REQUEST, seq=1542197341, pid=0}, "\x02\x00\x00\x00\x05\x00\x01\x00\x06\x00\x00\x00"}, 28, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 28
recvmsg(3, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, msg_namelen=12, msg_iov=[{iov_base={{len=28, type=0x601 /
NLMSG_??? /, flags=0, seq=1542197341, pid=5392}, "\x02\x00\x00\x00\x05\x00\x01\x00\x06\x00\x00\x00"}, iov_len=256}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 28
sendto(3, {{len=52, type=0x60d /
NLMSG_??? /, flags=NLM_F_REQUEST, seq=1542197342, pid=0}, "\x02\x00\x00\x00\x05\x00\x01\x00\x06\x00\x00\x00\x0d\x00\x03\x00\x68\x61\x73\x68\x3a\x6d\x61\x63\x00\x00\x00\x00\x05\x00\x05\x00"...}, 52, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 52
recvmsg(3, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, msg_namelen=12, msg_iov=[{iov_base={{len=68, type=0x60d /
NLMSG_??? /, flags=0, seq=1542197342, pid=5392}, "\x02\x00\x00\x00\x05\x00\x01\x00\x06\x00\x00\x00\x0d\x00\x03\x00\x68\x61\x73\x68\x3a\x6d\x61\x63\x00\x00\x00\x00\x05\x00\x05\x00"...}, iov_len=256}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 68
sendto(3, {{len=92, type=0x602 /
NLMSG_??? /, flags=NLM_F_REQUEST|NLM_F_ACK|0x400, seq=1542197343, pid=0}, "\x02\x00\x00\x00\x05\x00\x01\x00\x06\x00\x00\x00\x13\x00\x02\x00\x77\x69\x66\x69\x64\x6f\x67\x2d\x6e\x67\x2d\x6d\x61\x63\x00\x00"...}, 92, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 92
recvmsg(3, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, msg_namelen=12, msg_iov=[{iov_base={{len=36, type=NLMSG_ERROR, flags=NLM_F_CAPPED, seq=1542197343, pid=5392}, {error=0, msg={len=92, type=0x602 /
NLMSG_??? /, flags=NLM_F_REQUEST|NLM_F_ACK|0x400, seq=1542197343, pid=0}}}, iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 36
sendto(3, {{len=48, type=0x60d /
NLMSG_??? /, flags=NLM_F_REQUEST, seq=1542197344, pid=0}, "\x02\x00\x00\x00\x05\x00\x01\x00\x06\x00\x00\x00\x0c\x00\x03\x00\x68\x61\x73\x68\x3a\x69\x70\x00\x05\x00\x05\x00\x02\x00\x00\x00"}, 48, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 48
recvmsg(3, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, msg_namelen=12, msg_iov=[{iov_base={{len=64, type=0x60d /
NLMSG_??? /, flags=0, seq=1542197344, pid=5392}, "\x02\x00\x00\x00\x05\x00\x01\x00\x06\x00\x00\x00\x0c\x00\x03\x00\x68\x61\x73\x68\x3a\x69\x70\x00\x05\x00\x05\x00\x02\x00\x00\x00"...}, iov_len=256}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 64
sendto(3, {{len=80, type=0x602 /
NLMSG_??? /, flags=NLM_F_REQUEST|NLM_F_ACK|0x400, seq=1542197345, pid=0}, "\x02\x00\x00\x00\x05\x00\x01\x00\x06\x06\x05\x04\x12\x00\x02\x00\x77\x69\x66\x69\x64\x6f\x67\x2d\x6e\x67\x2d\x69\x70\x00\x00\x00"...}, 80, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 80
recvmsg(3, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, msg_namelen=12, msg_iov=[{iov_base={{len=36, type=NLMSG_ERROR, flags=NLM_F_CAPPED, seq=1542197345, pid=5392}, {error=0, msg={len=80, type=0x602 /
NLMSG_??? /, flags=NLM_F_REQUEST|NLM_F_ACK|0x400, seq=1542197345, pid=0}}}, iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 36
sendto(3, {{len=48, type=0x604 /
NLMSG_??? /, flags=NLM_F_REQUEST|NLM_F_ACK, seq=1542197346, pid=0}, "\x02\x00\x00\x00\x05\x00\x01\x00\x06\x06\x05\x04\x13\x00\x02\x00\x77\x69\x66\x69\x64\x6f\x67\x2d\x6e\x67\x2d\x6d\x61\x63\x00\x00"}, 48, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 48
recvmsg(3, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, msg_namelen=12, msg_iov=[{iov_base={{len=36, type=NLMSG_ERROR, flags=NLM_F_CAPPED, seq=1542197346, pid=5392}, {error=0, msg={len=48, type=0x604 /
NLMSG_??? /, flags=NLM_F_REQUEST|NLM_F_ACK, seq=1542197346, pid=0}}}, iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 36
sendto(3, {{len=48, type=0x604 /
NLMSG_??? /, flags=NLM_F_REQUEST|NLM_F_ACK, seq=1542197347, pid=0}, "\x02\x00\x00\x00\x05\x00\x01\x00\x06\x06\x05\x00\x12\x00\x02\x00\x77\x69\x66\x69\x64\x6f\x67\x2d\x6e\x67\x2d\x69\x70\x00\x00\x00"}, 48, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 48
recvmsg(3, {msg_name={sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, msg_namelen=12, msg_iov=[{iov_base={{len=36, type=NLMSG_ERROR, flags=NLM_F_CAPPED, seq=1542197347, pid=5392}, {error=0, msg={len=48, type=0x604 /
NLMSG_??? /, flags=NLM_F_REQUEST|NLM_F_ACK, seq=1542197347, pid=0}}}, iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 36
stat64("/etc/config/wifidog-ng", {st_mode=S_IFREG|0600, st_size=563, ...}) = 0
open("/etc/config/wifidog-ng", O_RDONLY|O_LARGEFILE) = 4
flock(4, LOCK_SH) = 0
_llseek(4, 0, [0], SEEK_SET) = 0
readv(4, [{iov_base="", iov_len=0}, {iov_base="config gateway\n option enable"..., iov_len=1024}], 2) = 563
readv(4, [{iov_base="", iov_len=0}, {iov_base="", iov_len=1024}], 2) = 0
stat64("/tmp/.uci/wifidog-ng", 0xbe81d6e8) = -1 ENOENT (No such file or directory)
stat64("/tmp/.uci/wifidog-ng", 0xbe81d898) = -1 ENOENT (No such file or directory)
flock(4, LOCK_UN) = 0
close(4) = 0
socket(AF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
ioctl(4, SIOCGIFHWADDR, {ifr_name="br-lan", ifr_hwaddr=8c:3b:ad:b6:d6:5b}) = 0
close(4) = 0
socket(AF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
ioctl(4, SIOCGIFADDR, {ifr_name="br-lan", ifr_addr={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("192.168.1.1")}}) = 0
close(4) = 0
open("/proc/wifidog-ng/config", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 4
ioctl(4, TIOCGWINSZ, 0xbe81dc78) = -1 ENOTTY (Not a tty)
writev(4, [{iov_base="port=2060\nssl_port=8443\nclient_t"..., iov_len=60}, {iov_base=NULL, iov_len=0}], 2) = 60
close(4) = 0
epoll_create1(0) = 4
fcntl64(4, F_GETFD) = 0
fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
pipe([5, 6]) = 0
fcntl64(5, F_GETFD) = 0
fcntl64(5, F_SETFD, FD_CLOEXEC) = 0
fcntl64(5, F_GETFL) = 0 (flags O_RDONLY)
fcntl64(5, F_SETFL, O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 0
fcntl64(6, F_GETFD) = 0
fcntl64(6, F_SETFD, FD_CLOEXEC) = 0
fcntl64(6, F_GETFL) = 0x1 (flags O_WRONLY)
fcntl64(6, F_SETFL, O_WRONLY|O_NONBLOCK|O_LARGEFILE) = 0
fcntl64(5, F_GETFL) = 0x800 (flags O_RDONLY|O_NONBLOCK)
fcntl64(5, F_SETFL, O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 0
epoll_ctl(4, EPOLL_CTL_ADD, 5, {EPOLLIN|EPOLLRDHUP, {u32=3069055008, u64=3069055008}}) = 0
rt_sigaction(SIGINT, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RT_1 RT_2], NULL, 8) = 0
rt_sigaction(SIGINT, {sa_handler=0xb6ecc964, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6f40560}, NULL, 8) = 0
rt_sigaction(SIGTERM, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGTERM, {sa_handler=0xb6ecc964, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6f40560}, NULL, 8) = 0
rt_sigaction(SIGCHLD, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGCHLD, {sa_handler=0xb6ecc94c, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6f40560}, NULL, 8) = 0
rt_sigaction(SIGPIPE, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6f40560}, NULL, 8) = 0
rt_sigaction(SIGINT, NULL, {sa_handler=0xb6ecc964, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6f40560}, 8) = 0
rt_sigaction(SIGTERM, NULL, {sa_handler=0xb6ecc964, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6f40560}, 8) = 0
rt_sigaction(SIGCHLD, NULL, {sa_handler=0xb6ecc94c, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6f40560}, 8) = 0
rt_sigaction(SIGPIPE, NULL, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0xb6f40560}, 8) = 0
brk(0xa39000) = 0xa39000
socket(AF_UNIX, SOCK_STREAM, 0) = 7
fcntl64(7, F_GETFD) = 0
fcntl64(7, F_SETFD, FD_CLOEXEC) = 0
connect(7, {sa_family=AF_UNIX, sun_path="/var/run/ubus.sock"}, 110) = 0
read(7, "\0\0\0\0\340\271\17\217\0\0\0\4", 12) = 12
read(7, "", 0) = 0
fcntl64(7, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(7, F_SETFL, O_RDWR|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC) = 0
epoll_ctl(4, EPOLL_CTL_ADD, 7, {EPOLLIN|EPOLLRDHUP, {u32=10649436, u64=10649436}}) = 0
sendmsg(7, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0\6\0\1\0\0\0\0", iov_len=8}, {iov_base="\0\0\1\0\2\0\0\17wifidog-ng\0\0\6\0\0\354\202\0\0000\0\4te"..., iov_len=256}], msg_iovlen=2, msg_controllen=0, msg_flags=0}, 0) = 264
poll([{fd=7, events=POLLIN|POLLERR}], 1, -1) = 1 ([{fd=7, revents=POLLIN}])
recvmsg(7, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0\2\0\1\0\0\0\0\0\0\0\24", iov_len=12}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 12
poll([{fd=7, events=POLLIN}], 1, -1) = 1 ([{fd=7, revents=POLLIN}])
recvmsg(7, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\3\0\0\10\356O\355\241\5\0\0\10
\265m]", iov_len=16}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 16
recvmsg(7, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0\1\0\1\0\0\0\0\0\0\0\f", iov_len=12}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 12
poll([{fd=7, events=POLLIN}], 1, -1) = 1 ([{fd=7, revents=POLLIN}])
recvmsg(7, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\0\10\0\0\0\0", iov_len=8}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 8
socket(AF_INET, SOCK_STREAM, IPPROTO_IP) = 8
fcntl64(8, F_GETFD) = 0
fcntl64(8, F_SETFD, FD_CLOEXEC) = 0
setsockopt(8, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(8, {sa_family=AF_INET, sin_port=htons(2060), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
listen(8, 128) = 0
fcntl64(8, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(8, F_SETFL, O_RDWR|O_NONBLOCK|O_LARGEFILE) = 0
epoll_ctl(4, EPOLL_CTL_ADD, 8, {EPOLLIN|EPOLLRDHUP, {u32=3069654948, u64=3069654948}}) = 0
socket(AF_INET, SOCK_STREAM, IPPROTO_IP) = 9
fcntl64(9, F_GETFD) = 0
fcntl64(9, F_SETFD, FD_CLOEXEC) = 0
setsockopt(9, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(9, {sa_family=AF_INET, sin_port=htons(8443), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
listen(9, 128) = 0
fcntl64(9, F_GETFL) = 0x2 (flags O_RDWR)
fcntl64(9, F_SETFL, O_RDWR|O_NONBLOCK|O_LARGEFILE) = 0
epoll_ctl(4, EPOLL_CTL_ADD, 9, {EPOLLIN|EPOLLRDHUP, {u32=3069655316, u64=3069655316}}) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=NULL} ---
+++ killed by SIGSEGV +++
Segmentation fault
root@OpenWrt:~#

"invalid resp format" and "error: 2(Connection timed out)"

Can Someone please help me in this error I'm encountering?

Since I am very grateful...

Sun Apr 14 23:28:29 2019 daemon.err wifidog-ng: httpget "/ping?gw_id=NW300&sys_uptime=2686&sys_memfree=87384064&sys_load=7744&wifidog_uptime=240" error: 2(Connection timed out) Sun Apr 14 23:28:30 2019 daemon.err wifidog-ng: httpget "/auth?gw_id=NW300&stage=counters" error: 2(Connection timed out) Sun Apr 14 23:29:00 2019 daemon.err wifidog-ng: counters: invalid resp format Sun Apr 14 23:29:29 2019 daemon.err wifidog-ng: httpget "/ping?gw_id=NW300&sys_uptime=2746&sys_memfree=87511040&sys_load=2752&wifidog_uptime=300" error: 2(Connection timed out) Sun Apr 14 23:29:30 2019 daemon.err wifidog-ng: httpget "/auth?gw_id=NW300&stage=counters" error: 2(Connection timed out) Sun Apr 14 23:30:00 2019 daemon.err wifidog-ng: counters: invalid resp format Sun Apr 14 23:34:00 2019 daemon.err wifidog-ng: counters: invalid resp format Sun Apr 14 23:37:30 2019 daemon.err wifidog-ng: httpget "/ping?gw_id=NW300&sys_uptime=3226&sys_memfree=87724032&sys_load=26112&wifidog_uptime=781" error: 2(Connection timed out) Sun Apr 14 23:37:30 2019 daemon.err wifidog-ng: httpget "/auth?gw_id=NW300&stage=counters" error: 2(Connection timed out) Sun Apr 14 23:38:01 2019 daemon.err wifidog-ng: counters: invalid resp format

build & run independently on linux?

Can this be built & run on general linux? or is this specifically meant to be run on openWRT distro? if so, can you please provide instructions on build process?

multiple auth servers

Hi.

Does wifidog-ng support multiple auth servers as like classic wifidog gateway?

Thanks.

Gateway ID

Hi.

Now I try to work wifidog-ng with ar71xx device.
I want to know how I set gateway ID?

Thanks in advance.

Whitelist Problem

Hi, i'm having problem with whitelist domain. Even default qq and baidu doesn't work. Wildcard (*.domain.com) are supported?i tried but give me error while parsing. thanks

Incoming, outgoing traffic

Hi, thanks for your work!
I'm having problem with counter data: Incoming(outgoing too) value is much bigger than i expected and sometimes it's negative. I tried to see if it was a router problem installing luci-app-nlbwmon and the data were correct. I'm using a Tp-link archer c-50 v3.
Thanks in advance.

Unable to work authpuppy

the orginal wifidog is working well in authpuppy auth external server but not openwrt v18.0.6 wifidog stop working for that i tried wifidog-ng the splash page is coming the auth is working but unable to Kick off client if time or data end. and incoming and out going traffic unable recorded to database. the gataway id the router mac address. can u tell me alter net of authpuppy or php code user managment auth server it will host external server.

wifidog-ng segfault in openwrt OpenWrt 18.06.2

Can't make wifidog-ng work on openwrt 18.06.02 x86; the log contain segmentation faut error. can you give it a look? Note I'm runing openwrt in qemu VM.

[ 240.143560] kmod of wifidog is started
[ 240.198701] wifidog-ng[3225]: segfault at 0 ip (null) sp bff1430c error 14 in wifidog-ng[8048000+a000]
[ 245.235171] wifidog-ng[3239]: segfault at 0 ip (null) sp bffcd04c error 14 in wifidog-ng[8048000+a000]
[ 250.253918] wifidog-ng[3240]: segfault at 0 ip (null) sp bfc569ec error 14 in wifidog-ng[8048000+a000]
[ 255.272474] wifidog-ng[3241]: segfault at 0 ip (null) sp bffd8fec error 14 in wifidog-ng[8048000+a000]
[ 260.289189] wifidog-ng[3381]: segfault at 0 ip (null) sp bf9a0dbc error 14 in wifidog-ng[8048000+a000]
[ 265.305935] wifidog-ng[3382]: segfault at 0 ip (null) sp bfdc321c error 14 in wifidog-ng[8048000+a000]
[ 678.492445] kmod of wifidog-ng is stop
[ 690.834460] kmod of wifidog is started
[ 690.882824] wifidog-ng[3594]: segfault at 0 ip (null) sp bfbf008c error 14 in wifidog-ng[8048000+a000]

1 module could not be probed - wifidog-ng

environment: pcengine alix2, x86 geode, openwrt trunk ac70ac3532fefa78c944d8a26c8df0ca5d88d04e

Hi.
After stopping wifidog-ng intentionally, It fails to start because of this error,

root@OpenWrt:/etc/config#
/etc/init.d/wifidog-ng start
1 module could not be probed

  • wifidog-ng
    root@OpenWrt:/etc/config#

After that happens, wifidog-ng never starts.
Here is output of logread.

Wed May 16 13:30:11 2018 kern.info kernel: [ 200.207919] kmod of wifidog-ng is stop
Wed May 16 13:31:18 2018 daemon.err wifidog-ng: Kernel module is not loaded
Wed May 16 13:31:23 2018 daemon.err wifidog-ng: Kernel module is not loaded
Wed May 16 13:31:27 2018 daemon.err wifidog-ng: Kernel module is not loaded
Wed May 16 13:31:32 2018 daemon.err wifidog-ng: Kernel module is not loaded
Wed May 16 13:31:37 2018 daemon.err wifidog-ng: Kernel module is not loaded
Wed May 16 13:31:42 2018 daemon.err wifidog-ng: Kernel module is not loaded
Wed May 16 13:31:42 2018 daemon.info procd: Instance wifidog-ng::instance1 s in a crash loop 6 crashes, 0 seconds since last crash
Wed May 16 13:31:42 2018 daemon.err wifidog-ng: Kernel module is not loaded
Wed May 16 13:31:57 2018 daemon.err wifidog-ng: Kernel module is not loaded
Wed May 16 13:33:13 2018 daemon.err wifidog-ng: Kernel module is not loaded
root@OpenWrt:/etc/config#

Any idea to debug?
Thanks.

Wifidog-ng redirect loop

Firmware: OpenWrt 18.06.0-rc2, r7141-e4d0ee5af5
Wifidog-ng Version: kmod-wifidog-ng - 4.9.111+1.5.6-1 wifidog-ng-openssl - 1.5.6-1

Hi there I am struggling with an issue with wifidog-ng.

I have setup wifidog-ng auth server on a server and all seems to be working correctly. However sometimes the auth server enters a reload loop. Like below:

Below is my /etc/config/wifidog-ng.conf file.

I even tried whitelisting the domain in the config file. Which worked for the whitelisting but did not solve the reload loop issue.

I thought this might be something to do with my server and using variable IPs but I locked them down to one static IP and it still did not work. I also followed more verbose logging on my server and it doesn't actually appear to be hitting the auth application. So something is going down with wifidog.

I tried to follow the openwrt logs using logread -f to see if there was anything that could point me in the right direction however it didn't give me anything useful.

The only way that I can solve this problem is by restarting wifidog /etc/init.d/wifidog-ng restart and then navigating using the internet within a short timeframe (< 5mins). This seems to allow the page to load and I can authenticate successfully and then browse.

Any help on how I could track down what is going on would be amazing as I'm currently at a loss.

Thanks

Return to the requested URL

Hello! First I'd like to thank you for this beautiful work you've been building.
I am with a question of how to redirect the client after login to the page requested previously...

Sorry about my bad English.

Kernel module compilation error on 4.19

CC [M] /home/build/openwrt/lede/build_dir/target-x86_64_musl/wifidog-ng-/main.o
/home/build/openwrt/lede/build_dir/target-x86_64_musl/wifidog-ng-/main.c: In function 'wd_nf_nat_setup_info':
/home/build/openwrt/lede/build_dir/target-x86_64_musl/wifidog-ng-/main.c:41:34: error: passing argument 2 of 'nf_nat_setup_info' from incompatible pointer type [-Werror=incompatible-pointer-types]
return nf_nat_setup_info(ct, &newrange, NF_NAT_MANIP_DST);
^
In file included from /home/build/openwrt/lede/build_dir/target-x86_64_musl/wifidog-ng-/main.c:16:0:
./include/net/netfilter/nf_nat.h:41:14: note: expected 'const struct nf_nat_range2 *' but argument is of type 'struct nf_nat_range *'
unsigned int nf_nat_setup_info(struct nf_conn *ct,
^~~~~~~~~~~~~~~~~
/home/build/openwrt/lede/build_dir/target-x86_64_musl/wifidog-ng-/main.c: In function 'wifidog_hook':
/home/build/openwrt/lede/build_dir/target-x86_64_musl/wifidog-ng-/main.c:120:12: error: implicit declaration of function 'nf_nat_ipv4_in'; did you mean 'nf_nat_setup_info'? [-Werror=implicit-function-declaration]
return nf_nat_ipv4_in(priv, skb, state, wd_nf_nat_setup_info);
^~~~~~~~~~~~~~
nf_nat_setup_info
cc1: some warnings being treated as errors

"nf_nat_range" has been changed to "nf_nat_range2" since kernel 4.18, as well as "nf_nat_ipv4_in".

feeds update wifidog_ng failed

the two step work normal:

echo 'src-git wifidog_ng https://github.com/zhaojh329/wifidog-ng.git' >> feeds.conf.default

./scripts/feeds uninstall -a

but faile at "./scripts/feeds update wifidog_ng"

`wyt@debian-wyt:~/github/openwrt/openwrt$ ./scripts/feeds update wifidog_ng

Updating feed 'wifidog_ng' from 'https://github.com/zhaojh329/wifidog-ng.git' ...

Already up-to-date.

Create index file './feeds/wifidog_ng.index'

/home/wyt/github/openwrt/openwrt/feeds/wifidog_ng.tmp/info/.files-packageinfo.mk:1: *** target pattern contains no '%'. Stop.

wyt@debian-wyt:~/github/openwrt/openwrt$

`

if not add wifidog-ng, the image compile success. can give some help? thanks.

modprobe fails to load wifidog-ng module

installed wifidog-ng on 18.06,
/etc/init.d/wifidog-ng start fails to load kernel module more details below

i think the load works fine the very first time, but then fails afterwards
also note that i'm not using br-lan but Guest as the interface. (FWIW I also tried wlan1-1)
dmesg only gave info on br-lan ... but not sure if that is from the very first load or not.

`
root@router:/etc/config# cat wifidog-ng
config gateway
option enabled 0
option ifname 'Guest'
option port 2060
option ssl_port 8443
option checkinterval 30
option client_timeout 5
option temppass_time 30

config authserver
option host '10.0.0.1'
option port 80
option ssl 0
option path '/cgi-bin/luci/auth/'
option login_path 'login'
option portal_path 'portal'
option msg_path 'gw_message.php'
option ping_path 'ping'
option auth_path 'auth'

config popularserver
list server www.baidu.com
list server www.qq.com

config whitelist
`

`
root@router:/etc/config# opkg list-installed | grep wifidog
kmod-wifidog-ng - 4.9.111+1.5.6-1
wifidog-ng-mbedtls - 1.5.6-1
root@router:/etc/config# opkg list-installed | grep mbedtls
libmbedtls - 2.12.0-1
libuhttpd-mbedtls - 2.0.3-1
libustream-mbedtls - 2018-05-22-5322f9db-1
wifidog-ng-mbedtls - 1.5.6-1
root@router:/etc/config# cat /etc/os-release
NAME="OpenWrt"
VERSION="18.06.0"
ID="openwrt"
ID_LIKE="lede openwrt"
PRETTY_NAME="OpenWrt 18.06.0"
VERSION_ID="18.06.0"
HOME_URL="http://openwrt.org/"
BUG_URL="http://bugs.openwrt.org/"
SUPPORT_URL="http://forum.lede-project.org/"
BUILD_ID="r7188-b0b5c64c22"
LEDE_BOARD="ar71xx/nand"
LEDE_ARCH="mips_24kc"
LEDE_TAINTS=""
LEDE_DEVICE_MANUFACTURER="OpenWrt"
LEDE_DEVICE_MANUFACTURER_URL="http://openwrt.org/"
LEDE_DEVICE_PRODUCT="Generic"
LEDE_DEVICE_REVISION="v0"
LEDE_RELEASE="OpenWrt 18.06.0 r7188-b0b5c64c22"
root@router:/etc/config# uname -a
Linux router 4.9.111 #0 Mon Jul 30 16:25:17 2018 mips GNU/Linux
root@router:/etc/config# modprobe /lib/modules/4.9.111/wifidog-ng.ko
1 module could not be probed

  • wifidog-ng
    root@router:/etc/config#
    `

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.