U
    S_T                     @   s0  d dl mZ ddlZddlZddlZddlmZmZmZmZm	Z	m
Z
 ddlZddlmZ ddlZddlZedZdZdd	 Zd
die_ejedgdZe	 Zdejd< eddd Zejddddd Zdd Zededdd Zeddd Zed d!d" Z ejd#d$d%d&d$ Z!dS )'   )logutil    N)Jinja2Templatejinja2_viewstatic_fileresponseBottlerequest)wsgiZtsmonz/tmp/ts-squery.sockc                  C   sB   zt jdtdd} W n t jk
r.   g  Y S X t| jdS )N-UstatusZ_inutf-8)shncQUERY_SOCKETZErrorReturnCodejsonloadsstdoutdecode)result r   /opt/wsgi/tsmon/tsmon.py	get_stati   s
    
r   Z
autoescapeTZ	templates)Ztemplate_lookupZTEMPLATES_AUTO_RELOADafter_requestc                   C   s"   dt jd< dt jd< dt jd< dS )z
    You need to add some headers to each request.
    Don't use the wildcard '*' for Access-Control-Allow-Origin in production.
    *zAccess-Control-Allow-OriginzPUT, GET, POST, DELETE, OPTIONSzAccess-Control-Allow-Methodsz<Origin, Accept, Content-Type, X-Requested-With, X-CSRF-TokenzAccess-Control-Allow-HeadersN)r   headersr   r   r   r   enable_cors   s    

r   z/pokePOST)methodc                  C   s*   t j d} tjdtd|  d d S )Nr   r   zpoke r   )r	   bodyreadr   r   r   r   )clidr   r   r   poke'   s    r#   c               	      s   t d} g }t| 6}|D ]*}|d}||d  d|d   qW 5 Q R X t }d  fdd|D }||d d d	 fS )
Nz/opt/teamspeak|r       )r"   client_nicknameZclient_idle_timeZclient_output_mutedZclient_input_mutedc                    s*   g | ]" d  d kr fddD qS )Zserveradminr'   c                    s   g | ]} |  d dqS )z\sr%   )replace).0keyr   r   r   
<listcomp>6   s     z*get_ts_data.<locals>.<listcomp>.<listcomp>r   )r)   keysr+   r   r,   6   s      zget_ts_data.<locals>.<listcomp>)r   Zfind_last_logopensplitappendr   )logfile
log_editedflinepartsZstationline_datar   r-   r   get_ts_data,   s    


(r9   /z
index.htmlc                  C   s   t  \} }| |dS )N)Z	user_dataZfull_log)r9   )r8   r4   r   r   r   online:   s    
r;   z/json_with_logc                  C   sL   t  \} }| r(tdd | D  \}}}ng g g   }}}t||||dS )Nc                 S   s*   g | ]"}|d  |d dk|d dkfqS r      1r&   r   r)   dr   r   r   r,   E   s     zjsonline2.<locals>.<listcomp>)peopleinput_mutedoutput_mutedlogr9   zipr   dumpsr8   r4   Zonline_usersZ	out_mutedZin_mutedr   r   r   	jsonline2A   s
    
rI   z/jsonc                  C   sJ   t  \} }| r(tdd | D  \}}}ng g g   }}}t|||dS )Nc                 S   s*   g | ]"}|d  |d dk|d dkfqS r<   r   r?   r   r   r   r,   O   s     zjsonline.<locals>.<listcomp>)rA   rB   rC   rE   rH   r   r   r   jsonlineK   s
    
rJ   z/static/:path#.+#static)namec                 C   s   t | ddS )NrK   )root)r   )pathr   r   r   rK   T   s    )" r   r   Zbottleloggingr   r   r   r   r   r	   	functoolscherootr
   osr   Loggerloggerr   r   settingspartialviewappconfighookr   router#   r9   r;   rI   rJ   rK   r   r   r   r   <module>   s:    



	

	
