Browse Source

Possibility for alternative dat bootstrap servers

Bob Mottram 7 years ago
parent
commit
0dcf17b375
1 changed files with 68 additions and 3 deletions
  1. 68
    3
      src/freedombone-app-datserver

+ 68
- 3
src/freedombone-app-datserver View File

@@ -43,7 +43,71 @@ DATSERVER_HYPERCORED_VERSION='1.4.1'
43 43
 DATSERVER_DIRECTORY=/etc/datserver
44 44
 DATSERVER_PORT=3282
45 45
 
46
-datserver_variables=(MY_USERNAME)
46
+# bootstrap servers are specified here
47
+DATSERVER_BOOTSTRAP_FILE=$DATSERVER_DIRECTORY/node_modules/datland-swarm-defaults/index.js
48
+
49
+DATSERVER_DISCOVERY1=
50
+DATSERVER_DISCOVERY2=
51
+DATSERVER_BOOTSTRAP1=
52
+DATSERVER_BOOTSTRAP2=
53
+DATSERVER_BOOTSTRAP3=
54
+DATSERVER_BOOTSTRAP4=
55
+
56
+datserver_variables=(MY_USERNAME
57
+                     DATSERVER_DISCOVERY1
58
+                     DATSERVER_DISCOVERY2
59
+                     DATSERVER_BOOTSTRAP1
60
+                     DATSERVER_BOOTSTRAP2
61
+                     DATSERVER_BOOTSTRAP3
62
+                     DATSERVER_BOOTSTRAP4)
63
+
64
+function datserver_add_discovery_domain {
65
+    server_domain="$1"
66
+
67
+    if [ ! "$server_domain" ]; then
68
+        return
69
+    fi
70
+
71
+    if [ ${#server_domain} -lt 4 ]; then
72
+        return
73
+    fi
74
+
75
+    if grep -q "$server_domain" $DATSERVER_BOOTSTRAP_FILE; then
76
+       return
77
+    fi
78
+
79
+    sed -i "/var DEFAULT_DISCOVERY/a '$server_domain'," $DATSERVER_BOOTSTRAP_FILE
80
+    sed -i "s|'$server_domain',|  '$server_domain',|g" $DATSERVER_BOOTSTRAP_FILE
81
+}
82
+
83
+function datserver_add_bootstrap {
84
+    boostrap_server="$1"
85
+
86
+    if [ ! "$boostrap_server" ]; then
87
+        return
88
+    fi
89
+
90
+    if [ ${#boostrap_server} -lt 4 ]; then
91
+        return
92
+    fi
93
+
94
+    if grep -q "$boostrap_server" $DATSERVER_BOOTSTRAP_FILE; then
95
+       return
96
+    fi
97
+
98
+    sed -i "/var DEFAULT_BOOTSTRAP/a '$boostrap_server'," $DATSERVER_BOOTSTRAP_FILE
99
+    sed -i "s|'$boostrap_server',|  '$boostrap_server',|g" $DATSERVER_BOOTSTRAP_FILE
100
+}
101
+
102
+function datserver_generate_bootstraps {
103
+    datserver_add_discovery_domain "$DATSERVER_DISCOVERY1"
104
+    datserver_add_discovery_domain "$DATSERVER_DISCOVERY2"
105
+
106
+    datserver_add_bootstrap "$DATSERVER_BOOTSTRAP1"
107
+    datserver_add_bootstrap "$DATSERVER_BOOTSTRAP2"
108
+    datserver_add_bootstrap "$DATSERVER_BOOTSTRAP3"
109
+    datserver_add_bootstrap "$DATSERVER_BOOTSTRAP4"
110
+}
47 111
 
48 112
 function logging_on_datserver {
49 113
     echo -n ''
@@ -127,9 +191,11 @@ function upgrade_datserver {
127 191
     CURR_DATSERVER_HYPERCORED_VERSION=$(get_completion_param "datserver hypercored version")
128 192
     if [[ "$CURR_DATSERVER_HYPERCORED_VERSION" != "$DATSERVER_HYPERCORED_VERSION" ]]; then
129 193
         cd $DATSERVER_DIRECTORY || exit 254274
194
+        systemctl stop datserver
130 195
         if npm update hypercored@$DATSERVER_HYPERCORED_VERSION; then
131 196
             set_completion_param "datserver hypercored version" "$DATSERVER_HYPERCORED_VERSION"
132 197
         fi
198
+        datserver_generate_bootstraps
133 199
         chown -R datserver:datserver "$DATSERVER_DIRECTORY"
134 200
         systemctl restart datserver
135 201
     fi
@@ -253,8 +319,7 @@ function install_datserver {
253 319
         exit 9568356
254 320
     fi
255 321
 
256
-    # bootstrap servers are here:
257
-    # $DATSERVER_DIRECTORY/node_modules/datland-swarm-defaults/index.js
322
+    datserver_generate_bootstraps
258 323
 
259 324
     chown -R datserver:datserver "$DATSERVER_DIRECTORY"
260 325