This commit is contained in:
@@ -1,21 +1,22 @@
|
||||
let db;
|
||||
const LH = "ip NOT IN ('127.0.0.1', '::1', '::ffff:127.0.0.1')";
|
||||
|
||||
function init(database) {
|
||||
db = database;
|
||||
}
|
||||
|
||||
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 });
|
||||
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 });
|
||||
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 });
|
||||
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 });
|
||||
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 });
|
||||
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 });
|
||||
res.json({
|
||||
total: totalRow ? totalRow.total : 0,
|
||||
@@ -38,6 +39,7 @@ function getCountries(req, res) {
|
||||
COALESCE(NULLIF(country_code, ''), '--') as country_code,
|
||||
COUNT(DISTINCT session_id) as count
|
||||
FROM visitor_log
|
||||
WHERE ${LH}
|
||||
GROUP BY COALESCE(NULLIF(country_code, ''), '--')
|
||||
ORDER BY count DESC LIMIT 30`, [], (err, rows) => {
|
||||
if (err) return res.status(500).json({ error: err.message });
|
||||
@@ -48,7 +50,7 @@ function getCountries(req, res) {
|
||||
function getLanguages(req, res) {
|
||||
db.all(`SELECT accept_language, COUNT(DISTINCT session_id) as count
|
||||
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
|
||||
ORDER BY count DESC`, [], (err, rows) => {
|
||||
if (err) return res.status(500).json({ error: err.message });
|
||||
@@ -64,7 +66,7 @@ function getLanguages(req, res) {
|
||||
function getDaily(req, res) {
|
||||
db.all(`SELECT visit_date, COUNT(DISTINCT session_id) as count, COUNT(*) as page_views
|
||||
FROM visitor_log
|
||||
WHERE visit_date >= date('now', '-29 days')
|
||||
WHERE visit_date >= date('now', '-29 days') AND ${LH}
|
||||
GROUP BY visit_date
|
||||
ORDER BY visit_date ASC`, [], (err, rows) => {
|
||||
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 { id, ip, country, lang, date_from, date_to, page } = req.query;
|
||||
|
||||
const whereClauses = [];
|
||||
const whereClauses = [LH];
|
||||
const params = [];
|
||||
|
||||
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 || '';
|
||||
|
||||
if (ip === '127.0.0.1' || ip === '::1' || ip === '::ffff:127.0.0.1') {
|
||||
return next();
|
||||
}
|
||||
|
||||
const cookies = parseCookies(req.headers.cookie);
|
||||
let sessionId = cookies.visitor_sid;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user