blob: c9fc369e7a41ef1e4235bc0b0c20140b839a1b1d (
plain) (
tree)
|
|
package org.openslx.dozmod;
import java.io.File;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.spi.LoggingEvent;
import org.openslx.dozmod.gui.helper.GuiManager;
import org.openslx.dozmod.util.ProxyConfigurator;
public class App {
// Logger
private final static Logger LOGGER = Logger.getLogger(App.class);
private static void setupLogger() {
// path to the log file
final String logFilePath = Config.getPath() + System.getProperty("file.separator") + "bwSuite.log";
// check if we had an old log file
final File logFile = new File(logFilePath);
if (logFile.exists() && !logFile.isDirectory()) {
// we have one, rename it to 'bwSuite.log.old'
LOGGER.info("renaming old log file");
try {
File oldFile = new File(logFilePath + ".old");
FileUtils.forceDelete(oldFile);
logFile.renameTo(oldFile);
FileUtils.forceDelete(logFile);
} catch (Exception e) {
LOGGER.error("Could not move '" + logFilePath + "' to '" + logFilePath + ".old'", e);
}
}
// add file appender to global logger
FileAppender fa = null;
try {
fa = new FileAppender(new PatternLayout("%d [%F:%M] %m%n"), logFilePath);
// All classes should log to file, configure global file appender.
} catch (IOException e) {
e.printStackTrace();
BasicConfigurator.configure();
return;
}
final FileAppender ffa = fa;
final Pattern re = Pattern.compile("authorization:(\\w|\\+|/|\\s)+", Pattern.CASE_INSENSITIVE
| Pattern.MULTILINE);
AppenderSkeleton ap = new AppenderSkeleton() {
@Override
public boolean requiresLayout() {
return ffa.requiresLayout();
}
@Override
public void close() {
ffa.close();
}
@Override
protected void append(LoggingEvent event) {
String s = event.getRenderedMessage();
if (s.contains("uthorization")) {
Matcher m = re.matcher(s);
if (!m.find()) {
LOGGER.warn("Could not match pattern!");
} else {
s = m.replaceAll("Authorization: ***********");
LOGGER.info("Patched log message");
}
}
ffa.append(new LoggingEvent(event.getFQNOfLoggerClass(), event.getLogger(),
event.getTimeStamp(), event.getLevel(), s, event.getThreadName(),
event.getThrowableInformation(), event.getNDC(), event.getLocationInformation(),
event.getProperties()));
}
};
BasicConfigurator.configure(ap);
LOGGER.info("Starting logging to: " + logFilePath);
}
public static void main(final String[] args) {
// Pruefe und Erzeuge gegebenfalls Config
try {
Config.init();
} catch (IOException e) {
e.printStackTrace();
return;
}
setupLogger();
// initialise the proxy settings
try {
ProxyConfigurator.init();
} catch (IOException e) {
LOGGER.error("IOException when trying to initialise the proxy, see trace: ", e);
}
// start the GUI
GuiManager.initGui();
}
}
|