U
    wiZd                     @   sx  U d dl Z e de j d dlmZmZmZmZm	Z	 d dl
mZmZmZmZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlmZ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
Z"e#e$d< dZ%e#e$d< dZ&e'e$d< dZ(eG dd dZ)G dd dZ*dd Z+e,e#dddZ-e,e#dddZ.e/dddZ0ee#df ddd Z1ee#df ee2df d!d"d#Z3ee#df dd$d%Z4e#dd&d'Z5e#dd(d)Z6e#dd*d+Z7edd,d-d.Z8dDee2df e'eedf d0d1d2Z9e#e#ee)df d3d4d5Z:e#e#ee#df d6d7d8Z;e#ee#e,f d9d:d;Z<e#e=d<d=d>Z>e#e=d<d?d@Z?e'e/e	ddAdBdCZ@dS )E    Ntelethon)
JsonObjectJsonObjectValue
JsonString
JsonNumberMessage)TelegramClient	functionstypeserrors)UnionOptional)Settings)logger)	dataclassfield)deque1GMAIL_SERVICEz540916392:cVkqKkXSQCOBsbDYTgVTGMAIL_API_KEY   CHUNKzTsocks5://f4f1dff52b67a4c46d05__nocr.cu,cn,af:3332fdb136e46ea9@gw.dataimpulse.com:824c                   @   sJ   e Zd ZU eed< eed< eed< eddZeed< eddZ	eed< dS )	Gmailaddress
request_idissucessr   )defaultusedNcode)
__name__
__module____qualname__str__annotations__boolr   r   intr    r&   r&   )/var/www/html/resetter/utils/functions.pyr       s
   
r   c                   @   sN   e Zd ZU e Zejed< edddddZede	e
d dd	d
ZdS )EmailKeeper_queuer   N)gmailreturnc                    s    |j dk r| j|I d H  d S )N   )r   r)   put)clsr*   r&   r&   r'   	add_gmail+   s    
zEmailKeeper.add_gmail        )timeoutr+   c              	      sV   z2|dkr&t j| j |dI d H }n
| j }W n t jt jfk
rP   Y d S X |S )Nr   r1   )asynciowait_forr)   get
get_nowait
QueueEmptyTimeoutError)r.   r1   r*   r&   r&   r'   get_gmail_async0   s    zEmailKeeper.get_gmail_async)r0   )r   r    r!   r3   Queuer)   r#   classmethodr/   floatr   r9   r&   r&   r&   r'   r(   (   s
   
r(   c                 c   s,   t dt| |D ]}| |||  V  qdS )zList Chunk Generater   N)rangelen)Z
input_list
chunk_sizeir&   r&   r'   chunk_generateX   s    rA   )statusr+   c                 C   s   | rdS dS )Nu   ✅u   ❌r&   rB   r&   r&   r'   convert_to_sticker]   s    rD   c                 C   s   | rdS dS )Nu   🔴️️️️️️ Disableu   🟢️️️️️️ Enabler&   rC   r&   r&   r'   convert_statusa   s    rE   )r+   c                  C   s   t  d} | jdd d | S )Nzsessions/*.sessionc                 S   s   t j| S N)ospathgetmtime)xr&   r&   r'   <lambda>g       zget_sessions.<locals>.<lambda>)key)globsort)sessionsr&   r&   r'   get_sessionse   s    
rQ   c               	   C   sb   z<t dddd} dd | D }W 5 Q R X |r8t|nd W S  tk
r\   td Y d S X d S )Nzutils/proxies.txtrutf-8encodingc                 S   s*   g | ]"}|  r|  d s|  qS #strip
startswith.0liner&   r&   r'   
<listcomp>n   s       zget_proxy.<locals>.<listcomp>z8utils/proxies.txt not found. Continuing without proxies.openrandomchoiceFileNotFoundErrorr   warning)fproxiesr&   r&   r'   	get_proxyk   s    
rg   )r]   r+   c                 C   s   | r|  d}zbt|dkr6|\}}d|t|dW S t|dkrhd|d t|d |d |d d	W S W d S W n tk
r   Y d S X d S )
N:r,   socks5)
proxy_typeaddrport   r         )rj   rk   rl   usernamepassword)splitr>   r%   	Exception)r]   partsrk   rl   r&   r&   r'   parse_proxy_lineu   s    
&
ru   c               	   C   sb   z<t dddd} dd | D }W 5 Q R X |r8t|nd W S  tk
r\   td Y d S X d S )Nzutils/push_tokens.txtrR   rS   rT   c                 S   s&   g | ]}|  r|d s|  qS rV   rX   )r\   lr&   r&   r'   r^      s      
 z"get_push_token.<locals>.<listcomp>z utils/push_tokens.txt not found.r_   )re   tokensr&   r&   r'   get_push_token   s    
rx   c                   C   s   t ddddgS )NzSDK 31zSDK 32SDK 33zSDK 34ra   rb   r&   r&   r&   r'   get_random_system_version   s    r{   c                   C   s   t dddgS )N11.6.2 (56152)z12.0.1 (6166)z12.1.1 (6211)rz   r&   r&   r&   r'   get_random_app_version   s    r}   c               	   C   s`   zDt dddd} dd |  D }W 5 Q R X |r@t| ndW S  tk
rZ   Y dS X d S )Nzutils/device.txtrR   rS   rT   c                 S   s&   g | ]}|  r|d s|  qS rV   rX   r[   r&   r&   r'   r^      s      
 z+get_random_device_model.<locals>.<listcomp>zPixel 5)r`   	readlinesra   rb   rY   rc   )re   Zdevicesr&   r&   r'   get_random_device_model   s    r   )clientr+   c              
      s   zbd| j _ttdtt tdtdtdtdtdtdtd	td
tdtdg| j _W n2 tk
r } zt	
d|  W 5 d }~X Y nX d S )NZandroidZdevice_tokendataZ@49C1522548EBACD46CE322B6FD47F6092BB745D0F88082145CAF35E14DCC38E1Z	installerzcom.android.vendingZ
package_idzorg.telegram.messenger.webZ	tz_offsetiZperf_catr,   z5[patch_client] warning: couldn't patch init_request: )_init_request	lang_packr   r   r   rx   r   paramsrs   r   debug)r   er&   r&   r'   patch_client   s    r      )proxyconnect_timeoutr+   c                    s.  z^t t }t|ddddddd| dd	|d	d
}t|I d H  tj| |dI d H  ||fW S  tjk
r   t	
dtj| d z| I d H  W n tk
r   Y nX Y d S  tk
r( } zRt	
dtj| d|  z| I d H  W n tk
r   Y nX W Y d S d }~X Y nX d S )N   Z eb06d4abfb49dc3eeb1aeb98ae0f581ezsamsungSM-A125Fry   r|   zfr-CAfrrn   F)sessionapi_idapi_hashdevice_modelsystem_versionapp_versionsystem_lang_code	lang_coder   connection_retriesreceive_updatesr1   auto_reconnectr2   z+[create_client] Timeout connecting session z (proxy may be slow).z*[create_client] Error creating client for : )ra   rb   rQ   r   r   r3   r4   connectr8   r   errorrG   rH   basename
disconnectrs   )r   r   session_pathtelegramr   r&   r&   r'   create_client_for_session   sD    
r   )api_keyserverr+   c                    s  d|  d| }d }zt jddtd4 I d H }||I d H }|j}| }|  t|tsvW 5 Q I d H R  W d S |ddkrW 5 Q I d H R  W d S t	|d|d	d
dW  5 Q I d H R  W S Q I d H R X W n@ t
k
r } z td| d|  W Y d S d }~X Y nX d S )Nz/https://venusads.ir/api/V1/email/getEmail/?key=z&server=   Fr1   verifyrf   rB   r   emailZ	requestIDT)r   r   r   zGmail | get gmail error :  | )httpxAsyncClientSOCKS_PROXY_URLr5   textjsonraise_for_status
isinstancedictr   rs   r   r   )r   r   urlcontentr   responseresponse_jsonr   r&   r&   r'   	get_gmail   s2    
*r   )r   r   r+   c                    s   d|  d| }d }zft jddtd4 I d H >}||I d H }|j}| }|dW  5 Q I d H R  W S Q I d H R X W n> tk
r } z td| d|  W Y d S d }~X Y nX d S )	Nz.https://venusads.ir/api/V1/email/getCode/?key=z&id=r   Fr   r   zGmail | get gmail code error : r   )	r   r   r   r5   r   r   rs   r   r   )r   r   r   r   r   r   r   r   r&   r&   r'   get_gmail_code   s     .r   )api_urlr+   c                    s   zpt jdddtd4 I d H F}|| I d H }td|j}|rJ|dndW  5 Q I d H R  W S Q I d H R X W n tk
r   Y dS X d S )NT
   F)Zfollow_redirectsr1   r   rf   z(\d{5})rn   )	r   r   r   r5   researchr   grouprs   )r   r   r   matchr&   r&   r'   extract_login_code  s    6r   )accountr+   c                    s	  d }	zRzttd tt }|r<ddd | D nd}t|ddI d H }|d krvtd d	d
| fW W S |\}}d| kr| 	d}n6d| kr| 	d}n"td|   d	d| fW W S t
|dk rtd|   d	d| fW W fS |d |d  }}d }	z||I d H }
W nJ tk
rj } z*td|  d	d| f W Y 
W W S d }~X Y nX td|  td| d td| d tdt|
dd d t|
jtjjrtd|
jj  zX|tjj||
jdI d H }t|jdd }td|  d |r(d!nd"| fW W W "S  tk
r } z*td#|  d	d$| f W Y 
W W S d }~X Y nX nt|
jtjjrtd% |
j}	nt|
jtjjrJtd& z0|tjj||
jdI d H }|j}	td' W nJ tk
rD } z*td(|  d	d)| f W Y 
W W $S d }~X Y nX nt|
jtjjr.td* zxtjdd+I d H }t|tr|jdkrd }|d krtd,D ]`}t t!t"I d H }|d kr|j#r|j$d kr qt| d-| d. t%&dI d H  qt| d/|  |d krNt| d0 d	d1| fW W W S |tj'j(tj)||
jd|j$d2I d H }t| d3|  d }td,D ]}t*t!|j+I d H }t|t,rt| d/|j$ d4|  ||j-kr||_-|} q"t| d/|j$ d5| d. t%&d6I d H  qt| d/|j$ d7|  |d krlt| d8 d	d9| fW W W S |tj'j.tj)||
jdtj/|d:d;I d H }t| d<|j$ d/|  | jd7  _t0| t%&d=I d H  W nJ tk
r* } z*td>|  d	d1| f W Y 
W W >S d }~X Y nX n(td?t|
j  d	d1| fW W S d }td,D ]H}td@|d  dA t%&d6I d H  t1|dBI d H }|rb qqb|stdC d	dD| fW W S tdE| d z |j2|t3||	dFI d H }
W  n t4j5j6k
r   tdG z:|tj'j7dHdII d H  tdJ d dK| fW  Y W W  S  tk
r } z.tdL|  d	d"| f W Y  Y W W S d }~X Y nX Y nJ tk
r } z*tdM|  d	d"| f W Y 
W W rS d }~X Y nX zBt8j9:|r(t8;|dN| dO tdP nt<dQ|  W n4 tk
rn } ztdR|  W 5 d }~X Y nX d dS| fW W S  t4j5j=k
r   tdT d	dU| f Y W S  t4j5j>k
r   tdV d	dW| f Y W |S  t4j5j?k
	r   tdX d	dY| f Y W LS  tk
	rT } z&tdZ|  d	d
| f W Y W S d }~X Y nX W 5 |	rz|  I d H  W n   Y nX X d S )[Nz0------------------------------------------------rh   c                 s   s   | ]}t |V  qd S rF   )r"   r\   vr&   r&   r'   	<genexpr>&  s     z _reset_number.<locals>.<genexpr>zno-proxy<   )r   r   z1[reset_number] Error in create_client_for_sessionFunknow|-z'[reset_number] Invalid account format: zinvalid-account-formatr,   z([reset_number] Account data incomplete: r   rn   z,[reset_number] Failed to send code request: zunsuccess-send-codez<green>[+]</green> Proxy: z)<green>[+]</green> Phone number: <yellow>z	</yellow>z)<green>[+]</green> Session path: <yellow>z.<green>[+]</green> Code request sent, <yellow>typeunknownz0<green>[+]</green> Email verification required: )phone_numberphone_code_hashreset_pending_datez.<green>[+]</green> Email reset sent. Pending: Tsuccess-reset-emailunsuccess-reset-2faz"<red>[-]</red> Email reset error: unsuccess-reset-emailu9   <green>[+]</green> SentCodeTypeSms → Continue normally.u=   <green>[+]</green> SentCodeTypeApp → Forcing SMS request...z2<green>[+]</green> SMS resend successfully forced.z+<red>[-]</red> Failed to force SMS resend: unsuccess-smsz*<green>[+]</green> SentCode SetUp Email...r2   ro   z | Get Email Retry [z]...r   z% | <red>[-]</red> Failed to get gmailunsuccess-setup-email)purposer   z$ | Send Verify Email Code Request : z | received code z | Get Email Code retry [r   z | gmail code z* | <red>[-]</red> Failed to get gmail codeunsuccess-email-code)r   )r   verificationz | gmail setup g?z&<red>[-]</red> Failed to setup gmail: z%<red>[-]</red> Unknown SentCodeType: z9<green>[+]</green> Waiting 10s for verification code... (z/3))r   z5<red>[-]</red> Verification code not found after 30s.not-found-verifaction-codez7<green>[+]</green> Received verification code: <yellow>)phoner   r   u7   <green>[+]</green> 2FA enabled → resetting account...ZF79CdnW0eyrcZvQ2)reasonz-<green>[+]</green> Account reset successfullysuccess-reset-2faz <red>[-]</red> 2FA reset error: z<red>[-]</red> Sign in error: zlogin_sessions/.sessionz3<green>[+]</green> Session moved to login_sessions/z+<yellow>[!]</yellow> Session file missing: z&<red>[-]</red> Session moving failed: loginz<red>[-]</red> Banned number.bannedz<red>[-]</red> Flood error.floodedz<red>[-]</red> Invalid number.zinvalid-numberz#[reset_number] Unexpected error -> )@r   r   inforu   rg   joinvaluesr   r   rr   r>   send_code_requestrs   getattrr   r   r
   authSentCodeTypeEmailCodeemail_patternr	   ResetLoginEmailRequestr   SentCodeTypeSmsSentCodeTypeAppResendCodeRequestSentCodeTypeSetUpEmailRequiredr(   r9   r   r   r=   r   r   r   r   r   r3   sleepr   SendVerifyEmailCodeRequestEmailVerifyPurposeLoginSetupr   r   r"   r   VerifyEmailRequestEmailVerificationCoder/   r   sign_inr%   r   rpcerrorlistSessionPasswordNeededErrorDeleteAccountRequestrG   rH   existsreplacerd   PhoneNumberBannedErrorPhoneNumberFloodErrorPhoneNumberInvalidError)r   r   r   
proxy_infoZclient_resultr   rt   r   r   Zverification_hashr   Z
send_errorZreset_responsependingZemail_errorZresendZresend_errorr*   ZretrysZsent_code_mailr   Zres_codeZverify_emailZverifaction_codeattemptZpw_errorZ
sign_errorZ
move_errorr   r&   r&   r'   _reset_number  sd   

 
(	
,



,










*



0("


(r   c                    sD   zt jt| ddI d H }|W S  t jk
r>   dd| f Y S X d S )Nx   r2   Fr   )r3   r4   r   r8   )r   resr&   r&   r'   reset_number-  s
    r   )user_idaccountsprocess_messager+   c                    s  zg g g g g g g g g g g g d}t |t}|D ]}tjdd |D  }|I d H  t|  | D ]R}|d }ddddd	d
ddddddd}	|	|d |d f}
|
rh||
 | qhzFt	dd |
 D }|dt| d| dt| dI d H  W q0   Y q0X q0z4|dt| dt| dt| dI d H  W n   Y nX t|d dkr*d}td|  dd}tj|r t|D ]}tj||}|drtj|r|j||d zt| W n: tk
r } ztd | d!|  W 5 d }~X Y nX qW 5 Q R X | D ]X\}
}t||
 dkr2td|  d"|
 d#dd$d%}|d&||
  W 5 Q R X q2W n4 tk
r } ztd'|  W 5 d }~X Y nX d S )(N)r   r   r   r   r   r   r   r   r   r   r   r   c                 s   s   | ]}t |V  qd S rF   )r   )r\   rJ   r&   r&   r'   r   E  s     z reset_numbers.<locals>.<genexpr>r,   r   r   r   r   r   r   r   r   r   r   r   r   ))r   T)r   F)r   F)r   T)r   F)r   T)r   F)r   F)r   F)r   F)r   F)r   Frn   r   c                 s   s   | ]}t |V  qd S rF   )r>   r   r&   r&   r'   r   b  s     u>   <b>✅ File analyzed, resetting ...

• Total Numbers: <code>u   </code>
• Processed: <code>/z</code></b>u:   <b>✅ File analyzed, Finished!

• Total Numbers: <code>Zlogin_sessions(z)-(sessions).zipwr   )ZarcnamezError removing session file r   z)-(z).txtrS   rT   
z+[reset_numbers] Error resetting numbers -> )rA   r   r3   gatherr   r   resultr5   appendsumr   editr>   zipfileZipFilerG   rH   r   listdirr   endswithisfilewriteremovers   r   itemsr`   	exception)r   r   r   rB   Zchunked_accountschunkedtasksr   r   Zstatus_key_maprM   Z
total_doneZsessions_folderZzipffnameZfpathr   re   r   r&   r&   r'   reset_numbers5  s         


046&r  )r   )Alogging	getLoggersetLevelCRITICALZtelethon.tl.typesr   r   r   r   r   r   r   r	   r
   r   r  r3   ra   r   rN   r   rG   typingr   r   utils.databaser   Zutils.loggerr   Zdataclassesr   r   collectionsr   r   r"   r#   r   r   r%   r   r   r(   rA   r$   rD   rE   listrQ   rg   r   ru   rx   r{   r}   r   r   r   r   r   r   tupler   r   r  r&   r&   r&   r'   <module>   sX    0
 
	$.  