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; }
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; }
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; }
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();
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; }
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; } }
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; }