Browse Source

Update dependencies

Switch from the unmaintained node-static to serve-static.
dev_h
Ophir LOJKINE 5 years ago
parent
commit
c34ccbb17a
4 changed files with 171 additions and 48 deletions
  1. 1
    1
      Dockerfile
  2. 142
    16
      package-lock.json
  3. 3
    3
      package.json
  4. 25
    28
      server/server.js

+ 1
- 1
Dockerfile View File

1
-FROM node:10-alpine
1
+FROM node:12-alpine
2
 
2
 
3
 COPY . /opt/app
3
 COPY . /opt/app
4
 WORKDIR /opt/app
4
 WORKDIR /opt/app

+ 142
- 16
package-lock.json View File

1
 {
1
 {
2
    "name": "whitebophir",
2
    "name": "whitebophir",
3
-   "version": "1.0.24",
3
+   "version": "1.1.0",
4
    "lockfileVersion": 1,
4
    "lockfileVersion": 1,
5
    "requires": true,
5
    "requires": true,
6
    "dependencies": {
6
    "dependencies": {
322
       "colors": {
322
       "colors": {
323
          "version": "1.3.2",
323
          "version": "1.3.2",
324
          "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz",
324
          "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz",
325
-         "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ=="
325
+         "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==",
326
+         "dev": true
326
       },
327
       },
327
       "combined-stream": {
328
       "combined-stream": {
328
          "version": "1.0.8",
329
          "version": "1.0.8",
469
          "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
470
          "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
470
          "dev": true
471
          "dev": true
471
       },
472
       },
473
+      "depd": {
474
+         "version": "1.1.2",
475
+         "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
476
+         "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
477
+      },
478
+      "destroy": {
479
+         "version": "1.0.4",
480
+         "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
481
+         "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
482
+      },
472
       "ecc-jsbn": {
483
       "ecc-jsbn": {
473
          "version": "0.1.2",
484
          "version": "0.1.2",
474
          "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
485
          "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
479
             "safer-buffer": "^2.1.0"
490
             "safer-buffer": "^2.1.0"
480
          }
491
          }
481
       },
492
       },
493
+      "ee-first": {
494
+         "version": "1.1.1",
495
+         "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
496
+         "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
497
+      },
498
+      "encodeurl": {
499
+         "version": "1.0.2",
500
+         "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
501
+         "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
502
+      },
482
       "end-of-stream": {
503
       "end-of-stream": {
483
          "version": "1.4.4",
504
          "version": "1.4.4",
484
          "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
505
          "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
568
             "has-binary2": "~1.0.2"
589
             "has-binary2": "~1.0.2"
569
          }
590
          }
570
       },
591
       },
592
+      "escape-html": {
593
+         "version": "1.0.3",
594
+         "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
595
+         "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
596
+      },
571
       "escape-string-regexp": {
597
       "escape-string-regexp": {
572
          "version": "1.0.5",
598
          "version": "1.0.5",
573
          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
599
          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
574
          "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
600
          "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
575
          "dev": true
601
          "dev": true
576
       },
602
       },
603
+      "etag": {
604
+         "version": "1.8.1",
605
+         "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
606
+         "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
607
+      },
577
       "extend": {
608
       "extend": {
578
          "version": "3.0.2",
609
          "version": "3.0.2",
579
          "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
610
          "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
621
             "mime-types": "^2.1.12"
652
             "mime-types": "^2.1.12"
622
          }
653
          }
623
       },
654
       },
655
+      "fresh": {
656
+         "version": "0.5.2",
657
+         "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
658
+         "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
659
+      },
624
       "fs-constants": {
660
       "fs-constants": {
625
          "version": "1.0.0",
661
          "version": "1.0.0",
626
          "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
662
          "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
734
          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
770
          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
735
          "dev": true
771
          "dev": true
736
       },
772
       },
773
+      "http-errors": {
774
+         "version": "1.7.3",
775
+         "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
776
+         "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
777
+         "requires": {
778
+            "depd": "~1.1.2",
779
+            "inherits": "2.0.4",
780
+            "setprototypeof": "1.1.1",
781
+            "statuses": ">= 1.5.0 < 2",
782
+            "toidentifier": "1.0.0"
783
+         }
784
+      },
737
       "http-signature": {
785
       "http-signature": {
738
          "version": "1.2.0",
786
          "version": "1.2.0",
739
          "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
787
          "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
775
       "inherits": {
823
       "inherits": {
776
          "version": "2.0.4",
824
          "version": "2.0.4",
777
          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
825
          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
778
-         "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
779
-         "dev": true
826
+         "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
780
       },
827
       },
781
       "is-extglob": {
828
       "is-extglob": {
782
          "version": "2.1.1",
829
          "version": "2.1.1",
978
       "minimist": {
1025
       "minimist": {
979
          "version": "0.0.10",
1026
          "version": "0.0.10",
980
          "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
1027
          "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
981
-         "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
1028
+         "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
1029
+         "dev": true
982
       },
1030
       },
983
       "mkdirp": {
1031
       "mkdirp": {
984
          "version": "0.5.5",
1032
          "version": "0.5.5",
1025
          "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
1073
          "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
1026
          "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw=="
1074
          "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw=="
1027
       },
1075
       },
1028
-      "node-static": {
1029
-         "version": "0.7.11",
1030
-         "resolved": "https://registry.npmjs.org/node-static/-/node-static-0.7.11.tgz",
1031
-         "integrity": "sha512-zfWC/gICcqb74D9ndyvxZWaI1jzcoHmf4UTHWQchBNuNMxdBLJMDiUgZ1tjGLEIe/BMhj2DxKD8HOuc2062pDQ==",
1032
-         "requires": {
1033
-            "colors": ">=0.6.0",
1034
-            "mime": "^1.2.9",
1035
-            "optimist": ">=0.3.4"
1036
-         }
1037
-      },
1038
       "normalize-path": {
1076
       "normalize-path": {
1039
          "version": "3.0.0",
1077
          "version": "3.0.0",
1040
          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1078
          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1052
          "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
1090
          "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
1053
          "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
1091
          "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE="
1054
       },
1092
       },
1093
+      "on-finished": {
1094
+         "version": "2.3.0",
1095
+         "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
1096
+         "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
1097
+         "requires": {
1098
+            "ee-first": "1.1.1"
1099
+         }
1100
+      },
1055
       "once": {
1101
       "once": {
1056
          "version": "1.4.0",
1102
          "version": "1.4.0",
1057
          "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1103
          "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1102
          "version": "0.6.1",
1148
          "version": "0.6.1",
1103
          "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
1149
          "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
1104
          "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
1150
          "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
1151
+         "dev": true,
1105
          "requires": {
1152
          "requires": {
1106
             "minimist": "~0.0.1",
1153
             "minimist": "~0.0.1",
1107
             "wordwrap": "~0.0.2"
1154
             "wordwrap": "~0.0.2"
1175
             "better-assert": "~1.0.0"
1222
             "better-assert": "~1.0.0"
1176
          }
1223
          }
1177
       },
1224
       },
1225
+      "parseurl": {
1226
+         "version": "1.3.3",
1227
+         "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1228
+         "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
1229
+      },
1178
       "path-is-absolute": {
1230
       "path-is-absolute": {
1179
          "version": "1.0.1",
1231
          "version": "1.0.1",
1180
          "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1232
          "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1231
          "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
1283
          "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
1232
          "dev": true
1284
          "dev": true
1233
       },
1285
       },
1286
+      "range-parser": {
1287
+         "version": "1.2.1",
1288
+         "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1289
+         "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
1290
+      },
1234
       "read": {
1291
       "read": {
1235
          "version": "1.0.7",
1292
          "version": "1.0.7",
1236
          "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
1293
          "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
1316
          "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1373
          "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
1317
          "dev": true
1374
          "dev": true
1318
       },
1375
       },
1376
+      "send": {
1377
+         "version": "0.17.1",
1378
+         "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
1379
+         "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
1380
+         "requires": {
1381
+            "debug": "2.6.9",
1382
+            "depd": "~1.1.2",
1383
+            "destroy": "~1.0.4",
1384
+            "encodeurl": "~1.0.2",
1385
+            "escape-html": "~1.0.3",
1386
+            "etag": "~1.8.1",
1387
+            "fresh": "0.5.2",
1388
+            "http-errors": "~1.7.2",
1389
+            "mime": "1.6.0",
1390
+            "ms": "2.1.1",
1391
+            "on-finished": "~2.3.0",
1392
+            "range-parser": "~1.2.1",
1393
+            "statuses": "~1.5.0"
1394
+         },
1395
+         "dependencies": {
1396
+            "debug": {
1397
+               "version": "2.6.9",
1398
+               "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1399
+               "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1400
+               "requires": {
1401
+                  "ms": "2.0.0"
1402
+               },
1403
+               "dependencies": {
1404
+                  "ms": {
1405
+                     "version": "2.0.0",
1406
+                     "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1407
+                     "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1408
+                  }
1409
+               }
1410
+            },
1411
+            "ms": {
1412
+               "version": "2.1.1",
1413
+               "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1414
+               "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
1415
+            }
1416
+         }
1417
+      },
1418
+      "serve-static": {
1419
+         "version": "1.14.1",
1420
+         "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
1421
+         "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
1422
+         "requires": {
1423
+            "encodeurl": "~1.0.2",
1424
+            "escape-html": "~1.0.3",
1425
+            "parseurl": "~1.3.3",
1426
+            "send": "0.17.1"
1427
+         }
1428
+      },
1429
+      "setprototypeof": {
1430
+         "version": "1.1.1",
1431
+         "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
1432
+         "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
1433
+      },
1319
       "sha1-file": {
1434
       "sha1-file": {
1320
          "version": "1.0.4",
1435
          "version": "1.0.4",
1321
          "resolved": "https://registry.npmjs.org/sha1-file/-/sha1-file-1.0.4.tgz",
1436
          "resolved": "https://registry.npmjs.org/sha1-file/-/sha1-file-1.0.4.tgz",
1538
          "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
1653
          "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
1539
          "dev": true
1654
          "dev": true
1540
       },
1655
       },
1656
+      "statuses": {
1657
+         "version": "1.5.0",
1658
+         "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
1659
+         "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
1660
+      },
1541
       "string_decoder": {
1661
       "string_decoder": {
1542
          "version": "1.1.1",
1662
          "version": "1.1.1",
1543
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1663
          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1583
          "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
1703
          "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
1584
          "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
1704
          "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
1585
       },
1705
       },
1706
+      "toidentifier": {
1707
+         "version": "1.0.0",
1708
+         "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
1709
+         "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
1710
+      },
1586
       "tough-cookie": {
1711
       "tough-cookie": {
1587
          "version": "2.5.0",
1712
          "version": "2.5.0",
1588
          "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
1713
          "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
1719
       "wordwrap": {
1844
       "wordwrap": {
1720
          "version": "0.0.3",
1845
          "version": "0.0.3",
1721
          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
1846
          "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
1722
-         "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
1847
+         "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
1848
+         "dev": true
1723
       },
1849
       },
1724
       "wrappy": {
1850
       "wrappy": {
1725
          "version": "1.0.2",
1851
          "version": "1.0.2",

+ 3
- 3
package.json View File

3
       "collaborative",
3
       "collaborative",
4
       "whiteboard"
4
       "whiteboard"
5
    ],
5
    ],
6
-   "version": "1.0.24",
6
+   "version": "1.1.0",
7
    "license": "AGPL-3.0-or-later",
7
    "license": "AGPL-3.0-or-later",
8
    "dependencies": {
8
    "dependencies": {
9
       "handlebars": "^4.7.6",
9
       "handlebars": "^4.7.6",
10
-      "node-static": "^0.7.11",
10
+      "serve-static": "^1.14.1",
11
       "socket.io": "^2.3.0"
11
       "socket.io": "^2.3.0"
12
    },
12
    },
13
    "scripts": {
13
    "scripts": {
14
       "start": "node ./server/server.js",
14
       "start": "node ./server/server.js",
15
-      "deploy": "openode sync && openode restart"
15
+      "deploy": "openode deploy"
16
    },
16
    },
17
    "name": "whitebophir",
17
    "name": "whitebophir",
18
    "description": "Online collaborative whiteboard",
18
    "description": "Online collaborative whiteboard",

+ 25
- 28
server/server.js View File

5
 	, url = require('url')
5
 	, url = require('url')
6
 	, fs = require("fs")
6
 	, fs = require("fs")
7
 	, crypto = require("crypto")
7
 	, crypto = require("crypto")
8
-	, nodestatic = require("node-static")
8
+	, serveStatic = require("serve-static")
9
 	, createSVG = require("./createSVG.js")
9
 	, createSVG = require("./createSVG.js")
10
 	, handlebars = require("handlebars");
10
 	, handlebars = require("handlebars");
11
 
11
 
38
 
38
 
39
 var CSP = "default-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self' ws: wss:";
39
 var CSP = "default-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self' ws: wss:";
40
 
40
 
41
-var fileserver = new nodestatic.Server(WEBROOT, {
42
-	"headers": {
43
-		"X-UA-Compatible": "IE=Edge",
44
-		"Content-Security-Policy": CSP,
41
+var fileserver = serveStatic(WEBROOT, {
42
+	maxAge: 2 * 3600 * 1000,
43
+	setHeaders: function (res) {
44
+		res.setHeader("X-UA-Compatible", "IE=Edge");
45
+		res.setHeader("Content-Security-Policy", CSP);
45
 	}
46
 	}
46
 });
47
 });
47
 
48
 
48
-function serveError(request, response, err) {
49
-	console.warn("Error serving '" + request.url + "' : " + err.status + " " + err.message);
50
-	fileserver.serveFile('error.html', err.status, {}, request, response);
49
+var errorPage = fs.readFileSync(path.join(WEBROOT, "error.html"));
50
+function serveError(request, response) {
51
+	return function (err) {
52
+		log("error", { "error": err, "url": request.url });
53
+		response.writeHead(err ? 500 : 404, { "Content-Length": errorPage.length });
54
+		response.end(errorPage);
55
+	}
51
 }
56
 }
52
 
57
 
53
 function logRequest(request) {
58
 function logRequest(request) {
126
 			response.end(body);
131
 			response.end(body);
127
 		} else { // Else, it's a resource
132
 		} else { // Else, it's a resource
128
 			request.url = "/" + parts.slice(1).join('/');
133
 			request.url = "/" + parts.slice(1).join('/');
129
-			fileserver.serve(request, response, function (err, res) {
130
-				if (err) serveError(request, response, err);
131
-			});
134
+			fileserver(request, response, serveError(request, response));
132
 		}
135
 		}
133
 	} else if (parts[0] === "download") {
136
 	} else if (parts[0] === "download") {
134
 		var boardName = encodeURIComponent(parts[1]),
137
 		var boardName = encodeURIComponent(parts[1]),
135
-			history_file = "../server-data/board-" + boardName + ".json",
136
-			headers = {
137
-				"Content-Type": "application/json",
138
-				"Content-Disposition": 'attachment; filename="' + boardName + '.wbo"'
139
-			};
138
+			history_file = "server-data/board-" + boardName + ".json";
140
 		if (parts.length > 2 && !isNaN(Date.parse(parts[2]))) {
139
 		if (parts.length > 2 && !isNaN(Date.parse(parts[2]))) {
141
 			history_file += '.' + parts[2] + '.bak';
140
 			history_file += '.' + parts[2] + '.bak';
142
 		}
141
 		}
143
-		log("Downloading " + history_file);
144
-		var promise = fileserver.serveFile(history_file, 200, headers, request, response);
145
-		promise.on("error", function (err) {
146
-			console.error("Error while downloading history", err);
147
-			response.statusCode = 404;
148
-			response.end("ERROR: Unable to serve history file\n");
142
+		log("download", { "file": history_file });
143
+		fs.readFile(history_file, function (err, data) {
144
+			if (err) return serveError(request, response)(err);
145
+			response.writeHead(200, {
146
+				"Content-Type": "application/json",
147
+				"Content-Disposition": 'attachment; filename="' + boardName + '.wbo"',
148
+				"Content-Length": data.length,
149
+			});
150
+			response.end(data);
149
 		});
151
 		});
150
 	} else if (parts[0] === "preview") {
152
 	} else if (parts[0] === "preview") {
151
 		var boardName = encodeURIComponent(parts[1]),
153
 		var boardName = encodeURIComponent(parts[1]),
169
 		response.end(name);
171
 		response.end(name);
170
 	} else {
172
 	} else {
171
 		if (parts[0] === '') logRequest(request);
173
 		if (parts[0] === '') logRequest(request);
172
-		fileserver.serve(request, response, function (err, res) {
173
-			if (err) {
174
-				logRequest(request);
175
-				serveError(request, response, err);
176
-			}
177
-		});
174
+		fileserver(request, response, serveError(request, response));
178
 	}
175
 	}
179
 }
176
 }
180
 
177
 

Loading…
Cancel
Save