|
@@ -36,8 +36,9 @@ 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
|
|
-CRYPTPAD_COMMIT='52d344c3d1404d75d2bf4ae8845e5c024e85ec7f'
|
|
41
|
+CRYPTPAD_COMMIT='cfc9ce33d6c7034a13cb0e6d606de6fba38697e0'
|
41
|
42
|
CRYPTPAD_DIR=/etc/cryptpad
|
42
|
43
|
|
43
|
44
|
cryptpad_variables=(ONION_ONLY)
|
|
@@ -76,6 +77,18 @@ function reconfigure_cryptpad {
|
76
|
77
|
fi
|
77
|
78
|
}
|
78
|
79
|
|
|
80
|
+function cryptpad_generate_api_config {
|
|
81
|
+ if [ ! -d $CRYPTPAD_DIR/customize/api ]; then
|
|
82
|
+ mkdir -p $CRYPTPAD_DIR/customize/api
|
|
83
|
+ fi
|
|
84
|
+ wget 127.0.0.1:$CRYPTPAD_PORT/api/config -O $CRYPTPAD_DIR/customize/api/config
|
|
85
|
+ if [ ! -f $CRYPTPAD_DIR/customize/api/config ]; then
|
|
86
|
+ echo $'Unable to wget api/config'
|
|
87
|
+ exit 89252
|
|
88
|
+ fi
|
|
89
|
+ chown -R cryptpad:cryptpad $CRYPTPAD_DIR
|
|
90
|
+}
|
|
91
|
+
|
79
|
92
|
function upgrade_cryptpad {
|
80
|
93
|
CURR_CRYPTPAD_COMMIT=$(get_completion_param "cryptpad commit")
|
81
|
94
|
if [[ "$CURR_CRYPTPAD_COMMIT" == "$CRYPTPAD_COMMIT" ]]; then
|
|
@@ -89,14 +102,17 @@ function upgrade_cryptpad {
|
89
|
102
|
set_repo_commit $CRYPTPAD_DIR "cryptpad commit" "$CRYPTPAD_COMMIT" $CRYPTPAD_REPO
|
90
|
103
|
|
91
|
104
|
cd $CRYPTPAD_DIR
|
|
105
|
+ cryptpad_create_config
|
|
106
|
+ npm upgrade
|
92
|
107
|
npm install
|
|
108
|
+ su -c 'echo "2" | bower update' - cryptpad
|
|
109
|
+ su -c 'bower install --config.interactive=false' - cryptpad
|
|
110
|
+ cryptpad_generate_api_config
|
93
|
111
|
chown -R cryptpad:cryptpad $CRYPTPAD_DIR
|
94
|
|
- su -c 'bower install' - cryptpad
|
95
|
112
|
|
96
|
113
|
systemctl start cryptpad
|
97
|
114
|
}
|
98
|
115
|
|
99
|
|
-
|
100
|
116
|
function backup_local_cryptpad {
|
101
|
117
|
source_directory=$CRYPTPAD_DIR/datastore
|
102
|
118
|
if [ -d $source_directory ]; then
|
|
@@ -215,6 +231,108 @@ function remove_cryptpad {
|
215
|
231
|
userdel -r cryptpad
|
216
|
232
|
}
|
217
|
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
|
+
|
218
|
336
|
function mesh_install_cryptpad {
|
219
|
337
|
if [[ $VARIANT != "meshclient" && $VARIANT != "meshusb" ]]; then
|
220
|
338
|
return
|
|
@@ -343,10 +461,7 @@ EOF
|
343
|
461
|
|
344
|
462
|
rm $rootdir/usr/bin/install_cryptpad
|
345
|
463
|
|
346
|
|
- sed -i "s|httpPort:.*|httpPort: $CRYPTPAD_PORT,|g" $rootdir$CRYPTPAD_DIR/config.js
|
347
|
|
- sed -i "s|// domain:|domain:|g" $rootdir$CRYPTPAD_DIR/config.js
|
348
|
|
- sed -i 's|openFileLimit:.*|openFileLimit: 1024,|g' $rootdir$CRYPTPAD_DIR/config.js
|
349
|
|
- sed -i "s|domain:.*|domain: 'http://P${PEER_ID}.local',|g" $rootdir$CRYPTPAD_DIR/config.js
|
|
464
|
+ cryptpad_create_config mesh
|
350
|
465
|
|
351
|
466
|
chroot "$rootdir" chown -R cryptpad:cryptpad $CRYPTPAD_DIR
|
352
|
467
|
|
|
@@ -422,6 +537,11 @@ function install_cryptpad_main {
|
422
|
537
|
echo '' >> $cryptpad_nginx_site
|
423
|
538
|
echo ' index index.html;' >> $cryptpad_nginx_site
|
424
|
539
|
echo '' >> $cryptpad_nginx_site
|
|
540
|
+ echo ' if ($args ~ ver=) {' >> $cryptpad_nginx_site
|
|
541
|
+ echo ' set $cacheControl max-age=31536000;' >> $cryptpad_nginx_site
|
|
542
|
+ echo ' }' >> $cryptpad_nginx_site
|
|
543
|
+ echo ' add_header Cache-Control $cacheControl;' >> $cryptpad_nginx_site
|
|
544
|
+ echo '' >> $cryptpad_nginx_site
|
425
|
545
|
echo ' add_header X-XSS-Protection "1; mode=block";' >> $cryptpad_nginx_site
|
426
|
546
|
echo ' add_header X-Content-Type-Options nosniff;' >> $cryptpad_nginx_site
|
427
|
547
|
echo ' add_header X-Frame-Options SAMEORIGIN;' >> $cryptpad_nginx_site
|
|
@@ -510,11 +630,7 @@ function install_cryptpad {
|
510
|
630
|
exit 628252
|
511
|
631
|
fi
|
512
|
632
|
|
513
|
|
- sed -i "s|httpPort:.*|httpPort: $CRYPTPAD_PORT,|g" config.js
|
514
|
|
- sed -i "s|// domain:|domain:|g" config.js
|
515
|
|
- sed -i 's|openFileLimit:.*|openFileLimit: 1024,|g' config.js
|
516
|
|
- sed -i "s|domain:.*|domain: 'http://$CRYPTPAD_ONION_HOSTNAME',|g" config.js
|
517
|
|
-
|
|
633
|
+ cryptpad_create_config
|
518
|
634
|
chown -R cryptpad:cryptpad $CRYPTPAD_DIR
|
519
|
635
|
|
520
|
636
|
# daemon
|
|
@@ -540,15 +656,7 @@ function install_cryptpad {
|
540
|
656
|
|
541
|
657
|
sleep 6
|
542
|
658
|
|
543
|
|
- if [ ! -d $CRYPTPAD_DIR/customize/api ]; then
|
544
|
|
- mkdir -p $CRYPTPAD_DIR/customize/api
|
545
|
|
- fi
|
546
|
|
- wget 127.0.0.1:$CRYPTPAD_PORT/api/config -O $CRYPTPAD_DIR/customize/api/config
|
547
|
|
- if [ ! -f $CRYPTPAD_DIR/customize/api/config ]; then
|
548
|
|
- echo $'Unable to wget api/config'
|
549
|
|
- exit 89252
|
550
|
|
- fi
|
551
|
|
- chown -R cryptpad:cryptpad $CRYPTPAD_DIR
|
|
659
|
+ cryptpad_generate_api_config
|
552
|
660
|
|
553
|
661
|
# install again
|
554
|
662
|
cd $CRYPTPAD_DIR
|