@cryptotaxi247 / netdata-1 / commits / ce770094c

detect stock versions of config files and replace them with the newer versions

Costa Tsaousis committed Jul 14, 2016 at 18:26 UTC ce770094cac4028ea72d0bf18ab29161e5891ee5
2 files changed +152 -1
configs.signatures new
+86
@@ -0,0 +1,86 @@
1 +declare -A configs_signatures=(
2 + ['0056936ce99788ed9ae1c611c87aa6d8']='apps_groups.conf'
3 + ['18ee1c6197a4381b1c1631ef6129824f']='apps_groups.conf'
4 + ['2f4a85fedecce1bf425fa1039f6b021e']='apps_groups.conf'
5 + ['3af522d65b50a5e447607ffb28c81ff5']='apps_groups.conf'
6 + ['4a448831776de8acf2e0bdc4cc994cb4']='apps_groups.conf'
7 + ['5bf51bb24fb41db9b1e448bd060d3f8c']='apps_groups.conf'
8 + ['636d032928ea0f4741eab264fb49c099']='apps_groups.conf'
9 + ['647361e99b5f4e0d73470c569bb9461c']='apps_groups.conf'
10 + ['6a47af861ad3dd112124c37fbf09672b']='apps_groups.conf'
11 + ['79a37756869d9b4629285922572d6b9b']='apps_groups.conf'
12 + ['99c1617448abbdc493976ab9bda5ce02']='apps_groups.conf'
13 + ['9c0185ceff15415bc59b2ce2c1f04367']='apps_groups.conf'
14 + ['a0ee8f351f213c0e8af9eb7a4a09cb95']='apps_groups.conf'
15 + ['a7cceeafb1e6ef1ead503ab65f687902']='apps_groups.conf'
16 + ['a837986be634fd7648bcdf939019424a']='apps_groups.conf'
17 + ['a9cd91675467c5426f5b51c47602c889']='apps_groups.conf'
18 + ['acaa6731a272f6d251afb357e99b518f']='apps_groups.conf'
19 + ['bb51112d01ff20053196a57632df8962']='apps_groups.conf'
20 + ['d9258e671d0d0b6498af1ce16ef030d2']='apps_groups.conf'
21 + ['ebd0612ccc5807524ebb2b647e3e56c9']='apps_groups.conf'
22 + ['f2f1b8656f5011e965ac45b818cf668d']='apps_groups.conf'
23 + ['fdea185e0e52b459b48852aa37f20e0f']='apps_groups.conf'
24 + ['4ccb06fff1ce06dc5bc80e0a9f568f6e']='charts.d.conf'
25 + ['4e995acb0d6fd77403a2a9dca984b55b']='charts.d.conf'
26 + ['535e5113b07b0fc6f3abd59546c276f6']='charts.d.conf'
27 + ['a02d14124b19c635c1426cee2e98bac5']='charts.d.conf'
28 + ['ca026d7c779f0a7cb7787713c5be5c47']='charts.d.conf'
29 + ['6b917300747e7e8314844237e2462261']='python.d/apache_cache.conf'
30 + ['e0e96cc47ed61d6492416be5236cd4d3']='python.d/apache_cache.conf'
31 + ['5278ebbae19c60db600f0a119cb3664e']='python.d/apache.conf'
32 + ['5829812db29598db5857c9f433e96fef']='python.d/apache.conf'
33 + ['6bf0de6e3b251b765b10a71d8c5c319d']='python.d/apache.conf'
34 + ['38d1bf04fe9901481dd6febcc0404a86']='python.d.conf'
35 + ['4b775fb31342f1478b3773d041a72911']='python.d.conf'
36 + ['99a3de85d1e7826ed64a5f8576712e5d']='python.d.conf'
37 + ['9e0553ebdc21b64295873fc104cfa79d']='python.d.conf'
38 + ['a2944a309f8ce1a3195451856478d6ae']='python.d.conf'
39 + ['af44cc53aa2bc5cc8935667119567522']='python.d.conf'
40 + ['b27f10a38a95edbbec20f44a4728b7c4']='python.d.conf'
41 + ['b32164929eda7449a9677044e11151bf']='python.d.conf'
42 + ['b8969be5b3ceb4a99477937119bd4323']='python.d.conf'
43 + ['d55be5bb5e108da1e7645da007c53cd4']='python.d.conf'
44 + ['f82924563e41d99cdae5431f0af69155']='python.d.conf'
45 + ['7830066c46a7e5f9682b8d3f4566b4e5']='python.d/cpufreq.conf'
46 + ['b5b5a8d6d991fb1cef8d80afa23ba114']='python.d/cpufreq.conf'
47 + ['dc0d2b96378f290eec3fcf98b89ad824']='python.d/cpufreq.conf'
48 + ['a8bb4e1d0525f59692778ad8f675a77a']='python.d/example.conf'
49 + ['ae5ac0a3521e50aa6f6eda2a330b4075']='python.d/example.conf'
50 + ['e5f32f54d6d6728f21f9ac26f37d6573']='python.d/example.conf'
51 + ['15e32114994b92be7853b88091e7c6fb']='python.d/exim.conf'
52 + ['73125ae64d5c6e9361944cd9bd14844e']='python.d/exim.conf'
53 + ['a94af1c808aafdf00537d85ff2197ec8']='python.d/exim.conf'
54 + ['2a0794fd43eadf30a51805bc9ba2c64d']='python.d/hddtemp.conf'
55 + ['731a1fcfe9b2da1b9d685056a59541b8']='python.d/hddtemp.conf'
56 + ['d74dc63fbe631dab9a2ff1b0f5d71719']='python.d/hddtemp.conf'
57 + ['1ea8e8ef1fa8a3a0fcdfba236f4cb195']='python.d/mysql.conf'
58 + ['5379cdc26d7725e2b0d688d785816cef']='python.d/mysql.conf'
59 + ['7deb236ec68a512b9bdd18e6a51d76f7']='python.d/mysql.conf'
60 + ['88f77865f75c9fb61c97d700bd4561ee']='python.d/mysql.conf'
61 + ['b0f0a0ac415e4b1a82187b80d211e83b']='python.d/mysql.conf'
62 + ['df381f3a7ca9fb2b4b43ae7cb7a4c492']='python.d/mysql.conf'
63 + ['061c45b0e34170d357e47883166ecf40']='python.d/nginx.conf'
64 + ['21924a6ab8008d16ffac340f226ebad9']='python.d/nginx.conf'
65 + ['c61948101e0e6846679682794ee48c5b']='python.d/nginx.conf'
66 + ['3ca696189911fb38a0319ddd71e9a395']='python.d/phpfpm.conf'
67 + ['8c1d41e2c88aeca78bc319ed74c8748c']='python.d/phpfpm.conf'
68 + ['b8b87574fd496a66ede884c5336493bd']='python.d/phpfpm.conf'
69 + ['c88fb430f35b7d8f08775d84debffbd2']='python.d/phpfpm.conf'
70 + ['d7e0bd12d4a60a761dcab3531a841711']='python.d/phpfpm.conf'
71 + ['142a5b693d34b0308bb0b8aec71fad79']='python.d/postfix.conf'
72 + ['ca249db7a0637d55abb938d969f9b486']='python.d/postfix.conf'
73 + ['39571e9fad9b759200c5d5b2ee13feb4']='python.d/redis.conf'
74 + ['b915126262d08aa9da81de539a58a3fb']='python.d/redis.conf'
75 + ['837480f77ba1a85677a36747fbc2cd2e']='python.d/sensors.conf'
76 + ['cfecf298bdafaa7e0a3a263548e82132']='python.d/sensors.conf'
77 + ['64070d856ab1b47a18ec871e49bbc13b']='python.d/squid.conf'
78 + ['78bb08809dffcb62e9bc493840f9c039']='python.d/squid.conf'
79 + ['78e0065738394f5bf15023f41d66ed4b']='python.d/squid.conf'
80 + ['7d8bd884ec26cb35d16c4fc05f969799']='python.d/squid.conf'
81 + ['91cf3b3d42cac969b8b3fd4f531ecfb3']='python.d/squid.conf'
82 + ['ade389c1b6efe0cff47c33e662731f0a']='python.d/squid.conf'
83 + ['e3e5bc57335c489f01b8559f5c70e112']='python.d/squid.conf'
84 + ['0388b873d0d7e47c19005b7241db77d8']='python.d/tomcat.conf'
85 + ['f7a99e94231beda85c6254912d8d31c1']='python.d/tomcat.conf'
86 +)
netdata-installer.sh
+66 -1
@@ -78,6 +78,48 @@ usage() {
78 USAGE
79 }
80
81 +md5sum="$(which md5sum 2>/dev/null || command -v md5sum 2>/dev/null)"
82 +get_git_config_signatures() {
83 + local x s file md5
84 +
85 + [ ! -d "conf.d" ] && echo >&2 "Wrong directory." && return 1
86 + [ -z "${md5sum}" -o ! -x "${md5sum}" ] && echo >&2 "No md5sum command." && return 1
87 +
88 + echo >configs.signatures.tmp
89 +
90 + for x in $(find conf.d -name \*.conf)
91 + do
92 + x="${x/conf.d\//}"
93 + echo "${x}"
94 + for c in $(git log --follow "conf.d/${x}" | grep ^commit | cut -d ' ' -f 2)
95 + do
96 + git checkout ${c} "conf.d/${x}" || continue
97 + s="$(cat "conf.d/${x}" | md5sum | cut -d ' ' -f 1)"
98 + echo >>configs.signatures.tmp "${x}:${s}"
99 + echo " ${s}"
100 + done
101 + git checkout HEAD "conf.d/${x}" || break
102 + done
103 +
104 + cat configs.signatures.tmp |\
105 + grep -v "^$" |\
106 + sort -u |\
107 + {
108 + echo "declare -A configs_signatures=("
109 + IFS=":"
110 + while read file md5
111 + do
112 + echo " ['${md5}']='${file}'"
113 + done
114 + echo ")"
115 + } >configs.signatures
116 +
117 + rm configs.signatures.tmp
118 +
119 + return 0
120 +}
121 +
122 +
123 while [ ! -z "${1}" ]
124 do
125 if [ "$1" = "--install" ]
@@ -100,6 +142,10 @@ do
142 then
143 usage
144 exit 1
145 + elif [ "$1" = "get_git_config_signatures" ]
146 + then
147 + get_git_config_signatures && exit 0
148 + exit 1
149 else
150 echo >&2
151 echo >&2 "ERROR:"
@@ -336,13 +382,32 @@ fi
382 echo >&2 "Compiling netdata ..."
383 run make || exit 1
384
385 +declare -A configs_signatures=()
386 +if [ -f "configs.signatures" ]
387 + then
388 + source "configs.signatures" || echo >&2 "ERROR: Failed to load configs.signatures !"
389 +fi
390 +
391 # backup user configurations
392 installer_backup_suffix="${PID}.${RANDOM}"
393 for x in $(find "${NETDATA_PREFIX}/etc/netdata/" -name '*.conf' -type f)
394 do
395 if [ -f "${x}" ]
396 then
345 - cp -p "${x}" "${x}.installer_backup.${installer_backup_suffix}"
397 + if [ -z "${md5sum}" -o ! -x "${md5sum}" ]
398 + then
399 + cp -p "${x}" "${x}.installer_backup.${installer_backup_suffix}"
400 + else
401 + f="${x/*\/etc\/netdata\//}"
402 + md5="$(cat "${x}" | ${md5sum} | cut -d ' ' -f 1)"
403 + if [ "${configs_signatures[${md5}]}" = "${f}" ]
404 + then
405 + echo >&2 "File '${x}' is stock version."
406 + else
407 + echo >&2 "File '${x}' has been edited by user."
408 + cp -p "${x}" "${x}.installer_backup.${installer_backup_suffix}"
409 + fi
410 + fi
411
412 elif [ -f "${x}.installer_backup.${installer_backup_suffix}" ]
413 then