/** * OnionCoffee - Anonymous Communication through TOR Network * Copyright (C) 2005-2007 RWTH Aachen University, Informatik IV * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package TorJava; // USAGE: Tor.log.logXXX(Logger.YY,""); /** * central logging class for events in TorJava * * CG - ported to Android platform * * @author Lexi Pimenidis * @author Connell Gauld */ public class Logger { private static final String TagGeneral = "Tor"; private static final String TagDirectory = "TorDirectory"; private static final String TagTLS = "TorTLS"; private static final String TagCircuit = "TorCircuit"; private static final String TagStream = "TorStream"; private static final String TagCell = "TorCell"; private static final String TagCrypto = "TorCrypto"; // private static final String TagHiddenService = "TorHiddenService"; static final int GENERAL = 0; static final int DIRECTORY = 1; static final int TLS = 2; static final int CIRCUIT = 3; static final int STREAM = 4; static final int CELL = 5; static final int CRYPTO = 6; static final int HIDDENSERVICE = 7; public static final int NOLOG = 0; // log nothing public static final int ERROR = 1; // only for REAL errors public static final int WARNING = 2; // for errors that are non-critical public static final int INFO = 3; // for important messages public static final int VERBOSE = 4; // for detailed program flow public static final int RAW_DATA = 5; // for really detailed debugging // information static final String[] warningLevelToString = { "NoLog", "Error", "Warning", "Info", "Verbose", "Data" }; static int LOG_GENERAL = INFO; static int LOG_DIRECTORY = WARNING; static int LOG_TLS = ERROR; static int LOG_CIRCUIT = WARNING; static int LOG_STREAM = WARNING; static int LOG_CELL = WARNING; static int LOG_CRYPTO = WARNING; static int LOG_HIDDENSERVICE = VERBOSE; static int LOG_FILE_GENERAL = INFO; static int LOG_FILE_DIRECTORY = VERBOSE; static int LOG_FILE_TLS = ERROR; static int LOG_FILE_CIRCUIT = INFO; static int LOG_FILE_STREAM = WARNING; static int LOG_FILE_CELL = WARNING; static int LOG_FILE_CRYPTO = WARNING; static int LOG_FILE_HIDDENSERVICE = VERBOSE; Logger() { } Logger(boolean noLocalFileSystemAccess) { // Here to prevent things breaking } void close() { } // private static void addToBugReport(String type, String message) { // TODO Implement bug reporting /* * // init vairables, if neccessary if (bugReportInfo==null) * bugReportInfo = new HashMap<String,Vector<String>>(); Vector<String> * queue = null; // get queue (LIFO) for messages if * (!bugReportInfo.containsKey(type)) { queue = new Vector<String>(); * bugReportInfo.put(type,queue); } else { queue = * bugReportInfo.get(type); } // append message to end bugreport * queue.add(message); // delete oldest messages,if report is growing * too large if (queue.size()>maxLengthBugReport) * queue.removeElementAt(0); */ // } public static String getBugReport() { /* * if (bugReportInfo==null) return "empty"; * * StringBuffer sb = new StringBuffer(); Iterator i = * bugReportInfo.keySet().iterator(); while(i.hasNext()) { String type = * (String)i.next(); Vector queue = (Vector)(bugReportInfo.get(type)); * sb.append("\r\n--------------------"+type+"\r\n"); for(int * j=0;j<queue.size();++j) { sb.append( (String)(queue.elementAt(j)) ); * sb.append( "\r\n" ); } sb.append( "\r\n" ); } return sb.toString(); */ // TODO Implement bug reporting return "Bug reporting not implemented"; } public static void logGeneral(int severity, String message) { /* * if (severity <= severityBugReport) addToBugReport("General",message); * if (severity <= LOG_GENERAL) //logString("General",severity, * message); if (noOutputToFilesystem) return; if (severity <= * LOG_FILE_GENERAL) logStringFile("General",severity, message); */ logString(TagGeneral, severity, message); } public static void logDirectory(int severity, String message) { /* if (severity <= severityBugReport) addToBugReport("Dir",message); if (severity <= LOG_DIRECTORY) logString("Dir",severity, message); if (noOutputToFilesystem) return; if (severity <= LOG_FILE_DIRECTORY) logStringFile("Dir",severity, message);*/ logString(TagDirectory, severity, message); } public static void logTLS(int severity, String message) { /*if (severity <= severityBugReport) addToBugReport("TLS", message); if (severity <= LOG_TLS) logString("TLS", severity, message); if (noOutputToFilesystem) return; if (severity <= LOG_FILE_TLS) logStringFile("TLS", severity, message);*/ logString(TagTLS, severity, message); } public static void logCircuit(int severity, String message) { /*if (severity <= severityBugReport) addToBugReport("Circuit", message); if (severity <= LOG_CIRCUIT) logString("Circuit", severity, message); if (noOutputToFilesystem) return; if (severity <= LOG_FILE_CIRCUIT) logStringFile("Circuit", severity, message);*/ logString(TagCircuit, severity, message); } public static void logStream(int severity, String message) { /*if (severity <= severityBugReport) addToBugReport("Stream", message); if (severity <= LOG_STREAM) logString("Stream", severity, message); if (noOutputToFilesystem) return; if (severity <= LOG_FILE_STREAM) logStringFile("Stream", severity, message);*/ logString(TagStream, severity, message); } public static void logCell(int severity, String message) { /*if (severity <= severityBugReport) addToBugReport("Cell", message); if (severity <= LOG_CELL) logString("Cell", severity, message); if (noOutputToFilesystem) return; if (severity <= LOG_FILE_CELL) logStringFile("Cell", severity, message);*/ logString(TagCell, severity, message); } public static void logCrypto(int severity, String message) { /*if (severity <= severityBugReport) addToBugReport("Crypto", message); if (severity <= LOG_CRYPTO) logString("Crypto", severity, message); if (noOutputToFilesystem) return; if (severity <= LOG_FILE_CRYPTO) logStringFile("Crypto", severity, message);*/ logString(TagCrypto, severity, message); } public static void logHiddenService(int severity, String message) { /*if (severity <= severityBugReport) addToBugReport("HiddenService", message); if (severity <= LOG_HIDDENSERVICE) logString("HiddenService", severity, message); if (noOutputToFilesystem) return; if (severity <= LOG_FILE_HIDDENSERVICE) logStringFile("HiddenService", severity, message);*/ logString(TagCrypto, severity, message); } // ************************************************** /*static private String finalizeMessage(String type, int severity, String message) { String time = new Date().toString(); return time + " [" + type + "," + warningLevelToString[severity] + "] " + message; }*/ /* * static synchronized private void logString(String type,int severity, * String message) { if (redirectOutput instanceof javax.swing.JList) { * JList list = (JList)redirectOutput; int index = * list.getSelectedIndex()+1; * ((DefaultListModel)list.getModel()).insertElementAt * (finalizeMessage(type,severity, message),index); * list.setSelectedIndex(index); list.ensureIndexIsVisible(index); } else if * (redirectOutput instanceof javax.swing.JTextArea) { * ((JTextArea)redirectOutput).append(finalizeMessage(type,severity, * message)+"\n"); * ((JTextArea)redirectOutput).setCaretPosition(((JTextArea)redirectOutput * ).getText().length()); } else if (redirectOutput instanceof * java.awt.TextArea) { * ((TextArea)redirectOutput).append(finalizeMessage(type,severity, * message)+"\n"); } else { * System.out.println(finalizeMessage(type,severity, message)); } } */ /* * static synchronized private void logStringFile(String type,int severity, * String message) { if (noOutputToFilesystem) return; if * (TorConfig.getLogFilename() != null) { try { FileOutputStream logFile = * new FileOutputStream(TorConfig.getLogFilename(),true); message = * finalizeMessage(type,severity, message) + "\r\n"; * logFile.write(message.getBytes()); logFile.close(); } catch(IOException * e) { TorConfig.setLogFilename(null); * logGeneral(ERROR,"Error accessing Logfile " * +TorConfig.getLogFilename()+":"+e.getMessage()); } }; } */ static synchronized private void logString(String tag, int severity, String msg) { /*switch (severity) { case ERROR: Log.e(tag, msg); break; case WARNING: Log.w(tag, msg); break; case INFO: Log.i(tag, msg); break; case VERBOSE: Log.v(tag, msg); default: break; }*/ } }