summaryrefslogtreecommitdiff
path: root/nocompile/libexec
diff options
context:
space:
mode:
Diffstat (limited to 'nocompile/libexec')
-rwxr-xr-xnocompile/libexec/gopherd.sh31
1 files changed, 19 insertions, 12 deletions
diff --git a/nocompile/libexec/gopherd.sh b/nocompile/libexec/gopherd.sh
index 130d861..3b44296 100755
--- a/nocompile/libexec/gopherd.sh
+++ b/nocompile/libexec/gopherd.sh
@@ -12,7 +12,9 @@ export PATH=$PATH:/usr/local/bin
read -t 10 req
base="$1"
arg=$(echo "$req" | tr -d '\r' | cut -f2)
-req=$(echo "$req" | tr -d '\r' | cut -f1)
+#req=$(echo "$req" | unescape | tr -d '\r' | cut -f1)
+req=$(echo "$req" | tr -d '\r' | sed 's/\/*$//' | cut -f1)
+cd ${base}
realpath="$(normalpath "${base}${req}")"
if grep -v "^${base}" <<< "${realpath}" > /dev/null;then
echo -e 'i'${base}'\tasdf\tasdf\tasdf\r'
@@ -20,18 +22,23 @@ if grep -v "^${base}" <<< "${realpath}" > /dev/null;then
echo -e 'ierror!!! cant find base in realpath\tasdf\tasdf\tasdf\r'
exit 1
fi
-myIP=$(hop0 $(/usr/local/libexec/peerip | head -n1))
+myIP=$(hop0 $(/usr/local/libexec/peerip | head -n1) | cut -d% -f1)
hostname=$(rdns ${myIP})
if [ ! "${hostname}" ]; then
hostname=${myIP}
else
if strstr "${myIP}" ":";then
- if [ $(dig -t AAAA +short $hostname) != ${myIP} ];then
- logger "hostname (${hostname}) and IP (${myIP}) aren't matching up.";
- exit 2
+ if [ $(gethostbyname $hostname 6) != ${myIP} ];then
+ printf ""
+# echo "fucked off #1"
+# echo "$myIP != $(gethostbyname $hostname 6)"
+# logger "hostname (${hostname}) and IP (${myIP}) aren't matching up.";
+# exit 2
+#jimmy cracked corn but nobody gives a shit.
fi
else
- if [ $(dig -t A +short $hostname) != ${myIP} ];then
+ if [ $(gethostbyname $hostname) != ${myIP} ];then
+ echo "fucked off #2"
logger "hostname (${hostname}) and IP (${myIP}) aren't matching up.";
exit 2
fi
@@ -47,25 +54,25 @@ if strstr "$type" "directory";then
ls "${realpath}" | while read i;do
stype=$(file -L "${realpath}/${i}" | cut -d: -f2-)
if strstr "$stype" "directory"; then
- printf "1%s\t%s\t%s\t%s\r\n" "${req}/${i}" "${req}/${i}" $hostname $port
+ printf "1%s\t%s\t%s\t%s\r\n" "${i}" "${req}/${i}" $hostname $port
else
- if [ "_$(stat -L "${realpath}/${i}" | grep -v l | cut '-d ' -f3 | tr 'x' '\n' | wc -l | tr -d ' ')" = "_4" ] ;then
- printf "7%s\t%s\t%s\t%s\r\n" "${req}/${i}" "${req}/${i}" $hostname $port
+ if [ "_$(stat -L "${realpath}/${i}" | cut '-d ' -f3 | grep -v l | tr 'x' '\n' | wc -l | tr -d ' ')" = "_4" ] ;then
+ printf "7%s\t%s\t%s\t%s\r\n" "${i}" "${req}/${i}" $hostname $port
else
- printf "0%s\t%s\t%s\t%s\r\n" "${req}/${i}" "${req}/${i}" $hostname $port
+ printf "0%s\t%s\t%s\t%s\r\n" "${i}" "${req}/${i}" $hostname $port
fi
fi
done
printf ".\r\n"
else
#this shit is ugly
- numX="$(stat -L "${realpath}" | grep -v l | cut '-d ' -f3 | tr 'x' '\n' | wc -l | tr -d ' ')"
+ numX="$(stat -L "${realpath}" | cut '-d ' -f3 | grep -v l | tr 'x' '\n' | wc -l | tr -d ' ')"
if [ "_$numX" = "_3" ];then
#an executable that outputs text and pretends to be a type 0.
"${realpath}"
elif [ "_$numX" = "_4" ];then
#a type 7
- "${realpath}" $arg | sed "s/\$/"`printf "\r"`"/g"
+ "${realpath}" "$arg" | sed "s/\$/"`printf "\r"`"/g"
else
#output the text of the file
cat "${realpath}"