1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
/**
* Copyright 2009 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS-IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import("faststatic");
import("dispatch.{Dispatcher,PrefixMatcher,forward}");
import("etherpad.utils.*");
import("etherpad.globals.*");
function onRequest() {
var staticBase = '/static';
var opts = {cache: isProduction()};
var serveFavicon = faststatic.singleFileServer(staticBase + '/favicon.ico', opts);
var serveCrossDomain = faststatic.singleFileServer(staticBase + '/crossdomain.xml', opts);
var serveStaticDir = faststatic.directoryServer(staticBase, opts);
var serveCompressed = faststatic.compressedFileServer(opts);
var serveJs = faststatic.directoryServer(staticBase+'/js/', opts);
var serveCss = faststatic.directoryServer(staticBase+'/css/', opts);
var serveSwf = faststatic.directoryServer(staticBase+'/swf/', opts);
var serveHtml = faststatic.directoryServer(staticBase+'/html/', opts);
var serveZip = faststatic.directoryServer(staticBase+'/zip/', opts);
var disp = new Dispatcher();
disp.addLocations([
['/favicon.ico', serveFavicon],
['/robots.txt', serveRobotsTxt],
['/crossdomain.xml', serveCrossDomain],
[PrefixMatcher('/static/html/'), serveHtml],
[PrefixMatcher('/static/js/'), serveJs],
[PrefixMatcher('/static/css/'), serveCss],
[PrefixMatcher('/static/swf/'), serveSwf],
[PrefixMatcher('/static/zip/'), serveZip],
[PrefixMatcher('/static/compressed/'), serveCompressed],
[PrefixMatcher('/static/'), serveStaticDir]
]);
return disp.dispatch();
}
function serveRobotsTxt(name) {
response.neverCache();
response.setContentType('text/plain');
response.write('User-agent: *\n');
if (!isProduction()) {
response.write('Disallow: /\n');
}
response.stop();
return true;
}
|