PHP Classes

File: cli/easycry.php

Recommend this page to a friend!
  Classes of Oscar Gentilezza   EasyCry   cli/easycry.php   Download  
File: cli/easycry.php
Role: Application script
Content type: text/plain
Description: Application script
Class: EasyCry
Encrypt and decrypt data with a given key
Author: By
Last change: Update of cli/easycry.php
Date: 9 months ago
Size: 3,039 bytes
 

Contents

Class file image Download
<?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);
}