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

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!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值