
    R1g                        d dl Z d dlZd dlZd dlZd dlmZmZ d dlZd dl	m
Z
mZmZ ddlmZ ddlmZ ddlmZmZ ddlmZ d d	lmZ dOd
ZdPdZ ej4                          ej6                  dddd       ej6                  ddded       ej6                  ddd       ej6                  ddd       ej6                  ddd       ej6                  dddd        ej6                  d!d"ddd#$       ej6                  d%d&dedd'(       ej6                  d)ddd*$       ej6                  d+d,dedd-(       ej6                  d.d/g dd01       ej6                  d2ddd3$       ej6                  d4ddd5$       ej6                  d6d7d8ded9       ej6                  d:d;gdd<1       ej6                  d=ddd>$       ej6                  d?ddd@$       ej6                  dAddBdCD       ej6                  dEdBdF       ej6                  dGdHddBdID       ej6                  dJdKddBdLD      dM                                                                                                                                                           ZdN Zy)Q    N)quote
urlunparse)FlaskResponserequest   )default_settings)VERSION)	blueprintsetup_rq_connection)config)JSONSerializerc                 6    | j                   fd       }y)zPAdd HTTP Basic Auth to a blueprint.

    Note this is only for casual use!

    c                      t         j                  }||j                  k7  s|j                  k7  rt	        ddddj                        i      S y )NzPlease logini  zWWW-AuthenticatezBasic realm="{}")r   authorizationpasswordusernamer   format)argskwargsauthr   realmr   s      j/var/www/trellinator.diamondhoofcare.com/public_html/venv/lib/python3.12/site-packages/rq_dashboard/cli.pybasic_http_authz'add_basic_auth.<locals>.basic_http_auth   sV    $$<4==H48Q#%7%>%>u%EF  9R    N)before_request)r   r   r   r   r   s    ``` r   add_basic_authr      s      r   Tc                 p   t        t              }|j                  j                  t               | r.|j                  j                  t        j                  |              dt        j                  v r|j                  j                  d       |rt        t        ||       |j                  t        |       |S )zEReturn Flask app with default configuration and registered blueprint.RQ_DASHBOARD_SETTINGS)
url_prefix)r   __name__r   from_objectr	   	importlibimport_moduleosenvironfrom_envvarr   r   register_blueprint)r   r   r   r    compatibility_modeapps         r   make_flask_appr+   #   s    
/C JJ+, 

y66v>? "**,

67 y(H59<Jr   z-bz--bindz0.0.0.0z+IP or hostname on which to bind HTTP server)defaulthelpz-pz--porti#  z!Port on which to bind HTTP server)r,   typer-   z--url-prefix z.URL prefix e.g. for use behind a reverse proxyz
--usernamez.HTTP Basic Auth username (not used if not set)z
--passwordzHTTP Basic Auth passwordz-cz--configz1Configuration file (Python module on search path)z-H--redis-hostzL[DEPRECATED] IP address or hostname of Redis server. Use --redis-url instead)r,   hiddenr-   z-P--redis-portz:[DEPRECATED] Port of Redis server. Use --redis-url instead)r,   r.   r1   r-   --redis-passwordz?[DEPRECATED] Password for Redis server. Use --redis-url insteadz-D--redis-databasez>[DEPRECATED] Database of Redis server, Use --redis-url insteadz-uz--redis-urlzKRedis URL. Can be specified multiple times. Default: redis://127.0.0.1:6379)r,   multipler-   --redis-sentinelsz=[DEPRECATED] List of redis sentinels. Use --redis-url instead--redis-master-namez\[DEPRECATED] Name of redis master. Only needed when using sentinels. Use --redis-url insteadz--poll-intervalz
--intervalpoll_intervalzRefresh interval in msz--extra-path.z(Append specified directories to sys.path--web-backgroundz,[DEPRECATED] Background of the web interface--delete-jobsz*[DEPRECATED] Delete jobs instead of cancelz--disable-deleteFz(Disable delete jobs, clean up registries)is_flagr,   r-   z--debug/--normalzEnter DEBUG modez-vz	--verbosezEnable verbose loggingz-jz--jsonzEnable JSONSerializerc                     |r"t         xj                  t        |      z  c_        t        j                  dj                  t                     t        ||||      }g |j                  d<   |j                  j                  d      !|
r|
|j                  d<   nd|j                  d<   |r|j                  d   j                  d       |r|j                  d   j                  d       |r|j                  d   j                  d       |	r|j                  d   j                  d	       |r|j                  d   j                  d
       |r|j                  d   j                  d       |r|j                  d   j                  d       ||j                  d   j                  d       |r||j                  d<   t        j                  d      }|r |j                  t        j                         n@|j                  t        j                         |j!                  dj                  | |             |j                  d   r|
s|rdnd}|r|}n|xs d}|r|d|}|rdt#        |      z   dz   |z   }d}|r|dt#        |      z  z  }|	r|d|	z  z  }t%        |||dddf      }|j!                  d|       ||j                  d<   ||j                  d<   |rt&        t(        _        t-        |       |j/                  | ||       y)a  Run the RQ Dashboard Flask server.

    All configuration can be set on the command line or through environment
    variables of the form RQ_DASHBOARD_*. For example RQ_DASHBOARD_USERNAME.

    A subset of the configuration (the configuration parameters used by the
    underlying flask blueprint) can also be provided in a Python module
    referenced using --config, or with a .cfg file referenced by the
    RQ_DASHBOARD_SETTINGS environment variable.

    zRQ Dashboard version {}DEPRECATED_OPTIONSRQ_DASHBOARD_REDIS_URLNzredis://127.0.0.1:6379r0   r2   r3   r4   r6   r7   r:   r;   RQ_DASHBOARD_POLL_INTERVALwerkzeugz * Running on {}:{}zredis+sentinelredis	localhost:@r/   z/%szhUse --redis-url=%s configuration option instead of specifying host, port and other parameters separatelyRQ_DASHBOARD_DISABLE_DELETE)hostportdebug)syspathlistclickechor   r
   r+   r   getappendlogging	getLoggersetLevelDEBUGERRORerrorurlquoter   r   service_config
serializerr   run)bindrH   r    r   r   r   
redis_host
redis_portredis_passwordredis_database	redis_urlredis_sentinelsredis_master_namer8   
extra_pathweb_backgroundrI   delete_jobsdisable_deleteverbosejsonr*   logschemenetlocrK   urls                              r   rZ   rZ   :   s   Z D$$	JJ(//89
8Z
@C')CJJ#$
zz~~./73<CJJ/03KCJJ/0

'(//?

'(//?

'(//0BC

'(//0BC

'(//0CD

'(//0EF

'(//0BC

'(//@3@

/0 

J
'CW]]#W]]#		'..tT:;
zz&'	%4!'$F.;F$*J78N33c9FBFEH%6777DEN**D&&$B;<		O	

 03

+,0>CJJ,-$2!GGDG.r   c                      t        d       y )NRQ_DASHBOARD)auto_envvar_prefix)rZ    r   r   mainrq     s
    >*r   )zRQ Dashboard)T)r#   rQ   r%   rJ   urllib.parser   rW   r   rM   flaskr   r   r   r/   r	   versionr
   webr   r   r   rX   rq.serializersr   r   r+   commandoptionintrZ   rq   rp   r   r   <module>rz      s     	 
 6  * *   / ) )$. 	6	 (Ds1T B%U $%U lD/IJ	<	 	W 		E 	J	 		I 	V 	H	 	g	 		! E	3	 	7	 	5	 e:d  %6HI+tU9Q (D%6Mf/ J K Vf/R+r   