whoami7 - Manager
:
/
proc
/
self
/
root
/
usr
/
local
/
nexuscore
/
plugin
/
uapi
/
Upload File:
files >> //proc/self/root/usr/local/nexuscore/plugin/uapi/SqlServer.pm
#!/usr/local/cpanel/3rdparty/bin/perl # Package the module. package NexusCore::SqlServer; # Use the strict pragma. (Manners!) use strict; #Make this module inherit from this "groundwork" admin module. #This eliminates a large swath of the boilerplate code that admin #modules used to require! use parent qw( Cpanel::AdminBin::Script::Call ); # Use any additional modules. use Cpanel::Logger (); use Cpanel::PwCache (); #Run the module as a script if (and only if) it is called that way. #This "modulino" approach helps to facilitate testing and code #reusability; for example, you could put some of this class's methods #into a base class, then have 2 or more admin modules inherit #from that base class. __PACKAGE__->run() if !caller; my $logger = Cpanel::Logger->new(); #This special function is a "whitelist" of actions that #a caller may call. Anything not listed here cannot be called. # #By convention, these functions are named #in ALLCAPS_SNAKE_CASE. sub _actions { return qw( CREATEDB LISTDBS COUNTDBS STATSDB LISTUSERSFORDB LISTUSERSFORACCOUNT CREATEDB RENAMEDB REMOVEDB CREATELOGIN REMOVEUSER REMOVELOGIN RENAMELOGIN CREATEUSERFORDB MODIFYUSERACCESS CHECKUSERACCESS RENAMEUSERFORDB CHANGELOGINPASS BACKUP VERIFYBACKUP EXTRACTBACKUP LOGINSESSIONS KILLSESSION REMOVEBACKUP RESTOREDB RESTARTNETCORE VIRTWHAT ); } sub RESTARTNETCORE { my ($self, $accountName, $partition) = @_; return `/usr/local/nexuscore/utils/dotnet_management start_netcore_account "$accountName" "$partition"` } sub VIRTWHAT { return `virt-what` } sub CREATEDB { my ($self, $dbName) = @_; return `/usr/local/nexuscore/utils/sql_server_management add_database $dbName` } sub REMOVEDB { my ($self, $dbName) = @_; return `/usr/local/nexuscore/utils/sql_server_management remove_database $dbName` } sub RENAMEDB { my ($self, $dbName, $newDbName) = @_; return `/usr/local/nexuscore/utils/sql_server_management rename_database $dbName $newDbName` } sub CREATELOGIN { my ($self, $userName, $password) = @_; return `/usr/local/nexuscore/utils/sql_server_management create_login "$userName" $password`; } sub CHANGELOGINPASS { my ($self, $userName, $password) = @_; return `/usr/local/nexuscore/utils/sql_server_management change_login_pass "$userName" $password`; } sub CREATEUSERFORDB { my ($self, $userName, $dbName) = @_; return `/usr/local/nexuscore/utils/sql_server_management add_user_to_db "$userName" "$dbName" `; } sub RENAMEUSERFORDB { my ($self, $userName, $userNameNew, $dbName) = @_; return `/usr/local/nexuscore/utils/sql_server_management rename_user_in_db "$userName" "$userNameNew" "$dbName" `; } sub REMOVELOGIN { my ($self, $userName) = @_; return `/usr/local/nexuscore/utils/sql_server_management remove_login "$userName"` } sub RENAMELOGIN { my ($self, $userName, $usernameNew) = @_; return `/usr/local/nexuscore/utils/sql_server_management rename_login "$userName" "$usernameNew"` } sub REMOVEUSER { my ($self, $userName, $dbName, ) = @_; return `/usr/local/nexuscore/utils/sql_server_management remove_user_from_db "$dbName" "$userName"` } sub MODIFYUSERACCESS { my ($self, $userName, $dbName, $roleName, $isEnabled) = @_; if ($isEnabled == "1") { return `/usr/local/nexuscore/utils/sql_server_management grant_user_role "$dbName" "$userName" "$roleName"` } else { return `/usr/local/nexuscore/utils/sql_server_management deny_user_role "$dbName" "$userName" "$roleName"` } } sub CHECKUSERACCESS { my ($self, $userName, $dbName, $roleName) = @_; return `/usr/local/nexuscore/utils/sql_server_management check_user_role "$dbName" "$userName" "$roleName"` } sub LISTDBS { my ($self, $accountName) = @_; my $databases = _get_all_database_by_prefix($accountName); Cpanel::Logger->new()->warn("databases found: $databases"); return $databases; } sub STATSDB { my ($self, $dbName) = @_; my $stats = `/usr/local/nexuscore/utils/sql_server_management get_size $dbName`; return $stats; } sub COUNTDBS { my ( $self, $accountName ) = @_; my $databases = _get_all_database_by_prefix($accountName); $databases =~ s/\W//g; if ($databases eq "NULL") { return 0; } else { return scalar split(',', $databases) } } sub LISTUSERSFORDB { Cpanel::Logger->new()->warn("Starting LISTUSERSFORDB"); my ($self, $accountName, $dbName) = @_; my $stats = `/usr/local/nexuscore/utils/sql_server_management list_database_usernames $accountName $dbName`; return $stats; } sub LISTUSERSFORACCOUNT { my ($self, $accountName) = @_; my $stats = `/usr/local/nexuscore/utils/sql_server_management list_account_usernames $accountName`; return $stats; } sub BACKUP { my ($self, $accountName, $dbName, $postfix) = @_; my $stats = `/usr/local/nexuscore/utils/sql_server_management backup_database $accountName $dbName $postfix`; return $stats; } sub VERIFYBACKUP { my ($self, $filename) = @_; my $stats = `/usr/local/nexuscore/utils/sql_server_management verify_backup $filename`; return $stats; } sub EXTRACTBACKUP { my ($self, $username, $filename, $type) = @_; my $extractedFile = `/usr/local/nexuscore/utils/sql_server_management extract_backup $username $filename $type`; return $extractedFile; } sub LOGINSESSIONS { my ($self, $username) = @_; my $stats = `/usr/local/nexuscore/utils/sql_server_management get_active_login_sessions $username`; return $stats; } sub KILLSESSION { my ($self, $sessionId) = @_; my $killed = `/usr/local/nexuscore/utils/sql_server_management kill_session $sessionId`; return $killed; } sub REMOVEBACKUP { my ($self, $filename) = @_; my $stats = `/usr/local/nexuscore/utils/sql_server_management remove_backup $filename`; return $stats; } sub RESTOREDB { my ($self, $database, $filename) = @_; my $stats = `/usr/local/nexuscore/utils/sql_server_management restore_database $database $filename`; return $stats; } sub _get_all_database_by_prefix { my ( $accountName ) = @_; return `/usr/local/nexuscore/utils/sql_server_management list_dbs $accountName`; } #This OPTIONAL function will be called before the function invocation. # #The $metadata_hr is a hash reference that contains, as of 11.54, #a "wantarray" key that indicates the calling context: void, scalar, or list. #(cf. perldoc wantarray) # #$args_ar is the array of arguments from the caller. # #NOTE: Both of the foregoing are "live" references. Take extra care #not to modify them! # sub pre_execute_hook { my ($self, $metadata_hr, $args_ar) = @_; my $mod_name = (__PACKAGE__ =~ s<.*::><>r); Cpanel::Logger->new()->warn( sprintf( "User [%s] called the module [%s] with the argument [%s]", $self->get_caller_username(), $self->get_action(), join( q< >, @$args_ar ), ) ); return; #the actual return value(s) is/are ignored } 1;
Copyright ©2021 || Defacer Indonesia