From b9672e342d0940dccd812eebf554f5af6bffd529 Mon Sep 17 00:00:00 2001 From: Caleb James DeLisle Date: Tue, 12 Jun 2018 16:50:38 +0200 Subject: [PATCH] Add code for templating html files --- bower.json | 3 +- config.example.js | 2 + customize.dist/four-oh-four.js | 2 +- customize.dist/manifest.js | 96 ++++++++++++++++---------- customize.dist/pages.js | 2 +- customize.dist/version.txt | 2 +- gen-manifest.js | 107 ++++++++++++++++++++--------- www/assert/index.html | 2 +- www/auth/index.html | 2 +- www/bounce/index.html | 2 +- www/bounce/main.js | 2 +- www/code/index.html | 2 +- www/common/LessLoader.js | 2 +- www/common/RequireJson.js | 18 +++++ www/common/boot2.js | 7 +- www/common/common-ui-elements.js | 2 +- www/common/config.js | 38 ++++++++-- www/common/cryptpad-common.js | 2 +- www/common/notify.js | 2 +- www/common/outer/network-config.js | 2 +- www/common/requireconfig.js | 27 -------- www/common/sboot.js | 4 +- www/common/sframe-app-outer.js | 33 ++++++--- www/common/sframe-boot2.js | 5 +- www/common/sframe-common-outer.js | 2 +- www/common/sframe-sboot.js | 22 ++++-- www/common/toolbar3.js | 2 +- www/contacts/index.html | 2 +- www/contacts/main.js | 13 ++-- www/debug/index.html | 2 +- www/debug/inner.js | 2 +- www/debug/main.js | 13 ++-- www/drive/index.html | 2 +- www/drive/main.js | 13 ++-- www/examples/json/main.js | 2 +- www/examples/render/main.js | 2 +- www/file/main.js | 13 ++-- www/filepicker/index.html | 2 +- www/filepicker/main.js | 15 ++-- www/invite/index.html | 2 +- www/kanban/index.html | 2 +- www/login/index.html | 2 +- www/logout/index.html | 2 +- www/mediatag/index.html | 2 +- www/pad/index.html | 2 +- www/pad/inner.html | 2 +- www/pad/inner.js | 4 +- www/pad/wysiwygarea-plugin.js | 2 +- www/poll/index.html | 2 +- www/poll/main.js | 13 ++-- www/profile/index.html | 2 +- www/profile/main.js | 13 ++-- www/register/index.html | 2 +- www/settings/index.html | 2 +- www/settings/inner.js | 2 +- www/settings/main.js | 13 ++-- www/slide/index.html | 2 +- www/todo/index.html | 2 +- www/todo/main.js | 13 ++-- www/user/index.html | 2 +- www/whiteboard/index.html | 2 +- www/whiteboard/inner.js | 2 +- www/whiteboard/main.js | 13 ++-- www/worker/index.html | 2 +- www/worker/main.js | 13 ++-- 65 files changed, 335 insertions(+), 258 deletions(-) create mode 100644 www/common/RequireJson.js diff --git a/bower.json b/bower.json index 8e6d5cb79..b2d5769d7 100644 --- a/bower.json +++ b/bower.json @@ -47,7 +47,8 @@ "html2canvas": "^0.4.1", "croppie": "^2.5.0", "sortablejs": "#^1.6.0", - "saferphore": "^0.0.1" + "saferphore": "^0.0.1", + "requirejs-plugins": "^1.0.3" }, "resolutions": { "bootstrap": "^v4.0.0" diff --git a/config.example.js b/config.example.js index 166fd74a8..21b1c2fbc 100644 --- a/config.example.js +++ b/config.example.js @@ -64,6 +64,8 @@ module.exports = { // for accounts.cryptpad.fr authentication and pad2 cross-domain iframe sandbox "frame-ancestors *", + + 'require-sri-for script' ].join('; '), // CKEditor requires significantly more lax content security policy in order to function. diff --git a/customize.dist/four-oh-four.js b/customize.dist/four-oh-four.js index bcae8b4b2..cb71bb273 100644 --- a/customize.dist/four-oh-four.js +++ b/customize.dist/four-oh-four.js @@ -1,6 +1,6 @@ define([ 'jquery', - '/api/config', + '/common/config.js', '/common/hyperscript.js', '/common/outer/local-store.js', '/customize/messages.js', diff --git a/customize.dist/manifest.js b/customize.dist/manifest.js index 246f19dec..a484bd6cb 100644 --- a/customize.dist/manifest.js +++ b/customize.dist/manifest.js @@ -14,7 +14,7 @@ defineManifest({ "main.js": "drf9gISEfT0ipwZxW0+SfMqlF12OoIWucURHVlFRbHk=" }, "bounce": { - "main.js": "Q6XwDGtdoUnAZ8C/kNwTzaCVC7+zS7w2BLsQj2Jg0sA=" + "main.js": "+bwujEB1B6AQvtZlMfFRf3aH7+3snQN64pk8YiWzpJ0=" }, "bower_components": { "alertifyjs": { @@ -3737,6 +3737,29 @@ defineManifest({ "requirejs": { "require.js": "uvn41VNPQ8aVNA6aS1Zjc2FUPkKq7ZgA6SzFiHkVgxs=" }, + "requirejs-plugins": { + "examples": { + "img": { + "relativePath.js": "SyumWGLb9xxCxSmgqUjYf/exAgibR9xISNe52fqvJB8=" + } + }, + "lib": { + "Markdown.Converter.js": "lQr1zRtxA8YA96Kr4Ao1LLej0QYUgAR9KG8acTp6uow=", + "require.js": "5+BuX+6beEum0Vnuh7uiodVENZ2b4IsV8UAqDsgPjPo=", + "text.js": "FkW1ku4cUpwohsxvAw6OgsCbRtyj80vgRBxUyoj8Kog=" + }, + "src": { + "async.js": "8KUzKYUnIAgxvmHzZs3Ly6Q5yoJKAujlOgiYKPGLGPA=", + "depend.js": "SNaJoVFD+7c0rrQD/ZecIP9ZzbMqtXfPQdIJxGhp6tY=", + "font.js": "zMXVtq3bFswMDDs1McEL3Cg7u2wcjPw1PJgdI2EK4os=", + "goog.js": "41ddyqRlfxUtMMaPnfPHfJ8dR1Y1wbsRYiehgt0oNTI=", + "image.js": "YnDQ4vSySzmQMUrkg67JRJeQdBGBVo0KVHTiC12HxsY=", + "json.js": "uZbJR9xdaaaO3PzQPep6FbLo+2Lu8yOP5rxQXRKmrQE=", + "mdown.js": "d28k3+yXW2yv/aLz2OerViPYVfS+f6ftAUG+AzLn0z4=", + "noext.js": "nuPbMbkovfEZG4siRQIVC4sCr/kPYsJdDuRw8rhS2DE=", + "propertyParser.js": "mn77u8+jOwS7OmZ3L8xyTNhR6uLMh5YrZ4NoZTKFL48=" + } + }, "saferphore": { "index.js": "C6SvlP6jhoSX13W5OfLikQNMwK5VMQ4Wb94dXpENwH0=", "test.js": "yLQRPPygQnCRS5cmLtyEk6fsHCiQ9rSrtpubtj0rqq8=" @@ -3773,12 +3796,13 @@ defineManifest({ "orgmode.js": "NQNUlnlLWjHIuXOdJxX75xvwmIOJ3rZaJQN1ygbgy10=" }, "common": { - "LessLoader.js": "4gw7t9RGCm/rsUSCyaMHjmFzV6vGWn2dy+JUL5LFT3I=", + "LessLoader.js": "3uLn1sW/vcIVYQ2/OKq0A41ZN7Pj5+n950UGbWFcmgc=", + "RequireJson.js": "4JEgQi89DWSucX+zC4NptJ0urEJRWD14arrcsnFndpM=", "RequireLess.js": "saShGzxCjk/sH6B+3yNun6YyT2Cne8Wj8dBz9oUNv8U=", "TypingTests.js": "9OmAY0XeB2av1M7mNZ6YyK1TNk2OZmJREYp4UjJ03aU=", "application_config_internal.js": "977lvWLw22OgcpJYGgixlgj64eN917koSw8P/ZtkE48=", "boot.js": "UglPyWFblBM7bFInkIwFBdOif9qGAmGsH5u/Me76864=", - "boot2.js": "sY+z7zcxIflpEJuhWhRQ6AFKdaZ9NkXYExK61HNZCOM=", + "boot2.js": "1qK/3CMyAbrsPZd9KFDIjYbRwoVrmxYGnHCLohBbCqU=", "clipboard.js": "+V7yoDu3EbsPnV2Xk6hPemvatqJTowbBLYJM7IkVvCc=", "common-constants.js": "V8TxZLCr5GVqeJM6h1G7yfMho4pXjdBAChMQuELH+M8=", "common-feedback.js": "UjeghAfJdmGLzXLxav0Ctnw4MhlMXv8QJcGgitB6IV8=", @@ -3790,11 +3814,11 @@ defineManifest({ "common-notifier.js": "z0faHkLifuAnK4T+Y22bCpejRlT5ZFHj46wIkMJW+2E=", "common-realtime.js": "wmiseagZ/nBrUKjZFUf1Q089OfM6qLWykd5l7drNQjg=", "common-thumbnail.js": "Ol2y1ht3ufb/T2qKZpml++5ImFA4Y+LHKq6ZET559mg=", - "common-ui-elements.js": "U8GQJA+kVAFVtlaso/W7rOdBC9cKthNHtKrRlTBZt3c=", + "common-ui-elements.js": "eNyOnOr/1fuAyIQQkegh6KcvU+Ug0LnCwfc+oKbe5T4=", "common-util.js": "ySc4Ux5txkoWJTJjRidO0KBFUeeHMOOzr5RsvXV80V4=", - "config.js": "ACBMX1O0S0R8Rs+TdtRER8fkMgH8rhC2DciXb5cf/XQ=", + "config.js": "ZTcianWJokv3mmS4tmR1hLLfzC1w/UaR3t+PP9SJuuA=", "cryptget.js": "HW7cbLkKpJDB6m7brq1Kwey1VNGYC+GdyoQizJFP7LI=", - "cryptpad-common.js": "T7AXSBbmAUc4F/On52h/FeH5Ycoj+xWn0ogZA0Csy+w=", + "cryptpad-common.js": "uQ1h9EDzKmRnwfGZEDh9Ck99oq5aNDcpnQ/XEZ4PdbU=", "cursor.js": "GCuUBs0HZe+sxbEI0QSwOKQq8Q/oo0yqgwH7uWsLlwc=", "curve-put.js": "44yvCIuttJSPC41uPhk93AKchlO8BOcgYk3OoWI2YN0=", "curve.js": "vPtg2DFJuPz6NuzAsaR9Xm0dzVPNnrgLs5hIqnlM9NA=", @@ -3815,12 +3839,12 @@ defineManifest({ "migrate-user-object.js": "YulKoaKqHjpbF8VwsEqikPCeoC7EUVdm+hC6HBQ145c=", "modes.js": "9ZjUQRwZbpH5kZ/xPhKPdOVHwNF3gb+BxVH3p7M++VM=", "noscriptfix.js": "X/ZB5PEoNd3FlWNKDvHBYPh4aWohNiUIFh+r6Q2kUNI=", - "notify.js": "ideyQ+P+ilfMCAOYsvqrRKLksa3d1t9q3xQgpKV/raA=", + "notify.js": "uwyd028CSrscnd8Yozcuiu5Jc+ruDLiMUiXWXSl76S0=", "outer": { "async-store.js": "JNkAcmZrcjXQPKr5op2RcQBwn7tkrm5ttbmwVeskp9I=", "chainpad-netflux-worker.js": "aRIO3xCs6s4PG7DCqwLOT/6lPuJ/XdOBqxMzH2QhcNY=", "local-store.js": "SFE30lGABz7af3Sx8kI5RDoK2SModEQaQKQ0upFI48o=", - "network-config.js": "rhi5XW8phtyfbk8ax+eKgAz6/Alvjgt+O/AomdO/wJs=", + "network-config.js": "SQJ9yiL5AJqNKqpxV4/051Q1L+i9UHG5UEDBstFy7/4=", "store-rpc.js": "NgnzRhJxDjH7bfwyU7xm9GHoBBWH9F6mlYhgv07DEWI=", "upload.js": "deDriogptZadbKab6o57VJrUiQH6aY8h8zDvDmsj0CU=", "userObject.js": "xqqnElhqfG9DgJM6nElsABEoB1UHRAw2M29bNTQuENw=" @@ -3850,32 +3874,32 @@ defineManifest({ } }, "pinpad.js": "ya+HXcfu+lJLLhIEHX5FornKnhZd5GH8fcN3bwrzoWE=", - "requireconfig.js": "wCPWJHcRA4AF/NGR8eRM1HP34J8HyikBCPUcBRTIkFc=", + "requireconfig.js": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", "rpc.js": "xtLYr1rfErQrt2o0UoatAlsI4Uy8/cLNsRMuWBHjbYk=", - "sboot.js": "zKt3KH6sKFs2vzvo0lYJHVJZDzRz6pljOoVY4hJsiRI=", + "sboot.js": "8IaxCUqjpzoP7AEPEk++VQ+Bk83mRdXx4dK+XvSNPcI=", "sframe-app-framework.js": "Niit3/AL31DhzJZszOFolsbdBiTzOOjL9+ai+pCxewo=", - "sframe-app-outer.js": "gwZR1f9jmdI0Our8fotAVXd4pKKC/2U27eOmVK9IQOw=", + "sframe-app-outer.js": "N2PEM7S5J+SMh0lLZb8SCb/cBtaPXSdrB/DO7akQGP0=", "sframe-boot.js": "3ogfkzUbhkNkxpwDfYYXS5KuwRuRnSE7idzqSSU395A=", - "sframe-boot2.js": "wrygcFz2V7C0+/mvTjB9v8AFg4xtzTB+NiorbCQBjCk=", + "sframe-boot2.js": "0LXCIDoEm87cTBRkbd6K/P8mrTmuMsDooAFhUHDyMJQ=", "sframe-chainpad-netflux-inner.js": "JjEcg0eInFptgb7b23brLq6riTdrjvs6o+Doi1hH9fg=", "sframe-chainpad-netflux-outer.js": "IWYVJk8qQHM0HrC3nYs+pKswgNVVuwMNNXvKaZSdWmg=", "sframe-channel.js": "jKAu7FcK/EyZy+S5jb8DC1T3gTMEo0pMqtlFZvTimaQ=", "sframe-common-codemirror.js": "6C99Rp/v0IUFJikz0yBGCPRvqJUOrGOjdl7ZcdKS76w=", "sframe-common-file.js": "8ulN86yelfmbrHgVGYBAqJfLNRPFN488V1BQE0SacDc=", "sframe-common-history.js": "SJZTsJTR+prwgschIT+Pjqi32yn+/OUzdhE2ksi9mms=", - "sframe-common-outer.js": "JoRJNgCjDScvby4nVIj2N/2Lt5DfhBdiJoilg+ZpMNw=", + "sframe-common-outer.js": "pp5aVW/ObIaVgo4ayyL2lK4X++fbDn0izCHOiR4iItk=", "sframe-common-title.js": "1coNcbAbCVrZ+RLIMZ0MMzzcEbVzx4XcnZJmhuQxwYI=", "sframe-common.js": "ziULrim1w7Kc9GKWTKRsCSpZqSXQ59ySEb8NLsNUmMU=", "sframe-messenger-inner.js": "sSTXnVcoWGP6hBcr7AJuZKNKITmFcM0gCatxE9dNens=", "sframe-protocol.js": "iFMprfMy15JinzSRJUjpqm3CvSG+2cC9ir3ilYNmDIE=", - "sframe-sboot.js": "UlBPtJixJa5hY7c/kEpBhVA71G/yAeFDgkTwLwv/KsE=", + "sframe-sboot.js": "nxZScs/9Qu/cRsrGjX4ssS64Zmrw8qsJp2iJBSJDkhQ=", "test.js": "d4hw/7nv2CWZf6w2x0IKa0D7yrVOSXHhuJ+mQ0fsJ7Y=", "text-cursor.js": "2cuibOkrE7s6u2A5hMfzrjXTJXgcnckEQ3S20i+KnS4=", "themes.js": "PQJN9gLLOs65QXgxjwKpKDARsXLE6v0W0rHVocH+OCw=", "tippy": { "tippy.min.js": "OMV+lCXCmrLhNTmmyuO9FUzBlEXAALQpmIa6EQLOY3Y=" }, - "toolbar3.js": "3HNRONcf0ZfEUE6juZ7kInQJvmN+Wx72HOqU53BehcY=", + "toolbar3.js": "al6swIDoA39hDyFd4KH/9+abJ1+/ScZPWeKQKoaztnE=", "treesome.js": "x57Ug7H7FD2CDFE5BYB9YcFdID3Q+4wFH8xWpaqB/Dc=", "userObject.js": "eezGdJmIHzKMxR5bo1olImnq5nU8+p7N2t1S+U81nr8=", "visible.js": "4l/0CA1YKcVmA3Xg7Pa8ULTjdepUGzoGQjlRN0q1PY8=", @@ -3883,7 +3907,7 @@ defineManifest({ }, "contacts": { "inner.js": "T38ySYCpNUDTkWyvpaVrJg92yAr+XoWr+56QA3MdTng=", - "main.js": "yAsq12f/yAqf0/3jr4okDhRZHjejqTJ9qlzF0vsGchs=", + "main.js": "LPo/t2n3Cu28e+KP4E1eTOUyr7gIBMK02Kv67r/fYlc=", "messenger-ui.js": "1POCVi3RUkSx7uONlivkN3cqZXWoif0dSu9phUKhkmY=" }, "customize": { @@ -3891,13 +3915,13 @@ defineManifest({ "ckeditor-config.js": "Ypowv6YW2pjfsWPCaZf3XuxiFUUbv1b61hD+yjgaq5Y=", "credential.js": "E/xwRxY1m5DBRHoq6TzracJ4H7sue2rBq1clBgvukYg=", "delta-words.js": "PyVJqoZ6G1qSurMf4dSmKBFx0t/rII+pTzedXl6FCbA=", - "four-oh-four.js": "qPc8/IrfDDpP7NG16TAXT3nOWcBl606ZZ4oZGUWyGSI=", + "four-oh-four.js": "cKUiIvXzFucEXKChFn9pkhF6yp8fMmKdpTO5j6vIUnc=", "loading.js": "wvxuuHKdw7AvU+q1Kt4WDJCZ2N3LHvyGB0LCXilmOKY=", "login.js": "oHI88PerEhnqbaWUdodkapeN89wunfU80zw0F1NfezI=", "main.js": "aLprowHBsWNDyKs4UKM6H23h3GHjLCMjNTIPJY28zyg=", - "manifest.js": "MprKJ2jlbKG2AcGCLYOzfwMyEoYMCYjQGwOam1ahNMQ=", + "manifest.js": "B7l1emEVp9TwNDSDNfJftGXPTeOSZLpHUHINvaSGYg0=", "messages.js": "LD+fuDq/d+3MOcPoE/jQGW2yveHvZdlU6Z7u5ecnr58=", - "pages.js": "nVxihrFxZND37sskQwv91MIA4daozrZrC9lyae2DlFU=", + "pages.js": "ZfXlM+r8Gwfb2PLHFNhYBSLiiqUHLhLllXuu3+e0KOI=", "template.js": "Utai2Frdot+RcEMOXwHNO2KCJL/zCw/6QwZKZ7LSLrs=", "translations": { "messages.de.js": "9+NygTQeCor1w3a8tiwshsrFvh3KpZ8yE+jgt4SNwwQ=", @@ -3913,17 +3937,17 @@ defineManifest({ }, "debug": { "colors.js": "W9EQ2XH4UkJYY5WMh5zURPgyaPCbemBtzSREziMbU28=", - "inner.js": "H4eLFA27MRKWprB5TJMJdY6tT0xQ4vbZmZCbeIr3MO0=", - "main.js": "bSs5e/SRIp4IBFEVXaVUgdQ9XK9n+kTjN7sGe9AVmko=" + "inner.js": "61r3mJToUFBLOTT74WeBsit4MJv2FDyw/AuqJMU1lFE=", + "main.js": "hp6sIZmmYe2dEI3zimSSO6xbfEmlQpX1HlVjj97e+ck=" }, "drive": { "inner.js": "Awi882kSSlwnEM5To2XTo7wRpk8AyV6JmmKjrF1kvIY=", - "main.js": "LtNaG7OlNLdTivfUPKhzcs5eao6MIJEjEz8vzPC5hKk=", + "main.js": "CZokj5AjtlecgW4Ogh5I+viChCjscIGPHmsQmsUL/f8=", "tests.js": "vKSqjsJS8e93XpXb/4PeaA5ROkOvrZUrXY7g+OwvU2o=" }, "examples": { "json": { - "main.js": "cCE4Noc0t/2kd61X/XzybjUvIxYYw79JTMY2Hgl9mGI=" + "main.js": "w4jesWHuKTQRcC5VGbGI2UWwkaiThF6KAP6sSkAziwE=" }, "pin": { "main.js": "y2WlF9Ic3SNctKzMfhXeiTUpsJRZYluBiHm+fKytMNA=" @@ -3932,17 +3956,17 @@ defineManifest({ "main.js": "5BIIJJq9MQSOEDvsEm3u++tB1da9XvNHAqIgACYmfzo=" }, "render": { - "main.js": "MBrXoY3OG0Q1Z9hta7CSPkCzFCXmMIxSap80YcaZ+ME=" + "main.js": "OOHVr8PIUlWFMJ+8nCzZMmRwpg6udm2GUk6LQmEp/CU=" } }, "file": { "file-crypto.js": "xyLbJh5jDuqnOTMD8SsZrTsKhfj+U2rmHTBHeA3WlaA=", "inner.js": "xmF809fuQA6RUhD/U/ucKfXFyYm5mI1zRv1/9OZWMb0=", - "main.js": "M+286VTcTcGbPmHHiK/Voe/tTGnCAkr6PP2u6AD/NUE=" + "main.js": "RmM0zgrtXl407Pp1yywoaqrZC8Wxn0CJ+Un8MM1bt9I=" }, "filepicker": { "inner.js": "DbkMOed+bJlkyDwvcYE/kROM4omrT/wKdWv5er7Xfh0=", - "main.js": "wE05p3lxpupnHG5fzQoqPhdKq4yfNa49gsYEGxpcQpg=" + "main.js": "DXQC3pO8Z8m2Q00G1HHsAb5JDNuDTcyMQsZSodeAMuk=" }, "invite": { "main.js": "yNLo3EO1HV0GlMKJJaeb0UWi+tjWVPfdNqJIuwO7j3w=" @@ -3962,27 +3986,27 @@ defineManifest({ "media-tag.js": "+rntZvt6AC4tfTxYRS4cKUriOxAdPDjGhToPMK2rN70=" }, "pad": { - "inner.js": "fmuo9ty199cM+xAQkcVA7gQpDpAn6tgyAPXuI3EPN4Y=", + "inner.js": "3RPVrpcNZuw3Q6fYcQhMKOpVQ8Mkfxr2yL6tn3j8hcQ=", "links.js": "PeMbF9vRBf6g/3CMTyj7gjCMao2yooXzVj0m2gTzndo=", "mediatag-plugin-dialog.js": "MmLsOmMiafbcLkgobaqV1sEBGhNPQvLya6RvYdE9zC4=", "mediatag-plugin.js": "XcIepE2pWsB4HQwthADcXKpiamHrXsaycGZn1P4g3uc=", - "wysiwygarea-plugin.js": "AtP6xHVHoBZpa1sI/6jR4e8PVDH15+j4ht0dKcvxYus=" + "wysiwygarea-plugin.js": "nleYxCY8CtVXV0mQo4UuJPJeEwipVAwlAwzRNAkY9jY=" }, "poll": { "inner.js": "hnPTIvpkA3O1P+UGiSIewzTiule/4keM/ubYZT9ypnw=", - "main.js": "qspnT4VgIYHoTTlFbRvuoJibwfn7JdNIPPS60G0yxMI=", + "main.js": "FOr+VHy1pN5L4LsoJB2JRpfb7x+JIiJ3S6ioCmDn8X0=", "render.js": "4mOIkRQRH8gT2tN3cqKsWyiyEyEPejLPtNvKVJuX2hY=" }, "profile": { "inner.js": "Wr3fVDk2a/Ztw4tM6IEbLAGJ33xddDAHmSLaZ3XcCYw=", - "main.js": "X42NqY6eipBH3puJgEkcDqK+ddDEV83pkQ20VVPIvXg=" + "main.js": "oFJmRGvOsVuibB+gSUWFhoJu/ALudhXnTFN9knZq+U8=" }, "register": { "main.js": "TkDhRIu07w93V6U1yWEjVYlYyMaNNcI6j4hu+QoyL6M=" }, "settings": { - "inner.js": "o+10fwJPqa/XojRH6Qfm/p+g+RaTby5WS/RTOH+jntc=", - "main.js": "4T+in3lYWm/HMwAFJD/7Ls8K3GKVoO40wbRAioUmwCk=" + "inner.js": "vUKhdz28oVxJQpBtVANMEvT1IirrJ+ZKo6yLvGXNzbg=", + "main.js": "Kl8rTPbM7eEKgadz4EZLzxV3k/zUpAeYPjwyaiA1JmI=" }, "slide": { "inner.js": "kotgVcmkTr+DfOVHGpuh5J4Zq1HWTYwyPT+KNANJaL0=", @@ -3990,7 +4014,7 @@ defineManifest({ }, "todo": { "inner.js": "XW3EmsOZHGL9w2xIPF7iZBHvRI3IYdLHnQeD6NZiuS4=", - "main.js": "zZN1Xj7SVrS24LDj+uQm1/DyMhxNpktLd43c2DoOzvk=", + "main.js": "RhR0BzD3MGSe5nUqRMFenRCGAlYG1o7Bz34gleJ1fV4=", "todo.js": "TQO9Z1QENMYE6qcX1cx2xHXqFit8GhFJ+UwwKllCGvY=" }, "user": { @@ -3998,12 +4022,12 @@ defineManifest({ }, "whiteboard": { "colors.js": "W9EQ2XH4UkJYY5WMh5zURPgyaPCbemBtzSREziMbU28=", - "inner.js": "G1qoYafEYQp/LZT0SazgV+Yu4zxrMgpLlONCm6R4lV0=", - "main.js": "t4pWkUIbwP1jLcNPxkl2YxvyvBjvtjnZoQ+69azt0YA=" + "inner.js": "zlXCzaIdDSU0Nj9o9MFAzkB5lFZnP8COa06QGTTogr8=", + "main.js": "0bBJsDnc1DUVgySEEOaaXCrumZ0ZtHfHcPyqevc3rf8=" }, "worker": { "inner.js": "EYAfsowm8FwpAIH+jvHOSq4oJY8cKVEd5aITL6laTkc=", - "main.js": "w1nL+SEtY6XHUKSkFwuCdLqCLirkeSVQRnDli3Pde60=", + "main.js": "JP41QsWgW8UQycfTlyfOzIHcQaP0OLxu43mnv8uqTRI=", "messages.js": "Ts3t8tLymTSzR9xSx1/ewkJ7z7ilsh2OwiBQwsTtmM8=", "todo.js": "iqa+cinRf8+8K49jGjd+hRmbT/S7wzKWePlmvTPV8Kw=", "worker.js": "47EmUnfRV1jeroOkWXJRS2MRbGW6Y24L84tvsKuZ0eI=" diff --git a/customize.dist/pages.js b/customize.dist/pages.js index 1cd3d5f7c..70c215c58 100644 --- a/customize.dist/pages.js +++ b/customize.dist/pages.js @@ -1,5 +1,5 @@ define([ - '/api/config', + '/common/config.js', '/common/hyperscript.js', '/common/common-language.js', '/customize/messages.js', diff --git a/customize.dist/version.txt b/customize.dist/version.txt index de75b1841..a1c7af47c 100644 --- a/customize.dist/version.txt +++ b/customize.dist/version.txt @@ -1 +1 @@ -95NPUtLS1528Uillt1vHvbZaQZeNOhVohjqBl908PIsE/nqX6zsgRxNnHzO05OmqvtSljScpJvNyNWXGiT3qC1syMiwiRzFLd2FKWVVFRHNBMVNELzZXdDR6MGxhc2tLekl3Z3FnczVjWUgwQ1cvbz0iXQ== \ No newline at end of file +rGz6GRz7uY30l3H80Rf2YyuNr7lY4/GARF/oz+yLnME/0H00AxxoHZkQ4RUQiCVjywUBYfggz08hK1uch0VlAls3MywibnUxZWlzUGhRQ09WLzRuOVR3Y2U4VWdHWTRCSHlWNmVxVW05elhlQXFVND0iXQ== \ No newline at end of file diff --git a/gen-manifest.js b/gen-manifest.js index e05c901f8..977bf8145 100644 --- a/gen-manifest.js +++ b/gen-manifest.js @@ -5,6 +5,7 @@ const nThen = require('nthen'); const Crypto = require('crypto'); const Nacl = require('tweetnacl'); const Sortify = require('json.sortify'); +const Saferphore = require('saferphore'); //const SigKey = require('~/.cryptpad_signing_key.json'); const KEY_FILE = process.env.HOME + '/.cryptpad_signing_key.json'; @@ -23,6 +24,36 @@ const nameMapper = (name) => { const PUBLIC_KEY = "MYaWgwAcOHIp3sZFGXeWsQX3u7U8PZrqIDaM2jNhXWY="; +const sema = Saferphore.create(20); +const forAllFiles = (dirs, onFile, onDone) => { + nThen((w) => { + const recurse = (dir) => { + sema.take(w((returnAfter) => { + Fs.readdir(dir, returnAfter(w((err, ret) => { + if (err) { throw err; } + ret.forEach((_f) => { + const f = dir + '/' + _f; + sema.take((returnAfter) => { + Fs.stat(f, returnAfter(w((err, stat) => { + if (err) { throw err; } + if (stat.isDirectory()) { + //console.log('DIR ', f); + recurse(f); + } else { + onFile(f); + } + }))); + }); + }); + }))); + })); + }; + dirs.forEach((dir) => { recurse(dir); }); + }).nThen(() => { + onDone(); + }); +}; + const validate = (cb) => { const key = Nacl.util.decodeBase64(PUBLIC_KEY); Fs.readFile(VERSION_FILE, 'utf8', (err, ret) => { @@ -33,44 +64,58 @@ const validate = (cb) => { }); }; +const updateHtml = (fileHashes, done) => { + nThen((w) => { + forAllFiles(['./www'], (file) => { + sema.take((returnAfter) => { + Fs.readFile(file, 'utf8', w((err, ret) => { + if (err) { throw err; } + ret = ret.replace(/(.+?)/, (all, x, y) => { + let main = x; + if (x.indexOf('/')) { main = file.replace(/\/[^/]*$/, '/' + x).replace(/\.\/www/, ''); } + main = main.replace(/\.\/www/, ''); + const hash = fileHashes['./www/common/sboot.js']; + if (!hash) { throw new Error("could not find hash of ./www/common/sboot.js"); } + return ''; + }); + Fs.writeFile(file, 'utf8', ret, returnAfter(w((err) => { + if (err) { throw err; } + }))); + })); + }); + }, w()); + }).nThen(() => { + done(); + }); +}; + +const hashFile = (file, out, done) => { + sema.take((returnAfter) => { + Fs.readFile(file, returnAfter((err, ret) => { + if (err) { throw err; } + out[file] = Crypto.createHash('sha256').update(ret).digest('base64'); + if (done) { done(); } + })); + }); +}; + const release = () => { const key = Nacl.sign.keyPair.fromSeed(new Buffer(require(KEY_FILE).seed, 'hex')); - const files = []; const fileHashes = {}; let manifestHash; let lastVersion = 0; nThen((w) => { - const recurse = (dir) => { - Fs.readdir(dir, w((err, ret) => { - if (err) { throw err; } - ret.forEach((_f) => { - const f = dir + '/' + _f; - Fs.stat(f, w((err, stat) => { - if (err) { throw err; } - if (stat.isDirectory()) { - //console.log('DIR ', f); - recurse(f); - } else if (/\.js$/.test(f)) { - //console.log('FILE', f); - files.push(f); - } - })); - }); - })); - }; - recurse('./www'); - recurse('./customize.dist'); + forAllFiles(['./www', './customize.dist'], (file) => { + if (/\.js$/.test(file)) { hashFile(file, fileHashes, w()); } + }, w()); }).nThen((w) => { - let nt = nThen; - files.forEach((f) => { - nt = nt((w) => { - Fs.readFile(f, w((err, ret) => { - if (err) { throw err; } - fileHashes[f] = Crypto.createHash('sha256').update(ret).digest('base64'); - })); - }).nThen; - }); - nt(w()); + updateHtml(fileHashes, w()); + }).nThen((w) => { + forAllFiles(['./www', './customize.dist'], (file) => { + if (/\.js$/.test(file)) { hashFile(file, fileHashes, w()); } + }, w()); }).nThen((w) => { const manifest = { files: {} }; Object.keys(fileHashes).forEach((k) => { diff --git a/www/assert/index.html b/www/assert/index.html index eb0bd659f..d6b956f17 100644 --- a/www/assert/index.html +++ b/www/assert/index.html @@ -3,7 +3,7 @@ - +