Ë
    Þ‘±jò"  ã                   ó  — U d dl Z e j                  j                  d«       e j                  j                  d«       d dlmZmZmZ d dlmZm	Z	m
Z
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 d d
lmZ d dlZd dlZd dlmZmZm Z!m"Z"m#Z#m$Z$m%Z% d dl&Z&d dlm'Z' d dl(m)Z* d dl+Z+d dl,Z,d dl-Z- G d„ dej\                  «      Z/ ee0«      Z1 ee1¬«       de1_2        de1_3        de1jh                  d<   de1jh                  d<   d„ Z5d„ Z6e6e1jZ                  _7         ejp                  dd¬«      Z9 e/dd¬«      Z:e9jw                  e:«        ejx                  d«      Z=e=j}                  ej~                  «       e=j�                  e9«       e1j‚                  j�                  e9«       eBeCeDf   ZEeeFd<   	  ee1dd¬ «      ZGe1j”                  d#„ «       ZJe1j–                  d$„ «       ZKdMd%ee   d&eDd'eLd(eeLeHz     d)eBeeDf   f
d*„ZM G d+„ d,«      ZNd-„ ZOd.ePfd/„ZQe1j¥                  d0«      d)eCfd1„«       ZSd)eBeLeLf   fd2„ZTe1j¥                  d3«      d%eLfd4„«       ZUe1j¥                  d5«      d6„ «       ZVe1j¥                  d7«      d8„ «       ZWe1j¥                  d9«      d:„ «       Z7e1j¥                  d;«      d<eLfd=„«       ZXe1j¥                  d>d?g¬@«      dA„ «       ZYe1j¥                  dBd?g¬@«      dC„ «       ZZe1j¥                  dDdEg¬@«      dF„ «       Z[e1j¹                  eH«      d)eEfdG„«       Z]e1j¹                  dH«      d)eEfdI„«       Z^e1j¹                  dJ«      d)eEfdK„«       Z_e1j¹                  e«      d)e
fdL„«       Z`y# eH$ rZI ejN                  d!eI¬"«       Y dZI[I�ŒÈdZI[Iww xY w)Né    Nz5/var/www/io_vulcan/venv/lib/python3.11/site-packages/z/var/www/io_vulcan/py/)ÚOptionalÚAnyÚ	TypeAlias)ÚFlaskÚjsonifyÚResponseÚsessionÚrequestÚmake_responseÚgÚsend_from_directory)ÚHTTPException)ÚDebuggedApplication)Údefault_handler)ÚCORS©Úwraps)ÚtoIntÚtoListÚtoStrÚfÚ	getUserIDÚgetIPÚgetUserName)ÚDebug)Ú_defaultc                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚRequestFormatterc                 ó    •— t         r+t         j                  |_        t         j                  |_        nd |_        d |_        t
        ‰| �  |«      S ©N)r
   Úbase_urlÚuriÚ	full_pathÚpathÚsuperÚformat)ÚselfÚrecordÚ	__class__s     €ú-/var/www/io.vulcan-creative.com/py/Service.pyr&   zRequestFormatter.format   s=   ø€ ÝÜ× Ñ €6„:Ü×"Ñ"€6…;à€6„:Ø€6„;Ü	‰‰˜Ó	Ðó    )Ú__name__Ú
__module__Ú__qualname__r&   Ú__classcell__)r)   s   @r*   r   r      s   ø„ ÷ ð  r+   r   )ÚappÚ31337TÚdebugÚPROPAGATE_EXCEPTIONSc                  ó*   — d } dt         j                  iS )NÚmethod)r
   r5   r   ÚjsonÚloadsÚbodyÚreadÚparamsÚdictÚ	ExceptionÚfilesÚgetÚfile)ÚqueryÚeÚdataÚup_files       r*   ÚgetQueryrD   *   s   € Ø	€Ø	”'—.‘.Ð!Ð!r+   c                 óø   — t        | «      xt        j                  k(  r t        | «      S xt        j                  k(  r | j                  «       S t        j                  k(  r| j                  «       S 	 t        | «      S r    )
ÚtypeÚtypesÚGeneratorTypeÚlistÚdatetimeÚ	isoformatÚUtilsÚIODateÚfullÚ_json_default)Úos    r*   Újson_defaultrQ   B   sV   € ÜˆAƒwð „u×ÕÜ
ˆq‹'€>Ø„x×ÕØ
�+‰+‹-ÐÜ‡|„|Ø
�&‰&‹(€?ØÜ
˜Ó
Ðr+   zapi.logÚutf8)ÚencodingÚ z%d/%m/%Y %I:%M:%S %p)ÚdatefmtÚwerkzeugÚio_responsez/console)Úpin_loggingÚconsole_pathzApp Trouble©rB   c                  ó>   — t        j                   «       t        _        y r    )Útimer   Ú
start_time© r+   r*   Úbefore_requestr_   q   s   € ä—	‘	“„…r+   c                 ó¤   — t        t        d«      r?t        j                  «       t        j                  z
  }t	        |«       || j
                  d<   | S )Nr]   zio-time)Úhasattrr   r\   r]   Úprint_requestÚheaders)ÚresponseÚets     r*   Úafter_requestrf   u   s?   € ô ŒAˆ|ÔÜ‡y�yƒ{”Q—\‘\Ñ!€"Ü�ÔØ "€(×Ñ�9ÑØ€r+   rB   ÚstatusÚmessageÚerrorÚreturnc                 ó6  — | rt        | t        «      ri } |rPt        j                  d|¬«       | r| |fS |dk7  rt        j                  |«      |fS t        j                  |«      dfS |dk(  r+t
        j                  j                  |› d|› d|› �«       d|fS | dfS )NÚError©ÚtitlerB   éÈ   éô  éýÿÿÿz - rT   )Ú
isinstanceÚboolrL   r   ÚerrorStrr0   Úloggerri   )rB   rg   rh   ri   Úcodes        r*   ÚOutputrw   …   sž   € Ù”
˜4¤Ô%Ø	€$Ù	Ü‡+�+�G Õ'Ù	Ø
ˆtˆÐà
ˆc‚kÜ�>‰>˜%Ó  Ð
&Ð&ä�>‰>˜%Ó  Ð
%Ð%à
ˆb‚LÜ‡*�*×Ñ�g�Y˜c & ¨¨T¨FÐ3Ô4Ø
ˆTˆÐà	ˆcˆ
Ðr+   c                   ó0   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zy
)Úbcolorsz[95mz[94mz[96mz[92mz[93mz[91mz[0mz[1mz[4mN)r,   r-   r.   ÚHEADERÚOKBLUEÚOKCYANÚOKGREENÚWARNINGÚFAILÚENDCÚBOLDÚ	UNDERLINEr^   r+   r*   ry   ry   ™   s/   „ Ø€FØ€FØ€FØ€GØ€GØ€DØ€DØ€DØ�Ir+   ry   c                 óH  — t        j                  «       }| dz  }t        j                  j	                  d|j                  «       › dt        j                  › d|› dt        j                  › dt        j                  › dt        j                  › dt        j                  › d�«       y )Niè  z[IO] z | ú zms z| z |)rL   rM   r0   ru   ÚwarningrN   ry   r{   r€   r}   r
   r$   )re   ÚdtÚmss      r*   rb   rb   ¤   s�   € Ü‡l�lƒn€Øˆ4�i€Ü‡�×Ñ�e˜BŸG™G›I˜; c¬'¯.©.Ð)9¸¸2¸$¸cÄ'Ç,Á,ÀÈrÔRY×RaÑRaÐQbÐbcÔdk×dpÑdpÐcqÐqrÔsz×sÑsð  sAð  ACð  Dõ  Er+   Úpermsc                 ó   ‡ — ˆ fd„}|S )Nc                 ó2   •‡ — t        ‰ «      ˆ ˆfd„«       }|S )Nc                  ó.  •— d}t        j                  «       }|j                  d«      r|j                  d«      r
t        «        t	        j                  di «      j                  d«      xs g }‰D ]  }||v sŒ ‰| i |¤Žc S  t        d dd|› d|› �d	¬
«      S )NrT   ÚuÚpÚUserÚGroupsrq   zNot authorized for r„   é‘  )rB   rg   rh   rv   )rL   Úparmsr>   Úloginr	   rw   )ÚargsÚkwargsÚcheckr‘   Úuser_groupsÚfuncrˆ   s        €€r*   Úwrapperz&auth.<locals>.do_auth.<locals>.wrapper«   s–   ø€ à	€5Ü�;‰;‹=€5Ø‡i�i�„n˜Ÿ™ 3œÜ	„GÜ—‘˜V BÓ'×+Ñ+¨HÓ5Ò;¸€;Øò !€uØ�ÒÙ�$Ð ˜Ñ Ò ð!ô �d "Ð/BÀ5À'ÈÈ5È'Ð-RÐX[Ô
\Ð\r+   r   )r—   r˜   rˆ   s   ` €r*   Údo_authzauth.<locals>.do_authª   s"   ù€ Üˆƒ;ô
]ó ð
]ð 
€.r+   r^   )rˆ   r™   s   ` r*   Úauthrš   ©   s   ø€ ôð 	€r+   z/jsonc                  ó2   — dddœdddœdddœgdd	d
dœgdœ} | S )NÚAgeÚage)rn   Úfieldz
First NameÚ
first_namez	Last NameÚ	last_nameé(   ÚBobÚJones)r�   rŸ   r    )ÚcolumnsÚrowsr^   rZ   s    r*   Ú	test_jsonr¦   È   s@   € ð ˜%Ñ Ø Ñ.Ø Ñ,ðð ˜e°'Ñ;ð
ñ		€ð 	€r+   c                 ó  — d}d}	 t        «       } t        t        | «      |«      |«      } t        ||«      |«      }t        |t        «      st        j                  |«      }||fS # t        $ r}t	        |«      }Y d }~||fS d }~ww xY w)NrT   )rD   ÚgetattrÚ
__import__rr   ÚstrrL   ÚtoJSONr<   )Úobjr5   r‘   ÚerrÚoutputrB   ÚmodelrA   s           r*   Úservicer°   Ö   s‹   € Ø	€Ø
€ðÜ	‹€$Ø
*Œ'”*˜S“/ 6Ó
*¨5Ó
1€%Ø!Œ7�5˜&Ó! $Ó'€&Ü	�Fœ3Ô	Ü�L‰L˜Ó €6ð 
�ˆÐøô 	ò ÜˆA‹„#Ø	�ˆÐûðús   †AA& Á&	BÁ/BÂBz/io/qr/<path:data>c                 ó„   — ddl m} t        j                  | «      } |«       j	                  |«      \  }}t        |d¬«      S )Nr   )Úqrzimage/svg+xml)Úmimetype)ÚQRr²   rL   Ú
url_decodeÚsvgr   )rB   r²   Údec_datar®   r­   s        r*   Úqrcoderr¸   ä   s6   € åÜ×Ñ˜TÓ"€Ù‹d�h‰h�xÓ �€ˆÜ� /Ô2Ð2r+   z/democ                  ó   — t        dd«      S )Nú	../staticz	demo.html©r   r^   r+   r*   Údemor¼   ó   s   € ä˜K¨Ó4Ð4r+   z/qrc                  ó   — t        dd«      S )Nrº   zqr.htmlr»   r^   r+   r*   r²   r²   ÷   s   € ä˜K¨	Ó2Ð2r+   ú/c                  ó   — t        dd«      S )Nrº   z
index.htmlr»   r^   r+   r*   ÚdefaultrÀ   ü   s   € ä˜K¨Ó5Ð5r+   z/<path:uri>r"   c                 ó   — t        d| «      S )Nrº   r»   )r"   s    r*   ÚiorÂ     s   € ä˜K¨Ó,Ð,r+   z/admin/loginÚPOST)Úmethodsc            
      ó  — ddl m}  t        j                  «       }d}	 t	        |j                  dd«      «      dkD  rt	        |j                  dd«      «      dkD  sJ d«       ‚ | «       j                  |j                  dd«      |j                  dd«      ¬«      }|sJ d«       ‚|t        d	<   t        i d
d¬«      S # t        $ rF}t        d|g¬«       i t        d	<   t        ddddt        j                  |«      › �¬«      cY d }~S d }~ww xY w)Nr   ©ÚUsersrT   rŒ   r�   zInvalid user/pass)ÚuserÚpasswordzNo userrŽ   é   úLogin Successful©rB   rg   rh   ú	Auth Failrm   úLogin Failedr�   úUser or Password is invalid ©rB   rg   rv   ri   )r0   rÇ   rL   r‘   Úlenr>   rš   r	   rw   r<   r   r«   )rÇ   r‘   rÈ   rA   s       r*   ÚadmloginrÒ     sô   € åÜ	�‰‹€Ø
€ð	qÜ	ˆU�Y‰Y�s˜2ÓÓ	 !Ò	#¬¨E¯I©I°c¸"Ó,=Ó(>¸qÒ(@ÐUÐBUÓUÐ	@Ù	‹�‰˜5Ÿ9™9 S¨Ó,°e·i±iÀÀBÓ6GˆÓ	H€$Ù	ÐˆyÓˆØ„'ˆ&�/Ü	�R˜qÐ);Ô	<Ð<øÜò qÜˆk ˜wÕ'Ø„'ˆ&�/Ü	�^¨1°#Ð>ZÔ[`×[gÑ[gÐhlÓ[mÐZnÐ<oÔ	pÕpûðqús   žBB9 Â9	DÃ;DÃ=DÄDz/loginc            	      ó:  — ddl m}  t        j                  «       } | «       j	                  |j                  dd«      ¬«      }|rdg|d<   |t        d<   t        i dd	¬
«      S t        d|g¬«       i t        d<   t        ddddt        j                  |«      › �¬«      S )Nr   rÆ   rš   rT   )Úuser_idrŽ   r�   rÊ   rË   rÌ   rÍ   rm   rÎ   r�   rÏ   rÐ   )
r0   rÇ   rL   r‘   Ú
get_useridr>   r	   rw   r   r«   )rÇ   r‘   rÈ   s      r*   r’   r’     s“   € åÜ	�‰‹€Ù‹×Ñ 5§9¡9¨V°BÓ#7ÐÓ8€áØ�8€$€x�.Ø„'ˆ&�/Ü	�R˜qÐ);Ô	<Ð<äˆk ˜wÕ'Ø„'ˆ&�/Ü	�^¨1°#Ð>ZÔ[`×[gÑ[gÐhlÓ[mÐZnÐ<oÔ	pÐpr+   z/logoutÚGETc                  óx   — di i} i t         d<   t        t        dt        j                  d«      idd¬«      «      }|S )NrŽ   rÊ   zLogout SuccessfulrÌ   )r	   r   rw   r>   )rB   Úresps     r*   ÚlogoutrÙ   %  s;   € à	�ˆ€Ø„ˆ�Ü”f 6¬'¯+©+°fÓ*=Ð">ÀaÐPcÔdÓe€Ø€r+   c                 ó¼   — t         j                  j                  | «       t        d«       t	        j
                  d| ¬«       t        dt        | «      idd| › �¬«      S )NzServer ErrorÚTroublerm   ri   r   z
exception rÌ   )r0   ru   Ú	exceptionÚprintrL   r   rw   rª   )r­   s    r*   Úserver_errorrÞ   ,  sI   € ä‡�×Ñ�cÔÜ€~ÔÜ‡��9 #Õ&Ü�WœS ›XÐ&¨a¸*ÀSÀEÐ8JÔKÐKr+   é”  c                 óF   — t        ddiddt        j                  › �d¬«      S )Nri   Ú404r   zThis page does not exist rß   ©rB   rg   ri   rv   )rw   r
   r$   ©ri   s    r*   Úpage_not_foundrä   3  s$   € ä�W˜U�O¨1Ð5NÌwÏ|É|ÈnÐ3]ÐcfÔgÐgr+   rp   c                 ód   — t        j                  d| ¬«       t        ddidt        | «      d¬«      S )NzServer Crashrm   ri   zServer Failr   ro   râ   )rL   r   rw   rª   rã   s    r*   Úserver_barfræ   7  s*   € ä‡��> uÕ-Ü�W˜]Ð+°1¼3¸u»:È3ÔOÐOr+   c                 óò   — dd l }| j                  «       } |j                  | j                  | j                  d| j
                  dœ«      |_        d|_        t        j                  d|j                  ¬«       |S )Nr   )rv   Únamerg   Údescriptionzapplication/jsonz
HTTP ERRORrm   )
r6   Úget_responseÚdumpsrv   rè   ré   rB   Úcontent_typerL   r   )rA   r6   rd   s      r*   Úhandle_exceptionrí   <  sa   € ãØ�N‰NÓ€Ø�—‘Ø
�&‰&Ø
�&‰&ØØ—‘ñ	ó €„ð ,€ÔÜ‡��< X§]¡]Õ3à€r+   )NrÊ   rT   Nro   )aÚsysr$   ÚappendÚtypingr   r   r   Úflaskr   r   r   r	   r
   r   r   r   Úwerkzeug.exceptionsr   Úwerkzeug.debugr   Úflask.loggingr   Ú
flask_corsr   Ú	functoolsr   ÚloggingrL   r   Úir   Úlr   Úsr   r   r   r   r\   r   Úflask.json.providerr   rO   rJ   rG   r6   Ú	Formatterr   r,   r0   Ú
secret_keyr2   ÚconfigrD   rQ   rÀ   ÚFileHandlerÚfile_logÚ	formatterÚsetFormatterÚ	getLoggerÚwlogÚsetLevelÚINFOÚ
addHandlerru   Útupler;   ÚintrW   Ú__annotations__Úapplicationr<   rA   r_   rf   rª   rw   ry   rb   rI   rš   Úrouter¦   r°   r¸   r¼   r²   rÂ   rÒ   r’   rÙ   ÚerrorhandlerrÞ   rä   ræ   rí   r^   r+   r*   ú<module>r     s  ðÜ 
Ø ‡�‡�ÐGÔ HØ ‡�‡�Ð(Ô )ß )Ñ )ß \× \Ó \Ý -Ý .Ý )Ý Ý Û Û ß Q× QÑ QÛ Ý Ý 9ã Û Û ô �w×(Ñ(ô  ñ ˆHƒo€Ù ˆ…Ø€„ð €„	Ø€‡
�
ˆ7Ñ Ø%)€‡
�
Ð!Ñ "òò0ð   €‡�Ô ð ˆ7×Ñ˜y°&Ô9€Ù˜RÐ)?Ô@€	Ø × Ñ �iÔ  Ø€w×Ñ˜Ó$€Ø ‡�ˆg�l‰lÔ à ‡��Ô à ‡
�
× Ñ �hÔ ð ˜T #˜X‘€ˆIÓ &ð#Ù" 3°DÀjÔQ€ð
 ×Ññó ðð ×Ññ	ó ð	ñ�˜‘ð ¨#ð ¸#ð ÈÐRUÐV_ÑR_ÑI`ð ÐsxÐy|ð  ~Að  zAñ  tBó ÷(	ñ 	òEð
ˆtó ð> ‡�ˆ7Óð�4ò ó ðð  s¨3 w¡ó ð ‡�ÐÓ ð3�ò 3ó !ð3ð ‡�ˆ7Óñ5ó ð5ð ‡�ˆ5Óñ3ó ð3ð ‡�ˆ3ƒñ6ó ð6ð ‡�ˆ=Óð-ˆ3ò -ó ð-ð ‡�ˆ> 6 (€Ó+ñqó ,ðqð ‡�ˆ8˜V˜H€Ó%ñqó &ðqð ‡�ˆ9˜e˜W€Ó%ñó &ðð ×Ñ�)ÓðL˜ò Ló ðLð ×Ñ�#Óðh˜[ò hó ðhð ×Ñ�#ÓðP˜+ò Pó ðPð ×Ñ�-Ó ð˜8ò ó !ñøð_ ò #Ø€‡�ˆ] ×"Ó"ûð#ús   Æ,M  Í NÍ%M?Í?N