[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: dbsaver.py
File is not writable. Editing disabled.
# coding=utf-8 # # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT from __future__ import absolute_import import logging from lvestats.core.plugin import LveStatsPlugin from lvestats.orm import user as user_class from sqlalchemy import insert, select from lvestats.lib.commons.func import get_chunks from lvestats.orm.history import history from lvestats.orm.servers import servers from sqlalchemy.orm import sessionmaker from lvestats.lib.commons.func import reboot_lock class DBSaver(LveStatsPlugin): def __init__(self): self.log = logging.getLogger('plugin.DBSaver') self.now = 0 # This changes in MainLoop self.config = None self.period = 60 self.server_id = 'localhost' def set_config(self, config): self.period = int(config.get('db_timeout', self.period)) self.server_id = config.get('server_id', self.server_id) def execute(self, lve_data): sql_insert_query = insert(history) sql_select_servers = select([servers]).where(servers.server_id == self.server_id) sql_insert_servers = insert(servers) sql_update_servers = servers.__table__.update().where(servers.server_id == self.server_id) with reboot_lock(): conn = self.engine.connect() tx = conn.begin() try: row = conn.execute(sql_select_servers) if row.returns_rows: res = row.fetchone() if res is not None: if res['lve_version'] != lve_data['LVE_VERSION']: conn.execute(sql_update_servers.values({'lve_version': lve_data['LVE_VERSION']})) else: conn.execute( sql_insert_servers, server_id=self.server_id, lve_version=lve_data['LVE_VERSION']) else: conn.execute( sql_insert_servers, server_id=self.server_id, lve_version=lve_data['LVE_VERSION']) sql_insert_list = [] for lve_id, v in lve_data.get('lve_usage', {}).items(): sql_insert_list.append(dict( id=lve_id, cpu=int(round(v.cpu_usage)), # pylint: disable=round-builtin cpu_limit=v.lcpu, cpu_fault=v.cpu_fault, mep=v.mep, mep_limit=v.lep, io=int(round(v.io_usage)), # pylint: disable=round-builtin io_limit=v.io, mem=int(round(v.mem_usage)), # pylint: disable=round-builtin mem_limit=v.lmem, mem_fault=v.mem_fault, mep_fault=v.mep_fault, created=int(round(self.now)), # pylint: disable=round-builtin server_id=self.server_id, lmemphy=v.lmemphy, memphy=int(round(v.memphy)), # pylint: disable=round-builtin memphy_fault=v.memphy_fault, lnproc=v.lnproc, nproc=int(round(v.nproc)), # pylint: disable=round-builtin nproc_fault=v.nproc_fault, io_fault=v.io_fault, iops_fault=v.iops_fault, liops=v.liops, iops=int(round(v.iops)))) # pylint: disable=round-builtin for chunk in get_chunks(sql_insert_list): conn.execute(sql_insert_query, chunk) tx.commit() except: tx.rollback() raise finally: conn.close() class DbUsernamesSaver(LveStatsPlugin): def __init__(self): self.period = 60*60 # once an hour self.engine = None self.enabled = True def set_config(self, config): self.enabled = config.get('collect_usernames', 'false').lower() == 'true' def set_db_engine(self, engine): self.engine = engine def execute(self, lve_data): if self.enabled: session = sessionmaker(bind=self.engine)() for user_info in lve_data['users']: user = user_class() user.uid, user.user_name, user.server_id = user_info try: session.merge(user) session.flush() except: # workaround for sqlalchemy could not deal with complex key on detecting duplicates when merge session.rollback() session.commit() session.close()
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server05.hostinghome.co.in
Server IP: 192.168.74.40
PHP Version: 7.4.33
Server Software: Apache
System: Linux server05.hostinghome.co.in 3.10.0-962.3.2.lve1.5.81.el7.x86_64 #1 SMP Wed May 31 10:36:47 UTC 2023 x86_64
HDD Total: 1.95 TB
HDD Free: 785.46 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Disabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: itsweb
User ID (UID): 1619
Group ID (GID): 1621
Script Owner UID: 1619
Current Dir Owner: N/A