<?
    $ip 
"62.129.128.";
    
$dbfile    "/usr/local/dbase/.htpasswd";

    
$p_username $_POST['username'];
    
$p_password $_POST['password'];
    
$p_mode $_POST["mode"];

    function 
user_exists($username$dbfile) {

        
$users file($dbfile);

        for (
$cnt=0$cnt<count($users); $cnt++) {

            
$pos strpos($users[$cnt], "$username:");

            if (
$pos !== false && $pos == 0) {
                return 
1;
            }
        }

        return 
0;
    }

    function 
user_delete($username$dbfile) {

        
$users file($dbfile);

        for (
$cnt=0$cnt<count($users); $cnt++) {

            
$pos strpos($users[$cnt], "$username:");

            if (
$pos === false || $pos 0) {
                
$new_users .= $users[$cnt];
            }
        }

        
$fp fopen($dbfile"w");
        
flock ($fp,2);
        
fwrite ($fp$new_users);
        
fclose ($fp);

        if (
user_exists($username$dbfile)) {
            return 
0;
        }

        return 
1;
    }

    function 
user_add($username$password$dbfile) {

        if (
user_exists($username$dbfile)) {
            return 
1;
        }

        
$fp fopen($dbfile"a");
        
flock ($fp,2);
        
fwrite ($fp,"$username:".crypt($password)."\n");
        
fclose ($fp);

        return 
user_exists($username$dbfile);
    }

    
$pos strpos($_SERVER['REMOTE_ADDR'], $ip);

    if (
$pos !== false && $pos == 0) {

        
set_time_limit(0);
        
clearstatcache();

        switch (
$p_mode) {

            case 
'add':

                if (
user_add($p_username$p_password$dbfile)) {
                    
$ret_str "EZBILL: REQUEST OK: Add $p_username";
                }
                else {
                    
$ret_str "User add failed for $p_username.";
                }

                break;

            case 
'update':

                
$ret_str "User update failed for $p_username.";

                if (
user_delete($p_username$dbfile)) {
                    if (
user_add($p_username$p_password$dbfile)) {
                        
$ret_str "EZBILL: REQUEST OK: Update $p_username";
                    }
                }

                break;

            case 
'delete':

                if (
user_delete($p_username$dbfile)) {
                    
$ret_str "EZBILL: REQUEST OK: Del $p_username";
                }
                else {
                    
$ret_str "User delete failed for $p_username.";
                }

                break;

            case 
'rebill':

                
$ret_str "EZBILL: REQUEST OK: Rebill";

                break;

            default:
                
$ret_str "Mode not found: $p_username $p_password";
                break;
        }
    }
    else {
        
$ret_str "Security failure ".$_SERVER['REMOTE_ADDR'].".";
    }

    echo(
$ret_str);

    if (
$fp    fopen    ("/tmp/validator""a")) {
        
fputs($fpdate("M j H:i:s ").$ret_str."\n");
        
fclose($fp);
    }
?>