Ë
    ”óyjg#  ã                   ój  — 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Zej                  j                  d d«       d dl
mZmZmZmZmZ d dl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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' d dl(m Z) d dl*m Z+ d dl,m Z- d dl.m Z/ d dl0m Z1 d dl2m Z3 d dl4m Z5 d dl6m Z7 d dl8m Z9 d dl:m Z; d dl<m Z= d dl>m Z? d dl@m ZA d dlBm ZC d dlDmEZE dZF ejŽ                  eFd¬«        eeF› d�dd¬«      ZHeHj“                  e j”                  «       eHj—                   e j˜                  d«      «        e jš                  «       j�                  eH«        e jž                   ePe ej¢                  j¥                  «       e j¦                  «      d¬«       dddœdddœdddœd d!dœd"d#dœd$d%dœd&d'dœd(d)dœd*d+dœd,d-dœd.d/dœd0d1dœd2d3dœd4d5dœgZT ed6d7d8dddeTd9d:id9d;i¬<«	      ZUeUj­                  eE«       eUj­                  ed=gdd=gd=g¬>«       eUj¯                  d? ed@¬A«      dB¬C«       eUj±                  e=«       eUj±                  e?«       eUj±                  eA«       eUj±                  eC«       eUj±                  e+«       eUj±                  e!«       eUj±                  e%«       eUj±                  e'«       eUj±                  e)«       eUj±                  e-«       eUj±                  e/«       eUj±                  e1«       eUj±                  e3«       eUj±                  e5«       eUj±                  e9«       eUj±                  e7«       eUj±                  e;«       eUj±                  e#«        e«       ZY eeY«      fdDefdE„ZZeUj·                  dFdG¬H«       eeZ«      fdDefdI„«       Z\eUj·                  dJdG¬H«       eeZ«      fdDefdK„«       Z]eUj·                  dLdG¬H«       eeZ«      fdDefdM„«       Z^eUj·                  dN«      dOefdP„«       Z_eUjÁ                  dQ«      dR„ «       ZaeUjÁ                  dS«      dT„ «       Zby)Ué    N)ÚRotatingFileHandler)ÚJSONResponsez/var/www/html/metafoliadorv2)ÚFastAPIÚRequestÚDependsÚHTTPExceptionÚstatus)ÚRedirectResponse)ÚCORSMiddleware)ÚStaticFiles)Úget_swagger_ui_htmlÚget_redoc_html)Úget_openapi)Ú	HTTPBasicÚHTTPBasicCredentials)Úsettings)Úrouter)ÚTenantMiddlewarez!/var/www/html/metafoliadorv2/logsT)Úexist_okz/api.logi    é   )ÚmaxBytesÚbackupCountz>[%(asctime)s] %(levelname)s: %(name)s:%(lineno)d - %(message)sz1%(asctime)s [%(levelname)s] %(name)s: %(message)s)ÚlevelÚformatÚauthu`   AutenticaciÃ³n y gestiÃ³n de sesiones JWT. Login, logout e informaciÃ³n del usuario autenticado.)ÚnameÚdescriptionÚviewsu\   Vistas HTML del panel administrativo. PÃ¡ginas renderizadas con Jinja2 para la interfaz web.Ústatsuz   EstadÃ­sticas del dashboard. Conteo de sitios, Series, Subseries y Expedientes, archivos, Ã­ndices y datos para grÃ¡ficos.Úconnectionsuj   CRUD de conexiones a instancias Alfresco. GestiÃ³n de URLs, credenciales, test y descubrimiento de sitios.ÚsitesuX   CRUD de sitios Alfresco. SincronizaciÃ³n, activaciÃ³n y gestiÃ³n de sitios documentales.Úfoldersuh   Cuadro de clasificaciÃ³n, sincronizaciÃ³n recursiva y generaciÃ³n de Ã­ndices electrÃ³nicos (index.xml).ÚjobsuO   Monitoreo y control de trabajos en cola Celery. CancelaciÃ³n y purga de tareas.ÚusersuY   CRUD de usuarios del sistema. CreaciÃ³n, ediciÃ³n, activaciÃ³n/desactivaciÃ³n de cuentas.zalfresco-listenerz{Webhook listener para recibir eventos de Alfresco (create/update/delete/move de archivos, Series, Subseries y Expedientes).ÚadminuA   AdministraciÃ³n RBAC. Roles y 32 permisos granulares del sistema.zlistener-logszRVisor de logs del webhook listener. Historial de peticiones recibidas de Alfresco.Úreportesu_   GestiÃ³n de reportes. Listado, activaciÃ³n/inactivaciÃ³n y generaciÃ³n de reportes disponibles.zreportes-genuR   GeneraciÃ³n de reportes Excel (TRD/TipologÃ­as) y PDF (GrÃ¡ficos por Dependencia).Ú
tipologiasu„   SincronizaciÃ³n y gestiÃ³n de modelos de datos personalizados de Alfresco. Filtrado de modelos del sistema y marcado de tipologÃ­as.zMetafoliador v2 APIu  API para gestiÃ³n de Ã­ndices electrÃ³nicos documentales con integraciÃ³n Alfresco ECM. Formato colombiano TipoDocumentoFoliado, sincronizaciÃ³n de Series, Subseries y Expedientes/archivos, cÃ¡lculo de hash SHA-256, conteo de pÃ¡ginas, webhook listener, panel RBAC y reportes.z2.0.0r   ÚMetaBibliotecaÚPropietario)	Útitler   ÚversionÚdocs_urlÚ	redoc_urlÚopenapi_urlÚopenapi_tagsÚcontactÚlicense_infoÚ*)Úallow_originsÚallow_credentialsÚallow_methodsÚallow_headersz/staticz#/var/www/html/metafoliadorv2/static)Ú	directoryÚstatic)r   Úcredentialsc                 ór  — t        j                  | j                  j                  «       t        j
                  j                  «       «      }t        j                  | j                  j                  «       t        j                  j                  «       «      }|r|st        t        j                  dddi¬«      ‚| S )Nu8   Credenciales invÃ¡lidas para la documentaciÃ³n de la APIzWWW-AuthenticateÚBasic)Ústatus_codeÚdetailÚheaders)ÚsecretsÚcompare_digestÚusernameÚencoder   Úswagger_usernameÚpasswordÚswagger_passwordr   r	   ÚHTTP_401_UNAUTHORIZED)r9   Úcorrect_usernameÚcorrect_passwords      ú(/var/www/html/metafoliadorv2/app/main.pyÚverify_swagger_credentialsrJ   z   s“   € Ü×-Ñ-¨k×.BÑ.B×.IÑ.IÓ.KÌX×MfÑMf×MmÑMmÓMoÓpÐÜ×-Ñ-¨k×.BÑ.B×.IÑ.IÓ.KÌX×MfÑMf×MmÑMmÓMoÓpÐÙÑ!1ÜÜ×4Ñ4ØMØ'¨Ð1ô
ð 	
ð
 Ðó    ú/docsF)Úinclude_in_schemac              ƒ   ó$   K  — t        dd¬«      S ­w)Nú/openapi.jsonz Metafoliador v2 API - Swagger UI©r.   r*   )r   ©r9   s    rI   Ú
swagger_uirR   †   s   è ø€ äØ#Ø0ôð ùó   ‚ú/redocc              ƒ   ó$   K  — t        dd¬«      S ­w)NrO   zMetafoliador v2 API - ReDocrP   )r   rQ   s    rI   Úredoc_uirV   Ž   s   è ø€ äØ#Ø+ôð ùrS   rO   c              ƒ   ó¶   K  — t        t        j                  t        j                  t        j                  t        j
                  t        j                  ¬«      S ­w)N)r*   r+   r   ÚtagsÚroutes)r   Úappr*   r+   r   r/   rY   rQ   s    rI   Úopenapi_schemar[   –   s8   è ø€ äÜ�i‰iÜ—‘Ü—O‘OÜ×ÑÜ�z‰zôð ùs   ‚AAú/Úrequestc              ƒ   óf   K  — | j                   j                  rt        d¬«      S t        d¬«      S ­w)Nz/main)Úurlú/login)ÚstateÚis_mainr
   )r]   s    rI   Úrootrc   ¡   s)   è ø€ à‡}�}×ÒÜ GÔ,Ð,Ü Ô)Ð)ùs   ‚/1é‘  c           	   ƒ   óð  K  — | j                   j                  dd«      }| j                  j                  }|j	                  d«      r.t        ddt        |j                  «      it        |di «      ¬«      S |dv r.t        ddt        |j                  «      it        |di «      ¬«      S d	|v r*t        | j                  d
d«      }|rdnd}t        |d¬«      S t        ddt        |j                  «      i¬«      S ­w)NÚacceptÚ ú/api/rd   r=   r>   ©r<   Úcontentr>   )rL   rT   rO   ú	text/htmlrb   Fú/main/loginr`   é.  ©r_   r<   ©r<   rj   ©r>   Úgetr_   ÚpathÚ
startswithr   Ústrr=   Úgetattrra   r
   ©r]   Úexcrf   rr   rb   Úredirect_urls         rI   Úauth_401_handlerry   ¨   sæ   è ø€ à�_‰_× Ñ  ¨2Ó.€FØ�;‰;×Ñ€DØ‡��wÔÜØØœs 3§:¡:›Ð/Ü˜C ¨BÓ/ô
ð 	
ð
 Ð3Ñ3ÜØØœs 3§:¡:›Ð/Ü˜C ¨BÓ/ô
ð 	
ð
 �fÑÜ˜'Ÿ-™-¨°EÓ:ˆÙ(/‘}°XˆÜ L¸cÔBÐBÜ C°(¼CÀÇ
Á
»OÐ1LÔMÐMùs   ‚C4C6é“  c           	   ƒ   óŒ  K  — | j                   j                  dd«      }| j                  j                  }|j	                  d«      r.t        ddt        |j                  «      it        |di «      ¬«      S d|v r*t        | j                  d	d
«      }|rdnd}t        |d¬«      S t        ddt        |j                  «      i¬«      S ­w)Nrf   rg   rh   rz   r=   r>   ri   rk   rb   Frl   r`   rm   rn   ro   rp   rv   s         rI   Úauth_403_handlerr|   ¿   s¯   è ø€ à�_‰_× Ñ  ¨2Ó.€FØ�;‰;×Ñ€DØ‡��wÔÜØØœs 3§:¡:›Ð/Ü˜C ¨BÓ/ô
ð 	
ð
 �fÑÜ˜'Ÿ-™-¨°EÓ:ˆÙ(/‘}°XˆÜ L¸cÔBÐBÜ C°(¼CÀÇ
Á
»OÐ1LÔMÐMùs   ‚CC)cÚloggingÚosr?   Úlogging.handlersr   Úfastapi.responsesr   Úsysrr   ÚinsertÚfastapir   r   r   r   r	   r
   Úfastapi.middleware.corsr   Úfastapi.staticfilesr   Úfastapi.openapi.docsr   r   Úfastapi.openapi.utilsr   Úfastapi.securityr   r   Ú
app.configr   Úapp.api.routes.authr   Úauth_routerÚapp.api.routes.viewsÚviews_routerÚapp.api.routes.statsÚstats_routerÚapp.api.routes.connectionsÚconnections_routerÚapp.api.routes.sitesÚsites_routerÚapp.api.routes.foldersÚfolders_routerÚapp.api.routes.jobsÚjobs_routerÚapp.api.routes.users_adminÚusers_admin_routerÚ app.api.routes.alfresco_listenerÚalfresco_listener_routerÚapp.api.routes.admin_rbacÚadmin_rbac_routerÚ!app.api.routes.listener_logs_viewÚlistener_logs_view_routerÚapp.api.routes.reportesÚreportes_routerÚapp.api.routes.reportes_genÚreportes_gen_routerÚapp.api.routes.tipologiasÚtipologias_routerÚapp.api.main.authÚmain_auth_routerÚapp.api.main.customersÚmain_customers_routerÚapp.api.main.usersÚmain_users_routerÚapp.api.main.viewsÚmain_views_routerÚapp.middlewarer   Úlog_dirÚmakedirsÚerror_handlerÚsetLevelÚERRORÚsetFormatterÚ	FormatterÚ	getLoggerÚ
addHandlerÚbasicConfigru   Ú	log_levelÚupperÚINFOÚtags_metadatarZ   Úadd_middlewareÚmountÚinclude_routerÚsecurityrJ   rq   rR   rV   r[   rc   Úexception_handlerry   r|   © rK   rI   ú<module>rÃ      s¢  ðÛ Û 	Û Ý 0Ý *Û 
Ø ‡�‡��Ð1Ô 2ç DÕ DÝ .Ý 2Ý +ß DÝ -ß <å Ý 5Ý 7Ý 7Ý CÝ 7Ý ;Ý 5Ý CÝ OÝ AÝ QÝ =Ý EÝ Aå 8Ý BÝ :Ý :å +à
-€Ø €‡�ˆG˜dÕ #Ù# w i¨xÐ$8À8ÐY[Ô\€Ø × Ñ �w—}‘}Ô %Ø × Ñ Ð,˜7×,Ñ,Ð-mÓnÔ oØ €× Ñ Ó × Ñ ˜}Ô -à €× Ñ Ù
�'˜8×-Ñ-×3Ñ3Ó5°w·|±|Ó
DØ>õð ð  %Gñ  HØð  &Dñ  EØð  &bñ  cØð  ,Xñ  YØÐ%ñ  AØð  (Rñ  SØÐ$uÑvØð  &Añ  BØ ð  2oñ  pØÐ%hÑiØð  .Bñ  CØð  )Jñ  KØð  -Añ  BØð  +qñ  rð€ñ" Ø
ðið ØØØØàÐ ðð 	�ðô€ð$ × Ñ Ð#Ô $à × Ñ ØØ�%ØØ�%Ø�%ð ô ð ‡	�	ˆ)‘[Ð+PÔQÐX`€	Ô aà × Ñ Ð#Ô $Ø × Ñ Ð(Ô )Ø × Ñ Ð$Ô %Ø × Ñ Ð$Ô %à × Ñ �>Ô "Ø × Ñ �;Ô Ø × Ñ �<Ô  Ø × Ñ Ð%Ô &Ø × Ñ �<Ô  Ø × Ñ �;Ô Ø × Ñ Ð%Ô &Ø × Ñ Ð+Ô ,Ø × Ñ Ð$Ô %Ø × Ñ Ð,Ô -Ø × Ñ Ð&Ô 'Ø × Ñ �?Ô #Ø × Ñ Ð$Ô %Ø × Ñ �<Ô  á‹;€ñ DKÈ8ÓCTñ 	Ð,@ó 	ð ‡�ˆ E€Ó*Ù9@ÐA[Ó9\ñ Ð"6ò ó +ðð ‡�ˆ U€Ó+Ù7>Ð?YÓ7Zñ Ð 4ò ó ,ðð ‡�ˆ¨E€Ó2Ù=DÐE_Ó=`ñ Ð&:ò ó 3ðð ‡�ˆƒð*˜ò *ó ð*ð ×Ñ�sÓñNó ðNð, ×Ñ�sÓñNó ñNrK   