曾与蒿藜同雨露,한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.终随松柏到冰霜.かつては雑草やヨモギと共に雨や露を分かち合っていたが、今では松やヒノキと共に霜や雪に耐えている。曾与蒿藜同雨露,Once sharing rain and dew with weeds and wormwood, now enduring frost and snow with pines and cypresses.终随松柏到冰霜.曾与蒿藜同雨露한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.,终随松柏到冰霜.譖セ荳手珍阯懷酔髮ィ髴イ�檎サ磯囂譚セ譟丞芦蜀ー髴�曾与蒿藜同雨露,鏇句笌钂胯棞鍚岄洦闇诧紝缁堥殢鏉炬煆鍒板啺闇�终随松柏到冰霜.曾与蒿藜同雨露,한때 잡초와 쑥과 함께 비와 이슬을 나누던 곳이 이제는 소나무와 삼나무와 함께 서리와 눈을 견뎌내고 있다.终随松柏到冰霜.曾与蒿藜同雨露,终随松柏到冰霜.
#!/usr/bin/python
#
# Copyright CloudLinux Zug GmbH 2010-2015 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENCE.TXT
#
import os
CP_NAME = None
def getCPName():
"""
Detect control panel and return its name
"""
global CP_NAME
if CP_NAME:
return CP_NAME
# cPanel check
if os.path.isfile('/usr/local/cpanel/cpanel'):
CP_NAME = 'cPanel'
# Plesk check
elif os.path.isfile('/usr/local/psa/version'):
CP_NAME = 'Plesk'
# DirectAdmin check
elif os.path.isfile('/usr/local/directadmin/directadmin'):
CP_NAME = 'DirectAdmin'
# ISPmanager v4 or v5 check
elif os.path.isfile('/usr/local/ispmgr/bin/ispmgr') or os.path.isfile('/usr/local/mgr5/sbin/mgrctl'):
CP_NAME = 'ISPManager'
# InterWorx check
elif os.path.isfile('/usr/local/interworx/iworx.ini'):
CP_NAME = 'InterWorx'
# HSphere check
elif os.path.isdir('/hsphere/shared'):
CP_NAME = 'H-Sphere'
elif os.path.isfile('/lib64/libnss_ng.so'):
CP_NAME = 'HostingNG'
# CentOS Web Panel check
elif os.path.isfile('/etc/rc.d/init.d/cwpsrv'):
CP_NAME = 'CentOS_WEB_Panel'
elif os.path.isfile('/etc/httpd/conf.d/atomia-pa-apache.conf') or os.path.isdir('/storage/configuration/cloudlinux'):
CP_NAME = 'Atomia_agent'
else:
CP_NAME = 'Unknown'
return CP_NAME
def add_server_stats(status_report):
"""
Add server statistics to status_report dict
:param status_report: dict to add statistics to
:type status_report: dict
"""
from clcommon import ClPwd
res = {}
cp_name = getCPName()
if cp_name != 'Unknown':
res['cp'] = cp_name
if cp_name == 'Plesk':
clpwd = ClPwd(10000)
else:
clpwd = ClPwd()
d = clpwd.get_uid_dict()
users = 0
sys_users = set(['nfsnobody', 'avahi-autoipd', 'exim', 'clamav', 'varnish', 'nagios', 'saslauth', 'mysql', 'lsadm', 'systemd-bus-proxy',
'systemd-network', 'polkitd', 'firebird', 'nginx', 'dovecot', 'dovenull', 'roundcube_sysuser', 'avahi-autoipd',
'cpanel', 'cpanelhorde', 'cpanelphpmyadmin', 'cpanelphppgadmin', 'cpanelroundcube', 'mailman', 'cpaneleximfilter',
'cpanellogaholic', 'cpanellogin', 'munin', 'cpaneleximscanner', 'cpanelphpgadmin', 'cpses', 'cpanelconnecttrack',
'cpanelrrdtool', 'admin', 'webapps' 'apache', 'diradmin', 'majordomo', 'viapm', 'iworx', 'iworx-web', 'iworx-pma',
'iworx-backup', 'iworx-horde', 'iworx-roundcube', 'iworx-sqmail', 'iworx_support_user', 'psaadm', 'popuser',
'psaftp', 'drweb', 'sw-cp-server', 'horde_sysuser'])
for uid in d:
found = False
for entry in d[uid]:
if entry.pw_name in sys_users:
found = True
break
if not found:
users += 1
res['users'] = users
status_report['cln'] = res