|
Server : Apache/2.2.2 (Fedora) System : Linux App1.pathumtani.go.th 2.6.20-1.2320.fc5smp #1 SMP Tue Jun 12 19:40:16 EDT 2007 i686 User : apache ( 48) PHP Version : 5.2.9 Disable Function : NONE Directory : /proc/self/root/proc/self/root/usr/libexec/webmin/pptp-server/ |
Upload File : |
# secrets-lib.pl
# Common functions for editing a PPP users file
# list_secrets()
sub list_secrets
{
local(@rv, $line, $_);
open(SEC, $config{'pap_file'});
$line = 0;
while(<SEC>) {
chop;
s/^#.*$//g;
@w = &split_words($_);
if (@w >= 3) {
local(%sec, @ips);
$sec{'client'} = $w[0];
$sec{'server'} = $w[1];
$sec{'secret'} = $w[2];
@ips = @w[3..$#w];
$sec{'ips'} = \@ips;
$sec{'line'} = $line;
$sec{'index'} = scalar(@rv);
push(@rv, \%sec);
}
$line++;
}
close(SEC);
return @rv;
}
# create_secret(&secret)
sub create_secret
{
&open_tempfile(SEC, ">>$config{'pap_file'}");
&print_tempfile(SEC, &join_words($_[0]->{'client'}, $_[0]->{'server'},
$_[0]->{'secret'}, @{$_[0]->{'ips'}}),"\n");
&close_tempfile(SEC);
}
# change_secret(&secret)
sub change_secret
{
&replace_file_line($config{'pap_file'}, $_[0]->{'line'},
&join_words($_[0]->{'client'}, $_[0]->{'server'},
$_[0]->{'secret'}, @{$_[0]->{'ips'}})."\n");
}
# delete_secret(&secret)
sub delete_secret
{
&replace_file_line($config{'pap_file'}, $_[0]->{'line'});
}
# split_words(string)
sub split_words
{
local($s, @w);
$s = $_[0];
while($s =~ /^\s*([^"\s]+|"([^"]*)")(.*)$/) {
push(@w, defined($2) ? $2 : $1);
$s = $3;
}
return @w;
}
sub join_words
{
local(@w, $w);
foreach $w (@_) {
if ($w =~ /^[a-zA-Z0-9\.\-]+$/) { push(@w, $w); }
else { push(@w, "\"$w\""); }
}
return join(" ", @w);
}
# opt_crypt(password)
# Returns the given password, crypted if the user has configured it
sub opt_crypt
{
if ($config{'encrypt_pass'}) {
local($salt);
srand(time());
$salt = chr(int(rand(26))+65).chr(int(rand(26))+65);
return &unix_crypt($_[0], $salt);
}
return $_[0];
}