
    g0                         d dl Z 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mZ d Zd Zd Zd	 Zd
 Zy)    N)logger)webauth)create_https_certificates)WebInterfaceBaseRedirectc                     t        j                  d       t        j                  t        j                  j
                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                   d} t#        |        y )Nz8Tautulli WebStart :: Initializing Tautulli web server...)	http_port	http_host	http_roothttp_environment
http_proxyenable_https
https_certhttps_cert_chain	https_keyhttps_min_tls_versionhttp_usernamehttp_passwordhttp_basic_auth)r   infoplexpy	HTTP_PORTCONFIG	HTTP_HOST	HTTP_ROOTHTTP_ENVIRONMENT
HTTP_PROXYENABLE_HTTPS
HTTPS_CERTHTTPS_CERT_CHAIN	HTTPS_KEYHTTPS_MIN_TLS_VERSIONHTTP_USERNAMEHTTP_PASSWORDHTTP_BASIC_AUTH
initialize)
web_configs     /opt/Tautulli/plexpy/webstart.pystartr)       s    
KKJK%%]],,]],,"MM::mm..22mm.."MM::]],,!'!D!D4444!==88J z    c                      t        j                  d       t        j                  j	                          d t        j
                  _        y )Nz4Tautulli WebStart :: Stopping Tautulli web server...)r   r   cherrypyengineexitserver
httpserver r*   r(   stopr2   4   s+    
KKFGOO!%HOOr*   c                  V    t        j                  d       t                t                y )Nz6Tautulli WebStart :: Restarting Tautulli web server...)r   r   r2   r)   r1   r*   r(   restartr4   :   s    
KKHIF	Gr*   c                    | d   }| d   }| d   }| d   }|rt         j                  j                  re|r@t        j                  j                  |      r!|rt        j                  j                  |      s#t        ||      st        j                  d       d}t        j                  j                  |      rt        j                  j                  |      st        j                  d       d}| d   | d	   | d
   t         j                  j                  dddddd	}t         j                  r
d|d<   d|d<   |rt        j                  t        j                  j                  |      }| d   j                  dd      }t!        t        j"                  |t        j"                  j$                        |_        t        j(                  d|j&                  j*                         |j-                  ||       ||d<   ||d<   ||d<   ||d<   d}nd}| d   r/t/        j0                  dt2        d !      t.        j4                  _        | d"   rd#| d$   z  g}	t         j                  j6                  r|	j9                  d%       t        j:                  d&d'j=                  |	             | d(   rdt         _        d}
nidt         _        d}
t/        j0                  dt@        jB                  d)!      t.        j4                  _"        n"t        j                  d*       dt         _        d}
| d+   jG                  d,      r2d,tI        | d+   jG                  d,            z   d,z   xt         _%        | d+<   nd,xt         _%        | d+<   t        j:                  d-t         j                  j                         t.        jL                  jO                  |       dt        j                  j=                  t         jP                  d.      tS        | d         dg d/t         j>                  |
d0t.        jT                  jV                  jY                  | d$   | d"   i      d1	d2did2did2did2didd3ddd4dd5ddd6	dd7d8d9iddd4dd5ddd:
dd;ddd4dd5ddd6	dd<ddd4dd5ddd6	dd=ddd4dd5ddd6	dt         j                  jZ                  ddd4dd5ddd6	ddd4dd5ddd>dt        j                  j]                  t        j                  j=                  t         jP                  d?            ddd4dd5ddd@	dA}	 t^        j`                  xjb                  td        fz  c_1        t.        jh                  jk                  tm               | d+   |B       t         jJ                  d,k7  r(t.        jh                  jk                  to               d,       	 t        j:                  dC|| d	   | d   | d+          t         j                  st.        jp                  js                          ndt.        jt                  jv                  jy                          t.        jt                  js                          t.        jt                  j{                          t.        jp                  j                          y # tf        $ r Y Iw xY w# t|        $ rM}t        j~                  dD|       t        j                  dE|z         t        j                  d        Y d }~d }~ww xY w)FNr   r   r   r   zJTautulli WebStart :: Unable to create certificate and key. Disabling HTTPSFzKTautulli WebStart :: Disabled HTTPS because of missing certificate and key.r	   r
   r   i   @<   Tzutf-8)	zserver.socket_portzserver.socket_hostenvironmentzserver.thread_poolzserver.max_request_body_sizezserver.socket_timeoutztools.encode.onztools.encode.encodingztools.decode.on
test_suiter7   zengine.autoreload.on)purposecafiler   ._z3Tautulli WebStart :: Minimum TLS version set to %s.zserver.ssl_contextzserver.ssl_certificatezserver.ssl_certificate_chainzserver.ssl_private_keyhttpshttpr   before_handler   )priorityr   z!Tautulli admin (username is '%s')r   z
Plex adminz>Tautulli WebStart :: Web server authentication is enabled: %s.z and r      z;Tautulli WebStart :: Web server authentication is disabled!r   /z*Tautulli WebStart :: Thread Pool Size: %d.data)z	text/htmlz
text/plainztext/cssztext/javascriptzapplication/jsonzapplication/javascriptzTautulli web server)	zengine.timeout_monitor.onztools.staticdir.rootztools.proxy.onztools.gzip.onztools.gzip.mime_typestools.auth.ontools.auth_basic.onztools.auth_basic.realmztools.auth_basic.checkpasswordrF   
interfacesr   i ' )	tools.staticdir.ontools.staticdir.dirtools.caching.ontools.caching.forcetools.caching.delaytools.expires.ontools.expires.secstools.sessions.onrE   zinterfaces/default/imagessvgzimage/svg+xml)
rH   rI   ztools.staticdir.content_typesrJ   rK   rL   rM   rN   rO   rE   zinterfaces/default/csszinterfaces/default/fontszinterfaces/default/js)rJ   rK   rL   rM   rN   rE   rO   z2data/interfaces/default/images/favicon/favicon.ico)	ztools.staticfile.onztools.staticfile.filenamerJ   rK   rL   rM   rN   rO   rE   )rC   z/apiz/statusz/newsletterz/imagez/interfacesz/imagesz/cssz/fontsz/jsz/cachez/pms_image_proxyz/favicon.ico)configzATautulli WebStart :: Starting Tautulli web server on %s://%s:%d%sz1Tautulli WebStart :: Failed to start Tautulli: %szFailed to start Tautulli: %s)Dr   r   HTTPS_CREATE_CERTospathexistsr   r   warnHTTP_THREAD_POOLDEVsslcreate_default_contextPurposeCLIENT_AUTHreplacegetattr
TLSVersionTLSv1_2minimum_versiondebugnameload_cert_chainr,   ToolproxytoolsHTTP_PLEX_ADMINappendr   joinAUTH_ENABLEDr   
check_authauthstripstrr   rQ   updatePROG_DIRboollib
auth_basiccheckpassword_dict	CACHE_DIRabspathcherooterrors#acceptable_sock_shutdown_exceptionsOSErrorAttributeErrortreemountr   r   r/   r)   r-   signals	subscribeblockIOErrorerroralert_messagesysr.   wait)optionsr   r   r   r   options_dictcontextmin_tls_versionprotocollogin_allowedbasic_auth_enabledconfes                r(   r&   r&   @   sY    >*L&J12$I==** RWW^^J%?BGGNN9$=,ZChi$z*rww~~i/HKKef L &k2%k212$mm<<(2!#!(
L zz&2]#/3+,,,KK++#

 ""9:BB3L")#../3>>KaKa"bJGLcLcLhLhi
I6-4)*1;-.7G341:-.|'}}-=uqQ<w?WWX==((  .TV]VbVbcpVqr$%"'F!%"&F!&"*--0@'BTBT_`"aHNNQR#"{!!#&25GK<P<V<VWZ<[8\2\_b2bb7;/2557;/
KK<fmm>\>\]OO<( */$&GGLL&$I"7<#89!&@ $00#5&;.6ll.E.E.X.X('/*BZD /E
 "5
 "5
 "5
 "5
 #'#/ $#'#$ $"3!&"

 #'#>.3_-E $#'#$ $"3!&"
 #'#; $#'#$ $"3!&"

 #'#= $#'#$ $"3!&"

 #'#: $#'#$ $"3!&"

 #'#)==#:#: $#'#$ $"3!&"

  $"&"##!2! %
 $()+!U:W *X $#'#$ $"3!&"
OsDn::wjH: MM(<TJ3LNC0WYaK('+*>@T	V zzOO!!#OO##--/OO!!#OO!!# OO-  "  H!L;a?@s,   (Y' B5Y7 '	Y43Y47	[ A[[c                     d} t         j                  j                  j                  d      st         j                  j                  j                  d      rd} nWt         j                  j                  j                  d      rd} n+t         j                  j                  j                  d      rd} t         j                  j
                  j                  |        y )NzX-Forwarded-HostzX-HostOriginHostlocal)r,   requestheadersgetrs   cptoolsrf   r   s    r(   rf   rf   +  s     E##''(:;##''1E%%))(3E%%))&1E LLU+r*   )rS   rY   r   cheroot.errorsrx   r,   r   r   r   plexpy.helpersr   plexpy.webserver   r   r)   r2   r4   r&   rf   r1   r*   r(   <module>r      s@   $ 
 
 
      4 6(&hV,r*   