Introduction
Introduction Statistics Contact Development Disclaimer Help
Adding a new mandoc manpage and NetBSD rc.d. - geomyidae - A small C-based goph…
git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfri…
Log
Files
Refs
Tags
README
LICENSE
---
commit a417296299b8fd5073a1fd237562d08ad6ff6100
parent c61be869c93eb515c12f8b773b153b53c9a9409f
Author: Christoph Lohmann <[email protected]>
Date: Tue, 26 Feb 2013 18:49:20 +0100
Adding a new mandoc manpage and NetBSD rc.d.
Thanks Jeff W <[email protected]>!
Diffstat:
M geomyidae.8 | 136 ++++++-----------------------…
M rc.d/NetBSD.rc.d | 14 ++++++++------
2 files changed, 31 insertions(+), 119 deletions(-)
---
diff --git a/geomyidae.8 b/geomyidae.8
@@ -14,7 +14,7 @@
.Op Fl d
.Op Fl l Ar logfile
.Op Fl v Ar loglevel
-.Op Fl b Ar base
+.Op Fl b Ar base
.Op Fl p Ar port
.Op Fl o Ar sport
.Op Fl u Ar user
@@ -32,22 +32,20 @@ is a daemon for serving the protocol specified in
dynamic content, automatic file/directory indexing, logging and privilege
separation.
.Ed
-.
+.
.Sh IMPLEMENTATION
-.Bd -filled
Installation is straightforward: grab the zipped tar file, expand it in
an appropriate temp directory, change to the
.Qq "../geomyidae-x.xx"
directory, tweak the Makefile if desired (installs in
.Qq "/usr/bin"
-by default), then run the
+by default), then run the
.Sq "make ; make install"
commands. The resulting executable should be run by root.
-.Ed
.
.Ss Basic Installation and Startup:
-.Pp
.Bd -literal
+
% wget http://www.r-36.net/src/geomyidae/geomyidae-current.tgz;
% tar -xzvf geomyidae-*.tgz;
% cd geomyidae-*;
@@ -62,7 +60,6 @@ commands. The resulting executable should be run by root.
.Ed
.
.Ss Running
-.Bd -filled
geomyidae should normally be started by root, although it can be started
by a regular user provided that the base directory and its contents are owned
by the same user. geomyidae will only serve content within the base directory
@@ -75,27 +72,19 @@ values if set. See
below for specifics. Launching geomyidae automatically is best done via a UNIX
run-time (rc.d) script; several sample rc.d scripts are included in the geomyi…
source archive.
-.Ed
.
.Sh OPTIONS
geomyidae options and default settings:
-.Pp
-.Bl -tag -width ".Fl test Ao Ar string Ac"
+.Bl -tag -width Ds
.
-.Bd -filled
.It Fl d
Don't fork into background
-.Ed
.
-.Bd -filled
.It Fl l Ar logfile
Specify file where log output is written (no default)
-.Ed
.
-.Bd -filled
.It Fl v Ar loglevel
Set the logging level (default: 7)
-.Ed
.
.Bd -literal
Loglevels:
@@ -109,53 +98,38 @@ Loglevels:
(files + directories + HTTP + errors)
.Ed
.
-.Bd -filled
-.It Fl b Ar base
+.It Fl b Ar base
Root directory to serve (default: /var/gopher)
-.Ed
.
-.Bd -filled
.It Fl p Ar port
Port geomyidae should listen on (default: 70)
-.Ed
.
-.Bd -filled
.It Fl o Ar sport
Port geomyidae displays within base directory (default: 70).
Use in conjunction with
.Ic -p
for obfuscating actual port geomyidae is running on.
-.Ed
.
-.Bd -filled
.It Fl u Ar user
Sets the user to which privileges drop when geomyidae is ready
to accept network connections (default: user geomyidae runs as).
Helps improve security by reducing privileges during request
processing.
-.Ed
.
-.Bd -filled
.It Fl g Ar group
Sets the group to which privileges drop when geomyidae is ready
to accept network connections (default: group geomyidae runs as).
Helps improve security by reducing privileges during request
processing.
-.Ed -filled
.
-.Bd -filled
.It Fl h Ar host
Host to use in directory listings (default: localhost)
-.Ed
.
-.Bd -filled
.It Fl i Ar IP
IP to which geomyidae binds to (default: 127.0.0.1)
-.Ed
.El
.
.Sh FORMATTING
-.Bd -filled
Structured Gopher space(s) can be created with geomyidae through the
use of special indexing files of the form
.Ic <name>.gph
@@ -169,13 +143,9 @@ multiple index files to create a layered gopher environmen…
use of sub-directories: ie. pictures.gph, music.gph, documents.gph could
be "directories" within main.gph, yet all reside in /var/gopher along with
their respective files (*.jpg, *.mp3, *.pdf for example).
-.Ed
.
.Ss Anatomy of an index.gph file
-.Bd -filled
In general, each line of an index.gph file has the following structure:
-.Ed
-.Pp
.Bl -inset -offset indent
.It Ic [<type>|<desc>|<path>|<host>|<port>]
.El
@@ -206,12 +176,10 @@ In addition, geomyidae provides these:
i Informational Item (used for descriptive purposes)
.Ed
.
-.Pp
.Bd -filled
Unknown file types default to Type "9" (binary).
.Ed
.
-.Pp
.Bd -filled
Note: geomyidae doesn't require "informational" text to be formally
Typed as "[i|...]"; any line
@@ -224,44 +192,33 @@ it may be desirable to either formally Type informational…
it through a filter to add a second "t" - .ie sed 's/^t/&&/' .
.Ed
.
-.Bd -filled
.It Ic <desc>
= description of gopher item. Most printable characters should work.
-.Ed
.
-.Bd -filled
.It Ic <path>
= full path to gopher item (base value is
.Qq "/"
). Use the
.Qq "Err"
path for items not intended to be served.
-.Ed
.
-.Bd -filled
.It Ic <host>
= hostname or IP hosting the gopher item. Must be resolvable for the
intended clients. If this is set to
.Qq "server"
, the server's hostname is used.
-.Ed
.
-.Bd -filled
.It Ic <port>
= TCP port number (usually 70)
.
If this is set to
.Qq "port"
, the default port of the server is used.
-.Ed
.El
.
.Ss index.gph Example
-.Bd -filled
A root.gph file for a server running on host=frog.bog, port=70. Note use
of optional [i]nformational Item (line 2) for vertical space insertion:
-.Ed
-.Pp
.Bd -literal -offset indent
Welcome to Frog.bog
[i||Err||]
@@ -280,12 +237,10 @@ Links and Searches
.Ed
.
.Pp
-.Bd -filled
The above looks something like this in a text-based gopher client:
-.Ed
.Pp
.Bl -tag -width ".It Ic WIDTHS" -compact -offset indent
-.D1 Welcome to Frog.bog
+.It Ic Welcome to Frog.bog
.Pp
.It Ic (FILE)
About this server
@@ -300,7 +255,7 @@ Snowflake picture
.El
.Pp
.Bl -tag -width ".It Ic WIDTHS" -compact -offset indent
-.D1 Links and Searches
+.It Ic Links and Searches
.It Ic (DIR)
Go to R-36.net
.It Ic (HTML)
@@ -312,9 +267,7 @@ Search Veronica II
.It Ic (TEL)
Telnet to SDF Public Access Unix System
.El
-.Pp
.Sh DYNAMIC CONTENT (gopher CGI)
-.Bd -filled
There are two options provided for dynamic content creation: standard CGI (
.Ic .cgi
) and dynamic CGI
@@ -327,11 +280,8 @@ creation of on-the-fly gopher directories much easier (see…
All scripts must be under the gopher root directory and be executable by
the same user:group running geomyidae. Consequently, it is best to use
the -u and -g server options to avoid running as root.
-.Ed
.Pp
-.Bd -filled
Both .cgi and .dcgi scripts have the same argument call structure (as seen by …
-.Ed
.Pp
.D1 executable.[d]cgi $search $arguments $host $port
.Pp
@@ -342,22 +292,15 @@ where
.D1 host = server's hostname ("localhost" by default)
.D1 port = server's port ("70" by default)
.Pp
-.Bd -filled
All terms are tab-separated (per gopher protocol) which can cause some
surprises depending on how a script is written. See the CGI file (included
in the geomyidae source archive) for further elaboration.
-.Ed
.
.Ss Some CGI Examples
-.Pp
-.Bd -filled
Note: these are a very simple examples with no fitness checks with respect
to safety/security.
-.Ed
.Pp
-.Bd -filled
ex. uptime.cgi - standard CGI, no queries
-.Ed
.
.Bd -literal -offset indent
#!/bin/sh
@@ -367,21 +310,15 @@ exit 0
.Ed
.
.Pp
-.Bd -filled
Call the above with the following index.gph entry:
-.Ed
.Pp
.D1 [0|System Uptime|/uptime.cgi|frog.bog|70]
.Pp
-.Bd -filled
A search query request must have an item Type of "7" to be called
from an index.gph file. It also needs a "?" suffix in the <path>
field:
-.Ed
.Pp
-.Bd -filled
ex. hello.cgi - standard CGI with query
-.Ed
.
.Bd -literal -offset indent
#!/bin/sh
@@ -393,33 +330,25 @@ exit 0
.Ed
.
.Pp
-.Bd -filled
Call the above with the following index.gph entry:
-.Ed
.Pp
.D1 [7|Hello You - Please enter your name|/hello.cgi?|frog.bog|70]
.
.Pp
-.Bd -filled
And do a simple
.Xr snarf 1
-query:
-.Ed
+query (note the inserted TAB):
.Pp
-.D1 % snarf Qo gopher://frog.bog/7/hello.cgi?Christoph Qc -
+.D1 % snarf Qo gopher://frog.bog/7/hello.cgi?[TAB]Christoph Qc -
.D1 Hello Christoph - welcome to Frog.bog
.
.Pp
-.Bd -filled
Dynamic CGI entries are similar to above except that the script
-needs to create output as described in the
+needs to create output as described in the
.Ic FORMATTING
section:
-.Ed
.Pp
-.Bd -filled
ex. jughead.dcgi - dynamic CGI script with query
-.Ed
.
.Bd -literal -offset indent
#!/bin/sh
@@ -427,8 +356,8 @@ ex. jughead.dcgi - dynamic CGI script with query
KWRD="$1"
ARCHIVE="/var/gopher/textfiles/"
echo "[i|Search results for \\"${KWRD}\\":|Err||]"
-echo "[i|----|Err||]"
-# grep(1) recursive, case-insensitive KWRD search of ARCHIVE:
+echo "[i||Err||]"
+# grep(1) recursive, case-insensitive KWRD search of ARCHIVE:
for RESULT in $(/usr/bin/grep -i -l -m1 ${KWRD} -r $ARCHIVE)
do
DESC=$(/usr/bin/basename ${RESULT})
@@ -439,19 +368,15 @@ exit 0
.Ed
.
.Pp
-.Bd -filled
Call the above with the following index.gph entry:
-.Ed
.Pp
.D1 [7|Search this Gopher|/jughead.dcgi?|frog.bog|70]
.Pp
-.Bd -filled
A successful query might look like this:
-.Ed
.Pp
-.Bl -tag -width ".It Ic WIDTHS" -compact -offset indent
-.D1 Search results for Qo fubar Qc :
-.D1 ----
+.Bl -tag -width Ds -compact -offset indent
+.It Search results for Qo fubar Qc :
+.Pp
.It Ic (FILE)
How_Things_Break.txt
.It Ic (FILE)
@@ -461,16 +386,10 @@ Phrases_of_the_Ages.txt
.El
.
.Pp
-.Bd -filled
Care should to be exercised to avoid creating miss-Typed entries, unwanted
recursions, and/or unintended writes in the working directory.
-.Ed
-.Pp
.Sh LOG FILES
-.Pp
-.Bd -filled
The log file (ie. /var/log/gopherd.log) has the following structure:
-.Ed
.
.Pp
.Ic [<date>|<IP:port>] <item path> <query> (<status>)
@@ -481,38 +400,32 @@ where,
.Bl -inset
.It Ic <date>
= access date and time (std 'date' format)
-.Bl -inset -offset indent
-ex.
+.Pp
+ ex.
.Qq "Sun Feb 17 06:11:10 PST 2008"
-.El
.It Ic <IP:port>
= client IP address and port served
-.Bl -inset -offset indent
+.Pp
ex.
.Qq "24.208.18.127:16857"
-.El
.Pp
.It Ic <item path>
= full path to item served
-.Bl -inset -offset indent
+.Pp
ex.
.D1 Qo "/PICS/simple2.jpg" Qc for an image file
.D1 Qo "/PICS" Qc for a directory access
-.El
.It Ic <query>
= query term submitted (Type 7 requests only)
-.Bl -inset -offset indent
+.Pp
ex.
.Dl % snarf Qq "gopher://frog.bog/7/hello.cgi?Christoph"
.Dl would log Qo "Christoph" Qc as the query term.
-.El
.It Ic (<status>)
= status of client request
-.Bl -inset -offset indent
+.Pp
ex. - some common status entries:
-.El
.Pp
-.Bl -hang -width XXXXXXXXXXXXXXXX -compact -offset XXXXXXXXXXXX
.It Qo (serving) Qc
=> a successful request
.It Qo (not found) Qc
@@ -522,17 +435,15 @@ ex. - some common status entries:
.It Qo (dir listing) Qc
=> unindexed directory listing
.El
-.El
.
.Sh FILES
README, LICENSE, CGI, index.gph, rc.d/
.
-.Sh "SEE ALSO"
+.Sh SEE ALSO
Links for further information on gopher:
.Pp
.D1 Pa gopher://gopher.floodgap.com
.D1 Pa gopher://gopher.gopherproject.org
-.Pp
.Sh STANDARDS
.Em Internet RFC 1436
.
@@ -553,7 +464,6 @@ geomyidae is released under the MIT/X Consortium License.
.
.Sh BUGS
Dynamic content functionality may vary across gopher clients.
-.Ed
.
.Ss "Reporting Bugs"
Report bugs to:
diff --git a/rc.d/NetBSD.rc.d b/rc.d/NetBSD.rc.d
@@ -1,21 +1,22 @@
#!/bin/sh
#
-# REQUIRE: local
# PROVIDE: geomyidae
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
$_rc_subr_loaded . /etc/rc.subr
name="geomyidae"
rcvar=$name
-command="/usr/pkg/sbin/${name}"
+command="/usr/local/bin/${name}"
#####################################################
# Geomyidae Options Section - "?" => geomyidae(8) #
# Uncomment & define options (defaults are shown) #
#####################################################
#
-#LOGFILE="-l /var/log/gopherd.log"
+#LOGFILE="-l /var/log/gopherlog"
#LOGLEVEL="-v 7"
#HTDOCS="-b /var/gopher"
#PORT="-p 70"
@@ -26,10 +27,11 @@ command="/usr/pkg/sbin/${name}"
#IP="-i 127.0.0.1"
######################################################
-# Now remove any UNDEFINED options from line below: #
+# Next, add all DEFINED options to command_args= #
######################################################
#
-command_args="$LOGFILE $LOGLEVEL $HTDOCS $PORT $SPORT $USR $GRP $HOST $IP"
+#command_args="$LOGFILE $LOGLEVEL $HTDOCS $PORT $SPORT $USR $GRP $HOST $IP"
+command_args=""
######################################################
@@ -43,7 +45,7 @@ command_args="$LOGFILE $LOGLEVEL $HTDOCS $PORT $SPORT $USR $G…
#{
# echo "Starting $name"
# $command $command_args
-# pgrep -x $name > $pidfile
+# pgrep -n $name > $pidfile
#}
######################################################
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.