Source of file api.deploy.php
Size: 8,460 Bytes - Last Modified: 2024-04-27T15:26:05+03:00
/tmp/current_snapshot/api/libs/api.deploy.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 | <?php /** * One of se7en deadly sins */ class Avarice { private $data = array(); private $serial = ''; private $raw = array(); private $ident='HN'; public function __construct() { $this->getSerial(); $this->load(); } /** * encodes data string by some key * * @param $data data to encode * @param $key encoding key * * @return string */ protected function xoror($data, $key) { $result = ''; for ($i = 0; $i < strlen($data);) { for ($j = 0; $j < strlen($key); $j++, $i++) { @$result .= $data[$i] ^ $key[$j]; } } return ($result); } /** * packs xorored binary data into storable ascii data * * @param $data * * * @return string */ protected function pack($data) { $data = base64_encode($data); return ($data); } /** * unpack packed ascii data into xorored binary * * @param $data * * * @return string */ protected function unpack($data) { $data = base64_decode($data); return ($data); } /** * loads all stored licenses into private data prop * * @return void */ protected function load() { if (!empty($this->serial)) { $query = "SELECT * from `ubstorage` WHERE `key` LIKE 'AVLICENSE_%'"; $keys = simple_queryall($query); if (!empty($keys)) { foreach ($keys as $io => $each) { if (!empty($each['value'])) { $unpack = $this->unpack($each['value']); $unenc = $this->xoror($unpack, $this->serial); @$unenc = unserialize($unenc); if (!empty($unenc)) { if (isset($unenc['AVARICE'])) { if (isset($unenc['AVARICE']['SERIAL'])) { if ($this->serial == $unenc['AVARICE']['SERIAL']) { if (isset($unenc['AVARICE']['MODULE'])) { if (!empty($unenc['AVARICE']['MODULE'])) { $this->data[$unenc['AVARICE']['MODULE']] = $unenc[$unenc['AVARICE']['MODULE']]; $this->raw[$unenc['AVARICE']['MODULE']]['LICENSE'] = $each['value']; $this->raw[$unenc['AVARICE']['MODULE']]['MODULE'] = $unenc['AVARICE']['MODULE']; $this->raw[$unenc['AVARICE']['MODULE']]['KEY'] = $each['key']; } } } } } } } } } } } /** * sets ubilling system key into private key prop * * @return void */ protected function getSerial() { $hostid_q = "SELECT * from `ubstats` WHERE `key`='ubid'"; $hostid = simple_query($hostid_q); if (!empty($hostid)) { if (isset($hostid['value'])) { $this->serial = $hostid['value']; } } } /** * checks module license availability * * @param $module module name to check * * @return bool */ protected function check($module) { if (!empty($module)) { if (isset($this->data[$module])) { return (true); } else { return (false); } } } /** * returns module runtime * * @return array */ public function runtime($module) { $result = array(); if ($this->check($module)) { $result = $this->data[$module]; } return ($result); } /** * returns list available license keys * * @return array */ public function getLicenseKeys() { return ($this->raw); } /** * check license key before storing it * * @param string $key key to check 4 valid format * * @return bool */ protected function checkLicenseValidity($key) { $result = false; if (@strpos($key, strrev($this->ident), 0) !== false) { @$key = $this->unpack($key); @$key = $this->xoror($key, $this->serial); @$key = unserialize($key); if (!empty($key)) { $result = true; } } return ($result); } /** * deletes key database record * * @param $keyname string identify key into database * * @return void */ public function deleteKey($keyname) { $keyname = mysql_real_escape_string($keyname); $query = "DELETE from `ubstorage` WHERE `key` = '" . $keyname . "';"; nr_query($query); log_register("AVARICE DELETE KEY `" . $keyname . '`'); } /** * installs new license key * * @param $key string valid license key * * @return bool */ public function createKey($key) { $key = mysql_real_escape_string($key); if ($this->checkLicenseValidity($key)) { $keyname = 'AVLICENSE_' . zb_rand_string('8'); $query = "INSERT INTO `ubstorage` (`id`, `key`, `value`) VALUES (NULL, '" . $keyname . "', '" . $key . "');"; nr_query($query); log_register("AVARICE INSTALL KEY `" . $keyname . '`'); return (true); } else { log_register("AVARICE TRY INSTALL WRONG KEY"); return (false); } } /** * updates existing license key */ public function updateKey($index, $key) { if ($this->checkLicenseValidity($key)) { simple_update_field('ubstorage', 'value', $key, "WHERE `key`='" . $index . "'"); log_register("AVARICE UPDATE KEY `" . $index . '`'); return (true); } else { log_register("AVARICE TRY UPDATE WRONG KEY"); return (false); } } } /** * Renders available license keys with all of required controls * * @return void */ function zb_LicenseLister() { $result = ''; $avarice = new Avarice(); $all = $avarice->getLicenseKeys(); $messages = new UbillingMessageHelper(); if (!empty($all)) { $cells = wf_TableCell(__('License key')); $cells .= wf_TableCell(__('Actions')); $rows = wf_TableRow($cells, 'row1'); foreach ($all as $io => $each) { //construct edit form $editinputs = wf_HiddenInput('editdbkey', $each['KEY']); $editinputs .= wf_TextArea('editlicense', '', $each['LICENSE'], true, '50x10'); $editinputs .= wf_Submit(__('Save')); $editform = wf_Form("", 'POST', $editinputs, 'glamour'); $editcontrol = wf_modalAuto(web_edit_icon(), __('Edit') . ' ' . $each['MODULE'], $editform, ''); $deletionUrl = '?module=licensekeys&licensedelete=' . $each['KEY']; $cancelUrl = '?module=licensekeys'; $delLabel = __('Delete') . ' ' . __('License key') . ' ' . $each['MODULE'] . '? '; $delLabel .= $messages->getDeleteAlert(); $deletecontrol = wf_ConfirmDialog($deletionUrl, web_delete_icon(), $delLabel, '', $cancelUrl); $cells = wf_TableCell($each['MODULE']); $cells .= wf_TableCell($deletecontrol . ' ' . $editcontrol); $rows .= wf_TableRow($cells, 'row5'); } $result .= wf_TableBody($rows, '100%', 0, ''); } else { $result .= $messages->getStyledMessage(__('You do not have any license keys installed. So how are you going to live like this?'), 'warning'); } //constructing license creation form $addinputs = wf_TextArea('createlicense', '', '', true, '50x10'); $addinputs .= wf_Submit(__('Save')); $addform = wf_Form("", 'POST', $addinputs, 'glamour'); $addcontrol = wf_modalAuto(web_icon_create() . ' ' . __('Install license key'), __('Install license key'), $addform, 'ubButton'); $result .= wf_delimiter(0); $result .= $addcontrol; show_window(__('Installed license keys'), $result); } |