a
    còf²  ã                   @   sX   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Zdd„ Z	G dd„ deƒZ
dS )é    N)ÚBaseCommandc                 C   s6   t d urt dk st dkr2dd l}d|  }| |¡‚t S )Nr   é   z4%s option value needs to be within the range 0 to 1.)ÚvalueÚargparseÚArgumentTypeError)Ústringr   Úmsg© r	   úk/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/mod_wsgi/server/management/commands/runmodwsgi.pyÚcheck_percentage   s
    
r   c                   @   s>   e Zd ZdZdZeedƒr*ejej	j Zndd„ Z
dd„ ZdS )	ÚCommandÚ z"Starts Apache/mod_wsgi web server.Úoption_listc                 C   s  t g d¢ƒ}ttdœ}tjjD ]ê}|j|j }i }|jD ]¾}||vrºt	||ƒrº|dkrxt
||ƒ|v rº|t
||ƒ ||< nB|dkržt
||ƒdkrºt
||ƒ||< nt
||ƒd urºt
||ƒ||< | d¡dkrâ|jjdkrâ|d= t|d< | d	¡d
kr8|d	= q8|j|i |¤Ž qd S )N)ÚconstÚcallbackÚcallback_argsÚcallback_kwargs)Úintr   ÚtypeÚdefault)ÚNOÚDEFAULTÚactionr   r   Únargsr   )Úsetr   ÚstrÚmod_wsgiÚserverr   Ú_short_optsÚ
_long_optsÚATTRSÚhasattrÚgetattrÚgetr   Ú__name__r   Úadd_argument)ÚselfÚparserÚignoreÚtypesÚoptionÚoptsÚkwargsÚattrr	   r	   r
   Úadd_arguments"   s.    


ÿzCommand.add_argumentsc                    sj  | j  d¡ ddlm} |j}| d¡}d |d d… ¡}|d }d|d< ||d< |g}| d	¡d u r¼t|d
ƒr||j	|d	< n@t
jd }| d¡d }	tj|	 }
t
j t
j |
j¡¡}||d	< | d¡pÈg }z t|dd ƒ}|d u rìt|dg ƒ}d|v�rh|j�rh|j d¡�rh|j�rh|�s<| d|j d¡�p0d|jf¡ n,| dt|d ƒ|j d¡�p\d|jfƒ¡ W n t�y~   Y n0 ||d< tj d||¡}|d �r¦d S t
j |d d¡}| t|d ƒ¡}tj  ¡ �rV|d �sVd ‰ ‡ fdd„}t   t j!|¡ t   t j"|¡ t   t j#|¡ t   t j$|¡ t   t j%|¡ t&j'|ddgt
j(d�‰ ˆ  )¡  nt
 *||dd¡ d S )NzSuccessfully ran command.r   )ÚsettingsÚ.éÿÿÿÿÚmoduleZapplication_typeÚcallable_objectZworking_directoryÚBASE_DIRZDJANGO_SETTINGS_MODULEÚurl_aliasesZ
MIDDLEWAREZMIDDLEWARE_CLASSESz*whitenoise.middleware.WhiteNoiseMiddlewareú/zstart-serverZ
setup_onlyZserver_rootZ	apachectlZprocess_nameÚ
debug_modec                    s2   ˆ d u rt  d¡ n| tjfvr.t ˆ j| ¡ d S )Nr   )ÚsysÚexitÚsignalÚSIGWINCHÚosÚkillÚpid)ÚsignumÚframe©Úprocessr	   r
   Úhandler’   s    zCommand.handle.<locals>.handlerÚstartz-DFOREGROUND)Ú
preexec_fn)+ÚstdoutÚwriteZdjango.confr/   ZWSGI_APPLICATIONÚsplitÚjoinr#   r!   r4   r<   Úenvironr8   ÚmodulesÚpathÚdirnameÚ__file__Ú
setdefaultr"   Z
STATIC_URLÚ
startswithZSTATIC_ROOTÚinsertÚrstripr   ÚAttributeErrorr   r   Z_cmd_setup_serverÚljustÚlenÚisattyr:   ÚSIGINTÚSIGTERMÚSIGHUPÚSIGUSR1r;   Ú
subprocessÚPopenÚsetpgrpÚwaitÚexecl)r&   ÚargsÚoptionsr/   Zwsgi_applicationÚfieldsÚmodule_namer3   Zsettings_module_pathZroot_module_pathZroot_moduleÚparentr5   Z
middlewareÚ
executableÚnamerC   r	   rA   r
   ÚhandleA   sr    




þþÿ
ÿ
zCommand.handleN)r$   Ú
__module__Ú__qualname__r`   Úhelpr!   r   r   r   r   r.   rg   r	   r	   r	   r
   r      s   
r   )r<   r8   Úinspectr:   r[   Zdjango.core.management.baser   Zmod_wsgi.serverr   r   r   r	   r	   r	   r
   Ú<module>   s   