Quellcode durchsuchen

Change freedns update so that it can handle arbitrary domains

Bob Mottram vor 8 Jahren
Ursprung
Commit
22fc220f1d
2 geänderte Dateien mit 72 neuen und 51 gelöschten Zeilen
  1. 69
    0
      src/freedombone-freedns
  2. 3
    51
      src/freedombone-utils-dns

+ 69
- 0
src/freedombone-freedns Datei anzeigen

@@ -0,0 +1,69 @@
1
+#!/bin/bash
2
+#
3
+# .---.                  .              .
4
+# |                      |              |
5
+# |--- .--. .-.  .-.  .-.|  .-. .--.--. |.-.  .-. .--.  .-.
6
+# |    |   (.-' (.-' (   | (   )|  |  | |   )(   )|  | (.-'
7
+# '    '     --'  --'  -' -  -' '  '   -' -'   -' '   -  --'
8
+#
9
+#                    Freedom in the Cloud
10
+#
11
+# freedns update command for use in cron or a daemon
12
+
13
+# License
14
+# =======
15
+#
16
+# Copyright (C) 2016 Bob Mottram <bob@robotics.uk.to>
17
+#
18
+# This program is free software: you can redistribute it and/or modify
19
+# it under the terms of the GNU Affero General Public License as published by
20
+# the Free Software Foundation, either version 3 of the License, or
21
+# (at your option) any later version.
22
+#
23
+# This program is distributed in the hope that it will be useful,
24
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
25
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26
+# GNU Affero General Public License for more details.
27
+#
28
+# You should have received a copy of the GNU Affero General Public License
29
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
30
+
31
+PROJECT_NAME='freedombone'
32
+
33
+export TEXTDOMAIN=${PROJECT_NAME}-freedns
34
+export TEXTDOMAINDIR="/usr/share/locale"
35
+
36
+CONFIGURATION_FILE=$HOME/${PROJECT_NAME}.cfg
37
+FREEDNS_WGET='wget -q --read-timeout=0.0 --waitretry=5 --tries=4 https://freedns.afraid.org/dynamic/update.php?'
38
+
39
+if [ ! -f $CONFIGURATION_FILE ]; then
40
+    exit 0
41
+fi
42
+
43
+function item_in_array {
44
+    local e
45
+    for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
46
+    return 1
47
+}
48
+
49
+detected_codes=()
50
+codelines=$(grep "_CODE=" $CONFIGURATION_FILE | uniq)
51
+for line in "${codelines[@]}"
52
+do
53
+    code=$(echo "$line" | awk -F '=' '{print $2}')
54
+    item_in_array "$code" "${detected_codes[@]}"
55
+    if [[ $? != 0 ]]; then
56
+        detected_codes+=("$code")
57
+    fi
58
+done
59
+
60
+if [ ! -d $HOME/.freedns-update ]; then
61
+    mkdir $HOME/.freedns-update
62
+fi
63
+cd $HOME/.freedns-update
64
+for code in "${detected_codes[@]}"
65
+do
66
+    $FREEDNS_WGET${code}
67
+done
68
+
69
+exit 0

+ 3
- 51
src/freedombone-utils-dns Datei anzeigen

@@ -101,64 +101,16 @@ function create_freedns_updater {
101 101
     if grep -Fxq "create_freedns_updater" $COMPLETION_FILE; then
102 102
         return
103 103
     fi
104
-    if [[ $DDNS_PROVIDER != "default@freedns.afraid.org" ]]; then
104
+    if [[ $DDNS_PROVIDER != *"freedns"* ]]; then
105 105
         return
106 106
     fi
107 107
     if [[ $SYSTEM_TYPE == "mesh"* ]]; then
108 108
         return
109 109
     fi
110 110
 
111
-    FREEDNS_WGET='wget -q --read-timeout=0.0 --waitretry=5 --tries=4 https://freedns.afraid.org/dynamic/update.php?'
112
-
113
-    echo '#!/bin/bash' > /usr/bin/dynamicdns
114
-    echo 'cd /tmp' >> /usr/bin/dynamicdns
115
-    if [ $DEFAULT_DOMAIN_CODE ]; then
116
-        echo "# $DEFAULT_DOMAIN_NAME" >> /usr/bin/dynamicdns
117
-        echo "$FREEDNS_WGET$DEFAULT_DOMAIN_CODE=" >> /usr/bin/dynamicdns
118
-    fi
119
-    if [ $DOKUWIKI_CODE ]; then
120
-        if [[ $DOKUWIKI_CODE != "$DEFAULT_DOMAIN_CODE" ]]; then
121
-            echo "# $DOKUWIKI_DOMAIN_NAME" >> /usr/bin/dynamicdns
122
-            echo "$FREEDNS_WGET$DOKUWIKI_CODE=" >> /usr/bin/dynamicdns
123
-        fi
124
-    fi
125
-    if [ $FULLBLOG_CODE ]; then
126
-        if [[ $FULLBLOG_CODE != "$DEFAULT_DOMAIN_CODE" ]]; then
127
-            echo "# $FULLBLOG_DOMAIN_NAME" >> /usr/bin/dynamicdns
128
-            echo "$FREEDNS_WGET$FULLBLOG_CODE=" >> /usr/bin/dynamicdns
129
-        fi
130
-    fi
131
-    if [ $HUBZILLA_CODE ]; then
132
-        if [[ $HUBZILLA_CODE != "$DEFAULT_DOMAIN_CODE" ]]; then
133
-            echo "# $HUBZILLA_DOMAIN_NAME" >> /usr/bin/dynamicdns
134
-            echo "$FREEDNS_WGET$HUBZILLA_CODE=" >> /usr/bin/dynamicdns
135
-        fi
136
-    fi
137
-    if [ $MICROBLOG_CODE ]; then
138
-        if [[ $MICROBLOG_CODE != "$DEFAULT_DOMAIN_CODE" ]]; then
139
-            echo "# $MICROBLOG_DOMAIN_NAME" >> /usr/bin/dynamicdns
140
-            echo "$FREEDNS_WGET$MICROBLOG_CODE=" >> /usr/bin/dynamicdns
141
-        fi
142
-    fi
143
-    if [ $GIT_CODE ]; then
144
-        if [[ $GIT_CODE != "$DEFAULT_DOMAIN_CODE" ]]; then
145
-            echo "# $GIT_DOMAIN_NAME" >> /usr/bin/dynamicdns
146
-            echo "$FREEDNS_WGET$GIT_CODE=" >> /usr/bin/dynamicdns
147
-        fi
148
-    fi
149
-    if [ $MEDIAGOBLIN_CODE ]; then
150
-        if [[ $MEDIAGOBLIN_CODE != "$DEFAULT_DOMAIN_CODE" ]]; then
151
-            echo "# $MEDIAGOBLIN_DOMAIN_NAME" >> /usr/bin/dynamicdns
152
-            echo "$FREEDNS_WGET$MEDIAGOBLIN_CODE=" >> /usr/bin/dynamicdns
153
-        fi
154
-    fi
155
-    echo 'exit 0' >> /usr/bin/dynamicdns
156
-    chmod 600 /usr/bin/dynamicdns
157
-    chmod +x /usr/bin/dynamicdns
158
-
159
-    if ! grep -q "/usr/bin/dynamicdns" /etc/crontab; then
111
+    if ! grep -q "/usr/local/bin/freedombone-freedns" /etc/crontab; then
160 112
         function_check cron_add_mins
161
-        cron_add_mins 3 '/usr/bin/dynamicdns'
113
+        cron_add_mins 3 '/usr/local/bin/freedombone-freedns'
162 114
         systemctl restart cron
163 115
     fi
164 116