summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatolaZ <katolaz@freaknet.org>2018-07-15 11:27:09 +0100
committerKatolaZ <katolaz@freaknet.org>2018-07-15 11:27:09 +0100
commitc15a524ced17da029abaa09bdb025487a3b27551 (patch)
tree6f9cde313117749a3b22babc389db04d534601fb
parentcf2ff5ca4c8e0ce99bb86a1505585713c8de29fc (diff)
name changed to gosher
-rw-r--r--README.md31
-rw-r--r--TODO5
-rwxr-xr-xgosher (renamed from gprsh)14
l---------gosher_serve1
l---------gprsh_serve1
5 files changed, 38 insertions, 14 deletions
diff --git a/README.md b/README.md
index d1b278a..15ac4f1 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,34 @@
-## gprsh -- A simple Gopher server in a POSIX shell script
+## gosher -- A simple Gopher server in a POSIX shell script
-`gprsh` is a Gopher server in a shell script. It requires only a
-standard `netcat`.
+`gosher` is a Gopher server in a POSIX shell script. It requires only a
+standard `netcat(1)`.
You start the server using:
- $ ./gprsh [<PORT> [<GOPHERDIR>]
+ $ ./gosher [<PORT> [<GOPHERDIR>]
If PORT is not specified, it will bind on port 70. If GOPHERDIR is not
provided, it defaults to "./".
-`gprsh` reads the index.gph gopherfile in a folder and renders it as a
-gophermap.
+If the selector is a directory, `gosher` will look for a file named
+`gophermap` to render the submenu. If a `gophermap` does not exist,
+`gosher` looks for the index.gph gopherfile in the folder and, if it
+exists, renders it as a gophermap.
+
+## Why `gosher`?
+
+Just for fun. There are only a few TCP/IP application protocols left
+that can be implemented in a few dozen lines of POSIX shell script, and
+Gopher (RFC 1436) is one of those.
+
+## Why calling it `gosher`?
+
+Well, `gosher` is just `gopher` where the `p` is replaced with an `s`,
+and `sh(1)` is all that you need to run `gosher` (if we leave
+`netcat(1)` out...).
+
+Also, `gopher` is probably one of the few `kosher` protocols out there.
+
+According to the Urban Dictionary, `gosher` is "an insult that can mean
+anything", so choose your own.
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..3d53072
--- /dev/null
+++ b/TODO
@@ -0,0 +1,5 @@
+- add chroot and privilege drop
+- allow on-the-fly creation of gopherfle from a folder (set it active
+ through an option)
+
+
diff --git a/gprsh b/gosher
index f93cf29..23319b8 100755
--- a/gprsh
+++ b/gosher
@@ -1,11 +1,11 @@
#!/bin/sh
##
-## === gprsh ===
+## === gosher ===
##
-## gprsh is a simple gopher server in a POSIX shell script:
+## gosher is a simple gopher server in a POSIX shell script:
##
-## $ ./gprsh [<PORT> [<GOPHERDIR>]
+## $ ./gosher [<PORT> [<GOPHERDIR>]
##
## If PORT is not specified, the default is 70. If GOPHERDIR is not
## specified, "./" is assumed
@@ -18,20 +18,20 @@
######################
##
-## If the script is called with basename "gprsh", launch the netcat
+## If the script is called with basename "gosher", launch the netcat
## server...
##
MYNAME=$(basename $0)
-if [ -z "${MYNAME#gprsh}" ]; then
- ## we are called as gprsh -- launch the server
+if [ -z "${MYNAME#gosher}" ]; then
+ ## we are called as gosher -- launch the server
PORT=${1:-70}
GOPHERDIR=${2:-"./"}
while [ 1 -eq 1 ]; do
- netcat -vv -k -l -p ${PORT} -c "./gprsh_serve ${GOPHERDIR}"
+ netcat -vv -k -l -p ${PORT} -c "./gosher_serve ${GOPHERDIR}"
ret=$?
done
exit 0
diff --git a/gosher_serve b/gosher_serve
new file mode 120000
index 0000000..400ae39
--- /dev/null
+++ b/gosher_serve
@@ -0,0 +1 @@
+gosher \ No newline at end of file
diff --git a/gprsh_serve b/gprsh_serve
deleted file mode 120000
index c280e5b..0000000
--- a/gprsh_serve
+++ /dev/null
@@ -1 +0,0 @@
-gprsh \ No newline at end of file