Compare commits
17 commits
c51822877f
...
2dbcd6e21a
Author | SHA1 | Date | |
---|---|---|---|
2dbcd6e21a | |||
633246dddd | |||
f1074afe95 | |||
70f6c9fb02 | |||
4612402014 | |||
a4f968a347 | |||
3bc224b779 | |||
cc545c217e | |||
080f72a374 | |||
ed2590b88b | |||
623438a218 | |||
8564cef205 | |||
7af1766f4f | |||
da1af17b04 | |||
0458382f86 | |||
02281b1ab6 | |||
8619c59a65 |
62 changed files with 1104 additions and 340 deletions
|
@ -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=
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]);
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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()
|
||||
{
|
||||
}
|
||||
}
|
|
@ -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;
|
|
@ -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;
|
||||
}
|
|
@ -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
|
|
@ -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")));
|
|
@ -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;
|
|
@ -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)
|
||||
{
|
|
@ -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.
|
|
@ -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;
|
|
@ -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.
|
|
@ -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;
|
||||
|
||||
/**
|
|
@ -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;
|
|
@ -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;
|
||||
|
|
@ -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.
|
|
@ -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.
|
|
@ -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.
|
|
@ -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.
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
||||
|
|
@ -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;
|
|
@ -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
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
66
src/fr/devinsy/statoolinfos/util/FilesLines.java
Normal file
66
src/fr/devinsy/statoolinfos/util/FilesLines.java
Normal 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;
|
||||
}
|
||||
}
|
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
|
@ -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;
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
From Apache server.
|
||||
|
||||
Anonymized by Logar software.
|
||||
|
|
@ -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
|
|
@ -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
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in a new issue