Fixed sitemap, www redirect, renew cert
This commit is contained in:
parent
41f14a8de2
commit
dbef2208da
9 changed files with 114 additions and 149 deletions
|
@ -46,7 +46,7 @@ post_crontabs() {
|
|||
&& [ -d "/home/${CP_DOMAIN}/config/production/nginx/ssl.d/live/${CP_DOMAIN}/" ]; then
|
||||
echo -e "\n" >>/etc/crontab
|
||||
echo "# ----- ${CP_DOMAIN}_ssl --------------------------------------" >>/etc/crontab
|
||||
echo "0 23 * * * root docker run -it --rm -v /home/${CP_DOMAIN}/config/production/nginx/ssl.d:/etc/letsencrypt -v /home/${CP_DOMAIN}/config/production/nginx/letsencrypt:/var/lib/letsencrypt -v /home/${CP_DOMAIN}/config/production/nginx/cloudflare.ini:/cloudflare.ini certbot/dns-cloudflare renew --dns-cloudflare --dns-cloudflare-credentials /cloudflare.ini --quiet --post-hook \"docker exec -d nginx nginx -s reload\" >>/home/${CP_DOMAIN}/log/https_\$(date '+%d_%m_%Y').log 2>&1" >>/etc/crontab
|
||||
echo "0 23 * * * root docker run -it --rm -v /home/${CP_DOMAIN}/config/production/nginx/ssl.d:/etc/letsencrypt -v /home/${CP_DOMAIN}/config/production/nginx/letsencrypt:/var/lib/letsencrypt -v /home/${CP_DOMAIN}/config/production/nginx/cloudflare.ini:/cloudflare.ini certbot/dns-cloudflare renew --dns-cloudflare --dns-cloudflare-credentials /cloudflare.ini --quiet >>/home/${CP_DOMAIN}/log/https_\$(date '+%d_%m_%Y').log 2>&1; docker exec -d nginx nginx -s reload" >>/etc/crontab
|
||||
echo "# ----- ${CP_DOMAIN}_ssl --------------------------------------" >>/etc/crontab
|
||||
fi
|
||||
}
|
||||
|
|
|
@ -108,9 +108,10 @@ server {
|
|||
proxy_max_temp_file_size 0;
|
||||
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
|
||||
proxy_set_header Connection "";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_http_version 1.1;
|
||||
proxy_pass http://example.com;
|
||||
}
|
||||
|
@ -133,9 +134,10 @@ server {
|
|||
proxy_max_temp_file_size 0;
|
||||
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
|
||||
proxy_set_header Connection "";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_http_version 1.1;
|
||||
proxy_pass http://example.com;
|
||||
}
|
||||
|
@ -146,9 +148,10 @@ server {
|
|||
proxy_max_temp_file_size 0;
|
||||
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
|
||||
proxy_set_header Connection "";
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_http_version 1.1;
|
||||
proxy_pass http://example.com;
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<script src="/themes/default/public/admin/js/all.min.js"></script>
|
||||
|
||||
<style>
|
||||
html{height:100%;min-height:100%;margin:0;padding:0}body{position:relative;height:100%;min-height:100%;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:20px}#error-container{height:100%;min-height:100%;width:100%;background-image: url("/themes/default/public/admin/images/404.jpg");background-size:cover;} #error-box{height:100%;min-height:100%;width:380px;padding:60px 40px 40px} header h1{width:100%;float:left;font-size:80px;font-weight:700;line-height:80px;margin:5px 0} header h2{width:100%;float:left;font-size:16px;font-weight:400;margin:0} .error-content{float:left;width:100%;margin:30px 0} .breadcrumb{float:left;width:100%;margin:30px 0 0} .breadcrumb a:hover{text-decoration:underline}
|
||||
html{height:100%;min-height:100%;margin:0;padding:0}body{position:relative;height:100%;min-height:100%;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:20px}#error-container{height:100%;min-height:100%;width:100%;background-image: url("/themes/default/public/admin/images/404.jpg");background-size:cover;}#error-box{height:100%;min-height:100%;width:380px;padding:60px 40px 40px} header h1{width:100%;float:left;font-size:80px;font-weight:700;line-height:80px;margin:5px 0} header h2{width:100%;float:left;font-size:16px;font-weight:400;margin:0}.error-content{float:left;width:100%;margin:30px 0;text-align:center}.breadcrumb{float:left;width:100%;margin:30px 0 0}.breadcrumb a:hover{text-decoration:underline}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<script src="/themes/default/public/admin/js/all.min.js"></script>
|
||||
|
||||
<style>
|
||||
html{height:100%;min-height:100%;margin:0;padding:0}body{position:relative;height:100%;min-height:100%;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:20px}#error-container{height:100%;min-height:100%;width:100%;background-image: url("/themes/default/public/admin/images/404.jpg");background-size:cover;} #error-box{height:100%;min-height:100%;width:380px;padding:60px 40px 40px} header h1{width:100%;float:left;font-size:80px;font-weight:700;line-height:80px;margin:5px 0} header h2{width:100%;float:left;font-size:16px;font-weight:400;margin:0} .error-content{float:left;width:100%;margin:30px 0} .breadcrumb{float:left;width:100%;margin:30px 0 0} .breadcrumb a:hover{text-decoration:underline}
|
||||
html{height:100%;min-height:100%;margin:0;padding:0}body{position:relative;height:100%;min-height:100%;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:20px}#error-container{height:100%;min-height:100%;width:100%;background-image: url("/themes/default/public/admin/images/404.jpg");background-size:cover;}#error-box{height:100%;min-height:100%;width:380px;padding:60px 40px 40px} header h1{width:100%;float:left;font-size:80px;font-weight:700;line-height:80px;margin:5px 0} header h2{width:100%;float:left;font-size:16px;font-weight:400;margin:0}.error-content{float:left;width:100%;margin:30px 0;text-align:center}.breadcrumb{float:left;width:100%;margin:30px 0 0}.breadcrumb a:hover{text-decoration:underline}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<script src="/themes/default/public/admin/js/all.min.js"></script>
|
||||
|
||||
<style>
|
||||
html{height:100%;min-height:100%;margin:0;padding:0}body{position:relative;height:100%;min-height:100%;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:20px}#error-container{height:100%;min-height:100%;width:100%;background-image: url("/themes/default/public/admin/images/404.jpg");background-size:cover;} #error-box{height:100%;min-height:100%;width:380px;padding:60px 40px 40px} header h1{width:100%;float:left;font-size:80px;font-weight:700;line-height:80px;margin:5px 0} header h2{width:100%;float:left;font-size:16px;font-weight:400;margin:0} .error-content{float:left;width:100%;margin:30px 0} .breadcrumb{float:left;width:100%;margin:30px 0 0} .breadcrumb a:hover{text-decoration:underline}
|
||||
html{height:100%;min-height:100%;margin:0;padding:0}body{position:relative;height:100%;min-height:100%;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:20px}#error-container{height:100%;min-height:100%;width:100%;background-image: url("/themes/default/public/admin/images/404.jpg");background-size:cover;}#error-box{height:100%;min-height:100%;width:380px;padding:60px 40px 40px} header h1{width:100%;float:left;font-size:80px;font-weight:700;line-height:80px;margin:5px 0} header h2{width:100%;float:left;font-size:16px;font-weight:400;margin:0}.error-content{float:left;width:100%;margin:30px 0;text-align:center}.breadcrumb{float:left;width:100%;margin:30px 0 0}.breadcrumb a:hover{text-decoration:underline}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<script src="/themes/default/public/admin/js/all.min.js"></script>
|
||||
|
||||
<style>
|
||||
html{height:100%;min-height:100%;margin:0;padding:0}body{position:relative;height:100%;min-height:100%;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:20px}#error-container{height:100%;min-height:100%;width:100%;background-image: url("/themes/default/public/admin/images/404.jpg");background-size:cover;} #error-box{height:100%;min-height:100%;width:380px;padding:60px 40px 40px} header h1{width:100%;float:left;font-size:80px;font-weight:700;line-height:80px;margin:5px 0} header h2{width:100%;float:left;font-size:16px;font-weight:400;margin:0} .error-content{float:left;width:100%;margin:30px 0} .breadcrumb{float:left;width:100%;margin:30px 0 0} .breadcrumb a:hover{text-decoration:underline}
|
||||
html{height:100%;min-height:100%;margin:0;padding:0}body{position:relative;height:100%;min-height:100%;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:20px}#error-container{height:100%;min-height:100%;width:100%;background-image: url("/themes/default/public/admin/images/404.jpg");background-size:cover;}#error-box{height:100%;min-height:100%;width:380px;padding:60px 40px 40px} header h1{width:100%;float:left;font-size:80px;font-weight:700;line-height:80px;margin:5px 0} header h2{width:100%;float:left;font-size:16px;font-weight:400;margin:0}.error-content{float:left;width:100%;margin:30px 0;text-align:center}.breadcrumb{float:left;width:100%;margin:30px 0 0}.breadcrumb a:hover{text-decoration:underline}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
|
|
@ -30,8 +30,9 @@ module.exports = function(lookup) {
|
|||
config.random &&
|
||||
config.homepage &&
|
||||
config.subdomain &&
|
||||
config.domain === host &&
|
||||
config.domain !== config.homepage
|
||||
config.domain !== config.homepage &&
|
||||
(config.domain === host ||
|
||||
(config.subdomain !== 'www.' && 'www.' + config.domain === host))
|
||||
) {
|
||||
return res.redirect(302, '//' + config.homepage);
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ function allSitemap(options, callback) {
|
|||
var render = {};
|
||||
render.sitemaps = [];
|
||||
|
||||
var categories = CP_structure.categories('year', movies);
|
||||
var categories = CP_structure.categories('year', movies, options);
|
||||
|
||||
var y = new Date().getFullYear() + '';
|
||||
|
||||
|
@ -115,7 +115,7 @@ function allSitemap(options, callback) {
|
|||
* Getting the data to render one sitemap page.
|
||||
*
|
||||
* @param {String} type
|
||||
* @param {String} year
|
||||
* @param {number} year
|
||||
* @param {Object} options
|
||||
* @param {Callback} callback
|
||||
*/
|
||||
|
@ -132,7 +132,6 @@ function oneSitemap(type, year, options, callback) {
|
|||
: getCategories('year', function(err, render) {
|
||||
return err ? callback(err) : callback(null, render);
|
||||
});
|
||||
break;
|
||||
case config.urls.genre:
|
||||
getCategories('genre', function(err, render) {
|
||||
return err ? callback(err) : callback(null, render);
|
||||
|
@ -169,12 +168,6 @@ function oneSitemap(type, year, options, callback) {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Get types.
|
||||
*
|
||||
* @param {Callback} callback
|
||||
*/
|
||||
|
||||
function getTypes(callback) {
|
||||
var render = {};
|
||||
render.urls = [];
|
||||
|
@ -203,13 +196,6 @@ function oneSitemap(type, year, options, callback) {
|
|||
callback(null, render);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get categories.
|
||||
*
|
||||
* @param {String} category
|
||||
* @param {Callback} callback
|
||||
*/
|
||||
|
||||
function getCategories(category, callback) {
|
||||
var query = {};
|
||||
query[category] = '!_empty';
|
||||
|
@ -222,7 +208,7 @@ function oneSitemap(type, year, options, callback) {
|
|||
var render = {};
|
||||
render.urls = [];
|
||||
|
||||
var categories = CP_structure.categories(category, movies);
|
||||
var categories = CP_structure.categories(category, movies, options);
|
||||
|
||||
for (var year in categories) {
|
||||
if (categories.hasOwnProperty(year)) {
|
||||
|
@ -254,7 +240,7 @@ function oneSitemap(type, year, options, callback) {
|
|||
var render = {};
|
||||
render.urls = [];
|
||||
|
||||
CP_get.contents({}, 500, function(err, contents) {
|
||||
CP_get.contents({}, 500, 1, true, options, function(err, contents) {
|
||||
if (err) return callback(err);
|
||||
|
||||
var render = {};
|
||||
|
@ -288,45 +274,53 @@ function oneSitemap(type, year, options, callback) {
|
|||
* Get movies.
|
||||
*
|
||||
* @param {String} year
|
||||
* @param {Callback} callback
|
||||
* @param {function(*=, *=): *} callback
|
||||
*/
|
||||
|
||||
function getMovies(year, callback) {
|
||||
CP_get.movies({ year: year }, 2525, function(err, movies) {
|
||||
if (options.debug) {
|
||||
options.debug.detail.push({
|
||||
type: 'sitemapMovies',
|
||||
duration: new Date() - options.debug.duration.current + 'ms'
|
||||
});
|
||||
options.debug.duration.current = new Date();
|
||||
}
|
||||
|
||||
if (err) return callback(err);
|
||||
|
||||
if (movies && movies.length) {
|
||||
var render = {};
|
||||
render.urls = [];
|
||||
|
||||
for (var i = 0; i < movies.length; i++) {
|
||||
if (
|
||||
!config.urls.noindex ||
|
||||
!(movies[i].url.indexOf('/' + config.urls.noindex + '/') + 1)
|
||||
) {
|
||||
render.urls[render.urls.length] = {
|
||||
loc: movies[i].url,
|
||||
lastmod:
|
||||
movies[i].custom && movies[i].custom.lastmod
|
||||
? movies[i].custom.lastmod.substr(0, 10)
|
||||
: ''
|
||||
};
|
||||
}
|
||||
CP_get.movies(
|
||||
{ year: year },
|
||||
2525,
|
||||
'kinopoisk-vote-up',
|
||||
1,
|
||||
true,
|
||||
options,
|
||||
function(err, movies) {
|
||||
if (options.debug) {
|
||||
options.debug.detail.push({
|
||||
type: 'sitemapMovies',
|
||||
duration: new Date() - options.debug.duration.current + 'ms'
|
||||
});
|
||||
options.debug.duration.current = new Date();
|
||||
}
|
||||
|
||||
callback(null, render);
|
||||
} else {
|
||||
callback(null, { urls: [] });
|
||||
if (err) return callback(err);
|
||||
|
||||
if (movies && movies.length) {
|
||||
var render = {};
|
||||
render.urls = [];
|
||||
|
||||
for (var i = 0; i < movies.length; i++) {
|
||||
if (
|
||||
!config.urls.noindex ||
|
||||
!(movies[i].url.indexOf('/' + config.urls.noindex + '/') + 1)
|
||||
) {
|
||||
render.urls[render.urls.length] = {
|
||||
loc: movies[i].url,
|
||||
lastmod:
|
||||
movies[i].custom && movies[i].custom.lastmod
|
||||
? movies[i].custom.lastmod.substr(0, 10)
|
||||
: ''
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
callback(null, render);
|
||||
} else {
|
||||
callback(null, { urls: [] });
|
||||
}
|
||||
}
|
||||
});
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -107,28 +107,18 @@ router.get('/:level1?/:level2?/:level3?/:level4?', function(req, res, next) {
|
|||
renderData(err, render);
|
||||
});
|
||||
|
||||
/**
|
||||
* Get render.
|
||||
*
|
||||
* @param {Callback} callback
|
||||
*/
|
||||
|
||||
function getRender(callback) {
|
||||
return config.cache.time
|
||||
? getCache(function(err, render) {
|
||||
return err ? callback(err) : callback(null, render);
|
||||
})
|
||||
: getSphinx(function(err, render) {
|
||||
return err ? callback(err) : callback(null, render);
|
||||
});
|
||||
if (config.cache.time) {
|
||||
getCache(function(err, render) {
|
||||
return callback(err, render);
|
||||
});
|
||||
} else {
|
||||
getSphinx(function(err, render) {
|
||||
return callback(err, render);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get cache.
|
||||
*
|
||||
* @param {Callback} callback
|
||||
*/
|
||||
|
||||
function getCache(callback) {
|
||||
CP_cache.get(urlHash, function(err, render) {
|
||||
if (err) return callback(err);
|
||||
|
@ -141,12 +131,6 @@ router.get('/:level1?/:level2?/:level3?/:level4?', function(req, res, next) {
|
|||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sphinx.
|
||||
*
|
||||
* @param {Callback} callback
|
||||
*/
|
||||
|
||||
function getSphinx(callback) {
|
||||
switch (template) {
|
||||
case 'movie':
|
||||
|
@ -220,7 +204,7 @@ router.get('/:level1?/:level2?/:level3?/:level4?', function(req, res, next) {
|
|||
break;
|
||||
case 'category':
|
||||
if (typeof req.query.random !== 'undefined' && modules.random.status) {
|
||||
return category.random(level1, level2, options, function(err, url) {
|
||||
category.random(level1, level2, options, function(err, url) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else if (!url) {
|
||||
|
@ -229,17 +213,18 @@ router.get('/:level1?/:level2?/:level3?/:level4?', function(req, res, next) {
|
|||
return res.redirect(302, url);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
category.one(
|
||||
level1,
|
||||
level2,
|
||||
parseInt(level3),
|
||||
sorting,
|
||||
options,
|
||||
function(err, render) {
|
||||
callback(err, render);
|
||||
}
|
||||
);
|
||||
}
|
||||
category.one(
|
||||
level1,
|
||||
level2,
|
||||
parseInt(level3),
|
||||
sorting,
|
||||
options,
|
||||
function(err, render) {
|
||||
callback(err, render);
|
||||
}
|
||||
);
|
||||
break;
|
||||
case 'categories':
|
||||
category.all(level1, options, function(err, render) {
|
||||
|
@ -248,7 +233,7 @@ router.get('/:level1?/:level2?/:level3?/:level4?', function(req, res, next) {
|
|||
break;
|
||||
case 'content':
|
||||
if (typeof req.query.random !== 'undefined' && modules.random.status) {
|
||||
return content.random(req.params.level2, options, function(err, url) {
|
||||
content.random(req.params.level2, options, function(err, url) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else if (!url) {
|
||||
|
@ -257,30 +242,33 @@ router.get('/:level1?/:level2?/:level3?/:level4?', function(req, res, next) {
|
|||
return res.redirect(302, url);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
content.one(
|
||||
req.params.level2,
|
||||
parseInt(level3),
|
||||
sorting,
|
||||
options,
|
||||
function(err, render) {
|
||||
callback(err, render);
|
||||
}
|
||||
);
|
||||
}
|
||||
content.one(
|
||||
req.params.level2,
|
||||
parseInt(level3),
|
||||
sorting,
|
||||
options,
|
||||
function(err, render) {
|
||||
callback(err, render);
|
||||
}
|
||||
);
|
||||
break;
|
||||
case 'contents':
|
||||
content.all(tag, options, function(err, render) {
|
||||
callback(err, render);
|
||||
});
|
||||
break;
|
||||
case 'desktop/sitemap':
|
||||
return level2
|
||||
? sitemap.one(level2, level3, options, function(err, render) {
|
||||
callback(err, render);
|
||||
})
|
||||
: sitemap.all(options, function(err, render) {
|
||||
callback(err, render);
|
||||
});
|
||||
case 'sitemap':
|
||||
if (level2) {
|
||||
sitemap.one(level2, level3, options, function(err, render) {
|
||||
callback(err, render);
|
||||
});
|
||||
} else {
|
||||
sitemap.all(options, function(err, render) {
|
||||
callback(err, render);
|
||||
});
|
||||
}
|
||||
break;
|
||||
case 'index':
|
||||
if (
|
||||
|
@ -288,34 +276,26 @@ router.get('/:level1?/:level2?/:level3?/:level4?', function(req, res, next) {
|
|||
modules.random.status &&
|
||||
modules.random.data.menu
|
||||
) {
|
||||
return content.random(modules.random.data.menu, options, function(
|
||||
err,
|
||||
url
|
||||
) {
|
||||
content.random(modules.random.data.menu, options, function(err, red) {
|
||||
if (err) {
|
||||
callback(err);
|
||||
} else if (!url) {
|
||||
} else if (!red) {
|
||||
callback(config.l.notFound);
|
||||
} else {
|
||||
return res.redirect(302, url);
|
||||
return res.redirect(302, red);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
index.data(options, function(err, render) {
|
||||
callback(err, render);
|
||||
});
|
||||
}
|
||||
index.data(options, function(err, render) {
|
||||
callback(err, render);
|
||||
});
|
||||
break;
|
||||
default:
|
||||
callback(config.l.notFound);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse URL.
|
||||
*
|
||||
* @return {String}
|
||||
*/
|
||||
|
||||
function parseUrl() {
|
||||
var parts = req.originalUrl.split('?');
|
||||
|
||||
|
@ -352,12 +332,6 @@ router.get('/:level1?/:level2?/:level3?/:level4?', function(req, res, next) {
|
|||
return CP_decode.text(url);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set template.
|
||||
*
|
||||
* @return {String}
|
||||
*/
|
||||
|
||||
function setTemplate() {
|
||||
switch (level1) {
|
||||
case config.urls.noindex:
|
||||
|
@ -391,13 +365,6 @@ router.get('/:level1?/:level2?/:level3?/:level4?', function(req, res, next) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Render data.
|
||||
*
|
||||
* @param {Object} err
|
||||
* @param {Object} render
|
||||
*/
|
||||
|
||||
function renderData(err, render) {
|
||||
if (err) {
|
||||
console.log('[routes/website.js]', url);
|
||||
|
|
Loading…
Reference in a new issue