@@ -2,30 +2,65 @@ | |||
"title": "Spus", | |||
"base_url": "http://example.com", | |||
"port": 8081, | |||
# PostrgeSQL credentials | |||
"db": { | |||
"host": "localhost", | |||
"user": "dbuser", | |||
"password": "dbpass", | |||
"database": "spus" | |||
}, | |||
# HTTPS settings | |||
"use_https": false, | |||
"https": { | |||
"key": "", | |||
"cert": "" | |||
}, | |||
# Open Web Analytics settings | |||
"use_owa": false, | |||
"owa": { | |||
"base_url": "", | |||
"site_id": "" | |||
}, | |||
# Scrypt settings for password hashing | |||
"scrypt": { | |||
"maxtime": 1 | |||
}, | |||
# Should we minify resources? | |||
"minify": true, | |||
# Timeout in milliseconds before a session is destroyed | |||
"session_timeout": 1800000, | |||
# Various directories | |||
"dir": { | |||
"imgs": "imgs", | |||
"web": "web" | |||
}, | |||
# In debug mode, an uncaught exception will stop the program and display | |||
# a neat stack trace. | |||
"debug": false, | |||
# To invalidate cache, we add "?$n" to static resource requests | |||
# (scripts, CSS, etc.), where "$n" is an incrementing number. | |||
# `max_runs` is how big $n can be before we reset to 0. | |||
"max_runs": 9999, | |||
# Time in seconds before static content caches are invalidated | |||
"cache_max_age": 2628000, | |||
# Time in seconds before image caches are invalidated | |||
"cache_max_age_images": 2628000, | |||
# How long time it should take before anonymous images are deleted | |||
"purge_collections_timeout": "2 days", | |||
# Time in milliseconds between each time we query the database for old | |||
# anonymous pictures | |||
"purge_collections_interval": 1800000 | |||
} |
@@ -6,6 +6,7 @@ exports.html = function(src) { | |||
return minifyHtml(src, { | |||
removeComments: true, | |||
collapseWhitespace: true, | |||
minifyJS: true | |||
}); | |||
} | |||
@@ -28,6 +28,23 @@ var regexStr = | |||
var localRegex = new RegExp(regexStr); | |||
var globalRegex = new RegExp(regexStr, "g"); | |||
function getObjVal(obj, str) { | |||
var val = obj[str]; | |||
if (val !== undefined) | |||
return val; | |||
var parts = str.split("."); | |||
val = obj; | |||
for (var i = 0; i < parts.length; ++i) { | |||
val = val[parts[i]]; | |||
if (val === undefined) | |||
return undefined; | |||
} | |||
return val; | |||
} | |||
function getVal(str, env) { | |||
if (vals.env.test(str)) { | |||
var parts = str.split("#"); | |||
@@ -36,7 +53,7 @@ function getVal(str, env) { | |||
if (typeof ns === "function") | |||
return ns(parts[1]); | |||
else if (ns !== undefined) | |||
return ns[parts[1]]; | |||
return getObjVal(ns, parts[1]); | |||
else | |||
throw new Error("No: "+str); | |||
} else if (vals.string.test(str)) { |
@@ -9,7 +9,7 @@ var log = require("mlogger"); | |||
var loader = require("./lib/loader.js"); | |||
var Context = require("./lib/context.js"); | |||
var conf = JSON.parse(fs.readFileSync("conf.json")); | |||
var conf = JSON.parse(fs.readFileSync("conf.json", "utf8").replace(/^\s*#.+/gm, "")); | |||
var endpoints = { | |||
@@ -10,3 +10,5 @@ | |||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js" defer></script> | |||
<script src="/global.js?{{conf#current_run}}" defer></script> | |||
<script src="/{{env#view}}/script.js?{{conf#current_run}}" defer></script> | |||
{{conf#use_owa ? template#open-web-analytics : ''}} |
@@ -0,0 +1,17 @@ | |||
<script type="text/javascript"> | |||
//<![CDATA[ | |||
var owa_baseUrl = '{{conf#owa.base_url}}'; | |||
var owa_cmds = owa_cmds || []; | |||
owa_cmds.push(['setSiteId', '{{conf#owa.site_id}}']); | |||
owa_cmds.push(['trackPageView']); | |||
owa_cmds.push(['trackClicks']); | |||
owa_cmds.push(['trackDomStream']); | |||
(function() { | |||
var _owa = document.createElement('script'); _owa.type = 'text/javascript'; _owa.async = true; | |||
owa_baseUrl = ('https:' == document.location.protocol ? window.owa_baseSecUrl || owa_baseUrl.replace(/http:/, 'https:') : owa_baseUrl ); | |||
_owa.src = owa_baseUrl + 'modules/base/js/owa.tracker-combined-min.js'; | |||
var _owa_s = document.getElementsByTagName('script')[0]; _owa_s.parentNode.insertBefore(_owa, _owa_s); | |||
}()); | |||
//]]> | |||
</script> |