晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /opt/imunify360/venv/lib64/python3.11/site-packages/defence360agent/ |
Upload File : |
"""Helper for integrate sentry in stand-alone scripts"""
import json
import os
import subprocess
from contextlib import suppress
from pathlib import Path
from typing import List
import distro
import sentry_sdk
IMUNIFY360 = "imunify360"
IMUNIFYAV = "imunify-antivirus"
IMUNIFY360_PKG = "imunify360-firewall"
LICENSE = "/var/imunify360/license.json"
LICENSE_FREE = "/var/imunify360/license-free.json"
FREE_ID = "IMUNIFYAV"
UNKNOWN_ID = "UNKNOWN"
SENTRY_DSN_PATH = Path("/opt/imunify360/venv/share/imunify360/sentry")
SENTRY_DSN_DEFAULT = "https://6de77a2763bd40c58fc9e3a89285aaa8@im360.sentry.cloudlinux.com/3?timeout=20" # noqa: E501
def get_sentry_dsn() -> str:
"""Return dsn from the file or the default one."""
try:
return SENTRY_DSN_PATH.read_text(encoding="ascii").strip()
except (OSError, UnicodeDecodeError):
return SENTRY_DSN_DEFAULT
def get_server_id() -> str:
with suppress(Exception):
for filename in [LICENSE, LICENSE_FREE]:
with suppress(FileNotFoundError), open(filename) as file:
return json.load(file)["id"]
return UNKNOWN_ID
def collect_output(cmd: List[str]) -> str:
try:
cp = subprocess.run(
cmd,
stdin=subprocess.DEVNULL,
stdout=subprocess.PIPE,
stderr=subprocess.DEVNULL,
)
except OSError:
return ""
if cp.returncode != 0:
return ""
return os.fsdecode(cp.stdout)
def get_rpm_version(pkg: str) -> str:
cmd = ["rpm", "-q", "--queryformat=%{VERSION}-%{RELEASE}", pkg]
return collect_output(cmd)
def get_dpkg_version(pkg: str) -> str:
cmd = ["dpkg-query", "--showformat=${Version}", "--show", pkg]
return collect_output(cmd)
def get_current_os():
platform_os = distro.linux_distribution()[0]
return platform_os.lower()
def get_package_name():
platform_os = get_current_os()
service_name = IMUNIFY360_PKG
if platform_os != "ubuntu" and get_rpm_version(IMUNIFYAV):
service_name = IMUNIFYAV
else:
service_name = IMUNIFY360
return service_name
def get_service_version(service_name) -> str:
platform_os = get_current_os()
if platform_os != "ubuntu":
version = get_rpm_version(service_name)
else:
version = get_dpkg_version(service_name)
return version
def configure_sentry():
# using LoggingIntegration (contained in default Integrations)
# logging event with *error* level will be reported to Sentry automatically
sentry_sdk.init(dsn=get_sentry_dsn())
with sentry_sdk.configure_scope() as scope:
package = get_package_name()
scope.user = {"id": get_server_id()}
scope.set_tag("name", package)
scope.set_tag("version", get_service_version(package))