U
    yc:                     @   sb  d dl 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Zd dlZd dl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mZ d d	lmZ d d
l 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Zd dlZd dlm Z  d dlm!Z! dej"d< i a#dZ$dd Z%dd Z&dd Z'dd Z(da)i a*dd Z+da,da-dd Z.dS )    )renderredirect)datetime)sync_to_async)messages)UserN)JsonResponse)HttpResponseRedirect)HttpResponse)get_object_or_404r   )Payment)RegistrationtrueDJANGO_ALLOW_ASYNC_UNSAFEzhello-helloc                 C   s   t dtiS )Nstatus_code)r   r   request r   */var/www/html/project/apps/helios/views.py	getthread   s    r   c                 C   s   t | ddtiS )Nzdologin.htmlusername)r   r   r   r   r   r   dologin"   s    r   c                     sr   z2t j } | D ]}|j}|j}||| f  W S W n: tk
rN   td Y n  tjj	k
rl   td Y nX d S )Nzsomething happen.urlopen error [Errno 11001] getaddrinfo failed)
r   objectsallnotesamount	ExceptionprinturlliberrorURLError)datacustomer_datamsisdntransamountr   r   r   Getdata$   s    
r&   c              	      s  zt  I d H \}}}d}t }d}ttt| }t || k rtdI d H  |dkrntd qq6tj	 }t
j	 }|D ]4}	|	j}
|	j}| }|
|kr|dkrd}t }t || k rtdI d H  t dkr t|tt }|dk rd}tjj|	jd	j|d
 ntjj|	jd	j|d
 tj d fddtdD }tjdd|ddddd}d}tj }d}tj|d}|| }|d}|rtjdd|dd|dd}|rtjd||ddd}|jdkr|ja|tf  W S qt dkrt|tt }|dk rDd}tjj|	jd	j|d
 nRtjj|	jd	j|d
 tj d fddtdD }tjd |d!d"d#d$ d%}qt d&krt|tt }|dk rd}tjj|	jd	j|d
 n>tjj|	jd	j|d
 tj d fd'dtdD }d%}qt d(krt|tt }|dk r`d}tjj|	jd	j|d
 n>tjj|	jd	j|d
 tj d fd)dtdD }d%}qt d*kr$t|tt }|dk rd}tjj|	jd	j|d
 n>tjj|	jd	j|d
 tj d fd+dtdD }d%}qt d,krt|tt }|dk rhd}tjj|	jd	j|d
 n>tjj|	jd	j|d
 tj d fd-dtdD }d%}q| d.k rtd/ qqq6W n: tk
r   td0 Y n tk
r   td1 Y nX d S )2Ni@ 254000000000g      ?l   o; doner      5)pk)r    c                 3   s   | ]}t  V  qd S Nrandomchoice.0ilettersr   r   	<genexpr>R   s     zloop.<locals>.<genexpr>   z(https://helios-radius.co.ke/user-create/3zCleartext-Passwordz:=Z
12345678wp)idr   	attributeopvalue)jsonZ2hrs)hoursz%d %B %Y %H:%M:%S
Expirationz)https://helios-radius.co.ke/Radusergroup/1)r   	groupnamepriority   10c                 3   s   | ]}t  V  qd S r-   r.   r1   r4   r   r   r6   {   s     ZcomcastZ	1234678wpDATAz00:03:00)servernamepasswordZprofileZlimit_uptimez-Dear customer your successfuly purchased 1hr Z20c                 3   s   | ]}t  V  qd S r-   r.   r1   r4   r   r   r6      s     Z30c                 3   s   | ]}t  V  qd S r-   r.   r1   r4   r   r   r6      s     Z250c                 3   s   | ]}t  V  qd S r-   r.   r1   r4   r   r   r6      s     900c                 3   s   | ]}t  V  qd S r-   r.   r1   r4   r   r   r6      s     0z
no balance*cannot unpack non-iterable NoneType objectz(NameError: name 'MyModel' is not defined) r&   timeintphoneasynciosleepr   r   r   r   r   r   r   plansfilterr9   updatestringdigitsjoinrangerequestspostr   now	timedeltastrftimer   Zhotspotadd	TypeError
ValueError)r   r$   r%   r"   timeoutZtimeout_startnumberansr9   r#   Z	msisdn_dbgZbalanceZnew_balancer   responsegroupsZcurrent_date_and_timer>   Zhours_addedZfuture_date_and_timer?   notifyr   r4   r   loop0   s    














rg   r,   c                    sh   z>t  I d H \}}}d}tr,ttt| a||tttdaW n tk
rZ   td Y nX t	| dtS )Nr'   )r%   r$   rN   rQ   r   rK   zprocessing.html)
r&   rN   rM   rb   rQ   r   contextr^   r   r   )r   r$   r%   r"   ra   r   r   r   
processing   s    
ri   c                    s   j dkrjdajdadd dfdd} fd	d
fddt dkrttt	  t
 |  tdS tdS )NPOSTrQ   rN   zKhttps://api.safaricom.co.ke/oauth/v1/generate?grant_type=client_credentialsZ up863hWneHvgTzQHTAKTRUPFmJOmx9GBZ3HYLLjkSnTRBn2N5c                     s   t  I d H } t   I d H }t t I d H }tjt j fd}tjt j  fd}tjt jt fd}tjt jtfd}|  |  |  |  | r|	  |	  |	  d S )N)targetargs)
rO   create_taskr&   	threadingThreadrunrg   startis_aliverV   )Ztask1Ztask2Ztask3t1t2t3Zt5)express	get_tokenr   r   r   main   s    zhelios.<locals>.mainc                     s   zpt  4 I d H P} | j t  dI d H }| I d H }|d atW  5 Q I d H R  W S Q I d H R X W n tk
r   td Y nX d S )N)authaccess_tokenzopps! something happen)	aiohttpClientSessiongetformatZ	BasicAuthr=   rz   r   r   )sessionsZurl_responsetoken)app_key
app_secretlive_urlr   r   rw      s     (zhelios.<locals>.get_tokenc                     s    I d H } d}d}t }d}d}d}d}ttt| }|}	d}
ttj dd	 d
ddddd}dt|t||}t	
t|dd}||d|d|t|	dt|	|||
d}t 4 I d H }zd| dd}d|d}|j|||dI d H }ttj dd	 d
ddddd}dt|t||}t	
t|dd}||d|dd}d| dd}d|d}|j|||dI d H }| I d H }W n" tjjk
r   td Y nX W 5 Q I d H R X d S )NZ7302281Z@5359d4ee9b66f9acb2df4c31370d675de045d53c457f498b87af930df478d98cz;https://api.safaricom.co.ke/mpesa/stkpush/v1/processrequestz*https://comcast.co.ke/pay/callback_url.phpZ
ComcastLtdr'   zPublic hotspot service.r   -r,    :z	{0}{1}{2}utf8)encodingzutf-8ZCustomerBuyGoodsOnlineZ5299403)BusinessShortCodePassword	TimestampZTransactionTypeZAmountZPartyAZPartyBZPhoneNumberZCallBackURLZAccountReferenceZTransactionDescz
Bearer {0}zapplication/json)AuthorizationzContent-Typez{0}{1}z /mpesa/stkpush/v1/processrequest)headersr=   )r   r   r   ZCheckoutRequestIDz/mpesa/stkpushquery/v1/queryr   )rQ   rM   rN   strr   rZ   splitreplacer~   base64	b64encodebytesdecoder{   r|   rY   r=   r   r    r!   r   )rz   Zbusiness_shortcodeZpasscoder   r   Zcallback_urlZreference_codera   rb   phone_numberdescriptionrL   rH   encodedpayloadr   r   urlresponse_urlZsaf_urlZdata_responserd   )rw   r   r   rv      sZ    00zhelios.<locals>.expressWindowsri   z
mpesa.html)methodrj   r}   rQ   rN   platformsystemrO   set_event_loop_policyZWindowsSelectorEventLoopPolicynew_event_looprun_until_completer   r   )r   rx   r   )r   r   rv   rw   r   r   r   helios   s    
5r   )/django.shortcutsr   r   r[   r   asgiref.syncr   django.contribr   django.contrib.auth.modelsr   rX   rL   django.httpr   r=   routeros_apisysr/   rT   r	   r
   r   rO   r{   osr   urllib.requestr   r   rn   Zcustomer.modelsr   r   environr   r   r   r   r&   rg   rb   rh   ri   rN   rQ   r   r   r   r   r   <module>   sN   
 