B
    <ÚübxT  ã               @   sÐ   d dl mZ d dl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	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mZmZ ddlmZ dd„ ZG dd„ de
ƒZdd„ Zdd„ ZdS )é    )ÚrenderN)Úpermission_required)ÚHttpResponse)r   Úredirect)ÚView)Úmethod_decorator)Údatetime)Úsystem)Ú	PaginatorÚPageNotAnIntegerÚ	EmptyPageé   )Ú
SerialKeysc             C   sÞ  | dd… dkr |   dd¡} nº| dd… dkr@|   dd¡} nš| dd… dkr`|   dd¡} nz| dd… d	kr€|   d	d
¡} nZ| dd… dkr |   dd¡} n:| dd… dkrÀ|   dd¡} n| dd… dkrÞ|   dd¡} nü| dd… dkrü|   dd¡} nÞ| dd… dkr|   dd¡} n¾| dd… dkr<|   dd¡} nž| dd… dkr\|   dd¡} n~| dd… dkr||   dd¡} n^| dd… dkrœ|   dd¡} n>| dd… dkr¼|   dd¡} n| dd… dkrÚ|   dd¡} | S )Né   é   ÚJanÚ01ÚFebZ02ÚMarZ03ÚAprZ04ÚMayZ05ÚJuneZ06ÚJunÚJulyZ07ÚJulÚAugZ08ZSeptZ09ÚSepÚOctÚ10ÚNovZ11ÚDecZ12)Úreplace)Údate_act© r#   ú3/var/www/html/serial_key_admin/serial_keys/views.pyÚDateToNumber   s>    r%   c               @   s   e Zd Zdd„ ZdS )ÚSerialKeysVievc          
   C   sÆ  |j j}|dkr|}ntdƒS d}ttj|dtjdƒ d¡}g }g }g }d|d krbg }| |¡ | |¡ | |¡ | |¡ | |¡ |}xŽ|D ]¾}	t|	ƒ}	|	|	 	d	¡d
 |	 	d	¡d … }
d}d}|	|	 	d	¡d d
 |	 	d¡d
 … }d|
 }tj|dtjd}t|ƒ d¡}t
 |¡}|| 	d¡d | 	d¡… }|| 	d¡d | 	d¡… }|dkr€| |
|||||dœ¡ |dkrB|| 	d¡d | 	d¡… }t|dd…  dd¡ƒd |dd…  d d… d  t|dd…  dd¡ƒd |dd…  dd …  }|| 	d!¡d" | 	d#¡… }d}| |
|||||dœ¡ | |
|||||dœ¡ qšW nÂx¾|d$d%… D ]¬}	d}d}d|	d d&…  }tj|dtjd}t|ƒ d¡}t
 |¡}|| 	d¡d | 	d¡… }|| 	d¡d | 	d¡… }|dkr$| |	d d&… |	d'd … ||||dœ¡ |dkrö|| 	d¡d | 	d¡… }t|dd…  dd¡ƒd |dd…  d d… d  t|dd…  dd¡ƒd |dd…  dd …  }|| 	d!¡d" | 	d#¡… }d}| |	d d&… |	d'd … ||||dœ¡ | |	d d&… |	d'd … ||||dœ¡ qrW |dd(… }|dd(… }t|ƒt|ƒt|ƒd)œ}yt|d*d+„ dd,}W n   |}Y nX yt|d-d+„ dd,}W n   |}Y nX yt|d.d+„ dd,}W n   |}Y nX ||||d/œ}|j d0¡}|j d1¡}|j d2¡}|d krt|d0 dƒ}nB|d kr2t|d3 dƒ}n(|d krLt|d4 dƒ}nt|d0 dƒ}|j d5¡}|d kr||j d6¡}| |¡}t|ƒ d7|j ji}t|d0 ƒ t|d8|d0 |d9 |||d:œƒS );NÚ z/admin/login/?next=/z>/opt/cellframe-node/bin/cellframe-node-cli vpn_cdb serial listT)ÚshellÚstdoutz\nztotal 1r   zkey:é   é   znot activatedé   ÚtotalzG/opt/cellframe-node/bin/cellframe-node-cli vpn_cdb serial info -serial z"license lengthé   ú\zstdout=b'serialé$   z",)ÚkeyÚactiveÚlicense_lenthÚactivater"   ÚexpiredÚ	activatedé
   ú+é   é   ú Ú.é   r   Ú20r5   é	   z//r   éd   é   é   éýÿÿÿ)Ú
all_numberÚ
act_numberÚnot_act_numberc             S   s   t  | d d¡S )Nr"   z%d.%m.%Y %H:%M:%S)r   Ústrptime)Úxr#   r#   r$   Ú<lambda>«   ó    z$SerialKeysViev.get.<locals>.<lambda>)r1   Úreversec             S   s   t  | d d¡S )Nr"   z%d.%m.%Y %H:%M:%S)r   rG   )rH   r#   r#   r$   rI   ¯   rJ   c             S   s   t  | d d¡S )Nr"   z%d.%m.%Y %H:%M:%S)r   rG   )rH   r#   r#   r$   rI   ³   rJ   )Úall_keysÚall_act_keysÚall_not_act_keysÚnumber_keysrL   Úact_keysÚ
deact_keysrM   rN   z?pageÚpageÚwhoisz
index.htmlrO   )ÚallKeys_listÚnumberÚpage_objrS   Úusername)ÚuserrW   r   ÚstrÚ
subprocessÚrunÚPIPEÚsplitÚappendÚfindÚjsonÚdumpsr%   r!   ÚlenÚsortedÚGETÚgetr
   Úget_pageÚprintr   )ÚselfÚrequestrW   Ústr_cmd_get_keysÚkeysrL   rM   rN   ÚbookÚiÚserial_numberr"   r5   r2   Ústr_cmd_get_infoÚkey_infor3   r4   rO   ÚresultÚsee_all_keysÚsee_act_keysÚsee_not_act_keysÚ	paginatorÚpage_numberrV   rS   r#   r#   r$   re   8   s´    




 $


d 

(
d(.







zSerialKeysViev.getN)Ú__name__Ú
__module__Ú__qualname__re   r#   r#   r#   r$   r&   6   s   r&   c             C   s.  d| j kr"| j d¡}d|krT|| d¡d | d¡… }|| d¡d d … }n&|| d¡d d … }|dkrvd}d}||d	œ}t| j d ƒ}d
t|ƒ }tj|dtjd}t|ƒ d¡}t	 
|¡}d|krà| j d d }n| j d d }tƒ }||_tt ¡ ƒ|_| ¡  t| d||dœƒS tdƒS d S )NÚqÚHTTP_REFERERú&ú?r   r   ú/r'   )Úparam1Úparam2z1cellframe-node-cli vpn_cdb serial delete -serial T)r(   r)   z\nÚalreadyz already deactivatedz successfully deactivatedzdeact_success.html)ÚmessageÚ	prev_pageÚError)rd   ÚMETAre   r_   rY   rZ   r[   r\   r]   r`   ra   r   rU   r   ÚnowÚsaver   r   )ri   rƒ   r   r€   Zkey_to_deactivateZstr_cmd_deactivater‚   Zwrite_changer#   r#   r$   Ú
deactivateÙ   s0    

rˆ   c             C   s   dd„ }d S )Nc          
   S   sÆ  |j j}|dkr|}ntdƒS d}ttj|dtjdƒ d¡}g }g }g }d|d krbg }| |¡ | |¡ | |¡ | |¡ | |¡ |}xŽ|D ]¾}	t|	ƒ}	|	|	 	d	¡d
 |	 	d	¡d … }
d}d}|	|	 	d	¡d d
 |	 	d¡d
 … }d|
 }tj|dtjd}t|ƒ d¡}t
 |¡}|| 	d¡d | 	d¡… }|| 	d¡d | 	d¡… }|dkr€| |
|||||dœ¡ |dkrB|| 	d¡d | 	d¡… }t|dd…  dd¡ƒd |dd…  d d… d  t|dd…  dd¡ƒd |dd…  dd …  }|| 	d!¡d" | 	d#¡… }d}| |
|||||dœ¡ | |
|||||dœ¡ qšW nÂx¾|d$d%… D ]¬}	d}d}d|	d d&…  }tj|dtjd}t|ƒ d¡}t
 |¡}|| 	d¡d | 	d¡… }|| 	d¡d | 	d¡… }|dkr$| |	d d&… |	d'd … ||||dœ¡ |dkrö|| 	d¡d | 	d¡… }t|dd…  dd¡ƒd |dd…  d d… d  t|dd…  dd¡ƒd |dd…  dd …  }|| 	d!¡d" | 	d#¡… }d}| |	d d&… |	d'd … ||||dœ¡ | |	d d&… |	d'd … ||||dœ¡ qrW |dd(… }|dd(… }t|ƒt|ƒt|ƒd)œ}yt|d*d+„ dd,}W n   |}Y nX yt|d-d+„ dd,}W n   |}Y nX yt|d.d+„ dd,}W n   |}Y nX ||||d/œ}|j d0¡}|j d1¡}|j d2¡}|d krt|d0 dƒ}nB|d kr2t|d3 dƒ}n(|d krLt|d4 dƒ}nt|d0 dƒ}|j d5¡}|d kr||j d6¡}| |¡}t|ƒ d7|j ji}t|d0 ƒ t|d8|d0 |d9 |||d:œƒS );Nr'   z/admin/login/?next=/z>/opt/cellframe-node/bin/cellframe-node-cli vpn_cdb serial listT)r(   r)   z\nztotal 1r   zkey:r*   r+   znot activatedr,   r-   zG/opt/cellframe-node/bin/cellframe-node-cli vpn_cdb serial info -serial z"license lengthr.   r/   zstdout=b'serialr0   z",)r1   r2   r3   r4   r"   r5   r6   r7   r8   r9   r:   r;   r<   r=   r   r>   r5   r?   z//r   r@   rA   rB   rC   )rD   rE   rF   c             S   s   t  | d d¡S )Nr"   z%d.%m.%Y %H:%M:%S)r   rG   )rH   r#   r#   r$   rI   v  rJ   z'testView.<locals>.get.<locals>.<lambda>)r1   rK   c             S   s   t  | d d¡S )Nr"   z%d.%m.%Y %H:%M:%S)r   rG   )rH   r#   r#   r$   rI   z  rJ   c             S   s   t  | d d¡S )Nr"   z%d.%m.%Y %H:%M:%S)r   rG   )rH   r#   r#   r$   rI   ~  rJ   )rL   rM   rN   rO   rL   rP   rQ   rM   rN   z?pagerR   rS   z
index.htmlrO   )rT   rU   rV   rS   rW   )rX   rW   r   rY   rZ   r[   r\   r]   r^   r_   r`   ra   r%   r!   rb   rc   rd   re   r
   rf   rg   r   )rh   ri   rW   rj   rk   rL   rM   rN   rl   rm   rn   r"   r5   r2   ro   rp   r3   r4   rO   rq   rr   rs   rt   ru   rv   rV   rS   r#   r#   r$   re     s´    




 $


d 

(
d(.







ztestView.<locals>.getr#   )rh   ri   re   r#   r#   r$   ÚtestView  s    r‰   )Zdjango.shortcutsr   ÚrequestsZdjango.contrib.auth.decoratorsr   r`   Údjango.httpr   r   Údjango.views.generic.baser   Údjango.utils.decoratorsr   r   Úosr	   rZ   Údjango.core.paginatorr
   r   r   Úmodelsr   r%   r&   rˆ   r‰   r#   r#   r#   r$   Ú<module>   s$   $ $)