Browse Source

Generate cryptpad config

Bob Mottram 7 years ago
parent
commit
42043adb58
2 changed files with 109 additions and 9 deletions
  1. 106
    9
      src/freedombone-app-cryptpad
  2. 3
    0
      src/freedombone-image-mesh

+ 106
- 9
src/freedombone-app-cryptpad View File

@@ -36,6 +36,7 @@ SHOW_ICANN_ADDRESS_ON_ABOUT=0
36 36
 
37 37
 CRYPTPAD_ONION_PORT=8119
38 38
 CRYPTPAD_PORT=9003
39
+CRYPTPAD_PORT2=9005
39 40
 CRYPTPAD_REPO="https://github.com/xwiki-labs/cryptpad"
40 41
 CRYPTPAD_COMMIT='cfc9ce33d6c7034a13cb0e6d606de6fba38697e0'
41 42
 CRYPTPAD_DIR=/etc/cryptpad
@@ -101,6 +102,7 @@ function upgrade_cryptpad {
101 102
     set_repo_commit $CRYPTPAD_DIR "cryptpad commit" "$CRYPTPAD_COMMIT" $CRYPTPAD_REPO
102 103
 
103 104
     cd $CRYPTPAD_DIR
105
+    cryptpad_create_config
104 106
     npm upgrade
105 107
     npm install
106 108
     su -c 'echo "2" | bower update' - cryptpad
@@ -229,6 +231,108 @@ function remove_cryptpad {
229 231
     userdel -r cryptpad
230 232
 }
231 233
 
234
+function cryptpad_create_config {
235
+    cryptpad_install_type=$1
236
+
237
+    cryptpad_prefix=
238
+    if [[ "$cryptpad_install_type" == "mesh" ]]; then
239
+        cryptpad_prefix=$rootdir
240
+    fi
241
+
242
+    echo '/*@flow*/' > $cryptpad_prefix$CRYPTPAD_DIR/config.js
243
+    echo '/*' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
244
+    echo '  globals module' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
245
+    echo '*/' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
246
+    echo "var domain = ' http://localhost:${CRYPTPAD_PORT}/';" >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
247
+    echo 'module.exports = {' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
248
+    echo "        httpAddress: '::'," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
249
+    echo '        httpHeaders: {' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
250
+    echo '                "X-XSS-Protection": "1; mode=block",' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
251
+    echo '                "X-Content-Type-Options": "nosniff",' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
252
+    echo '                "Access-Control-Allow-Origin": "*"' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
253
+    echo '        },' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
254
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
255
+    echo '        contentSecurity: [' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
256
+    echo "                \"default-src 'none'\"," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
257
+    echo "                \"style-src 'unsafe-inline' 'self' \" + domain," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
258
+    echo "                \"script-src 'self'\" + domain," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
259
+    echo "                \"font-src 'self' data:\" + domain," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
260
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
261
+    echo '                "child-src blob: *",' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
262
+    echo '                "frame-src blob: *",' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
263
+    echo '                "media-src * blob:",' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
264
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
265
+    echo "                \"connect-src 'self' ws: wss: blob:\" + domain," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
266
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
267
+    echo "                \"img-src 'self' data: blob:\" + domain," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
268
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
269
+    echo '                "frame-ancestors *",' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
270
+    echo "        ].join('; ')," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
271
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
272
+    echo '        padContentSecurity: [' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
273
+    echo "                \"default-src 'none'\"," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
274
+    echo "                \"style-src 'unsafe-inline' 'self'\" + domain," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
275
+    echo "                \"script-src 'self' 'unsafe-eval' 'unsafe-inline'\" + domain," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
276
+    echo "                \"font-src 'self'\" + domain," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
277
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
278
+    echo '                "child-src *",' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
279
+    echo '                "frame-src *",' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
280
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
281
+    echo "                \"connect-src 'self' ws: wss:\" + domain," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
282
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
283
+    echo '                "img-src * blob:",' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
284
+    echo "        ].join('; ')," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
285
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
286
+    echo "        httpPort: ${CRYPTPAD_PORT}," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
287
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
288
+    echo '        // This is for allowing the cross-domain iframe to function when developing' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
289
+    echo "        httpSafePort: ${CRYPTPAD_PORT2}," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
290
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
291
+    echo "        websocketPath: '/cryptpad_websocket'," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
292
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
293
+    echo '        logToStdout: false,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
294
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
295
+    echo '        verbose: false,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
296
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
297
+    echo '        mainPages: [' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
298
+    echo "                'index'" >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
299
+    echo '        ],' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
300
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
301
+    echo '        removeDonateButton: true,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
302
+    echo '        allowSubscriptions: false,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
303
+    if [[ "$cryptpad_install_type" == "mesh" ]]; then
304
+        echo "        myDomain: 'http://P${PEER_ID}.local'," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
305
+    else
306
+        CRYPTPAD_ONION_HOSTNAME=$(cat /var/lib/tor/hidden_service_cryptpad/hostname)
307
+        echo "        myDomain: 'http://${CRYPTPAD_ONION_HOSTNAME}'," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
308
+    fi
309
+    echo '        defaultStorageLimit: 50 * 1024 * 1024,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
310
+
311
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
312
+    echo '        customLimits: {' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
313
+    echo '        },' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
314
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
315
+    echo '        adminEmail: false,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
316
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
317
+    echo "        storage: './storage/file'," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
318
+    echo '' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
319
+    echo "       filePath: './datastore/'," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
320
+    echo "        pinPath: './pins'," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
321
+    echo "        blobPath: './blob'," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
322
+    echo "        blobStagingPath: './blobstage'," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
323
+    echo '        channelExpirationMs: 30000,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
324
+    echo '        openFileLimit: 1024,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
325
+    echo "        rpc: './rpc.js'," >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
326
+    echo '        suppressRPCErrors: false,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
327
+    echo '        enableUploads: true,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
328
+    echo '        //restrictUploads: false,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
329
+    echo '        maxUploadSize: 20 * 1024 * 1024,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
330
+    echo '        //logFeedback: true,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
331
+    echo '        //logRPC: true,' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
332
+    echo '};' >> $cryptpad_prefix$CRYPTPAD_DIR/config.js
333
+    chown cryptpad:cryptpad $cryptpad_prefix$CRYPTPAD_DIR/config.js
334
+}
335
+
232 336
 function mesh_install_cryptpad {
233 337
     if [[ $VARIANT != "meshclient" && $VARIANT != "meshusb" ]]; then
234 338
         return
@@ -357,10 +461,7 @@ EOF
357 461
 
358 462
     rm $rootdir/usr/bin/install_cryptpad
359 463
 
360
-    sed -i "s|httpPort:.*|httpPort: $CRYPTPAD_PORT,|g" $rootdir$CRYPTPAD_DIR/config.js
361
-    sed -i "s|// domain:|domain:|g" $rootdir$CRYPTPAD_DIR/config.js
362
-    sed -i 's|openFileLimit:.*|openFileLimit: 1024,|g' $rootdir$CRYPTPAD_DIR/config.js
363
-    sed -i "s|domain:.*|domain: 'http://P${PEER_ID}.local',|g" $rootdir$CRYPTPAD_DIR/config.js
464
+    cryptpad_create_config mesh
364 465
 
365 466
     chroot "$rootdir" chown -R cryptpad:cryptpad $CRYPTPAD_DIR
366 467
 
@@ -529,11 +630,7 @@ function install_cryptpad {
529 630
         exit 628252
530 631
     fi
531 632
 
532
-    sed -i "s|httpPort:.*|httpPort: $CRYPTPAD_PORT,|g" config.js
533
-    sed -i "s|// domain:|domain:|g" config.js
534
-    sed -i 's|openFileLimit:.*|openFileLimit: 1024,|g' config.js
535
-    sed -i "s|domain:.*|domain: 'http://$CRYPTPAD_ONION_HOSTNAME',|g" config.js
536
-
633
+    cryptpad_create_config
537 634
     chown -R cryptpad:cryptpad $CRYPTPAD_DIR
538 635
 
539 636
     # daemon

+ 3
- 0
src/freedombone-image-mesh View File

@@ -155,6 +155,9 @@ function enable_cryptpad {
155 155
     if [ ! -d $CRYPTPAD_DIR/customize/api ]; then
156 156
         mkdir -p $CRYPTPAD_DIR/customize/api
157 157
     fi
158
+    if [ -f $CRYPTPAD_DIR/config.js ]; then
159
+        sed -i "s|myDomain:.*|myDomain: 'http://P${PEER_ID}.local',|g" $CRYPTPAD_DIR/config.js
160
+    fi
158 161
     wget 127.0.0.1:$CRYPTPAD_PORT/api/config -O $CRYPTPAD_DIR/customize/api/config
159 162
     if [ ! -f $CRYPTPAD_DIR/customize/api/config ]; then
160 163
         echo $'Unable to wget api/config'