HEX
Server: LiteSpeed
System: Linux baran.dnsprotection.me 4.18.0-553.83.1.lve.el8.x86_64 #1 SMP Wed Nov 12 10:04:12 UTC 2025 x86_64
User: ddir12 (3618)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/glances/outputs/__pycache__/glances_curses_browser.cpython-36.pyc
3

Eo�cs1�@sLdZddlZddlZddlmZddlmZddlmZGdd�de�Z	dS)z Curses browser interface class .�N)�_GlancesCurses)�logger)�Timercs�eZdZdZd#�fdd�	Zedd��Zejdd��Zedd	��Zejd
d	��Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zd$dd�Zdd �Zd%d!d"�Z�ZS)&�GlancesCursesBrowserz+Class for the Glances curse client browser.Ncsztt|�j|d�|j|j|j|j|jd�}|jj|�d|_	|j
|_d|_d|_
d|_d|_d|_d|_d|_d|_dS)zInit the father class.)�args)�UNKNOWN�SNMP�ONLINE�OFFLINE�	PROTECTEDTrNF)�superr�__init__Zno_colorZdefault_color2ZifCRITICAL_color2ZifWARNING_color2�colors_list�update�
first_scanZtime�#_GlancesCursesBrowser__refresh_time�cursor_position�_active_server�
_current_page�	_page_max�_page_max_lines�is_end�_revesed_sorting�_stats_list)�selfrZ_colors_list)�	__class__��,/usr/lib/python3.6/glances_curses_browser.pyr
s"
zGlancesCursesBrowser.__init__cCs|jS)z:Return the active server or None if it's the browser list.)r)rrrr�
active_server9sz"GlancesCursesBrowser.active_servercCs
||_dS)z4Set the active server or None if no server selected.N)r)r�indexrrrr>scCs|jS)zGet the cursor position.)r)rrrr�cursorCszGlancesCursesBrowser.cursorcCs
||_dS)zSet the cursor position.N)r)rZpositionrrrr HscCs*|j|jdkr t|�|j}n|j}|S)N�)rr�lenr)r�statsZ
page_linesrrr�
get_pagelinesMsz"GlancesCursesBrowser.get_pagelinescCsdi}x(|D] }|d}|j|d�d||<q
Wd}x,|j�D] }||dt||�d7}q<W|S)N�statusrr!�z: � )�get�keys�str)rr#Zcounts�itemZcolor�result�keyrrr�_get_status_countTs
 z&GlancesCursesBrowser._get_status_countcCs2d}|jdk	r*|j}|j|jdd�d�n|}|S)NcSsdddddd�j|dd�S)	Nrr!���)rr
rrr	r%�c)r()�xrrr�<lambda>fsz1GlancesCursesBrowser._get_stats.<locals>.<lambda>)�reverser-)r�sortr)rr#�
stats_listrrr�
_get_stats`s
zGlancesCursesBrowser._get_statscCsld|jdkr|jd8_nJ|jddkrN|jd|_t|�d|j|_n|jd8_|jd|_dS)z+Set the cursor to position N-1 in the list.rr!N)rrrr"r)rr#rrr�	cursor_upmszGlancesCursesBrowser.cursor_upcCsT|jd|j|�kr$|jd7_n,|jd|jkrD|jd7_nd|_d|_dS)z+Set the cursor to position N-1 in the list.r!rN)rr$rr)rr#rrr�cursor_downysz GlancesCursesBrowser.cursor_downcCs4|jddkr|jd|_n|jd8_d|_dS)zSet prev page.r!rN)rrr)rr#rrr�
cursor_pageup�sz"GlancesCursesBrowser.cursor_pageupcCs0|jd|jkr |jd7_nd|_d|_dS)zSet next page.r!rN)rrr)rr#rrr�cursor_pagedown�sz$GlancesCursesBrowser.cursor_pagedowncCs|j|j�|_d}|jdkr,tjd|j�|jtd�ksH|jtd�krd|j�tjd�d|_�n�|jdkr�|j	|j
|j|_tjd	j
|jt|����nN|jtjks�|jd
kr�|j|�tjd	j
|jdt|����n|jtjks�|jdk�r|j|�tjd	j
|jdt|���n�|jtjk�rR|j|�tjdj
|j	d|j��n�|jtjk�r�|j|�tjd
j
|j	d|j��nf|jtd�k�r�d|_d}nJ|jtd�k�r�d|_|j�|_d}n$|jtd�k�r�d|_|j�|_d}|�rd|_	d|_|j|�|jS)NFr!zKey pressed. Code=%s��qzStop Glances client browserT�
zServer {}/{} selected�A�BzPageUP: Server ({}/{}) pages.zPageDown: Server {}/{} pages�1�2�3r���)Zget_key�term_window�
pressedkeyr�debug�ord�end�inforrrrr�formatr"�cursesZKEY_UPr9r ZKEY_DOWNr:Z	KEY_PPAGEr;rZ	KEY_NPAGEr<rr�copy�flush)rr#ZrefreshrrrZ__catch_key�sN




 





z GlancesCursesBrowser.__catch_keyr0FcCs�tjdj|��|j|�d}t|j�}x^|j�r�|r�|j|�}|td�kpb|td�kpb|dk}|r||dkr||j|�|j	�q*W|j
S)z�Update the servers' list screen.

        Wait for __refresh_time sec / catch key every 100 ms.

        :param stats: Dict of dict with servers stats
        :param cs_status:
        :param duration:
        :param return_to_browser:
        zServers list: {}Fr=r>r?r!rE)rrHrLrOrrZfinished� _GlancesCursesBrowser__catch_keyrI�waitr)rr#Zduration�	cs_statusZreturn_to_browserZexitkeyZ	countdownrGrrrr�s


 
zGlancesCursesBrowser.updatecCs|j�|j|�dS)z`Update the servers' list screen.

        :param stats: List of dict with servers stats
        N)Zerase�display)rr#rrrrO�szGlancesCursesBrowser.flushcCs"|j�|jj�d}|jj�d}|d}t|�}||_ttj||��|_d}d}|dkr�|j	rz|j
jrzd}	d|_	q�d}	nt|�dkr�d}	n
dj|�}	|j
jr�|	d	7}	|dkr�|j
j|||	|||jd
�dj|j|��}	|j
j|d||	||�||k�rN|dk�rNd
j|j|�|jd|j|j|��}	|j
j|d||	||�|dk�r\dSdddgdddgdddgdddgdddgdddgddd gd!d"dgg}
d}|d}xlt|
�D]`\}}
||k�r�||k�r�|
ddk	�r�|j
j|||
d|||jd#�||
d|j7}�q�W|d7}|jt|�dk�rDt|�d|_|j|�}|j|j}||j|�}|||�}d}�x�|D�]�}||k�r��q�i}x�|
D]�}
y||
d||
d<WnFtk
�r}z(tjd$j|
d|��d%||
d<WYdd}~XnXy4|
ddk�r4||
ddk	�r4||
d|d<Wntk
�rLYnX�q�Wd}|}||jk�r�|j
j||d&|||jd#�|d7}xx|
D]p}
||k�r�||k�r�|
ddk	�r�|j
j||t||
d�|
d|j|d�||
d|j7}|d7}�q�W|d7}|d7}�q�Wd'S)(z{Display the servers list.

        :return: True if the stats have been displayed else False (no server available)
        r!rr0z0Glances is scanning your network. Please wait...FzNo Glances server availablezOne Glances server availablez{} Glances servers availablez (auto discover is disabled)ZTITLEz{}r/z{} servers displayed.({}/{}) {}�name�Name��aliasNZ	load_min5ZLOAD�Zcpu_percentzCPU%�Zmem_percentzMEM%r%ZSTATUS�	ZipZIP�Zhr_nameZOSZBOLDz/Cannot grab stats {} from server (KeyError: {})�?�>T)Zinit_line_columnZscreenZgetmaxyxr"r�int�mathZceilrrrZdisable_autodiscoverrLrFZaddnstrrr.r$r�	enumerateZspace_between_columnr r8�KeyErrorrrH)rr#rRZscreen_xZscreen_yZ	stats_maxZ	stats_lenr3�y�msgZ
column_defZxcZcpt�cr7Z
start_lineZend_lineZcurrent_page�line�vZserver_stat�errrrS�s�
 
""


 
".zGlancesCursesBrowser.display)N)r0NF)N)�__name__�
__module__�__qualname__�__doc__r
�propertyr�setterr r$r.r8r9r:r;r<rPrrOrS�
__classcell__rr)rrrs""
6
r)
rkr_rMZglances.outputs.glances_cursesrZglances.loggerrZ
glances.timerrrrrrr�<module>
s