From af7033d1e49e09a07a035eca2c3c009a395f3ade Mon Sep 17 00:00:00 2001
From: mykola2312 <49044616+mykola2312@users.noreply.github.com>
Date: Thu, 25 Apr 2024 02:01:43 +0300
Subject: [PATCH] CRITICAL: switch from log4j to logback because turns out CVE
is not patched
---
pom.xml | 14 ++-
src/main/java/com/mykola2312/mptv/Main.java | 15 +--
.../com/mykola2312/mptv/crawler/Crawler.java | 9 +-
.../mykola2312/mptv/crawler/WebContent.java | 7 +-
.../mykola2312/mptv/crawler/WebException.java | 5 +-
.../java/com/mykola2312/mptv/db/DBPool.java | 5 +-
.../mykola2312/mptv/task/TaskDispatcher.java | 7 +-
.../java/com/mykola2312/mptv/ui/LogPanel.java | 118 +++++++++---------
.../com/mykola2312/mptv/ui/MenuPanel.java | 6 +-
src/main/resources/logback.xml | 18 +++
10 files changed, 119 insertions(+), 85 deletions(-)
create mode 100644 src/main/resources/logback.xml
diff --git a/pom.xml b/pom.xml
index b56131e..19cb58b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,9 +68,9 @@
- log4j
- log4j
- 1.2.17
+ ch.qos.logback
+ logback-classic
+ 1.5.6
org.slf4j
@@ -106,6 +106,14 @@
httpcore
4.4.16
+
+
+
+ com.kohlschutter.junixsocket
+ junixsocket-core
+ 2.9.1
+ pom
+
diff --git a/src/main/java/com/mykola2312/mptv/Main.java b/src/main/java/com/mykola2312/mptv/Main.java
index 56cf352..6dccdd4 100644
--- a/src/main/java/com/mykola2312/mptv/Main.java
+++ b/src/main/java/com/mykola2312/mptv/Main.java
@@ -6,13 +6,14 @@ import com.mykola2312.mptv.db.DB;
import com.mykola2312.mptv.task.TaskDispatcher;
import com.mykola2312.mptv.ui.MainFrame;
import org.apache.commons.cli.*;
-import org.apache.log4j.Logger;
import org.flywaydb.core.Flyway;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.IOException;
public class Main {
- private static final Logger logger = Logger.getLogger(Main.class);
+ private static final Logger logger = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
// parse command line
@@ -27,7 +28,7 @@ public class Main {
try {
cmd = new DefaultParser().parse(options, args);
} catch (ParseException e) {
- logger.fatal(e.toString());
+ logger.error(e.toString());
System.exit(1);
return;
}
@@ -38,13 +39,13 @@ public class Main {
try {
config = Config.loadConfig(configPath);
} catch (IOException e) {
- logger.fatal(String.format("failed to read config: %s\n", e.toString()));
+ logger.error(String.format("failed to read config: %s\n", e.toString()));
System.exit(1);
return;
}
if (config.db == null) {
- logger.fatal("no database configuration. shutting down.");
+ logger.error("no database configuration. shutting down.");
System.exit(1);
return;
}
@@ -53,8 +54,8 @@ public class Main {
try {
DB.setupFromConfig(config.db);
} catch (RuntimeException e) {
- logger.fatal("setupFromConfig", e);
- logger.fatal("failed to initialize database. shutting down");
+ logger.error("setupFromConfig", e);
+ logger.error("failed to initialize database. shutting down");
System.exit(1);
return;
}
diff --git a/src/main/java/com/mykola2312/mptv/crawler/Crawler.java b/src/main/java/com/mykola2312/mptv/crawler/Crawler.java
index 65e028a..6d9dff8 100644
--- a/src/main/java/com/mykola2312/mptv/crawler/Crawler.java
+++ b/src/main/java/com/mykola2312/mptv/crawler/Crawler.java
@@ -2,7 +2,8 @@ package com.mykola2312.mptv.crawler;
import java.util.List;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
@@ -31,7 +32,7 @@ import com.mykola2312.mptv.tables.records.SourceRecord;
import com.mykola2312.mptv.task.Task;
public class Crawler implements Task {
- private static final Logger logger = Logger.getLogger(Crawler.class);
+ private static final Logger logger = LoggerFactory.getLogger(Crawler.class);
private Integer crawlId;
@@ -157,10 +158,10 @@ public class Crawler implements Task {
updateAllChannels(m3u, source.rootName);
} catch (IOException e) {
- logger.error(e);
+ logger.error(e.toString());
logger.error(String.format("failed to read local m3u file: %s", e.getMessage()));
} catch (M3UException e) {
- logger.error(e);
+ logger.error(e.toString());
logger.error(String.format("failed to parse m3u: %s", e.getMessage()));
}
}
diff --git a/src/main/java/com/mykola2312/mptv/crawler/WebContent.java b/src/main/java/com/mykola2312/mptv/crawler/WebContent.java
index c2d8f05..6d800a1 100644
--- a/src/main/java/com/mykola2312/mptv/crawler/WebContent.java
+++ b/src/main/java/com/mykola2312/mptv/crawler/WebContent.java
@@ -3,13 +3,14 @@ package com.mykola2312.mptv.crawler;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class WebContent {
public int status;
public String body = null;
- private static final Logger logger = Logger.getLogger(WebContent.class);
+ private static final Logger logger = LoggerFactory.getLogger(WebContent.class);
public WebContent(HttpResponse response) {
this.status = response.getStatusLine().getStatusCode();
@@ -19,7 +20,7 @@ public class WebContent {
this.body = EntityUtils.toString(entity, "UTF-8");
} catch (Exception e) {
logger.warn(String.format("failed to get content for %s: %s", response.toString()));
- logger.warn(e);
+ logger.warn(e.toString());
}
}
}
diff --git a/src/main/java/com/mykola2312/mptv/crawler/WebException.java b/src/main/java/com/mykola2312/mptv/crawler/WebException.java
index 63201f4..fa4fc86 100644
--- a/src/main/java/com/mykola2312/mptv/crawler/WebException.java
+++ b/src/main/java/com/mykola2312/mptv/crawler/WebException.java
@@ -5,7 +5,8 @@ import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import org.apache.http.client.ClientProtocolException;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
// TODO: make more useful this stub exception
public class WebException extends RuntimeException {
@@ -17,7 +18,7 @@ public class WebException extends RuntimeException {
public final Type type;
- protected static final Logger logger = Logger.getLogger(WebException.class);
+ protected static final Logger logger = LoggerFactory.getLogger(WebException.class);
protected void log() {
logger.warn(String.format("%s: %s", type.name(), this.getCause().getMessage()));
}
diff --git a/src/main/java/com/mykola2312/mptv/db/DBPool.java b/src/main/java/com/mykola2312/mptv/db/DBPool.java
index 712f97a..7434766 100644
--- a/src/main/java/com/mykola2312/mptv/db/DBPool.java
+++ b/src/main/java/com/mykola2312/mptv/db/DBPool.java
@@ -1,6 +1,7 @@
package com.mykola2312.mptv.db;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.checkerframework.checker.nullness.qual.*;
import java.sql.Connection;
import java.sql.DriverManager;
@@ -15,7 +16,7 @@ import org.jooq.exception.DataAccessException;
public class DBPool implements ConnectionProvider {
private String url;
- private static final Logger logger = Logger.getLogger(DBPool.class);
+ private static final Logger logger = LoggerFactory.getLogger(DBPool.class);
private class DBConnection {
public final Connection connection;
diff --git a/src/main/java/com/mykola2312/mptv/task/TaskDispatcher.java b/src/main/java/com/mykola2312/mptv/task/TaskDispatcher.java
index f2a12e2..75472b1 100644
--- a/src/main/java/com/mykola2312/mptv/task/TaskDispatcher.java
+++ b/src/main/java/com/mykola2312/mptv/task/TaskDispatcher.java
@@ -5,7 +5,8 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.jooq.*;
import org.jooq.exception.NoDataFoundException;
import org.jooq.impl.*;
@@ -16,7 +17,7 @@ import com.mykola2312.mptv.db.DB;
import com.mykola2312.mptv.tables.records.TaskRecord;
public class TaskDispatcher implements Runnable {
- private static final Logger logger = Logger.getLogger(TaskDispatcher.class);
+ private static final Logger logger = LoggerFactory.getLogger(TaskDispatcher.class);
private final HashMap taskHandles = new HashMap<>();
private boolean isRunning = false;
@@ -57,7 +58,7 @@ public class TaskDispatcher implements Runnable {
try {
task.dispatch();
} catch (Exception e) {
- logger.error(e);
+ logger.error(e.toString());
}
DSL.using(DB.CONFIG)
diff --git a/src/main/java/com/mykola2312/mptv/ui/LogPanel.java b/src/main/java/com/mykola2312/mptv/ui/LogPanel.java
index 083d70e..86b29cd 100644
--- a/src/main/java/com/mykola2312/mptv/ui/LogPanel.java
+++ b/src/main/java/com/mykola2312/mptv/ui/LogPanel.java
@@ -1,74 +1,74 @@
-package com.mykola2312.mptv.ui;
+// package com.mykola2312.mptv.ui;
-import java.awt.BorderLayout;
+// import java.awt.BorderLayout;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.text.DefaultCaret;
+// import javax.swing.JPanel;
+// import javax.swing.JScrollPane;
+// import javax.swing.JTextArea;
+// import javax.swing.text.DefaultCaret;
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.log4j.spi.Filter;;
+// import org.apache.log4j.AppenderSkeleton;
+// import org.apache.log4j.Level;
+// import org.apache.log4j.Logger;
+// import org.apache.log4j.spi.LoggingEvent;
+// import org.apache.log4j.spi.Filter;
-public class LogPanel extends JPanel {
- private class LogAppender extends AppenderSkeleton {
- private final LogPanel area;
+// public class LogPanel extends JPanel {
+// private class LogAppender extends AppenderSkeleton {
+// private final LogPanel area;
- public LogAppender(LogPanel area) {
- super();
- this.area = area;
+// public LogAppender(LogPanel area) {
+// super();
+// this.area = area;
- this.addFilter(new Filter() {
- @Override()
- public int decide(LoggingEvent event) {
- if (event.getLevel().equals(Level.DEBUG)) {
- return DENY;
- } else {
- return ACCEPT;
- }
- }
- });
- }
+// this.addFilter(new Filter() {
+// @Override()
+// public int decide(LoggingEvent event) {
+// if (event.getLevel().equals(Level.DEBUG)) {
+// return DENY;
+// } else {
+// return ACCEPT;
+// }
+// }
+// });
+// }
- @Override
- public void close() {}
+// @Override
+// public void close() {}
- @Override
- public boolean requiresLayout() {
- return false;
- }
+// @Override
+// public boolean requiresLayout() {
+// return false;
+// }
- @Override
- protected void append(LoggingEvent event) {
- area.appendEvent(event);
- }
- }
+// @Override
+// protected void append(LoggingEvent event) {
+// area.appendEvent(event);
+// }
+// }
- private final JTextArea logArea;
- private final JScrollPane scrollLog;
+// private final JTextArea logArea;
+// private final JScrollPane scrollLog;
- public void appendEvent(LoggingEvent event) {
- String content = event.getRenderedMessage();
- logArea.append(content + "\n");
- logArea.setCaretPosition(logArea.getDocument().getLength());
- }
+// public void appendEvent(LoggingEvent event) {
+// String content = event.getRenderedMessage();
+// logArea.append(content + "\n");
+// logArea.setCaretPosition(logArea.getDocument().getLength());
+// }
- public LogPanel(Logger target) {
- super(new BorderLayout());
+// public LogPanel(Logger target) {
+// super(new BorderLayout());
- logArea = new JTextArea();
- logArea.setEditable(false);
- DefaultCaret caret = (DefaultCaret) logArea.getCaret();
- caret.setUpdatePolicy(DefaultCaret.OUT_BOTTOM);
+// logArea = new JTextArea();
+// logArea.setEditable(false);
+// DefaultCaret caret = (DefaultCaret) logArea.getCaret();
+// caret.setUpdatePolicy(DefaultCaret.OUT_BOTTOM);
- scrollLog = new JScrollPane(logArea);
- scrollLog.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
- scrollLog.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
- add(scrollLog, BorderLayout.CENTER);
+// scrollLog = new JScrollPane(logArea);
+// scrollLog.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
+// scrollLog.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+// add(scrollLog, BorderLayout.CENTER);
- target.addAppender(new LogAppender(this));
- }
-}
+// target.addAppender(new LogAppender(this));
+// }
+// }
diff --git a/src/main/java/com/mykola2312/mptv/ui/MenuPanel.java b/src/main/java/com/mykola2312/mptv/ui/MenuPanel.java
index 721f011..40e8b53 100644
--- a/src/main/java/com/mykola2312/mptv/ui/MenuPanel.java
+++ b/src/main/java/com/mykola2312/mptv/ui/MenuPanel.java
@@ -3,7 +3,8 @@ package com.mykola2312.mptv.ui;
import javax.swing.*;
import java.util.List;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.jooq.impl.DSL;
import com.mykola2312.mptv.db.DB;
@@ -121,7 +122,8 @@ public class MenuPanel extends JPanel {
super(new BorderLayout());
setFont(font);
- final LogPanel logPanel = new LogPanel(Logger.getRootLogger());
+ //final LogPanel logPanel = new LogPanel(LoggerFactory.getRootLogger());
+ final JPanel logPanel = new JPanel();
final JPanel categoryPanel = new JPanel(new BorderLayout());
final JPanel channelPanel = new JPanel(new BorderLayout());
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
new file mode 100644
index 0000000..4e21681
--- /dev/null
+++ b/src/main/resources/logback.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+ %d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file