CRITICAL: switch from log4j to logback because turns out CVE is not patched

This commit is contained in:
mykola2312 2024-04-25 02:01:43 +03:00
parent b03f34ffeb
commit af7033d1e4
10 changed files with 119 additions and 85 deletions

14
pom.xml
View file

@ -68,9 +68,9 @@
<!-- Logging -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
@ -106,6 +106,14 @@
<artifactId>httpcore</artifactId>
<version>4.4.16</version>
</dependency>
<!-- MPV -->
<dependency>
<groupId>com.kohlschutter.junixsocket</groupId>
<artifactId>junixsocket-core</artifactId>
<version>2.9.1</version>
<type>pom</type>
</dependency>
</dependencies>
<build>

View file

@ -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;
}

View file

@ -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()));
}
}

View file

@ -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());
}
}
}

View file

@ -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()));
}

View file

@ -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;

View file

@ -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<String, Task> 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)

View file

@ -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));
// }
// }

View file

@ -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());

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<logger name="com.mykola2312" level="debug" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<root level="error">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>