You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bf...@apache.org on 2013/02/13 23:04:22 UTC
[16/50] [abbrv] moved console proxy into services directory. no code
change
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2293caa3/console-proxy/scripts/ssvm-check.sh
----------------------------------------------------------------------
diff --git a/console-proxy/scripts/ssvm-check.sh b/console-proxy/scripts/ssvm-check.sh
deleted file mode 100644
index a401164..0000000
--- a/console-proxy/scripts/ssvm-check.sh
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/usr/bin/env bash
-# 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.
-
-
-# Health check script for the Secondary Storage VM
-
-# DNS server is specified.
-
-
-CMDLINE=/var/cache/cloud/cmdline
-for i in `cat $CMDLINE`
-do
- key=`echo $i | cut -d= -f1`
- value=`echo $i | cut -d= -f2`
- case $key in
- host)
- MGMTSERVER=$value
- ;;
- esac
-done
-
-
-# ping dns server
-echo ================================================
-DNSSERVER=`egrep '^nameserver' /etc/resolv.conf | awk '{print $2}'| head -1`
-echo "First DNS server is " $DNSSERVER
-ping -c 2 $DNSSERVER
-if [ $? -eq 0 ]
-then
- echo "Good: Can ping DNS server"
-else
- echo "WARNING: cannot ping DNS server"
- echo "route follows"
- route -n
-fi
-
-
-# check dns resolve
-echo ================================================
-nslookup download.cloud.com 1> /tmp/dns 2>&1
-grep 'no servers could' /tmp/dns 1> /dev/null 2>&1
-if [ $? -eq 0 ]
-then
- echo "ERROR: DNS not resolving download.cloud.com"
- echo resolv.conf follows
- cat /etc/resolv.conf
- exit 2
-else
- echo "Good: DNS resolves download.cloud.com"
-fi
-
-
-# check to see if we have the NFS volume mounted
-echo ================================================
-mount|grep -v sunrpc|grep nfs 1> /dev/null 2>&1
-if [ $? -eq 0 ]
-then
- echo "NFS is currently mounted"
- # check for write access
- for MOUNTPT in `mount|grep -v sunrpc|grep nfs| awk '{print $3}'`
- do
- if [ $MOUNTPT != "/proc/xen" ] # mounted by xen
- then
- echo Mount point is $MOUNTPT
- touch $MOUNTPT/foo
- if [ $? -eq 0 ]
- then
- echo "Good: Can write to mount point"
- rm $MOUNTPT/foo
- else
- echo "ERROR: Cannot write to mount point"
- echo "You need to export with norootsquash"
- fi
- fi
- done
-else
- echo "ERROR: NFS is not currently mounted"
- echo "Try manually mounting from inside the VM"
- NFSSERVER=`awk '{print $17}' $CMDLINE|awk -F= '{print $2}'|awk -F: '{print $1}'`
- echo "NFS server is " $NFSSERVER
- ping -c 2 $NFSSERVER
- if [ $? -eq 0 ]
- then
- echo "Good: Can ping NFS server"
- else
- echo "WARNING: cannot ping NFS server"
- echo routing table follows
- route -n
- fi
-fi
-
-
-# check for connectivity to the management server
-echo ================================================
-echo Management server is $MGMTSERVER. Checking connectivity.
-socatout=$(echo | socat - TCP:$MGMTSERVER:8250,connect-timeout=3 2>&1)
-if [ $? -eq 0 ]
-then
- echo "Good: Can connect to management server port 8250"
-else
- echo "ERROR: Cannot connect to $MGMTSERVER port 8250"
- echo $socatout
- exit 4
-fi
-
-
-# check for the java process running
-echo ================================================
-ps -eaf|grep -v grep|grep java 1> /dev/null 2>&1
-if [ $? -eq 0 ]
-then
- echo "Good: Java process is running"
-else
- echo "ERROR: Java process not running. Try restarting the SSVM."
- exit 3
-fi
-
-echo ================================================
-echo Tests Complete. Look for ERROR or WARNING above.
-
-exit 0
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2293caa3/console-proxy/src/com/cloud/consoleproxy/AjaxFIFOImageCache.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/AjaxFIFOImageCache.java b/console-proxy/src/com/cloud/consoleproxy/AjaxFIFOImageCache.java
deleted file mode 100644
index cff00b3..0000000
--- a/console-proxy/src/com/cloud/consoleproxy/AjaxFIFOImageCache.java
+++ /dev/null
@@ -1,83 +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 java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import com.cloud.consoleproxy.util.Logger;
-
-public class AjaxFIFOImageCache {
- private static final Logger s_logger = Logger.getLogger(AjaxFIFOImageCache.class);
-
- private List<Integer> fifoQueue;
- private Map<Integer, byte[]> cache;
- private int cacheSize;
- private int nextKey = 0;
-
- public AjaxFIFOImageCache(int cacheSize) {
- this.cacheSize = cacheSize;
- fifoQueue = new ArrayList<Integer>();
- cache = new HashMap<Integer, byte[]>();
- }
-
- public synchronized void clear() {
- fifoQueue.clear();
- cache.clear();
- }
-
- public synchronized int putImage(byte[] image) {
- while(cache.size() >= cacheSize) {
- Integer keyToRemove = fifoQueue.remove(0);
- cache.remove(keyToRemove);
-
- if(s_logger.isTraceEnabled())
- s_logger.trace("Remove image from cache, key: " + keyToRemove);
- }
-
- int key = getNextKey();
-
- if(s_logger.isTraceEnabled())
- s_logger.trace("Add image to cache, key: " + key);
-
- cache.put(key, image);
- fifoQueue.add(key);
- return key;
- }
-
- public synchronized byte[] getImage(int key) {
- if (key == 0) {
- key = nextKey;
- }
- if (cache.containsKey(key)) {
- if (s_logger.isTraceEnabled())
- s_logger.trace("Retrieve image from cache, key: " + key);
-
- return cache.get(key);
- }
-
- if (s_logger.isTraceEnabled())
- s_logger.trace("Image is no long in cache, key: " + key);
- return null;
- }
-
- public synchronized int getNextKey() {
- return ++nextKey;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2293caa3/console-proxy/src/com/cloud/consoleproxy/AuthenticationException.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/AuthenticationException.java b/console-proxy/src/com/cloud/consoleproxy/AuthenticationException.java
deleted file mode 100644
index 3fa2667..0000000
--- a/console-proxy/src/com/cloud/consoleproxy/AuthenticationException.java
+++ /dev/null
@@ -1,33 +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;
-
-public class AuthenticationException extends Exception {
- private static final long serialVersionUID = -393139302884898842L;
- public AuthenticationException() {
- super();
- }
- public AuthenticationException(String s) {
- super(s);
- }
- public AuthenticationException(String message, Throwable cause) {
- super(message, cause);
- }
- public AuthenticationException(Throwable cause) {
- super(cause);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2293caa3/console-proxy/src/com/cloud/consoleproxy/ConsoleProxy.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxy.java b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxy.java
deleted file mode 100644
index a722d83..0000000
--- a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxy.java
+++ /dev/null
@@ -1,499 +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 java.io.File;
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.InetSocketAddress;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-import java.util.Hashtable;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.Executor;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.log4j.xml.DOMConfigurator;
-
-import com.cloud.consoleproxy.util.Logger;
-import com.google.gson.Gson;
-import com.sun.net.httpserver.HttpServer;
-
-/**
- *
- * ConsoleProxy, singleton class that manages overall activities in console proxy process. To make legacy code work, we still
- */
-public class ConsoleProxy {
- private static final Logger s_logger = Logger.getLogger(ConsoleProxy.class);
-
- public static final int KEYBOARD_RAW = 0;
- public static final int KEYBOARD_COOKED = 1;
-
- public static int VIEWER_LINGER_SECONDS = 180;
-
- public static Object context;
-
- // this has become more ugly, to store keystore info passed from management server (we now use management server managed keystore to support
- // dynamically changing to customer supplied certificate)
- public static byte[] ksBits;
- public static String ksPassword;
-
- public static Method authMethod;
- public static Method reportMethod;
- public static Method ensureRouteMethod;
-
- static Hashtable<String, ConsoleProxyClient> connectionMap = new Hashtable<String, ConsoleProxyClient>();
- static int httpListenPort = 80;
- static int httpCmdListenPort = 8001;
- static int reconnectMaxRetry = 5;
- static int readTimeoutSeconds = 90;
- static int keyboardType = KEYBOARD_RAW;
- static String factoryClzName;
- static boolean standaloneStart = false;
-
- static String encryptorPassword = genDefaultEncryptorPassword();
-
- private static String genDefaultEncryptorPassword() {
- try {
- SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
-
- byte[] randomBytes = new byte[16];
- random.nextBytes(randomBytes);
- return Base64.encodeBase64String(randomBytes);
- } catch (NoSuchAlgorithmException e) {
- s_logger.error("Unexpected exception ", e);
- assert(false);
- }
-
- return "Dummy";
- }
-
- private static void configLog4j() {
- URL configUrl = System.class.getResource("/conf/log4j-cloud.xml");
- if(configUrl == null)
- configUrl = ClassLoader.getSystemResource("log4j-cloud.xml");
-
- if(configUrl == null)
- configUrl = ClassLoader.getSystemResource("conf/log4j-cloud.xml");
-
- if(configUrl != null) {
- try {
- System.out.println("Configure log4j using " + configUrl.toURI().toString());
- } catch (URISyntaxException e1) {
- e1.printStackTrace();
- }
-
- try {
- File file = new File(configUrl.toURI());
-
- System.out.println("Log4j configuration from : " + file.getAbsolutePath());
- DOMConfigurator.configureAndWatch(file.getAbsolutePath(), 10000);
- } catch (URISyntaxException e) {
- System.out.println("Unable to convert log4j configuration Url to URI");
- }
- // DOMConfigurator.configure(configUrl);
- } else {
- System.out.println("Configure log4j with default properties");
- }
- }
-
- private static void configProxy(Properties conf) {
- s_logger.info("Configure console proxy...");
- for(Object key : conf.keySet()) {
- s_logger.info("Property " + (String)key + ": " + conf.getProperty((String)key));
- }
-
- String s = conf.getProperty("consoleproxy.httpListenPort");
- if (s!=null) {
- httpListenPort = Integer.parseInt(s);
- s_logger.info("Setting httpListenPort=" + s);
- }
-
- s = conf.getProperty("premium");
- if(s != null && s.equalsIgnoreCase("true")) {
- s_logger.info("Premium setting will override settings from consoleproxy.properties, listen at port 443");
- httpListenPort = 443;
- factoryClzName = "com.cloud.consoleproxy.ConsoleProxySecureServerFactoryImpl";
- } else {
- factoryClzName = ConsoleProxyBaseServerFactoryImpl.class.getName();
- }
-
- s = conf.getProperty("consoleproxy.httpCmdListenPort");
- if (s!=null) {
- httpCmdListenPort = Integer.parseInt(s);
- s_logger.info("Setting httpCmdListenPort=" + s);
- }
-
- s = conf.getProperty("consoleproxy.reconnectMaxRetry");
- if (s!=null) {
- reconnectMaxRetry = Integer.parseInt(s);
- s_logger.info("Setting reconnectMaxRetry=" + reconnectMaxRetry);
- }
-
- s = conf.getProperty("consoleproxy.readTimeoutSeconds");
- if (s!=null) {
- readTimeoutSeconds = Integer.parseInt(s);
- s_logger.info("Setting readTimeoutSeconds=" + readTimeoutSeconds);
- }
- }
-
- public static ConsoleProxyServerFactory getHttpServerFactory() {
- try {
- Class<?> clz = Class.forName(factoryClzName);
- try {
- ConsoleProxyServerFactory factory = (ConsoleProxyServerFactory)clz.newInstance();
- factory.init(ConsoleProxy.ksBits, ConsoleProxy.ksPassword);
- return factory;
- } catch (InstantiationException e) {
- s_logger.error(e.getMessage(), e);
- return null;
- } catch (IllegalAccessException e) {
- s_logger.error(e.getMessage(), e);
- return null;
- }
- } catch (ClassNotFoundException e) {
- s_logger.warn("Unable to find http server factory class: " + factoryClzName);
- return new ConsoleProxyBaseServerFactoryImpl();
- }
- }
-
- public static ConsoleProxyAuthenticationResult authenticateConsoleAccess(ConsoleProxyClientParam param, boolean reauthentication) {
-
- ConsoleProxyAuthenticationResult authResult = new ConsoleProxyAuthenticationResult();
- authResult.setSuccess(true);
- authResult.setReauthentication(reauthentication);
- authResult.setHost(param.getClientHostAddress());
- authResult.setPort(param.getClientHostPort());
-
- if(standaloneStart) {
- return authResult;
- }
-
- if(authMethod != null) {
- Object result;
- try {
- result = authMethod.invoke(ConsoleProxy.context,
- param.getClientHostAddress(),
- String.valueOf(param.getClientHostPort()),
- param.getClientTag(),
- param.getClientHostPassword(),
- param.getTicket(),
- new Boolean(reauthentication));
- } catch (IllegalAccessException e) {
- s_logger.error("Unable to invoke authenticateConsoleAccess due to IllegalAccessException" + " for vm: " + param.getClientTag(), e);
- authResult.setSuccess(false);
- return authResult;
- } catch (InvocationTargetException e) {
- s_logger.error("Unable to invoke authenticateConsoleAccess due to InvocationTargetException " + " for vm: " + param.getClientTag(), e);
- authResult.setSuccess(false);
- return authResult;
- }
-
- if(result != null && result instanceof String) {
- authResult = new Gson().fromJson((String)result, ConsoleProxyAuthenticationResult.class);
- } else {
- s_logger.error("Invalid authentication return object " + result + " for vm: " + param.getClientTag() + ", decline the access");
- authResult.setSuccess(false);
- }
- } else {
- s_logger.warn("Private channel towards management server is not setup. Switch to offline mode and allow access to vm: " + param.getClientTag());
- }
-
- return authResult;
- }
-
- public static void reportLoadInfo(String gsonLoadInfo) {
- if(reportMethod != null) {
- try {
- reportMethod.invoke(ConsoleProxy.context, gsonLoadInfo);
- } catch (IllegalAccessException e) {
- s_logger.error("Unable to invoke reportLoadInfo due to " + e.getMessage());
- } catch (InvocationTargetException e) {
- s_logger.error("Unable to invoke reportLoadInfo due to " + e.getMessage());
- }
- } else {
- s_logger.warn("Private channel towards management server is not setup. Switch to offline mode and ignore load report");
- }
- }
-
- public static void ensureRoute(String address) {
- if(ensureRouteMethod != null) {
- try {
- ensureRouteMethod.invoke(ConsoleProxy.context, address);
- } catch (IllegalAccessException e) {
- s_logger.error("Unable to invoke ensureRoute due to " + e.getMessage());
- } catch (InvocationTargetException e) {
- s_logger.error("Unable to invoke ensureRoute due to " + e.getMessage());
- }
- } else {
- s_logger.warn("Unable to find ensureRoute method, console proxy agent is not up to date");
- }
- }
-
- public static void startWithContext(Properties conf, Object context, byte[] ksBits, String ksPassword) {
- s_logger.info("Start console proxy with context");
- if(conf != null) {
- for(Object key : conf.keySet()) {
- s_logger.info("Context property " + (String)key + ": " + conf.getProperty((String)key));
- }
- }
-
- configLog4j();
- Logger.setFactory(new ConsoleProxyLoggerFactory());
-
- // Using reflection to setup private/secure communication channel towards management server
- ConsoleProxy.context = context;
- ConsoleProxy.ksBits = ksBits;
- ConsoleProxy.ksPassword = ksPassword;
- try {
- Class<?> contextClazz = Class.forName("com.cloud.agent.resource.consoleproxy.ConsoleProxyResource");
- authMethod = contextClazz.getDeclaredMethod("authenticateConsoleAccess", String.class, String.class, String.class, String.class, String.class, Boolean.class);
- reportMethod = contextClazz.getDeclaredMethod("reportLoadInfo", String.class);
- ensureRouteMethod = contextClazz.getDeclaredMethod("ensureRoute", String.class);
- } catch (SecurityException e) {
- s_logger.error("Unable to setup private channel due to SecurityException", e);
- } catch (NoSuchMethodException e) {
- s_logger.error("Unable to setup private channel due to NoSuchMethodException", e);
- } catch (IllegalArgumentException e) {
- s_logger.error("Unable to setup private channel due to IllegalArgumentException", e);
- } catch(ClassNotFoundException e) {
- s_logger.error("Unable to setup private channel due to ClassNotFoundException", e);
- }
-
- // merge properties from conf file
- InputStream confs = ConsoleProxy.class.getResourceAsStream("/conf/consoleproxy.properties");
- Properties props = new Properties();
- if (confs == null) {
- s_logger.info("Can't load consoleproxy.properties from classpath, will use default configuration");
- } else {
- try {
- props.load(confs);
-
- for(Object key : props.keySet()) {
- // give properties passed via context high priority, treat properties from consoleproxy.properties
- // as default values
- if(conf.get(key) == null)
- conf.put(key, props.get(key));
- }
- } catch (Exception e) {
- s_logger.error(e.toString(), e);
- }
- }
-
- start(conf);
- }
-
- public static void start(Properties conf) {
- System.setProperty("java.awt.headless", "true");
-
- configProxy(conf);
-
- ConsoleProxyServerFactory factory = getHttpServerFactory();
- if(factory == null) {
- s_logger.error("Unable to load console proxy server factory");
- System.exit(1);
- }
-
- if(httpListenPort != 0) {
- startupHttpMain();
- } else {
- s_logger.error("A valid HTTP server port is required to be specified, please check your consoleproxy.httpListenPort settings");
- System.exit(1);
- }
-
- if(httpCmdListenPort > 0) {
- startupHttpCmdPort();
- } else {
- s_logger.info("HTTP command port is disabled");
- }
-
- ConsoleProxyGCThread cthread = new ConsoleProxyGCThread(connectionMap);
- cthread.setName("Console Proxy GC Thread");
- cthread.start();
- }
-
- private static void startupHttpMain() {
- try {
- ConsoleProxyServerFactory factory = getHttpServerFactory();
- if(factory == null) {
- s_logger.error("Unable to load HTTP server factory");
- System.exit(1);
- }
-
- HttpServer server = factory.createHttpServerInstance(httpListenPort);
- server.createContext("/getscreen", new ConsoleProxyThumbnailHandler());
- server.createContext("/resource/", new ConsoleProxyResourceHandler());
- server.createContext("/ajax", new ConsoleProxyAjaxHandler());
- server.createContext("/ajaximg", new ConsoleProxyAjaxImageHandler());
- server.setExecutor(new ThreadExecutor()); // creates a default executor
- server.start();
- } catch(Exception e) {
- s_logger.error(e.getMessage(), e);
- System.exit(1);
- }
- }
-
- private static void startupHttpCmdPort() {
- try {
- s_logger.info("Listening for HTTP CMDs on port " + httpCmdListenPort);
- HttpServer cmdServer = HttpServer.create(new InetSocketAddress(httpCmdListenPort), 2);
- cmdServer.createContext("/cmd", new ConsoleProxyCmdHandler());
- cmdServer.setExecutor(new ThreadExecutor()); // creates a default executor
- cmdServer.start();
- } catch(Exception e) {
- s_logger.error(e.getMessage(), e);
- System.exit(1);
- }
- }
-
- 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();
- if (confs == null) {
- s_logger.info("Can't load consoleproxy.properties from classpath, will use default configuration");
- } else {
- try {
- conf.load(confs);
- } catch (Exception e) {
- s_logger.error(e.toString(), e);
- }
- }
- start(conf);
- }
-
- public static ConsoleProxyClient getVncViewer(ConsoleProxyClientParam param) throws Exception {
- ConsoleProxyClient viewer = null;
-
- boolean reportLoadChange = false;
- String clientKey = param.getClientMapKey();
- synchronized (connectionMap) {
- viewer = connectionMap.get(clientKey);
- if (viewer == null) {
- viewer = new ConsoleProxyVncClient();
- viewer.initClient(param);
- connectionMap.put(clientKey, viewer);
- s_logger.info("Added viewer object " + viewer);
-
- reportLoadChange = true;
- } else if (!viewer.isFrontEndAlive()) {
- s_logger.info("The rfb thread died, reinitializing the viewer " + viewer);
- viewer.initClient(param);
- } else if (!param.getClientHostPassword().equals(viewer.getClientHostPassword())) {
- s_logger.warn("Bad sid detected(VNC port may be reused). sid in session: " + viewer.getClientHostPassword()
- + ", sid in request: " + param.getClientHostPassword());
- viewer.initClient(param);
- }
- }
-
- if(reportLoadChange) {
- ConsoleProxyClientStatsCollector statsCollector = getStatsCollector();
- String loadInfo = statsCollector.getStatsReport();
- reportLoadInfo(loadInfo);
- if(s_logger.isDebugEnabled())
- s_logger.debug("Report load change : " + loadInfo);
- }
-
- return viewer;
- }
-
- public static ConsoleProxyClient getAjaxVncViewer(ConsoleProxyClientParam param, String ajaxSession) throws Exception {
-
- boolean reportLoadChange = false;
- String clientKey = param.getClientMapKey();
- synchronized (connectionMap) {
- ConsoleProxyClient viewer = connectionMap.get(clientKey);
- if (viewer == null) {
- viewer = new ConsoleProxyVncClient();
- viewer.initClient(param);
-
- connectionMap.put(clientKey, viewer);
- s_logger.info("Added viewer object " + viewer);
- reportLoadChange = true;
- } else if (!viewer.isFrontEndAlive()) {
- s_logger.info("The rfb thread died, reinitializing the viewer " + viewer);
- viewer.initClient(param);
- } else if (!param.getClientHostPassword().equals(viewer.getClientHostPassword())) {
- s_logger.warn("Bad sid detected(VNC port may be reused). sid in session: "
- + viewer.getClientHostPassword() + ", sid in request: " + param.getClientHostPassword());
- viewer.initClient(param);
- } else {
- if(ajaxSession == null || ajaxSession.isEmpty())
- authenticationExternally(param);
- }
-
- if(reportLoadChange) {
- ConsoleProxyClientStatsCollector statsCollector = getStatsCollector();
- String loadInfo = statsCollector.getStatsReport();
- reportLoadInfo(loadInfo);
- if(s_logger.isDebugEnabled())
- s_logger.debug("Report load change : " + loadInfo);
- }
- return viewer;
- }
- }
-
- public static void removeViewer(ConsoleProxyClient viewer) {
- synchronized (connectionMap) {
- for(Map.Entry<String, ConsoleProxyClient> entry : connectionMap.entrySet()) {
- if(entry.getValue() == viewer) {
- connectionMap.remove(entry.getKey());
- return;
- }
- }
- }
- }
-
- public static ConsoleProxyClientStatsCollector getStatsCollector() {
- return new ConsoleProxyClientStatsCollector(connectionMap);
- }
-
- public static void authenticationExternally(ConsoleProxyClientParam param) throws AuthenticationException {
- ConsoleProxyAuthenticationResult authResult = authenticateConsoleAccess(param, false);
-
- if(authResult == null || !authResult.isSuccess()) {
- s_logger.warn("External authenticator failed authencation request for vm " + param.getClientTag() + " with sid " + param.getClientHostPassword());
-
- throw new AuthenticationException("External authenticator failed request for vm " + param.getClientTag() + " with sid " + param.getClientHostPassword());
- }
- }
-
- public static ConsoleProxyAuthenticationResult reAuthenticationExternally(ConsoleProxyClientParam param) {
- return authenticateConsoleAccess(param, true);
- }
-
- public static String getEncryptorPassword() {
- return encryptorPassword;
- }
-
- public static void setEncryptorPassword(String password) {
- encryptorPassword = password;
- }
-
- static class ThreadExecutor implements Executor {
- public void execute(Runnable r) {
- new Thread(r).start();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2293caa3/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyAjaxHandler.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyAjaxHandler.java b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyAjaxHandler.java
deleted file mode 100644
index 6cadeca..0000000
--- a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyAjaxHandler.java
+++ /dev/null
@@ -1,406 +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 java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.net.URLDecoder;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import com.cloud.consoleproxy.util.Logger;
-import com.sun.net.httpserver.Headers;
-import com.sun.net.httpserver.HttpExchange;
-import com.sun.net.httpserver.HttpHandler;
-
-public class ConsoleProxyAjaxHandler implements HttpHandler {
- private static final Logger s_logger = Logger.getLogger(ConsoleProxyAjaxHandler.class);
-
- public ConsoleProxyAjaxHandler() {
- }
-
- public void handle(HttpExchange t) throws IOException {
- try {
- if(s_logger.isTraceEnabled())
- s_logger.trace("AjaxHandler " + t.getRequestURI());
-
- long startTick = System.currentTimeMillis();
-
- doHandle(t);
-
- if(s_logger.isTraceEnabled())
- s_logger.trace(t.getRequestURI() + " process time " + (System.currentTimeMillis() - startTick) + " ms");
- } catch (IOException e) {
- throw e;
- } catch (IllegalArgumentException e) {
- s_logger.warn("Exception, ", e);
- t.sendResponseHeaders(400, -1); // bad request
- } catch(Throwable e) {
- s_logger.error("Unexpected exception, ", e);
- t.sendResponseHeaders(500, -1); // server error
- } finally {
- t.close();
- }
- }
-
- private void doHandle(HttpExchange t) throws Exception, IllegalArgumentException {
- String queries = t.getRequestURI().getQuery();
- if(s_logger.isTraceEnabled())
- s_logger.trace("Handle AJAX request: " + queries);
-
- Map<String, String> queryMap = ConsoleProxyHttpHandlerHelper.getQueryMap(queries);
-
- String host = queryMap.get("host");
- String portStr = queryMap.get("port");
- String sid = queryMap.get("sid");
- String tag = queryMap.get("tag");
- String ticket = queryMap.get("ticket");
- String ajaxSessionIdStr = queryMap.get("sess");
- String eventStr = queryMap.get("event");
- String console_url = queryMap.get("consoleurl");
- String console_host_session = queryMap.get("sessionref");
-
- if(tag == null)
- tag = "";
-
- long ajaxSessionId = 0;
- int event = 0;
-
- int port;
-
- if(host == null || portStr == null || sid == null)
- throw new IllegalArgumentException();
-
- try {
- port = Integer.parseInt(portStr);
- } catch (NumberFormatException e) {
- s_logger.warn("Invalid number parameter in query string: " + portStr);
- throw new IllegalArgumentException(e);
- }
-
- if(ajaxSessionIdStr != null) {
- try {
- ajaxSessionId = Long.parseLong(ajaxSessionIdStr);
- } catch (NumberFormatException e) {
- s_logger.warn("Invalid number parameter in query string: " + ajaxSessionIdStr);
- throw new IllegalArgumentException(e);
- }
- }
-
- if(eventStr != null) {
- try {
- event = Integer.parseInt(eventStr);
- } catch (NumberFormatException e) {
- s_logger.warn("Invalid number parameter in query string: " + eventStr);
- throw new IllegalArgumentException(e);
- }
- }
-
- ConsoleProxyClient viewer = null;
- try {
- ConsoleProxyClientParam param = new ConsoleProxyClientParam();
- param.setClientHostAddress(host);
- param.setClientHostPort(port);
- param.setClientHostPassword(sid);
- param.setClientTag(tag);
- param.setTicket(ticket);
- param.setClientTunnelUrl(console_url);
- param.setClientTunnelSession(console_host_session);
-
- viewer = ConsoleProxy.getAjaxVncViewer(param, ajaxSessionIdStr);
- } catch(Exception e) {
-
- s_logger.warn("Failed to create viewer due to " + e.getMessage(), e);
-
- String[] content = new String[] {
- "<html><head></head><body>",
- "<div id=\"main_panel\" tabindex=\"1\">",
- "<p>Access is denied for the console session. Please close the window and retry again</p>",
- "</div></body></html>"
- };
-
- StringBuffer sb = new StringBuffer();
- for(int i = 0; i < content.length; i++)
- sb.append(content[i]);
-
- sendResponse(t, "text/html", sb.toString());
- return;
- }
-
- if(event != 0) {
- if(ajaxSessionId != 0 && ajaxSessionId == viewer.getAjaxSessionId()) {
- if(event == 7) {
- // client send over an event bag
- InputStream is = t.getRequestBody();
- handleClientEventBag(viewer, convertStreamToString(is, true));
- } else {
- handleClientEvent(viewer, event, queryMap);
- }
- sendResponse(t, "text/html", "OK");
- } else {
- if(s_logger.isDebugEnabled())
- s_logger.debug("Ajax request comes from a different session, id in request: " + ajaxSessionId + ", id in viewer: " + viewer.getAjaxSessionId());
-
- sendResponse(t, "text/html", "Invalid ajax client session id");
- }
- } else {
- if(ajaxSessionId != 0 && ajaxSessionId != viewer.getAjaxSessionId()) {
- s_logger.info("Ajax request comes from a different session, id in request: " + ajaxSessionId + ", id in viewer: " + viewer.getAjaxSessionId());
- handleClientKickoff(t, viewer);
- } else if(ajaxSessionId == 0) {
- if(s_logger.isDebugEnabled())
- s_logger.debug("Ajax request indicates a fresh client start");
-
- String title = queryMap.get("t");
- String guest = queryMap.get("guest");
- handleClientStart(t, viewer, title != null ? title : "", guest);
- } else {
-
- if(s_logger.isTraceEnabled())
- s_logger.trace("Ajax request indicates client update");
-
- handleClientUpdate(t, viewer);
- }
- }
- }
-
- private static String convertStreamToString(InputStream is, boolean closeStreamAfterRead) {
- BufferedReader reader = new BufferedReader(new InputStreamReader(is));
- StringBuilder sb = new StringBuilder();
- String line = null;
- try {
- while ((line = reader.readLine()) != null) {
- sb.append(line + "\n");
- }
- } catch (IOException e) {
- s_logger.warn("Exception while reading request body: ", e);
- } finally {
- if(closeStreamAfterRead) {
- try {
- is.close();
- } catch (IOException e) {
- }
- }
- }
- return sb.toString();
- }
-
- private void sendResponse(HttpExchange t, String contentType, String response) throws IOException {
- Headers hds = t.getResponseHeaders();
- hds.set("Content-Type", contentType);
-
- t.sendResponseHeaders(200, response.length());
- OutputStream os = t.getResponseBody();
- try {
- os.write(response.getBytes());
- } finally {
- os.close();
- }
- }
-
- @SuppressWarnings("deprecation")
- private void handleClientEventBag(ConsoleProxyClient viewer, String requestData) {
- if(s_logger.isTraceEnabled())
- s_logger.trace("Handle event bag, event bag: " + requestData);
-
- int start = requestData.indexOf("=");
- if(start < 0)
- start = 0;
- else if(start > 0)
- start++;
- String data = URLDecoder.decode(requestData.substring(start));
- String[] tokens = data.split("\\|");
- if(tokens != null && tokens.length > 0) {
- int count = 0;
- try {
- count = Integer.parseInt(tokens[0]);
- int parsePos = 1;
- int type, event, x, y, code, modifiers;
- for(int i = 0; i < count; i++) {
- type = Integer.parseInt(tokens[parsePos++]);
- if(type == 1) {
- // mouse event
- event = Integer.parseInt(tokens[parsePos++]);
- x = Integer.parseInt(tokens[parsePos++]);
- y = Integer.parseInt(tokens[parsePos++]);
- code = Integer.parseInt(tokens[parsePos++]);
- modifiers = Integer.parseInt(tokens[parsePos++]);
-
- Map<String, String> queryMap = new HashMap<String, String>();
- queryMap.put("event", String.valueOf(event));
- queryMap.put("x", String.valueOf(x));
- queryMap.put("y", String.valueOf(y));
- queryMap.put("code", String.valueOf(code));
- queryMap.put("modifier", String.valueOf(modifiers));
- handleClientEvent(viewer, event, queryMap);
- } else {
- // keyboard event
- event = Integer.parseInt(tokens[parsePos++]);
- code = Integer.parseInt(tokens[parsePos++]);
- modifiers = Integer.parseInt(tokens[parsePos++]);
-
- Map<String, String> queryMap = new HashMap<String, String>();
- queryMap.put("event", String.valueOf(event));
- queryMap.put("code", String.valueOf(code));
- queryMap.put("modifier", String.valueOf(modifiers));
- handleClientEvent(viewer, event, queryMap);
- }
- }
- } catch(NumberFormatException e) {
- s_logger.warn("Exception in handle client event bag: " + data + ", ", e);
- } catch(Exception e) {
- s_logger.warn("Exception in handle client event bag: " + data + ", ", e);
- } catch(OutOfMemoryError e) {
- s_logger.error("Unrecoverable OutOfMemory Error, exit and let it be re-launched");
- System.exit(1);
- }
- }
- }
-
- private void handleClientEvent(ConsoleProxyClient viewer, int event, Map<String, String> queryMap) {
- int code = 0;
- int x = 0, y = 0;
- int modifiers = 0;
-
- String str;
- switch(event) {
- case 1: // mouse move
- case 2: // mouse down
- case 3: // mouse up
- case 8: // mouse double click
- str = queryMap.get("x");
- if(str != null) {
- try {
- x = Integer.parseInt(str);
- } catch (NumberFormatException e) {
- s_logger.warn("Invalid number parameter in query string: " + str);
- throw new IllegalArgumentException(e);
- }
- }
- str = queryMap.get("y");
- if(str != null) {
- try {
- y = Integer.parseInt(str);
- } catch (NumberFormatException e) {
- s_logger.warn("Invalid number parameter in query string: " + str);
- throw new IllegalArgumentException(e);
- }
- }
-
- if(event != 1) {
- str = queryMap.get("code");
- try {
- code = Integer.parseInt(str);
- } catch (NumberFormatException e) {
- s_logger.warn("Invalid number parameter in query string: " + str);
- throw new IllegalArgumentException(e);
- }
-
- str = queryMap.get("modifier");
- try {
- modifiers = Integer.parseInt(str);
- } catch (NumberFormatException e) {
- s_logger.warn("Invalid number parameter in query string: " + str);
- throw new IllegalArgumentException(e);
- }
-
- if(s_logger.isTraceEnabled())
- s_logger.trace("Handle client mouse event. event: " + event + ", x: " + x + ", y: " + y + ", button: " + code + ", modifier: " + modifiers);
- } else {
- if(s_logger.isTraceEnabled())
- s_logger.trace("Handle client mouse move event. x: " + x + ", y: " + y);
- }
- viewer.sendClientMouseEvent(InputEventType.fromEventCode(event), x, y, code, modifiers);
- break;
-
- case 4: // key press
- case 5: // key down
- case 6: // key up
- str = queryMap.get("code");
- try {
- code = Integer.parseInt(str);
- } catch (NumberFormatException e) {
- s_logger.warn("Invalid number parameter in query string: " + str);
- throw new IllegalArgumentException(e);
- }
-
- str = queryMap.get("modifier");
- try {
- modifiers = Integer.parseInt(str);
- } catch (NumberFormatException e) {
- s_logger.warn("Invalid number parameter in query string: " + str);
- throw new IllegalArgumentException(e);
- }
-
- if(s_logger.isDebugEnabled())
- s_logger.debug("Handle client keyboard event. event: " + event + ", code: " + code + ", modifier: " + modifiers);
- viewer.sendClientRawKeyboardEvent(InputEventType.fromEventCode(event), code, modifiers);
- break;
-
- default :
- break;
- }
- }
-
- private void handleClientKickoff(HttpExchange t, ConsoleProxyClient viewer) throws IOException {
- String response = viewer.onAjaxClientKickoff();
- t.sendResponseHeaders(200, response.length());
- OutputStream os = t.getResponseBody();
- try {
- os.write(response.getBytes());
- } finally {
- os.close();
- }
- }
-
- private void handleClientStart(HttpExchange t, ConsoleProxyClient viewer, String title, String guest) throws IOException {
- List<String> languages = t.getRequestHeaders().get("Accept-Language");
- String response = viewer.onAjaxClientStart(title, languages, guest);
-
- Headers hds = t.getResponseHeaders();
- hds.set("Content-Type", "text/html");
- hds.set("Cache-Control", "no-cache");
- hds.set("Cache-Control", "no-store");
- t.sendResponseHeaders(200, response.length());
-
- OutputStream os = t.getResponseBody();
- try {
- os.write(response.getBytes());
- } finally {
- os.close();
- }
- }
-
- private void handleClientUpdate(HttpExchange t, ConsoleProxyClient viewer) throws IOException {
- String response = viewer.onAjaxClientUpdate();
-
- Headers hds = t.getResponseHeaders();
- hds.set("Content-Type", "text/javascript");
- t.sendResponseHeaders(200, response.length());
-
- OutputStream os = t.getResponseBody();
- try {
- os.write(response.getBytes());
- } finally {
- os.close();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2293caa3/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyAjaxImageHandler.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyAjaxImageHandler.java b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyAjaxImageHandler.java
deleted file mode 100644
index 5e10149..0000000
--- a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyAjaxImageHandler.java
+++ /dev/null
@@ -1,159 +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 java.awt.Graphics2D;
-import java.awt.Image;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.Map;
-
-import com.cloud.consoleproxy.util.Logger;
-import com.sun.net.httpserver.Headers;
-import com.sun.net.httpserver.HttpExchange;
-import com.sun.net.httpserver.HttpHandler;
-
-public class ConsoleProxyAjaxImageHandler implements HttpHandler {
- private static final Logger s_logger = Logger.getLogger(ConsoleProxyAjaxImageHandler.class);
-
- public void handle(HttpExchange t) throws IOException {
- try {
- if(s_logger.isDebugEnabled())
- s_logger.debug("AjaxImageHandler " + t.getRequestURI());
-
- long startTick = System.currentTimeMillis();
-
- doHandle(t);
-
- if(s_logger.isDebugEnabled())
- s_logger.debug(t.getRequestURI() + "Process time " + (System.currentTimeMillis() - startTick) + " ms");
- } catch (IOException e) {
- throw e;
- } catch (IllegalArgumentException e) {
- s_logger.warn("Exception, ", e);
- t.sendResponseHeaders(400, -1); // bad request
- } catch(OutOfMemoryError e) {
- s_logger.error("Unrecoverable OutOfMemory Error, exit and let it be re-launched");
- System.exit(1);
- } catch(Throwable e) {
- s_logger.error("Unexpected exception, ", e);
- t.sendResponseHeaders(500, -1); // server error
- } finally {
- t.close();
- }
- }
-
- private void doHandle(HttpExchange t) throws Exception, IllegalArgumentException {
- String queries = t.getRequestURI().getQuery();
- Map<String, String> queryMap = ConsoleProxyHttpHandlerHelper.getQueryMap(queries);
-
- String host = queryMap.get("host");
- String portStr = queryMap.get("port");
- String sid = queryMap.get("sid");
- String tag = queryMap.get("tag");
- String ticket = queryMap.get("ticket");
- String keyStr = queryMap.get("key");
- String console_url = queryMap.get("consoleurl");
- String console_host_session = queryMap.get("sessionref");
- String w = queryMap.get("w");
- String h = queryMap.get("h");
-
- int key = 0;
- int width = 144;
- int height = 110;
-
- if(tag == null)
- tag = "";
-
- int port;
- if(host == null || portStr == null || sid == null)
- throw new IllegalArgumentException();
-
- try {
- port = Integer.parseInt(portStr);
- } catch (NumberFormatException e) {
- s_logger.warn("Invalid numeric parameter in query string: " + portStr);
- throw new IllegalArgumentException(e);
- }
-
- try {
- if (keyStr != null)
- key = Integer.parseInt(keyStr);
- if(null != w)
- width = Integer.parseInt(w);
-
- if(null != h)
- height = Integer.parseInt(h);
-
- } catch (NumberFormatException e) {
- s_logger.warn("Invalid numeric parameter in query string: " + keyStr);
- throw new IllegalArgumentException(e);
- }
-
- ConsoleProxyClientParam param = new ConsoleProxyClientParam();
- param.setClientHostAddress(host);
- param.setClientHostPort(port);
- param.setClientHostPassword(sid);
- param.setClientTag(tag);
- param.setTicket(ticket);
- param.setClientTunnelUrl(console_url);
- param.setClientTunnelSession(console_host_session);
-
- ConsoleProxyClient viewer = ConsoleProxy.getVncViewer(param);
-
- if (key == 0) {
- Image scaledImage = viewer.getClientScaledImage(width, height);
- BufferedImage bufferedImage = new BufferedImage(width, height,
- BufferedImage.TYPE_3BYTE_BGR);
- Graphics2D bufImageGraphics = bufferedImage.createGraphics();
- bufImageGraphics.drawImage(scaledImage, 0, 0, null);
- ByteArrayOutputStream bos = new ByteArrayOutputStream(8196);
- javax.imageio.ImageIO.write(bufferedImage, "jpg", bos);
- byte[] bs = bos.toByteArray();
- Headers hds = t.getResponseHeaders();
- hds.set("Content-Type", "image/jpeg");
- hds.set("Cache-Control", "no-cache");
- hds.set("Cache-Control", "no-store");
- t.sendResponseHeaders(200, bs.length);
- OutputStream os = t.getResponseBody();
- os.write(bs);
- os.close();
- } else {
- AjaxFIFOImageCache imageCache = viewer.getAjaxImageCache();
- byte[] img = imageCache.getImage(key);
-
- if(img != null) {
- Headers hds = t.getResponseHeaders();
- hds.set("Content-Type", "image/jpeg");
- t.sendResponseHeaders(200, img.length);
-
- OutputStream os = t.getResponseBody();
- try {
- os.write(img, 0, img.length);
- } finally {
- os.close();
- }
- } else {
- if(s_logger.isInfoEnabled())
- s_logger.info("Image has already been swept out, key: " + key);
- t.sendResponseHeaders(404, -1);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2293caa3/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyAuthenticationResult.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyAuthenticationResult.java b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyAuthenticationResult.java
deleted file mode 100644
index 26ee9b3..0000000
--- a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyAuthenticationResult.java
+++ /dev/null
@@ -1,81 +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;
-
-// duplicated class
-public class ConsoleProxyAuthenticationResult {
- private boolean success;
- private boolean isReauthentication;
- private String host;
- private int port;
- private String tunnelUrl;
- private String tunnelSession;
-
- public ConsoleProxyAuthenticationResult() {
- success = false;
- isReauthentication = false;
- port = 0;
- }
-
- public boolean isSuccess() {
- return success;
- }
-
- public void setSuccess(boolean success) {
- this.success = success;
- }
-
- public boolean isReauthentication() {
- return isReauthentication;
- }
-
- public void setReauthentication(boolean isReauthentication) {
- this.isReauthentication = isReauthentication;
- }
-
- public String getHost() {
- return host;
- }
-
- public void setHost(String host) {
- this.host = host;
- }
-
- public int getPort() {
- return port;
- }
-
- public void setPort(int port) {
- this.port = port;
- }
-
- public String getTunnelUrl() {
- return tunnelUrl;
- }
-
- public void setTunnelUrl(String tunnelUrl) {
- this.tunnelUrl = tunnelUrl;
- }
-
- public String getTunnelSession() {
- return tunnelSession;
- }
-
- public void setTunnelSession(String tunnelSession) {
- this.tunnelSession = tunnelSession;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2293caa3/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyBaseServerFactoryImpl.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyBaseServerFactoryImpl.java b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyBaseServerFactoryImpl.java
deleted file mode 100644
index c9ad8ab..0000000
--- a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyBaseServerFactoryImpl.java
+++ /dev/null
@@ -1,48 +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 java.io.IOException;
-import java.net.InetSocketAddress;
-
-import javax.net.ssl.SSLServerSocket;
-
-import com.cloud.consoleproxy.util.Logger;
-import com.sun.net.httpserver.HttpServer;
-
-public class ConsoleProxyBaseServerFactoryImpl implements ConsoleProxyServerFactory {
- private static final Logger s_logger = Logger.getLogger(ConsoleProxyBaseServerFactoryImpl.class);
-
- @Override
- public void init(byte[] ksBits, String ksPassword) {
- }
-
- @Override
- public HttpServer createHttpServerInstance(int port) throws IOException {
- if(s_logger.isInfoEnabled())
- s_logger.info("create HTTP server instance at port: " + port);
- return HttpServer.create(new InetSocketAddress(port), 5);
- }
-
- @Override
- public SSLServerSocket createSSLServerSocket(int port) throws IOException {
- if(s_logger.isInfoEnabled())
- s_logger.info("SSL server socket is not supported in ConsoleProxyBaseServerFactoryImpl");
-
- return null;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2293caa3/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClient.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClient.java b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClient.java
deleted file mode 100644
index 8a0be05..0000000
--- a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClient.java
+++ /dev/null
@@ -1,69 +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 java.awt.Image;
-import java.util.List;
-
-/**
- * ConsoleProxyClient defines an standard interface that a console client should implement,
- *
- * ConsoleProxyClient maintains a session towards the target host, it glues the session
- * to a AJAX front-end viewer
- */
-public interface ConsoleProxyClient {
- int getClientId();
-
- //
- // Quick status
- //
- boolean isHostConnected();
- boolean isFrontEndAlive();
-
- //
- // AJAX viewer
- //
- long getAjaxSessionId();
- AjaxFIFOImageCache getAjaxImageCache();
- Image getClientScaledImage(int width, int height); // client thumbnail support
-
- String onAjaxClientStart(String title, List<String> languages, String guest);
- String onAjaxClientUpdate();
- String onAjaxClientKickoff();
-
- //
- // Input handling
- //
- void sendClientRawKeyboardEvent(InputEventType event, int code, int modifiers);
- void sendClientMouseEvent(InputEventType event, int x, int y, int code, int modifiers);
-
- //
- // Info/Stats
- //
- long getClientCreateTime();
- long getClientLastFrontEndActivityTime();
- String getClientHostAddress();
- int getClientHostPort();
- String getClientHostPassword();
- String getClientTag();
-
- //
- // Setup/house-keeping
- //
- void initClient(ConsoleProxyClientParam param);
- void closeClient();
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2293caa3/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClientBase.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClientBase.java b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClientBase.java
deleted file mode 100644
index 289bdab..0000000
--- a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClientBase.java
+++ /dev/null
@@ -1,457 +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 java.awt.Image;
-import java.awt.Rectangle;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.consoleproxy.util.TileInfo;
-import com.cloud.consoleproxy.util.TileTracker;
-import com.cloud.consoleproxy.vnc.FrameBufferCanvas;
-
-/**
- *
- * an instance of specialized console protocol implementation, such as VNC or RDP
- *
- * It mainly implements the features needed by front-end AJAX viewer
- *
- */
-public abstract class ConsoleProxyClientBase implements ConsoleProxyClient, ConsoleProxyClientListener {
- private static final Logger s_logger = Logger.getLogger(ConsoleProxyClientBase.class);
-
- private static int s_nextClientId = 0;
- protected int clientId = getNextClientId();
-
- protected long ajaxSessionId = 0;
-
- protected boolean dirtyFlag = false;
- protected Object tileDirtyEvent = new Object();
- protected TileTracker tracker;
- protected AjaxFIFOImageCache ajaxImageCache = new AjaxFIFOImageCache(2);
-
- protected ConsoleProxyClientParam clientParam;
- protected String clientToken;
-
- protected long createTime = System.currentTimeMillis();
- protected long lastFrontEndActivityTime = System.currentTimeMillis();
-
- protected boolean framebufferResized = false;
- protected int resizedFramebufferWidth;
- protected int resizedFramebufferHeight;
-
- public ConsoleProxyClientBase() {
- tracker = new TileTracker();
- tracker.initTracking(64, 64, 800, 600);
- }
-
- //
- // interface ConsoleProxyClient
- //
- @Override
- public int getClientId() {
- return clientId;
- }
-
- public abstract boolean isHostConnected();
- public abstract boolean isFrontEndAlive();
-
- @Override
- public long getAjaxSessionId() {
- return this.ajaxSessionId;
- }
-
- @Override
- public AjaxFIFOImageCache getAjaxImageCache() {
- return ajaxImageCache;
- }
-
- public Image getClientScaledImage(int width, int height) {
- FrameBufferCanvas canvas = getFrameBufferCavas();
- if(canvas != null)
- return canvas.getFrameBufferScaledImage(width, height);
-
- return null;
- }
-
- public abstract void sendClientRawKeyboardEvent(InputEventType event, int code, int modifiers);
- public abstract void sendClientMouseEvent(InputEventType event, int x, int y, int code, int modifiers);
-
- @Override
- public long getClientCreateTime() {
- return createTime;
- }
-
- @Override
- public long getClientLastFrontEndActivityTime() {
- return lastFrontEndActivityTime;
- }
-
- @Override
- public String getClientHostAddress() {
- return clientParam.getClientHostAddress();
- }
-
- @Override
- public int getClientHostPort() {
- return clientParam.getClientHostPort();
- }
-
- @Override
- public String getClientHostPassword() {
- return clientParam.getClientHostPassword();
- }
-
- @Override
- public String getClientTag() {
- if(clientParam.getClientTag() != null)
- return clientParam.getClientTag();
- return "";
- }
-
- @Override
- public abstract void initClient(ConsoleProxyClientParam param);
-
- @Override
- public abstract void closeClient();
-
- //
- // interface FrameBufferEventListener
- //
- @Override
- public void onFramebufferSizeChange(int w, int h) {
- tracker.resize(w, h);
-
- synchronized(this) {
- framebufferResized = true;
- resizedFramebufferWidth = w;
- resizedFramebufferHeight = h;
- }
-
- signalTileDirtyEvent();
- }
-
- @Override
- public void onFramebufferUpdate(int x, int y, int w, int h) {
- if(s_logger.isTraceEnabled())
- s_logger.trace("Frame buffer update {" + x + "," + y + "," + w + "," + h + "}");
- tracker.invalidate(new Rectangle(x, y, w, h));
-
- signalTileDirtyEvent();
- }
-
- //
- // AJAX Image manipulation
- //
- public byte[] getFrameBufferJpeg() {
- FrameBufferCanvas canvas = getFrameBufferCavas();
- if(canvas != null)
- return canvas.getFrameBufferJpeg();
-
- return null;
- }
-
- public byte[] getTilesMergedJpeg(List<TileInfo> tileList, int tileWidth, int tileHeight) {
- FrameBufferCanvas canvas = getFrameBufferCavas();
- if(canvas != null)
- return canvas.getTilesMergedJpeg(tileList, tileWidth, tileHeight);
- return null;
- }
-
- private String prepareAjaxImage(List<TileInfo> tiles, boolean init) {
- byte[] imgBits;
- if(init)
- imgBits = getFrameBufferJpeg();
- else
- imgBits = getTilesMergedJpeg(tiles, tracker.getTileWidth(), tracker.getTileHeight());
-
- if(imgBits == null) {
- s_logger.warn("Unable to generate jpeg image");
- } else {
- if(s_logger.isTraceEnabled())
- s_logger.trace("Generated jpeg image size: " + imgBits.length);
- }
-
- int key = ajaxImageCache.putImage(imgBits);
- StringBuffer sb = new StringBuffer();
- sb.append("/ajaximg?token=").append(clientToken);
- sb.append("&key=").append(key);
- sb.append("&ts=").append(System.currentTimeMillis());
-
- return sb.toString();
- }
-
- private String prepareAjaxSession(boolean init) {
- if(init) {
- synchronized(this) {
- ajaxSessionId++;
- }
- }
-
- StringBuffer sb = new StringBuffer();
- sb.append("/ajax?token=").append(clientToken).append("&sess=").append(ajaxSessionId);
- return sb.toString();
- }
-
- @Override
- public String onAjaxClientKickoff() {
- return "onKickoff();";
- }
-
- private boolean waitForViewerReady() {
- long startTick = System.currentTimeMillis();
- while(System.currentTimeMillis() - startTick < 5000) {
- if(getFrameBufferCavas() != null)
- return true;
-
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- }
- }
- return false;
- }
-
- private String onAjaxClientConnectFailed() {
- return "<html><head></head><body><div id=\"main_panel\" tabindex=\"1\"><p>" +
- "Unable to start console session as connection is refused by the machine you are accessing" +
- "</p></div></body></html>";
- }
-
- @Override
- public String onAjaxClientStart(String title, List<String> languages, String guest) {
- updateFrontEndActivityTime();
-
- if(!waitForViewerReady())
- return onAjaxClientConnectFailed();
-
- synchronized(this) {
- ajaxSessionId++;
- framebufferResized = false;
- }
-
- int tileWidth = tracker.getTileWidth();
- int tileHeight = tracker.getTileHeight();
- int width = tracker.getTrackWidth();
- int height = tracker.getTrackHeight();
-
- if(s_logger.isTraceEnabled())
- s_logger.trace("Ajax client start, frame buffer w: " + width + ", " + height);
-
- int retry = 0;
- tracker.initCoverageTest();
- while(!tracker.hasFullCoverage() && retry < 10) {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- }
- retry++;
- }
-
- List<TileInfo> tiles = tracker.scan(true);
- String imgUrl = prepareAjaxImage(tiles, true);
- String updateUrl = prepareAjaxSession(true);
-
- StringBuffer sbTileSequence = new StringBuffer();
- int i = 0;
- for(TileInfo tile : tiles) {
- sbTileSequence.append("[").append(tile.getRow()).append(",").append(tile.getCol()).append("]");
- if(i < tiles.size() - 1)
- sbTileSequence.append(",");
-
- i++;
- }
-
- return getAjaxViewerPageContent(sbTileSequence.toString(), imgUrl,
- updateUrl, width, height, tileWidth, tileHeight, title,
- ConsoleProxy.keyboardType == ConsoleProxy.KEYBOARD_RAW,
- languages, guest);
- }
-
- private String getAjaxViewerPageContent(String tileSequence, String imgUrl, String updateUrl, int width,
- int height, int tileWidth, int tileHeight, String title, boolean rawKeyboard, List<String> languages, String guest) {
-
- StringBuffer sbLanguages = new StringBuffer("");
- if(languages != null) {
- for(String lang : languages) {
- if(sbLanguages.length() > 0) {
- sbLanguages.append(",");
- }
- sbLanguages.append(lang);
- }
- }
-
- String[] content = new String[] {
- "<html>",
- "<head>",
- "<script type=\"text/javascript\" language=\"javascript\" src=\"/resource/js/jquery.js\"></script>",
- "<script type=\"text/javascript\" language=\"javascript\" src=\"/resource/js/cloud.logger.js\"></script>",
- "<script type=\"text/javascript\" language=\"javascript\" src=\"/resource/js/ajaxkeys.js\"></script>",
- "<script type=\"text/javascript\" language=\"javascript\" src=\"/resource/js/ajaxviewer.js\"></script>",
- "<script type=\"text/javascript\" language=\"javascript\" src=\"/resource/js/handler.js\"></script>",
- "<link rel=\"stylesheet\" type=\"text/css\" href=\"/resource/css/ajaxviewer.css\"></link>",
- "<link rel=\"stylesheet\" type=\"text/css\" href=\"/resource/css/logger.css\"></link>",
- "<title>" + title + "</title>",
- "</head>",
- "<body>",
- "<div id=\"toolbar\">",
- "<ul>",
- "<li>",
- "<a href=\"#\" cmd=\"sendCtrlAltDel\">",
- "<span><img align=\"left\" src=\"/resource/images/cad.gif\" alt=\"Ctrl-Alt-Del\" />Ctrl-Alt-Del</span>",
- "</a>",
- "</li>",
- "<li>",
- "<a href=\"#\" cmd=\"sendCtrlEsc\">",
- "<span><img align=\"left\" src=\"/resource/images/winlog.png\" alt=\"Ctrl-Esc\" style=\"width:16px;height:16px\"/>Ctrl-Esc</span>",
- "</a>",
- "</li>",
-
- "<li class=\"pulldown\">",
- "<a href=\"#\">",
- "<span><img align=\"left\" src=\"/resource/images/winlog.png\" alt=\"Keyboard\" style=\"width:16px;height:16px\"/>Keyboard</span>",
- "</a>",
- "<ul>",
- "<li><a href=\"#\" cmd=\"keyboard_us\"><span>Standard (US) keyboard</span></a></li>",
- "<li><a href=\"#\" cmd=\"keyboard_jp\"><span>Japanese keyboard</span></a></li>",
- "</ul>",
- "</li>",
- "</ul>",
- "<span id=\"light\" class=\"dark\" cmd=\"toggle_logwin\"></span>",
- "</div>",
- "<div id=\"main_panel\" tabindex=\"1\"></div>",
- "<script language=\"javascript\">",
- "var acceptLanguages = '" + sbLanguages.toString() + "';",
- "var tileMap = [ " + tileSequence + " ];",
- "var ajaxViewer = new AjaxViewer('main_panel', '" + imgUrl + "', '" + updateUrl + "', tileMap, ",
- String.valueOf(width) + ", " + String.valueOf(height) + ", " + String.valueOf(tileWidth) + ", " + String.valueOf(tileHeight) + ");",
-
- "$(function() {",
- "ajaxViewer.start();",
- "});",
-
- "</script>",
- "</body>",
- "</html>"
- };
-
- StringBuffer sb = new StringBuffer();
- for(int i = 0; i < content.length; i++)
- sb.append(content[i]);
-
- return sb.toString();
- }
-
- public String onAjaxClientDisconnected() {
- return "onDisconnect();";
- }
-
- @Override
- public String onAjaxClientUpdate() {
- updateFrontEndActivityTime();
- if(!waitForViewerReady())
- return onAjaxClientDisconnected();
-
- synchronized(tileDirtyEvent) {
- if(!dirtyFlag) {
- try {
- tileDirtyEvent.wait(3000);
- } catch(InterruptedException e) {
- }
- }
- }
-
- boolean doResize = false;
- synchronized(this) {
- if(framebufferResized) {
- framebufferResized = false;
- doResize = true;
- }
- }
-
- List<TileInfo> tiles;
-
- if(doResize)
- tiles = tracker.scan(true);
- else
- tiles = tracker.scan(false);
- dirtyFlag = false;
-
- String imgUrl = prepareAjaxImage(tiles, false);
- StringBuffer sbTileSequence = new StringBuffer();
- int i = 0;
- for(TileInfo tile : tiles) {
- sbTileSequence.append("[").append(tile.getRow()).append(",").append(tile.getCol()).append("]");
- if(i < tiles.size() - 1)
- sbTileSequence.append(",");
-
- i++;
- }
-
- return getAjaxViewerUpdatePageContent(sbTileSequence.toString(), imgUrl, doResize,
- resizedFramebufferWidth, resizedFramebufferHeight,
- tracker.getTileWidth(), tracker.getTileHeight());
- }
-
- private String getAjaxViewerUpdatePageContent(String tileSequence, String imgUrl, boolean resized, int width,
- int height, int tileWidth, int tileHeight) {
-
- String[] content = new String[] {
- "tileMap = [ " + tileSequence + " ];",
- resized ? "ajaxViewer.resize('main_panel', " + width + ", " + height + " , " + tileWidth + ", " + tileHeight + ");" : "",
- "ajaxViewer.refresh('" + imgUrl + "', tileMap, false);"
- };
-
- StringBuffer sb = new StringBuffer();
- for(int i = 0; i < content.length; i++)
- sb.append(content[i]);
-
- return sb.toString();
- }
-
- //
- // Helpers
- //
- private synchronized static int getNextClientId() {
- return ++s_nextClientId;
- }
-
- private void signalTileDirtyEvent() {
- synchronized(tileDirtyEvent) {
- dirtyFlag = true;
- tileDirtyEvent.notifyAll();
- }
- }
-
- public void updateFrontEndActivityTime() {
- lastFrontEndActivityTime = System.currentTimeMillis();
- }
-
- protected abstract FrameBufferCanvas getFrameBufferCavas();
-
- public ConsoleProxyClientParam getClientParam() {
- return clientParam;
- }
-
- public void setClientParam(ConsoleProxyClientParam clientParam) {
- this.clientParam = clientParam;
- ConsoleProxyPasswordBasedEncryptor encryptor = new ConsoleProxyPasswordBasedEncryptor(ConsoleProxy.getEncryptorPassword());
- this.clientToken = encryptor.encryptObject(ConsoleProxyClientParam.class, clientParam);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2293caa3/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClientListener.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClientListener.java b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClientListener.java
deleted file mode 100644
index 43a0bab..0000000
--- a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClientListener.java
+++ /dev/null
@@ -1,25 +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;
-
-public interface ConsoleProxyClientListener {
- void onFramebufferSizeChange(int w, int h);
- void onFramebufferUpdate(int x, int y, int w, int h);
-
- void onClientConnected();
- void onClientClose();
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/2293caa3/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClientParam.java
----------------------------------------------------------------------
diff --git a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClientParam.java b/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClientParam.java
deleted file mode 100644
index 8de4955..0000000
--- a/console-proxy/src/com/cloud/consoleproxy/ConsoleProxyClientParam.java
+++ /dev/null
@@ -1,110 +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;
-
-/**
- *
- * Data object to store parameter info needed by client to connect to its host
- */
-public class ConsoleProxyClientParam {
-
- private String clientHostAddress;
- private int clientHostPort;
- private String clientHostPassword;
- private String clientTag;
- private String ticket;
-
- private String clientTunnelUrl;
- private String clientTunnelSession;
-
- private String ajaxSessionId;
-
- public ConsoleProxyClientParam() {
- clientHostPort = 0;
- }
-
- public String getClientHostAddress() {
- return clientHostAddress;
- }
-
- public void setClientHostAddress(String clientHostAddress) {
- this.clientHostAddress = clientHostAddress;
- }
-
- public int getClientHostPort() {
- return clientHostPort;
- }
-
- public void setClientHostPort(int clientHostPort) {
- this.clientHostPort = clientHostPort;
- }
-
- public String getClientHostPassword() {
- return clientHostPassword;
- }
-
- public void setClientHostPassword(String clientHostPassword) {
- this.clientHostPassword = clientHostPassword;
- }
-
- public String getClientTag() {
- return clientTag;
- }
-
- public void setClientTag(String clientTag) {
- this.clientTag = clientTag;
- }
-
- public String getTicket() {
- return ticket;
- }
-
- public void setTicket(String ticket) {
- this.ticket = ticket;
- }
-
- public String getClientTunnelUrl() {
- return clientTunnelUrl;
- }
-
- public void setClientTunnelUrl(String clientTunnelUrl) {
- this.clientTunnelUrl = clientTunnelUrl;
- }
-
- public String getClientTunnelSession() {
- return clientTunnelSession;
- }
-
- public void setClientTunnelSession(String clientTunnelSession) {
- this.clientTunnelSession = clientTunnelSession;
- }
-
- public String getAjaxSessionId() {
- return this.ajaxSessionId;
- }
-
- public void setAjaxSessionId(String ajaxSessionId) {
- this.ajaxSessionId = ajaxSessionId;
- }
-
- public String getClientMapKey() {
- if(clientTag != null && !clientTag.isEmpty())
- return clientTag;
-
- return clientHostAddress + ":" + clientHostPort;
- }
-}