Compare commits

...

17 commits

Author SHA1 Message Date
2dbcd6e21a Build 0.5.2 2024-07-20 02:13:42 +02:00
633246dddd Made Javadoc review. 2024-07-18 19:24:41 +02:00
f1074afe95 Clean metrics.httpaccess package. 2024-07-18 19:24:02 +02:00
70f6c9fb02 Refactored readFirstLine methods. 2024-07-18 19:23:17 +02:00
4612402014 Rename package from http to httpaccess (part 2). 2024-07-18 19:21:41 +02:00
a4f968a347 Added data for http error tests. 2024-07-18 19:16:17 +02:00
3bc224b779 Rename package from http to httpaccess. 2024-07-18 19:09:41 +02:00
cc545c217e Fixed member path use. 2023-07-20 12:08:06 +02:00
080f72a374 Commented exception print trace to avoid error cron email. 2023-07-04 15:21:45 +02:00
ed2590b88b Added configuration file for stat visitors cli command. 2023-07-04 03:20:28 +02:00
623438a218 Added configuration file for stat user agents cli command. 2023-07-04 03:14:50 +02:00
8564cef205 Added configuration file for stat ip cli command. 2023-07-03 19:15:30 +02:00
7af1766f4f Added configuration file for list visitor cli command. 2023-07-03 18:25:19 +02:00
da1af17b04 Added configuration file for list ip cli command. 2023-07-03 18:11:55 +02:00
0458382f86 Added configuration file for list ua cli command. 2023-07-03 18:02:25 +02:00
02281b1ab6 Added HttpAccessLogDateTimePattern management (#sleto). 2023-07-03 17:40:23 +02:00
8619c59a65 Improved user agent bot list. 2023-07-03 14:38:36 +02:00
62 changed files with 1104 additions and 340 deletions

View file

@ -281,6 +281,10 @@ conf.probe.target=/srv/statoolinfos/well-known/statoolinfos/foo.bar.org-metrics.
# Default: ^(?<remoteAddress>[a-fA-F0-9\:\.]+) - (?<remoteUser>[^\[]+) \[(?<time>[^\]]+)\] "(?<request>.*)" (?<status>\d+) (?<bodyBytesSent>\d+) "(?<referer>.*)" "(?<userAgent>[^"]*)".*$
conf.probe.httpaccesslog.pattern=
# Custom datetime access log pattern (https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns).
# Default: dd/MMM/yyyy:HH:mm:ss Z|EN
conf.prob.httpaccesslog.datetimepattern=
# Filter request with Java regex (without the initial '^' and without the final '$', see https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html).
# Example: pathfilter=/.*well-known.*
conf.probe.httpaccesslog.pathfilter=

View file

@ -1,3 +1,3 @@
#Build Number for ANT. Do not edit!
#Tue May 09 18:35:03 CEST 2023
build.number=2
#Sat Jul 20 02:13:37 CEST 2024
build.number=3

View file

@ -118,12 +118,12 @@ public final class StatoolInfosCLI
message.appendln();
message.appendln(" statoolinfos list file <logfilesorconfigfile> display http access log files");
message.appendln(" statoolinfos list log [-bot|-nobot] <logfilesorconfigfile> display http access log lines");
message.appendln(" statoolinfos list ip [-bot|-nobot] <logfiles> generate ip list from http log file");
message.appendln(" statoolinfos list ua [-bot|-nobot] <logfiles> generate user agent list from http log file");
message.appendln(" statoolinfos list visitor [-bot|-nobot] <logfiles> generate visitors (ip+ua) list from http log file");
message.appendln(" statoolinfos stat ip [-bot|-nobot] <logfiles> generate stats about ip from http log file");
message.appendln(" statoolinfos stat ua [-bot|-nobot] <logfiles> generate stats about user agent from http log file");
message.appendln(" statoolinfos stat visitor [-bot|-nobot] <logfiles> generate stats about visitor (ip+ua) from http log file");
message.appendln(" statoolinfos list ip [-bot|-nobot] <logfilesorconfigfile> generate ip list from http log file");
message.appendln(" statoolinfos list ua [-bot|-nobot] <logfilesorconfigfile> generate user agent list from http log file");
message.appendln(" statoolinfos list visitor [-bot|-nobot] <logfilesorconfigfile> generate visitors (ip+ua) list from http log file");
message.appendln(" statoolinfos stat ip [-bot|-nobot] <logfilesorconfigfile> generate stats about ip from http log file");
message.appendln(" statoolinfos stat ua [-bot|-nobot] <logfilesorconfigfile> generate stats about user agent from http log file");
message.appendln(" statoolinfos stat visitor [-bot|-nobot] <logfilesorconfigfile> generate stats about visitor (ip+ua) from http log file");
System.out.print(message.toString());
}
@ -313,6 +313,19 @@ public final class StatoolInfosCLI
}
System.out.println(chrono.format());
}
else if (CLIUtils.isMatching(args, "list", "ip", "(-all|-bot|-nobot)", ".+\\.conf*"))
{
BotFilter filter = parseLogFilterOption(args[2]);
File configurationFile = new File(StringUtils.trim(args[3]));
StatoolInfos.listIps(configurationFile, filter);
}
else if (CLIUtils.isMatching(args, "list", "ip", ".+\\.conf"))
{
File configurationFile = new File(StringUtils.trim(args[2]));
StatoolInfos.listIps(configurationFile, BotFilter.ALL);
}
else if (CLIUtils.isMatchingEllipsis(args, "list", "ip", "(-all|-bot|-nobot)", ".+"))
{
BotFilter filter = parseLogFilterOption(args[2]);
@ -384,6 +397,19 @@ public final class StatoolInfosCLI
StatoolInfos.listLogs(source, BotFilter.ALL);
}
else if (CLIUtils.isMatching(args, "list", "(useragent|ua)", "(-all|-bot|-nobot)", ".+\\.conf*"))
{
BotFilter filter = parseLogFilterOption(args[2]);
File configurationFile = new File(StringUtils.trim(args[3]));
StatoolInfos.listUserAgents(configurationFile, filter);
}
else if (CLIUtils.isMatching(args, "list", "(useragent|ua)", ".+\\.conf"))
{
File configurationFile = new File(StringUtils.trim(args[2]));
StatoolInfos.listUserAgents(configurationFile, BotFilter.ALL);
}
else if (CLIUtils.isMatchingEllipsis(args, "list", "(useragent|ua)", "(-all|-bot|-nobot)", ".+"))
{
BotFilter filter = parseLogFilterOption(args[2]);
@ -405,6 +431,19 @@ public final class StatoolInfosCLI
StatoolInfos.listUserAgents(source, BotFilter.ALL);
}
else if (CLIUtils.isMatching(args, "list", "(visitor|visitors)", "(-all|-bot|-nobot)", ".+\\.conf*"))
{
BotFilter filter = parseLogFilterOption(args[2]);
File configurationFile = new File(StringUtils.trim(args[3]));
StatoolInfos.listVisitors(configurationFile, filter);
}
else if (CLIUtils.isMatching(args, "list", "(visitor|visitors)", ".+\\.conf"))
{
File configurationFile = new File(StringUtils.trim(args[2]));
StatoolInfos.listVisitors(configurationFile, BotFilter.ALL);
}
else if (CLIUtils.isMatchingEllipsis(args, "list", "(visitor|visitors)", "(-all|-bot|-nobot)", ".+"))
{
BotFilter filter = parseLogFilterOption(args[2]);
@ -479,6 +518,19 @@ public final class StatoolInfosCLI
exception.printStackTrace();
}
}
else if (CLIUtils.isMatching(args, "stat", "ip", "(-all|-bot|-nobot)", ".+\\.conf*"))
{
BotFilter filter = parseLogFilterOption(args[2]);
File configurationFile = new File(StringUtils.trim(args[3]));
StatoolInfos.statIps(configurationFile, filter);
}
else if (CLIUtils.isMatching(args, "stat", "ip", ".+\\.conf"))
{
File configurationFile = new File(StringUtils.trim(args[2]));
StatoolInfos.statIps(configurationFile, BotFilter.ALL);
}
else if (CLIUtils.isMatchingEllipsis(args, "stat", "ip", "(-all|-bot|-nobot)", ".+"))
{
BotFilter filter = parseLogFilterOption(args[2]);
@ -500,6 +552,19 @@ public final class StatoolInfosCLI
StatoolInfos.statIps(source, BotFilter.ALL);
}
else if (CLIUtils.isMatching(args, "stat", "(useragent|ua)", "(-all|-bot|-nobot)", ".+\\.conf*"))
{
BotFilter filter = parseLogFilterOption(args[2]);
File configurationFile = new File(StringUtils.trim(args[3]));
StatoolInfos.statUserAgents(configurationFile, filter);
}
else if (CLIUtils.isMatching(args, "stat", "(useragent|ua)", ".+\\.conf"))
{
File configurationFile = new File(StringUtils.trim(args[2]));
StatoolInfos.statUserAgents(configurationFile, BotFilter.ALL);
}
else if (CLIUtils.isMatchingEllipsis(args, "stat", "(useragent|ua)", "(-all|-bot|-nobot)", ".+"))
{
BotFilter filter = parseLogFilterOption(args[2]);
@ -521,6 +586,19 @@ public final class StatoolInfosCLI
StatoolInfos.statUserAgents(source, BotFilter.ALL);
}
else if (CLIUtils.isMatching(args, "stat", "(visitor|visitors)", "(-all|-bot|-nobot)", ".+\\.conf*"))
{
BotFilter filter = parseLogFilterOption(args[2]);
File configurationFile = new File(StringUtils.trim(args[3]));
StatoolInfos.statVisitors(configurationFile, filter);
}
else if (CLIUtils.isMatching(args, "stat", "(visitor|visitors)", ".+\\.conf"))
{
File configurationFile = new File(StringUtils.trim(args[2]));
StatoolInfos.statVisitors(configurationFile, BotFilter.ALL);
}
else if (CLIUtils.isMatchingEllipsis(args, "stat", "(visitor|visitors)", "(-all|-bot|-nobot)", ".+"))
{
BotFilter filter = parseLogFilterOption(args[2]);

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2020-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -18,7 +18,7 @@
*/
package fr.devinsy.statoolinfos.core;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLog;
/**
* The Enum LogFilter.

View file

@ -354,6 +354,21 @@ public class Configuration extends PathPropertyList
return result;
}
/**
* Gets the probe http access log date pattern.
*
* @return the probe http access log date pattern
*/
public String getProbeHttpAccessLogDateTimePattern()
{
String result;
result = get("conf.probe.httpaccesslog.datetimepattern");
//
return result;
}
/**
* Gets the probe http access log path filter.
*

View file

@ -516,7 +516,7 @@ public class Organization extends PathPropertyList
{
LocalDate result;
result = getDate("organization.memberof." + this.federation.getName() + ".enddate");
result = getDate("organization.memberof." + this.federation.getTechnicalName() + ".enddate");
//
return result;
@ -548,7 +548,7 @@ public class Organization extends PathPropertyList
{
String result;
result = get("organization.memberof." + this.federation.getName() + ".enddate");
result = get("organization.memberof." + this.federation.getTechnicalName() + ".enddate");
//
return result;
@ -586,7 +586,7 @@ public class Organization extends PathPropertyList
{
LocalDate result;
result = getDate("organization.memberof." + this.federation.getName() + ".startdate");
result = getDate("organization.memberof." + this.federation.getTechnicalName() + ".startdate");
//
return result;
@ -618,7 +618,7 @@ public class Organization extends PathPropertyList
{
String result;
result = get("organization.memberof." + this.federation.getName() + ".startdate");
result = get("organization.memberof." + this.federation.getTechnicalName() + ".startdate");
//
return result;

View file

@ -223,6 +223,65 @@ public class StatoolInfos
}
}
/**
* List ips.
*
* @param configurationFile
* the configuration file
* @param filter
* the filter
*/
public static void listIps(final File configurationFile, final BotFilter filter)
{
try
{
if ((configurationFile == null) || (!configurationFile.exists()))
{
System.out.println("No configuration file found.");
}
else
{
System.out.println("Testing HttpAccesLog lines from [" + configurationFile.toString() + "]");
Configuration configuration = Factory.loadConfiguration(configurationFile);
logger.info("== Testing HttpAccessLog lines.");
String source = configuration.getProbeHttpAccessLogSource();
String dateTimePattern = configuration.getProbeHttpAccessLogDateTimePattern();
String pattern = configuration.getProbeHttpAccessLogPattern();
String pathFilter = configuration.getProbeHttpAccessLogPathFilter();
logger.info("source=[{}]", source);
logger.info("pattern=[{}]", pattern);
logger.info("dateTimePattern=[{}]", dateTimePattern);
logger.info("pathFilter=[{}]", pathFilter);
Chrono chrono = new Chrono().start();
IpStator stator = new IpStator();
HttpAccessLogs logs = new HttpAccessLogs(FilesUtils.searchByWildcard(source), pattern, dateTimePattern, pathFilter);
for (HttpAccessLog log : logs)
{
if (filter.matches(log))
{
stator.putLog(log);
}
}
for (IpStat stat : stator.getIps())
{
System.out.println(stat.getValue());
}
System.err.println(String.format("%s %10d", "Ip count: ", stator.getIps().size()));
System.err.println(String.format("%s %10d", "Log count: ", stator.getLogCount()));
System.err.println(chrono.format());
}
}
catch (Exception exception)
{
logger.error("Error: {}", exception.getMessage());
exception.printStackTrace();
}
}
/**
* List ips.
*
@ -235,9 +294,9 @@ public class StatoolInfos
{
try
{
IpStator stator = new IpStator();
Chrono chrono = new Chrono().start();
IpStator stator = new IpStator();
HttpAccessLogs logs = new HttpAccessLogs(source);
for (HttpAccessLog log : logs)
{
@ -295,13 +354,15 @@ public class StatoolInfos
logger.info("== Testing HttpAccessLog lines.");
String source = configuration.getProbeHttpAccessLogSource();
String dateTimePattern = configuration.getProbeHttpAccessLogDateTimePattern();
String pattern = configuration.getProbeHttpAccessLogPattern();
String pathFilter = configuration.getProbeHttpAccessLogPathFilter();
logger.info("source=[{}]", source);
logger.info("pattern=[{}]", pattern);
logger.info("dateTimePattern=[{}]", dateTimePattern);
logger.info("pathFilter=[{}]", pathFilter);
HttpAccessLogs logs = new HttpAccessLogs(FilesUtils.searchByWildcard(source), pattern, pathFilter);
HttpAccessLogs logs = new HttpAccessLogs(FilesUtils.searchByWildcard(source), pattern, dateTimePattern, pathFilter);
for (HttpAccessLog log : logs)
{
@ -356,6 +417,66 @@ public class StatoolInfos
}
}
/**
* List user agents.
*
* @param configurationFile
* the configuration file
* @param filter
* the filter
*/
public static void listUserAgents(final File configurationFile, final BotFilter filter)
{
try
{
if ((configurationFile == null) || (!configurationFile.exists()))
{
System.out.println("No configuration file found.");
}
else
{
System.out.println("Testing HttpAccesLog lines from [" + configurationFile.toString() + "]");
Configuration configuration = Factory.loadConfiguration(configurationFile);
logger.info("== Testing HttpAccessLog lines.");
String source = configuration.getProbeHttpAccessLogSource();
String dateTimePattern = configuration.getProbeHttpAccessLogDateTimePattern();
String pattern = configuration.getProbeHttpAccessLogPattern();
String pathFilter = configuration.getProbeHttpAccessLogPathFilter();
logger.info("source=[{}]", source);
logger.info("pattern=[{}]", pattern);
logger.info("dateTimePattern=[{}]", dateTimePattern);
logger.info("pathFilter=[{}]", pathFilter);
Chrono chrono = new Chrono().start();
UserAgentStator stator = new UserAgentStator();
HttpAccessLogs logs = new HttpAccessLogs(FilesUtils.searchByWildcard(source), pattern, dateTimePattern, pathFilter);
for (HttpAccessLog log : logs)
{
if (filter.matches(log))
{
stator.putLog(log);
}
}
for (UserAgentStat stat : stator.getUserAgentStats().sortByLabel())
{
System.out.println(stat.getUserAgent());
}
System.err.println(String.format("%s %10d", "UserAgent count: ", stator.getUserAgentStats().size()));
System.err.println(String.format("%s %10d", "Log count: ", stator.getLogCount()));
System.err.println(chrono.format());
}
}
catch (Exception exception)
{
logger.error("Error: {}", exception.getMessage());
exception.printStackTrace();
}
}
/**
* List user agents.
*
@ -404,6 +525,65 @@ public class StatoolInfos
}
}
/**
* List visitors.
*
* @param configurationFile
* the configuration file
* @param filter
* the filter
*/
public static void listVisitors(final File configurationFile, final BotFilter filter)
{
try
{
if ((configurationFile == null) || (!configurationFile.exists()))
{
System.out.println("No configuration file found.");
}
else
{
System.out.println("Testing HttpAccesLog lines from [" + configurationFile.toString() + "]");
Configuration configuration = Factory.loadConfiguration(configurationFile);
logger.info("== Testing HttpAccessLog lines.");
String source = configuration.getProbeHttpAccessLogSource();
String dateTimePattern = configuration.getProbeHttpAccessLogDateTimePattern();
String pattern = configuration.getProbeHttpAccessLogPattern();
String pathFilter = configuration.getProbeHttpAccessLogPathFilter();
logger.info("source=[{}]", source);
logger.info("pattern=[{}]", pattern);
logger.info("dateTimePattern=[{}]", dateTimePattern);
logger.info("pathFilter=[{}]", pathFilter);
Chrono chrono = new Chrono().start();
VisitorStator stator = new VisitorStator();
HttpAccessLogs logs = new HttpAccessLogs(FilesUtils.searchByWildcard(source), pattern, dateTimePattern, pathFilter);
for (HttpAccessLog log : logs)
{
if (filter.matches(log))
{
stator.putLog(log);
}
}
for (VisitorStat stat : stator.getVisitorStats().sortByIp())
{
System.out.println(stat.getIp() + " " + stat.getUserAgent());
}
System.err.println(String.format("%s %10d", "Visitor count: ", stator.getVisitorStats().size()));
System.err.println(String.format("%s %10d", "Log count: ", stator.getLogCount()));
System.err.println(chrono.format());
}
}
catch (Exception exception)
{
logger.error("Error: {}", exception.getMessage());
exception.printStackTrace();
}
}
/**
* List visitors.
*
@ -467,6 +647,66 @@ public class StatoolInfos
Prober.probe(configurationFile, dayCountFilter);
}
/**
* Stat ips.
*
* @param configurationFile
* the configuration file
* @param filter
* the filter
*/
public static void statIps(final File configurationFile, final BotFilter filter)
{
try
{
if ((configurationFile == null) || (!configurationFile.exists()))
{
System.out.println("No configuration file found.");
}
else
{
System.out.println("Testing HttpAccesLog lines from [" + configurationFile.toString() + "]");
Configuration configuration = Factory.loadConfiguration(configurationFile);
logger.info("== Testing HttpAccessLog lines.");
String source = configuration.getProbeHttpAccessLogSource();
String dateTimePattern = configuration.getProbeHttpAccessLogDateTimePattern();
String pattern = configuration.getProbeHttpAccessLogPattern();
String pathFilter = configuration.getProbeHttpAccessLogPathFilter();
logger.info("source=[{}]", source);
logger.info("pattern=[{}]", pattern);
logger.info("dateTimePattern=[{}]", dateTimePattern);
logger.info("pathFilter=[{}]", pathFilter);
Chrono chrono = new Chrono().start();
IpStator stator = new IpStator();
HttpAccessLogs logs = new HttpAccessLogs(FilesUtils.searchByWildcard(source), pattern, dateTimePattern, pathFilter);
for (HttpAccessLog log : logs)
{
if (filter.matches(log))
{
stator.putLog(log);
}
}
System.err.println("IpCount Ip");
for (IpStat stat : stator.getIps().sortByCount().reverse())
{
System.out.println(stat.getCount() + " " + stat.getValue());
}
System.err.println(String.format("%s %10d", "Ip count: ", stator.getIps().size()));
System.err.println(String.format("%s %10d", "Log count: ", stator.getLogCount()));
System.err.println(chrono.format());
}
}
catch (Exception exception)
{
logger.error("Error: {}", exception.getMessage());
exception.printStackTrace();
}
}
/**
* Stat ips.
*
@ -516,6 +756,66 @@ public class StatoolInfos
}
}
/**
* Stat user agents.
*
* @param configurationFile
* the configuration file
* @param filter
* the filter
*/
public static void statUserAgents(final File configurationFile, final BotFilter filter)
{
try
{
if ((configurationFile == null) || (!configurationFile.exists()))
{
System.out.println("No configuration file found.");
}
else
{
System.out.println("Testing HttpAccesLog lines from [" + configurationFile.toString() + "]");
Configuration configuration = Factory.loadConfiguration(configurationFile);
logger.info("== Testing HttpAccessLog lines.");
String source = configuration.getProbeHttpAccessLogSource();
String dateTimePattern = configuration.getProbeHttpAccessLogDateTimePattern();
String pattern = configuration.getProbeHttpAccessLogPattern();
String pathFilter = configuration.getProbeHttpAccessLogPathFilter();
logger.info("source=[{}]", source);
logger.info("pattern=[{}]", pattern);
logger.info("dateTimePattern=[{}]", dateTimePattern);
logger.info("pathFilter=[{}]", pathFilter);
Chrono chrono = new Chrono().start();
UserAgentStator stator = new UserAgentStator();
HttpAccessLogs logs = new HttpAccessLogs(FilesUtils.searchByWildcard(source), pattern, dateTimePattern, pathFilter);
for (HttpAccessLog log : logs)
{
if (filter.matches(log))
{
stator.putLog(log);
}
}
System.err.println("LogCount IpCount VisitCount UserAgent");
for (UserAgentStat stat : stator.getUserAgentStats().sortByCount().reverse())
{
System.out.println(String.format("%d %d %d %s", stat.getLogCount(), stat.getIpCount(), stat.getVisitCount(), stat.getUserAgent()));
}
System.err.println(String.format("%s %10d", "User Agent count: ", stator.getUserAgentStats().size()));
System.err.println(String.format("%s %10d", "Log count: ", stator.getLogCount()));
System.err.println(chrono.format());
}
}
catch (Exception exception)
{
logger.error("Error: {}", exception.getMessage());
exception.printStackTrace();
}
}
/**
* Stat user agents.
*
@ -565,6 +865,69 @@ public class StatoolInfos
}
}
/**
* Stat visitors.
*
* @param configurationFile
* the configuration file
* @param filter
* the filter
*/
public static void statVisitors(final File configurationFile, final BotFilter filter)
{
try
{
if ((configurationFile == null) || (!configurationFile.exists()))
{
System.out.println("No configuration file found.");
}
else
{
System.out.println("Testing HttpAccesLog lines from [" + configurationFile.toString() + "]");
Configuration configuration = Factory.loadConfiguration(configurationFile);
logger.info("== Testing HttpAccessLog lines.");
String source = configuration.getProbeHttpAccessLogSource();
String dateTimePattern = configuration.getProbeHttpAccessLogDateTimePattern();
String pattern = configuration.getProbeHttpAccessLogPattern();
String pathFilter = configuration.getProbeHttpAccessLogPathFilter();
logger.info("source=[{}]", source);
logger.info("pattern=[{}]", pattern);
logger.info("dateTimePattern=[{}]", dateTimePattern);
logger.info("pathFilter=[{}]", pathFilter);
Chrono chrono = new Chrono().start();
VisitorStator stator = new VisitorStator();
HttpAccessLogs logs = new HttpAccessLogs(FilesUtils.searchByWildcard(source), pattern, dateTimePattern, pathFilter);
for (HttpAccessLog log : logs)
{
if (filter.matches(log))
{
stator.putLog(log);
}
}
System.err.println("VisitCount LogCount VisitDuration VisitDuration Ip UserAgent");
for (VisitorStat stat : stator.getVisitorStats().sortByVisitCount().reverse())
{
System.out.println(
String.format("%d %d %d %s %s %s", stat.getVisits().size(), stat.getLogCount(), stat.getVisits().getDurationSum().toSeconds(),
Chrono.format(stat.getVisits().getDurationSum()),
stat.getIp(), stat.getUserAgent()));
}
System.err.println(String.format("%s %10d", "Visitor count: ", stator.getVisitorStats().size()));
System.err.println(String.format("%s %10d", "Log count: ", stator.getLogCount()));
System.err.println(chrono.format());
}
}
catch (Exception exception)
{
logger.error("Error: {}", exception.getMessage());
exception.printStackTrace();
}
}
/**
* Stat visitors.
*

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2022 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2020-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -210,6 +210,11 @@ public class PathCounters extends HashMap<String, PathCounter>
return result;
}
/**
* Gets the now time marks.
*
* @return the now time marks
*/
public StringList getNowTimeMarks()
{
StringList result;

View file

@ -227,11 +227,13 @@ public class Prober
String httpLogs = configuration.getProbeHttpAccessLogSource();
String httpAccessLogPattern = configuration.getProbeHttpAccessLogPattern();
String httpAccessLogDateTimePattern = configuration.getProbeHttpAccessLogDateTimePattern();
String httpAccessPathFilter = configuration.getProbeHttpAccessLogPathFilter();
logger.info("httpLogs=[{}]", httpLogs);
logger.info("httpAccessPattern=[{}]", httpAccessLogPattern);
logger.info("httpAccessDateTimePattern=[{}]", httpAccessLogDateTimePattern);
logger.info("httpAccessPathFilter=[{}]", httpAccessPathFilter);
HttpAccessLogs httpAccessLogs = new HttpAccessLogs(FilesUtils.searchByWildcard(httpLogs), httpAccessLogPattern, httpAccessPathFilter);
HttpAccessLogs httpAccessLogs = new HttpAccessLogs(FilesUtils.searchByWildcard(httpLogs), httpAccessLogPattern, httpAccessLogDateTimePattern, httpAccessPathFilter);
result = EtherpadProber.probe(httpAccessLogs, FilesUtils.searchByWildcard(logs), database);
@ -296,11 +298,13 @@ public class Prober
String httpLogs = configuration.getProbeHttpAccessLogSource();
String httpAccessLogPattern = configuration.getProbeHttpAccessLogPattern();
String httpAccessLogDateTimePattern = configuration.getProbeHttpAccessLogDateTimePattern();
String httpAccessLogPathFilter = configuration.getProbeHttpAccessLogPathFilter();
logger.info("httpLogs=[{}]", httpLogs);
logger.info("httpAccessPattern=[{}]", httpAccessLogPattern);
logger.info("httpAccessDateTimePattern=[{}]", httpAccessLogDateTimePattern);
logger.info("httpAccessPath=[{}]", httpAccessLogPathFilter);
HttpAccessLogs httpAccessLogs = new HttpAccessLogs(FilesUtils.searchByWildcard(httpLogs), httpAccessLogPattern, httpAccessLogPathFilter);
HttpAccessLogs httpAccessLogs = new HttpAccessLogs(FilesUtils.searchByWildcard(httpLogs), httpAccessLogPattern, httpAccessLogDateTimePattern, httpAccessLogPathFilter);
result = GiteaProber.probe(httpAccessLogs, apiURL, apiToken, dataDirectory, database);
@ -352,12 +356,14 @@ public class Prober
logger.info("== Probing HttpAccessLog.");
String source = configuration.getProbeHttpAccessLogSource();
String pattern = configuration.getProbeHttpAccessLogPattern();
String dateTimePattern = configuration.getProbeHttpAccessLogDateTimePattern();
String pathFilter = configuration.getProbeHttpAccessLogPathFilter();
logger.info("source=[{}]", source);
logger.info("pattern=[{}]", pattern);
logger.info("dateTimePattern=[{}]", dateTimePattern);
logger.info("path=[{}]", pathFilter);
HttpAccessLogs httpAccessLogs = new HttpAccessLogs(FilesUtils.searchByWildcard(source), pattern, pathFilter);
HttpAccessLogs httpAccessLogs = new HttpAccessLogs(FilesUtils.searchByWildcard(source), pattern, dateTimePattern, pathFilter);
result = HttpAccessLogAnalyzer.probe(httpAccessLogs);
@ -398,11 +404,13 @@ public class Prober
String httpAccessSource = configuration.getProbeHttpAccessLogSource();
String httpAccessLogPattern = configuration.getProbeHttpAccessLogPattern();
String httpAccessLogDateTimePattern = configuration.getProbeHttpAccessLogDateTimePattern();
String httpAccessLogPathFilter = configuration.getProbeHttpAccessLogPathFilter();
logger.info("httpAccessSource=[{}]", httpAccessSource);
logger.info("httpAccessPattern=[{}]", httpAccessLogPattern);
logger.info("httpAccessDateTimePattern=[{}]", httpAccessLogDateTimePattern);
logger.info("httpAccessPath=[{}]", httpAccessLogPathFilter);
HttpAccessLogs httpAccessLogs = new HttpAccessLogs(FilesUtils.searchByWildcard(httpAccessSource), httpAccessLogPattern, httpAccessLogPathFilter);
HttpAccessLogs httpAccessLogs = new HttpAccessLogs(FilesUtils.searchByWildcard(httpAccessSource), httpAccessLogPattern, httpAccessLogDateTimePattern, httpAccessLogPathFilter);
File dataDirectory = configuration.getAsFile("conf.probe.libreqr.datafiles");
logger.info("dataDirectory=[{}]", dataDirectory);
@ -485,11 +493,13 @@ public class Prober
logger.info("== Probing Privatebin.");
String httpAccessLogSource = configuration.getProbeHttpAccessLogSource();
String httpAccessLogPattern = configuration.getProbeHttpAccessLogPattern();
String httpAccessLogDateTimePattern = configuration.getProbeHttpAccessLogDateTimePattern();
String httpAccessLogPathFilter = configuration.getProbeHttpAccessLogPathFilter();
logger.info("source=[{}]", httpAccessLogSource);
logger.info("pattern=[{}]", httpAccessLogPattern);
logger.info("httpAccessDateTimePattern=[{}]", httpAccessLogDateTimePattern);
logger.info("httpAccessPath=[{}]", httpAccessLogPathFilter);
HttpAccessLogs httpAccessLogs = new HttpAccessLogs(FilesUtils.searchByWildcard(httpAccessLogSource), httpAccessLogPattern, httpAccessLogPathFilter);
HttpAccessLogs httpAccessLogs = new HttpAccessLogs(FilesUtils.searchByWildcard(httpAccessLogSource), httpAccessLogPattern, httpAccessLogDateTimePattern, httpAccessLogPathFilter);
File dataDirectory = configuration.getAsFile("conf.probe.privatebin.data");
logger.info("dataDirectory=[{}]", dataDirectory);

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2023 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2023-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -27,8 +27,8 @@ import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.metrics.PathCounters;
import fr.devinsy.statoolinfos.metrics.UserCounters;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLogs;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLogs;
/**
* The Class EtherpadHttpLogAnalyzer.

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2022-2023 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2022-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -27,7 +27,7 @@ import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.core.DatabaseConfig;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.metrics.PathCounters;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLogs;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLogs;
import fr.devinsy.statoolinfos.metrics.util.DatabaseProber;
import fr.devinsy.statoolinfos.util.Files;
import fr.devinsy.statoolinfos.util.sql.SQLDatabase;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2022-2023 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2022-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -32,9 +32,9 @@ import fr.devinsy.statoolinfos.core.DatabaseConfig;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.metrics.PathCounters;
import fr.devinsy.statoolinfos.metrics.UserCounters;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLogs;
import fr.devinsy.statoolinfos.metrics.http.HttpStatusCategory;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLogs;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpStatusCategory;
import fr.devinsy.statoolinfos.metrics.util.DatabaseProber;
import fr.devinsy.statoolinfos.metrics.util.DatafilesProber;
import fr.devinsy.statoolinfos.util.sql.SQLDatabase;

View file

@ -1,119 +0,0 @@
/*
* Copyright (C) 2021-2022 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
* StatoolInfos is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* StatoolInfos is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
import java.io.File;
import java.io.IOException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.util.LineIterator;
/**
* The Class HttpLogIterator.
*/
public class HttpLogIterator
{
private static Logger logger = LoggerFactory.getLogger(HttpLogIterator.class);
private long errorCount;
private LineIterator iterator;
/**
* Instantiates a new http log iterator.
*
* @param source
* the source
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public HttpLogIterator(final File source) throws IOException
{
this.errorCount = 0;
this.iterator = new LineIterator(source);
}
/**
* Close.
*/
public void close()
{
this.iterator.close();
}
/**
* Gets the error count.
*
* @return the error count
*/
public long getErrorCount()
{
return this.errorCount;
}
/**
* Checks for next.
*
* @return true, if successful
* @throws IOException
*/
public boolean hasNext() throws IOException
{
boolean result;
result = this.iterator.hasNext();
//
return result;
}
/**
* Next.
*
* @return the http log
* @throws IOException
*/
public HttpAccessLog next() throws IOException
{
HttpAccessLog result;
try
{
String line = this.iterator.next();
result = HttpAccessLogParser.parseLog(line, HttpAccessLogParser.COMBINED_PATTERN);
}
catch (Exception exception)
{
exception.printStackTrace();
this.errorCount += 1;
if (this.iterator.hasNext())
{
result = next();
}
else
{
result = null;
}
}
//
return result;
}
}

View file

@ -1,37 +0,0 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
* StatoolInfos is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* StatoolInfos is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* The Class NGinxLogAnalyzer.
*/
public class NGinxLogAnalyzer
{
private static Logger logger = LoggerFactory.getLogger(NGinxLogAnalyzer.class);
/**
* Instantiates a new n ginx log analyzer.
*/
private NGinxLogAnalyzer()
{
}
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2023 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import java.time.LocalDateTime;
import java.time.ZoneId;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2023 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2020-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import java.io.IOException;
import java.util.regex.Matcher;
@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.metrics.IpCounters;
import fr.devinsy.statoolinfos.metrics.PathCounters;
import fr.devinsy.strings.StringList;
/**
* The Class HttpAccessLogProber.
@ -305,9 +306,6 @@ public class HttpAccessLogAnalyzer
this.counters.inc("metrics.http.devices." + device.toString().toLowerCase(), year, yearMonth, yearWeek, date);
// metrics.http.countries.XX =
// metrics.http.errors.* =
// metrics.http.errors.php.* =
}
}
@ -367,13 +365,18 @@ public class HttpAccessLogAnalyzer
HttpAccessLogAnalyzer analyzer = new HttpAccessLogAnalyzer();
for (HttpAccessLog log : logs)
HttpAccessLogIterator logIterator = (HttpAccessLogIterator) logs.iterator();
while (logIterator.hasNext())
{
analyzer.probeLog(log);
analyzer.probeLog(logIterator.next());
}
result = analyzer.getCounters();
StringList timemarks = result.getNowTimeMarks();
analyzer.getCounters().set(logIterator.getLogCount(), "metrics.http.logs.count", timemarks);
analyzer.getCounters().set(logIterator.getIgnoredLogCount(), "metrics.http.logs.ignored", timemarks);
analyzer.getCounters().set(logIterator.getFailedLogCount(), "metrics.http.logs.failed", timemarks);
//
return result;
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2022-2023 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2022-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,10 +16,12 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import java.io.IOException;
import java.time.format.DateTimeFormatter;
import java.util.Iterator;
import java.util.Locale;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
@ -38,10 +40,12 @@ public class HttpAccessLogIterator implements Iterator<HttpAccessLog>
private FilesLineIterator lineIterator;
private Pattern pattern;
private DateTimeFormatter dateTimeFormatter;
private Pattern requestFilter;
private HttpAccessLog nextLog;
private int errorCount;
private int ignoredLineCount;
private int logCount;
private int ignoredLogCount;
private int failedLogCount;
/**
* Instantiates a new http access log iterator.
@ -53,7 +57,7 @@ public class HttpAccessLogIterator implements Iterator<HttpAccessLog>
*/
public HttpAccessLogIterator(final Files source) throws IOException
{
this(source, null, null);
this(source, null, null, null);
}
/**
@ -68,31 +72,55 @@ public class HttpAccessLogIterator implements Iterator<HttpAccessLog>
*/
public HttpAccessLogIterator(final Files source, final String regex) throws IOException
{
this(source, regex, null);
this(source, regex, null, null);
}
/**
* Instantiates a new http log iterator.
* Instantiates a new http access log iterator.
*
* @param source
* the source
* @param linePattern
* the line pattern
* @param dateTimePattern
* the date time pattern
* @param pathFilter
* the path filter
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public HttpAccessLogIterator(final Files source, final String regex, final String pathFilter) throws IOException
public HttpAccessLogIterator(final Files source, final String linePattern, final String dateTimePattern, final String pathFilter) throws IOException
{
this.lineIterator = new FilesLineIterator(source);
this.nextLog = null;
this.errorCount = 0;
this.ignoredLineCount = 0;
this.logCount = 0;
this.ignoredLogCount = 0;
this.failedLogCount = 0;
if (StringUtils.isBlank(regex))
if (StringUtils.isBlank(linePattern))
{
this.pattern = HttpAccessLogParser.COMBINED_PATTERN;
}
else
{
this.pattern = Pattern.compile(regex);
this.pattern = Pattern.compile(linePattern);
}
if (StringUtils.isBlank(dateTimePattern))
{
this.dateTimeFormatter = HttpAccessLogParser.DATETIME_FORMATTER;
}
else
{
String[] split = dateTimePattern.split("\\|");
if (split.length != 2)
{
throw new IllegalArgumentException("Bad dateTimePattern format: [" + dateTimePattern + "].");
}
else
{
this.dateTimeFormatter = DateTimeFormatter.ofPattern(split[0]).withLocale(Locale.forLanguageTag(split[1]));
}
}
if (StringUtils.isBlank(pathFilter))
@ -108,23 +136,33 @@ public class HttpAccessLogIterator implements Iterator<HttpAccessLog>
}
/**
* Gets the error count.
* Gets the failed log count.
*
* @return the error count
* @return the failed log count
*/
public int getErrorCount()
public int getFailedLogCount()
{
return this.errorCount;
return this.failedLogCount;
}
/**
* Gets the ignored line count.
* Gets the ignored log count.
*
* @return the ignored line count
* @return the ignored log count
*/
public int getIgnoredLineCount()
public int getIgnoredLogCount()
{
return this.ignoredLineCount;
return this.ignoredLogCount;
}
/**
* Gets the log count.
*
* @return the log count
*/
public int getLogCount()
{
return this.logCount;
}
/* (non-Javadoc)
@ -180,14 +218,15 @@ public class HttpAccessLogIterator implements Iterator<HttpAccessLog>
if (this.lineIterator.hasNext())
{
String line = this.lineIterator.next();
this.logCount += 1;
try
{
HttpAccessLog log = HttpAccessLogParser.parseLog(line, this.pattern);
HttpAccessLog log = HttpAccessLogParser.parseLog(line, this.pattern, this.dateTimeFormatter);
if (log == null)
{
logger.warn("LINE IS NOT MATCHING [{}]", line);
this.errorCount += 1;
this.failedLogCount += 1;
}
else if ((this.requestFilter == null) || (this.requestFilter.matcher(log.getRequest()).matches()))
{
@ -196,14 +235,15 @@ public class HttpAccessLogIterator implements Iterator<HttpAccessLog>
}
else
{
this.ignoredLineCount += 1;
this.ignoredLogCount += 1;
// System.out.println("XX " + log.getRequest());
}
}
catch (Exception exception)
{
logger.warn("Error parsing line [{}][{}]", line, exception.getMessage());
exception.printStackTrace();
this.failedLogCount += 1;
// exception.printStackTrace();
}
}
else

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2022 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2020-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,11 +16,12 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -41,6 +42,8 @@ public class HttpAccessLogParser
public static final Pattern COMBINED_PATTERN = Pattern.compile(
"^(?<remoteAddress>[a-fA-F0-9\\:\\.]+) - (?<remoteUser>[^\\[]+) \\[(?<time>[^\\]]+)\\] \"(?<request>.*)\" (?<status>\\d+) (?<bodyBytesSent>\\d+) \"(?<referer>[^\"]*)\" \"(?<userAgent>.*)\".*$");
public static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("dd/MMM/yyyy:HH:mm:ss Z").withLocale(Locale.ENGLISH);
/**
* Instantiates a new http access log parser.
*/
@ -48,6 +51,39 @@ public class HttpAccessLogParser
{
}
/**
* Parses the date time.
*
* @param dateTime
* the date time
* @param formatter
* the formatter
* @return the zoned date time
*/
public static ZonedDateTime parseDateTime(final CharSequence dateTime, final DateTimeFormatter formatter)
{
ZonedDateTime result;
if ((formatter == null) || (formatter == DATETIME_FORMATTER))
{
result = ZonedDateTime.parse(dateTime, DATETIME_FORMATTER);
}
else
{
try
{
result = ZonedDateTime.parse(dateTime, formatter);
}
catch (DateTimeParseException exception)
{
result = ZonedDateTime.parse(dateTime, DATETIME_FORMATTER);
}
}
//
return result;
}
/**
* Parses the log.
*
@ -55,7 +91,7 @@ public class HttpAccessLogParser
* the line
* @return the http log
*/
public static HttpAccessLog parseLog(final String line, final Pattern pattern)
public static HttpAccessLog parseLog(final String line, final Pattern pattern, final DateTimeFormatter dateTimeFormatter)
{
HttpAccessLog result;
@ -68,7 +104,7 @@ public class HttpAccessLogParser
result = new HttpAccessLog();
result.setIp(matcher.group("remoteAddress"));
result.setRemoteUser(matcher.group("remoteUser"));
result.setTime(ZonedDateTime.parse(matcher.group("time"), DateTimeFormatter.ofPattern("dd/MMM/yyyy:HH:mm:ss Z").withLocale(Locale.ENGLISH)));
result.setTime(parseDateTime(matcher.group("time"), dateTimeFormatter));
result.setRequest(matcher.group("request"));
result.setStatus(HttpStatusTable.instance().get(matcher.group("status")));
result.setBodyBytesSent(Long.valueOf(matcher.group("bodyBytesSent")));

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2020 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2020-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2022-2023 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2022-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import java.io.File;
import java.io.IOException;
@ -36,6 +36,7 @@ public class HttpAccessLogs implements Iterable<HttpAccessLog>
private Files source;
private String pattern;
private String datePattern;
private String pathFilter;
/**
@ -48,7 +49,7 @@ public class HttpAccessLogs implements Iterable<HttpAccessLog>
*/
public HttpAccessLogs(final File source) throws IOException
{
this(new Files(source), null, null);
this(new Files(source), null, null, null);
}
/**
@ -63,7 +64,7 @@ public class HttpAccessLogs implements Iterable<HttpAccessLog>
*/
public HttpAccessLogs(final File source, final String pattern) throws IOException
{
this(new Files(source), pattern, null);
this(new Files(source), pattern, null, null);
}
/**
@ -80,7 +81,7 @@ public class HttpAccessLogs implements Iterable<HttpAccessLog>
*/
public HttpAccessLogs(final File source, final String pattern, final String pathFilter) throws IOException
{
this(new Files(source), pattern, null);
this(new Files(source), pattern, null, null);
}
/**
@ -93,7 +94,7 @@ public class HttpAccessLogs implements Iterable<HttpAccessLog>
*/
public HttpAccessLogs(final Files source) throws IOException
{
this(source, null, null);
this(source, null, null, null);
}
/**
@ -106,7 +107,7 @@ public class HttpAccessLogs implements Iterable<HttpAccessLog>
*/
public HttpAccessLogs(final Files source, final String pattern) throws IOException
{
this(source, pattern, null);
this(source, pattern, null, null);
}
/**
@ -121,11 +122,12 @@ public class HttpAccessLogs implements Iterable<HttpAccessLog>
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public HttpAccessLogs(final Files source, final String pattern, final String pathFilter) throws IOException
public HttpAccessLogs(final Files source, final String pattern, final String datePattern, final String pathFilter) throws IOException
{
this.source = source;
this.pattern = pattern;
this.pathFilter = pathFilter;
this.datePattern = datePattern;
}
/* (non-Javadoc)
@ -138,7 +140,7 @@ public class HttpAccessLogs implements Iterable<HttpAccessLog>
try
{
result = new HttpAccessLogIterator(this.source, this.pattern, this.pathFilter);
result = new HttpAccessLogIterator(this.source, this.pattern, this.datePattern, this.pathFilter);
}
catch (IOException exception)
{

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2022 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2022-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
/**
* The Class HttpMethod.

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2022 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
/**
* The Enum HttpStatusCategory.

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import java.util.HashMap;
import java.util.regex.Pattern;
@ -29,15 +29,15 @@ import org.slf4j.LoggerFactory;
*/
public class HttpStatusTable
{
private static Logger logger = LoggerFactory.getLogger(HttpStatusTable.class);
public static final Pattern HTTP_CODE_PATTERN = Pattern.compile("\\d{3}");
private static class SingletonHolder
{
private static final HttpStatusTable instance = new HttpStatusTable();
}
private static Logger logger = LoggerFactory.getLogger(HttpStatusTable.class);
public static final Pattern HTTP_CODE_PATTERN = Pattern.compile("\\d{3}");
private HashMap<Integer, HttpStatus> codes;
/**

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import java.io.IOException;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
/**
* The Enum UserAgentBrowser.

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
/**
* The Enum UserAgentDevice.

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2022 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
/**
* The Enum UserAgentOS.

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
/**
* The Enum UserAgentType.

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import java.time.Duration;
import java.time.LocalDate;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import java.time.LocalDate;
import java.time.YearMonth;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import java.util.HashMap;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import java.time.Duration;
import java.time.LocalDate;

View file

@ -3,8 +3,11 @@ AhrefsBot
^ALittle Client
^Apache-HttpClient/
Barkrowler/
Baiduspider
bot
BingPreview
Bytespider
CensysInspect
^Conversations/
crawler
^curl/
@ -21,6 +24,7 @@ crawler
^Go-http-client
^got
^GoModuleMirror/
InternetMeasurement
^hackney/
HeadlessChrome/
^Hello
@ -54,6 +58,7 @@ Nutch-
^python/
^Python/
^Python-urllib
Qwantify
^Report Runner
^RSS Discovery Engine
SemrushBot

View file

@ -119,7 +119,7 @@ public class HttpErrorLogAnalyzer
catch (Exception exception)
{
logger.warn("Error parsing line [{}][{}]", line, exception.getMessage());
exception.printStackTrace();
// exception.printStackTrace();
this.errorCount += 1;
}
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2022-2023 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2022-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -28,8 +28,8 @@ import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.metrics.PathCounters;
import fr.devinsy.statoolinfos.metrics.UserCounters;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLogs;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLogs;
import fr.devinsy.statoolinfos.metrics.util.DatafilesProber;
/**

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2022 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2022-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -27,8 +27,8 @@ import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.metrics.PathCounters;
import fr.devinsy.statoolinfos.metrics.UserCounters;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLogIterator;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLogIterator;
import fr.devinsy.statoolinfos.util.Files;
/**

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2023 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -29,8 +29,8 @@ import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.metrics.PathCounter;
import fr.devinsy.statoolinfos.metrics.PathCounters;
import fr.devinsy.statoolinfos.metrics.UserCounters;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLogs;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLogs;
import fr.devinsy.statoolinfos.metrics.util.DatafilesProber;
import fr.devinsy.statoolinfos.util.FilesUtils;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2022 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -27,8 +27,8 @@ import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.core.StatoolInfosException;
import fr.devinsy.statoolinfos.metrics.PathCounters;
import fr.devinsy.statoolinfos.metrics.UserCounters;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLogIterator;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLogIterator;
import fr.devinsy.statoolinfos.util.Files;
/**

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -21,7 +21,7 @@ package fr.devinsy.statoolinfos.stats.ip;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLog;
/**
* The Class IpStator.

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -21,8 +21,8 @@ package fr.devinsy.statoolinfos.stats.useragent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.http.HttpStatusCategory;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpStatusCategory;
import fr.devinsy.statoolinfos.stats.visitor.VisitorStat;
import fr.devinsy.statoolinfos.stats.visitor.VisitorStatSet;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -23,7 +23,7 @@ import java.util.HashMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLog;
/**
* The Class UserAgents.

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -21,7 +21,7 @@ package fr.devinsy.statoolinfos.stats.useragent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLog;
/**
* The Class UserAgentStator.

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -21,7 +21,7 @@ package fr.devinsy.statoolinfos.stats.visitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.metrics.http.Visits;
import fr.devinsy.statoolinfos.metrics.httpaccess.Visits;
/**
* The Class VisitorStat.

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -21,8 +21,8 @@ package fr.devinsy.statoolinfos.stats.visitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.metrics.http.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.http.HttpStatusCategory;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpAccessLog;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpStatusCategory;
/**
* The Class VisitorStator.

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
@ -24,7 +24,7 @@ import java.time.LocalDateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.devinsy.statoolinfos.metrics.http.HttpStatusCategory;
import fr.devinsy.statoolinfos.metrics.httpaccess.HttpStatusCategory;
/**
* The Class UptimeCheck.

View file

@ -0,0 +1,66 @@
/*
* Copyright (C) 2022-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple service statistics tool.
*
* StatoolInfos is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* StatoolInfos is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.util;
import java.io.File;
import java.util.Iterator;
/**
* The Class FilesLines.
*/
public class FilesLines implements Iterable<String>
{
private Files source;
/**
* Instantiates a new file lines.
*
* @param source
* the source
*/
public FilesLines(final File source)
{
this(new Files(source));
}
/**
* Instantiates a new files lines.
*
* @param source
* the source
*/
public FilesLines(final Files source)
{
this.source = source;
}
/* (non-Javadoc)
* @see java.lang.Iterable#iterator()
*/
@Override
public Iterator<String> iterator()
{
Iterator<String> result;
result = new FilesLineIterator(this.source);
//
return result;
}
}

View file

@ -19,6 +19,7 @@
package fr.devinsy.statoolinfos.util;
import java.io.File;
import java.io.IOException;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
@ -76,6 +77,112 @@ public class FilesUtils
return result;
}
/**
* Read first line.
*
* @param file
* the file
* @return the string
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public static String readFirstLine(final File file) throws IOException
{
String result;
result = readFirstLine(new Files(file));
//
return result;
}
/**
* Read first line.
*
* @param files
* the file
* @return the string
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public static String readFirstLine(final Files files) throws IOException
{
String result;
FilesLineIterator iterator = null;
try
{
iterator = new FilesLineIterator(files);
if (iterator.hasNext())
{
result = iterator.next();
}
else
{
result = "";
}
}
finally
{
if (iterator != null)
{
iterator.close();
}
}
//
return result;
}
/**
* Read first line not blank.
*
* @param files
* the files
* @return the string
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public static String readFirstLineNotBlank(final Files files) throws IOException
{
String result;
FilesLineIterator iterator = null;
result = null;
try
{
iterator = new FilesLineIterator(files);
boolean ended = false;
while (!ended)
{
if (iterator.hasNext())
{
result = iterator.next();
if (!StringUtils.isBlank(result))
{
ended = true;
}
}
else
{
result = null;
}
}
}
finally
{
if (iterator != null)
{
iterator.close();
}
}
//
return result;
}
/**
* Search recursively.
*

View file

@ -37,6 +37,7 @@ public class LineIterator
{
private static Logger logger = LoggerFactory.getLogger(LineIterator.class);
private File file;
private BufferedReader in;
private String nextLine;
private boolean ready;
@ -51,6 +52,8 @@ public class LineIterator
*/
public LineIterator(final File source) throws IOException
{
this.file = source;
if (source.getName().endsWith(".gz"))
{
this.in = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(source))));
@ -72,6 +75,16 @@ public class LineIterator
IOUtils.closeQuietly(this.in);
}
/**
* Gets the file.
*
* @return the file
*/
public File getFile()
{
return this.file;
}
/**
* Checks for next.
*
@ -130,42 +143,4 @@ public class LineIterator
this.ready = true;
}
}
/**
* Read first line.
*
* @param file
* the file
* @return the string
* @throws IOException
* Signals that an I/O exception has occurred.
*/
public static String readFirstLine(final File file) throws IOException
{
String result;
LineIterator iterator = null;
try
{
iterator = new LineIterator(file);
if (iterator.hasNext())
{
result = iterator.next();
}
else
{
result = "";
}
}
finally
{
if (iterator != null)
{
iterator.close();
}
}
//
return result;
}
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2023 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple key value database.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.config.Configurator;

View file

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2023 Christian Pierre MOMON <christian@momon.org>
* Copyright (C) 2021-2024 Christian Pierre MOMON <christian@momon.org>
*
* This file is part of StatoolInfos, simple key value database.
*
@ -16,7 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
* along with StatoolInfos. If not, see <http://www.gnu.org/licenses/>.
*/
package fr.devinsy.statoolinfos.metrics.http;
package fr.devinsy.statoolinfos.metrics.httpaccess;
import java.time.LocalDateTime;

View file

@ -0,0 +1,4 @@

View file

@ -0,0 +1,4 @@
From Apache server.
Anonymized by Logar software.

View file

@ -0,0 +1,181 @@
[Tue Aug 01 10:05:58.059486 2023] [php7:error] [pid 450362] [client 132.77.126.102:52309] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Tue Aug 01 10:25:09.339218 2023] [php7:error] [pid 449467] [client 132.77.126.102:62055] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Wed Aug 02 22:19:01.984231 2023] [php7:error] [pid 475617] [client 113.22.177.10:54094] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Aug 03 21:26:58.361890 2023] [php7:error] [pid 489970] [client 194.172.202.66:37880] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri Aug 04 16:21:14.371004 2023] [php7:error] [pid 512500] [client 187.102.139.1:20538] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Aug 06 02:40:33.343873 2023] [autoindex:error] [pid 530170] [client 44.180.42.122:53954] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Sun Aug 06 20:26:59.533960 2023] [php7:error] [pid 550614] [client 241.155.148.92:19740] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Aug 07 13:45:06.871770 2023] [autoindex:error] [pid 574785] [client 138.17.155.88:52110] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/i18n/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive, referer: https://paste.libre-service.eu/js/privatebin.js?1.3.5
[Tue Aug 08 04:45:38.691352 2023] [php7:error] [pid 589059] [client 115.64.170.216:61718] script '/var/www/paste.libre-service.eu/xmlrpc.php' not found or unable to stat
[Tue Aug 08 22:41:14.826779 2023] [php7:error] [pid 609691] [client 215.72.219.38:57004] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Aug 09 02:43:01.217535 2023] [php7:error] [pid 612799] [client 206.67.108.0:16658] script '/var/www/paste.libre-service.eu/xmlrpc.php' not found or unable to stat
[Wed Aug 09 08:41:46.530511 2023] [php7:error] [pid 615497] [client 206.67.108.0:28616] script '/var/www/paste.libre-service.eu/xmlrpc.php' not found or unable to stat
[Thu Aug 10 22:02:41.005157 2023] [php7:error] [pid 643658] [client 202.214.168.192:14052] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Aug 14 00:11:12.332084 2023] [php:error] [pid 54062] [client 162.26.13.158:51568] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Aug 14 21:43:04.184619 2023] [php:error] [pid 72690] [client 125.115.16.99:40276] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri Aug 18 02:58:11.429099 2023] [php:error] [pid 144127] [client 206.67.108.0:31142] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Fri Aug 18 02:58:11.666134 2023] [php:error] [pid 143886] [client 206.67.108.0:31188] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Fri Aug 18 22:04:27.092991 2023] [php:error] [pid 153163] [client 22.155.117.162:34889] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Aug 20 20:16:08.125494 2023] [php:error] [pid 200829] [client 82.202.191.118:43590] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Aug 21 04:15:45.553713 2023] [php:error] [pid 213254] [client 206.67.108.0:26324] script '/var/www/paste.libre-service.eu/xmlrpc.php' not found or unable to stat
[Mon Aug 21 21:59:00.884419 2023] [php:error] [pid 230853] [client 163.121.68.5:59490] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Aug 24 21:30:29.969995 2023] [php:error] [pid 302332] [client 228.74.36.157:50466] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri Aug 25 03:57:37.828424 2023] [php:error] [pid 307480] [client 88.194.255.197:62193] script '/var/www/paste.libre-service.eu/xmlrpc.php' not found or unable to stat
[Sun Aug 27 02:16:50.795951 2023] [php:error] [pid 22518] [client 25.182.14.216:52466] script '/var/www/paste.libre-service.eu/xmlrpc.php' not found or unable to stat
[Tue Aug 29 19:00:04.460195 2023] [php:error] [pid 104185] [client 6.225.182.161:52390] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Sep 04 00:18:26.577858 2023] [php:error] [pid 212875] [client 189.215.254.39:53600] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Sep 04 21:27:07.206256 2023] [php:error] [pid 228612] [client 79.219.31.9:47764] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri Sep 08 12:46:02.686657 2023] [php:error] [pid 296372] [client 144.233.3.59:40698] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu
[Sat Sep 09 00:41:52.497156 2023] [php:error] [pid 306188] [client 237.238.192.81:45990] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Sep 13 01:19:18.962965 2023] [php:error] [pid 48683] [client 217.42.197.115:54274] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Sep 14 22:56:29.698897 2023] [php:error] [pid 79611] [client 107.222.228.192:35228] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Sep 17 23:37:43.837966 2023] [php:error] [pid 171945] [client 141.188.106.101:37748] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue Sep 19 06:07:51.073175 2023] [php:error] [pid 205894] [client 100.157.127.239:57594] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Sep 24 18:26:21.846365 2023] [php:error] [pid 368129] [client 67.202.190.1:34648] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Sep 27 22:47:56.739811 2023] [php:error] [pid 455037] [client 12.220.64.8:45156] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Oct 01 07:22:21.846933 2023] [php:error] [pid 556927] [client 1.147.217.112:53082] script '/var/www/paste.libre-service.eu/xmlrpc.php' not found or unable to stat
[Mon Oct 02 18:10:46.979503 2023] [php:error] [pid 596222] [client 45.50.156.20:47964] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Oct 04 02:59:43.234164 2023] [php:error] [pid 637751] [client 83.62.215.169:58316] script '/var/www/paste.libre-service.eu/xmlrpc.php' not found or unable to stat
[Mon Oct 09 13:07:58.314721 2023] [php:error] [pid 787222] [client 35.5.117.207:59349] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://www.google.com.hk
[Mon Oct 09 13:36:57.880616 2023] [php:error] [pid 773806] [client 35.5.117.207:63242] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://www.google.com.hk
[Mon Oct 09 21:17:07.925186 2023] [php:error] [pid 798037] [client 178.241.168.72:46984] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Oct 12 17:36:09.808657 2023] [php:error] [pid 878959] [client 198.35.198.95:58496] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Thu Oct 12 20:37:17.611402 2023] [php:error] [pid 877753] [client 175.123.98.224:43632] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri Oct 13 17:11:05.813110 2023] [autoindex:error] [pid 902025] [client 15.120.168.3:54296] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Mon Oct 16 10:55:34.149106 2023] [php:error] [pid 972918] [client 110.250.162.204:60617] PHP Fatal error: Uncaught Exception: A JSON error occurred: Syntax error (4) in /var/www/paste.libre-service.eu/lib/Json.php:76\nStack trace:\n#0 /var/www/paste.libre-service.eu/lib/Json.php(52): PrivateBin\\Json::_detectError()\n#1 /var/www/paste.libre-service.eu/lib/Request.php(111): PrivateBin\\Json::decode()\n#2 /var/www/paste.libre-service.eu/lib/Controller.php(163): PrivateBin\\Request->__construct()\n#3 /var/www/paste.libre-service.eu/lib/Controller.php(121): PrivateBin\\Controller->_init()\n#4 /var/www/paste.libre-service.eu/index.php(18): PrivateBin\\Controller->__construct()\n#5 {main}\n thrown in /var/www/paste.libre-service.eu/lib/Json.php on line 76
[Mon Oct 16 20:50:31.523296 2023] [php:error] [pid 972918] [client 231.165.203.156:43122] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue Oct 17 18:17:43.963850 2023] [php:error] [pid 1001558] [client 128.14.217.218:43296] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Sun Oct 22 18:47:30.242775 2023] [php:error] [pid 1144711] [client 21.112.207.24:44602] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Oct 25 21:28:50.222010 2023] [php:error] [pid 1231405] [client 237.238.192.81:46978] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat Oct 28 18:11:22.407847 2023] [php:error] [pid 1300507] [client 237.63.73.3:49840] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Oct 30 20:27:12.816068 2023] [php:error] [pid 1374094] [client 98.198.159.50:16768] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Nov 02 19:11:06.026351 2023] [php:error] [pid 1451169] [client 13.250.56.54:57654] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat Nov 04 20:21:30.705708 2023] [php:error] [pid 49546] [client 163.88.103.134:24522] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue Nov 07 14:52:09.877059 2023] [php:error] [pid 119026] [client 221.108.131.109:52535] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://www.google.com.hk
[Tue Nov 07 18:20:04.466368 2023] [php:error] [pid 119026] [client 121.135.121.237:60250] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Nov 09 17:31:31.005249 2023] [php:error] [pid 167943] [client 28.242.105.152:34492] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue Nov 14 10:32:24.554360 2023] [autoindex:error] [pid 289229] [client 163.55.160.194:34998] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Thu Nov 16 11:34:37.444979 2023] [php:error] [pid 344755] [client 80.64.101.68:50812] script '/var/www/paste.libre-service.eu/phpinfo.php' not found or unable to stat
[Mon Nov 27 16:44:36.477974 2023] [php:error] [pid 90095] [client 139.210.190.181:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue Nov 28 17:37:14.710356 2023] [php:error] [pid 103439] [client 164.211.146.0:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Dec 03 06:48:39.663695 2023] [authz_core:error] [pid 40117] [client 144.178.198.152:0] AH01630: client denied by server configuration: /var/www/paste.libre-service.eu/server-status
[Sun Dec 03 19:23:00.114079 2023] [php:error] [pid 40132] [client 161.187.174.76:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Dec 04 16:28:23.506009 2023] [php:error] [pid 52859] [client 208.118.7.62:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Dec 06 07:53:24.256769 2023] [php:error] [pid 89068] [client 110.250.162.204:0] PHP Fatal error: Uncaught Exception: A JSON error occurred: Syntax error (4) in /var/www/paste.libre-service.eu/lib/Json.php:76\nStack trace:\n#0 /var/www/paste.libre-service.eu/lib/Json.php(52): PrivateBin\\Json::_detectError()\n#1 /var/www/paste.libre-service.eu/lib/Request.php(111): PrivateBin\\Json::decode()\n#2 /var/www/paste.libre-service.eu/lib/Controller.php(163): PrivateBin\\Request->__construct()\n#3 /var/www/paste.libre-service.eu/lib/Controller.php(121): PrivateBin\\Controller->_init()\n#4 /var/www/paste.libre-service.eu/index.php(18): PrivateBin\\Controller->__construct()\n#5 {main}\n thrown in /var/www/paste.libre-service.eu/lib/Json.php on line 76
[Fri Dec 08 16:27:21.976168 2023] [php:error] [pid 124912] [client 237.234.212.243:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Tue Dec 12 01:10:47.582997 2023] [autoindex:error] [pid 201747] [client 119.66.222.1:0] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Tue Dec 12 02:23:42.609923 2023] [php:error] [pid 200913] [client 28.242.105.152:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat Dec 16 21:56:23.386924 2023] [autoindex:error] [pid 285650] [client 101.235.212.181:0] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Sun Dec 17 16:06:46.700288 2023] [php:error] [pid 297266] [client 93.167.143.132:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Dec 17 20:18:55.197395 2023] [autoindex:error] [pid 297266] [client 219.2.127.5:0] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Thu Dec 21 17:13:53.593699 2023] [php:error] [pid 364811] [client 247.41.95.75:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Dec 24 15:29:49.765399 2023] [php:error] [pid 429940] [client 222.5.109.236:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Dec 27 01:59:45.181945 2023] [php:error] [pid 473168] [client 225.60.93.196:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Dec 28 17:07:43.716620 2023] [php:error] [pid 503969] [client 254.116.119.3:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri Dec 29 11:10:21.060064 2023] [php:error] [pid 509924] [client 136.234.11.192:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Sat Dec 30 03:21:20.980243 2023] [php:error] [pid 527288] [client 161.187.174.76:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Jan 03 19:27:07.366461 2024] [php:error] [pid 603191] [client 246.139.217.182:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Jan 11 19:17:01.774814 2024] [php:error] [pid 748993] [client 64.174.235.144:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Jan 14 21:43:04.950549 2024] [php:error] [pid 813626] [client 212.168.31.79:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Jan 17 19:59:44.318717 2024] [php:error] [pid 14818] [client badb:28fb:e:f0::6c6:0305:ce518] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Jan 21 21:25:01.657585 2024] [php:error] [pid 88861] [client 78.161.58.239:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Jan 24 17:20:41.252634 2024] [php:error] [pid 129206] [client 125.69.67.13:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Jan 28 19:48:10.132421 2024] [php:error] [pid 215304] [client 62.118.125.71:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Jan 29 23:59:07.221347 2024] [php:error] [pid 232546] [client 227.137.156.203:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Jan 31 20:25:27.814686 2024] [php:error] [pid 255583] [client bad5:a1a:58:cdf::9:3d652] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Feb 01 18:55:36.288384 2024] [php:error] [pid 273515] [client 173.147.63.4:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat Feb 03 00:06:45.576418 2024] [php:error] [pid 309742] [client 145.22.60.112:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Feb 04 03:00:24.584675 2024] [php:error] [pid 327690] [client 58.243.238.244:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Feb 04 06:48:38.850959 2024] [authz_core:error] [pid 334858] [client 16.223.194.199:0] AH01630: client denied by server configuration: /var/www/paste.libre-service.eu/server-status
[Sun Feb 04 21:29:32.737778 2024] [php:error] [pid 334890] [client 194.172.202.66:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Feb 05 19:17:37.404674 2024] [php:error] [pid 347605] [client 138.156.252.193:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Feb 08 14:21:52.309766 2024] [php:error] [pid 412159] [client 132.227.112.1:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Fri Feb 09 20:28:26.005631 2024] [php:error] [pid 425010] [client 9.142.185.5:0] script '/var/www/paste.libre-service.eu/adminer.php' not found or unable to stat
[Sun Feb 11 18:18:10.888723 2024] [php:error] [pid 467574] [client 58.179.101.8:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Feb 15 17:42:05.460067 2024] [php:error] [pid 532637] [client 41.219.109.94:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Feb 18 17:28:59.390975 2024] [autoindex:error] [pid 590189] [client bad8:2c5c:a4e5:0db3:d800:6ad:0dfd:7fc2:54776] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Sun Feb 18 19:00:41.432930 2024] [php:error] [pid 598028] [client 25.15.159.89:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Feb 21 03:22:34.252065 2024] [php:error] [pid 638727] [client 193.30.44.2:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Feb 21 17:57:46.261401 2024] [php:error] [pid 648770] [client 138.213.249.4:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Wed Feb 21 22:06:07.459849 2024] [php:error] [pid 638732] [client 144.172.233.74:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Feb 22 21:26:30.643802 2024] [php:error] [pid 669687] [client 20.255.152.8:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri Feb 23 18:39:05.737823 2024] [autoindex:error] [pid 674843] [client 235.210.69.229:0] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Sun Feb 25 22:23:17.589208 2024] [php:error] [pid 716606] [client 168.20.157.200:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Feb 28 16:37:01.916109 2024] [php:error] [pid 772376] [client 145.22.60.112:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue Mar 05 19:24:07.472890 2024] [php:error] [pid 886112] [client 221.220.185.100:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue Mar 05 19:50:26.811209 2024] [php:error] [pid 886112] [client 58.23.106.71:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Sat Mar 09 00:43:10.603515 2024] [php:error] [pid 947302] [client 82.215.190.103:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Mar 10 16:09:36.651673 2024] [php:error] [pid 972841] [client 222.126.220.53:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Mar 10 20:19:00.271998 2024] [php:error] [pid 979075] [client 51.57.137.152:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Mon Mar 11 11:25:26.191409 2024] [autoindex:error] [pid 987350] [client bade:e7f1:69cd:02a1:10cd:951e:e1ac:148c:59524] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Mon Mar 11 11:25:26.569018 2024] [autoindex:error] [pid 985538] [client bade:e7f1:69cd:02a1:10cd:951e:e1ac:148c:59538] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Tue Mar 12 19:25:50.790511 2024] [php:error] [pid 1003636] [client 78.186.219.8:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri Mar 15 03:31:44.239400 2024] [autoindex:error] [pid 1057698] [client 210.69.192.227:0] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Fri Mar 15 14:04:50.873919 2024] [php:error] [pid 1067519] [client 187.11.78.123:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Mar 17 21:49:15.644603 2024] [php:error] [pid 8558] [client 92.112.235.140:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Mar 20 17:04:14.991985 2024] [php:error] [pid 46658] [client 212.168.31.79:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Mar 21 16:19:46.109351 2024] [php:error] [pid 64636] [client 20.76.63.221:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat Mar 23 17:06:58.302983 2024] [php:error] [pid 100701] [client 83.3.174.80:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Sun Mar 24 20:02:07.161261 2024] [php:error] [pid 133607] [client bad9:453a::6a98:4343:3c35:03a3:a7a94] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Mar 25 04:05:41.005108 2024] [php:error] [pid 137294] [client 123.150.135.148:0] PHP Fatal error: Uncaught Exception: A JSON error occurred: Syntax error (4) in /var/www/paste.libre-service.eu/lib/Json.php:76\nStack trace:\n#0 /var/www/paste.libre-service.eu/lib/Json.php(52): PrivateBin\\Json::_detectError()\n#1 /var/www/paste.libre-service.eu/lib/Request.php(111): PrivateBin\\Json::decode()\n#2 /var/www/paste.libre-service.eu/lib/Controller.php(163): PrivateBin\\Request->__construct()\n#3 /var/www/paste.libre-service.eu/lib/Controller.php(121): PrivateBin\\Controller->_init()\n#4 /var/www/paste.libre-service.eu/index.php(18): PrivateBin\\Controller->__construct()\n#5 {main}\n thrown in /var/www/paste.libre-service.eu/lib/Json.php on line 76
[Tue Mar 26 17:38:21.267646 2024] [php:error] [pid 165168] [client badc:ef5b:fbc0:1b88:b14b:b0:b145:f2d5:33052] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Mar 31 20:25:15.323045 2024] [php:error] [pid 250334] [client 87.152.154.182:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Apr 04 16:03:59.024289 2024] [php:error] [pid 328592] [client 235.106.190.68:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat Apr 06 20:03:21.124361 2024] [php:error] [pid 353043] [client bad8:38af::324:6776:d2f62] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Sun Apr 07 06:48:49.544546 2024] [authz_core:error] [pid 378531] [client 176.253.132.245:0] AH01630: client denied by server configuration: /var/www/paste.libre-service.eu/server-status
[Sun Apr 07 16:31:40.830258 2024] [php:error] [pid 378737] [client 177.138.70.150:0] script '/var/www/paste.libre-service.eu/app_dev.php' not found or unable to stat
[Sun Apr 07 16:31:45.530009 2024] [php:error] [pid 379577] [client 177.138.70.150:0] script '/var/www/paste.libre-service.eu/phpinfo.php' not found or unable to stat
[Sun Apr 07 16:31:54.018513 2024] [php:error] [pid 383259] [client 177.138.70.150:0] script '/var/www/paste.libre-service.eu/app_dev.php' not found or unable to stat
[Sun Apr 07 16:47:42.226058 2024] [php:error] [pid 378529] [client 152.174.208.4:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue Apr 09 20:50:02.564096 2024] [php:error] [pid 409301] [client 199.207.9.1:0] PHP Fatal error: Uncaught Exception: A JSON error occurred: Syntax error (4) in /var/www/paste.libre-service.eu/lib/Json.php:76\nStack trace:\n#0 /var/www/paste.libre-service.eu/lib/Json.php(52): PrivateBin\\Json::_detectError()\n#1 /var/www/paste.libre-service.eu/lib/Request.php(111): PrivateBin\\Json::decode()\n#2 /var/www/paste.libre-service.eu/lib/Controller.php(163): PrivateBin\\Request->__construct()\n#3 /var/www/paste.libre-service.eu/lib/Controller.php(121): PrivateBin\\Controller->_init()\n#4 /var/www/paste.libre-service.eu/index.php(18): PrivateBin\\Controller->__construct()\n#5 {main}\n thrown in /var/www/paste.libre-service.eu/lib/Json.php on line 76
[Thu Apr 11 22:46:03.900140 2024] [php:error] [pid 445571] [client 88.106.174.60:0] script '/var/www/paste.libre-service.eu/api.php' not found or unable to stat
[Sat Apr 13 06:56:54.083266 2024] [autoindex:error] [pid 483099] [client 98.46.80.218:0] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Mon Apr 15 03:43:10.056898 2024] [php:error] [pid 522913] [client 239.171.9.9:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Apr 15 04:17:57.395472 2024] [php:error] [pid 520417] [client 35.129.111.222:0] script '/var/www/paste.libre-service.eu/api.php' not found or unable to stat
[Mon Apr 15 18:49:53.813535 2024] [php:error] [pid 530512] [client 247.204.123.1:0] script '/var/www/paste.libre-service.eu/app_dev.php' not found or unable to stat
[Tue Apr 16 02:10:15.081210 2024] [php:error] [pid 538586] [client 88.106.174.60:0] script '/var/www/paste.libre-service.eu/api.php' not found or unable to stat
[Wed Apr 17 20:01:03.306246 2024] [php:error] [pid 561978] [client 128.123.103.1:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Apr 22 21:13:59.364622 2024] [php:error] [pid 647432] [client 88.106.174.60:0] script '/var/www/paste.libre-service.eu/api.php' not found or unable to stat
[Tue Apr 23 16:07:14.851053 2024] [php:error] [pid 675313] [client 252.114.219.192:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue Apr 23 17:48:52.852543 2024] [php:error] [pid 677135] [client 122.105.94.133:0] PHP Fatal error: Uncaught Exception: A JSON error occurred: Syntax error (4) in /var/www/paste.libre-service.eu/lib/Json.php:76\nStack trace:\n#0 /var/www/paste.libre-service.eu/lib/Json.php(52): PrivateBin\\Json::_detectError()\n#1 /var/www/paste.libre-service.eu/lib/Request.php(111): PrivateBin\\Json::decode()\n#2 /var/www/paste.libre-service.eu/lib/Controller.php(163): PrivateBin\\Request->__construct()\n#3 /var/www/paste.libre-service.eu/lib/Controller.php(121): PrivateBin\\Controller->_init()\n#4 /var/www/paste.libre-service.eu/index.php(18): PrivateBin\\Controller->__construct()\n#5 {main}\n thrown in /var/www/paste.libre-service.eu/lib/Json.php on line 76
[Tue Apr 23 17:48:59.193621 2024] [php:error] [pid 675309] [client 122.105.94.133:0] script '/var/www/paste.libre-service.eu/timthumb.php' not found or unable to stat
[Tue Apr 23 17:49:03.673269 2024] [php:error] [pid 675313] [client 122.105.94.133:0] script '/var/www/paste.libre-service.eu/thumb.php' not found or unable to stat
[Fri Apr 26 22:38:00.080991 2024] [php:error] [pid 736377] [client 168.60.172.176:0] PHP Fatal error: Uncaught Exception: A JSON error occurred: Syntax error (4) in /var/www/paste.libre-service.eu/lib/Json.php:76\nStack trace:\n#0 /var/www/paste.libre-service.eu/lib/Json.php(52): PrivateBin\\Json::_detectError()\n#1 /var/www/paste.libre-service.eu/lib/Request.php(111): PrivateBin\\Json::decode()\n#2 /var/www/paste.libre-service.eu/lib/Controller.php(163): PrivateBin\\Request->__construct()\n#3 /var/www/paste.libre-service.eu/lib/Controller.php(121): PrivateBin\\Controller->_init()\n#4 /var/www/paste.libre-service.eu/index.php(18): PrivateBin\\Controller->__construct()\n#5 {main}\n thrown in /var/www/paste.libre-service.eu/lib/Json.php on line 76
[Sun Apr 28 18:40:57.451648 2024] [php:error] [pid 770038] [client 130.56.215.36:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Tue Apr 30 06:05:07.183606 2024] [php:error] [pid 792640] [client bad5:fe4:88e8:8aa::ba:b3d64] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat May 04 12:23:31.577527 2024] [php:error] [pid 865410] [client 214.128.114.223:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue May 07 23:06:11.729303 2024] [php:error] [pid 920673] [client 50.105.44.140:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu May 09 08:04:27.055578 2024] [php:error] [pid 956697] [client 112.132.137.126:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Thu May 09 19:13:16.059696 2024] [php:error] [pid 956932] [client 44.204.8.84:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun May 12 00:16:25.202716 2024] [php:error] [pid 1010753] [client 77.128.172.57:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun May 12 19:31:14.683966 2024] [php:error] [pid 1025007] [client bad5:9:ad6a:5df4:::12a22] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri May 17 00:42:11.318121 2024] [php:error] [pid 43712] [client 225.43.194.123:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun May 19 23:33:00.789545 2024] [php:error] [pid 87957] [client 50.105.44.140:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed May 22 18:44:56.403351 2024] [php:error] [pid 134260] [client 121.193.106.8:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu May 23 19:07:57.091711 2024] [php:error] [pid 156959] [client 67.153.19.7:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun May 26 09:59:07.483036 2024] [php:error] [pid 212223] [client 35.129.111.222:0] script '/var/www/paste.libre-service.eu/api.php' not found or unable to stat
[Mon May 27 20:53:34.741301 2024] [php:error] [pid 233513] [client 107.97.109.237:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed May 29 19:48:20.359426 2024] [php:error] [pid 275507] [client 79.219.31.9:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Jun 02 21:03:39.585103 2024] [php:error] [pid 338947] [client 80.174.59.186:0] PHP Fatal error: Uncaught Exception: A JSON error occurred: Syntax error (4) in /var/www/paste.libre-service.eu/lib/Json.php:76\nStack trace:\n#0 /var/www/paste.libre-service.eu/lib/Json.php(52): PrivateBin\\Json::_detectError()\n#1 /var/www/paste.libre-service.eu/lib/Request.php(111): PrivateBin\\Json::decode()\n#2 /var/www/paste.libre-service.eu/lib/Controller.php(163): PrivateBin\\Request->__construct()\n#3 /var/www/paste.libre-service.eu/lib/Controller.php(121): PrivateBin\\Controller->_init()\n#4 /var/www/paste.libre-service.eu/index.php(18): PrivateBin\\Controller->__construct()\n#5 {main}\n thrown in /var/www/paste.libre-service.eu/lib/Json.php on line 76
[Mon Jun 03 23:49:03.704513 2024] [php:error] [pid 366192] [client 189.183.9.2:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Jun 06 13:01:16.037031 2024] [php:error] [pid 408314] [client 99.171.235.231:0] PHP Fatal error: Uncaught Exception: A JSON error occurred: Syntax error (4) in /var/www/paste.libre-service.eu/lib/Json.php:76\nStack trace:\n#0 /var/www/paste.libre-service.eu/lib/Json.php(52): PrivateBin\\Json::_detectError()\n#1 /var/www/paste.libre-service.eu/lib/Request.php(111): PrivateBin\\Json::decode()\n#2 /var/www/paste.libre-service.eu/lib/Controller.php(163): PrivateBin\\Request->__construct()\n#3 /var/www/paste.libre-service.eu/lib/Controller.php(121): PrivateBin\\Controller->_init()\n#4 /var/www/paste.libre-service.eu/index.php(18): PrivateBin\\Controller->__construct()\n#5 {main}\n thrown in /var/www/paste.libre-service.eu/lib/Json.php on line 76
[Sun Jun 09 06:47:41.416549 2024] [authz_core:error] [pid 467275] [client 182.245.167.39:0] AH01630: client denied by server configuration: /var/www/paste.libre-service.eu/server-status
[Sun Jun 09 09:00:20.357602 2024] [php:error] [pid 467272] [client 208.241.202.13:0] script '/var/www/paste.libre-service.eu/config.php' not found or unable to stat
[Sun Jun 09 09:00:20.362615 2024] [php:error] [pid 467271] [client 208.241.202.13:0] script '/var/www/paste.libre-service.eu/wp-config.php' not found or unable to stat
[Sun Jun 09 09:00:20.364511 2024] [authz_core:error] [pid 467588] [client 208.241.202.13:0] AH01630: client denied by server configuration: /var/www/paste.libre-service.eu/server-status
[Sun Jun 09 09:00:20.399048 2024] [php:error] [pid 467272] [client 208.241.202.13:0] script '/var/www/paste.libre-service.eu/phpinfo.php' not found or unable to stat
[Wed Jun 12 19:24:33.792315 2024] [php:error] [pid 516019] [client 51.149.187.161:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Mon Jun 17 02:01:15.243507 2024] [php:error] [pid 609478] [client 80.174.59.186:0] PHP Fatal error: Uncaught Exception: A JSON error occurred: Syntax error (4) in /var/www/paste.libre-service.eu/lib/Json.php:76\nStack trace:\n#0 /var/www/paste.libre-service.eu/lib/Json.php(52): PrivateBin\\Json::_detectError()\n#1 /var/www/paste.libre-service.eu/lib/Request.php(111): PrivateBin\\Json::decode()\n#2 /var/www/paste.libre-service.eu/lib/Controller.php(163): PrivateBin\\Request->__construct()\n#3 /var/www/paste.libre-service.eu/lib/Controller.php(121): PrivateBin\\Controller->_init()\n#4 /var/www/paste.libre-service.eu/index.php(18): PrivateBin\\Controller->__construct()\n#5 {main}\n thrown in /var/www/paste.libre-service.eu/lib/Json.php on line 76
[Tue Jun 18 02:19:36.517505 2024] [php:error] [pid 627377] [client 196.111.80.26:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue Jun 18 06:07:38.681051 2024] [autoindex:error] [pid 627380] [client 193.61.38.34:0] AH01276: Cannot serve directory /var/www/paste.libre-service.eu/.git/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
[Thu Jun 20 20:53:35.808354 2024] [php:error] [pid 663410] [client 67.193.186.160:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat Jun 22 16:50:48.752014 2024] [php:error] [pid 699513] [client badf:0534:2b00:56dc:62e2:1b:9b15:a07d:43716] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Jun 27 20:22:59.997914 2024] [php:error] [pid 791893] [client 156.238.93.163:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri Jun 28 19:24:23.746406 2024] [php:error] [pid 808222] [client 156.141.246.103:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Sat Jun 29 16:04:22.871578 2024] [php:error] [pid 835424] [client 101.65.170.190:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Jul 04 06:05:46.793602 2024] [php:error] [pid 15705] [client 112.132.137.126:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Fri Jul 05 04:05:10.104818 2024] [php:error] [pid 33897] [client 80.174.59.186:0] PHP Fatal error: Uncaught Exception: A JSON error occurred: Syntax error (4) in /var/www/paste.libre-service.eu/lib/Json.php:76\nStack trace:\n#0 /var/www/paste.libre-service.eu/lib/Json.php(52): PrivateBin\\Json::_detectError()\n#1 /var/www/paste.libre-service.eu/lib/Request.php(111): PrivateBin\\Json::decode()\n#2 /var/www/paste.libre-service.eu/lib/Controller.php(163): PrivateBin\\Request->__construct()\n#3 /var/www/paste.libre-service.eu/lib/Controller.php(121): PrivateBin\\Controller->_init()\n#4 /var/www/paste.libre-service.eu/index.php(18): PrivateBin\\Controller->__construct()\n#5 {main}\n thrown in /var/www/paste.libre-service.eu/lib/Json.php on line 76
[Sat Jul 06 01:34:05.170679 2024] [php:error] [pid 51930] [client 22.215.192.220:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat Jul 06 23:57:09.859657 2024] [php:error] [pid 63991] [client 166.199.223.30:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Thu Jul 11 20:09:24.475125 2024] [php:error] [pid 154094] [client 168.112.113.172:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat Jul 13 18:06:17.869395 2024] [php:error] [pid 179700] [client 117.104.97.199:0] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php

View file

@ -0,0 +1,22 @@
[Tue Jul 04 21:20:14.801017 2023] [php7:error] [pid 4033631] [client 135.16.170.99:30889] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Jul 05 08:09:02.162835 2023] [php7:error] [pid 4041889] [client 184.43.149.14:24962] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Wed Jul 05 08:09:03.616173 2023] [php7:error] [pid 4041888] [client 216.164.156.6:44874] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Wed Jul 05 22:02:10.008585 2023] [php7:error] [pid 4068875] [client 157.248.170.199:54556] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sun Jul 09 06:14:53.020863 2023] [php7:error] [pid 4139697] [client 97.69.228.146:57970] PHP Fatal error: Uncaught Exception: A JSON error occurred: Syntax error (4) in /var/www/paste.libre-service.eu/lib/Json.php:76\nStack trace:\n#0 /var/www/paste.libre-service.eu/lib/Json.php(52): PrivateBin\\Json::_detectError()\n#1 /var/www/paste.libre-service.eu/lib/Request.php(112): PrivateBin\\Json::decode()\n#2 /var/www/paste.libre-service.eu/lib/Controller.php(163): PrivateBin\\Request->__construct()\n#3 /var/www/paste.libre-service.eu/lib/Controller.php(121): PrivateBin\\Controller->_init()\n#4 /var/www/paste.libre-service.eu/index.php(18): PrivateBin\\Controller->__construct()\n#5 {main}\n thrown in /var/www/paste.libre-service.eu/lib/Json.php on line 76
[Sun Jul 09 22:27:38.526649 2023] [php7:error] [pid 4146450] [client 196.99.130.4:58214] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Mon Jul 10 21:19:15.170515 2023] [php7:error] [pid 4177649] [client 16.178.212.207:14356] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue Jul 11 19:39:24.076835 2023] [php7:error] [pid 4185250] [client 145.54.255.8:36738] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri Jul 14 16:35:28.308759 2023] [php7:error] [pid 65921] [client 151.53.181.142:16491] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Fri Jul 14 21:58:32.814222 2023] [php7:error] [pid 66826] [client 248.136.70.2:40422] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat Jul 15 02:36:25.894401 2023] [php7:error] [pid 71335] [client 132.236.213.62:40122] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu
[Sun Jul 16 21:01:44.834374 2023] [php7:error] [pid 110778] [client 206.201.62.216:54638] script '/var/www/paste.libre-service.eu/xmlrpc.php' not found or unable to stat
[Mon Jul 17 20:41:56.655399 2023] [php7:error] [pid 130607] [client 223.59.118.237:53150] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Thu Jul 20 20:29:50.135491 2023] [php7:error] [pid 192400] [client 152.126.25.3:63466] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri Jul 21 13:41:35.550494 2023] [php7:error] [pid 206084] [client 17.85.154.163:62890] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Fri Jul 21 19:18:25.623406 2023] [php7:error] [pid 210580] [client 161.218.222.5:43056] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Tue Jul 25 15:59:44.198292 2023] [php7:error] [pid 302912] [client 227.200.198.6:55786] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Wed Jul 26 07:14:28.853837 2023] [php7:error] [pid 317240] [client 20.139.183.243:55886] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat
[Wed Jul 26 18:55:29.665108 2023] [php7:error] [pid 334058] [client 106.94.135.60:58156] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Fri Jul 28 00:03:25.861114 2023] [php7:error] [pid 355561] [client 171.151.81.221:46038] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat Jul 29 02:00:12.352653 2023] [php7:error] [pid 379922] [client 238.115.72.92:56822] script '/var/www/paste.libre-service.eu/wp-login.php' not found or unable to stat, referer: http://paste.libre-service.eu/wp-login.php
[Sat Jul 29 20:10:32.318650 2023] [php7:error] [pid 382352] [client 232.138.114.188:56150] script '/var/www/paste.libre-service.eu/xmlrpc.php' not found or unable to stat