init(); require DISCUZ_ROOT.'./config/config_ucenter.php'; require DISCUZ_ROOT.'./uc_client/release/release.php'; $get = $post = array(); $code = @$_GET['code']; parse_str(authcode($code, 'DECODE', UC_KEY), $get); if(empty($get) || UC_STANDALONE) { exit('Invalid Request'); } if(time() - $get['time'] > 3600) { exit('Authorization has expired'); } include_once DISCUZ_ROOT.'./uc_client/lib/xml.class.php'; $phpinput = file_get_contents('php://input'); $post = xml_unserialize($phpinput); require DISCUZ_ROOT.'./uc_client/extend_client.php'; if(in_array($get['action'], array('test', 'deleteuser', 'renameuser', 'gettag', 'synlogin', 'synlogout', 'updatepw', 'updatebadwords', 'updatehosts', 'updateapps', 'updateclient', 'updatecredit', 'getcredit', 'getcreditsettings', 'updatecreditsettings', 'addfeed'))) { $uc_note = new uc_note(); echo call_user_func(array($uc_note, $get['action']), $get, $post); exit(); } else { exit(API_RETURN_FAILED); } } else { exit; } class uc_note { var $dbconfig = ''; var $db = ''; var $tablepre = ''; var $appdir = ''; function _serialize($arr, $htmlon = 0) { if(!function_exists('xml_serialize')) { include_once DISCUZ_ROOT.'./uc_client/lib/xml.class.php'; } return xml_serialize($arr, $htmlon); } function __construct() { } function test($get, $post) { return API_RETURN_SUCCEED; } function deleteuser($get, $post) { global $_G; if(!API_DELETEUSER) { return API_RETURN_FORBIDDEN; } return uc_note_handler::deleteuser($get, $post); } function renameuser($get, $post) { global $_G; if(!API_RENAMEUSER) { return API_RETURN_FORBIDDEN; } return uc_note_handler::renameuser($get, $post); } function gettag($get, $post) { global $_G; if(!API_GETTAG) { return API_RETURN_FORBIDDEN; } return $this->_serialize(array($get['id'], array()), 1); } function synlogin($get, $post) { global $_G; if(!API_SYNLOGIN) { return API_RETURN_FORBIDDEN; } header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'); $cookietime = 31536000; $uid = intval($get['uid']); if(($member = getuserbyuid($uid, 1))) { dsetcookie('auth', authcode("{$member['password']}\t{$member['uid']}", 'ENCODE'), $cookietime); } } function synlogout($get, $post) { global $_G; if(!API_SYNLOGOUT) { return API_RETURN_FORBIDDEN; } header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'); dsetcookie('auth', '', -31536000); } function updatepw($get, $post) { global $_G; if(!API_UPDATEPW) { return API_RETURN_FORBIDDEN; } return uc_note_handler::updatepw($get, $post); } function updatebadwords($get, $post) { global $_G; if(!API_UPDATEBADWORDS) { return API_RETURN_FORBIDDEN; } $data = array(); if(is_array($post)) { foreach($post as $k => $v) { if(substr($v['findpattern'], 0, 1) != '/' || substr($v['findpattern'], -3) != '/is') { $v['findpattern'] = '/' . preg_quote($v['findpattern'], '/') . '/is'; } $data['findpattern'][$k] = $v['findpattern']; $data['replace'][$k] = $v['replacement']; } } $cachefile = DISCUZ_ROOT.'./uc_client/data/cache/badwords.php'; $s = "' ? substr($configfile, 0, -2) : $configfile; $configfile = str_replace("define('UC_API', '".addslashes(UC_API)."')", "define('UC_API', '".addslashes($UC_API)."')", $configfile); if(file_put_contents(DISCUZ_ROOT.'./config/config_ucenter.php', trim($configfile)) === false) { return API_RETURN_FAILED; } } } return API_RETURN_SUCCEED; } function updateclient($get, $post) { global $_G; if(!API_UPDATECLIENT) { return API_RETURN_FORBIDDEN; } $cachefile = DISCUZ_ROOT.'./uc_client/data/cache/settings.php'; $s = " $amount)); C::t('common_credit_log')->insert(array('uid' => $uid, 'operation' => 'ECU', 'relatedid' => $uid, 'dateline' => time(), 'extcredits'.$credit => $amount)); return API_RETURN_SUCCEED; } function getcredit($get, $post) { global $_G; if(!API_GETCREDIT) { return API_RETURN_FORBIDDEN; } $uid = intval($get['uid']); $credit = intval($get['credit']); $_G['uid'] = $_G['member']['uid'] = $uid; return getuserprofile('extcredits'.$credit); } function getcreditsettings($get, $post) { global $_G; if(!API_GETCREDITSETTINGS) { return API_RETURN_FORBIDDEN; } $credits = array(); foreach($_G['setting']['extcredits'] as $id => $extcredits) { $credits[$id] = array(strip_tags($extcredits['title']), $extcredits['unit']); } return $this->_serialize($credits); } function updatecreditsettings($get, $post) { global $_G; if(!API_UPDATECREDITSETTINGS) { return API_RETURN_FORBIDDEN; } $outextcredits = array(); foreach($get['credit'] as $appid => $credititems) { if($appid == UC_APPID) { foreach($credititems as $value) { $outextcredits[$value['appiddesc'].'|'.$value['creditdesc']] = array( 'appiddesc' => $value['appiddesc'], 'creditdesc' => $value['creditdesc'], 'creditsrc' => $value['creditsrc'], 'title' => $value['title'], 'unit' => $value['unit'], 'ratiosrc' => $value['ratiosrc'], 'ratiodesc' => $value['ratiodesc'], 'ratio' => $value['ratio'] ); } } } $tmp = array(); foreach($outextcredits as $value) { $key = $value['appiddesc'].'|'.$value['creditdesc']; if(!isset($tmp[$key])) { $tmp[$key] = array('title' => $value['title'], 'unit' => $value['unit']); } $tmp[$key]['ratiosrc'][$value['creditsrc']] = $value['ratiosrc']; $tmp[$key]['ratiodesc'][$value['creditsrc']] = $value['ratiodesc']; $tmp[$key]['creditsrc'][$value['creditsrc']] = $value['ratio']; } $outextcredits = $tmp; $cachefile = DISCUZ_ROOT.'./uc_client/data/cache/creditsettings.php'; $s = "