Search in sources :

Example 1 with RdpClient

use of rdpclient.RdpClient in project cloudstack by apache.

the class ConsoleProxyRdpClient method initClient.

@Override
public void initClient(final ConsoleProxyClientParam param) {
    if ((System.currentTimeMillis() - _threadStopTime) < 1000) {
        return;
    }
    try {
        int canvasWidth = 1024;
        int canvasHeight = 768;
        setClientParam(param);
        final String host = param.getHypervHost();
        final String password = param.getPassword();
        final String instanceId = param.getClientHostAddress();
        final int port = param.getClientHostPort();
        final SSLState sslState = new SSLState();
        final String username = param.getUsername();
        String name = null;
        String domain = null;
        if (username.contains("\\")) {
            String[] tokens = username.split("\\\\");
            name = tokens[1];
            domain = tokens[0];
        } else {
            name = username;
            domain = "Workgroup";
        }
        _screen = new ScreenDescription();
        _canvas = new RdpBufferedImageCanvas(this, canvasWidth, canvasHeight);
        onFramebufferSizeChange(canvasWidth, canvasHeight);
        _screen.addSizeChangeListener(new SizeChangeListener() {

            @Override
            public void sizeChanged(int width, int height) {
                if (_canvas != null) {
                    _canvas.setCanvasSize(width, height);
                }
            }
        });
        s_logger.info("connecting to instance " + instanceId + " on host " + host);
        _client = new RdpClient("client", host, domain, name, password, instanceId, _screen, _canvas, sslState);
        _mouseEventSource = _client.getMouseEventSource();
        _keyEventSource = _client.getKeyEventSource();
        _worker = new Thread(new Runnable() {

            @Override
            public void run() {
                _socket = new AprSocketWrapperImpl("socket", sslState);
                Pipeline pipeline = new PipelineImpl("Client");
                pipeline.add(_socket, _client);
                pipeline.link("socket", _client.getId(), "socket");
                pipeline.validate();
                InetSocketAddress address = new InetSocketAddress(host, port);
                ConsoleProxy.ensureRoute(host);
                try {
                    _workerDone = false;
                    s_logger.info("Connecting socket to remote server and run main loop(s)");
                    _socket.connect(address);
                } catch (Exception e) {
                    s_logger.info(" error occurred in connecting to socket " + e.getMessage());
                } finally {
                    shutdown();
                }
                _threadStopTime = System.currentTimeMillis();
                s_logger.info("Receiver thread stopped.");
                _workerDone = true;
            }
        });
        _worker.setDaemon(true);
        _worker.start();
    } catch (Exception e) {
        _workerDone = true;
        s_logger.info("error occurred in initializing rdp client " + e.getMessage());
    }
}
Also used : PipelineImpl(streamer.PipelineImpl) InetSocketAddress(java.net.InetSocketAddress) ScreenDescription(common.ScreenDescription) SizeChangeListener(common.SizeChangeListener) Pipeline(streamer.Pipeline) AprSocketWrapperImpl(streamer.apr.AprSocketWrapperImpl) RdpBufferedImageCanvas(com.cloud.consoleproxy.rdp.RdpBufferedImageCanvas) SSLState(streamer.ssl.SSLState) RdpClient(rdpclient.RdpClient)

Example 2 with RdpClient

use of rdpclient.RdpClient in project cloudstack by apache.

the class Client method setMainElementAndAddressBasedOnProtocol.

private Element setMainElementAndAddressBasedOnProtocol(Protocol protocol, SSLState sslState) {
    Element main;
    switch(protocol) {
        case VNC:
            address = new InetSocketAddress(hostName.value, vncPort.value);
            main = new VncClient("client", password.value, screen, canvas);
            break;
        case RDP:
            address = new InetSocketAddress(hostName.value, rdpPort.value);
            main = new RdpClient("client", hostName.value, domain.value, userName.value, rdpPassword.value, null, screen, canvas, sslState);
            break;
        case HYPERV:
            address = new InetSocketAddress(hostName.value, hyperVPort.value);
            main = new RdpClient("client", hostName.value, domain.value, userName.value, password.value, hyperVInstanceId.value, screen, canvas, sslState);
            break;
        default:
            address = null;
            main = null;
    }
    return main;
}
Also used : InetSocketAddress(java.net.InetSocketAddress) Element(streamer.Element) VncClient(vncclient.VncClient) RdpClient(rdpclient.RdpClient)

Aggregations

InetSocketAddress (java.net.InetSocketAddress)2 RdpClient (rdpclient.RdpClient)2 RdpBufferedImageCanvas (com.cloud.consoleproxy.rdp.RdpBufferedImageCanvas)1 ScreenDescription (common.ScreenDescription)1 SizeChangeListener (common.SizeChangeListener)1 Element (streamer.Element)1 Pipeline (streamer.Pipeline)1 PipelineImpl (streamer.PipelineImpl)1 AprSocketWrapperImpl (streamer.apr.AprSocketWrapperImpl)1 SSLState (streamer.ssl.SSLState)1 VncClient (vncclient.VncClient)1