U
    *+bp1  ã                   @   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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ÚFebÚ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$   úP/home/dewhole/projects/demlabs/serial_keys/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r\g }| |¡ | |¡ | |¡ | |¡ | |¡ |}|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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œ¡ q–n´|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œ¡ q`|dd&… }|dd&… }t|ƒt|ƒt|ƒd'œ}zt|d(d)„ dd*}W n   |}Y nX zt|d+d)„ dd*}W n   |}Y nX zt|d,d)„ dd*}W n   |}Y nX ||||d-œ}|j d.¡}|j d/¡}|j d0¡}|d krt|d. dƒ}nB|d krt|d1 dƒ}n(|d kr8t|d2 dƒ}nt|d. dƒ}|j d3¡}|d krh|j d4¡}| |¡}t|ƒ d5|j ji}t|d. ƒ t|d6|d. |d7 |||d8œƒS )9NÚ z/admin/login/?next=/z>/opt/cellframe-node/bin/cellframe-node-cli vpn_cdb serial listT©ÚshellÚstdoutú\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   Z20r8   é	   z//é   é   éýÿÿÿ)Z
all_numberZ
act_numberZ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>)r4   Úreversec                 S   s   t  | d d¡S rE   rF   rH   r$   r$   r%   rJ   ¯   rK   c                 S   s   t  | d d¡S rE   rF   rH   r$   r$   r%   rJ   ³   rK   )Úall_keysÚall_act_keysÚall_not_act_keysÚnumber_keysrM   Zact_keysZ
deact_keysrN   rO   z?pageÚpageÚwhoisz
index.htmlrP   )ZallKeys_listÚnumberÚpage_objrR   Úusername)ÚuserrU   r   ÚstrÚ
subprocessÚrunÚPIPEÚsplitÚappendÚfindÚjsonÚdumpsr&   r"   ÚlenÚsortedÚGETÚgetr
   Úget_pageÚprintr   )ÚselfÚrequestrU   Zstr_cmd_get_keysÚkeysrM   rN   rO   ZbookÚiZserial_numberr#   r8   r5   Zstr_cmd_get_infoZkey_infor6   r7   rP   ÚresultZsee_all_keysZsee_act_keysZsee_not_act_keysÚ	paginatorÚpage_numberrT   rR   r$   r$   r%   rc   8   s´    





 $


d


(
d(,







zSerialKeysViev.getN)Ú__name__Ú
__module__Ú__qualname__rc   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 Tr)   r,   Úalreadyz already deactivatedz successfully deactivatedzdeact_success.html)ÚmessageÚ	prev_pageÚError)rb   ÚMETArc   r]   rW   rX   rY   rZ   r[   r^   r_   r   rS   r   ÚnowÚsaver   r   )rg   ry   ru   rv   Zkey_to_deactivateZstr_cmd_deactivaterx   Zwrite_changer$   r$   r%   Ú
deactivateÙ   s0    

r~   )Zdjango.shortcutsr   ÚrequestsZdjango.contrib.auth.decoratorsr   r^   Údjango.httpr   r   Údjango.views.generic.baser   Údjango.utils.decoratorsr   r   Úosr	   rX   Údjango.core.paginatorr
   r   r   Úmodelsr   r&   r'   r~   r$   r$   r$   r%   Ú<module>   s"   $ $