HEX
Server: Apache
System: Linux vps-cdc32557.vps.ovh.ca 5.15.0-156-generic #166-Ubuntu SMP Sat Aug 9 00:02:46 UTC 2025 x86_64
User: hanode (1017)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/share/webmin/htaccess-htpasswd/save_group.cgi
#!/usr/bin/perl
# Create, update or delete a group

require './htaccess-lib.pl';
&ReadParse();
&error_setup($text{'gsave_err'});
@dirs = &list_directories();
($dir) = grep { $_->[0] eq $in{'dir'} } @dirs;
&can_access_dir($dir->[0]) || &error($text{'dir_ecannot'});
&lock_file($dir->[1]);

&switch_user();
$groups = &list_groups($dir->[4]);
if (!$in{'new'}) {
	$group = $groups->[$in{'idx'}];
	$loggroup = $group->{'group'};
	}
else {
	$loggroup = $in{'group'};
	}

if ($in{'delete'}) {
	# Just delete this group
	&delete_group($group);
	}
else {
	# Validate inputs
	$in{'group'} || &error($text{'gsave_egroup1'});
	$in{'group'} =~ /:/ && &error($text{'gsave_egroup2'});
	$in{'group'} =~ /^\S+$/ || &error($text{'gsave_egroup2'});
	if ($in{'new'} || $group->{'group'} ne $in{'group'}) {
		($clash) = grep { $_->{'group'} eq $in{'group'} } @$groups;
		$clash && &error($text{'gsave_eclash'});
		}

	# Actually save
	$group->{'group'} = $in{'group'};
	$group->{'enabled'} = $in{'enabled'};
	$group->{'members'} = [ split(/\s+/, $in{'members'}) ];
	if ($in{'new'}) {
		&create_group($group, $dir->[4]);
		}
	else {
		&modify_group($group);
		}
	}
&switch_back();

&unlock_file($dir->[1]);
&webmin_log($in{'delete'} ? "delete" : $in{'new'} ? "create" : "modify",
	    "group", $loggroup, $group);
&redirect("");