+
    |w¼j—  ã                   ó†  € ^ RI HtHtHtHtHt ^ RIHtHtH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHt ^ R	IHtHtHt ^ R
IHt ]! RR7      t]! ]! ]! R4      4      .R7      tR R ltR R lt]PA                  R]R7      ]! ]4      3R R ll4       t!]PE                  R4      ]! R4      ]! R4      ]! R4      ]! R4      ]! ]4      3R R ll4       t#]PE                  R4      ]! R4      ]! R4      ]! R4      ]! R4      ]! R4      ]! R4      ]! R 4      ]! R4      ]! ]4      3	R! R" ll4       t$]PE                  R#4      ]! R4      ]! R4      ]! ]4      3R$ R% ll4       t%]PE                  R&4      ]! R4      ]! ]4      3R' R( ll4       t&]PE                  R)4      ]! R4      ]! R4      ]! R4      ]! R4      ]! ]4      3R* R+ ll4       t']PE                  R,4      ]! ]4      3R- R. ll4       t(]PA                  R/]	R7      ]! ]4      3R0 R1 ll4       t)]PA                  R2]R7      R3]! ]4      3R4 R5 ll4       t*R# )6é    )Ú	APIRouterÚDependsÚHTTPExceptionÚRequestÚForm)ÚHTMLResponseÚRedirectResponseÚJSONResponse)ÚJinja2Templates)Úselect©ÚAsyncSessionN)Úget_db)Úrequire_roles)Ú	OLTDeviceÚMikrotikDeviceÚDeviceCredential©Útest_pinned_ssh_identityzapp/templates)Ú	directoryÚadmin)Údependenciesc                ó0   € V ^8„  d   QhR\         R\        /# )é   ÚhostÚport)ÚstrÚint)Úformats   "Ú+/var/www/html/bestweb/app/routes/devices.pyÚ__annotate__r!      s   € ÷ 
'ñ 
'œ3ð 
'¤cñ 
'ó    c              ƒ   óÂ  "  € R p \         P                  ! W4      G R j  x€L
 w  r2RVe*   VP                  4        VP                  4       G R j  x€L
  # #  L5 L  \         dF   pR\        T4      3u R p?Te+   TP                  4        TP                  4       G R j  x€L 
  # # R p?ii ; i  Te+   TP                  4        TP                  4       G R j  x€L 
  i i ; i5i)NF)TN)ÚasyncioÚopen_connectionÚcloseÚwait_closedÚOSErrorr   )r   r   ÚwriterÚ_Úexcs   &&   r    Ú
_probe_tcpr,      sÇ   é € Ø€Fð'Ü!×1Ò1°$Ó=×=‰	ˆØð ÒØ�L‰LŒNØ×$Ñ$Ó&×&Ñ&ð ñ >ñ 'øô ô Ø”c˜#“hˆÔàÒØ�L‰LŒNØ×$Ñ$Ó&×&Ò&ð ûðûð ÒØ�L‰LŒNØ×$Ñ$Ó&×&Ò&ð üs   ‚C†A ŸA A §'CÁAÁCÁA ÁCÁB)Á$B$Á0B)Á1B, Á5'CÂBÂCÂ$B)Â)B, Â,(CÃCÃCÃCc                ó0   € V ^8„  d   QhR\         R\        /# )r   ÚokÚmessage)Úboolr   )r   s   "r    r!   r!       s   € ÷ 8ñ 8”Dð 8¤3ñ 8r"   c                 ó    € \        R V RV/4      # ©r.   r/   )r
   r2   s   &&r    Ú_json_prober3       s   € Ü˜˜r 9¨gÐ6Ó7Ð7r"   ú/devices)Úresponse_classc                ó0   € V ^8„  d   QhR\         R\        /# )r   ÚrequestÚdb)r   r   )r   s   "r    r!   r!   &   s   € ÷ ñ ¤ð ¬\ñ r"   c              ƒ   ó2  "  € VP                  \        \        4      P                  \        P                  4      4      G R j  x€L
 P                  4       P                  4       pVP                  \        \        4      P                  \        P                  4      4      G R j  x€L
 P                  4       P                  4       pVP                  \        \        4      P                  \        P                  4      4      G R j  x€L
 P                  4       P                  4       p\        P                  T RRTRTRV Uu. uF  qUP                  R8X  g   K  VNK  	  upRV Uu. uF  qUP                  R8X  g   K  VNK  	  upRR	/R
7      #  ELE Lè L‹u upi u upi 5i)Nzdevices.htmlÚ	mikrotiksÚoltsÚmikrotik_credentialszmikrotik-apiÚolt_credentialsÚsshÚvault_errorF©r7   ÚnameÚcontext)Úexecuter   r   Úorder_byrA   ÚscalarsÚallr   r   Ú	templatesÚTemplateResponseÚprotocol)r7   r8   r:   r;   ÚcredentialsÚcs   &&    r    Údevices_pagerL   %   s5  é € à—z‘z¤&¬Ó"8×"AÑ"AÄ.×BUÑBUÓ"VÓW×W×`Ñ`Ób×fÑfÓh€IØ—*‘*œV¤IÓ.×7Ñ7¼	¿¹ÓGÓH×H×QÑQÓS×WÑWÓY€DØŸ™¤FÔ+;Ó$<×$EÑ$EÔFV×F[ÑF[Ó$\Ó]×]×fÑfÓh×lÑlÓn€KÜ×%Ñ%ØØà˜Ø�DØ"±Ó$\±¨1¿z¹zÈ^Ñ?[§Q Q±Ñ$\Ø©;ÓN©; a¿*¹*ÈÑ:M§ ©;ÑNØ˜5ð
ð &ó 
ð 
ò XÙHÙ]ùò %]ùÚNùsa   ‚?FÁFÁAFÂ F	Â!AFÃ?FÄ :FÄ:FÅFÅFÅFÅ5FÅ;FÆ	FÆFÆ
Fz/devices/mikrotik.é"  Ú c          
      óT   € V ^8„  d   QhR\         R\         R\        R\         R\        /# )r   rA   r   Úapi_portÚarear8   ©r   r   r   )r   s   "r    r!   r!   8   s4   € ÷ 9ñ 9Ü
ð9Ü!$ð9Ü<?ð9ä
ð9ä*ñ9r"   c           	   ƒ   óæ   "  € VP                  \        V P                  4       VP                  4       W#P                  4       R 7      4       VP                  4       G Rj  x€L
  \	        RRR7      #  L5i))rA   r   rP   rQ   Nr4   é/  ©Ústatus_code)Úaddr   ÚstripÚcommitr	   )rA   r   rP   rQ   r8   s   &&&&&r    Úadd_mikrotikrZ   7   sR   é € ð
 ‡F�FŒ>˜tŸz™z›|°$·*±*³,È×XbÑXbÓXdÔeÔfØ
�)‰)‹+×ÐÜ˜J°CÔ8Ð8ñ ùs   ‚AA1ÁA/ÁA1z/devices/oltzC-DATAz
FD1601S-B1r>   c                ó’   € V ^8„  d   QhR\         R\         R\         R\         R\         R\         R\         R\        R	,          R
\        /	# )r   rA   r   ÚvendorÚmodelÚlocationÚpop_nameÚmanagement_protocolrP   Nr8   rR   )r   s   "r    r!   r!   B   s^   € ÷ 
9ñ 
9Ü
ð
9Ü!$ð
9Ü:=ð
9äð
9ä/2ð
9äILð
9ô ð
9ô 7:¸Dµjð
9ô 	ñ	
9r"   c	              ƒ   ót  "  € TP                  \        V P                  4       VP                  4       VP                  4       VP                  4       VP                  4       VP                  4       VP                  4       T;'       g    ^R7      4       VP                  4       G Rj  x€L
  \	        RRR7      #  L5i)é   )rA   r   r\   r]   r^   r_   r`   rP   Nr4   rT   rU   )rW   r   rX   rY   r	   )	rA   r   r\   r]   r^   r_   r`   rP   r8   s	   &&&&&&&&&r    Úadd_oltrc   A   s‹   é € ð ‡F�FŒ9˜$Ÿ*™*›,¨T¯Z©Z«\À&Ç,Á,Ã.ÐX]×XcÑXcÓXeØ&Ÿn™nÓ.¸¿¹Ó9IØ)<×)BÑ)BÓ)DÈxÏ~È~Ð[]ô_ô `ð �)‰)‹+×ÐÜ˜J°CÔ8Ð8ñ ùs   ‚B"B8Â$B6Â%B8z/devices/olt/{device_id}/updatec                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r   Ú	device_idr\   r]   r8   )r   r   r   )r   s   "r    r!   r!   P   s)   € ÷ 9ñ 9¤ð 9¬Sð 9ÄSð 9ÔZfñ 9r"   c              ƒ   ó  "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RR4      hVP                  4       VP                  4       uVn        Vn        VP                  4       G R j  x€L
  \        RRR7      #  Lh L5i)Né”  úOLT tidak ditemukanr4   rT   rU   )Úgetr   r   rX   r\   r]   rY   r	   )re   r\   r]   r8   Údevices   &&&& r    Ú
update_oltrk   O   sk   é € à—6‘6œ) YÓ/×/€FßÜ˜CÐ!6Ó7Ð7Ø"(§,¡,£.°%·+±+³-Ð€F„M�6”<Ø
�)‰)‹+×ÐÜ˜J°CÔ8Ð8ñ 0ñ ùs'   ‚B	œB�B	©A
B	Á3BÁ4B	ÂB	z-/devices/{device_kind}/{device_id}/credentialc                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r   Údevice_kindre   Úcredential_idr8   rR   )r   s   "r    r!   r!   Z   s)   € ÷ 
9ñ 
9¬ð 
9¼ð 
9ÌSð 
9Ôbnñ 
9r"   c              ƒ   ó€  "  € V R 8X  d   \         MV R8X  d   \        MRpVf   \        RR4      hVP                  WA4      G Rj  x€L
 pVP                  \        V4      G Rj  x€L
 pV'       d	   V'       g   \        RR4      hVP
                  Vn        VP                  4       G Rj  x€L
  \        RRR	7      #  Lt LX L5i)
ÚoltÚmikrotikNé�  úJenis perangkat tidak validrg   z)Perangkat atau credential tidak ditemukanr4   rT   rU   )	r   r   r   ri   r   Úidrn   rY   r	   )rm   re   rn   r8   r]   rj   Ú
credentials   &&&&   r    Úassign_credentialrv   Y   sž   é € à$¨Ô-�IÀ[ÐT^ÔE^µ>Ðdh€EØ‚}Ü˜CÐ!>Ó?Ð?Ø—6‘6˜%Ó+×+€FØ—v‘vÔ.°Ó>×>€JßŸÜ˜CÐ!LÓMÐMØ%Ÿ=™=€FÔØ
�)‰)‹+×ÐÜ˜J°CÔ8Ð8ñ ,Ù>ñ ùsB   ‚AB>ÁB8ÁB>Á!B:Á"B>Á.B>Á60B>Â&B<Â'B>Â:B>Â<B>z/devices/credentialsc          
      óT   € V ^8„  d   QhR\         R\         R\         R\         R\        /# )r   rA   rI   ÚusernameÚsecretr8   )r   r   )r   s   "r    r!   r!   h   s4   € ÷ 9ñ 9Ü
ð9Ü%(ð9Ü@Cð9äð9ä!-ñ9r"   c           
   ƒ   ó   "  € ^ RI Hp VP                  \        V P	                  4       VP	                  4       VP	                  4       V! V4      R7      4       VP                  4       G Rj  x€L
  \        RRR7      #  L5i)r   )Úencrypt_secret)rA   rI   rx   Úencrypted_secretNr4   rT   rU   )Úapp.core.device_credentialsr{   rW   r   rX   rY   r	   )rA   rI   rx   ry   r8   r{   s   &&&&& r    Úcreate_credentialr~   g   sf   é € õ
 ;Ø‡F�FÔ §¡£¸¿¹Ó8HÐS[×SaÑSaÓScÙ-;¸FÓ-CôEô Fà
�)‰)‹+×ÐÜ˜J°CÔ8Ð8ñ ùs   ‚A(A>Á*A<Á+A>z2/devices/{device_kind}/{device_id}/test-connectionc                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   rm   re   r8   rR   )r   s   "r    r!   r!   t   s&   € ÷ vñ v¤sð v´sð vÄñ vr"   c           
   ƒ   óú  "  € V R 8X  d   \         MV R8X  d   \        MRpVf   \        RR4      hVP                  W14      G Rj  x€L
 pV'       g   \        RR4      hVP                  ;'       g    V R 8X  d   ^MRp\        VP                  V4      G Rj  x€L
 w  rgV'       d*   \        RVP                   R	VP                   R
V R24      # \        RVP                   R	VP                   R
V RV 24      #  L³ Ld5i)rp   rq   Nrr   rs   rg   zPerangkat tidak ditemukanrM   Tz: port management Ú:zJ dapat dijangkau pada level TCP. Protokol dan login perangkat belum diuji.Fz tidak dapat dijangkau: )	r   r   r   ri   rP   r,   r   r3   rA   )rm   re   r8   r]   rj   r   r.   Údetails   &&&     r    Útest_connectionrƒ   s   sø   é € à$¨Ô-�IÀ[ÐT^ÔE^µ>Ðdh€EØ‚}Ü˜CÐ!>Ó?Ð?Ø—6‘6˜%Ó+×+€FßÜ˜CÐ!<Ó=Ð=Ø�?‰?×DÐD [°EÔ%9™r¸t€DÜ! &§+¡+¨tÓ4×4�J€Bß	Ü˜4 F§K¡K =Ð0BÀ6Ç;Á;À-ÈqÐQUÐPVð  Wað  "bó  cð  	cÜ�u §¡ Ð-?ÀÇÁ¸}ÈAÈdÈVÐSkÐlrÐksÐtÓuÐuñ ,ñ 5ùs1   ‚AC;ÁC7ÁC;ÁC;Á/%C;ÂC9ÂA#C;Ã9C;z/devices/olt/identityc                ó$   € V ^8„  d   QhR\         /# )r   r8   r   )r   s   "r    r!   r!   „   s   € ÷ 	pñ 	p¬|ñ 	pr"   c              ƒ   óÞ  "  € V P                  \        \        4      P                  \        P                  R 8H  4      P                  \        P                  4      4      G Rj  x€L
 P                  4       P                  4       pV'       d   VP                  '       g   \        RR4      # V P                  \        VP                  4      G Rj  x€L
 p\        P                  ! RVP                   R24      p^ RIHp T! VP"                  VP$                  ;'       g    ^VP&                  VP(                  VR7      p\+        RVP,                  R	VP.                  R
VP0                  /4      #  EL LŸ5i)TNFz-OLT aktif atau credential SSH belum tersedia.ÚOLT_Ú_SSH_HOST_KEY_SHA256r   )r   r   rx   r|   Úexpected_host_key_fingerprintr.   r/   Úfingerprint)rC   r   r   ÚwhereÚ	is_activerD   rt   rE   Úfirstrn   r3   ri   r   ÚosÚgetenvÚapp.core.ssh_identityr   r   rP   rx   r|   r
   r.   r/   Úserver_fingerprint)r8   rp   ru   Úexpectedr   Úresults   &     r    Ú test_assigned_cdata_ssh_identityr“   ƒ   s  é € à—‘œF¤9Ó-×3Ñ3´I×4GÑ4GÈ4Ñ4OÓP×YÑYÔZc×ZfÑZfÓgÓh×h×
qÑ
qÓ
s×
yÑ
yÓ
{€Cß�c×'×'Ð'Ü˜5Ð"QÓRÐRØ—v‘vÔ.°×0AÑ0AÓB×B€JÜ�yŠy˜4 §¡˜xÐ';Ð<Ó=€HÝ>Ù%¨3¯8©8¸#¿,¹,×:LÐ:LÈ"ÐWa×WjÑWjØ#×4Ñ4ÐT\ô^€Fä˜˜vŸy™y¨)°V·^±^À]ÐTZ×TmÑTmÐnÓoÐoò iñ Cùs8   ‚AE-Á!E(Á"'E-Â
E-Â/E-ÃE+ÃAE-ÄAE-Å+E-z/devices/olt/{olt_id}/ontsz0/0/1c                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r   Úolt_idr7   Úpon_portr8   )r   r   r   r   )r   s   "r    r!   r!   ‘   s/   € ÷ Rñ R¤ð R¬gð RÄð RÔT`ñ Rr"   c              ƒ   ó   "  € VP                  \        V 4      G R j  x€L
 pV'       g   \        RR4      hVP                  '       d)   VP                  \        VP                  4      G R j  x€L
 MR pR p. pV'       g   RpMG ^ RIHp T! VP                  VP                  ;'       g    ^VP                  VP                  RVR7      p\        P                  VRRVR	VR
VRV/R7      #  LÊ L~  \         d   p	\        T	4      p R p	?	L?R p	?	ii ; i5i)Nrg   rh   z"Credential SSH OLT belum dipasang.)Údiscover_unregistered_ontsz+I/zDmJGfTPy3NkMNPghkjawVdeI357pJ/k+xm2qtLdY)r   r   rx   r|   Úpinned_host_keyr–   zont_list.htmlrp   Úontsr–   Úerrorr@   )ri   r   r   rn   r   Ú app.core.cdata_fd1601s_discoveryr˜   r   rP   rx   r|   Ú	Exceptionr   rG   rH   )
r•   r7   r–   r8   rp   Úcredr›   rš   r˜   r+   s
   &&&&      r    Úlist_olt_ontsrŸ   �   sú   é € à—‘”y &Ó)×
)€CßÜ˜CÐ!6Ó7Ð7Ø@C×@Q×@QÐ@Q�—‘Ô(¨#×*;Ñ*;Ó<×<Ð<ÐW[€DØ€EØ€DßØ4‰ð	ÝSÙ-°3·8±8À#Ç,Á,×BTÐBTÐRTØŸ™¸×9NÑ9NØ MØ!ô#ˆDô ×%Ñ%¨g¸OØ˜˜V T¨:°xÀÈ%ÐPð &ó Rð Rñ# *ñ =øô ô 	Ü˜“H�Eûð	üsb   ‚DœC'�D©DÁ#DÁ*C)Á+DÁ=DÂ%C+ Â' C+ Ã!DÃ)DÃ+DÃ6DÄDÄDÄD)+Úfastapir   r   r   r   r   Úfastapi.responsesr   r	   r
   Úfastapi.templatingr   Ú
sqlalchemyr   Úsqlalchemy.ext.asyncior   r$   r�   Úapp.core.databaser   Úapp.core.securityr   Úapp.models.modelsr   r   r   r�   r   rG   Úrouterr,   r3   ri   rL   ÚpostrZ   rc   rk   rv   r~   rƒ   r“   rŸ   © r"   r    Ú<module>r«      sH  ðß DÕ Dß JÑ JÝ .Ý Ý /Û Û 	å $Ý +ß IÑ IÝ :ñ  oÔ6€	Ù	¡©°wÓ)?Ó!@Ð AÔ	B€õ
'õ8ð
 ‡�ˆJ |€Ó4Ù<CÀF»Oö ó 5ðð" ‡�Ð Ó!á�S“	¡t¨C£yÁ$ÀtÃ*Ù�R“©W°V«_ö9ó "ð9ð ‡�ˆ^Óá�S“	¡t¨C£yÁÀXÃÙ�lÓ#±T¸"³XÉtÐTVËxÙ# E›{Á4ÈÃ:Ù˜v“ö	
9ó ð
9ð ‡�Ð.Ó/Ù37¸³9É4ÐPSË9ÑipÐqwÓixö 9ó 0ð9ð ‡�Ð<Ó=ÙSWÐX[ÓS\ÑqxÐyó  rAö 
9ó >ð
9ð ‡�Ð#Ó$á�S“	©4°«9ÁdÈ3ÃiÙ�s“)±¸³ö9ó %ð9ð ‡�ÐAÓBÙOVÐW]Ëö vó Cðvð ‡�Ð#°L€ÓAÙ>EÀf»oö 	pó Bð	pð ‡�Ð(¸€ÓFØGNÑcjÐkqÓcrö Ró GòRr"   