Add nova-all to run all services
* Cleans up service for objectstore and vncproxy * Fixes virt.fake to be runnable via a flag Change-Id: I18e05a4d727bbbd3481063623dc3b6ad52e233d4
This commit is contained in:
		
							
								
								
									
										80
									
								
								bin/nova-all
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										80
									
								
								bin/nova-all
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,80 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env python
 | 
				
			||||||
 | 
					# vim: tabstop=4 shiftwidth=4 softtabstop=4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright 2011 OpenStack, LLC
 | 
				
			||||||
 | 
					# Copyright 2010 United States Government as represented by the
 | 
				
			||||||
 | 
					# Administrator of the National Aeronautics and Space Administration.
 | 
				
			||||||
 | 
					# All Rights Reserved.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#    Licensed 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"""Starter script for All nova services.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This script attempts to start all the nova services in one process.  Each
 | 
				
			||||||
 | 
					service is started in its own greenthread.  Please note that exceptions and
 | 
				
			||||||
 | 
					sys.exit() on the starting of a service are logged and the script will
 | 
				
			||||||
 | 
					continue attempting to launch the rest of the services.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import eventlet
 | 
				
			||||||
 | 
					eventlet.monkey_patch()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import sys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					possible_topdir = os.path.normpath(os.path.join(os.path.abspath(
 | 
				
			||||||
 | 
					        sys.argv[0]), os.pardir, os.pardir))
 | 
				
			||||||
 | 
					if os.path.exists(os.path.join(possible_topdir, "nova", "__init__.py")):
 | 
				
			||||||
 | 
					    sys.path.insert(0, possible_topdir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from nova import flags
 | 
				
			||||||
 | 
					from nova import log as logging
 | 
				
			||||||
 | 
					from nova import service
 | 
				
			||||||
 | 
					from nova import utils
 | 
				
			||||||
 | 
					from nova.vnc import server
 | 
				
			||||||
 | 
					from nova.objectstore import s3server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    utils.default_flagfile()
 | 
				
			||||||
 | 
					    flags.FLAGS(sys.argv)
 | 
				
			||||||
 | 
					    logging.setup()
 | 
				
			||||||
 | 
					    utils.monkey_patch()
 | 
				
			||||||
 | 
					    servers = []
 | 
				
			||||||
 | 
					    # nova-api
 | 
				
			||||||
 | 
					    for api in flags.FLAGS.enabled_apis:
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            servers.append(service.WSGIService(api))
 | 
				
			||||||
 | 
					        except (Exception, SystemExit):
 | 
				
			||||||
 | 
					            logging.exception(_('Failed to load %s') % '%s-api' % api)
 | 
				
			||||||
 | 
					    # nova-vncproxy
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        servers.append(server.get_wsgi_server())
 | 
				
			||||||
 | 
					    except (Exception, SystemExit):
 | 
				
			||||||
 | 
					        logging.exception(_('Failed to load %s') % 'vncproxy-wsgi')
 | 
				
			||||||
 | 
					    # nova-objectstore
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        servers.append(s3server.get_wsgi_server())
 | 
				
			||||||
 | 
					    except (Exception, SystemExit):
 | 
				
			||||||
 | 
					        logging.exception(_('Failed to load %s') % 'objectstore-wsgi')
 | 
				
			||||||
 | 
					    for binary in ['nova-vncproxy', 'nova-compute', 'nova-volume',
 | 
				
			||||||
 | 
					                   'nova-network', 'nova-scheduler', 'nova-vsa']:
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            servers.append(service.Service.create(binary=binary))
 | 
				
			||||||
 | 
					        except (Exception, SystemExit):
 | 
				
			||||||
 | 
					            logging.exception(_('Failed to load %s' % binary))
 | 
				
			||||||
 | 
					    service.serve(*servers)
 | 
				
			||||||
 | 
					    service.wait()
 | 
				
			||||||
@@ -38,22 +38,14 @@ from nova import flags
 | 
				
			|||||||
from nova import log as logging
 | 
					from nova import log as logging
 | 
				
			||||||
from nova import service
 | 
					from nova import service
 | 
				
			||||||
from nova import utils
 | 
					from nova import utils
 | 
				
			||||||
from nova import wsgi
 | 
					 | 
				
			||||||
from nova.objectstore import s3server
 | 
					from nova.objectstore import s3server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
FLAGS = flags.FLAGS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
    utils.default_flagfile()
 | 
					    utils.default_flagfile()
 | 
				
			||||||
    FLAGS(sys.argv)
 | 
					    flags.FLAGS(sys.argv)
 | 
				
			||||||
    logging.setup()
 | 
					    logging.setup()
 | 
				
			||||||
    utils.monkey_patch()
 | 
					    utils.monkey_patch()
 | 
				
			||||||
    router = s3server.S3Application(FLAGS.buckets_path)
 | 
					    server = s3server.get_wsgi_server()
 | 
				
			||||||
    server = wsgi.Server("S3 Objectstore",
 | 
					 | 
				
			||||||
                         router,
 | 
					 | 
				
			||||||
                         port=FLAGS.s3_port,
 | 
					 | 
				
			||||||
                         host=FLAGS.s3_host)
 | 
					 | 
				
			||||||
    service.serve(server)
 | 
					    service.serve(server)
 | 
				
			||||||
    service.wait()
 | 
					    service.wait()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,85 +35,15 @@ from nova import flags
 | 
				
			|||||||
from nova import log as logging
 | 
					from nova import log as logging
 | 
				
			||||||
from nova import service
 | 
					from nova import service
 | 
				
			||||||
from nova import utils
 | 
					from nova import utils
 | 
				
			||||||
from nova import wsgi
 | 
					from nova.vnc import server
 | 
				
			||||||
from nova import version
 | 
					 | 
				
			||||||
from nova.vnc import auth
 | 
					 | 
				
			||||||
from nova.vnc import proxy
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LOG = logging.getLogger('nova.vncproxy')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
FLAGS = flags.FLAGS
 | 
					 | 
				
			||||||
flags.DEFINE_string('vncproxy_wwwroot', '/var/lib/nova/noVNC/',
 | 
					 | 
				
			||||||
                     'Full path to noVNC directory')
 | 
					 | 
				
			||||||
flags.DEFINE_boolean('vnc_debug', False,
 | 
					 | 
				
			||||||
                     'Enable debugging features, like token bypassing')
 | 
					 | 
				
			||||||
flags.DEFINE_integer('vncproxy_port', 6080,
 | 
					 | 
				
			||||||
                     'Port that the VNC proxy should bind to')
 | 
					 | 
				
			||||||
flags.DEFINE_string('vncproxy_host', '0.0.0.0',
 | 
					 | 
				
			||||||
                     'Address that the VNC proxy should bind to')
 | 
					 | 
				
			||||||
flags.DEFINE_integer('vnc_token_ttl', 300,
 | 
					 | 
				
			||||||
                     'How many seconds before deleting tokens')
 | 
					 | 
				
			||||||
flags.DEFINE_string('vncproxy_manager', 'nova.vnc.auth.VNCProxyAuthManager',
 | 
					 | 
				
			||||||
                    'Manager for vncproxy auth')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
flags.DEFINE_flag(flags.HelpFlag())
 | 
					 | 
				
			||||||
flags.DEFINE_flag(flags.HelpshortFlag())
 | 
					 | 
				
			||||||
flags.DEFINE_flag(flags.HelpXMLFlag())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def handle_flash_socket_policy(socket):
 | 
					 | 
				
			||||||
    LOG.info(_("Received connection on flash socket policy port"))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    fd = socket.makefile('rw')
 | 
					 | 
				
			||||||
    expected_command = "<policy-file-request/>"
 | 
					 | 
				
			||||||
    if expected_command in fd.read(len(expected_command) + 1):
 | 
					 | 
				
			||||||
        LOG.info(_("Received valid flash socket policy request"))
 | 
					 | 
				
			||||||
        fd.write('<?xml version="1.0"?><cross-domain-policy><allow-'
 | 
					 | 
				
			||||||
                 'access-from domain="*" to-ports="%d" /></cross-'
 | 
					 | 
				
			||||||
                 'domain-policy>' % (FLAGS.vncproxy_port))
 | 
					 | 
				
			||||||
        fd.flush()
 | 
					 | 
				
			||||||
    socket.close()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    utils.default_flagfile()
 | 
					    utils.default_flagfile()
 | 
				
			||||||
    FLAGS(sys.argv)
 | 
					    flags.FLAGS(sys.argv)
 | 
				
			||||||
    logging.setup()
 | 
					    logging.setup()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    LOG.audit(_("Starting nova-vncproxy node (version %s)"),
 | 
					    wsgi_server = server.get_wsgi_server()
 | 
				
			||||||
              version.version_string_with_vcs())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if not (os.path.exists(FLAGS.vncproxy_wwwroot) and
 | 
					 | 
				
			||||||
            os.path.exists(FLAGS.vncproxy_wwwroot + '/vnc_auto.html')):
 | 
					 | 
				
			||||||
        LOG.info(_("Missing vncproxy_wwwroot (version %s)"),
 | 
					 | 
				
			||||||
                    FLAGS.vncproxy_wwwroot)
 | 
					 | 
				
			||||||
        LOG.info(_("You need a slightly modified version of noVNC "
 | 
					 | 
				
			||||||
                   "to work with the nova-vnc-proxy"))
 | 
					 | 
				
			||||||
        LOG.info(_("Check out the most recent nova noVNC code: %s"),
 | 
					 | 
				
			||||||
                   "git://github.com/sleepsonthefloor/noVNC.git")
 | 
					 | 
				
			||||||
        LOG.info(_("And drop it in %s"), FLAGS.vncproxy_wwwroot)
 | 
					 | 
				
			||||||
        exit(1)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    app = proxy.WebsocketVNCProxy(FLAGS.vncproxy_wwwroot)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    LOG.audit(_("Allowing access to the following files: %s"),
 | 
					 | 
				
			||||||
              app.get_whitelist())
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    with_logging = auth.LoggingMiddleware(app)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if FLAGS.vnc_debug:
 | 
					 | 
				
			||||||
        with_auth = proxy.DebugMiddleware(with_logging)
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        with_auth = auth.VNCNovaAuthMiddleware(with_logging)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    wsgi_server = wsgi.Server("VNC Proxy",
 | 
					 | 
				
			||||||
                              with_auth,
 | 
					 | 
				
			||||||
                              host=FLAGS.vncproxy_host,
 | 
					 | 
				
			||||||
                              port=FLAGS.vncproxy_port)
 | 
					 | 
				
			||||||
    wsgi_server.start_tcp(handle_flash_socket_policy,
 | 
					 | 
				
			||||||
                          843,
 | 
					 | 
				
			||||||
                          host=FLAGS.vncproxy_host)
 | 
					 | 
				
			||||||
    server = service.Service.create(binary='nova-vncproxy')
 | 
					    server = service.Service.create(binary='nova-vncproxy')
 | 
				
			||||||
    service.serve(wsgi_server, server)
 | 
					    service.serve(wsgi_server, server)
 | 
				
			||||||
    service.wait()
 | 
					    service.wait()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -55,6 +55,13 @@ flags.DEFINE_string('buckets_path', '$state_path/buckets',
 | 
				
			|||||||
                    'path to s3 buckets')
 | 
					                    'path to s3 buckets')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_wsgi_server():
 | 
				
			||||||
 | 
					    return wsgi.Server("S3 Objectstore",
 | 
				
			||||||
 | 
					                       S3Application(FLAGS.buckets_path),
 | 
				
			||||||
 | 
					                       port=FLAGS.s3_port,
 | 
				
			||||||
 | 
					                       host=FLAGS.s3_host)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class S3Application(wsgi.Router):
 | 
					class S3Application(wsgi.Router):
 | 
				
			||||||
    """Implementation of an S3-like storage server based on local files.
 | 
					    """Implementation of an S3-like storage server based on local files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,7 +35,7 @@ from nova.virt import driver
 | 
				
			|||||||
LOG = logging.getLogger('nova.compute.disk')
 | 
					LOG = logging.getLogger('nova.compute.disk')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_connection(_):
 | 
					def get_connection(_=None):
 | 
				
			||||||
    # The read_only parameter is ignored.
 | 
					    # The read_only parameter is ignored.
 | 
				
			||||||
    return FakeConnection.instance()
 | 
					    return FakeConnection.instance()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,19 +22,16 @@ import time
 | 
				
			|||||||
import urlparse
 | 
					import urlparse
 | 
				
			||||||
import webob
 | 
					import webob
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from webob import Request
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from nova import context
 | 
					from nova import context
 | 
				
			||||||
from nova import flags
 | 
					from nova import flags
 | 
				
			||||||
from nova import log as logging
 | 
					from nova import log as logging
 | 
				
			||||||
from nova import manager
 | 
					from nova import manager
 | 
				
			||||||
from nova import rpc
 | 
					from nova import rpc
 | 
				
			||||||
from nova import utils
 | 
					from nova import utils
 | 
				
			||||||
from nova import wsgi
 | 
					 | 
				
			||||||
from nova import vnc
 | 
					from nova import vnc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LOG = logging.getLogger('nova.vnc-proxy')
 | 
					LOG = logging.getLogger('nova.vncproxy')
 | 
				
			||||||
FLAGS = flags.FLAGS
 | 
					FLAGS = flags.FLAGS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										96
									
								
								nova/vnc/server.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								nova/vnc/server.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,96 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env python
 | 
				
			||||||
 | 
					# vim: tabstop=4 shiftwidth=4 softtabstop=4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright (c) 2010 Openstack, LLC.
 | 
				
			||||||
 | 
					# All Rights Reserved.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#    Licensed 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"""Auth Components for VNC Console."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import sys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from nova import flags
 | 
				
			||||||
 | 
					from nova import log as logging
 | 
				
			||||||
 | 
					from nova import version
 | 
				
			||||||
 | 
					from nova import wsgi
 | 
				
			||||||
 | 
					from nova.vnc import auth
 | 
				
			||||||
 | 
					from nova.vnc import proxy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LOG = logging.getLogger('nova.vncproxy')
 | 
				
			||||||
 | 
					FLAGS = flags.FLAGS
 | 
				
			||||||
 | 
					flags.DEFINE_string('vncproxy_wwwroot', '/var/lib/nova/noVNC/',
 | 
				
			||||||
 | 
					                     'Full path to noVNC directory')
 | 
				
			||||||
 | 
					flags.DEFINE_boolean('vnc_debug', False,
 | 
				
			||||||
 | 
					                     'Enable debugging features, like token bypassing')
 | 
				
			||||||
 | 
					flags.DEFINE_integer('vncproxy_port', 6080,
 | 
				
			||||||
 | 
					                     'Port that the VNC proxy should bind to')
 | 
				
			||||||
 | 
					flags.DEFINE_string('vncproxy_host', '0.0.0.0',
 | 
				
			||||||
 | 
					                     'Address that the VNC proxy should bind to')
 | 
				
			||||||
 | 
					flags.DEFINE_integer('vnc_token_ttl', 300,
 | 
				
			||||||
 | 
					                     'How many seconds before deleting tokens')
 | 
				
			||||||
 | 
					flags.DEFINE_string('vncproxy_manager', 'nova.vnc.auth.VNCProxyAuthManager',
 | 
				
			||||||
 | 
					                    'Manager for vncproxy auth')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_wsgi_server():
 | 
				
			||||||
 | 
					    LOG.audit(_("Starting nova-vncproxy node (version %s)"),
 | 
				
			||||||
 | 
					              version.version_string_with_vcs())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if not (os.path.exists(FLAGS.vncproxy_wwwroot) and
 | 
				
			||||||
 | 
					            os.path.exists(FLAGS.vncproxy_wwwroot + '/vnc_auto.html')):
 | 
				
			||||||
 | 
					        LOG.info(_("Missing vncproxy_wwwroot (version %s)"),
 | 
				
			||||||
 | 
					                    FLAGS.vncproxy_wwwroot)
 | 
				
			||||||
 | 
					        LOG.info(_("You need a slightly modified version of noVNC "
 | 
				
			||||||
 | 
					                   "to work with the nova-vnc-proxy"))
 | 
				
			||||||
 | 
					        LOG.info(_("Check out the most recent nova noVNC code: %s"),
 | 
				
			||||||
 | 
					                   "git://github.com/sleepsonthefloor/noVNC.git")
 | 
				
			||||||
 | 
					        LOG.info(_("And drop it in %s"), FLAGS.vncproxy_wwwroot)
 | 
				
			||||||
 | 
					        sys.exit(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    app = proxy.WebsocketVNCProxy(FLAGS.vncproxy_wwwroot)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    LOG.audit(_("Allowing access to the following files: %s"),
 | 
				
			||||||
 | 
					              app.get_whitelist())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    with_logging = auth.LoggingMiddleware(app)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if FLAGS.vnc_debug:
 | 
				
			||||||
 | 
					        with_auth = proxy.DebugMiddleware(with_logging)
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        with_auth = auth.VNCNovaAuthMiddleware(with_logging)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    wsgi_server = wsgi.Server("VNC Proxy",
 | 
				
			||||||
 | 
					                              with_auth,
 | 
				
			||||||
 | 
					                              host=FLAGS.vncproxy_host,
 | 
				
			||||||
 | 
					                              port=FLAGS.vncproxy_port)
 | 
				
			||||||
 | 
					    wsgi_server.start_tcp(handle_flash_socket_policy,
 | 
				
			||||||
 | 
					                          843,
 | 
				
			||||||
 | 
					                          host=FLAGS.vncproxy_host)
 | 
				
			||||||
 | 
					    return wsgi_server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def handle_flash_socket_policy(socket):
 | 
				
			||||||
 | 
					    LOG.info(_("Received connection on flash socket policy port"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fd = socket.makefile('rw')
 | 
				
			||||||
 | 
					    expected_command = "<policy-file-request/>"
 | 
				
			||||||
 | 
					    if expected_command in fd.read(len(expected_command) + 1):
 | 
				
			||||||
 | 
					        LOG.info(_("Received valid flash socket policy request"))
 | 
				
			||||||
 | 
					        fd.write('<?xml version="1.0"?><cross-domain-policy><allow-'
 | 
				
			||||||
 | 
					                 'access-from domain="*" to-ports="%d" /></cross-'
 | 
				
			||||||
 | 
					                 'domain-policy>' % (FLAGS.vncproxy_port))
 | 
				
			||||||
 | 
					        fd.flush()
 | 
				
			||||||
 | 
					    socket.close()
 | 
				
			||||||
		Reference in New Issue
	
	Block a user