####### # # E-scripts on http servers, clients, cgis, etc. # # Note 1: use the eev command (defined in eev.el) and the # ee alias (in my .zshrc) to execute parts of this file. # Executing this file as a whole makes no sense. # # Note 2: be VERY careful and make sure you understand what # you're doing. # # Note 3: If you use a shell other than zsh things like |& # and the for loops may not work. # # Note 4: I always run as root. # # Note 5: some parts are too old and don't work anymore. Some # never worked. # # Note 6: the definitions for the find-xxxfile commands are on my # .emacs. # # Note 7: if you see a strange command check my .zshrc -- it may # be defined there as a function or an alias. # # Note 8: the sections without dates are always older than the # sections with dates. # # This file is at # or at . # See also , # , # , # , # and . # ####### # «.rfcs-about-http» (to "rfcs-about-http") # «.test.cgi» (to "test.cgi") # «.cgi-test» (to "cgi-test") # «.wiki_apache» (to "wiki_apache") # «.boa_install» (to "boa_install") # «.boa_secondary» (to "boa_secondary") # «.expect_http_client» (to "expect_http_client") # «.eeg_http_client» (to "eeg_http_client") # «.dustmote» (to "dustmote") # «.tcl_http» (to "tcl_http") # «.cgipm-2.56» (to "cgipm-2.56") # «.runtmpcgi» (to "runtmpcgi") # «.disguise-user-agent» (to "disguise-user-agent") # «.cgi_specs» (to "cgi_specs") # «.file_upload» (to "file_upload") # «.file_upload_php3» (to "file_upload_php3") # «.pingless» (to "pingless") # «.squid» (to "squid") # «.thttpd» (to "thttpd") # «.thttpd-compile» (to "thttpd-compile") # «.thttpd-cgis-anywhere» (to "thttpd-cgis-anywhere") # «.cgis-at-zumbi-with-htaccess» (to "cgis-at-zumbi-with-htaccess") ##### # # RFCs about HTTP # 2004dec18 # ##### # «rfcs-about-http» (to ".rfcs-about-http") # HTTP/1.0: (find-rfcfile "rfc1945.txt") # HTTP/1.1: (find-rfcfile "rfc2068.txt") # (find-rfcfile "rfc2068.txt" "\n19.5 Changes from HTTP/1.0") ##### # # test.cgi # 2007jul20 # ##### # Test if CGIs are working with a simple sh-based CGI. # «test.cgi» (to ".test.cgi") ##### # # Test if CGIs are working (with "showquery") # 1999aug09 # ##### # «cgi-test» (to ".cgi-test") # For an easier test: # (to "runtmpcgi") apti data-dumper # cd /usr/lib/cgi-bin/ heredoc showquery.cgi -m 0755 <<'---' #!/usr/bin/perl # (find-pl5file "CGI.pm") print "Content-type: text/plain\n\n"; use CGI; my $query = new CGI; use Data::Dumper; sub pdump { print "\n$_[0]:\n", Dumper($_[1]); } pdump "ENV", \%ENV; pdump "query", $query; --- lynx $LH/cgi-bin/showquery.cgi'?foo=bar' cd /usr/lib/cgi-bin/ cp -v showquery.cgi /var/www/ lynx $LH/showquery.cgi'?foo=bar' ##### # # wikits as CGIs - short version # 1999aug09 # ##### # «wiki_apache» (to ".wiki_apache") # (find-es "tcl" "wikit_cgi") cd /var/www/ rm -Rv wikit/ mkdir wikit/ chmod 777 wikit cd /var/www/wikit/ gzip -cd < $S/http/mini.net/cgi-bin/wikit.gz > wikit_cgi chmod 777 wikit_cgi heredoc wikit.cgi -m 0555 <<'---' #!/bin/sh exec /usr/local/bin/tclkit /var/www/wikit/wikit_cgi wikit --- chmod 755 wikit.cgi lynx $LH/wikit/wikit.cgi # (find-fline "/var/log/apache/") # (find-fline "/var/log/apache/error.log") # Comparing conffiles: # cd /o/etc/apache for i in *.conf; do echo "\n\n $i:\n"; diff $i /etc/apache/$i; done # (find-vldifile "" "apache.") # (find-vldifile "apache.list") # (find-fline "/usr/doc/apache/") # A question: if the default for apache is "inetd", shouldn't the port # 80 be trapped by inetd? # Notes on debugging: # # (find-fline "/etc/init.d/apache") # (find-fline "/usr/sbin/apachectl") bash -x /etc/init.d/apache restart bash -x /usr/sbin/apachectl start echo $? /usr/sbin/apache echo $? strace -f -o ~/s /usr/sbin/apache laf /o/etc/apache/ laf /etc/apache/ --> Restarting apache daemon... failed. # (find-fline "/etc/apache/httpd.conf") Uau! #### # # boa (potato) # 2001jun20 # #### # «boa_install» (to ".boa_install") # apti boa # (find-vldifile "" "boa") # (find-fline "/etc/init.d/boa") # (find-fline "/sbin/start-stop-daemon" "Usage:") # To keep apache as the default web server: cd /etc find init* rc* | egrep 'boa|apache' find rc* | egrep 'S..boa' rm -v $(find rc* | egrep 'S..boa') /etc/init.d/boa stop /etc/init.d/apache start sleep 1 lsof | grep :www # # To let boa be the web server (temporarily): /etc/init.d/apache stop /etc/init.d/boa start lsof | grep :www # # (find-es "general" "lsof-2.0.37") ##### # # boa as a secondary web server (slink) # 99oct24 # ##### # «boa_secondary» (to ".boa_secondary") # See the previous chunk for installation on Debian. # (find-vldifile "boa.list") # (find-fline "/usr/doc/boa/") # (find-fline "/usr/doc/boa/docs/") # (find-fline "/usr/doc/boa/examples/") # (find-fline "/etc/boa/boa.conf") egrep '^#?[A-Z]' /etc/boa/boa.conf |& tee ~/o rm -Rv /tmp/boa/ mkdir /tmp/boa/ cat > /tmp/boa/boa.conf <<'---' Port 8080 User nobody Group nogroup ServerAdmin root@localhost ErrorLog /var/log/boa/error_log AccessLog /var/log/boa/access_log #VerboseCGILogs #ServerName www.your.org.here #VirtualHost #DocumentRoot /var/www DocumentRoot /tmp/boa UserDir public_html DirectoryIndex index.html DirectoryMaker /usr/lib/cgi-bin/boa_indexer KeepAliveMax 100 KeepAliveTimeout 10 MimeTypes /etc/mime.types DefaultType text/plain #AddType application/x-httpd-cgi cgi Alias /doc /usr/doc ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ --- kill $(pidof boa) boa -c /tmp/boa lsof | grep boa cp ~/TH/L/*.html /tmp/boa/ lynx http://angg:8080/ lynx http://angg:8080/cgi-bin/ # lynx complains with "Bad partial reference! Stripping lead dots.". Why? # (find-es "lynx" "lynx_patch_turbo") # (find-fline "/var/log/boa/") # (find-fline "~/EXPECT/") # (find-fline "~/EXPECT/httpc1") cd /usr/src/lynx-2.8.1/ agrep 'Bad partial reference! Stripping lead dots' $(find *) agrep 'BAD_PARTIAL_REFERENCE' $(find *) # (find-lynxfile "src/LYCharUtils.c" "BAD_PARTIAL_REFERENCE") # «expect_http_client» (to ".expect_http_client") expect -c ' spawn telnet 127.0.0.1 8080 expect -re "Connected to \[^\n\]+\n\[^\n\]+\n" send "GET /index.html HTTP/1.0\n\n" expect eof ' ##### # # eeg http client # 2004dec18 # ##### # «eeg_http_client» (to ".eeg_http_client") # cat > $EEG <<'%%%' GET /index.html HTTP/1.0 %%% eeg telnet 127.0.0.1 80 # cat > $EEG <<'%%%' GET /index.html HTTP/1.0 %%% eeg netcat -q 0 localhost 80 # ###### # # boa - recompiling # 2000jul03 # ###### # (code-c-d "boa" "/usr/src/boa-0.94.8.1/") pdsc $SDEBIAN/dists/potato/main/source/web/boa_0.94.8.1-1.dsc cd /usr/src/boa-0.94.8.1/ cd src/ ./configure |& tee ../oc # make |& tee ../om make CFLAGS="-O" LDFLAGS="-static" |& tee ../om ldd boa ldd boa_indexer laf boa boa_indexer # (find-boafile "om") # (find-node "(gcc)Link Options" "-static") # (find-node "(make)Catalogue of Rules") # (find-es "make") # rm -Rv /tmp/boa/ mkdir /tmp/boa/ cd /usr/src/boa-0.94.8.1/src/ cp -v boa boa_indexer /tmp/boa/ cd /tmp/boa/ cat > boa.conf <<'---' Port 8080 User root Group root ErrorLog /dev/null AccessLog /dev/null DocumentRoot /tmp DirectoryMaker /tmp/boa/boa_indexer KeepAliveMax 100 KeepAliveTimeout 10 MimeTypes /dev/null # MimeTypes /etc/mime.types DefaultType text/plain # AddType application/x-httpd-cgi cgi # Alias /doc /usr/doc # ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ --- kill $(pidof boa) /tmp/boa/boa -c /tmp/boa # lsof | grep boa lynx http://127.0.0.1:8080/ # (find-boafile "") # (find-boafile "odrb") # (find-boafile "debian/rules") # (find-boafile "src/") ##### # # dustmote, a minimal http server written in Tcl (~120 lines) # 99nov15 # ##### # «dustmote» (to ".dustmote") # (find-es "tcl" "dustmote") # Update (2007): I tried the Simtel URL below, it no longer works. # The code of dustmote can be fetched from here: # http://wiki.tcl.tk/4333 # The rest of this block is very old. # ftp://ftp.unicamp.br/pub/simtelnet/win95/webbrows/dumo104.zip # rm -Rv /usr/src/dustmote/ mkdir /usr/src/dustmote/ cd /usr/src/dustmote/ unzip -a $S/ftp/ftp.unicamp.br/pub/simtelnet/win95/webbrows/dumo104.zip cd /usr/src/dustmote/ cp dustmote.tcl dm8080.tcl ed dm8080.tcl <<'---' 141c vwait forEver . 1,3c set root /home/root/TH/L set default index.html set port 8080 ;# port 80 is used by Apache . w --- # (find-fline "/usr/src/dustmote/") # diff -e dustmote.tcl dm8080.tcl # Its indentation is ugly; use Emacs to fix it. # (progn (find-fline "/usr/src/dustmote/dustmote.tcl") (indent-region (point-min) (point-max) nil) (save-buffer)) # (find-fline "/usr/src/dustmote/dm8080.tcl") # tclsh dm8080.tcl |& tee /tmp/odm lsof | grep tcl lynx http://127.0.0.1:8080/ ##### # # http from Tcl # 99nov14 # ##### # «tcl_http» (to ".tcl_http") # (find-es "page" "angelfire") # (find-fline "~/TCL/httpwiki") # (find-fline "$S/http/www.angelfire.com/cgi-bin/") expect -c ' set afpasswd xxxxxxxx ;# PUT THE PASSWORD HERE! # package require http 1.0 set answer [http_data [http_get \ http://www.angelfire.com/cgi-bin/bedit -query [http_formatQuery \ fullhpd or2/edrx \ password $afpasswd \ login submit]]] puts $answer ' |& tee /tmp/bedit.html # (find-fline "$S/http/www.angelfire.com/cgi-bin/") # (find-fline "$S/http/www.angelfire.com/cgi-bin/bedit.html") # (find-fline "$S/http/www.angelfire.com/cgi-bin/bedit") # (find-fline "/tmp/bedit.html") lynx /tmp/bedit.html lynx $S/http/www.angelfire.com/cgi-bin/bedit.html cp $S/http/www.angelfire.com/cgi-bin/bedit.html /tmp/bedit.html getforms < /tmp/bedit.html diff /tmp/bedit.html $S/http/www.angelfire.com/cgi-bin/bedit.html agrep -i input /tmp/bedit.html agrep -i input $S/http/www.angelfire.com/cgi-bin/bedit.html cat $S/http/www.angelfire.com/cgi-bin/bedit.html | \ expect -c ' while {[gets stdin li]!=-1} { if {[regexp {]*>} $li inp]} { puts $inp } } ' | \ tee ~/o # (find-fline "~/.zshrc" "getforms") getforms < $S/http/www.angelfire.com/cgi-bin/bedit ##### # # Sending and receiving files # 99nov16 # ##### # (find-es "tcl" "cgi.tcl") # (find-cgitclfile "") # (find-cgitclfile "example/") # (find-cgitclfile "example/upload.cgi") # (find-cgitclfile "example/uploadbin.cgi") # (find-fline "/usr/lib/tcl8.0/") # (find-fline "/usr/lib/tcl8.0/http1.0/") # (find-fline "/usr/lib/tcl8.0/http2.0/") # (find-fline "/tmp/upload.html") # (find-fline "/usr/src/dustmote/dm8080.tcl") cd /tmp/ wget -O upload.html http://127.0.0.1/cgi-tcl/upload.cgi edrxnetscape http://127.0.0.1/cgi-tcl/ ##### # # Logging everything on a http connection # 99nov16 # ##### # set info [fconfigure $socketChannel -peername] # set peerName [lindex $info 1] # set when [clock format [clock seconds] ] # puts stdout "$peerName $when" # (find-fline "~/EXPECT/eheaders") # stty -icanon min 1 echo expect -c ' proc answer {socketChannel ip port} { puts "$ip $port" spawn -open $socketChannel interact puts "(closed)" } socket -server answer 8080 vwait forEver ' # On other window: expect -c ' spawn telnet 127.0.0.1 8080 interact timeout 10 exit ' # On still another window: kill $(pidof telnet) ##### # # CGI.pm-2.56 # ##### # «cgipm-2.56» (to ".cgipm-2.56") rm -Rv /usr/src/CGI.pm-2.56/ cd /usr/src/ tar -xvzf $SCPAN/authors/id/LDS/CGI.pm-2.56.tar.gz cd /usr/src/CGI.pm-2.56/ # (code-c-d "cgipm" "/usr/src/CGI.pm-2.56/") # (find-cgipmfile "") ##### # # Basic cgis # 2000may18 # ##### # «runtmpcgi» (to ".runtmpcgi") # (find-angg ".zshrc" "runtmpcgi") # Here's a quick way to test simple cgis: we write them to a scratch # cgi file, set the permission bits and call the scratch cgi via http. # This turned out to be very useful, so I created some functions and # aliases on my .zshrc that do most of the job and reduce the noise. # There are links to them below. # Just print the date, the pwd and the uids/gids. # cat > /usr/lib/cgi-bin/tmp.cgi <<'--%%--' #!/usr/bin/perl print "Content-type: text/plain\n\n"; print "date: ", `date`; print "pwd: ", `pwd`; print "id: ", `id`; --%%-- chmod 755 /usr/lib/cgi-bin/tmp.cgi echo; wget -q -O - http://127.0.0.1/cgi-bin/tmp.cgi # # Same, but using a shell function. # (find-angg ".zshrc" "runtmpcgi") runtmpcgi <<'---' #!/usr/bin/perl print "Content-type: text/plain\n\n"; print "date: ", `date`; print "pwd: ", `pwd`; print "id: ", `id`; --- # # Same, but with even less explicit noise. runperltcgi <<'---' print "date: ", `date`; print "pwd: ", `pwd`; print "id: ", `id`; --- # # Now that the noise is gone we can use cgis that would look too ugly # otherwise. This one inspects the environment and argv, first on a # plain call, then on an "isindex" call. # (find-es "perl" "Data::Dumper") runperltcgi '?foo=bar' <<'---' use Data::Dumper;sub pdump{print"\n $_[0] =\n",Dumper($_[1]);} pdump '%ENV', \%ENV; pdump '$0', $0; pdump '@ARGV', \@ARGV; --- #---- tmpcgi '?foo' # # «disguise-user-agent» (to ".disguise-user-agent") # (find-es "wget" "user-agent") # (find-angg ".zshrc" "psne") # A way to use wget on places that won't allow "spiders": # lynx http://127.0.0.1/cgi-bin/tmp.cgi lynx -source http://127.0.0.1/cgi-bin/tmp.cgi > /tmp/ol wget -O - -U 'Lynx/2.8.3rel.1 libwww-FM/2.14' \ http://127.0.0.1/cgi-bin/tmp.cgi \ | tee /tmp/ow l /tmp/o{l,w} # ##### # # More (?) notes on runperltcgi # 2000aug01 # ##### # (find-es "http" "runtmpcgi") # (find-angg ".zshrc" "runtmpcgi") http://127.0.0.1/cgi-bin/tmp.cgi$1 # runperltcgi '?foo' <<'---' use Data::Dumper; sub pdump{print"\n $_[0] =\n",Dumper($_[1]);} use CGI; my $query = new CGI; pdump '%ENV', \%ENV; pdump '$0', $0; pdump '@ARGV', \@ARGV; pdump "query", $query; --- # settmpcgi <<'---' pdump '%ENV', \%ENV; pdump '$0', $0; pdump '@ARGV', \@ARGV; pdump "query", $query; --- tmpcgi '?foo=bar' tmpcgi cat /usr/lib/cgi-bin/tmp.cgi /usr/lib/cgi-bin/tmp.cgi foo=bar # ##### # # CGI specs # 2000may18 # ##### # «cgi_specs» (to ".cgi_specs") # (code-c-d "apadoc" "/usr/doc/apache/manual/") # (find-apadocfile "misc/FAQ.html" "CGI specification") # (code-c-d "cgispec" "$S/http/hoohoo.ncsa.uiuc.edu/cgi/") # (find-cgispecfile "") # (find-cgispecw3 "overview.html") # (find-cgispecw3 "interface.html") # (find-cgispecw3 "env.html") # (find-cgispecw3 "cl.html") # (find-cgispecw3 "in.html") # (find-cgispecw3 "out.html") # (find-apadocfile "") # (find-apadocfile "cgi_path.html") # (find-apadocfile "handler.html") # (find-apadocfile "suexec.html") ##### # # File upload # 2000jul29 # ##### # «file_upload» (to ".file_upload") # Note that I'm using cgi.tcl to check if the uploads are ok; use this # link for how to install it: # (find-es "tcl" "cgi.tcl") # (find-es "perl" "Data::Dumper") # (find-es "emacs" "w3") # (w3-fetch "http://localhost/cgi-tcl/") # (find-fline "/var/www/cgi-tcl/") # (find-fline "/var/www/cgi-tcl/upload.cgi") # (find-fline "/var/www/cgi-tcl/uploadbin.cgi") # (eeman "3pm HTTP::Message") # (eeman "3pm HTTP::Request") # (eeman "3pm HTTP::Request::Common") # (eeman "3pm LWP::UserAgent") # (find-pl5file "HTTP/Message.pm" "previous content is returned.") # (find-pl5file "HTTP/Request.pm" "Instances of this class are usually") # (find-pl5file "HTTP/Request/Common.pm" "Sending my") # (find-pl5file "LWP/UserAgent.pm" "new LWP::UserAgent") # cat > /tmp/p <<'---' use Data::Dumper; sub pdump { print "\n $_[0] =\n", Dumper($_[1]); } use LWP::UserAgent; use HTTP::Request::Common; $ua = LWP::UserAgent->new; $request = POST 'http://127.0.0.1/cgi-tcl/upload.cgi', Content_Type => 'form-data', Content => [ name => 'n...a...m...e', file1 => ["$ENV{HOME}/.bashrc"], ]; $response = $ua->request($request); $content = $response->content(); # pdump '$post', $post; # pdump '$response', $response; print $content; --- perl /tmp/p \ | unhtml \ | uniq # cat > /tmp/p <<'---' use Data::Dumper; sub pdump { print "\n $_[0] =\n", Dumper($_[1]); } use LWP::UserAgent; use HTTP::Request::Common; print LWP::UserAgent -> new -> request(POST 'http://127.0.0.1/cgi-tcl/upload.cgi', Content_Type => 'form-data', Content => [ foo => 'bar', file1 => ["$ENV{HOME}/.bashrc"], ]) -> content(); --- perl /tmp/p \ | unhtml \ | uniq # ##### # # File upload and php3 # 2000aug01 # ##### # «file_upload_php3» (to ".file_upload_php3") # (find-angg ".zshrc" "perl_http_request") # cat > /var/www/tmp.php3 <<'---' --- perl_http_request > /tmp/o.html <<'---' POST 'http://127.0.0.1/tmp.php3', Content_Type => 'form-data', Content => [ foo => 'bar', file1 => ["$ENV{HOME}/.bashrc"], ] --- lynx /tmp/o.html # Search for "PHP Variables". # ##### # # Testing if I can connect to a site that refuses ping # 2000aug30 # ##### # «pingless» (to ".pingless") # function trytoconnect () { expect -c " spawn telnet $1 $2 expect {Connected to} {puts ok} timeout {puts argh} eof {puts argh} " } # Ok: trytoconnect angg.twu.net 80 # Argh: trytoconnect sucuri.mat.puc-rio.br 80 trytoconnect nonexistent.comm 80 # ##### # # squid # 2000dec01 # ##### # «squid» (to ".squid") apti squid squid-cgi squidclient urlredir aptrm squid squid-cgi squidclient urlredir # I once got this error while using my ISP: ERROR The requested URL could not be retrieved While trying to retrieve the URL: http://www.linuxmagic.org/ The following error was encountered: Connection Failed The system returned: (111) Connection refused The remote host or network may be down. Please try the request again. Your cache administrator is suporte@inx.com.br. Generated Sun, 26 Nov 2000 04:32:46 GMT by leblon.inx.com.br (Squid/2.3.STABLE3) # (find-status "squid") # (find-status "squid-cgi") # (find-status "squidclient") # (find-status "urlredir") # (find-vldifile "squid-cgi.list") # (find-vldifile "squid.list") # (find-vldifile "squidclient.list") # (find-vldifile "urlredir.list") # (find-fline "/usr/doc/squid-cgi/") # (find-fline "/usr/doc/squid/") # (find-fline "/usr/doc/squidclient/") # (find-fline "/usr/doc/urlredir/") # (find-fline "/usr/doc/squid/HTTP-codes.txt.gz") # (find-w3 "/usr/doc/squid/FAQ.html") # (find-w3 "/usr/doc/squid/FAQ-17.html#ss17.2") # (eeman "1 squidclient") lynx http://127.0.0.1/cgi-bin/cachemgr.cgi ##### # # Connecting to a Tcl interpreter # 2001nov10 # ##### # (find-fline "~/bin/mytcl") # (find-fline "/usr/lib/cgi-bin/") # (find-fline "/usr/lib/cgi-bin/tcltest") # (find-angg ".zshrc" "heredoc") # (find-man "3tcl read") # (find-man "3tcl while") # (find-es "tcl-cipsga" "gets") # mytcl -c ' while {gets li; puts "%$li"} ' # mytcl -c 'puts [gets stdin li]; puts <$li>' # echo foo | mytcl -c 'puts [gets stdin li]; puts <$li>' echo -n foo | mytcl -c 'puts [gets stdin li]; puts <$li>' echo -n | mytcl -c 'puts [gets stdin li]; puts <$li>' # heredoc /usr/lib/cgi-bin/tcltest -m 755 <<'---' #!/bin/sh \ exec tclsh "$0" "$@" source $env(HOME)/TCL/inc.tcl ##### # # thttpd # 2005oct21 # ##### # «thttpd» (to ".thttpd") # (find-status "thttpd") # (find-vldifile "thttpd.list") # (find-udfile "thttpd/") # (find-fline "/etc/thttpd/thttpd.conf") # (find-man "8 thttpd") # (find-man "8 thttpd" "daemon") # (find-man "8 thttpd" "*.cgi") # I prefer to use -c "*" and make every executable file a cgi. # (find-rfcfile "rfc1945.txt" "Content-Type: text/html") # http://www.acme.com/software/thttpd/ # kill -9 $(cat ~/usrc/varwww/pid); sleep 1 rm -Rv ~/usrc/varwww/ mkdir -p ~/usrc/varwww/ cd ~/usrc/varwww/ thttpd -p 8080 \ -d ~/usrc/varwww/ \ -i ~/usrc/varwww/pid \ -nor -nos -c "*" -l /dev/null \ -T iso-8859-1 cd ~/usrc/varwww/ date > 1 date > 2 cat > plain.cgi <<'%%%' #!/bin/sh echo -e "Content-type: text/plain\n" echo -e "\nT\nB\n" %%% chmod 755 plain.cgi cat > html.cgi <<'%%%' #!/bin/sh echo -e "Content-type: text/html\n" echo -e "\nT\nB\n" %%% chmod 755 html.cgi cat > html-foo <<'%%%' #!/bin/sh echo -e "Content-type: text/html\n" echo -e "\nT\nB\n" %%% chmod 755 html-foo laf /proc/$(cat ~/usrc/varwww/pid)/ # # (find-fline "~/usrc/varwww/") # Test: # http://127.0.0.1:8080/ # (find-status "thttpd-util") # (find-vldifile "thttpd-util.list") # (find-udfile "thttpd-util/") ##### # # thttpd from the source # 2005oct27 # ##### # «thttpd-compile» (to ".thttpd-compile") # http://www.acme.com/software/thttpd/ # http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz # rm -Rfv ~/usrc/thttpd-2.25b/ tar -C ~/usrc/ -xvzf \ $S/http/www.acme.com/software/thttpd/thttpd-2.25b.tar.gz cd ~/usrc/thttpd-2.25b/ ./configure 2>&1 | tee oc make 2>&1 | tee om # # (code-c-d "thttpd" "~/usrc/thttpd-2.25b/") # (find-thttpdfile "") ##### # # thttpd: allowing cgis anywhere # 2006jun23 # ##### # «thttpd-cgis-anywhere» (to ".thttpd-cgis-anywhere") # (code-c-d "thttpd" "~/usrc/thttpd-2.25b/" :grep) # (find-thttpdfile "") # (find-thttpdgrep "grep -niH -e cgipat $(find *)") # (find-thttpdfile "thttpd.c" "\"cgipat\"") # (find-thttpdgrep "grep -niH -e cgi_pattern $(find *)") # (find-thttpdfile "cgi-src/ssi.c" "match( cgi_pattern, filename )") # (find-thttpdfile "config.h" "Allow any program ending with a .cgi") # (find-thttpdfile "config.h" "** meaning any string at all") # (find-man "8 thttpd" "Don't do explicit symbolic link checking") # (find-fline "$ASROOT/etc/thttpd/thttpd.conf") # (find-sh0 "sudo chown edrx:edrx /etc/thttpd/thttpd.conf") # (find-fline "/etc/thttpd/thttpd.conf") #chroot nosymlink cgipat=**.cgi sudo /etc/init.d/thttpd restart # (find-sh0 "sudo /etc/init.d/thttpd restart") # (find-sh0 "sudo killall thttpd") # (find-sh0 "ps ax | grep thttpd") ##### # # cgis at zumbi (htaccess) # 2008jan03 # ##### # «cgis-at-zumbi-with-htaccess» (to ".cgis-at-zumbi-with-htaccess") # (find-fline "~/LOGS/2008jan03.omnisys") # (find-netbsdman "ksh" " -f " "noglob") # http://httpd.apache.org/docs/1.3/howto/htaccess.html  (eepitch-zumbi)  (eepitch-kill)  (eepitch-zumbi) cat ~andre/public_html/.htaccess cd ~/public_html/ cat > .htaccess <<'%%%' Options +ExecCGI AddHandler cgi-script .cgi %%% cd ~/public_html/tmp/ cat > test.cgi <<'%%%' #!/bin/sh # echo -e "Content-type: text/html\n\n" echo -e "Content-type: text/plain\n\n" set %%% chmod 755 test.cgi # http://zumbi/~edrx/tmp/ # http://zumbi/~edrx/tmp/test.cgi wget -q -O - http://zumbi/~edrx/tmp/test.cgi Last login: Thu Jan 3 12:35:14 2008 from meskita zumbi - netbsd $  $ cat ~andre/public_html/.htaccess Options +ExecCGI AddHandler cgi-script .cgi $  $ cd ~/public_html/ $ cat > .htaccess <<'%%%' > Options +ExecCGI > AddHandler cgi-script .cgi > %%% $  $ cd ~/public_html/tmp/ $ cat > test.cgi <<'%%%' > #!/bin/sh > # echo -e "Content-type: text/html\n\n" > echo -e "Content-type: text/plain\n\n" > set > %%% $ chmod 755 test.cgi $  $ # http://zumbi/~edrx/tmp/ $ # http://zumbi/~edrx/tmp/test.cgi $  $ wget -q -O - http://zumbi/~edrx/tmp/test.cgi DOCUMENT_ROOT=/omnisys/www/htdocs GATEWAY_INTERFACE=CGI/1.1 HTTP_ACCEPT='*/*' HTTP_CONNECTION=Keep-Alive HTTP_HOST=zumbi HTTP_USER_AGENT=Wget/1.10.2 IFS=' ' OPTIND=1 PATH=/sbin:/bin:/usr/sbin:/usr/bin PS1='$ ' PS2='> ' PS4='+ ' QUERY_STRING= REMOTE_ADDR=192.168.51.181 REMOTE_PORT=65525 REQUEST_METHOD=GET REQUEST_URI='/~edrx/tmp/test.cgi' SCRIPT_FILENAME=/home/edrx/public_html/tmp/test.cgi SCRIPT_NAME='/~edrx/tmp/test.cgi' SERVER_ADDR=192.168.51.181 SERVER_ADMIN=andre.luiz@omnisys.com.br SERVER_NAME=zumbi SERVER_PORT=80 SERVER_PROTOCOL=HTTP/1.0 SERVER_SIGNATURE='
Apache/1.3.37 Server at zumbi Port 80
' SERVER_SOFTWARE='Apache/1.3.37 (Unix)' UNIQUE_ID=R3zyscCoM7UAAAPUBYE $  ##### # # nginx # 2009sep29 # ##### # (find-status "nginx") # (find-vldifile "nginx.list") # (find-udfile "nginx/") # (find-fline "/var/www/nginx-default/") # (find-fline "/etc/nginx/") # Local Variables: # coding: raw-text-unix # ee-delimiter-hash: "\n#\n" # ee-delimiter-percent: "\n%\n" # ee-anchor-format: "«%s»" # End: