Viewing file: secrets-lib.pl (1.64 KB) -rwxr-xr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# 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]; }
|