ó
ŸdþWc           @   s  d  d l  Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z d  d l m Z d  d l m Z y d  d l m Z Wn e k
 rÉ e Z n Xe Z d	 e j f d
 „  ƒ  YZ d e f d „  ƒ  YZ e ƒ  Z d S(   iÿÿÿÿN(   t   internet(   t   service(   t   IPlugin(   t   usage(   t   reflect(   t
   implements(   t   sslt   Optionsc           B   sÂ   e  Z d  d d d e g d d d d g d d	 d! d
 g d d d! d g d d d! d g d d! d d e g d d! d d g d d! d d g d d! d d g d d! d! d g d d! d! d g g Z d  „  Z RS("   t   portt   pi¸"  s   tcp port to listen ont   listent   ls   0.0.0.0s   interface to listen ont   unixt   us(   listen on unix socket instead of ip:portt   appt   rs   cyclone application to runt   appoptst   cs   arguments to your applications   ssl-portiû   s   port to listen on for ssls
   ssl-listens   interface to listen on for ssls   ssl-certs
   server.crts   ssl certificates   ssl-keys
   server.keys   ssl server keys   ssl-apps   ssl application (same as --app)s   ssl-appoptss    arguments to the ssl applicationc         G   s   | r | d |  d <n  d  S(   Ni    t   filename(    (   t   selft   args(    (    sC   /var/www/c4bv.valis/build/cyclone/twisted/plugins/cyclone_plugin.pyt	   parseArgs8   s    N(   t   __name__t
   __module__t   intt   Nonet   optParametersR   (    (    (    sC   /var/www/c4bv.valis/build/cyclone/twisted/plugins/cyclone_plugin.pyR   &   s   t   ServiceMakerc           B   s3   e  Z e e j e ƒ d  Z d Z e Z	 d „  Z
 RS(   t   cyclones   A high performance web serverc   
   
   C   sÔ  t  j ƒ  } d  } d | k rO | d p+ d d j ƒ  d k rO | d | d <n  d | k r@t j j | d ƒ r@t j j t j j | d ƒ d ƒ d } t	 j
 | | d ƒ } xŒ t | ƒ D]{ } t | | ƒ } t | t t j f ƒ r¾ t | t j j ƒ r9| | d <t r6t j j | d ƒ r6| | d	 <q6q9q¾ q¾ Wn  | d rút | d ƒ rg| d } n t j | d ƒ } | d
 r—| | d
 ƒ } n	 | ƒ  } | j d ƒ }	 |	 rÊt j |	 | ƒ } n  t j | d | d | d ƒ} | j | ƒ n  | d	 r¯t r§t | d	 ƒ r'| d	 } n t j | d	 ƒ } | d rW| | d ƒ } n	 | ƒ  } t j | d | t j  | d | d ƒ d | d ƒ} | j | ƒ q¯d GHn  | d  k rÐd GHt! j" d ƒ n  | S(   NR   t    iýÿÿÿs   .pyR   iÿÿÿÿi    s   ssl-certs   ssl-appR   R   R   t	   interfaceR
   s   ssl-appoptss   ssl-ports   ssl-keys
   ssl-listens9   SSL support is disabled. Install PyOpenSSL and try again.s%   usage: cyclone run [server.py|--help]i   (#   R   t   MultiServiceR   t   lowert   ost   patht   existst   splitextt   splitt   impt   load_sourcet   dirt   getattrt
   isinstancet   typet   typest	   ClassTypet
   issubclassR   t   webt   Applicationt   ssl_supportt   callableR   t   namedAnyt   getR    t
   UNIXServert	   TCPServert   setServiceParentt	   SSLServerR   t   DefaultOpenSSLContextFactoryt   syst   exit(
   R   t   optionst   srvt   st   nt   appmodt   namet   klsR   R   (    (    sC   /var/www/c4bv.valis/build/cyclone/twisted/plugins/cyclone_plugin.pyt   makeServiceC   s\    ,"*


	

	(   R   R   R   R   t   IServiceMakerR   t   tapnamet   descriptionR   R<   RC   (    (    (    sC   /var/www/c4bv.valis/build/cyclone/twisted/plugins/cyclone_plugin.pyR   =   s
   (   t   cyclone.webR   R&   R!   R:   R,   t   twisted.applicationR    R   t   twisted.pluginR   t   twisted.pythonR   R   t   zope.interfaceR   t   twisted.internetR   t   ImportErrort   FalseR1   t   TrueR   t   objectR   t   serviceMaker(    (    (    sC   /var/www/c4bv.valis/build/cyclone/twisted/plugins/cyclone_plugin.pyt   <module>   s$   
H