903e859ad8be693e568bbf04fcc837e01164971d
[ssh-dyndns.git] / ssh-dyndns
1 #!/bin/sh
2 # dyndns via ssh login + tinydns (djbdns/dbndns)
3 #
4 # usage:
5 # $ ssh dyndns@example.org home.example.org
6 #
7 # @author Christian Weiske <cweiske@cweiske.de>
8
9 if [ -z "$SSH_CONNECTION" ]; then
10    echo "no ssh connection"
11    exit 1
12 fi
13
14 remoteip=${SSH_CLIENT%% *}
15 if [ -z "$remoteip" ]; then
16    echo "ssh client IP not found"
17    exit 2
18 fi
19
20 if [ -z "$2" ]; then
21     echo Missing argument: domain name
22     exit 3
23 fi
24 domain="$2"
25
26 #load config files
27 if [ -f ~/.config/ssh-dyndns.sh ]; then
28     . ~/.config/ssh-dyndns.sh
29 fi
30 if [ -f /etc/ssh-dyndns.sh ]; then
31     . /etc/ssh-dyndns.sh
32 fi
33
34 if [ -z "$data_dir" ]; then
35     echo '$data_dir not set'
36     exit 4
37 fi
38 if [ ! -d "$data_dir" ]; then
39     echo "$data_dir does not exist"
40     exit 5
41 fi
42 if [ ! -f "$data_dir/Makefile" ]; then
43     echo "$data_dir misses Makefile"
44     exit 6
45 fi
46
47 #FIXME: check allowed domains, allowed suffixes
48
49 file_pattern="${file_pattern:-data-dyndns-%DOMAIN%}"
50 timeout=${timeout:-300}
51
52 datafile=${data_dir}`echo $file_pattern | sed "s/%DOMAIN%/$domain/"`
53 #echo $datafile
54
55 if [ `echo "$remoteip"| sed "s/://"` != "$remoteip" ]; then
56     echo "IPv6 not supported yet"
57     # we need ipv6 address expansion
58     exit 7
59 fi
60
61 #=cweiske.de:5.35.241.22
62 djbdnsline="=${domain}:${remoteip}:${timeout}"
63 echo $djbdnsline > $datafile
64
65 #compile dns data
66 cd "$data_dir"
67 make