Ejemplo n.º 1
0
def write_clusterconfig(engines_dict,controller_host=None,
                        base_clusterconfig=os.path.join(paths['home'],'py_util/base_clusterconfig-ec2.py'),
                        final_clusterconfig=os.path.join(paths['home'],'.ipython/full_clusterconfig-ec2.py')):
    '''takes an engine description dict, and a base configuration filename 
    (i.e. clusterconfig.py _without_ engines = {}), writes a full config to final_clusterconfig
    '''

    if controller_host is None:
        import net
        controller_host = net.get_ip_address('eth0')

    fh = open(final_clusterconfig,'w')
    fh.write( open(base_clusterconfig).read() )
    fh.write( 'controller = %s\n' % ({'host':controller_host}, ) )
    fh.write( 'engines = %s\n' % (engines_dict, ) )
    fh.close()
Ejemplo n.º 2
0
def write_clusterconfig(
    engines_dict,
    controller_host=None,
    base_clusterconfig=os.path.join(paths['home'],
                                    'py_util/base_clusterconfig-ec2.py'),
    final_clusterconfig=os.path.join(paths['home'],
                                     '.ipython/full_clusterconfig-ec2.py')):
    '''takes an engine description dict, and a base configuration filename 
    (i.e. clusterconfig.py _without_ engines = {}), writes a full config to final_clusterconfig
    '''

    if controller_host is None:
        import net
        controller_host = net.get_ip_address('eth0')

    fh = open(final_clusterconfig, 'w')
    fh.write(open(base_clusterconfig).read())
    fh.write('controller = %s\n' % ({'host': controller_host}, ))
    fh.write('engines = %s\n' % (engines_dict, ))
    fh.close()
Ejemplo n.º 3
0
Archivo: www.py Proyecto: vandys/chore
    def run(self):
	approot = self.approot
	c = self.config

	# Base socket
	s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

	# Wrap in SSL?
	if self.proto == "https":

	    # Sanity--SSL configured
	    if not c.get("privateKey"):
		raise Exception, "Private SSL key not configured"
	    if not c.get("publicCert"):
		raise Exception, "Public SSL certificate not configured"

	    # Create socket
	    s = ssl.wrap_socket(s,
		c["privateKey"], c["publicCert"],
		server_side = True, suppress_ragged_eofs = False,
		do_handshake_on_connect=False)
	    # ctx = SSL.Context(SSL.SSLv23_METHOD)
	    # ctx.use_privatekey_file(c["privateKey"])
	    # ctx.use_certificate_file(c["publicCert"])
	    # s = SSL.Connection(ctx, s)

	    # Default port
	    port = c.get("port", 443)

	    # Flag that SSL is active
	    self.ssl = True

	elif self.proto == "http":

	    # Default port
	    port = c.get("port", 80)

	    # In the clear
	    self.ssl = False

	else:
	    raise Exception, "Unknown protocol %s" % (self.proto,)

	# Set up incoming address filtering?
	self.permit = None
	if "permit" in c:
	    # Get list of permitted addresses/prefixes
	    v = c["permit"]
	    self.permit = []
	    for m in v:
		self.permit.append(net.parseaddr(m))

	# Standard options for socket
	self.socket = s
	s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
	ifname = c.get("iface")
	if ifname:
	    addr = net.get_ip_address(ifname)
	else:
	    addr = ""
	s.bind( (addr, port) )
	s.listen(20)

	# Stash away in case our server threads need to know
	self.addr,self.port = s.getsockname()

	# Endless service loop
	sys.stderr.write("Handler for %r started on %r:%r\n" %
	    (self.proto, self.addr, self.port))
	while True:
	    conn,tup = s.accept()
	    sys.stderr.write("HTTP %sfrom %r\n" %
                (("(ssl) " if self.ssl else ""), tup))

	    # See if we want to talk
	    if self.permit and (not net.ok_ip(self.permit, tup[0])):
		sys.stderr.write(" rejected\n");
		conn.close()
		continue

	    t = threading.Thread(target=self.launch, args=(conn,tup))
	    t.start()