This file is indexed.

/usr/bin/tinydyndns-conf is in tinydyndns 0.4.2.debian1-1build1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  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
#!/bin/sh
set -e

usage () {
  exec 1>&2
  echo "Usage: $0 acct logacct /etc/tinydyn myip mydomain"
  exit 1
}

if [ $# -ne 5 ]; then usage; fi

cwd=`pwd`
acct=$1
logacct=$2
dir=$3
ip=$4
mydomain=$5

acct_uid=`id -u $acct`
acct_gid=`id -g $acct`
logacct_uid=`id -u $logacct`

tinydns-conf $acct $logacct $dir $ip

cd $dir

# data file
cd root
./add-ns $mydomain $ip
./add-alias $mydomain $ip
chown $acct . data
make
chown $acct data.cdb

# modify Makefile
cat <<EOT >Makefile'{new}'
default:
	@echo 'tinydyndns modifies the binary database data.cdb directly. Use'
	@echo "'make rebuild' to rebuild data.cdb with a NS, SOA, A record for"
	@echo 'the nameserver, and A records for all dynamic hostnames in the'
	@echo 'local passwd database, pointing to the IP address 127.14.14.14.'
	@echo

EOT
cat Makefile >>Makefile'{new}'
cat <<EOT >>Makefile'{new}'

rebuild: clean data.cdb
	cut -d: -f1 <../pop/passwd |sed -e 's/\$\$/.${mydomain}/' \\
	  |xargs tinydyndns-data add

clean:
	rm -f data.cdb
EOT
mv -f Makefile'{new}' Makefile

cd ..

# pop3
mkdir -p pop
chown $acct pop
chmod 750 pop
cd pop
cat <<EOF >run
#!/bin/sh
exec softlimit -m 4000000 envdir ./env tcpserver -vRHl$mydomain $ip 110 \\
  pop3front-auth cvm-pwfile sh -c '
      echo "login: \$USER: \$TCPREMOTEIP" >&7
      cd $dir/root
      setlock data.cdb \\
        tinydyndns-update \${USER}.$mydomain \$TCPREMOTEIP >&7 2>&1
      cd $dir/pop
      exec pop3front-maildir Maildir
    ' 2>&1 7>&1
EOF
chmod 750 run

touch passwd
chown $acct passwd

# setpasswd script
cat <<EOF >setpasswd
#!/bin/sh
if [ -z "\$1" -o -z "\$2" ]; then echo "Usage: \$0 host passwd" >&2; exit; fi
HOST=\$1
PASSWD=\$2
if ! grep "^\$HOST:" $dir/pop/passwd >/dev/null; then
  cat $dir/pop/passwd >$dir/pop/passwd'{new}'
  echo "\$HOST:\$PASSWD:$acct_uid:$acct_gid::$dir/pop:/bin/false" \\
    >>$dir/pop/passwd'{new}'
else
  sed -e \\
    "s}^\$HOST:.*$}\$HOST:\$PASSWD:$acct_uid:$acct_gid::$dir/pop:/bin/false}g" \\
      $dir/pop/passwd >$dir/pop/passwd'{new}'
fi
mv -f $dir/pop/passwd'{new}' $dir/pop/passwd
chmod 600 $dir/pop/passwd
( cd $dir/root; tinydyndns-data add \${HOST}.$mydomain )
EOF
chmod 750 setpasswd
chown $acct setpasswd

# envdir
mkdir -p env
chmod 750 env
echo "$dir/pop/passwd" >env/CVM_PWFILE_PATH
echo 'plain' >env/CVM_PWFILE_PWCMP

# Maildir
echo "|bouncesaying 'This address does not accept mail.'" >.qmail
mkdir -m 700 Maildir
mkdir -m 700 Maildir/tmp
mkdir -m 700 Maildir/new
mkdir -m 700 Maildir/cur
chown -R $acct Maildir

# logdir
mkdir -p log
chown $logacct log
chmod 750 log
cd log
cat <<EOF >run
#!/bin/sh
exec setuidgid $logacct multilog t ./main
EOF
chmod 750 run

cd $cwd
exit 0