This commit is contained in:
@@ -1,21 +1,22 @@
|
|||||||
let db;
|
let db;
|
||||||
|
const LH = "ip NOT IN ('127.0.0.1', '::1', '::ffff:127.0.0.1')";
|
||||||
|
|
||||||
function init(database) {
|
function init(database) {
|
||||||
db = database;
|
db = database;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getStats(req, res) {
|
function getStats(req, res) {
|
||||||
db.get(`SELECT COUNT(DISTINCT session_id) as total FROM visitor_log`, [], (err, totalRow) => {
|
db.get(`SELECT COUNT(DISTINCT session_id) as total FROM visitor_log WHERE ${LH}`, [], (err, totalRow) => {
|
||||||
if (err) return res.status(500).json({ error: err.message });
|
if (err) return res.status(500).json({ error: err.message });
|
||||||
db.get(`SELECT COUNT(DISTINCT session_id) as today FROM visitor_log WHERE visit_date = date('now')`, [], (err, todayRow) => {
|
db.get(`SELECT COUNT(DISTINCT session_id) as today FROM visitor_log WHERE visit_date = date('now') AND ${LH}`, [], (err, todayRow) => {
|
||||||
if (err) return res.status(500).json({ error: err.message });
|
if (err) return res.status(500).json({ error: err.message });
|
||||||
db.get(`SELECT COUNT(DISTINCT session_id) as week FROM visitor_log WHERE visit_date >= date('now', '-6 days')`, [], (err, weekRow) => {
|
db.get(`SELECT COUNT(DISTINCT session_id) as week FROM visitor_log WHERE visit_date >= date('now', '-6 days') AND ${LH}`, [], (err, weekRow) => {
|
||||||
if (err) return res.status(500).json({ error: err.message });
|
if (err) return res.status(500).json({ error: err.message });
|
||||||
db.get(`SELECT COUNT(DISTINCT session_id) as month FROM visitor_log WHERE visit_date >= date('now', 'start of month')`, [], (err, monthRow) => {
|
db.get(`SELECT COUNT(DISTINCT session_id) as month FROM visitor_log WHERE visit_date >= date('now', 'start of month') AND ${LH}`, [], (err, monthRow) => {
|
||||||
if (err) return res.status(500).json({ error: err.message });
|
if (err) return res.status(500).json({ error: err.message });
|
||||||
db.get(`SELECT COUNT(*) as page_views FROM visitor_log`, [], (err, pvRow) => {
|
db.get(`SELECT COUNT(*) as page_views FROM visitor_log WHERE ${LH}`, [], (err, pvRow) => {
|
||||||
if (err) return res.status(500).json({ error: err.message });
|
if (err) return res.status(500).json({ error: err.message });
|
||||||
db.get(`SELECT COUNT(DISTINCT ip) as unique_ips FROM visitor_log`, [], (err, ipRow) => {
|
db.get(`SELECT COUNT(DISTINCT ip) as unique_ips FROM visitor_log WHERE ${LH}`, [], (err, ipRow) => {
|
||||||
if (err) return res.status(500).json({ error: err.message });
|
if (err) return res.status(500).json({ error: err.message });
|
||||||
res.json({
|
res.json({
|
||||||
total: totalRow ? totalRow.total : 0,
|
total: totalRow ? totalRow.total : 0,
|
||||||
@@ -38,6 +39,7 @@ function getCountries(req, res) {
|
|||||||
COALESCE(NULLIF(country_code, ''), '--') as country_code,
|
COALESCE(NULLIF(country_code, ''), '--') as country_code,
|
||||||
COUNT(DISTINCT session_id) as count
|
COUNT(DISTINCT session_id) as count
|
||||||
FROM visitor_log
|
FROM visitor_log
|
||||||
|
WHERE ${LH}
|
||||||
GROUP BY COALESCE(NULLIF(country_code, ''), '--')
|
GROUP BY COALESCE(NULLIF(country_code, ''), '--')
|
||||||
ORDER BY count DESC LIMIT 30`, [], (err, rows) => {
|
ORDER BY count DESC LIMIT 30`, [], (err, rows) => {
|
||||||
if (err) return res.status(500).json({ error: err.message });
|
if (err) return res.status(500).json({ error: err.message });
|
||||||
@@ -48,7 +50,7 @@ function getCountries(req, res) {
|
|||||||
function getLanguages(req, res) {
|
function getLanguages(req, res) {
|
||||||
db.all(`SELECT accept_language, COUNT(DISTINCT session_id) as count
|
db.all(`SELECT accept_language, COUNT(DISTINCT session_id) as count
|
||||||
FROM visitor_log
|
FROM visitor_log
|
||||||
WHERE accept_language IS NOT NULL AND accept_language != ''
|
WHERE accept_language IS NOT NULL AND accept_language != '' AND ${LH}
|
||||||
GROUP BY accept_language
|
GROUP BY accept_language
|
||||||
ORDER BY count DESC`, [], (err, rows) => {
|
ORDER BY count DESC`, [], (err, rows) => {
|
||||||
if (err) return res.status(500).json({ error: err.message });
|
if (err) return res.status(500).json({ error: err.message });
|
||||||
@@ -64,7 +66,7 @@ function getLanguages(req, res) {
|
|||||||
function getDaily(req, res) {
|
function getDaily(req, res) {
|
||||||
db.all(`SELECT visit_date, COUNT(DISTINCT session_id) as count, COUNT(*) as page_views
|
db.all(`SELECT visit_date, COUNT(DISTINCT session_id) as count, COUNT(*) as page_views
|
||||||
FROM visitor_log
|
FROM visitor_log
|
||||||
WHERE visit_date >= date('now', '-29 days')
|
WHERE visit_date >= date('now', '-29 days') AND ${LH}
|
||||||
GROUP BY visit_date
|
GROUP BY visit_date
|
||||||
ORDER BY visit_date ASC`, [], (err, rows) => {
|
ORDER BY visit_date ASC`, [], (err, rows) => {
|
||||||
if (err) return res.status(500).json({ error: err.message });
|
if (err) return res.status(500).json({ error: err.message });
|
||||||
@@ -77,7 +79,7 @@ function getIPs(req, res) {
|
|||||||
const offset = parseInt(req.query.offset) || 0;
|
const offset = parseInt(req.query.offset) || 0;
|
||||||
const { id, ip, country, lang, date_from, date_to, page } = req.query;
|
const { id, ip, country, lang, date_from, date_to, page } = req.query;
|
||||||
|
|
||||||
const whereClauses = [];
|
const whereClauses = [LH];
|
||||||
const params = [];
|
const params = [];
|
||||||
|
|
||||||
if (id) { whereClauses.push('id = ?'); params.push(parseInt(id)); }
|
if (id) { whereClauses.push('id = ?'); params.push(parseInt(id)); }
|
||||||
|
|||||||
@@ -233,6 +233,11 @@ app.use((req, res, next) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const ip = req.ip || req.connection.remoteAddress || '';
|
const ip = req.ip || req.connection.remoteAddress || '';
|
||||||
|
|
||||||
|
if (ip === '127.0.0.1' || ip === '::1' || ip === '::ffff:127.0.0.1') {
|
||||||
|
return next();
|
||||||
|
}
|
||||||
|
|
||||||
const cookies = parseCookies(req.headers.cookie);
|
const cookies = parseCookies(req.headers.cookie);
|
||||||
let sessionId = cookies.visitor_sid;
|
let sessionId = cookies.visitor_sid;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user