mirror of https://github.com/xvxx/phd
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
207 lines
4.5 KiB
Groff
207 lines
4.5 KiB
Groff
.\" Generated by scdoc 1.11.0
|
|
.\" Complete documentation for this program is not available as a GNU info page
|
|
.ie \n(.g .ds Aq \(aq
|
|
.el .ds Aq '
|
|
.nh
|
|
.ad l
|
|
.\" Begin generated content:
|
|
.TH "PHD" "1" "2020-06-27"
|
|
.P
|
|
.SH NAME
|
|
.P
|
|
phd - an estoeric gopher server
|
|
.P
|
|
.SH SYNOPSIS
|
|
.P
|
|
\fBphd\fR [\fIOPTIONS\fR] [\fISITE ROOT\fR]
|
|
.P
|
|
.SH DESCRIPTION
|
|
.P
|
|
\fBphd\fR is a small, easy-to-use gopher server.
|
|
.P
|
|
Point it at a directory and it'll serve up all the text files,
|
|
sub-directories, and binary files over Gopher. Any \fB.gph\fR files will
|
|
be served up as Gophermaps and executable \fB.gph\fR files will be
|
|
run as a program with their output served to the client, like the
|
|
glorious cgi-bin days of yore!
|
|
.P
|
|
Usually \fBphd\fR is started with a path to your Gopher site:
|
|
.P
|
|
.RS 4
|
|
phd /srv/gopher
|
|
.P
|
|
.RE
|
|
If no path is given, \fBphd\fR will use the current directory as the root
|
|
of your Gopher site.
|
|
.P
|
|
.SH OPTIONS
|
|
.P
|
|
\fB-r\fR \fISELECTOR\fR, \fB--render\fR \fISELECTOR\fR
|
|
.P
|
|
.RS 4
|
|
Rather than start as a server, render the \fISELECTOR\fR of the site using the options provided and print the raw response to \fBSTDOUT\fR.
|
|
.P
|
|
.RE
|
|
\fB-b\fR \fIADDRESS\fR, \fB--bind\fR \fIADDRESS\fR
|
|
.RS 4
|
|
Set the socket address to bind to, e.g. \fB127.0.0.1:7070\fR
|
|
.P
|
|
.RE
|
|
\fB-p\fR \fIPORT\fR, \fB--port\fR \fIPORT\fR
|
|
.RS 4
|
|
Set the \fIPORT\fR to use when generating Gopher links.
|
|
.P
|
|
.RE
|
|
\fB-h\fR \fIHOST\fR, \fB--host\fR \fIHOST\fR
|
|
.RS 4
|
|
Set the \fIHOST\fR to use when generating Gopher links.
|
|
.P
|
|
.RE
|
|
\fB-h\fR, \fB--help\fR
|
|
.RS 4
|
|
Print a help summary and exit.
|
|
.P
|
|
.RE
|
|
\fB-v\fR, \fB--version\fR
|
|
.RS 4
|
|
Print version information and exit.
|
|
.P
|
|
.RE
|
|
.SH SPECIAL FILES
|
|
.P
|
|
The following files have special behavior when present in a directory
|
|
that \fBphd\fR is tasked with serving:
|
|
.P
|
|
\fBheader.gph\fR
|
|
.RS 4
|
|
If it exists in a directory, its content will be shown above the directory's content. Put ASCII art in it.
|
|
.P
|
|
.RE
|
|
\fBfooter.gph\fR
|
|
.RS 4
|
|
Same, but will be shown below a directory's content.
|
|
.P
|
|
.RE
|
|
\fBindex.gph\fR
|
|
.RS 4
|
|
Completely replaces a directory's content with what's in this file.
|
|
.P
|
|
.RE
|
|
\fB??.gph\fR
|
|
.RS 4
|
|
Visiting \fBgopher://yoursite/1/dog/\fR will try to render \fBdog.gph\fR from disk. Visiting \fB/1/dog.gph\fR will render the raw content of the .gph file.
|
|
.P
|
|
.RE
|
|
\fB.reverse\fR
|
|
.RS 4
|
|
If this exists, the directory contents will be listed in reverse alphanumeric order. Useful for phloggin', if you date your posts.
|
|
.P
|
|
.RE
|
|
.SH GOPHERMAP SYNTAX
|
|
.P
|
|
Any line in a \fB.gph\fR file that doesn't contain tabs (\fBt\fR) will get an
|
|
\fBi\fR automatically prefixed, turning it into a Gopher information item.
|
|
.P
|
|
For your convenience, phd supports \fBgeomyidae\fR syntax for
|
|
creating links:
|
|
.P
|
|
.nf
|
|
.RS 4
|
|
This is an info line\&.
|
|
[1|This is a link|/help|server|port]
|
|
[h|URL Link|URL:https://noogle\&.com]
|
|
.fi
|
|
.RE
|
|
.P
|
|
\fBserver\fR and \fBport\fR will get translated into the server and port of
|
|
the actively running server, eg \fBlocalhost\fR and \fB7070\fR.
|
|
.P
|
|
Any line containing a tab character (\fBt\fR) will be sent as-is to the
|
|
client, meaning you can write and serve up raw Gophermap files too.
|
|
.P
|
|
.SH DYNAMIC CONTENT
|
|
.P
|
|
Any \fB.gph\fR file that is marked \fBexecutable\fR with be run as if it
|
|
were a standalone program and its output will be sent to the client.
|
|
It will be passed three arguments: the query string (if any), the
|
|
server's hostname, and the current port. Do with them what you will.
|
|
.P
|
|
For example:
|
|
.P
|
|
.nf
|
|
.RS 4
|
|
$ cat echo\&.gph
|
|
#!/bin/sh
|
|
echo "Hi, world! You said:" $1
|
|
echo "1Visit Gopherpedia / gopherpedia\&.com 70"
|
|
.fi
|
|
.RE
|
|
.P
|
|
Then:
|
|
.P
|
|
.nf
|
|
.RS 4
|
|
$ gopher-client gopher://localhost/1/echo?something
|
|
[INFO] Hi, world! You said: something
|
|
[LINK] Visit Gopherpedia
|
|
.fi
|
|
.RE
|
|
.P
|
|
Or more seriously:
|
|
.P
|
|
.nf
|
|
.RS 4
|
|
$ cat figlet\&.gph
|
|
#!/bin/sh
|
|
figlet $1
|
|
.fi
|
|
.RE
|
|
.P
|
|
then:
|
|
.P
|
|
.nf
|
|
.RS 4
|
|
$ gopher-client gopher://localhost/1/figlet?hi gopher
|
|
[INFO] _ _ _
|
|
[INFO] | |__ (_) __ _ ___ _ __ | |__ ___ _ __
|
|
[INFO] | '_ | | / _` |/ _ | '_ | '_ / _ '__|
|
|
[INFO] | | | | | | (_| | (_) | |_) | | | | __/ |
|
|
[INFO] |_| |_|_| __, |___/| \&.__/|_| |_|___|_|
|
|
[INFO] |___/ |_|
|
|
.fi
|
|
.RE
|
|
.P
|
|
.SS RESOURCES
|
|
.P
|
|
geomyidae source code
|
|
.RS 4
|
|
gopher://bitreich.org/1/scm/geomyidae/files.gph
|
|
.P
|
|
.RE
|
|
Example Gophermap
|
|
.RS 4
|
|
https://github.com/gophernicus/gophernicus/blob/master/README.Gophermap
|
|
.P
|
|
.RE
|
|
Gophermaps
|
|
.RS 4
|
|
https://gopher.zone/posts/how-to-gophermap/
|
|
.P
|
|
.RE
|
|
RFC 1436:
|
|
.RS 4
|
|
https://tools.ietf.org/html/rfc1436
|
|
.P
|
|
.RE
|
|
.SH ABOUT
|
|
.P
|
|
\fBphd\fR is maintained by chris west and released under the MIT license.
|
|
.P
|
|
phd's Gopher hole:
|
|
.RS 4
|
|
\fIgopher://phkt.io/1/phd\fR
|
|
.RE
|
|
phd's webpage:
|
|
.RS 4
|
|
\fIhttps://github.com/xvxx/phd\fR
|