This is an automated email from the ASF dual-hosted git repository.
joao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/main by this push:
new 501d8c1e091 Add logs to CPVM connection process (#8924)
501d8c1e091 is described below
commit 501d8c1e09173717a4ed98b43acf41cdcd245f12
Author: Bernardo De Marco Gonçalves <[email protected]>
AuthorDate: Mon Sep 9 15:39:42 2024 -0300
Add logs to CPVM connection process (#8924)
* increment cpvm connection logs
* remove sourceIp variable
* increment cpvm connection logs
* extract duplicate error messages to variables
* change logs level from trace to debug in authenticateToVNCServer
* add logs in trace level inside of connection loop
* remove redundant trace log
* add logs to ConsoleProxyNoVNCHandler class
* retrieve client source IP
* add periods to log messages
* change log levels from warn to error inside of catch blocks
* add client IP to successful authentication log
* replace concatenation with String.format()
* remove String.format() and use log4j2 new features instead
* remove String.format() and use log4j2 new features instead
* apply Daan's suggestion
Co-authored-by: dahn <[email protected]>
* resolve conflicts
* fix logs with three parameters
* get correct client IP
* use log4j dependencies directly
* apply winterhazel's suggestion
Co-authored-by: Fabricio Duarte <[email protected]>
* remove log proxy
* address winterhazel's suggestions on ConsoleProxyNoVncClient class
* address winterhazel's suggestions on ConsoleProxyNoVNCHandler class
* address winterhazel's suggestions on ConsoleProxyNoVNCHandler class
Co-authored-by: Fabricio Duarte <[email protected]>
---------
Co-authored-by: dahn <[email protected]>
Co-authored-by: Fabricio Duarte <[email protected]>
---
.../com/cloud/servlet/ConsoleProxyClientParam.java | 17 ++
.../com/cloud/consoleproxy/AjaxFIFOImageCache.java | 5 +-
.../java/com/cloud/consoleproxy/ConsoleProxy.java | 8 +-
.../consoleproxy/ConsoleProxyAjaxHandler.java | 5 +-
.../consoleproxy/ConsoleProxyAjaxImageHandler.java | 5 +-
.../ConsoleProxyBaseServerFactoryImpl.java | 5 +-
.../consoleproxy/ConsoleProxyClientParam.java | 16 ++
.../cloud/consoleproxy/ConsoleProxyCmdHandler.java | 5 +-
.../ConsoleProxyHttpHandlerHelper.java | 5 +-
.../consoleproxy/ConsoleProxyLoggerFactory.java | 104 ----------
.../cloud/consoleproxy/ConsoleProxyMonitor.java | 5 +-
.../consoleproxy/ConsoleProxyNoVNCHandler.java | 47 +++--
.../consoleproxy/ConsoleProxyNoVNCServer.java | 5 +-
.../consoleproxy/ConsoleProxyNoVncClient.java | 38 ++--
.../consoleproxy/ConsoleProxyResourceHandler.java | 5 +-
.../consoleproxy/ConsoleProxyThumbnailHandler.java | 5 +-
.../consoleproxy/rdp/RdpBufferedImageCanvas.java | 6 +-
.../java/com/cloud/consoleproxy/util/Logger.java | 223 ---------------------
.../com/cloud/consoleproxy/util/LoggerFactory.java | 21 --
.../java/com/cloud/consoleproxy/util/RawHTTP.java | 5 +-
.../consoleproxy/vnc/BufferedImageCanvas.java | 6 +-
.../com/cloud/consoleproxy/vnc/NoVncClient.java | 21 +-
.../java/com/cloud/consoleproxy/vnc/VncClient.java | 6 +-
.../consoleproxy/vnc/VncClientPacketSender.java | 6 +-
.../consoleproxy/vnc/VncServerPacketReceiver.java | 6 +-
.../vnc/packet/server/AbstractRect.java | 5 +-
.../vnc/packet/server/ServerCutText.java | 6 +-
.../consoleproxy/vnc/security/VncAuthSecurity.java | 6 +-
.../consoleproxy/vnc/security/VncTLSSecurity.java | 6 +-
.../websocket/WebSocketReverseProxy.java | 6 +-
30 files changed, 172 insertions(+), 437 deletions(-)
diff --git
a/server/src/main/java/com/cloud/servlet/ConsoleProxyClientParam.java
b/server/src/main/java/com/cloud/servlet/ConsoleProxyClientParam.java
index e23778c0b98..b416ab98288 100644
--- a/server/src/main/java/com/cloud/servlet/ConsoleProxyClientParam.java
+++ b/server/src/main/java/com/cloud/servlet/ConsoleProxyClientParam.java
@@ -34,7 +34,16 @@ public class ConsoleProxyClientParam {
private String username;
private String password;
+ /**
+ * IP that has generated the console endpoint
+ */
private String sourceIP;
+
+ /**
+ * IP of the client that has connected to the console
+ */
+ private String clientIp;
+
private String websocketUrl;
private String sessionUuid;
@@ -201,4 +210,12 @@ public class ConsoleProxyClientParam {
public void setSessionUuid(String sessionUuid) {
this.sessionUuid = sessionUuid;
}
+
+ public String getClientIp() {
+ return clientIp;
+ }
+
+ public void setClientIp(String clientIp) {
+ this.clientIp = clientIp;
+ }
}
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/AjaxFIFOImageCache.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/AjaxFIFOImageCache.java
index 5a0a29977b5..1b94578d1e0 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/AjaxFIFOImageCache.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/AjaxFIFOImageCache.java
@@ -21,10 +21,11 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
public class AjaxFIFOImageCache {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
private List<Integer> fifoQueue;
private Map<Integer, byte[]> cache;
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java
index c841f76540d..22922f43f93 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxy.java
@@ -39,17 +39,19 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.core.config.Configurator;
import org.eclipse.jetty.websocket.api.Session;
-import com.cloud.consoleproxy.util.Logger;
import com.cloud.utils.PropertiesUtil;
import com.google.gson.Gson;
import com.sun.net.httpserver.HttpServer;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
/**
*
* ConsoleProxy, singleton class that manages overall activities in console
proxy process. To make legacy code work, we still
*/
public class ConsoleProxy {
- protected static Logger LOGGER = Logger.getLogger(ConsoleProxy.class);
+ protected static Logger LOGGER = LogManager.getLogger(ConsoleProxy.class);
public static final int KEYBOARD_RAW = 0;
public static final int KEYBOARD_COOKED = 1;
@@ -280,7 +282,6 @@ public class ConsoleProxy {
public static void startWithContext(Properties conf, Object context,
byte[] ksBits, String ksPassword, String password, Boolean
isSourceIpCheckEnabled) {
setEncryptorPassword(password);
configLog4j();
- Logger.setFactory(new ConsoleProxyLoggerFactory());
LOGGER.info("Start console proxy with context");
if (conf != null) {
@@ -427,7 +428,6 @@ public class ConsoleProxy {
public static void main(String[] argv) {
standaloneStart = true;
configLog4j();
- Logger.setFactory(new ConsoleProxyLoggerFactory());
InputStream confs =
ConsoleProxy.class.getResourceAsStream("/conf/consoleproxy.properties");
Properties conf = new Properties();
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxHandler.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxHandler.java
index e42917db6aa..bfd25188c65 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxHandler.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxHandler.java
@@ -32,10 +32,11 @@ import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
public class ConsoleProxyAjaxHandler implements HttpHandler {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
public ConsoleProxyAjaxHandler() {
}
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxImageHandler.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxImageHandler.java
index af200b0a0e8..bb5b9f6ec31 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxImageHandler.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyAjaxImageHandler.java
@@ -28,10 +28,11 @@ import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
public class ConsoleProxyAjaxImageHandler implements HttpHandler {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
@Override
public void handle(HttpExchange t) throws IOException {
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyBaseServerFactoryImpl.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyBaseServerFactoryImpl.java
index b178f0d5d68..548b1a99261 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyBaseServerFactoryImpl.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyBaseServerFactoryImpl.java
@@ -23,10 +23,11 @@ import javax.net.ssl.SSLServerSocket;
import com.sun.net.httpserver.HttpServer;
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
public class ConsoleProxyBaseServerFactoryImpl implements
ConsoleProxyServerFactory {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
@Override
public void init(byte[] ksBits, String ksPassword) {
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyClientParam.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyClientParam.java
index aa1f2223a8c..01c4fa6480e 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyClientParam.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyClientParam.java
@@ -39,8 +39,16 @@ public class ConsoleProxyClientParam {
private String password;
private String websocketUrl;
+ /**
+ * IP that has generated the console endpoint
+ */
private String sourceIP;
+ /**
+ * IP of the client that has connected to the console
+ */
+ private String clientIp;
+
private String sessionUuid;
/**
@@ -204,4 +212,12 @@ public class ConsoleProxyClientParam {
public void setClientProvidedExtraSecurityToken(String
clientProvidedExtraSecurityToken) {
this.clientProvidedExtraSecurityToken =
clientProvidedExtraSecurityToken;
}
+
+ public String getClientIp() {
+ return clientIp;
+ }
+
+ public void setClientIp(String clientIp) {
+ this.clientIp = clientIp;
+ }
}
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyCmdHandler.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyCmdHandler.java
index 400eb2b9984..606b4509512 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyCmdHandler.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyCmdHandler.java
@@ -24,10 +24,11 @@ import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
public class ConsoleProxyCmdHandler implements HttpHandler {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
@Override
public void handle(HttpExchange t) throws IOException {
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyHttpHandlerHelper.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyHttpHandlerHelper.java
index fb9d0794c22..48ac5f44ff2 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyHttpHandlerHelper.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyHttpHandlerHelper.java
@@ -19,10 +19,11 @@ package com.cloud.consoleproxy;
import java.util.HashMap;
import java.util.Map;
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
public class ConsoleProxyHttpHandlerHelper {
- protected static Logger LOGGER =
Logger.getLogger(ConsoleProxyHttpHandlerHelper.class);
+ protected static Logger LOGGER =
LogManager.getLogger(ConsoleProxyHttpHandlerHelper.class);
public static Map<String, String> getQueryMap(String query) {
String[] params = query.split("&");
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyLoggerFactory.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyLoggerFactory.java
deleted file mode 100644
index 74e393f64d8..00000000000
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyLoggerFactory.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.consoleproxy;
-
-import com.cloud.consoleproxy.util.Logger;
-import com.cloud.consoleproxy.util.LoggerFactory;
-import org.apache.logging.log4j.LogManager;
-
-public class ConsoleProxyLoggerFactory implements LoggerFactory {
- public ConsoleProxyLoggerFactory() {
- }
-
- @Override
- public Logger getLogger(Class<?> clazz) {
- return new Log4jLogger(LogManager.getLogger(clazz));
- }
-
- public static class Log4jLogger extends Logger {
- private org.apache.logging.log4j.Logger logger;
-
- public Log4jLogger(org.apache.logging.log4j.Logger logger) {
- this.logger = logger;
- }
-
- @Override
- public boolean isTraceEnabled() {
- return logger.isTraceEnabled();
- }
-
- @Override
- public boolean isDebugEnabled() {
- return logger.isDebugEnabled();
- }
-
- @Override
- public boolean isInfoEnabled() {
- return logger.isInfoEnabled();
- }
-
- @Override
- public void trace(Object message) {
- logger.trace(message);
- }
-
- @Override
- public void trace(Object message, Throwable exception) {
- logger.trace(message, exception);
- }
-
- @Override
- public void info(Object message) {
- logger.info(message);
- }
-
- @Override
- public void info(Object message, Throwable exception) {
- logger.info(message, exception);
- }
-
- @Override
- public void debug(Object message) {
- logger.debug(message);
- }
-
- @Override
- public void debug(Object message, Throwable exception) {
- logger.debug(message, exception);
- }
-
- @Override
- public void warn(Object message) {
- logger.warn(message);
- }
-
- @Override
- public void warn(Object message, Throwable exception) {
- logger.warn(message, exception);
- }
-
- @Override
- public void error(Object message) {
- logger.error(message);
- }
-
- @Override
- public void error(Object message, Throwable exception) {
- logger.error(message, exception);
- }
- }
-}
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyMonitor.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyMonitor.java
index 378072ad804..3e224d8d4c4 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyMonitor.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyMonitor.java
@@ -24,7 +24,8 @@ import java.util.HashMap;
import java.util.Map;
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.config.Configurator;
//
@@ -33,7 +34,7 @@ import org.apache.logging.log4j.core.config.Configurator;
// itself and the shell script will re-launch console proxy
//
public class ConsoleProxyMonitor {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
private String[] _argv;
private Map<String, String> _argMap = new HashMap<String, String>();
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCHandler.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCHandler.java
index be0db7b8fb4..a9639d0b32e 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCHandler.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCHandler.java
@@ -23,7 +23,8 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.websocket.api.Session;
@@ -40,7 +41,7 @@ import
org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
public class ConsoleProxyNoVNCHandler extends WebSocketHandler {
private ConsoleProxyNoVncClient viewer = null;
- protected Logger logger = Logger.getLogger(ConsoleProxyNoVNCHandler.class);
+ protected Logger logger = LogManager.getLogger(getClass());
public ConsoleProxyNoVNCHandler() {
super();
@@ -82,15 +83,16 @@ public class ConsoleProxyNoVNCHandler extends
WebSocketHandler {
String ticket = queryMap.get("ticket");
String displayName = queryMap.get("displayname");
String ajaxSessionIdStr = queryMap.get("sess");
- String console_url = queryMap.get("consoleurl");
- String console_host_session = queryMap.get("sessionref");
- String vm_locale = queryMap.get("locale");
+ String consoleUrl = queryMap.get("consoleurl");
+ String consoleHostSession = queryMap.get("sessionref");
+ String vmLocale = queryMap.get("locale");
String hypervHost = queryMap.get("hypervHost");
String username = queryMap.get("username");
String password = queryMap.get("password");
String sourceIP = queryMap.get("sourceIP");
String websocketUrl = queryMap.get("websocketUrl");
String sessionUuid = queryMap.get("sessionUuid");
+ String clientIp =
session.getRemoteAddress().getAddress().getHostAddress();
if (tag == null)
tag = "";
@@ -104,7 +106,7 @@ public class ConsoleProxyNoVNCHandler extends
WebSocketHandler {
try {
port = Integer.parseInt(portStr);
} catch (NumberFormatException e) {
- logger.warn("Invalid number parameter in query string: " +
portStr);
+ logger.error("Invalid port value in query string: {}. Expected a
number.", portStr, e);
throw new IllegalArgumentException(e);
}
@@ -112,12 +114,12 @@ public class ConsoleProxyNoVNCHandler extends
WebSocketHandler {
try {
ajaxSessionId = Long.parseLong(ajaxSessionIdStr);
} catch (NumberFormatException e) {
- logger.warn("Invalid number parameter in query string: " +
ajaxSessionIdStr);
+ logger.error("Invalid ajaxSessionId (sess) value in query
string: {}. Expected a number.", ajaxSessionIdStr, e);
throw new IllegalArgumentException(e);
}
}
- if (! checkSessionSourceIp(session, sourceIP)) {
+ if (!checkSessionSourceIp(session, sourceIP, clientIp)) {
return;
}
@@ -129,14 +131,17 @@ public class ConsoleProxyNoVNCHandler extends
WebSocketHandler {
param.setClientTag(tag);
param.setTicket(ticket);
param.setClientDisplayName(displayName);
- param.setClientTunnelUrl(console_url);
- param.setClientTunnelSession(console_host_session);
- param.setLocale(vm_locale);
+ param.setClientTunnelUrl(consoleUrl);
+ param.setClientTunnelSession(consoleHostSession);
+ param.setLocale(vmLocale);
param.setHypervHost(hypervHost);
param.setUsername(username);
param.setPassword(password);
param.setWebsocketUrl(websocketUrl);
param.setSessionUuid(sessionUuid);
+ param.setSourceIP(sourceIP);
+ param.setClientIp(clientIp);
+
if (queryMap.containsKey("extraSecurityToken")) {
param.setExtraSecurityToken(queryMap.get("extraSecurityToken"));
}
@@ -144,8 +149,9 @@ public class ConsoleProxyNoVNCHandler extends
WebSocketHandler {
param.setClientProvidedExtraSecurityToken(queryMap.get("extra"));
}
viewer = ConsoleProxy.getNoVncViewer(param, ajaxSessionIdStr,
session);
+ logger.info("Viewer has been created successfully [session UUID:
{}, client IP: {}].", sessionUuid, clientIp);
} catch (Exception e) {
- logger.warn("Failed to create viewer due to " + e.getMessage(), e);
+ logger.error("Failed to create viewer [session UUID: {}, client
IP: {}] due to {}.", sessionUuid, clientIp, e.getMessage(), e);
return;
} finally {
if (viewer == null) {
@@ -154,32 +160,35 @@ public class ConsoleProxyNoVNCHandler extends
WebSocketHandler {
}
}
- private boolean checkSessionSourceIp(final Session session, final String
sourceIP) throws IOException {
- // Verify source IP
- String sessionSourceIP =
session.getRemoteAddress().getAddress().getHostAddress();
- logger.info("Get websocket connection request from remote IP : " +
sessionSourceIP);
- if (ConsoleProxy.isSourceIpCheckEnabled && (sessionSourceIP == null ||
! sessionSourceIP.equals(sourceIP))) {
- logger.warn("Failed to access console as the source IP to request
the console is " + sourceIP);
+ private boolean checkSessionSourceIp(final Session session, final String
sourceIP, String sessionSourceIP) throws IOException {
+ logger.info("Verifying session source IP {} from WebSocket connection
request.", sessionSourceIP);
+ if (ConsoleProxy.isSourceIpCheckEnabled && (sessionSourceIP == null ||
!sessionSourceIP.equals(sourceIP))) {
+ logger.warn("Failed to access console as the source IP to request
the console is {}.", sourceIP);
session.disconnect();
return false;
}
+ logger.debug("Session source IP {} has been verified successfully.",
sessionSourceIP);
return true;
}
@OnWebSocketClose
public void onClose(Session session, int statusCode, String reason) throws
IOException, InterruptedException {
+ String sessionSourceIp =
session.getRemoteAddress().getAddress().getHostAddress();
+ logger.debug("Closing WebSocket session [source IP: {}, status code:
{}].", sessionSourceIp, statusCode);
if (viewer != null) {
ConsoleProxy.removeViewer(viewer);
}
+ logger.debug("WebSocket session [source IP: {}, status code: {}]
closed successfully.", sessionSourceIp, statusCode);
}
@OnWebSocketFrame
public void onFrame(Frame f) throws IOException {
+ logger.trace("Sending client [ID: {}] frame of {} bytes.",
viewer.getClientId(), f.getPayloadLength());
viewer.sendClientFrame(f);
}
@OnWebSocketError
public void onError(Throwable cause) {
- logger.error("Error on websocket", cause);
+ logger.error("Error on WebSocket [client ID: {}, session UUID: {}].",
cause, viewer.getClientId(), viewer.getSessionUuid());
}
}
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCServer.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCServer.java
index f65754169f6..3d94ed26b0b 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCServer.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVNCServer.java
@@ -22,7 +22,8 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.security.KeyStore;
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.eclipse.jetty.server.HttpConfiguration;
import org.eclipse.jetty.server.HttpConnectionFactory;
@@ -34,7 +35,7 @@ import org.eclipse.jetty.util.ssl.SslContextFactory;
public class ConsoleProxyNoVNCServer {
- protected static Logger LOGGER =
Logger.getLogger(ConsoleProxyNoVNCServer.class);
+ protected static Logger LOGGER =
LogManager.getLogger(ConsoleProxyNoVNCServer.class);
public static final int WS_PORT = 8080;
public static final int WSS_PORT = 8443;
private static final String VNC_CONF_FILE_LOCATION = "/root/vncport";
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java
index cf9e3cfddcc..fece5bfaa22 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyNoVncClient.java
@@ -75,9 +75,9 @@ public class ConsoleProxyNoVncClient implements
ConsoleProxyClient {
@Override
public boolean isFrontEndAlive() {
- if (!connectionAlive || System.currentTimeMillis()
- - getClientLastFrontEndActivityTime() >
ConsoleProxy.VIEWER_LINGER_SECONDS * 1000) {
- logger.info("Front end has been idle for too long");
+ long unusedTime = System.currentTimeMillis() -
getClientLastFrontEndActivityTime();
+ if (!connectionAlive || unusedTime >
ConsoleProxy.VIEWER_LINGER_SECONDS * 1000) {
+ logger.info("Front end has been idle for too long ({} ms).",
unusedTime);
return false;
}
return true;
@@ -95,23 +95,24 @@ public class ConsoleProxyNoVncClient implements
ConsoleProxyClient {
client = new NoVncClient();
connectionAlive = true;
this.sessionUuid = param.getSessionUuid();
+ String clientSourceIp = param.getClientIp();
+ logger.debug("Initializing client from IP {}.", clientSourceIp);
updateFrontEndActivityTime();
Thread worker = new Thread(new Runnable() {
public void run() {
try {
-
String tunnelUrl = param.getClientTunnelUrl();
String tunnelSession = param.getClientTunnelSession();
String websocketUrl = param.getWebsocketUrl();
connectClientToVNCServer(tunnelUrl, tunnelSession,
websocketUrl);
-
- authenticateToVNCServer();
+ authenticateToVNCServer(clientSourceIp);
int readBytes;
byte[] b;
while (connectionAlive) {
+ logger.trace("Connection with client [{}] [IP: {}] is
alive.", clientId, clientSourceIp);
if (client.isVncOverWebSocketConnection()) {
if (client.isVncOverWebSocketConnectionOpen()) {
updateFrontEndActivityTime();
@@ -122,7 +123,7 @@ public class ConsoleProxyNoVncClient implements
ConsoleProxyClient {
int nextBytes = client.getNextBytes();
bytesArr = new byte[nextBytes];
client.readBytes(bytesArr, nextBytes);
- logger.trace(String.format("Read [%s] bytes from
client [%s]", nextBytes, clientId));
+ logger.trace("Read [{}] bytes from client [{}].",
nextBytes, clientId);
if (nextBytes > 0) {
session.getRemote().sendBytes(ByteBuffer.wrap(bytesArr));
updateFrontEndActivityTime();
@@ -132,7 +133,7 @@ public class ConsoleProxyNoVncClient implements
ConsoleProxyClient {
} else {
b = new byte[100];
readBytes = client.read(b);
- logger.trace(String.format("Read [%s] bytes from
client [%s]", readBytes, clientId));
+ logger.trace("Read [{}] bytes from client [{}].",
readBytes, clientId);
if (readBytes == -1 || (readBytes > 0 &&
!sendReadBytesToNoVNC(b, readBytes))) {
connectionAlive = false;
}
@@ -143,7 +144,7 @@ public class ConsoleProxyNoVncClient implements
ConsoleProxyClient {
logger.error("Error on sleep for vnc sessions", e);
}
}
- logger.info(String.format("Connection with client [%s] is
dead.", clientId));
+ logger.info("Connection with client [{}] [IP: {}] is
dead.", clientId, clientSourceIp);
} catch (IOException e) {
logger.error("Error on VNC client", e);
}
@@ -158,7 +159,7 @@ public class ConsoleProxyNoVncClient implements
ConsoleProxyClient {
session.getRemote().sendBytes(ByteBuffer.wrap(b, 0, readBytes));
updateFrontEndActivityTime();
} catch (WebSocketException | IOException e) {
- logger.debug("Connection exception", e);
+ logger.error("VNC server connection exception.", e);
return false;
}
return true;
@@ -176,20 +177,24 @@ public class ConsoleProxyNoVncClient implements
ConsoleProxyClient {
*
* Reference:
https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#7protocol-messages
*/
- private void authenticateToVNCServer() throws IOException {
+ private void authenticateToVNCServer(String clientSourceIp) throws
IOException {
if (client.isVncOverWebSocketConnection()) {
+ logger.debug("Authentication skipped for client [{}] [IP: {}] to
VNC server due to WebSocket protocol usage.", clientId, clientSourceIp);
return;
}
if (!client.isVncOverNioSocket()) {
+ logger.debug("Authenticating client [{}] [IP: {}] to VNC server.",
clientId, clientSourceIp);
String ver = client.handshake();
session.getRemote().sendBytes(ByteBuffer.wrap(ver.getBytes(), 0,
ver.length()));
byte[] b = client.authenticateTunnel(getClientHostPassword());
session.getRemote().sendBytes(ByteBuffer.wrap(b, 0, 4));
} else {
+ logger.debug("Authenticating client [{}] [IP: {}] to VNC server
through NIO Socket.", clientId, clientSourceIp);
authenticateVNCServerThroughNioSocket();
}
+ logger.debug("Client [{}] [IP: {}] has been authenticated successfully
to VNC server.", clientId, clientSourceIp);
}
/**
@@ -233,9 +238,6 @@ public class ConsoleProxyNoVncClient implements
ConsoleProxyClient {
protected void authenticateVNCServerThroughNioSocket() {
handshakePhase();
initialisationPhase();
- if (logger.isDebugEnabled()) {
- logger.debug("Authenticated successfully");
- }
}
/**
@@ -289,8 +291,7 @@ public class ConsoleProxyNoVncClient implements
ConsoleProxyClient {
logger.info(String.format("Connect to VNC over websocket URL:
%s", websocketUrl));
ConsoleProxy.ensureRoute(NetUtils.extractHost(websocketUrl));
client.connectToWebSocket(websocketUrl, session);
- } else if (tunnelUrl != null && !tunnelUrl.isEmpty() &&
tunnelSession != null
- && !tunnelSession.isEmpty()) {
+ } else if (StringUtils.isNotBlank(tunnelUrl) &&
StringUtils.isNotBlank(tunnelSession)) {
URI uri = new URI(tunnelUrl);
logger.info(String.format("Connect to VNC server via tunnel.
url: %s, session: %s",
tunnelUrl, tunnelSession));
@@ -304,8 +305,10 @@ public class ConsoleProxyNoVncClient implements
ConsoleProxyClient {
ConsoleProxy.ensureRoute(getClientHostAddress());
client.connectTo(getClientHostAddress(), getClientHostPort());
}
+
+ logger.info("Connection to VNC server has been established
successfully.");
} catch (Throwable e) {
- logger.error("Unexpected exception", e);
+ logger.error("Unexpected exception while connecting to VNC
server.", e);
}
}
@@ -370,6 +373,7 @@ public class ConsoleProxyNoVncClient implements
ConsoleProxyClient {
}
public void updateFrontEndActivityTime() {
+ logger.trace("Updating last front end activity time.");
lastFrontEndActivityTime = System.currentTimeMillis();
}
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyResourceHandler.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyResourceHandler.java
index 949e632786c..8764326b503 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyResourceHandler.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyResourceHandler.java
@@ -28,10 +28,11 @@ import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
public class ConsoleProxyResourceHandler implements HttpHandler {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
static Map<String, String> s_mimeTypes;
static {
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyThumbnailHandler.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyThumbnailHandler.java
index 0103d9fa70e..e2ec7df5d69 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyThumbnailHandler.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyThumbnailHandler.java
@@ -32,10 +32,11 @@ import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
public class ConsoleProxyThumbnailHandler implements HttpHandler {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
public ConsoleProxyThumbnailHandler() {
}
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/rdp/RdpBufferedImageCanvas.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/rdp/RdpBufferedImageCanvas.java
index 7fd19a15d2f..3a40b79437b 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/rdp/RdpBufferedImageCanvas.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/rdp/RdpBufferedImageCanvas.java
@@ -25,10 +25,12 @@ import java.util.List;
import com.cloud.consoleproxy.ConsoleProxyRdpClient;
import com.cloud.consoleproxy.util.ImageHelper;
-import com.cloud.consoleproxy.util.Logger;
import com.cloud.consoleproxy.util.TileInfo;
import com.cloud.consoleproxy.vnc.FrameBufferCanvas;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
import common.BufferedImageCanvas;
public class RdpBufferedImageCanvas extends BufferedImageCanvas implements
FrameBufferCanvas {
@@ -36,7 +38,7 @@ public class RdpBufferedImageCanvas extends
BufferedImageCanvas implements Frame
*
*/
private static final long serialVersionUID = 1L;
- protected Logger logger = Logger.getLogger(RdpBufferedImageCanvas.class);
+ protected Logger logger =
LogManager.getLogger(RdpBufferedImageCanvas.class);
private final ConsoleProxyRdpClient _rdpClient;
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/Logger.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/Logger.java
deleted file mode 100644
index 042d64977c2..00000000000
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/Logger.java
+++ /dev/null
@@ -1,223 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.consoleproxy.util;
-
-// logger facility for dynamic switch between console logger used in Applet
and log4j based logger
-public class Logger {
- private static LoggerFactory factory = null;
-
- public static final int LEVEL_TRACE = 1;
- public static final int LEVEL_DEBUG = 2;
- public static final int LEVEL_INFO = 3;
- public static final int LEVEL_WARN = 4;
- public static final int LEVEL_ERROR = 5;
-
- private Class<?> clazz;
- private Logger logger;
-
- private static int level = LEVEL_INFO;
-
- public static Logger getLogger(Class<?> clazz) {
- return new Logger(clazz);
- }
-
- public static void setFactory(LoggerFactory f) {
- factory = f;
- }
-
- public static void setLevel(int l) {
- level = l;
- }
-
- public Logger(Class<?> clazz) {
- this.clazz = clazz;
- }
-
- protected Logger() {
- }
-
- public boolean isTraceEnabled() {
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- return logger.isTraceEnabled();
- }
- return level <= LEVEL_TRACE;
- }
-
- public boolean isDebugEnabled() {
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- return logger.isDebugEnabled();
- }
- return level <= LEVEL_DEBUG;
- }
-
- public boolean isInfoEnabled() {
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- return logger.isInfoEnabled();
- }
- return level <= LEVEL_INFO;
- }
-
- public void trace(Object message) {
-
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- logger.trace(message);
- } else {
- if (level <= LEVEL_TRACE)
- System.out.println(message);
- }
- }
-
- public void trace(Object message, Throwable exception) {
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- logger.trace(message, exception);
- } else {
- if (level <= LEVEL_TRACE) {
- System.out.println(message);
- if (exception != null) {
- exception.printStackTrace(System.out);
- }
- }
- }
- }
-
- public void info(Object message) {
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- logger.info(message);
- } else {
- if (level <= LEVEL_INFO)
- System.out.println(message);
- }
- }
-
- public void info(Object message, Throwable exception) {
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- logger.info(message, exception);
- } else {
- if (level <= LEVEL_INFO) {
- System.out.println(message);
- if (exception != null) {
- exception.printStackTrace(System.out);
- }
- }
- }
- }
-
- public void debug(Object message) {
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- logger.debug(message);
- } else {
- if (level <= LEVEL_DEBUG)
- System.out.println(message);
- }
- }
-
- public void debug(Object message, Throwable exception) {
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- logger.debug(message, exception);
- } else {
- if (level <= LEVEL_DEBUG) {
- System.out.println(message);
- if (exception != null) {
- exception.printStackTrace(System.out);
- }
- }
- }
- }
-
- public void warn(Object message) {
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- logger.warn(message);
- } else {
- if (level <= LEVEL_WARN)
- System.out.println(message);
- }
- }
-
- public void warn(Object message, Throwable exception) {
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- logger.warn(message, exception);
- } else {
- if (level <= LEVEL_WARN) {
- System.out.println(message);
- if (exception != null) {
- exception.printStackTrace(System.out);
- }
- }
- }
- }
-
- public void error(Object message) {
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- logger.error(message);
- } else {
- if (level <= LEVEL_ERROR)
- System.out.println(message);
- }
- }
-
- public void error(Object message, Throwable exception) {
- if (factory != null) {
- if (logger == null)
- logger = factory.getLogger(clazz);
-
- logger.error(message, exception);
- } else {
- if (level <= LEVEL_ERROR) {
- System.out.println(message);
- if (exception != null) {
- exception.printStackTrace(System.out);
- }
- }
- }
- }
-}
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/LoggerFactory.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/LoggerFactory.java
deleted file mode 100644
index 121411adf16..00000000000
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/LoggerFactory.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.consoleproxy.util;
-
-public interface LoggerFactory {
- Logger getLogger(Class<?> clazz);
-}
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/RawHTTP.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/RawHTTP.java
index bc47ca03d12..99945c8b4ca 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/RawHTTP.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/util/RawHTTP.java
@@ -38,6 +38,9 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
//
// This file is originally from XenConsole with modifications
//
@@ -48,7 +51,7 @@ import java.util.regex.Pattern;
* connections and import/export operations.
*/
public final class RawHTTP {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
private static final Pattern END_PATTERN = Pattern.compile("^\r\n$");
private static final Pattern HEADER_PATTERN =
Pattern.compile("^([A-Z_a-z0-9-]+):\\s*(.*)\r\n$");
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/BufferedImageCanvas.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/BufferedImageCanvas.java
index 9b86a8fbc66..0a168362ec1 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/BufferedImageCanvas.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/BufferedImageCanvas.java
@@ -27,16 +27,18 @@ import java.io.IOException;
import java.util.List;
import com.cloud.consoleproxy.util.ImageHelper;
-import com.cloud.consoleproxy.util.Logger;
import com.cloud.consoleproxy.util.TileInfo;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
/**
* A <code>BuffereImageCanvas</code> component represents frame buffer image on
* the screen. It also notifies its subscribers when screen is repainted.
*/
public class BufferedImageCanvas extends Canvas implements FrameBufferCanvas {
private static final long serialVersionUID = 1L;
- protected Logger logger = Logger.getLogger(BufferedImageCanvas.class);
+ protected Logger logger = LogManager.getLogger(BufferedImageCanvas.class);
// Offline screen buffer
private BufferedImage offlineImage;
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/NoVncClient.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/NoVncClient.java
index c5764a994c5..e4bb93711b9 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/NoVncClient.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/NoVncClient.java
@@ -31,7 +31,6 @@ import java.security.spec.KeySpec;
import java.util.Arrays;
import java.util.List;
-import com.cloud.consoleproxy.util.Logger;
import com.cloud.consoleproxy.util.RawHTTP;
import com.cloud.consoleproxy.vnc.network.NioSocket;
import com.cloud.consoleproxy.vnc.network.NioSocketHandler;
@@ -42,7 +41,11 @@ import com.cloud.consoleproxy.vnc.security.VncTLSSecurity;
import com.cloud.consoleproxy.websocket.WebSocketReverseProxy;
import com.cloud.utils.Pair;
import com.cloud.utils.exception.CloudRuntimeException;
+
import org.apache.commons.lang3.BooleanUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
import org.eclipse.jetty.websocket.api.Session;
import javax.crypto.BadPaddingException;
@@ -54,7 +57,7 @@ import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
public class NoVncClient {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
private Socket socket;
private DataInputStream is;
@@ -79,6 +82,7 @@ public class NoVncClient {
port = 80;
}
+ logger.info("Connecting to VNC server {}:{} ...", host, port);
RawHTTP tunnel = new RawHTTP("CONNECT", host, port, path, session,
useSSL);
socket = tunnel.connect();
setTunnelSocketStreams();
@@ -86,7 +90,7 @@ public class NoVncClient {
public void connectTo(String host, int port) {
// Connect to server
- logger.info(String.format("Connecting to VNC server %s:%s ...", host,
port));
+ logger.info("Connecting to VNC server {}:{} ...", host, port);
try {
NioSocket nioSocket = new NioSocket(host, port);
this.nioSocketConnection = new NioSocketHandlerImpl(nioSocket);
@@ -175,8 +179,9 @@ public class NoVncClient {
is.readFully(buf);
String reason = new String(buf, RfbConstants.CHARSET);
- logger.error("Authentication to VNC server is failed. Reason:
" + reason);
- throw new RuntimeException("Authentication to VNC server is
failed. Reason: " + reason);
+ String msg = String.format("Authentication to VNC server has
failed. Reason: %s", reason);
+ logger.error(msg);
+ throw new RuntimeException(msg);
}
case RfbConstants.NO_AUTH: {
@@ -191,9 +196,9 @@ public class NoVncClient {
}
default:
- logger.error("Unsupported VNC protocol authorization scheme,
scheme code: " + authType + ".");
- throw new RuntimeException(
- "Unsupported VNC protocol authorization scheme, scheme
code: " + authType + ".");
+ String msg = String.format("Unsupported VNC protocol
authorization scheme, scheme code: %d.", authType);
+ logger.error(msg);
+ throw new RuntimeException(msg);
}
// Since we've taken care of the auth, we tell the client that there's
no auth
// going on
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClient.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClient.java
index e5a9918d935..05bd01d390e 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClient.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClient.java
@@ -33,13 +33,15 @@ import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import com.cloud.consoleproxy.ConsoleProxyClientListener;
-import com.cloud.consoleproxy.util.Logger;
import com.cloud.consoleproxy.util.RawHTTP;
import com.cloud.consoleproxy.vnc.packet.client.KeyboardEventPacket;
import com.cloud.consoleproxy.vnc.packet.client.MouseEventPacket;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
public class VncClient {
- protected static Logger LOGGER = Logger.getLogger(VncClient.class);
+ protected static Logger LOGGER = LogManager.getLogger(VncClient.class);
private Socket socket;
private DataInputStream is;
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClientPacketSender.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClientPacketSender.java
index 12daca619ce..3d055b4dbb4 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClientPacketSender.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncClientPacketSender.java
@@ -27,7 +27,6 @@ import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
-import com.cloud.consoleproxy.util.Logger;
import com.cloud.consoleproxy.vnc.packet.client.ClientPacket;
import com.cloud.consoleproxy.vnc.packet.client.FramebufferUpdateRequestPacket;
import com.cloud.consoleproxy.vnc.packet.client.KeyboardEventPacket;
@@ -35,8 +34,11 @@ import
com.cloud.consoleproxy.vnc.packet.client.MouseEventPacket;
import com.cloud.consoleproxy.vnc.packet.client.SetEncodingsPacket;
import com.cloud.consoleproxy.vnc.packet.client.SetPixelFormatPacket;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
public class VncClientPacketSender implements Runnable,
PaintNotificationListener, KeyListener, MouseListener, MouseMotionListener,
FrameBufferUpdateListener {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
// Queue for outgoing packets
private final BlockingQueue<ClientPacket> queue = new
ArrayBlockingQueue<ClientPacket>(30);
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java
index effcb7b4599..bbd39754ac3 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/VncServerPacketReceiver.java
@@ -22,12 +22,14 @@ import java.io.DataInputStream;
import java.io.IOException;
import com.cloud.consoleproxy.ConsoleProxyClientListener;
-import com.cloud.consoleproxy.util.Logger;
import com.cloud.consoleproxy.vnc.packet.server.FramebufferUpdatePacket;
import com.cloud.consoleproxy.vnc.packet.server.ServerCutText;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
public class VncServerPacketReceiver implements Runnable {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
private final VncScreenDescription screen;
private BufferedImageCanvas canvas;
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/AbstractRect.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/AbstractRect.java
index 2059278905b..a56ee63d306 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/AbstractRect.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/AbstractRect.java
@@ -16,11 +16,12 @@
// under the License.
package com.cloud.consoleproxy.vnc.packet.server;
-import com.cloud.consoleproxy.util.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
public abstract class AbstractRect implements Rect {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
protected final int x;
protected final int y;
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/ServerCutText.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/ServerCutText.java
index 79ed98cccd0..76e47ab0676 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/ServerCutText.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/packet/server/ServerCutText.java
@@ -19,11 +19,13 @@ package com.cloud.consoleproxy.vnc.packet.server;
import java.io.DataInputStream;
import java.io.IOException;
-import com.cloud.consoleproxy.util.Logger;
import com.cloud.consoleproxy.vnc.RfbConstants;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
public class ServerCutText {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
private String content;
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncAuthSecurity.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncAuthSecurity.java
index 29c29f8ff58..42f109b5cf3 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncAuthSecurity.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncAuthSecurity.java
@@ -16,7 +16,6 @@
// under the License.
package com.cloud.consoleproxy.vnc.security;
-import com.cloud.consoleproxy.util.Logger;
import com.cloud.consoleproxy.vnc.NoVncClient;
import com.cloud.consoleproxy.vnc.network.NioSocketHandler;
import com.cloud.utils.exception.CloudRuntimeException;
@@ -24,12 +23,15 @@ import com.cloud.utils.exception.CloudRuntimeException;
import java.io.IOException;
import java.nio.ByteBuffer;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
public class VncAuthSecurity implements VncSecurity {
private final String vmPass;
private static final int VNC_AUTH_CHALLENGE_SIZE = 16;
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
public VncAuthSecurity(String vmPass) {
this.vmPass = vmPass;
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncTLSSecurity.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncTLSSecurity.java
index 00497a37828..0bc1355c4fb 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncTLSSecurity.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/vnc/security/VncTLSSecurity.java
@@ -16,7 +16,6 @@
// under the License.
package com.cloud.consoleproxy.vnc.security;
-import com.cloud.consoleproxy.util.Logger;
import com.cloud.consoleproxy.vnc.RfbConstants;
import com.cloud.consoleproxy.vnc.network.NioSocketHandler;
import com.cloud.consoleproxy.vnc.network.NioSocketSSLEngineManager;
@@ -29,9 +28,12 @@ import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
public class VncTLSSecurity implements VncSecurity {
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
private SSLContext ctx;
private SSLEngine engine;
diff --git
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/websocket/WebSocketReverseProxy.java
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/websocket/WebSocketReverseProxy.java
index 582fb625f2c..fecbaae38e8 100644
---
a/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/websocket/WebSocketReverseProxy.java
+++
b/services/console-proxy/server/src/main/java/com/cloud/consoleproxy/websocket/WebSocketReverseProxy.java
@@ -16,7 +16,6 @@
// under the License.
package com.cloud.consoleproxy.websocket;
-import com.cloud.consoleproxy.util.Logger;
import org.eclipse.jetty.websocket.api.Session;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.drafts.Draft_6455;
@@ -36,6 +35,9 @@ import java.nio.ByteBuffer;
import java.security.cert.X509Certificate;
import java.util.Collections;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
/**
* Acts as a websocket reverse proxy between the remoteSession and the
connected endpoint
* - Connects to a websocket endpoint and sends the received data to the
remoteSession endpoint
@@ -51,7 +53,7 @@ public class WebSocketReverseProxy extends WebSocketClient {
private static final DefaultExtension defaultExtension = new
DefaultExtension();
private static final Draft_6455 draft = new
Draft_6455(Collections.singletonList(defaultExtension),
Collections.singletonList(protocol));
- protected Logger logger = Logger.getLogger(getClass());
+ protected Logger logger = LogManager.getLogger(getClass());
private Session remoteSession;
private void acceptAllCerts() {