Ë
    •â—jÉ&  ã                   ó   — d dl Z d dlZd dlZd dlZdZedz   Zedz   Zedz   Z e j                  g d¢dd¬«      Z	e	j                  j                  «       s ed	«        ed «        ej                  e	j                  j                  «       «      Zej!                  d
i «      Zej!                  dg «      Zej!                  dd«      Zej!                  dd«      Zej!                  dd«      Zej!                  dd«      ZddddddœZej!                  ej!                  dd«      d«      Z	  ej                  ej2                  ej4                  «      Zej9                  d«       ej;                  «       d    Zej?                  «        dZ d„ Z! e!ej!                  d d!«      «      Z" e!ej!                  d"d!«      «      Z#e"rd#e"› d$�neZ$e#rd%e#› d&�nd'Z%ejL                  jO                  e«      rd(e › d)�Z(nd!Z(i d d*g“d+g d,¢“d-d.d/g“d0d.d1g“d2g d3¢“d4g d5¢“d6d.d7g“d8d.d9g“d:d.d;g“d<d.d=g“d>g d?¢“d@g dA¢“dBg dC¢“dDg dE¢“dFg dG¢“dHg dI¢“dJg dK¢“g dL¢g d?¢g dA¢g dC¢d.d;gg dM¢g dN¢g dO¢g dE¢g dG¢g dI¢g dP¢d.d9gdQœ¥Z)dRdSdTdUdVdWdXdYdZœZ*d!Z+d!Z, e-e«      D ]â  \  Z.Z/e)j!                   e0e/j!                  d[d+«      «      e)d+   «      Z1e/j!                  d\d] e2e.d+z   «      z   «      Z3e.d k(  rd^nd!Z4e+d_e4› d`e.› dae.› dbe3› dc�	z  Z+d!Z5e1D ]O  Z6e6d*k(  re5ddz  Z5e5dez  Z5Œe6e*v sŒe*e6   \  Z7Z8Z9Z:Z;e7dfk(  re5dge:› dbe8› dhe6› di�z  Z5Œ8e5dge:› dje;› dbe8› dke7› dle9› dme6› di�z  Z5ŒQ e,dne4› doe.› dp�e5z   dqe.› dr�z   dse.› dte.› du�z   dvz   z  Z,Œä  e<e«      d+kD  rdwe+z   dvz   nd!Z=dxe=z   e,z   dyz   Z>dz„ Z?d!Z@d{ZA e j                  g d|¢dd¬«      ZBeBj                  j                  «       r*eBj                  j‡                  d}«      j‰                  d~«      ng ZE e<eE«      d4k\  r­eEd    dk(  r¥eEd+   xs d€ZFeEd-   xs d�ZGeEd0   xs dZHeEd2   xs d‚ZIedƒz   ZJejL                  jO                  eJ«      rI eKeJd„¬…«      j™                  «       j›                  d†eG«      j›                  d‡eH«      j›                  dˆeI«      Z@n ed‰eJ› dŠ�«       d‹ e?eF«      › dŒ�ZA eKed�z   «      j™                  «       ZNeNj›                  dŽe«      j›                  d�e«      j›                  d�e$«      j›                  d‘e«      j›                  d’e«      j›                  d“e%«      j›                  d”e>«      j›                  d•e «      j›                  d–e(«      j›                  d—e@«      j›                  d˜eA«      ZO eKed™«      j¡                  eO«        ej¢                  edš«        e j                  g d›¢«       ejL                  j¥                  e«      ZS edœ e<e«      › d�e› džeS› dŸ�«        ed e › d¡�«        ed¢e › d£�«        ed¤e › d¥�«       y#  dZY �ŒŽxY w)¦é    Nz/usr/local/etc/chilli/wwwz/login.chi.shz/langs_slim.jsz/images)Úmysqlú-uÚradiusú-pradpass123r   ú-sNú-ez2SELECT config_json FROM login_form_config LIMIT 1;T)Úcapture_outputÚtextzNo config found in DBÚstyleÚformsÚprimary_colorz#cc0000Ú	btn_colorz#610000Úbg_colorz#ffffffÚ
text_colorz#850000zPoppins,sans-serifzInter,sans-serifzRoboto,sans-serifzLato,sans-serifzMontserrat,sans-serif)ÚPoppinsÚInterÚRobotoÚLatoÚ
MontserratÚfontr   )z8.8.8.8éP   z	127.0.0.1z/wwwc                 ó  — | sy| j                  dd«      j                  d«      d   }|syt        j                  j	                  t
        |«      }t        j                  j                  |«      st        d|› �«       yt        dz   |z   S )NÚ z\/ú/éÿÿÿÿu     âš  image not found: ú/images/)	ÚreplaceÚsplitÚosÚpathÚjoinÚIMG_DIRÚexistsÚprintÚBASE_URL)ÚvalÚfnameÚfulls      ú(/usr/local/etc/chilli/www/build_login.pyÚimg_urlr*   0   ss   € Ù�rØ�K‰K˜˜cÓ"×(Ñ(¨Ó-¨bÑ1€EÙ˜Ü�7‰7�<‰<œ Ó'€DÜ�7‰7�>‰>˜$ÔÜÐ'¨ vÐ.Ô/ØÜ�jÑ  5Ñ(Ð(ó    Úbg_imager   Ú
logo_imagezurl("z&") center center/cover no-repeat fixedz
<img src="z?" style="max-width:120px;max-height:80px;object-fit:contain;"/>u   ðŸŒ�z<script src="z/langs_slim.js.chi"></script>Ú	__users__é   )ÚroomÚ
first_nameÚemailé   r0   r1   é   Ú	last_nameé   )r0   r5   r2   é   )r0   Úarrivalr2   é   r8   é   Ú	departureé   Úresv_idé	   Úphoneé
   )r0   r1   r5   é   )r0   r1   r5   r2   é   )r0   r1   r5   r?   é   )r0   r8   r;   r2   é   )r0   r1   r?   é   )r0   r5   r?   é   )r0   r8   r?   )r0   r=   r?   )r0   r=   r2   )r0   r=   r1   )r0   r=   r5   )r0   r;   r2   )é   é   é   é   r>   r@   rA   rB   rC   rD   rE   é   é   )r
   zRoom Numberze.g. 204Ú	roomLabelÚroomPH)r
   z
First Namez
e.g. AhmedÚfirstNameLabelÚfirstNamePH)r
   z	Last Namez
e.g. SmithÚlastNameLabelÚ
lastNamePH)r2   zEmail Addressze.g. you@email.comÚ
emailLabelÚemailPH)ÚtelzPhone Numberze.g. +201001234567Ú
phoneLabelÚphonePH)r
   zReservation IDz
e.g. 63483ÚresvIdLabelÚresvIdPH)ÚdatezArrival Dater   ÚarrivalLabelr   )rZ   zDeparture Dater   ÚdepartureLabelr   )r0   r1   r5   r2   r?   r=   r8   r;   ÚcombinationÚtab_namezForm z activez<button class="pms-tab-btnz" onclick="switchPmsTab(z)" id="pms-tab-z">z
</button>
z�<div class="inp-wrap"><label class="inp-label">Username</label><input type="text" class="inp-field" data-field="__username__" required/></div>
z“<div class="inp-wrap"><label class="inp-label">Password</label><input type="password" class="inp-field" data-field="__password__" required/></div>
rZ   z:<div class="inp-wrap"><label class="inp-label" data-lkey="z9</label><input type="date" class="inp-field" data-field="z" required/></div>
z" data-pkey="z</label><input type="z!" class="inp-field" placeholder="z" data-field="z<div class="pms-form-sectionz" id="pms-form-z">
z<div id="pms-status-z." class="pms-msg" style="display:none;"></div>z0<button class="connect-btn" onclick="connectPms(z)" id="pms-btn-z">Connect</button>z</div>
z<div class="pms-tabs">
z4<!-- PMS_FORMS_START -->
<div class="pms-container">z</div>
<!-- PMS_FORMS_END -->c                 ó˜   — t        | «      j                  dd«      j                  dd«      j                  dd«      j                  dd«      S )	Nú&z&amp;ú<z&lt;ú>z&gt;ú"z&quot;)Ústrr   )Úvs    r)   Úhtml_escaperf   ”   s>   € Ü�‹F�N‰N˜3 Ó(×0Ñ0°°fÓ=ß‘7˜3 Ó'¯©°°XÓ(>ð@r+   z#<!-- temporary access: disabled -->)r   r   r   r   r   r   r   zYSELECT enabled, btn_text, btn_bg, btn_color, btn_icon FROM temp_access_config WHERE id=1;ú
ú	Ú1zGet Temporary Accessz'linear-gradient(135deg,#ff9800,#f57c00)u   âš¡z/css/temp-access.csszutf-8)Úencodingz	%%TA_BG%%z%%TA_COLOR%%z%%TA_ICON%%u     âš  z! missing; button will be unstyledzŽ<!-- TEMP_ACCESS_START -->
    <div class="temp-access-wrap">
      <button class="temp-access-btn" id="ta-btn" onclick="requestTempAccess()">zÓ</button>
      <div id="ta-msg" class="pms-msg" style="display:none;"></div>
    </div>
    <div class="temp-access-divider"><span id="ta-divider-text">or sign in below</span></div>
    <!-- TEMP_ACCESS_END -->z/login.chi.sh.tplz%%PRIMARY%%z%%BTN%%z
%%BG_CSS%%z%%TXT%%z%%FONT%%z%%LOGO%%z%%PMS_BLOCK%%z%%BASE_URL%%z%%LANGS_BLOCK%%z%%TEMP_ACCESS_CSS%%z%%TEMP_ACCESS_BLOCK%%Úwií  )ÚsudoÚ	systemctlÚrestartÚchilliu   âœ… Done! forms=z server=z size=z bytesz	   CSS:  z
/login.cssz	   JS:   z	/login.jsz	   Imgs: r   )TÚ
subprocessr   ÚjsonÚsocketÚBASEÚLOGIN_SHÚLANGS_JSr"   ÚrunÚrÚstdoutÚstripr$   ÚexitÚloadsÚcfgÚgetr   r   ÚprimaryÚbtnÚbgÚtxtÚFONTSr   ÚAF_INETÚ
SOCK_DGRAMÚsÚconnectÚgetsocknameÚ	server_ipÚcloser%   r*   Úbg_imgÚlogo_imgÚbg_cssÚlogor    r#   Úlangs_blockÚCOMBOSÚFIELDSÚtabsÚsecsÚ	enumerateÚiÚformÚintÚfieldsrd   ÚtnameÚactÚinpÚfÚt2ÚlblÚphÚlkeyÚpkeyÚlenÚ	tabs_htmlÚ	pms_blockrf   Úta_cssÚta_blockÚrtaÚrstripr   Úta_rowÚta_textÚta_bgÚta_colorÚta_iconÚta_css_fileÚopenÚreadr   ÚtplÚoutÚwriteÚchmodÚgetsizeÚsize© r+   r)   ú<module>r·      s  ðç #× #à'€Ø�?Ñ"€ØÐ#Ñ#€Ø�9Ñ€ð €J‡N�Nò;à˜dô€ð
 	‡x�x‡~�~ÔÙ	Ð
!Ô"¡D¨¤Gàˆ�
‰
�1—8‘8—>‘>Ó#Ó$€Ø�‰�˜Ó€Ø�‰�˜Ó€ð �)‰)�O YÓ
/€Ø
�)‰)�K YÓ
/€Ø
�)‰)�J YÓ
/€Ø
�)‰)�L YÓ
/€à&Ø$Ø%Ø#Ø)ñ€ð ‡y�y�—‘˜6 &Ó)Ð+<Ó=€ðØˆ�‰�f—n‘n f×&7Ñ&7Ó8€AØ‡I�IˆoÔØ—‘“ Ñ"€IØ‡G�G„Ið €ò)ñ �5—9‘9˜Z¨Ó+Ó,€Ù�5—9‘9˜\¨"Ó-Ó.€áCIˆ5��Ð>Ñ	?Èr€Ùckˆ:�h�ZÐ^Ñ	_Ðqw€ð ‡7�7‡>�>�(ÔØ! ( Ð+HÐI�Kà€Kð
Ø€{€mð
àÒ#ð
ð €vˆlÐð
ð €vˆkÐð	
ð
 Ò"ð
ð Ò ð
ð €vˆiÐð
ð €vˆkÐð
ð €vˆiÐð
ð €vˆgÐð
ð Ò(ð
ð Ò0ð
ð Ò0ð
ð Ò-ð
ð Ò$ð
ð  Ò#ð!
ð" Ò!ð#
ò$ "Ú(Ú0Ú0ØˆyÐÚ!Ú&Ú%Ú-Ú$Ú#Ú#Øˆ{Ðò=
€ðB dØhØgØdØdØeØ]Ø]ñ	
€ð 
€�"ˆ4Ù˜Óò �G€A€tØ�Z‰Z™˜DŸH™H ]°AÓ6Ó7¸À¹ÓC€FØ�X‰X�j '©C°°!±«HÑ"4Ó5€EØ˜qš&‰Y b€CàÐ(¨¨Ð-EÀaÀSÈÐXYÐWZÐZ\Ð]bÐ\cÐcnÐoÑo€Dà
€CØò 	XˆØ�ÒØð  fñ  fˆCØð  jñ  j‰CØ�&Š[Ø&,¨Q¡iÑ#ˆB��R˜˜tØ�VŠ|ØÐSÐTXÐSYÐY[Ð\_Ð[`ð  aZð  [\ð  Z]ð  ]qð  rñ  r‘àÐSÐTXÐSYÐYfÐgkÐflÐlnÐorÐnsð  tIð  JLð  IMð  Mnð  oqð  nrð  r@ð  ABð  @Cð  CWð  Xñ  X‘ð	Xð 	Ð+¨C¨5°À¸sÀ$ÐGØñà% a SÐ(VÐWñXð BÀ!ÀÀOÐTUÐSVÐVhÐiñjð ñ	ñ �Dð'ñ2 ?BÀ%»jÈ1ºnÐ&¨Ñ-°
Ò:ÐRT€	ØCÀiÑOÐRVÑVÐYyÑy€	ò@ð 
€Ø0€à€j‡n�nò,ð ˜dô	€ð 14·
±
×0@Ñ0@Ô0Bˆ�‰×	Ñ	˜4Ó	 ×	&Ñ	& tÔ	,È€á€vƒ;�!Ò˜˜q™	 SÒ(Ø�a‰yÒ2Ð2€GØ�a‰yÒEÐE€EØ�a‰yÒ%˜I€HØ�a‰yÒ!˜E€GàÐ/Ñ/€KØ	‡w�w‡~�~�kÔ"Ù�{¨WÔ5×:Ñ:Ó<ß‘7˜;¨5Ó1ß‘7˜>¨8Ó4ß‘7˜=¨7Ó3ñ 	ñ
 	��{�mÐ#DÐEÔFð	[á[fÐgnÓ[oÐZpð q'ð	'ð ñ ˆ4Ð%Ñ%Ó&×+Ñ+Ó-€Ø
ß�Wˆ]˜wÓ'ß�WˆY˜sÓ#ß�Wˆ\˜vÓ&ß�WˆY˜sÓ#ß�WˆZ˜tÓ$ß�WˆZ˜tÓ$ß�Wˆ_˜yÓ)ß�Wˆ^˜xÓ(ß�WÐ Ó,ß�WÐ" fÓ-ß�WÐ$ hÓ/ð ñ €XˆsÓ × Ñ ˜#Ô Ø €‡�ˆ�5Ô Ø €
‡�Ò9Ô :à	‡w�w‡��xÓ €Ù Ð™˜U›˜ H¨Y¨K°v¸d¸VÀ6ÐJÔ KÙ ˆ	�(�˜:Ð&Ô 'Ù ˆ	�(�˜9Ð%Ô &Ù ˆ	�(�˜8Ð$Õ %øðUØƒIús   Ä$AX ØX