
    f&                        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Zd dlmZ d dlmZmZ d dlZd dlmZmZ d dlmZmZmZ d d	lmZmZ  ee      Zd
Zeej@                  d<   dej@                  d<    ed      ej@                  d<   dej@                  d<    ee       dZ! ee!      Z"de_#         e
       Z$d Z%ejL                  d        Z&ejO                  dddg      d        Z(ejO                  d      d        Z)dd d!Z*d" Z+d# Z,d$ Z-ejO                  d%ddg      d&        Z.ed'k(  rej_                  d()       yy)*    )Flaskrender_templaterequest	send_fileflashredirecturl_forsession)HTTPBasicAuth)SessionN)BytesIO)	timedeltadatetime)Boterror)retrystop_after_attemptwait_exponentialgenerate_password_hashcheck_password_hashuploadsUPLOAD_FOLDER
filesystemSESSION_TYPE
   )minutesPERMANENT_SESSION_LIFETIMEz)/var/www/cvtools/html/flask_session_cacheSESSION_FILE_DIRz.7011981221:AAE_XUX7x9XcVMyFkkgKdd59Ff9NsNKxQPstokenKontolLOdonAnjayaysusugusuheuhc                 n    t        d      t        d      t        d      d}| |v xr t        ||    |      S )NzFakhri11072008!parhanganteng15Saffa26)
kripermanassaprhnnursaffaanah_r   )usernamepassworduserss      /var/www/cvtools/html/app.pyauthenticater-   $   sA    ,->?)*;</	:E
 uO!4U8_h!OO    c                  F   dt         _        dt         _        t        j                         } dt         v rft         d   }| |z
  j                         t        j                  d   j                         kD  r(t        j                          t        t        d            S | t         d<   y )NTlast_activityr   login)r
   	permanentmodifiedr   nowtotal_secondsappconfigclearr   r	   )r4   r0   s     r,   before_requestr9   ,   s{    GG
,,.C'!0--/#**=Y2Z2h2h2jjMMOGG,--"GOr.   z/loginGETPOST)methodsc                  (   t         j                  dk(  rut         j                  d   } t         j                  d   }t        | |      r8| t        d<   t        j                         t        d<   t        t        d            S t        d       t        d      S )Nr;   r)   r*   r0   indexzInvalid username or passwordz
login.html)r   methodformr-   r
   r   r4   r   r	   r   r   )r)   r*   s     r,   r1   r1   8   sr    ~~<<
+<<
+(+"*GJ'/||~GO$GG,--01<((r.   z/logoutc                  R    t        j                          t        t        d            S )Nr1   )r
   r8   r   r	    r.   r,   logoutrC   E   s    MMOGG$%%r.   l   dk l   H )r&   pierdecpc                     d|  d| dS )NzBEGIN:VCARD
VERSION:3.0
FN:z
TEL;TYPE=CELL:z
END:VCARD

rB   )namephone_numbers     r,   create_vcf_contactrH   P   s    *4&0@o^^r.   c                    i }d}|dk(  rt        |       D ]1  \  }}|j                  d      sd|z   }|t        | |dz    |      z  }3 |dz  }t        |      D ]1  \  }}|j                  d      sd|z   }|t        | |dz    |      z  }3 |dz  }t        |      D ]1  \  }}|j                  d      sd|z   }|t        |	 |dz    |      z  }3 ||| d<   |S |rd}t        |       D ]1  \  }}|j                  d      sd|z   }|t        | |dz    |      z  }3 |dz  }t        |      D ]1  \  }}|j                  d      sd|z   }|t        | |dz    |      z  }3 |dz  }nd}d}t        |       D ]1  \  }}|j                  d      sd|z   }|t        | |dz    |      z  }3 |dz  }t        |      D ]1  \  }}|j                  d      sd|z   }|t        | |dz    |      z  }3 ||| d<   t        dt	        |      |      D ]`  }|r|nd}t        ||||z          D ]4  \  }}|j                  d      sd|z   }|t        |	 ||z   dz    |      z  }6 ||| ||z  |
z    d<   b |S )	N 1+   
z.vcfz	admin.vcfr   )	enumerate
startswithrH   rangelen)adminsnaviesclientsactionmax_contacts_per_file	file_nameinclude_admin_navyadmin_contact_name_prefixnavy_contact_name_prefixclient_contact_name_prefix	startFromfilesvcf_contentiadminnavyclientadmin_navy_vcf
admin_navy
client_vcfjs                        r,   create_vcf_filerh   T   s   EK}!&) 	ZHAu##C(e-1J0KAaC5.QSXYYK	Z 	t ( 	XGAt??3'Tz-1I0J1Q3%.PRVWWK	X 	t"7+ 	\IAv$$S)v-1K0LQqSE.RTZ[[K	\ %04 !J LG N%f- a5'',%KE"48Q7RSTUVSVRW5XZ_"``a d"N$V, _4s+:D"48P7QRSTURUQV5WY]"^^_ d"NNJ%f- ]5'',%KE04M3NqQRse1TV[\\
] $J$V, [4s+:D04L3MaPQcU1SUYZZ
[ .8EYKy)*q#g,(=> 	ZA+=2J&wq5J1J'KL e	6((- 6\F04N3OPQTUPUXYPY{1[]cdd
e PZEYK$9 9I EFdKL	Z Lr.   c           
        K   t        t              }t        j                  | j	                  d            }|st        d|  d       |j                         D ]K  \  }}t        d| d|         	 |j                  |t        |j                               |d       d {    M y 7 # t        j                  $ r t        d	| d|         t        |j                               t        |j                               j                  |      d
z   d  D ]e  \  }}	 |j                  |t        |j                               |d       d {  7   =# t        j                  $ r t        d	| d|         Y cw xY w Y %w xY ww)Nr    @zChat ID buat z gak ketemu boss...zsedang mengirim z ke tujuan username    )chat_iddocumentfilenamewrite_timeoutzTimeout saat mengirim rM   )r   TELEGRAM_BOT_TOKENuser_chat_idsgetlstripprintitemssend_documentr   encoder   TimedOutlistkeysr>   )r)   r^   botrl   rX   contentremaining_file_nameremaining_contents           r,   send_via_telegramr      s    
&
'C 45GhZ':;<#kkm h	7 +?zJK		h##GggnnFV>Wbk{}#~~~h ~~ 	h*9+5I(TU:>u{{}:MdSXS]S]S_N`NfNfgpNqtuNuNv:w h6#%6h++GgN_NfNfNhFi  uH  XZ+  [  [  [~~ h23F2GG[\d[efghh	hsm   A-F0/B)B' B)$F'B))A/E>/EE
	EE>$E6	3E>5E6	6E>:F=E>>F/c                     dt         vrt        t        d            S t        j                  dk(  rt        j
                  d   j                         j                  d      } t        j
                  d   j                         j                  d      }t        j
                  d   j                         j                  d      }t        j
                  d   }d	t        j
                  v }t        j
                  d
   xs0 dt        j                  j                         j                  d       }t        j
                  d   rt        t        j
                  d         n
t        |      }t        j
                  d   rt        t        j
                  d         nd}t        j
                  d   xs d}t        j
                  d   xs d}	t        j
                  d   xs d}
t        j
                  d   }t        j
                  d   }| D cg c]#  }|j                         s|j                         % } }|D cg c]#  }|j                         s|j                         % }}|D cg c]#  }|j                         s|j                         % }}t        | ||||||||	|
|      }|rBt        j                  t!        ||             t#        d| d       t        t        d            S |dk(  rwt%               }t'        j(                  |d      5 }|j+                         D ]  \  }}|j-                  ||        	 d d d        |j/                  d       t1        |d| dd !      S t        |      dk(  rEt3        |j+                               d   \  }}t1        t%        |j5                               d"|d#      S t%               }t'        j(                  |d      5 }|j+                         D ]  \  }}|j-                  ||        	 d d d        |j/                  d       t1        |d | dd#      S t7        d$      S c c}w c c}w c c}w # 1 sw Y   xY w# 1 sw Y   SxY w)%Nr)   r1   r;   admin_numbersrN   navy_numbersclient_numberszopsi-exportrY   rX   	contacts_z%d%m%Y_%H%M%SrW   r]   rM   rZ   ADMINr[   NAVYr\   CLIENTtelegram_usernamedownload_typez6Kontak berhasil terkirim melalui telegram ke username successr>   zipwr   Tz.zipzapplication/zip)as_attachmentdownload_namemimetypez
text/vcard)r   r   r   z
index.html)r
   r   r	   r   r?   r@   stripsplitr   r4   strftimeintrR   rh   asynciorunr   r   r   zipfileZipFileru   writestrseekr   ry   rw   r   )r   r   r   rV   rY   rX   rW   r]   rZ   r[   r\   r   r   numberr^   
zip_bufferzip_filerF   r|   output_nameoutput_contentzfs                         r,   r>   r>      s    ())~~_5;;=CCDI||N399;AA$G &67==?EEdKm,1W\\ALL-p9X=N=N=R=R=T=]=]^m=n<o1p	NUll[rNsGLL1H$I Jy|  ~L  zM6=ll;6OC[12UV	$+LL1L$M$XQX!#*<<0J#K#Uv %,\\2N%O%[S["#LL)<=_5 7DVFv||~VV5AT6V\\^TT7EXV&,,.XX  <!9.@%'?A[	
 KK)*;UCDJK\J]^`ijGG,--E! JS1 5X%*[[] 5MD'%%dG455 OOAZti[X\K]hyzz5zQ.25;;=.A!.D+^ )>)>)@!ALhs  DH  I  I$Y
__Z5 3). 3gD'233 " 6GZcYddhWiy}~~<((K WTX$5 53 3s<   P5P53P:	P:!P?7P?	+Q+QQQ__main__T)debug)0flaskr   r   r   r   r   r   r	   r
   flask_httpauthr   flask_sessionr   r   ior   r   r   r   telegramr   r   tenacityr   r   r   werkzeug.securityr   r   __name__r6   r   r7   rp   r{   
secret_keyauthr-   r9   router1   rC   rq   rH   rh   r   r>   r   rB   r.   r,   <module>r      sm   ` _ _ ( !   (   @ @ I Ho+

? )

> +4R+@

' (!L

   F 	"#1P 	# 	# 8eV_-
) .
) 9& &
 _8th$ 3(8) )8)v zGG$G r.   