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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
#!/bin/bash
# Slackware build script for tnfsd
# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
# 20230208 bkw: update for v23.0207.1_95c5b55.
# - this is a security update, see:
# https://forums.atariage.com/topic/347648-tnfsd-directory-listing-vulnerability/
# - use self-hosted source, with the non-tnfsd-related stuff removed.
# 20220818 bkw: BUILD=2
# - remove TCP support entirely. it's incomplete & thoroughly broken.
# - mention UDP port 16384 in slack-desc.
# Note to self: tnfs-perl/tnfsd.pl looks interesting, but it lacks
# the ability to chroot and set a new user ID. Leave it out of
# the package. The tnfs-fuseclient/ is empty except a README, and
# tnfsd.test/ looks like an ancient version from 2010.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=tnfsd
VERSION=${VERSION:-23.0207.1_95c5b55}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
uid_gid_err() {
cat <<EOF
Before running this SlackBuild, you must create the tnfsd user and
the tnfsd and tnfs-files groups. Use these commands:
groupadd -g 375 tnfsd
groupadd -g 376 tnfs-files
useradd -u 375 -d /var/tnfs -c "TNFS Daemon User" \
-M -g tnfsd tnfsd -s /bin/false
EOF
exit 1
}
chkgrp() {
getent group "$1" &>/dev/null || uid_gid_err
}
chkuser() {
getent passwd "$1" &>/dev/null || uid_gid_err
}
chkgrp tnfsd
chkgrp tnfs-files
chkuser tnfsd
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
# 20220818 bkw: After messing with this for a while, I've discovered
# that TCP *just doesn't work*. It'll listen and accept TCP
# connections, but it never actually *does* anything with data
# received via TCP (reads and discards it). Also, it never notices
# when a TCP connection is closed, instead getting stuck in an
# infinite loop eating 100% of one core... and logging massive
# amounts of debug messages to stdout (like 2-3GB per minute). Since
# it's non-functional anyway, this patch just dikes out TCP support
# completely. So far as I know, there are no TNFS clients which use
# TCP anyway.
# 20230208 bkw: reworked this patch for the new source.
patch -p1 < $CWD/remove_broken_tcp_support.diff
[ "${USAGELOG:-yes}" = "yes" ] && SLKCFLAGS+=" -DUSAGELOG"
sed -i "s,-Wall,& $SLKCFLAGS," Makefile
mkdir -p bin
make OS=LINUX
PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
PKGBIN=$PKG/usr/bin
PKGMAN1=$PKG/usr/man/man1
PKGRCD=$PKG/etc/rc.d
PKGVAR=$PKG/var/tnfs
mkdir -p $PKGDOC $PKGBIN $PKGMAN1 $PKGRCD $PKGVAR
install -s -m0755 bin/tnfsd $PKGBIN/tnfsd
cp -a *.md *.txt $PKGDOC
cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKGVAR
chown root:tnfs-files $PKGVAR
chmod 1775 $PKGVAR
# upstream license only exists in C comments, so I included this:
cat $CWD/COPYING > $PKGDOC/COPYING
# man page written for this SlackBuild.
gzip -9c < $CWD/$PRGNAM.1 > $PKGMAN1/$PRGNAM.1.gz
install -oroot -groot -m0755 $CWD/rc.$PRGNAM $PKGRCD/rc.$PRGNAM.new
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
|