CRITICAL: switch from log4j to logback because turns out CVE is not patched
This commit is contained in:
parent
b03f34ffeb
commit
af7033d1e4
10 changed files with 119 additions and 85 deletions
14
pom.xml
14
pom.xml
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
// }
|
||||
// }
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
||||
|
|
|
|||
18
src/main/resources/logback.xml
Normal file
18
src/main/resources/logback.xml
Normal 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>
|
||||
Loading…
Add table
Reference in a new issue