1
0
mirror of https://github.com/gophernicus/gophernicus.git synced 2024-11-03 04:27:17 -05:00

version 3.0 merge

This commit is contained in:
fosslinux 2019-06-19 16:25:11 +10:00 committed by GitHub
commit 6c9250f254
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 181 additions and 100 deletions

4
.gitignore vendored
View File

@ -6,20 +6,18 @@ files.h
functions.h functions.h
README.options README.options
bin2c bin2c
in.gophernicus gophernicus
# #
# Release files # Release files
# #
*.gz *.gz
ChangeLog
# #
# Debian packaging leftovers # Debian packaging leftovers
# #
build-stamp build-stamp
debian/files debian/files
debian/changelog
debian/gophernicus.debhelper.log debian/gophernicus.debhelper.log
debian/gophernicus.postrm.debhelper debian/gophernicus.postrm.debhelper
debian/gophernicus.substvars debian/gophernicus.substvars

View File

@ -90,7 +90,7 @@ just run 'make withwrap'.
For configuring IP access lists with TCP wrappers, take a look For configuring IP access lists with TCP wrappers, take a look
at the files `/etc/hosts.allow` and `/etc/hosts.deny` (because the at the files `/etc/hosts.allow` and `/etc/hosts.deny` (because the
manual pages suck). Use the daemon name 'in.gophernicus' to manual pages suck). Use the daemon name 'gophernicus' to
make your access lists. make your access lists.
@ -101,7 +101,7 @@ below line should be added to your `/etc/inetd.conf` and the inetd
process restarted. process restarted.
``` ```
gopher stream tcp nowait nobody /usr/sbin/in.gophernicus in.gophernicus -h <hostname> gopher stream tcp nowait nobody /usr/sbin/gophernicus gophernicus -h <hostname>
``` ```
The Makefile will automatically do this for you and remove it when The Makefile will automatically do this for you and remove it when
@ -142,7 +142,7 @@ Gophernicus uses SYSV shared memory for session tracking and
statistics. It creates the shared memory block using mode 600 statistics. It creates the shared memory block using mode 600
and a predefined key which means that a shared memory block and a predefined key which means that a shared memory block
created with one user cannot be used by another user. Simply created with one user cannot be used by another user. Simply
said, running in.gophernicus under various different user said, running gophernicus under various different user
accounts may create a situation where the memory block is locked accounts may create a situation where the memory block is locked
to the wrong user. to the wrong user.

View File

@ -7,10 +7,10 @@
# #
NAME = gophernicus NAME = gophernicus
PACKAGE = $(NAME) PACKAGE = $(NAME)
BINARY = in.$(NAME) BINARY = $(NAME)
VERSION = `./version` VERSION = 3.0
CODENAME = Dungeon Edition CODENAME = Dungeon Edition
AUTHOR = Kim Holviala and others AUTHOR = h9bnks and fosslinux
EMAIL = gophernicus@gophernicus.org EMAIL = gophernicus@gophernicus.org
STARTED = 2009 STARTED = 2009
@ -18,7 +18,7 @@ SOURCES = $(NAME).c file.c menu.c string.c platform.c session.c options.c
HEADERS = functions.h files.h HEADERS = functions.h files.h
OBJECTS = $(SOURCES:.c=.o) OBJECTS = $(SOURCES:.c=.o)
README = README.md README = README.md
DOCS = LICENSE README.md INSTALL.md TODO ChangeLog README.Gophermap gophertag DOCS = LICENSE README.md INSTALL.md TODO changelog README.Gophermap gophertag
INSTALL = PATH=$$PATH:/usr/sbin ./install-sh -o 0 -g 0 INSTALL = PATH=$$PATH:/usr/sbin ./install-sh -o 0 -g 0
DESTDIR = /usr DESTDIR = /usr
@ -71,19 +71,8 @@ withwrap:
# Special targets # Special targets
# #
deb: deb:
printf "$(PACKAGE) ($(VERSION)) unstable; urgency=low\n\n * Automatically generated changelog\n\n" > debian/changelog
printf " -- $(AUTHOR) <$(EMAIL)> %s\n" "`LC_ALL=POSIX date "+%a, %d %b %Y %H:%M:%S %z"`" >> debian/changelog
dpkg-buildpackage -rfakeroot -uc -us dpkg-buildpackage -rfakeroot -uc -us
ChangeLog:
if [ -d .git ]; then \
(./git2changelog > ChangeLog; \
cat changelog.old >> ChangeLog); \
else true; fi
.PHONY: ChangeLog
# #
# Building # Building
# #
@ -142,7 +131,7 @@ clean-shm:
# #
# Install targets # Install targets
# #
install: ChangeLog clean-shm install: clean-shm
@case `uname` in \ @case `uname` in \
Darwin) $(MAKE) ROOT="$(OSXROOT)" DESTDIR="$(OSXDEST)" install-files install-docs install-root install-osx install-done; ;; \ Darwin) $(MAKE) ROOT="$(OSXROOT)" DESTDIR="$(OSXDEST)" install-files install-docs install-root install-osx install-done; ;; \
Haiku) $(MAKE) SBINDIR=/boot/common/bin DOCDIR=/boot/common/share/doc/$(PACKAGE) \ Haiku) $(MAKE) SBINDIR=/boot/common/bin DOCDIR=/boot/common/share/doc/$(PACKAGE) \

View File

@ -1,10 +1,23 @@
# Gophernicus # Gophernicus
Version 3.0
*Copyright (c) 2009-2019 Kim Holviala and others* *Copyright (c) 2009-2019 Kim Holviala and others*
Gophernicus is a modern full-featured (and hopefully) secure gopher Gophernicus is a modern full-featured (and hopefully) secure gopher
daemon. It is licensed under the BSD license. daemon. It is licensed under the BSD license.
## Support/Contact
Developers can be reached at <gophernicus AT gophernicus DOT org>.
Our IRC channel is on irc.freenode.net #gophernicus.
You most likely want to subscribe to the gophernicus mailing list at
https://lists.tildeverse.org/postorius/lists/gophernicus.lists.tildeverse.org/,
especially if you maintain a server. This is where all important announcements
are made.
## Command line options ## Command line options
-h hostname Change server hostname (FQDN) [$HOSTNAME] -h hostname Change server hostname (FQDN) [$HOSTNAME]
@ -72,7 +85,6 @@ on the root menu don't work make sure you are using the `-h HOSTNAME`
parameter in your configuration (with a valid resolveable hostname parameter in your configuration (with a valid resolveable hostname
instead of `HOSTNAME` - see INSTALL). instead of `HOSTNAME` - see INSTALL).
## Security ## Security
Gophernicus has been written with high security in mind. There should Gophernicus has been written with high security in mind. There should
@ -89,7 +101,6 @@ The `-nx` option prevents execution of any script or external file,
and the `-nu` option suppresses scanning for and serving of `~user` and the `-nu` option suppresses scanning for and serving of `~user`
directories (which are normally at `~/public_html/` for each user). directories (which are normally at `~/public_html/` for each user).
## Gophermaps ## Gophermaps
By default all gopher menus are automatically generated from the By default all gopher menus are automatically generated from the
@ -98,7 +109,6 @@ informational text along with the files, or if you want to completely
replace the generated menu with your own you need to take a look at replace the generated menu with your own you need to take a look at
gophermaps. See the [README.gophermap](./README.gophermap) for more information. gophermaps. See the [README.gophermap](./README.gophermap) for more information.
## Gophertags ## Gophertags
A gophertag file can be used to virtually rename a directory. Let's A gophertag file can be used to virtually rename a directory. Let's
@ -109,7 +119,6 @@ will show "bar" but the links will still point to "foo". This is
useful for creating descriptive names for directories without useful for creating descriptive names for directories without
littering the file system with spaces and weird characters. littering the file system with spaces and weird characters.
## Personal gopherspaces ## Personal gopherspaces
Gophernicus supports users personal gopherspaces. If a user has Gophernicus supports users personal gopherspaces. If a user has
@ -121,30 +130,31 @@ This is suppressed if the `-nu` option is given.
In this case, any `~` entry which otherwise initiates listing In this case, any `~` entry which otherwise initiates listing
of user directories will be displayed literally. of user directories will be displayed literally.
## Virtual hosting ## Virtual hosting
Gophernicus supports virtual hosting, or serving more than one logical Gophernicus supports virtual hosting, or serving more than one logical
domain using the same IP address. Since gopher (RFC1436) doesn't domain using the same IP address. Since gopher (RFC1436) doesn't
support virtual hosting this requires some clever (but mostly invisble) support virtual hosting this requires some hacks.
hacks.
To enable virtual hosting create one or more directories under your To enable virtual hosting create one or more directories under your
gopher root which are named after your domain names. The primary vhost gopher root which are named after your domain names. The primary vhost
directory (set with the `-h HOSTNAME` option) must exist or virtual directory (set with the `-h HOSTNAME` option) must exist or virtual
hosting will be disabled. Then simply add content to the hostname hosting will be disabled. Then simply add content to the hostname
directories and you're up and running. directories and you're (kind of) up and running.
Almost. There is a serious issue with virtual hosting.
To make gopher clients work properly with virtual hosting, create a As stated previously, RFC1436 dosen't support virtual hosting. Clients won't
root gophermap for each of your domains and include the "%" type like it.
character to create a list of all available virtual hosts (see
README.gophermap). The generated virtual host links will be created so
that standard gopher clients will find the correct domain even when
they don't specifically tell the server which host they're trying to
reach.
How the virtual hosting works, is that it loops through the vhosts looking for
the selector. As you might think, the root gophermap exists on all of the
vhosts, meaning it might not use the correct vhost. There is currently no easy
way to fix this.
It is recommended to add '%' on a line by itself to the bottom of your root
gophermaps. This will add "special" links of the format example.com/;example.com
which forces the correct vhost.
## CGI support ## CGI support
@ -189,7 +199,6 @@ the PHP command line interpreter. In other words, PHP starts working.
And don't use the CGI version of PHP as it outputs HTTP headers the And don't use the CGI version of PHP as it outputs HTTP headers the
gopher protocol doesn't have. gopher protocol doesn't have.
## Charset support and conversions ## Charset support and conversions
Gophernicus supports three charsets: US-ASCII, ISO-8859-1 and UTF-8. Gophernicus supports three charsets: US-ASCII, ISO-8859-1 and UTF-8.
@ -208,7 +217,6 @@ than pure US-ASCII. If you want to disable the conversion use the
something else than US-ASCII just use for example the `-o ISO-8859-1` something else than US-ASCII just use for example the `-o ISO-8859-1`
option. option.
## Selector rewriting ## Selector rewriting
Selector rewriting lets you rewrite parts of the selector on the fly. Selector rewriting lets you rewrite parts of the selector on the fly.
@ -243,7 +251,6 @@ monitoring systems. To ease up such integrations, Gophernicus
supports HTTP requests of the server-status page using an URL like supports HTTP requests of the server-status page using an URL like
`http://HOSTNAME:70/server-status?auto` . `http://HOSTNAME:70/server-status?auto` .
## TLS/SSL and proxy support ## TLS/SSL and proxy support
As of version 2.3 Gophernicus supports the HAproxy proxy protocol As of version 2.3 Gophernicus supports the HAproxy proxy protocol
@ -285,11 +292,10 @@ Example:
; Enable TCP wrappers ; Enable TCP wrappers
libwrap = yes libwrap = yes
service = in.gophernicus-tls service = gophernicus-tls
; Gopher over TLS service ; Gopher over TLS service
[gophernicus] [gophernicus]
accept = :::7070 accept = :::7070
connect = 127.0.0.1:70 connect = 127.0.0.1:70
protocol = proxy protocol = proxy

55
VERSIONING.md Normal file
View File

@ -0,0 +1,55 @@
# Versioning
## Latest version
3.0
## Changelog
<!--- this should be mirrored from Changelog -->
### 3.0 (from 101):
**N.B. this version has two important changes that may make it backwards-incompatible:**
* binary changed from in.gophernicus to gophernicus
* virtual hosting NEVER WORKED and does not work in the way previously
described
Other changes:
* prevent leak of executable gophermap contents
* make sure {x,}inetd works when systemd is on the system
* allow -j flag to work
* add h9bnks (yargo) and fosslinux into developer roles
* add -nx flag, blocks executable gophermaps
* add -nu flag, disable ~/public_gopher
* modify various documentation to markdown
* fix various formattings and typos
* allow inetd targets to work without update-inetd
* correct handling of inetd.conf
* remove list of supported platforms
* remove example gophermaps
* add dependencies for various distros to INSTALL.md
* fix query urls
* add travis ci
* add documentation about CI
Upgrade guide:
If you are running gophernicus on a **production** system, **do not** upgrade
to 3.0. Wait for 3.1.
As a general guide:
If you are running 101 and haven't upgraded to newer versions **because** of
instability worries, **wait for 3.1**.
If you were running other rolling-release versions, **upgrade now**.
## History
Gophernicus has had a rough versioning history.
Versions progressed through to 2.6. Then it changed to a rolling-release scheme.
This dosen't work very well, hence the decision was made to revert to a numbered
versioning scheme. In some places, it was referred to 101 (the git commit
number) or 2.99.101 (2.99.gitcommitnumber).
These days (June 2019), the vast majority of gophernicus servers are on 101.

38
changelog Normal file
View File

@ -0,0 +1,38 @@
3.0 (from 101)
==============
N.B. this version has two important changes that may make it
backwards-incompatible:
* binary changed from in.gophernicus to gophernicus
* virtual hosting NEVER WORKED and does not work in the way previously
described
Other changes:
* prevent leak of executable gophermap contents
* make sure {x,}inetd works when systemd is on the system
* allow -j flag to work
* add h9bnks (yargo) and fosslinux into developer roles
* add -nx flag, blocks executable gophermaps
* add -nu flag, disable ~/public_gopher
* modify various documentation to markdown
* fix various formattings and typos
* allow inetd targets to work without update-inetd
* correct handling of inetd.conf
* remove list of supported platforms
* remove example gophermaps
* add dependencies for various distros to INSTALL.md
* fix query urls
* add travis ci
* add documentation about CI
Upgrade guide:
If you are running gophernicus on a **production** system, **do not** upgrade
to 3.0. Wait for 3.1.
As a general guide,
If you are running 101 and haven't upgraded to newer versions **because** of
instability worries, **wait for 3.1**.
If you were running other rolling-release versions, **upgrade now**.

View File

@ -1,3 +1,6 @@
This contains changelog up to 1.4. There are no changelogs from 1.4
until 3.0.
2012-12-02 Kim Holviala <kim@holviala.com> 2012-12-02 Kim Holviala <kim@holviala.com>
* Released version 1.4 * Released version 1.4

33
debian/changelog vendored Normal file
View File

@ -0,0 +1,33 @@
gophernicus (3.0-1.1) unstable; urgency=medium
* N.B. this version has two important changes that may make it
backwards-incompatible:
* binary changed from in.gophernicus to gophernicus
* virtual hosting NEVER WORKED and does not work in the way previously
described
* Other changes:
* prevent leak of executable gophermap contents
* make sure {x,}inetd works when systemd is on the system
* allow -j flag to work
* add h9bnks (yargo) and fosslinux into developer roles
* add -nx flag, blocks executable gophermaps
* add -nu flag, disable ~/public_gopher
* modify various documentation to markdown
* fix various formattings and typos
* allow inetd targets to work without update-inetd
* correct handling of inetd.conf
* remove list of supported platforms
* remove example gophermaps
* add dependencies for various distros to INSTALL.md
* fix query urls
* add travis ci
* add documentation about CI
* Upgrade guide:
* If you are running gophernicus on a **production** system, **do not** upgrade
to 3.0. Wait for 3.1.
* As a general guide,
* If you are running 101 and haven't upgraded to newer versions **because** of
instability worries, **wait for 3.1**.
* If you were running other rolling-release versions, **upgrade now**.
-- gophernicus developers <gophernicus@gophernicus.org> Sun, 16 Jun 2019 17:49:46 +0000

4
debian/control vendored
View File

@ -1,10 +1,10 @@
Source: gophernicus Source: gophernicus
Section: net Section: net
Priority: extra Priority: extra
Maintainer: Kim Holviala <kimholviala@fastmail.com> Maintainer: gophernicus developers <gophernicus@gophernicus.org>
Build-Depends: debhelper (>= 5), libwrap0-dev Build-Depends: debhelper (>= 5), libwrap0-dev
Standards-Version: 3.7.3 Standards-Version: 3.7.3
Homepage: gopher://gophernicus.org/1/software/gophernicus/server/ Homepage: https://github.com/gophernicus/gophernicus
Package: gophernicus Package: gophernicus
Architecture: any Architecture: any

1
debian/copyright vendored
View File

@ -1,4 +1,5 @@
Gophernicus - Copyright (c) 2009-2018 Kim Holviala <kimholviala@fastmail.com> Gophernicus - Copyright (c) 2009-2018 Kim Holviala <kimholviala@fastmail.com>
2019 gophernicus developers <gophernicus@gophernicus.org>
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without

4
debian/docs vendored
View File

@ -1,5 +1,7 @@
README README.md
README.Gophermap README.Gophermap
TODO TODO
INSTALL.md INSTALL.md
VERSONING.md
changelog
gophertag gophertag

View File

@ -3,7 +3,7 @@
# If you are using Gophernicus with inetd this configuration file # If you are using Gophernicus with inetd this configuration file
# is ignored and the real configuration is in /etc/inetd.conf # is ignored and the real configuration is in /etc/inetd.conf
# #
# See README or run "in.gophernicus -?" to see a full list of # See README or run "gophernicus -?" to see a full list of
# configuration options. # configuration options.
# #
# Example: # Example:

View File

@ -1,4 +1,4 @@
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ in.gophernicus\[[0-9]+\]: request for "[^"]*" from [._[:alnum:]:-]+$ ^\w{3} [ :0-9]{11} [._[:alnum:]-]+ gophernicus\[[0-9]+\]: request for "[^"]*" from [._[:alnum:]:-]+$
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ in.gophernicus\[[0-9]+\]: error "No such file or directory" for request "[^"]*" from [._[:alnum:]:-]+$ ^\w{3} [ :0-9]{11} [._[:alnum:]-]+ gophernicus\[[0-9]+\]: error "No such file or directory" for request "[^"]*" from [._[:alnum:]:-]+$
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ in.gophernicus\[[0-9]+\]: error "User not found" for request "/~[^"]*" from [._[:alnum:]:-]+$ ^\w{3} [ :0-9]{11} [._[:alnum:]-]+ gophernicus\[[0-9]+\]: error "User not found" for request "/~[^"]*" from [._[:alnum:]:-]+$
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ systemd\[1\]: Start(ing|ed) Gophernicus gopher server \([^[:space:]]+\)\.+$ ^\w{3} [ :0-9]{11} [._[:alnum:]-]+ systemd\[1\]: Start(ing|ed) Gophernicus gopher server \([^[:space:]]+\)\.+$

2
debian/postinst vendored
View File

@ -11,7 +11,7 @@ ROOT=/var/gopher
PACKAGE=gophernicus PACKAGE=gophernicus
LOGDIR=/var/log/$PACKAGE LOGDIR=/var/log/$PACKAGE
LIBDIR=/usr/lib/$PACKAGE LIBDIR=/usr/lib/$PACKAGE
BINARY=in.gophernicus BINARY=gophernicus
DEFAULT=/etc/default/$PACKAGE DEFAULT=/etc/default/$PACKAGE
USER=nobody USER=nobody

3
debian/rules vendored
View File

@ -20,7 +20,6 @@ build-stamp:
dh_testdir dh_testdir
$(MAKE) $(MAKE)
$(MAKE) ChangeLog
touch $@ touch $@
@ -55,7 +54,7 @@ binary-indep: build install
binary-arch: build install binary-arch: build install
dh_testdir dh_testdir
dh_testroot dh_testroot
dh_installchangelogs ChangeLog dh_installchangelogs changelog
dh_installdocs dh_installdocs
# dh_install # dh_install
# dh_installmenu # dh_installmenu

View File

@ -1,29 +0,0 @@
#!/bin/sh
##
## Generate ChangeLog from git log
##
VERSION=`git log | grep -c "^commit"`
FIRSTVER=93
PREVIOUS=
IFS=\;
echo "[ Automatically generated from git log ]"
git log --pretty=tformat:"%ad %an <%ae>;%s" --date=short | \
while read -r AUTHOR COMMENT; do
[ "$AUTHOR" != "$PREVIOUS" ] && printf "\n$AUTHOR\n\n"
if [ $VERSION -ge $FIRSTVER ]; then
printf "\t* (v%d) %s\n" $VERSION "$COMMENT"
else
printf "\t* %s\n" "$COMMENT"
fi
PREVIOUS="$AUTHOR"
VERSION=$(( VERSION - 1 ))
done
echo
echo

View File

@ -1,6 +1,6 @@
# Options for Gophernicus # Options for Gophernicus
# #
# See README or run "in.gophernicus -?" to see a full list of # See README or run "gophernicus -?" to see a full list of
# configuration options. # configuration options.
# #
# Example: # Example:

View File

@ -5,7 +5,7 @@ service gopher
socket_type = stream socket_type = stream
wait = no wait = no
user = nobody user = nobody
server = /usr/sbin/in.gophernicus server = /usr/sbin/gophernicus
server_args = -r/var/gopher -h@HOSTNAME@ server_args = -r/var/gopher -h@HOSTNAME@
disable = no disable = no
} }

View File

@ -4,7 +4,7 @@ Description=Gophernicus gopher server
[Service] [Service]
EnvironmentFile=-/etc/default/gophernicus EnvironmentFile=-/etc/default/gophernicus
EnvironmentFile=-/etc/sysconfig/gophernicus EnvironmentFile=-/etc/sysconfig/gophernicus
ExecStart=/usr/sbin/in.gophernicus -h %H $OPTIONS ExecStart=/usr/sbin/gophernicus -h %H $OPTIONS
SuccessExitStatus=1 SuccessExitStatus=1
StandardInput=socket StandardInput=socket
User=nobody User=nobody

View File

@ -6,7 +6,7 @@
<string>org.gophernicus.server</string> <string>org.gophernicus.server</string>
<key>ProgramArguments</key> <key>ProgramArguments</key>
<array> <array>
<string>/usr/local/sbin/in.gophernicus</string> <string>/usr/local/sbin/gophernicus</string>
<string>-h@HOSTNAME@</string> <string>-h@HOSTNAME@</string>
<string>-r/Library/GopherServer</string> <string>-r/Library/GopherServer</string>
</array> </array>

14
version
View File

@ -1,14 +0,0 @@
#!/bin/sh
##
## Generate Gophernicus version/build number
##
DEFAULT="120+"
if which git >/dev/null && test -d .git; then
git log | grep -c "^commit"
else
echo $DEFAULT
fi