How to Install NoCat Splash and Link it to an External Web Server

本文详细介绍了NoCatSplash的安装及配置过程,包括下载稳定版本、编辑配置文件、设置网页重定向、配置PHP脚本等功能,帮助读者实现定制化的网络接入认证页面。
Compile NoCatSplash:
  1. goto http://nocat.net/downloads/NoCatSplash/ and download the latest stable tarball.
  2. tar zxvf the tarball, cd to the resulting subdirectory and run make. The configure script appears to do nothing, so there is no point in running configure.
  3. Run "make install"
Edit nocat.conf:
  1. cd /usr/local/etc and open nocat.conf in a text editor
  2. change LoginTimeOut to a reasonable value. I changed it to one hour
    LoginTimeout 3600
  3. enter the device names of your WAN interface
    ExternalDevice eth1
  4. enter the device name of your LAN interface
    InternalDevice eth0
  5. change the name dns server to the dns server of your LAN
    DNSAddr 192.168.3.1
  6. enter the mask of the LAN, which for which this machine serves as a dhcp server
    LocalNetwork 192.168.3.0/24
  7. uncomment allowedwebhosts, and add the name of your web server
    HomePage http://AcumenConsulting.Net
  8. change the name of SplashForm to a file which you will write
    SplashForm ToAcumen.html
  9. Here is a copy of nocat.conf which I created.

Edit the file specified by the SplashForm macro SplashForm:

  1. change to the directory specified DocumentRoot. The default value is /usr/local/share/NoCatSplash/htdocs.
    cd /usr/local/share/NoCatSplash/htdocs
  2. open the file specified by the macro SplashForm. In this case it is ToAcumen.html.
  3. Use the html, meta redirect command to send request to the external website. Pass the IP address of the DHCP server as variable PortalIP.
    < html > 
    < META HTTP-EQUIV="Refresh" Content= "1; URL='http://acumensoftwareinc.com/splash.php?PortalIP=192.168.3.1'" > 
    < /html > 
Configure your web server to accept the request, and to have the correct form for letting the user accept the agrement terms.
  1. Call session_start(), include a php file which defines the function record_vars. to save the variable PortalIP. For example:
    < ?php
    session_start();

    include( "splash.func.php");
    include( "func.php");

    record_vars();

    print_repair_windows_page();

    ? >
  2. Here is the file splash.func.php which contains the functions record_vars, and PrintAgree:

    function record_vars() {
    if (isset( $_REQUEST['PortalIP']) && !isset($_SESSION[ 'PortalIP'])) {
    $_SESSION[ 'PortalIP'] = $_REQUEST['PortalIP'];
    }
    //echo "PortalIP=" . $_SESSION['PortalIP'] . "
    ";
    }

    function PrintAgree() {
    $PortalIP = $_SESSION[ 'PortalIP'];
    printf( "< form method='POST' action='http://%s:5280/' > \n", $PortalIP);
    printf( "< input type='image' name='mode_login' src='AgreeAngel.jpg' > \n");
    printf( "< input type='hidden' name='redirect' value='http://AcumenConsultingInc.Net/Welcome.html' > \n");
    printf( "< /form > ");
    }

    function PrintAgreeTerms() {
    printf( "< P > I have read the < a href=TermsOfUse.php > usage agreement < /a > and have agreed to the terms. < br / > \n");
    PrintAgree();
    }


  3. Call the function PrintAgree, or PrintAgreeTerms from within your php pages, to prent the form which passes control back to the user.

The form has two variables, mode_login, and redirect. NoCatSplash, looks for these two variables and passes control back to the user if they are defined.

Adjust the bash scripts to prevent silly error messages:

  1. cd /usr/local/libexec/NoCatSplash/
  2. open initialize.fw in a text editor, and comment out these lines:
    > for module in ip_tables ipt_REDIRECT ipt_MASQUERADE ipt_MARK ipt_REJECT \
    > ipt_TOS ipt_LOG iptable_mangle iptable_filter iptable_nat ip_nat_ftp \
    > ip_conntrack ipt_mac ipt_state ipt_mark; do

    > modprobe $module
    > done
  3. these modules should be loaded automatically, or compiled into the kernel. You should not use this for loop to load the modules because the modules are very system dependent.

Login as root and start splashd. edit the PATH to include the directory /usr/local/libexec/NoCatSplash . I edited .bash_profile in /root to have the line:
export PATH=/usr/local/libexec/NoCatSplash:"${PATH}"

  • make sure you have libghttp installed. To install this from gentoo linux, use emerge:
    emerge -v gnome-base/libghttp

    Start splashd. The output should look like: Chocolate NoCatSplash-0.92 # splashd
    Message: My node ID is 000103D34CFD (eth0)
    Message: Read 43 config items from /usr/local/etc/nocat.conf
    Message: initializing static splash page
    Message: Got command /usr/local/libexec/NoCatSplash/initialize.fw from action ResetCmd
    Message: starting main loop

    ** WARNING **: ResetCmd on peer (null) returned 1
    Message: Checking peers for expiration
    Message: Checking peers for expiration

  • try estabilishing a network connection from a DHCP client, on the LAN, and then start a web browers on this client. The server output should look like:
    Message: Captured peer 192.168.3.98
    Message: Splashed peer 192.168.3.98

    ** WARNING **: File not found: /usr/local/share/NoCatSplash/htdocs/favicon.ico
    Message: Captured peer 192.168.3.98
    Message: Splashed peer 192.168.3.98
  • On the client side you should see the web site specfied previously. Click the "I accept" button, and you should get the welcome.html. The server output should look like:
    Message: Checking peers for expiration
    Message: Accepting peer 192.168.3.98
    Message: Got command /usr/local/libexec/NoCatSplash/access.fw permit 00:90:4B:EC:C2:23 192.168.3.98 Public from action PermitCmd

  • You now have splashd working correctly. Set up splashd as a service.
    1. change to /etc/init.d, cd /etc/init.d
    2. open a new file, splashd in a text editor
    3. write a script, or use this one.
    4. save the file, and do "chmod +x splashd"
    5. add the file to the start up list, "rc-update add splashd default"
    6. start the script, ./splashd
    You are done!
[VER 8] STA 16:EF:15:6A:E1:33: chanspec 40/80 (0xe12a) aid:19 rateset [ 6 9 12 18 24 36 48 54 ] idle 1 seconds in network 1187 seconds state: AUTHENTICATED ASSOCIATED AUTHORIZED connection: SECURED auth: WPA2-PSK crypto: AES_CCM flags 0x7d1e03a: WME N_CAP VHT_CAP HE_CAP AMPDU AMSDU GBL_RCLASS DWDS_CAP DWDS_ACTIVE MAP HT caps 0x9ef: LDPC 40MHz SGI20 SGI40 STBC-Tx STBC-Rx VHT caps 0x7b: LDPC SGI80 STBC-Tx STBC-Rx SU-BFR SU-BFE HE caps 0x57b9: LDPC HE-HTC SU-BFR SU&MU-BFE OMI 0x0871: 80Mhz rx=2ss tx=2ss UL_MU_DISABLE UL_MU_DATA_DISABLE tx total pkts: 5900 tx total bytes: 910922 tx ucast pkts: 4777 tx ucast bytes: 813416 tx mcast/bcast pkts: 1123 tx mcast/bcast bytes: 97506 tx failures: 3587 rx data pkts: 4824 rx data bytes: 852861 rx data dur: 0 rx ucast pkts: 3979 rx ucast bytes: 735943 rx mcast/bcast pkts: 845 rx mcast/bcast bytes: 116918 rate of last tx pkt: 1200950 kbps - 8120 kbps rate of last rx pkt: 324260 kbps rx decrypt succeeds: 4660 rx decrypt failures: 0 tx data pkts retried: 2301 per antenna rssi of last rx data frame: -42 -48 0 0 per antenna average rssi of rx data frames: -40 -45 0 0 per antenna noise floor: -78 -78 0 0 tx total pkts sent: 7518 tx pkts retries: 62070 tx pkts retry exhausted: 3585 tx FW total pkts sent: 0 tx FW pkts retries: 0 tx FW pkts retry exhausted: 0 rx total pkts retried: 1930 MCS SET : [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ] VHT SET : 0x1 1x1 2x1 3x1 4x1 5x1 6x1 7x1 8x1 9x1 : 0x2 1x2 2x2 3x2 4x2 5x2 6x2 7x2 8x2 9x2 HE SET : 20/40/80 MHz: NSS1 Tx: 0-11 Rx: 0-11 NSS2 Tx: 0-11 Rx: 0-11 smoothed rssi: -40 tx nrate he mcs 11 Nss 2 Tx Exp 0 bw80 ldpc 2xLTF GI 0.8us fixed rx nrate he mcs 6 Nss 1 Tx Exp 0 bw80 ldpc 2xLTF GI 0.8us auto wnm 0x38: TIM-Broadcast Traffic-Filtering WNM-Sleep-Mode VENDOR OUI VALUE[0] 00:50:F2 VENDOR OUI VALUE[1] 00:1D:0F VENDOR OUI VALUE[2] 00:31:92 VENDOR OUI VALUE[3] 50:6F:9A VENDOR OUI VALUE[4] 8C:FD:F0 link bandwidth = 80 MHZ RRM capability = 0x0 Frequency Bands Supported: 5G
09-06
标题基于Python的自主学习系统后端设计与实现AI更换标题第1章引言介绍自主学习系统的研究背景、意义、现状以及本文的研究方法和创新点。1.1研究背景与意义阐述自主学习系统在教育技术领域的重要性和应用价值。1.2国内外研究现状分析国内外在自主学习系统后端技术方面的研究进展。1.3研究方法与创新点概述本文采用Python技术栈的设计方法和系统创新点。第2章相关理论与技术总结自主学习系统后端开发的相关理论和技术基础。2.1自主学习系统理论阐述自主学习系统的定义、特征和理论基础。2.2Python后端技术栈介绍DjangoFlask等Python后端框架及其适用场景。2.3数据库技术讨论关系型和非关系型数据库在系统中的应用方案。第3章系统设计与实现详细介绍自主学习系统后端的设计方案和实现过程。3.1系统架构设计提出基于微服务的系统架构设计方案。3.2核心模块设计详细说明用户管理、学习资源管理、进度跟踪等核心模块设计。3.3关键技术实现阐述个性化推荐算法、学习行为分析等关键技术的实现。第4章系统测试与评估对系统进行功能测试和性能评估。4.1测试环境与方法介绍测试环境配置和采用的测试方法。4.2功能测试结果展示各功能模块的测试结果和问题修复情况。4.3性能评估分析分析系统在高并发等场景下的性能表现。第5章结论与展望总结研究成果并提出未来改进方向。5.1研究结论概括系统设计的主要成果和技术创新。5.2未来展望指出系统局限性并提出后续优化方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值