URI: 
       tCGI - geomyidae - A small C-based gopherd.
  HTML git clone git://bitreich.org/geomyidae/ git://hg6vgqziawt5s4dj.onion/geomyidae/
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
   DIR LICENSE
       ---
       tCGI (2363B)
       ---
            1 INTRODUCTION
            2 
            3 Geomyidae has support for running scripts on each request, which will generate
            4 dynamic content.
            5 
            6 There are two modes: standard cgi and dynamic cgi.
            7 (»CGI« as name was just taken, because that's easier to compare to the web.)
            8 
            9 
           10 PERMISSIONS
           11 
           12 The scripts are run using the permissions of geomyidae. It is advised to use
           13 the -g and -u options of geomyidae.
           14 
           15 
           16 BEFOREHAND
           17 
           18 In these examples C: is what the client sends and S: what the server is
           19 sending.
           20 
           21 
           22 CALLING CONVENTION
           23 
           24 Geomyidae will call the script like this:
           25 
           26         % $gopherroot/test.cgi $search $arguments $host $port
           27 
           28 When it is a plain request, the arguments will have these values:
           29 
           30         C: /test.cgi
           31         -> $search = ""
           32         -> $arguments = ""
           33         -> $host = server host
           34         -> $port = server port
           35 
           36 If the request is for a type 7 search element, then the entered string by
           37 the user will be seen as following:
           38 
           39         C: /test.cgi        searchterm                (There is a TAB in-between)
           40         -> $search = »searchterm«
           41         -> $arguments = ""
           42         -> $host = server host
           43         -> $port = server port
           44 
           45 When you are trying to give your script some calling arguments, the syntax
           46 is:
           47 
           48         C: /test.cgi?hello
           49         -> $search = ""
           50         -> $arguments = »hello«
           51         -> $host = server host
           52         -> $port = server port
           53 
           54 If both ways of input are combined, the variables are set as following:
           55 
           56         C: /test.cgi?hello=world        searchterm        (Beware! A Tab!)
           57         -> $search = »searchterm«
           58         -> $arguments = »hello=world«
           59         -> $host = server host
           60         -> $port = server port
           61 
           62 
           63 STANDARD CGI
           64 
           65 The file extension »cgi« switches to this mode, where the output of the
           66 script is not interpreted at all by the server and the script needs to send
           67 raw content.
           68 
           69         % cat test.cgi
           70         #!/bin/sh
           71         echo "Hello my friend."
           72         %
           73 
           74 The client will receive:
           75 
           76         S: Hello my friend.
           77 
           78 
           79 DYNAMIC CGI
           80 
           81 For using dynamic CGI, the file needs to end in »dcgi«, which will switch on
           82 the interpretation of the returned lines by the server. The interpreted for-
           83 mat is the same as in the *.gph files.
           84 
           85         % cat test.dcgi
           86         #!/bin/sh
           87         echo "[1|Some link|/somewhere|server|port]"
           88         %
           89 
           90 Here geomyidae will interpret the *.gph format and return the valid gopher
           91 menu item.
           92 
           93         S: 1Some link        /somewhere        gopher.r-36.net        70
           94 
           95 For outputting large texts and having minor hassles with the content, prepend
           96 »t« to every line beginning with »t« or all lines:
           97 
           98         % cat filereader.dcgi
           99         #!/bin/sh
          100         cat bigfile.txt | sed 's,^t,&&,'
          101 
          102 Have fun!
          103