<?php 
 
 
require('../lib/EasyCry.php'); 
 
 
$options = array( 
    'b' => array('Block size', true, 8 ), 
    'Z' => array('Don\'t compress data', false, 1, 0), 
    'k' => array('Key file', true), 
    'p' => array('Password phrase', true), 
    'a' => array('Output in ASCII', false, 1, 0), 
    'w' => array('Wordwrap (with -a option)', true), 
    'o' => array('Output file',true), 
    't' => array('Text to encode/decode', true) 
); 
 
$params = array(); 
 
 
function help() { 
    global $options,$argv; 
 
    echo "Usage " . $argv[0] . "[-"; 
     
    foreach ($options as $k=>$op) { 
        echo $k; 
    } 
 
    echo "] order [file] "; 
    echo "\n\n"; 
 
    echo "Options:\n"; 
    foreach ($options as $k=>$op) { 
                echo "\t -{$k} {$op[0]} "; 
        if ($op[1] && isset($op[2]) && $op[2]) { 
            echo "(By default: {$op[2]})"; 
        } 
        echo "\n"; 
        } 
 
 
    echo "\n"; 
    echo "For bugs/issues: https://github.com/exos/PHP-EasyCry\n"; 
 
    exit (0); 
} 
 
function getOption ($val) { 
    global $options, $params; 
 
    if (isset($params[$val])) { 
        return $params[$val]; 
    } elseif (isset($options[$val])) { 
                if (isset($options[$val][2])) { 
            return $options[$val][2]; 
        } else { 
            return null; 
        } 
        } else { 
        throw new Exception ("Option $val dont exist"); 
    } 
 
} 
 
 
$rest = array(); 
 
for ($i = 1; $i < $argc; $i++ ) { 
 
    if (preg_match('#-([\w]+)#', $argv[$i], $mod)) { 
        $pars = $mod[1]; 
        $sj = 0; 
        for ($j=0; $j < strlen($pars); $j++) { 
 
            if (isset($options[$pars{$j}])) { 
 
                if ($options[$pars{$j}][1]) { 
     
                    if (!isset($argv[$i+$sj+1])) { 
                        help(); 
                    } 
 
                    $params[$pars{$j}] = $argv[$i+$sj+1]; 
                    $sj++; 
 
                } else { 
                    if (isset($options[$pars{$j}][3])) { 
                        $params[$pars{$j}] = $options[$pars{$j}][3]; 
                    } 
                } 
 
            } else { 
                fwrite(STDOUT, "Unknow option " . $pars{$j} . "\n");  
                exit(1); 
            } 
        } 
        $i += $sj; 
    } else { 
        $rest[] = $argv[$i]; 
    } 
 
} 
 
 
if (!isset($rest[0])) { 
    help(); 
} 
 
$cry = new EasyCry(); 
 
$cry->bloksize = getOption('b'); 
$cry->compress = (bool) getOption('Z'); 
$cry->binary = (bool) getOption('a'); 
 
 
if (getOption('p')) { 
    $pass = getOption('p'); 
} elseif (getOption('k')) { 
 
    if (file_exists(getOption('k'))) { 
        $pass = file_get_contents(getOption('k')); 
        } else { 
                fwrite(STDOUT, "Key file don't exist \n"); 
                exit(2); 
        } 
} else { 
        echo "Password: "; 
        $pass = fgets(STDIN); 
    $pass = substr($pass,0,-1); 
} 
 
if (getOption('t')) { 
    $text = getOption('t'); 
} elseif (isset($rest[1])) { 
    if (file_exists($rest[1])) { 
        $text = file_get_contents($rest[1]); 
    } else { 
        fwrite(STDOUT, "{$rest[1]} don't exist \n"); 
                exit(3); 
    } 
} else { 
    help(); 
} 
 
switch ($rest[0]) { 
 
    case 'encode': 
        $res = $cry->encode($text, $pass); 
        if (!$cry->binary && getOption('w')) { 
            $res = wordwrap($res, (int) getOption('w'), "\n", true); 
        } 
 
        break; 
    case 'decode': 
        $res = $cry->decode($text, $pass); 
        $res = $res['data']; 
        break; 
 
    default: 
        help; 
} 
 
if (getOption('o')) { 
    file_put_contents(getOption('o'), $res); 
} else { 
    print ($res); 
    echo "\n"; 
    exit(0); 
} 
 
 |