private function _verifySign($domain, $text, $sign) { include_once KFL_DIR . '/Libs/Cache.class.php'; $filename = $domain . ".txt"; $cache = new Cache(86400 * 300, 0); $cache->setCacheStore("file"); // or memcache $cache->setCacheDir(APP_TEMP_DIR); $cache->setCacheFile($filename); if ($cache->isCached()) { $client = unserialize($cache->fetch()); } else { require_once 'ClientModel.class.php'; $ClientModel = new ClientModel(); $client = $ClientModel->getClientByName($domain); if ($client) { $cache->save(serialize($client)); } else { return false; } } $this->_private_key = $client['private_key']; if (hmac($this->_private_key, $text, 'sha1') == $sign) { return true; } else { return false; } }
function op_addclient() { $arr['domain'] = $_POST['adddomain']; $pattern = "/([\\w]+\\.[\\w]+)/i"; if (!preg_match($pattern, $arr['domain'])) { $msg = array('s' => 400, 'm' => lang('invaliddomain'), 'd' => ''); exit(json_output($msg)); } include_once "ClientModel.class.php"; $clientModel = new ClientModel(); if ($row = $clientModel->getClientByName($arr['domain'])) { $msg = array('s' => 400, 'm' => lang('domainexist'), 'd' => ''); exit(json_output($msg)); } $arr['key'] = $clientModel->generateKey(); $r = $clientModel->addNewClient($arr); if ($r) { $msg = array('s' => 200, 'm' => lang('success'), 'd' => $GLOBALS['gSiteInfo']['www_site_url'] . "/admin.php/client/defaults"); exit(json_output($msg)); } else { $msg = array('s' => 400, 'm' => lang('failed'), 'd' => ''); exit(json_output($msg)); } }