Project

General

Profile

[UE] Cgi won't run when there's no internet.

Added by ioi9374 over 4 years ago

I am doing a web redirect by creating a redirect cgi using a lighttpd server.
Once your internet network is connected, connect wifi and it will run index.cgi and redirect you to the page you want.

However, if you're connected to Wi-Fi and still can't use the Internet, the connection isn't the only redirect page.

< lighttpd.conf >

# lighttpd configuration file
# 
## modules to load
# all other module should only be loaded if really neccesary
# - saves some time
# - saves memory
server.modules = ( 
    "mod_rewrite", 
#    "mod_redirect", 
    "mod_alias", 
    "mod_auth", 
    "mod_status", 
#    "mod_setenv",
#    "mod_fastcgi",
#    "mod_proxy",
#    "mod_simple_vhost",
    "mod_cgi",
    "mod_ssi",
#    "mod_usertrack",
#    "mod_expire",
    "mod_webdav" 
)

# force use of the "write" backend (closes: #2401)
server.network-backend = "write" 

## a static document-root, for virtual-hosting take look at the 
## server.virtual-* options
server.document-root = "/etc/MAP7000_Web/www/" 

## where to send error-messages to
#server.errorlog = "/var/log/lighttpd/error.log" 

## files to check for if .../ is requested
index-file.names = ( "index.shtml", "default.html", "index.htm", "default.htm","cgi-bin/index.cgi" )

## mimetype mapping
mimetype.assign = (  
    ".pdf"   => "application/pdf",
    ".class" => "application/octet-stream",
    ".pac"   => "application/x-ns-proxy-autoconfig",
    ".swf"   => "application/x-shockwave-flash",
    ".wav"   => "audio/x-wav",
    ".gif"   => "image/gif",
    ".jpg"   => "image/jpeg",
    ".jpeg"  => "image/jpeg",
    ".png"   => "image/png",
    ".svg"   => "image/svg+xml",
    ".css"   => "text/css",
    ".html"  => "text/html",
    ".htm"   => "text/html",
    ".js"    => "text/javascript",
    ".txt"   => "text/plain",
    ".dtd"   => "text/xml",
    ".xml"   => "text/xml" 
 )

## Use the "Content-Type" extended attribute to obtain mime type if possible
#mimetypes.use-xattr = "enable" 

## send a different Server: header
## be nice and keep it at lighttpd
#server.tag = "lighttpd" 

$HTTP["url"] =~ "\.pdf$" {
    server.range-requests = "disable" 
}

##
# which extensions should not be handle via static-file transfer
#
# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

######### Options that are good to be but not neccesary to be changed #######

## bind to port (default: 80)
#server.port = 81

## bind to localhost (default: all interfaces)
#server.bind = "localhost" 

## error-handler for status 404
server.error-handler-404 = "/cgi-bin/index.cgi" 
#server.error-handler-404 = "/error-handler.php" 

## to help the rc.scripts
server.pid-file = "/var/run/lighttpd.pid" 

###### virtual hosts
##
##   If you want name-based virtual hosting add the next three settings and load
##   mod_simple_vhost
##
## document-root =
##   virtual-server-root + virtual-server-default-host + virtual-server-docroot or
##   virtual-server-root + http-host + virtual-server-docroot
##
#simple-vhost.server-root = "/home/weigon/wwwroot/servers/" 
#simple-vhost.default-host = "grisu.home.kneschke.de" 
#simple-vhost.document-root = "/pages/" 

## 
## Format: <errorfile-prefix><status>.html
## -> ..../status-404.html for 'File not found'
#server.errorfile-prefix = "/www/error-" 

## virtual directory listings
#server.dir-listing = "enable" 

## send unhandled HTTP-header headers to error-log
#debug.dump-unknown-headers = "enable" 

### only root can use these options
#
# chroot() to directory (default: no chroot() )
#server.chroot = "/" 

## change uid to <uid> (default: don't care)
#server.username = "nobody" 
#
server.upload-dirs = ( "/tmp" )

## change uid to <uid> (default: don't care)
#server.groupname = "nobody" 

#### compress module
#compress.cache-dir          = "/dev/null/" 
#compress.filetype           = ("text/plain", "text/html")

#### proxy module
## read proxy.txt for more info
#proxy.server = (
#    ".php" => (
#        "localhost" => (
#            "host" => "192.168.0.101",
#            "port" => 80
#        )
#    )
#)

#### fastcgi module
## read fastcgi.txt for more info
#fastcgi.server = (
#    ".php" => (
#        "localhost" => (
#            "socket" => "/tmp/php-fastcgi.socket",
#            "bin-path" => "/usr/local/bin/php" 
#        )
#    )
#)

#### CGI module
cgi.assign = ( ".pl"  => "/usr/bin/perl", ".cgi" => "", ".sh" => "" )

#### SSL engine
#ssl.engine = "enable" 
#ssl.pemfile = "server.pem" 

#### status module
#status.status-url = "/server-status" 
#status.config-url = "/server-config" 

#### auth module
## read authentification.txt for more info
#auth.backend = "plain" 
#auth.backend.plain.userfile = "lighttpd.user" 
#auth.backend.plain.groupfile = "lighttpd.group" 
#auth.require = (
#    "/server-status" => ( 
#        "method"  => "digest",
#        "realm"   => "download archiv",
#        "require" => "group=www|user=jan|host=192.168.2.10" 
#    ),
#    "/server-info" => ( 
#        "method"  => "digest",
#        "realm"   => "download archiv",
#        "require" => "group=www|user=jan|host=192.168.2.10" 
#    )
#)

#### url handling modules (rewrite, redirect, access)
#url.rewrite = ( "^/$" => "/server-status" )
#url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )

#### both rewrite/redirect support back reference to regex conditional using %n
#$HTTP["host"] =~ "^www\.(.*)" {
#    url.redirect = ( "^/(.*)" => "http://%1/$1" )
#}

#### expire module
#expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")

#### ssi
ssi.extension = ( ".shtml" )

#### setenv
#setenv.add-request-header  = ( "TRAV_ENV" => "mysql://user@host/db" )
#setenv.add-response-header = ( "X-Secret-Message" => "42" )

#### variable usage:
## variable name without "." is auto prefixed by "var." and becomes "var.bar" 
#bar = 1
#var.mystring = "foo" 

## integer add
#bar += 1
## string concat, with integer cast as string, result: "www.foo1.com" 
#server.name = "www." + mystring + var.bar + ".com" 
## array merge
#index-file.names = (foo + ".php") + index-file.names
#index-file.names += (foo + ".php")

#### include
#include /etc/lighttpd/lighttpd-inc.conf
## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf" 
#include "lighttpd-inc.conf" 

#### include_shell
#include_shell "echo var.a=1" 
## the above is same as:
#var.a=1

#### webdav
#$HTTP["url"] =~ "^/webdav($|/)" {
webdav.activate = "enable" 
webdav.is-readonly = "disable" 
# webdav.sqlite-db-name = "/var/run/lighttpd-webdav-lock.db" 
#}

< index.cgi >

int main(void) {
    unsigned char my_ip[4];
    char temp[64];
    char cmd[256];
    char test[256];
    int k;
    FILE *fp;

    //k=get_IP_from_system(my_ip,1);
    //sprintf(temp, "%d.%d.%d.%d", my_ip[0],my_ip[1],my_ip[2],my_ip[3]);    
//        printf("Status: 302 Moved\r\n");
//        printf("Cache-control: no-store\r\n");
//        printf("Connection: close\r\n");
    //if(k!=0)
    //{
        printf("Location: %s\r\n\r\n", "http://192.168.1.254/main2.html");
    //}
    //else
    //{
    //    sprintf(cmd, "http://%s/main.html", temp);
    //    printf("Location: %s\r\n\r\n", cmd);
//    }

    return 0;
} 

Replies (1)

RE: Cgi won't run when there's no internet. - Added by gstrauss over 4 years ago

As in https://redmine.lighttpd.net/boards/2/topics/8409, your assumptions are misplaced.

lighttpd works fine with or without internet, unless you are using DNS that requires the internet.

Have your client connect to the lighttpd server by IP address when the internet connection is down.

To fix this, configure your router to serve the appropriate DNS for your internal network.

This is not a problem with lighttpd.

    (1-1/1)