晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/proc/self/root/opt/cloudlinux/venv/lib/python3.11/site-packages/clcagefslib/selector/panel/ |
| Current File : //proc/self/root/opt/cloudlinux/venv/lib/python3.11/site-packages/clcagefslib/selector/panel/da.py |
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2024 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT
import os
import pwd
import secureio
from clcagefslib.const import BASEDIR, ETC_CL_ALT_PATH
from clcagefslib.fs import get_user_prefix
from clcommon import clcaptain, clcagefs
from clcommon.utils import ExternalProgramFailed
from cldetectlib import is_da
PHP_INI_MASK = '/usr/local/directadmin/data/users/%s/php/php.ini'
ALT_PHP_INI_MASK = '/etc/cl.php.d/alt-php%s/alt_php.ini'
# Change user php.ini
# Call from cl-selector
def da_change_user_php_ini(username, version, is_write_log=False):
if not is_da():
return
link_name = ETC_CL_ALT_PATH + '/' + username + '/php/php.ini'
if not clcagefs.in_cagefs():
# userdir = /var/cagefs/[prefix]/[user]/etc
prefix = get_user_prefix(username)
link_name = BASEDIR + '/' + prefix + '/' + username + link_name
# drop permissions if we are running as root
uid = None
gid = None
drop_perm = False
# check if we work under the specified user
user_data = pwd.getpwnam(username)
if os.geteuid() != user_data.pw_uid:
uid = user_data.pw_uid
gid = user_data.pw_gid
drop_perm = True
if drop_perm:
secureio.set_user_perm(uid, gid)
# Create user link/file
create_user_php_ini(username, version, link_name, is_write_log)
if drop_perm:
secureio.set_root_perm()
# Create user php.ini link or file dependently of PHP version
# Works only under user, not root!
def create_user_php_ini(user, php_vers, link_name, is_write_log):
if php_vers == 'native':
# '/usr/local/directadmin/data/users/%s/php/php.ini'
php_ini_path = PHP_INI_MASK % user
if os.path.isfile(php_ini_path):
# user's php.ini present
try:
content = secureio.read_file_secure(php_ini_path, None, None, False, is_write_log)
except (OSError, IOError):
return
if os.path.islink(link_name):
try:
os.unlink(link_name)
except OSError:
pass
try:
clcaptain.write(link_name, ''.join(content))
except (OSError, IOError, ExternalProgramFailed) as e:
secureio.logging("Error: Failed to write file " + link_name + ": " + str(e), secureio.SILENT_FLAG, 1, is_write_log)
else:
# user's php.ini absent, delete link to alt php.ini
try:
os.unlink(link_name)
except OSError:
pass
else:
# create symlink to php.ini for alternative php version
link_to = ALT_PHP_INI_MASK % php_vers.replace(".", "")
# Delete symlink if it points to wrong location, or if it is not symlink (regular file)
if not (os.path.islink(link_name) and os.readlink(link_name) == link_to):
try:
os.unlink(link_name) # delete symlink if previous version differs current
except OSError:
pass
try:
clcaptain.symlink(link_to, link_name)
except (OSError, ExternalProgramFailed) as e:
secureio.logging("Error: Failed to create link " + link_name + ": " + str(e), secureio.SILENT_FLAG, 1, is_write_log)
|