|
@@ -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
|