403Webshell
Server IP : 104.21.25.180  /  Your IP : 104.23.197.123
Web Server : Apache/2.4.37
System : Linux almalinux.duckdns.org 4.18.0-553.111.1.el8_10.x86_64 #1 SMP Sun Mar 8 20:06:07 EDT 2026 x86_64
User : ricodeal ( 1046)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/libexec/webmin/virtualmin-sqlite/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/libexec/webmin/virtualmin-sqlite/virtual_feature.pl
# Defines functions for this feature
use strict;
use warnings;
our (%text);
our $module_name;

do 'virtualmin-sqlite-lib.pl';

# feature_name()
# Returns a short name for this feature
sub feature_name
{
return $text{'feat_name'};
}

# feature_losing(&domain)
# Returns a description of what will be deleted when this feature is removed
sub feature_losing
{
return $text{'feat_losing'};
}

# feature_label(in-edit-form)
# Returns the name of this feature, as displayed on the domain creation and
# editing form
sub feature_label
{
my ($edit) = @_;
return $edit ? $text{'feat_label2'} : $text{'feat_label'};
}

# feature_check()
# Returns undef if all the needed programs for this feature are installed,
# or an error message if not
sub feature_check
{
return &get_sqlite_command() ? undef : &text('feat_echeck', "<tt>sqlite</tt>");
}

# feature_depends(&domain)
# Returns undef if all pre-requisite features for this domain are enabled,
# or an error message if not
sub feature_depends
{
return !$_[0]->{'unix'} && !$_[0]->{'parent'} ? $text{'feat_eunix'} :
       !$_[0]->{'dir'} ? $text{'feat_edir'} : undef;
}

# feature_clash(&domain)
# Returns undef if there is no clash for this domain for this feature, or
# an error message if so
sub feature_clash
{
return undef;
}

# feature_suitable([&parentdom], [&aliasdom], [&subdom])
# Returns 1 if some feature can be used with the specified alias and
# parent domains
sub feature_suitable
{
return !$_[1] && !$_[2];
}

# feature_setup(&domain)
# Called when this feature is added, with the domain object as a parameter
sub feature_setup
{
# Nothing to do ..
}

# feature_modify(&domain, &olddomain)
# Called when a domain with this feature is modified
sub feature_modify
{
# Nothing to do ..
}

# feature_delete(&domain)
# Called when this feature is disabled, or when the domain is being deleted
sub feature_delete
{
# Nothing to do ..
}

# feature_webmin(&main-domain, &all-domains)
# Returns a list of webmin module names and ACL hash references to be set for
# the Webmin user when this feature is enabled
sub feature_webmin
{
my @doms = grep { $_->{$module_name} }  @{$_[1]};
if (@doms) {
	return ( [ $module_name,
		   { 'dir' => join("\t", map { $_->{'home'} } @doms),
		     'user' => $_[0]->{'user'} } ] );
	}
else {
	return ( );
	}
}

# database_name()
# Returns the name for this type of database
sub database_name
{
return $text{'db_name'};
}

# database_list(&domain)
# Returns a list of databases owned by a domain, according to this plugin
sub database_list
{
my @rv;
foreach my $db (split(/\s+/, $_[0]->{'db_'.$module_name})) {
	push(@rv, { 'name' => $db,
		    'type' => $module_name,
		    'desc' => &database_name(),
		    'link' => "/$module_name/index.cgi?db=".
				&urlize("$_[0]->{'home'}/$db.sqlite") });
	}
return @rv;
}

# databases_all([&domain])
# Returns a list of all databases on the system, possibly limited to those
# associated with some domain
sub databases_all
{
if ($_[0]) {
	return &databases_in_dir($_[0]->{'home'});
	}
else {
	return ( );
	}
}

# database_clash(&domain, name)
# Returns 1 if the named database already exists
sub database_clash
{
return -r "$_[0]->{'home'}/$_[1].sqlite";
}

# database_create(&domain, dbname)
# Creates a new database for some domain. May call the *print functions to
# report progress
sub database_create
{
my $file = "$_[0]->{'home'}/$_[1].sqlite";
&$virtual_server::first_print(&text('db_creating', "<tt>$file</tt>"));
my $sqlite = &get_sqlite_command();
my $cmd = &command_as_user($_[0]->{'user'}, 0,
			      "echo .tables | $sqlite ".quotemeta($file));
my $out = &backquote_logged("$cmd 2>&1 </dev/null");
if ($?) {
	&$virtual_server::second_print(&text('db_failed', "<tt>$out</tt>"));
	}
else {
	my @dbs = split(/\s+/, $_[0]->{'db_'.$module_name});
	push(@dbs, $_[1]);
	$_[0]->{'db_'.$module_name} = join(" ", @dbs);
	&$virtual_server::second_print($virtual_server::text{'setup_done'});
	}
}

# database_delete(&domain, dbname)
# Creates an existing database for some domain. May call the *print functions to
# report progress
sub database_delete
{
my $file = "$_[0]->{'home'}/$_[1].sqlite";
&$virtual_server::first_print(&text('db_deleting', "<tt>$file</tt>"));
unlink($file);
my @dbs = split(/\s+/, $_[0]->{'db_'.$module_name});
@dbs = grep { $_ ne $_[1] } @dbs;
$_[0]->{'db_'.$module_name} = join(" ", @dbs);
&$virtual_server::second_print($virtual_server::text{'setup_done'});
}

# database_size(&domain, dbname)
# Returns the on-disk size and number of tables in a database
sub database_size
{
my $file = "$_[0]->{'home'}/$_[1].sqlite";
my @st = stat($file);
my $sqlite = &get_sqlite_command();
my $cmd = &command_as_user($_[0]->{'user'}, 0,
			      "echo .tables | $sqlite ".quotemeta($file));
no strict "subs";
&open_execute_command(OUT, $cmd, 1);
use strict "subs";
my $tables;
while(<OUT>) {
	s/\r|\n//g;
	$tables++ if (/^\S+$/);
	}
close(OUT);
return ($st[7], $tables);
}

1;

Youez - 2016 - github.com/yon3zu
LinuXploit