*** empty log message ***
[userv-utils] / dyndns / update
CommitLineData
3988a733 1#!/bin/bash
711a0748 2
3# Copyright (C) 1999-2000,2003 Ian Jackson
4#
5# This file is part dyndns, part of userv-utils
6#
7# This is free software; you can redistribute it and/or modify it
8# under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 2 of the License, or
10# (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful, but
13# WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15# General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with userv-utils; if not, write to the Free Software
19# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20#
21# $Id$
22
3988a733 23set -e
24
25zone="$1"
26subdomain="$2"
27interval_min="$3"
28interval_avg="$4"
29interval_mem="$5"
30
31now=`date +%s`
32charge=0
33
34case $subdomain in
35'@') files=_ ;;
36*) files=$subdomain ;;
37esac
38
39if test -f $files,timings && read lastup charge <$files,timings
40then
41 if [ $now -lt $[ $lastup + $interval_min ] ]; then
42 echo "wait $[ $lastup + $interval_min - $now ]"
43 echo >&2 "must wait at least $interval_min between updates"
44 exit 75
45 fi
46 charge=$[ $charge + $interval_avg - ($now - $lastup) ]
47 if [ $charge -gt $interval_mem ]; then
48 echo "wait $[ $charge - $interval_mem ]"
49 echo >&2 "must wait on average $interval_avg between updates"
50 exit 75
51 fi
52 if [ $charge -lt 0 ]; then charge=0; fi
53fi
54
55sort >$files,new
56
57if test -f $files,data
58then
59 set +e
60 diff >/dev/null $files,data $files,new
61 diff=$?
62 set -e
63
64 if [ $diff = 0 ]; then echo 'unchanged'; exit 0; fi
65 if [ $diff != 1 ]; then exit 1; fi
66fi
67
68echo $now $charge >$files,timings.new
69mv -f $files,timings.new $files,timings
70mv $files,new $files,data
71
6362f12c 72exec /usr/share/userv/dyndns/install $zone