Implement stronger content-security-policy except in /pad/ which does not allow it.
Implement a "loader" which allows for applying a version number to everything. Added a cache control for anything which has a version.
This commit is contained in:
parent
9800f036c5
commit
91eda5fa83
@ -14,24 +14,35 @@ module.exports = {
|
|||||||
* Examples are provided below
|
* Examples are provided below
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
httpHeaders: {
|
httpHeaders: {
|
||||||
"Content-Security-Policy": [
|
|
||||||
"default-src 'none'",
|
|
||||||
"style-src 'unsafe-inline' 'self'",
|
|
||||||
"script-src 'self' 'unsafe-eval' 'unsafe-inline'",
|
|
||||||
"child-src 'self' cryptpad.fr *.cryptpad.fr",
|
|
||||||
"font-src 'self'",
|
|
||||||
"connect-src 'self' wss://cryptpad.fr",
|
|
||||||
// data: is used by codemirror, (insecure remote) images are included by
|
|
||||||
// users of the wysiwyg who embed photos in their pads
|
|
||||||
"img-src data: *",
|
|
||||||
].join('; '),
|
|
||||||
|
|
||||||
"X-XSS-Protection": "1; mode=block",
|
"X-XSS-Protection": "1; mode=block",
|
||||||
"X-Content-Type-Options": "nosniff",
|
"X-Content-Type-Options": "nosniff",
|
||||||
// 'X-Frame-Options': 'SAMEORIGIN',
|
// 'X-Frame-Options': 'SAMEORIGIN',
|
||||||
},*/
|
},
|
||||||
|
|
||||||
|
contentSecurity: [
|
||||||
|
"default-src 'none'",
|
||||||
|
"style-src 'unsafe-inline' 'self'",
|
||||||
|
"script-src 'self'",
|
||||||
|
"child-src 'self' cryptpad.fr *.cryptpad.fr",
|
||||||
|
"font-src 'self'",
|
||||||
|
"connect-src 'self' wss://cryptpad.fr",
|
||||||
|
// data: is used by codemirror
|
||||||
|
"img-src 'self' data:",
|
||||||
|
].join('; '),
|
||||||
|
|
||||||
|
// CKEditor requires significantly more lax content security policy in order to function.
|
||||||
|
padContentSecurity: [
|
||||||
|
"default-src 'none'",
|
||||||
|
"style-src 'unsafe-inline' 'self'",
|
||||||
|
// Unsafe inline, unsafe-eval are needed for ckeditor :(
|
||||||
|
"script-src 'self' 'unsafe-eval' 'unsafe-inline'",
|
||||||
|
"child-src 'self' cryptpad.fr *.cryptpad.fr",
|
||||||
|
"font-src 'self'",
|
||||||
|
"connect-src 'self' wss://cryptpad.fr",
|
||||||
|
// (insecure remote) images are included by users of the wysiwyg who embed photos in their pads
|
||||||
|
"img-src *",
|
||||||
|
].join('; '),
|
||||||
|
|
||||||
httpPort: 3000,
|
httpPort: 3000,
|
||||||
|
|
||||||
@ -51,7 +62,7 @@ module.exports = {
|
|||||||
//websocketPort: 3000,
|
//websocketPort: 3000,
|
||||||
|
|
||||||
/* if you want to run a different version of cryptpad but using the same websocket
|
/* if you want to run a different version of cryptpad but using the same websocket
|
||||||
* server, you should use the other server port as websocketPort and disable
|
* server, you should use the other server port as websocketPort and disable
|
||||||
* the websockets on that server
|
* the websockets on that server
|
||||||
*/
|
*/
|
||||||
//useExternalWebsocket: false,
|
//useExternalWebsocket: false,
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="cp">
|
<html class="cp">
|
||||||
|
<!-- If this file is not called customize.dist/src/template.html, it is generated -->
|
||||||
<head>
|
<head>
|
||||||
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
@ -9,16 +10,8 @@
|
|||||||
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
|
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
|
||||||
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
||||||
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
||||||
<script data-main="/customize/main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="/customize/main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<script src="/bower_components/requirejs/require.js"></script>
|
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body class="html">
|
<body class="html">
|
||||||
<div id="cryptpadTopBar">
|
<div id="cryptpadTopBar">
|
||||||
@ -126,4 +119,3 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="cp">
|
<html class="cp">
|
||||||
|
<!-- If this file is not called customize.dist/src/template.html, it is generated -->
|
||||||
<head>
|
<head>
|
||||||
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
@ -9,16 +10,8 @@
|
|||||||
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
|
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
|
||||||
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
||||||
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
||||||
<script data-main="/customize/main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="/customize/main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<script src="/bower_components/requirejs/require.js"></script>
|
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body class="html">
|
<body class="html">
|
||||||
<div id="cryptpadTopBar">
|
<div id="cryptpadTopBar">
|
||||||
@ -123,4 +116,3 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="cp">
|
<html class="cp">
|
||||||
|
<!-- If this file is not called customize.dist/src/template.html, it is generated -->
|
||||||
<head>
|
<head>
|
||||||
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
@ -9,16 +10,8 @@
|
|||||||
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
|
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
|
||||||
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
||||||
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
||||||
<script data-main="/customize/main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="/customize/main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<script src="/bower_components/requirejs/require.js"></script>
|
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body class="html">
|
<body class="html">
|
||||||
<div id="cryptpadTopBar">
|
<div id="cryptpadTopBar">
|
||||||
@ -245,4 +238,3 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="cp">
|
<html class="cp">
|
||||||
|
<!-- If this file is not called customize.dist/src/template.html, it is generated -->
|
||||||
<head>
|
<head>
|
||||||
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
@ -9,16 +10,8 @@
|
|||||||
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
|
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
|
||||||
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
||||||
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
||||||
<script data-main="/customize/main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="/customize/main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<script src="/bower_components/requirejs/require.js"></script>
|
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body class="html">
|
<body class="html">
|
||||||
<div id="cryptpadTopBar">
|
<div id="cryptpadTopBar">
|
||||||
@ -144,4 +137,3 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,2 @@
|
|||||||
<link rel="stylesheet" type="text/css" href="main.css" />
|
<link rel="stylesheet" type="text/css" href="main.css" />
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
|
|
||||||
|
|||||||
@ -1,2 +1 @@
|
|||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
|
||||||
<div id="container"></div>
|
<div id="container"></div>
|
||||||
|
|||||||
@ -1,2 +1 @@
|
|||||||
<script data-main="/customize/main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="/customize/main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="cp">
|
<html class="cp">
|
||||||
|
<!-- If this file is not called customize.dist/src/template.html, it is generated -->
|
||||||
<head>
|
<head>
|
||||||
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
@ -10,13 +11,6 @@
|
|||||||
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
||||||
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
||||||
{{script}}
|
{{script}}
|
||||||
<script src="/bower_components/requirejs/require.js"></script>
|
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body class="html">
|
<body class="html">
|
||||||
{{topbar}}
|
{{topbar}}
|
||||||
@ -30,4 +24,3 @@
|
|||||||
{{footer}}
|
{{footer}}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="cp">
|
<html class="cp">
|
||||||
|
<!-- If this file is not called customize.dist/src/template.html, it is generated -->
|
||||||
<head>
|
<head>
|
||||||
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
@ -9,16 +10,8 @@
|
|||||||
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
|
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
|
||||||
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
||||||
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
||||||
<script data-main="/customize/main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="/customize/main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<script src="/bower_components/requirejs/require.js"></script>
|
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body class="html">
|
<body class="html">
|
||||||
<div id="cryptpadTopBar">
|
<div id="cryptpadTopBar">
|
||||||
@ -127,4 +120,3 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
24
server.js
24
server.js
@ -7,6 +7,7 @@ var Https = require('https');
|
|||||||
var Fs = require('fs');
|
var Fs = require('fs');
|
||||||
var WebSocketServer = require('ws').Server;
|
var WebSocketServer = require('ws').Server;
|
||||||
var NetfluxSrv = require('./NetfluxWebsocketSrv');
|
var NetfluxSrv = require('./NetfluxWebsocketSrv');
|
||||||
|
var Package = require('./package.json');
|
||||||
|
|
||||||
var config = require('./config');
|
var config = require('./config');
|
||||||
var websocketPort = config.websocketPort || config.httpPort;
|
var websocketPort = config.websocketPort || config.httpPort;
|
||||||
@ -19,20 +20,31 @@ var app = Express();
|
|||||||
|
|
||||||
var httpsOpts;
|
var httpsOpts;
|
||||||
|
|
||||||
|
const clone = (x) => (JSON.parse(JSON.stringify(x)));
|
||||||
|
|
||||||
var setHeaders = (function () {
|
var setHeaders = (function () {
|
||||||
if (typeof(config.httpHeaders) !== 'object') { return function () {}; }
|
if (typeof(config.httpHeaders) !== 'object') { return function () {}; }
|
||||||
|
|
||||||
var headers = JSON.parse(JSON.stringify(config.httpHeaders));
|
const headers = clone(config.httpHeaders);
|
||||||
|
if (config.contentSecurity) {
|
||||||
|
headers['Content-Security-Policy'] = clone(config.contentSecurity);
|
||||||
|
}
|
||||||
|
const padHeaders = clone(headers);
|
||||||
|
if (config.padContentSecurity) {
|
||||||
|
padHeaders['Content-Security-Policy'] = clone(config.padContentSecurity);
|
||||||
|
}
|
||||||
if (Object.keys(headers).length) {
|
if (Object.keys(headers).length) {
|
||||||
return function (res) {
|
return function (req, res) {
|
||||||
for (var header in headers) { res.setHeader(header, headers[header]); }
|
const h = /^\/pad\/inner\.html.*/.test(req.url) ? padHeaders : headers;
|
||||||
|
for (let header in h) { res.setHeader(header, h[header]); }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return function () {};
|
return function () {};
|
||||||
}());
|
}());
|
||||||
|
|
||||||
app.use(function (req, res, next) {
|
app.use(function (req, res, next) {
|
||||||
setHeaders(res);
|
setHeaders(req, res);
|
||||||
|
if (/[\?\&]ver=[^\/]+$/.test(req.url)) { res.setHeader("Cache-Control", "max-age=31536000"); }
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -82,6 +94,10 @@ app.get('/api/config', function(req, res){
|
|||||||
var host = req.headers.host.replace(/\:[0-9]+/, '');
|
var host = req.headers.host.replace(/\:[0-9]+/, '');
|
||||||
res.setHeader('Content-Type', 'text/javascript');
|
res.setHeader('Content-Type', 'text/javascript');
|
||||||
res.send('define(' + JSON.stringify({
|
res.send('define(' + JSON.stringify({
|
||||||
|
requireConf: {
|
||||||
|
waitSeconds: 60,
|
||||||
|
urlArgs: 'ver=' + Package.version
|
||||||
|
},
|
||||||
websocketPath: config.useExternalWebsocket ? undefined : config.websocketPath,
|
websocketPath: config.useExternalWebsocket ? undefined : config.websocketPath,
|
||||||
websocketURL:'ws' + ((useSecureWebsockets) ? 's' : '') + '://' + host + ':' +
|
websocketURL:'ws' + ((useSecureWebsockets) ? 's' : '') + '://' + host + ':' +
|
||||||
websocketPort + '/cryptpad_websocket',
|
websocketPort + '/cryptpad_websocket',
|
||||||
|
|||||||
@ -4,13 +4,7 @@
|
|||||||
<title>CryptPad</title>
|
<title>CryptPad</title>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<link rel="icon" type="image/png"
|
<link rel="icon" type="image/png"
|
||||||
href="/customize/main-favicon.png"
|
href="/customize/main-favicon.png"
|
||||||
|
|
||||||
@ -49,11 +43,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="iframe-container">
|
<div id="iframe-container">
|
||||||
<iframe id="pad-iframe"></iframe>
|
<iframe id="pad-iframe"></iframe><script src="/common/noscriptfix.js"></script>
|
||||||
<script>
|
|
||||||
document.getElementById('pad-iframe').setAttribute('src', 'inner.html?' + new Date().getTime());
|
|
||||||
</script>
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
5
www/common/boot.js
Normal file
5
www/common/boot.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
// Stage 0, this gets cached which means we can't change it. boot2.js is changable.
|
||||||
|
define(['/api/config?cb=' + (+new Date()).toString(16)], function (Config) {
|
||||||
|
if (Config.requireConf) { require.config(Config.requireConf); }
|
||||||
|
require(['/common/boot2.js']);
|
||||||
|
});
|
||||||
6
www/common/boot2.js
Normal file
6
www/common/boot2.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// This is stage 1, it can be changed but you must bump the version of the project.
|
||||||
|
define([], function () {
|
||||||
|
// fix up locations so that relative urls work.
|
||||||
|
require.config({ baseUrl: window.location.pathname });
|
||||||
|
require([document.querySelector('script[data-bootload]').getAttribute('data-bootload')]);
|
||||||
|
});
|
||||||
@ -1,5 +1,5 @@
|
|||||||
define([
|
define([
|
||||||
'/api/config?cb=' + Math.random().toString(16).slice(2),
|
'/api/config',
|
||||||
'/customize/messages.js?app=' + window.location.pathname.split('/').filter(function (x) { return x; }).join('.'),
|
'/customize/messages.js?app=' + window.location.pathname.split('/').filter(function (x) { return x; }).join('.'),
|
||||||
'/customize/fsStore.js',
|
'/customize/fsStore.js',
|
||||||
'/bower_components/chainpad-crypto/crypto.js?v=0.1.5',
|
'/bower_components/chainpad-crypto/crypto.js?v=0.1.5',
|
||||||
|
|||||||
3
www/common/noscriptfix.js
Normal file
3
www/common/noscriptfix.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
// Fix for noscript bugs when caching iframe content.
|
||||||
|
// Caution, this file will get cached, you must change the name if you change it.
|
||||||
|
document.getElementById('pad-iframe').setAttribute('src', 'inner.html?cb=' + (+new Date()));
|
||||||
@ -10,13 +10,7 @@
|
|||||||
data-alt-favicon="/customize/alt-favicon.png"
|
data-alt-favicon="/customize/alt-favicon.png"
|
||||||
id="favicon" />
|
id="favicon" />
|
||||||
<link rel="stylesheet" href="/customize/main.css" />
|
<link rel="stylesheet" href="/customize/main.css" />
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<style>
|
<style>
|
||||||
html, body {
|
html, body {
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
@ -38,10 +32,6 @@
|
|||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<iframe id="pad-iframe"></iframe>
|
<iframe id="pad-iframe"></iframe><script src="/common/noscriptfix.js"></script>
|
||||||
<script>
|
|
||||||
document.getElementById('pad-iframe').setAttribute('src', 'inner.html?' + new Date().getTime());
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,6 @@ define([
|
|||||||
|
|
||||||
// Use `$(function () {});` to make sure the html is loaded before doing anything else
|
// Use `$(function () {});` to make sure the html is loaded before doing anything else
|
||||||
$(function () {
|
$(function () {
|
||||||
|
|
||||||
var $iframe = $('#pad-iframe').contents();
|
var $iframe = $('#pad-iframe').contents();
|
||||||
var ifrw = $('#pad-iframe')[0].contentWindow;
|
var ifrw = $('#pad-iframe')[0].contentWindow;
|
||||||
|
|
||||||
@ -2116,6 +2115,5 @@ define([
|
|||||||
onConnectError();
|
onConnectError();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -10,12 +10,7 @@
|
|||||||
data-alt-favicon="/customize/alt-favicon.png"
|
data-alt-favicon="/customize/alt-favicon.png"
|
||||||
id="favicon" />
|
id="favicon" />
|
||||||
<link rel="stylesheet" href="/customize/main.css" />
|
<link rel="stylesheet" href="/customize/main.css" />
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<style>
|
<style>
|
||||||
html, body {
|
html, body {
|
||||||
width: 100;
|
width: 100;
|
||||||
@ -100,4 +95,3 @@
|
|||||||
<div id="lists"></div>
|
<div id="lists"></div>
|
||||||
<span id="create-list">Add List</span>
|
<span id="create-list">Add List</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<style>
|
<style>
|
||||||
html, body{
|
html, body{
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
@ -59,7 +59,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<canvas id="canvas" width="600" height="600" ></canvas>
|
<canvas id="canvas" width="600" height="600" ></canvas>
|
||||||
|
|
||||||
<div id="copy">
|
<div id="copy">
|
||||||
<h2>Welcome to CryptCanvas!</h2>
|
<h2>Welcome to CryptCanvas!</h2>
|
||||||
@ -76,4 +76,3 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<style>
|
<style>
|
||||||
html, body{
|
html, body{
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
@ -41,7 +41,7 @@
|
|||||||
<body>
|
<body>
|
||||||
|
|
||||||
<form>
|
<form>
|
||||||
<input type="radio" name="radio" value="one" checked>One
|
<input type="radio" name="radio" value="one" checked>One
|
||||||
<input type="radio" name="radio" value="two">Two
|
<input type="radio" name="radio" value="two">Two
|
||||||
<input type="radio" name="radio" value="three">Three<br>
|
<input type="radio" name="radio" value="three">Three<br>
|
||||||
|
|
||||||
@ -76,4 +76,3 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<style>
|
<style>
|
||||||
html, body{
|
html, body{
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
@ -75,4 +75,3 @@
|
|||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<style>
|
<style>
|
||||||
html, body{
|
html, body{
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
@ -48,4 +48,3 @@
|
|||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -2,12 +2,7 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<link rel="icon" type="image/png"
|
<link rel="icon" type="image/png"
|
||||||
href="/customize/main-favicon.png"
|
href="/customize/main-favicon.png"
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<link rel="stylesheet" href="/common/render-sd.css" />
|
<link rel="stylesheet" href="/common/render-sd.css" />
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<style>
|
<style>
|
||||||
html, body {
|
html, body {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@ -38,5 +38,5 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="target">
|
<div id="target">
|
||||||
<div id="inner"></div>
|
<div id="inner"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -3,18 +3,18 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<style></style>
|
<style></style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<a id="edit" href="#" target="_blank">Edit this document's style</a>
|
<a id="edit" href="#" target="_blank">Edit this document's style</a>
|
||||||
|
|
||||||
<h1>HTML Ipsum Presents</h1>
|
<h1>HTML Ipsum Presents</h1>
|
||||||
|
|
||||||
<p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>
|
<p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href="#">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>
|
||||||
|
|
||||||
<h2>Header Level 2</h2>
|
<h2>Header Level 2</h2>
|
||||||
|
|
||||||
<ol>
|
<ol>
|
||||||
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
|
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
|
||||||
<li>Aliquam tincidunt mauris eu risus.</li>
|
<li>Aliquam tincidunt mauris eu risus.</li>
|
||||||
@ -30,10 +30,10 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<pre><code>
|
<pre><code>
|
||||||
#header h1 a {
|
#header h1 a {
|
||||||
display: block;
|
display: block;
|
||||||
width: 300px;
|
width: 300px;
|
||||||
height: 80px;
|
height: 80px;
|
||||||
}
|
}
|
||||||
</code></pre>
|
</code></pre>
|
||||||
|
|
||||||
@ -58,4 +58,3 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<style>
|
<style>
|
||||||
html, body{
|
html, body{
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
@ -36,4 +36,3 @@
|
|||||||
<textarea></textarea>
|
<textarea></textarea>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -2,12 +2,7 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<link rel="icon" type="image/png"
|
<link rel="icon" type="image/png"
|
||||||
href="/customize/main-favicon.png"
|
href="/customize/main-favicon.png"
|
||||||
|
|
||||||
@ -31,4 +26,3 @@ pre {
|
|||||||
<h1>Upload</h1>
|
<h1>Upload</h1>
|
||||||
|
|
||||||
<input type="file">
|
<input type="file">
|
||||||
|
|
||||||
|
|||||||
@ -9,14 +9,7 @@
|
|||||||
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
|
<link rel="icon" type="image/png" href="/customize/main-favicon.png" id="favicon"/>
|
||||||
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
||||||
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<script src="/bower_components/requirejs/require.js"></script>
|
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body class="html">
|
<body class="html">
|
||||||
<div id="cryptpadTopBar">
|
<div id="cryptpadTopBar">
|
||||||
@ -77,4 +70,3 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -10,13 +10,7 @@
|
|||||||
data-alt-favicon="/customize/alt-favicon.png"
|
data-alt-favicon="/customize/alt-favicon.png"
|
||||||
id="favicon" />
|
id="favicon" />
|
||||||
<link rel="stylesheet" href="/customize/main.css" />
|
<link rel="stylesheet" href="/customize/main.css" />
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<style>
|
<style>
|
||||||
html, body {
|
html, body {
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
@ -61,10 +55,6 @@
|
|||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<iframe id="pad-iframe"></iframe>
|
<iframe id="pad-iframe"></iframe><script src="/common/noscriptfix.js"></script>
|
||||||
<script>
|
|
||||||
document.getElementById('pad-iframe').setAttribute('src', 'inner.html?' + new Date().getTime());
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -11,11 +11,7 @@
|
|||||||
id="favicon" />
|
id="favicon" />
|
||||||
<link rel="stylesheet" href="/bower_components/components-font-awesome/css/font-awesome.min.css">
|
<link rel="stylesheet" href="/bower_components/components-font-awesome/css/font-awesome.min.css">
|
||||||
<link rel="stylesheet" href="/customize/main.css" />
|
<link rel="stylesheet" href="/customize/main.css" />
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<script> require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
}); </script>
|
|
||||||
<style>
|
<style>
|
||||||
html, body {
|
html, body {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@ -5,15 +5,9 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||||
<title>Cryptpad: login</title>
|
<title>Cryptpad: login</title>
|
||||||
<link rel="stylesheet" href="/bower_components/components-font-awesome/css/font-awesome.min.css">
|
<link rel="stylesheet" href="/bower_components/components-font-awesome/css/font-awesome.min.css">
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<link rel="stylesheet" href="/customize/main.css" />
|
<link rel="stylesheet" href="/customize/main.css" />
|
||||||
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body class="html">
|
<body class="html">
|
||||||
<div id="cryptpadTopBar">
|
<div id="cryptpadTopBar">
|
||||||
@ -89,4 +83,3 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="cp">
|
<html class="cp">
|
||||||
|
<!-- If this file is not called customize.dist/src/template.html, it is generated -->
|
||||||
<head>
|
<head>
|
||||||
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
<title data-localization="main_title">Cryptpad: Zero Knowledge, Collaborative Real Time Editing</title>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
@ -10,16 +11,8 @@
|
|||||||
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
||||||
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
<link rel="stylesheet" href="/bower_components/bootstrap/dist/css/bootstrap.min.css">
|
||||||
<link rel="stylesheet" type="text/css" href="main.css" />
|
<link rel="stylesheet" type="text/css" href="main.css" />
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<script src="/bower_components/requirejs/require.js"></script>
|
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</head>
|
</head>
|
||||||
<body class="html">
|
<body class="html">
|
||||||
<div id="cryptpadTopBar">
|
<div id="cryptpadTopBar">
|
||||||
@ -68,8 +61,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<div id="mainBlock" class="hidden">
|
<div id="mainBlock" class="hidden">
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<div id="container"></div>
|
||||||
<div id="container"></div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -118,4 +110,3 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@ -3,13 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<title>CryptPad</title>
|
<title>CryptPad</title>
|
||||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
<script data-bootload="main.js" data-main="/common/boot.js" src="/bower_components/requirejs/require.js"></script>
|
||||||
<script>
|
|
||||||
require.config({
|
|
||||||
waitSeconds: 60,
|
|
||||||
urlArgs: "bust=1.1.0",
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<link rel="icon" type="image/png"
|
<link rel="icon" type="image/png"
|
||||||
href="/customize/main-favicon.png"
|
href="/customize/main-favicon.png"
|
||||||
|
|
||||||
@ -52,11 +46,7 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="iframe-container">
|
<div id="iframe-container">
|
||||||
<iframe id="pad-iframe"></iframe>
|
<iframe id="pad-iframe"></iframe><script src="/common/noscriptfix.js"></script>
|
||||||
<script>
|
|
||||||
document.getElementById('pad-iframe').setAttribute('src', 'inner.html?' + new Date().getTime());
|
|
||||||
</script>
|
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user