î
yË Xì  ã               @   sK  d  d l  m Z d  d l Z d  d l Z d  d l Z y d  d l Z Wn e k
 rd d  d l Z Yn Xd  d l m	 Z	 m
 Z
 e
 j Z d  d l m Z d  d l m Z m Z d  d l m Z d d „  Z d d	 d
 „ Z d d d „ Z Gd d „  d e ƒ Z Gd d „  d e ƒ Z Gd d „  d e ƒ Z d d „  Z d d d d d „ Z d S)é    )Úprint_functionN)ÚloadappÚloadwsgi)ÚApplication)ÚConfigÚget_default_config_file)Úutilc             C   s)   t  j  ƒ  } | j |  g ƒ | j d ƒ S)NÚloggers)ÚConfigParserÚreadÚhas_section)Z
paste_fileZ
cfg_parser© r   úF/home/ubuntu/projects/ifolica/build/gunicorn/gunicorn/app/pasterapp.pyÚ_has_logging_config   s    r   c             C   sž  t  j j d | ƒ t j j | ƒ | j d ƒ d } t j t	 | d | d | ƒ} | j
 j ƒ  | j j ƒ  } } i  } | j d d ƒ | j d d ƒ } }	 | rÁ |	 rÁ d | |	 f | d	 <n | rÝ | j d
 ƒ | d	 <n  | j d ƒ | d <| j d ƒ d }
 t |
 ƒ r"| j d |
 ƒ n  x9 | j ƒ  D]+ \ } } | |  j k rPq/n  | | | <q/Wx9 | j ƒ  D]+ \ } } | |  j k rŒqkn  | | | <qkW| S)Nr   ú#Úrelative_toÚglobal_confÚhostÚ Úportz%s:%sÚbindú,Ú__file__Údefault_proc_nameú:é   Z	logconfig)ÚsysÚpathÚinsertÚpkg_resourcesÚworking_setÚ	add_entryÚsplitr   ZloadcontextÚSERVERr   ÚcopyZ
local_confÚpopÚgetr   Ú
setdefaultÚitemsÚsettings)ZgconfigÚ
config_urlr   r   ZcxÚgcÚlcÚcfgr   r   Úconfig_fileÚkÚvr   r   r   Úpaste_config   s2    	%r1   c             C   s   t  |  d | d | ƒS)Nr   r   )r   )r*   r   r   r   r   r   Úload_pasteappC   s    r2   c                   s4   e  Z d  Z d Z d d „  Z ‡  f d d †  Z ‡  S)ÚPasterBaseApplicationNc             C   s"   t  |  j |  j |  j d |  j ƒS)Nr   )r1   r-   ÚcfgurlÚrelpathÚgcfg)Úselfr   r   r   Ú
app_configJ   s    z PasterBaseApplication.app_configc                s§   t  t |  ƒ j ƒ  t |  d ƒ r£ t j ƒ  } | j |  j g ƒ | j d ƒ r£ d d l m	 } t
 j j |  j ƒ } | | t d | d t
 j j | ƒ ƒ ƒ q£ n  d  S)NÚcfgfnamer	   r   )Ú
fileConfigr   Úhere)Úsuperr3   Úload_configÚhasattrr
   r   r9   r   Úlogging.configr:   Úosr   ÚabspathÚdictÚdirname)r7   Úparserr:   r.   )Ú	__class__r   r   r=   N   s    z!PasterBaseApplication.load_config)Ú__name__Ú
__module__Ú__qualname__r6   r8   r=   r   r   )rE   r   r3   G   s   r3   c               @   s(   e  Z d  Z d d „  Z d d „  Z d S)ÚPasterApplicationc             C   sé   t  | ƒ d k r" | j d ƒ n  t j ƒ  } t j j t j j | | d ƒ ƒ } t j j | ƒ } t j j	 | ƒ s‹ | j d | ƒ n  d | |  _
 t j j | ƒ |  _ | |  _ t j j d |  j ƒ t j j |  j ƒ |  j ƒ  S)Nr   zNo application name specified.r   zConfig file not found: %sz	config:%s)ÚlenÚerrorr   Úgetcwdr@   r   ÚnormpathÚjoinrA   Úexistsr4   rC   r5   r9   r   r   r   r    r!   r8   )r7   rD   ÚoptsÚargsÚcwdr9   r   r   r   Úinit^   s    %	zPasterApplication.initc             C   s/   t  j |  j j ƒ t |  j |  j d |  j ƒS)Nr   )r@   Úchdirr-   r2   r4   r5   r6   )r7   r   r   r   Úloadq   s    zPasterApplication.loadN)rF   rG   rH   rS   rU   r   r   r   r   rI   \   s   rI   c               @   s1   e  Z d  Z d d d d d „ Z d d „  Z d S)ÚPasterServerApplicationNz	127.0.0.1c             O   s  t  ƒ  |  _ | |  _ | |  _ d  |  _ | p0 i  } | j d ƒ } | d  k	 r| d | |  _ t j j	 | ƒ |  _
 | |  _ n  | j ƒ  } | r± | j d ƒ r± d | | f }	 n | }	 |	 j d ƒ | d <| rx$ | j ƒ  D] \ }
 } | | |
 <qÝ W| d | d <n  ya xZ | j ƒ  D]L \ }
 } |
 j ƒ  |  j j k r| d  k	 r|  j j |
 j ƒ  | ƒ qqWWn\ t k
 rÇ} z< t d t | ƒ d	 t j ƒt j j ƒ  t j d
 ƒ WYd  d  } ~ Xn X| j d ƒ rë|  j | d ƒ n% t ƒ  } | d  k	 r|  j | ƒ n  d  S)Nr   z	config:%szunix:z%s:%sr   r   r   z
Config error: %sÚfiler   Úconfig)r   r-   r6   ÚappÚcallabler&   r4   r@   r   rC   r5   r9   r$   Ú
startswithr"   r(   Úlowerr)   ÚsetÚ	ExceptionÚprintÚstrr   ÚstderrÚflushÚexitZload_config_from_filer   )r7   rY   r6   r   r   rQ   Úkwargsr9   r-   r   r/   r0   ÚeZdefault_configr   r   r   Ú__init__{   s@    			$$ 	z PasterServerApplication.__init__c             C   s   t  j |  j j ƒ |  j S)N)r@   rT   r-   rY   )r7   r   r   r   rU   ¥   s    zPasterServerApplication.load)rF   rG   rH   rf   rU   r   r   r   r   rV   y   s   *rV   c              C   s1   t  j d ƒ d d l m }  |  d ƒ j ƒ  d S)zt    The ``gunicorn_paster`` command for launching Paster compatible
    applications like Pylons or Turbogears2
    z}This command is deprecated.

    You should now use the `--paste` option. Ex.:

        gunicorn --paste development.ini
    r   )rI   z"%(prog)s [OPTIONS] pasteconfig.iniN)r   ÚwarnÚgunicorn.app.pasterapprI   Úrun)rI   r   r   r   ri   ­   s    ri   z	127.0.0.1c          
   O   sI   t  j d ƒ d d l m } | |  d | d | d | | | Žj ƒ  d S)z´    A paster server.

    Then entry point in your paster ini file should looks like this:

    [server:main]
    use = egg:gunicorn#main
    host = 127.0.0.1
    port = 5000

    z}This command is deprecated.

    You should now use the `--paste` option. Ex.:

        gunicorn --paste development.ini
    r   )rV   r6   r   r   N)r   rg   rh   rV   ri   )rY   r6   r   r   rQ   rd   rV   r   r   r   Úpaste_server½   s    rj   )Ú
__future__r   r@   r   r   Úconfigparserr
   ÚImportErrorZpaste.deployr   r   r#   Zgunicorn.app.baser   Zgunicorn.configr   r   Zgunicornr   r   r1   r2   r3   rI   rV   ri   rj   r   r   r   r   Ú<module>   s(   	%4