Example #1
0
 public function doload($ref = "")
 {
     $ref = $ref ? $ref : config::$walfile;
     $loc = Tools::makepath(array("wal", "{$ref}"));
     switch ($ref) {
         case "wal":
             $ret = unserialize(gio::readfile(Tools::makepath(array("wal", "{$ref}"))));
             magic::proc($ret, false);
             break;
         default:
             $ret = unserialize(gio::readfile($loc));
     }
     return $ret;
 }
Example #2
0
 public static function load($ref = null)
 {
     $ref = $ref ? $ref : config::$walfile;
     /*$s = __class__;
     		$engine = config::$storageengine.$s;
     		$s = new $s;
     		aggregate($s,$engine);
     		$ret = $s->doload($ref);*/
     $loc = Tools::makepath(array("wal", "{$ref}"));
     $ret = unserialize(gio::readfile($loc));
     if ($ref == config::$walfile) {
         magic::proc($ret, false);
     }
     return $ret;
 }
Example #3
0
 public static function getkey($userid = "", $type = 0, $data = false)
 {
     if (empty($userid)) {
         $userid = config::$accountId;
     }
     $ext = $type ? 'pem' : 'pem';
     $subdir = $type ? 'private' : 'public';
     $kfile = Tools::makepath(array(HOME_DIR, "keys", $subdir, "{$userid}.{$ext}"));
     gio::log("Fetching {$userid}'s {$subdir} key ...", VERBOSE);
     $tfile = config::$encryptLocalStorage ? "{$kfile}." . config::$encrypedLocalStorageExtention : "{$kfile}";
     if ($data && !is_readable($tfile)) {
         gio::log("Key file '{$subdir}::{$tfile}' does not exist or is not readable", E_USER_WARNING);
         return false;
     }
     $ret = !$data ? $kfile : ($subdir == 'private' ? openssl_get_privatekey(gio::readfile($kfile), config::$privateKeyPassword) : openssl_get_publickey(gio::readfile($kfile)));
     gio::log("... {$userid}'s {$subdir} key OK.", VERBOSE);
     return $ret;
 }
Example #4
0
                break;
            case "x":
                @$net->send('shutdown');
                $net = null;
                if ($serv) {
                    $ret = pclose($serv);
                }
                break 2;
            default:
                $inerr = 1;
                $msg = "Retry";
        }
        if (!$inerr) {
            gio::output("\n\n\n");
        }
    }
    if (isset($ret) && $ret != 0) {
        gio::output("An error occured while exiting...");
    }
    gio::output(config::$exitMessage);
    sleep(3);
}
if (is_readable(config::$walCfgFile)) {
    $cfg = unserialize(gio::readfile(config::$walCfgFile));
    config::$networkInterface = $cfg[0];
    config::$walletPort = $cfg[1];
    config::$remoteAddress = $cfg[2];
    config::$remotePort = $cfg[3];
}
main($mainoptions);
gio::output();
Example #5
0
 public static function mercorder($oid, $account, $merc)
 {
     $v = GsonCrypt::verify($merc, $account);
     if (!$v) {
         return array(0, "Unable to verify the account key");
     }
     if ($v != md5(gio::readfile(GsonCrypt::getkey($account)))) {
         return array(0, "Incorrect Key");
     }
     $r = self::status($oid, $account, true);
     return $r;
 }
Example #6
0
 public static function merckey($file = "")
 {
     $s = GsonCrypt::sign(md5(gio::readfile(GsonCrypt::getcert())));
     if ($file) {
         $file .= ".txt";
         $ofile = Tools::makepath(array(getenv('USERPROFILE'), "Desktop", "{$file}"));
         if (gio::saverawfile("MERCHANT/ACCOUNT KEY: '{$s}'", $ofile)) {
             gio::output("The file {$file} was sucessfully written to your desktop");
         } else {
             gio::output("Error while writing {$file} to your desktop");
         }
     } else {
         return $s;
     }
 }
Example #7
0
 public static function process($msg)
 {
     $status = 1;
     $sender = "";
     $res = "";
     $umsg = GsonCrypt::unseal($msg);
     if (!$umsg) {
         $ex = Gmsg::extract($msg);
         if ($ex && is_array($ex)) {
             $umsg = $msg;
         } else {
             $status = 0;
             $res = "Unable to decode the message";
         }
     }
     if ($umsg) {
         $parts = self::extract($umsg);
         $action = $parts["op"];
         $mess = $parts["msg"];
         $sender = $parts["sender"];
         $recipient = $parts["recipient"];
         if ($recipient && !account::exists($recipient)) {
             $status = 0;
             $res = "The recipient account {$recipient} does not reside here";
             $rply = Gmsg::create(array("status" => $status, "response" => $res));
         } else {
             switch ($action) {
                 case "mrequest":
                     $r = transaction::request($mess['m'], $sender, $mess['k']);
                     $rply = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     break;
                 case "mstatus":
                     $r = transaction::mercorder($mess['m'], $sender, $mess['k']);
                     $rply = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     break;
                 case "statusrequest":
                     $r = transaction::status($mess, $sender);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "paymentrequest":
                     $r = transaction::request($mess, $sender);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "pullrequests":
                     $r = transaction::pullrequests($mess, $sender);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "pullcoins":
                     $r = account::pullcoins($mess, $sender);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "clearrequests":
                     $r = transaction::clearrequests($mess, $sender);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "notification":
                     $r = transaction::notification($mess, $sender);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "acknowledgement":
                     $r = transaction::acknowledgement($mess, config::$SRA);
                     $m = Gmsg::create(array("status" => $r[0], "response" => $r[1]));
                     $rply = GsonCrypt::sign($m);
                     break;
                 case "deposit":
                     $r = account::deposit($mess, $recipient);
                     if (!$r) {
                         $status = 0;
                         $res = "Deposit failed";
                     } else {
                         $res = "Deposit was successful";
                     }
                     break;
                 case "revokecert":
                     $net = new Gnet();
                     $rply = $net->send("{$mess}", true);
                     $net = null;
                     break;
                 case "signcert":
                     $net = new Gnet();
                     $rply = $net->send("{$mess}", true);
                     $net = null;
                     break;
                 case "register":
                     $k = GsonCrypt::getcert();
                     if (is_readable($k)) {
                         $res = gio::readfile($k);
                         if (!$res) {
                             $status = 0;
                         }
                     }
                     $rply = Gmsg::create(array("status" => $status, "cert" => $res, "name" => config::$accountId, "account" => account::makenew()));
                     break;
                 case "create":
                     $status = gio::savetofile($mess, GsonCrypt::getkey("{$sender}"));
                     $res = $status ? "successful" : "failed";
                     $rply = Gmsg::create(array("status" => $status, "response" => $res));
                     break;
                 case "remove":
                     $res = "";
                     $ret = array("status" => $status, "response" => $res);
                     $rply = self::create($ret);
                     $rply = GsonCrypt::seal("{$rply}", "{$sender}");
                     unlink(GsonCrypt::getkey($sender));
                     break;
                 case "exchangecert":
                     $status = 0;
                     if (!file_exists(GsonCrypt::getcert("{$sender}"))) {
                         $status = gio::saverawfile($mess, GsonCrypt::getcert("{$sender}"));
                     }
                     $k = GsonCrypt::getcert();
                     if ($status && is_readable($k)) {
                         $res = gio::readfile($k);
                         if (!$res) {
                             $status = 0;
                         }
                     }
                     $rply = Gmsg::create(array("status" => $status, "cert" => $res));
                     break;
                 case "reverb":
                     $res = $mess;
                     break;
                 default:
                     $status = 0;
                     $res = "Invalid Operation!";
             }
         }
     }
     if (!isset($rply)) {
         $ret = array("status" => $status, "response" => $res);
         $rply = self::create($ret);
         $rply = $sender ? GsonCrypt::seal("{$rply}", "{$sender}") : "{$rply}";
     }
     return $rply;
 }