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