]> git.pld-linux.org Git - packages/rpm-build-tools.git/blame - update-geoip.sh
- up to 4.13.1
[packages/rpm-build-tools.git] / update-geoip.sh
CommitLineData
49cd827a 1#!/bin/sh
b10dfc6f
ER
2# Update GeoIP packages to new version provided by MaxMind.
3#
4# Author: Elan Ruusamäe <glen@pld-linux.org>
5# 2012-07-04 Created initial version
6# 2014-03-04 Rewritten to be smarter when checking for updates avoiding full download if no changes.
7
49cd827a 8set -e
3fb11b3b
ER
9
10update=false
11status=false
12while [ $# -gt 0 ]; do
13 case "$1" in
c40b0b82 14 update|-u|-update|--update)
3fb11b3b
ER
15 update=true
16 shift
17 ;;
c40b0b82 18 status|-s|-status|--status)
3fb11b3b
ER
19 status=true
20 shift
21 ;;
22 *)
23 break
24 ;;
25 esac
26done
27
b10dfc6f
ER
28# get file DATE in GMT timezone
29filedate() {
30 local file="$1"
31 TZ=GMT stat -c '%y' "$file" | awk '{print $1}'
32}
431811ea 33
b10dfc6f
ER
34# get package, no sources
35get_package() {
36 local pkg=$1 out
37 out=$(builder -g -ns $pkg 2>&1) || echo "$out"
38}
3fb11b3b 39
b10dfc6f
ER
40update_urls() {
41 local specfile=$1 t fn z
42 # update urls
43 t=$(mktemp)
44 builder -su $specfile > $t 2>/dev/null
45 while read url; do
68062e54 46 # take output filename (anything after last slash)
b10dfc6f 47 fn=${url##*/}
68062e54
ER
48 # remove querystring for mtime match to work
49 url=${url%\?*}
b10dfc6f
ER
50 test -e "$fn" && z= || unset z
51 curl ${z+-z "$fn"} -o "$fn" "$url" -R -s
52 done < $t
53 rm -f $t
54}
3fb11b3b 55
b10dfc6f
ER
56# set version to $version in $specfile and build the package
57update_version() {
58 local specfile="$1" version="$2" out
3fb11b3b 59
b10dfc6f
ER
60 # update version
61 sed -i -e "
62 s/^\(Version:[ \t]\+\)[.0-9]\+\$/\1$version/
63 s/^\(Release:[ \t]\+\)[.0-9]\+\$/\11/
64 " $specfile
65
66 # update md5
67 out=$(md5 -p1 $specfile 2>&1) || echo "$out"
3fb11b3b 68
b10dfc6f
ER
69 # build it
70 out=$(builder -bb $specfile 2>&1) || echo "$out"
71}
3fb11b3b 72
b10dfc6f
ER
73# get version from package files
74# set $version variable
75version_from_files() {
76 local pkg=$1 dt4 dt6
4a8bd840
ER
77 case "$pkg" in
78 xtables-geoip)
b10dfc6f
ER
79 dt4=$(filedate *.zip | tr -d -)
80 dt6=$(filedate *.gz | tr -d -)
c385bd14 81 if [ "$dt4" -gt "$dt6" ]; then
b10dfc6f 82 version=$dt4
c385bd14 83 else
b10dfc6f 84 version=$dt6
c385bd14 85 fi
4a8bd840
ER
86 ;;
87 GeoIP-db-City)
b10dfc6f
ER
88 dt4=$(filedate GeoLiteCity-*.dat.xz | tr - .)
89 dt6=$(filedate GeoLiteCityv6-*.dat.gz | tr - .)
90 if [ "$(echo $dt4 | tr -d .)" -gt "$(echo $dt6 | tr -d .)" ]; then
91 version=$dt4
92 else
93 version=$dt6
94 fi
95 ;;
96 GeoIP-db-Country)
97 dt4=$(filedate GeoIP-*.dat.gz | tr - .)
98 dt6=$(filedate GeoIPv6-*.dat.gz | tr - .)
99 if [ "$(echo $dt4 | tr -d .)" -gt "$(echo $dt6 | tr -d .)" ]; then
100 version=$dt4
101 else
102 version=$dt6
103 fi
4a8bd840
ER
104 ;;
105 *)
b10dfc6f 106 version=$(filedate *.gz | tr - .)
4a8bd840
ER
107 ;;
108 esac
b10dfc6f 109}
4a8bd840 110
b10dfc6f
ER
111dir=$(dirname "$0")
112APPDIR=$(d=$0; [ -L "$d" ] && d=$(readlink -f "$d"); dirname "$d")
113PATH=$APPDIR:$PATH
114cd "$dir"
49cd827a 115
b10dfc6f
ER
116pkgs='GeoIP-db-City GeoIP-db-Country GeoIP-db-IPASNum xtables-geoip'
117for pkg in ${*:-$pkgs}; do
118 $status && continue
119
120 get_package $pkg
121 cd $pkg
122 specfile=*.spec
123
124 update_urls $specfile
125 version_from_files $pkg
126 oldvers=$(awk '/^Version:[ ]+/{print $NF}' $specfile)
127 if [ "$oldvers" != "$version" ]; then
128 update_version $specfile $version
129 fi
49cd827a
ER
130 cd ..
131done
3fb11b3b 132
b10dfc6f 133# report each package git status
3fb11b3b
ER
134for pkg in ${*:-$pkgs}; do
135 cd $pkg
37fd5f8b 136 git status --porcelain
3fb11b3b
ER
137 cd ..
138done
This page took 0.062164 seconds and 4 git commands to generate.