Function AccountCryptPassword($password,$salt) | ||
| ||
| Function AccountCryptPassword($password,$salt) <?php and?>{ if($salt=="") { srand(time()); $random=rand(); $itoa64="./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; $salt=substr($itoa64,$random % 64,1).substr($itoa64,($random/64) % 64,1); } return(crypt($password,$salt)); } class access_accounts { var $password_file=""; var $accounts=array(); var $convert_to_lower_case=0; Function ReadAccounts($password_file) { global $php_errormsg; $passwd=@File($password_file); if(GetType($passwd)!="array") return("can not read password file \"$password_file\" ($php_errormsg)"); for($account=0,$accounts=array();$account<count($passwd);$account ) { if(($line=strtok($passwd[$account],"\n"))=="") $line=$passwd[$account]; if(($user=strtok($line,":"))=="") return("invalid user in line $account of password file \"$password_file\""); if($this->convert_to_lower_case) $user=strtolower($user); $accounts[$account]["user"]="$user"; $accounts[$account]["password"]=strtok(":"); } $this->accounts=$accounts; $this->password_file=$password_file; return(""); } Function LookupAccount($user) { if($this->convert_to_lower_case) $user=strtolower($user); for($account=0;$account<count($this->accounts);$account ) { if($this->accounts[$account]["user"]==$user) break; } return($account); } Function CheckPassword($user,$password) { if($user=="") return("empty user"); if($password=="") return("empty password"); if($this->convert_to_lower_case) { $user=strtolower($user); $password=strtolower($password); } if(($account=$this->LookupAccount($user))<count($this->accounts)) { if($this->accounts[$account]["password"]=="*") return("account was deleted"); if($this->accounts[$account]["password"] ==AccountCryptPassword( $password, substr($this->accounts[$account]["password"],0,2))) return(""); else return("password does not match"); } return("unknown user"); } Function AddAccessAccount($user,$password) { if($this->convert_to_lower_case) { $user=strtolower($user); $password=strtolower($password); } $account=count($this->accounts); $this->accounts[$account]["user"]=$user; $this->accounts[$account]["password"]=AccountCryptPassword($password,""); return($account); } Function SaveAccessAccounts() { global $php_errormsg; if($this->password_file=="") return("it was not defined the password file"); if(($file=@fopen($this->password_file,"w"))==0) return("can not open password file \"$password_file\" ($php_errormsg)"); for($account=0;$account<count($this->accounts);$account ) { $user=$this->accounts[$account]["user"]; if($this->convert_to_lower_case) $user=strtolower($user); if(fputs($file,sprintf("%s:%s\n",$user,$this->accounts[$account]["password"]))==0) return("can not write to password file \"$password_file\" ($php_errormsg)"); } fclose($file); return(""); } Function DeleteAccount($user) { if($this->convert_to_lower_case) $user=strtolower($user); if(($account=$this->LookupAccount($user))<count($this->accounts)) { if($this->accounts[$account]["password"]!="*") { $this->accounts[$account]["password"]="*"; return(""); } else return("account was already deleted"); } return("unknown user"); } Function ModifyAccessAccount($user,$password) { if($this->convert_to_lower_case) { $user=strtolower($user); $password=strtolower($password); } if(($account=$this->LookupAccount($user))>=count($this->accounts)) return("unknown user"); $this->accounts[$account]["password"]=AccountCryptPassword($password,""); return(""); } }; ?><?php and?> | ||
| | ||
| |