function _get_liked_tieba($cookie) { $pn = 0; $kw_name = array(); $retry = 0; while (true) { $pn++; $mylikeurl = "http://tieba.baidu.com/f/like/mylike?&pn={$pn}"; $result = kk_fetch_url($mylikeurl, 0, '', $cookie); $result = wrap_text($result); $pre_reg = '/<tr><td>.*?<ahref="\\/f\\?kw=.*?"title="(.*?)"/'; preg_match_all($pre_reg, $result, $matches); $count = 0; foreach ($matches[1] as $key => $value) { $uname = urlencode($value); $_uname = preg_quote($value); preg_match('/balvid="([0-9]+)"/i', $result, $fid); $kw_name[] = array('name' => mb_convert_encoding($value, 'utf-8', 'gbk'), 'uname' => $uname, 'fid' => $fid[1]); $count++; } if ($count == 0) { if ($retry >= 2) { break; } $retry++; $pn--; continue; } $retry = 0; } return $kw_name; }
function install() { $count = DB::result_first('SELECT COUNT(*) FROM sign_log WHERE status=2'); $this->saveSetting('tieba', $count); $count = DB::result_first('SELECT SUM(exp) FROM sign_log WHERE status=2'); $this->saveSetting('exp', $count); $ret = kk_fetch_url("http://api.ikk.me/stat.php"); if (!$ret) { return; } $data = json_decode($ret); if (!$data) { return; } $this->saveSetting('cloud_tieba', $data->tieba); $this->saveSetting('cloud_exp', $data->exp); }
public static function request_silent($api_name) { if (!$api_name) { throw new Exception('Request remote api failed: empty request!'); } $parms = func_get_args(); unset($parms[0]); $parm_string = serialize($parms); $parm_string = authcode($parm_string, 'ENCODE', self::key()); $parm_string = bin2hex($parm_string); $res = kk_fetch_url(self::API_ROOT . "{$api_name}.php?sid=" . self::id(), 0, 'parm=' . $parm_string); if (!$res) { return -1; } $ret = unserialize($res); if (!$ret) { return -2; } return $ret; }
private static function _download_file($path, $hash, $try = 1) { $d = getSetting('channel') == 'dev' ? 'tieba_sign' : 'tieba_sign_stable'; $content = kk_fetch_url(self::UPDATE_SERVER . "get_file.php?d={$d}&f={$path}"); if (!$content) { if ($try == 3) { return -1; } else { return self::_download_file($path, $hash, $try + 1); } } if (md5($content) != $hash) { if ($try == 3) { return -2; } else { return self::_download_file($path, $hash, $try + 1); } } $length = $part = 0; while ($length < strlen($content)) { $part++; $part_length = strlen($content) - $length > 8192 ? 8192 : strlen($content) - $length; $_countent = substr($content, $length, $part_length); $length += $part_length; $_part = str_pad($part, 4, "0", STR_PAD_LEFT); DB::insert('download', array('path' => "{$_part}|" . $path, 'content' => bin2hex($_countent))); } return 0; }
private static function _download_file($path, $hash, $try = 1) { $content = kk_fetch_url(self::UPDATE_URL . "updata.php?action=getfile&path={$path}"); if (!$content) { if ($try == 3) { return -1; } else { return self::_download_file($path, $hash, $try + 1); } } if (md5($content) != $hash) { if ($try == 3) { return -2; } else { return self::_download_file($path, $hash, $try + 1); } } $length = $part = 0; while ($length < strlen($content)) { $part++; $part_length = strlen($content) - $length > 8192 ? 8192 : strlen($content) - $length; $_countent = substr($content, $length, $part_length); $length += $part_length; $_part = str_pad($part, 4, "0", STR_PAD_LEFT); DB::insert('download', array('path' => "{$_part}|" . $path, 'content' => bin2hex($_countent))); } return 0; }
function handleAction() { global $uid; if (!$uid) { exit('Access Denied!'); } $data = array(); $data['msgx'] = 1; switch ($_GET['action']) { case 'add-id': $tieba = daddslashes($_POST['tb_name']); $blockid = daddslashes($_POST['user_name']); $tb_name = mb_convert_encoding($_POST['tb_name'], 'gb2312', 'utf-8'); $url = 'http://tieba.baidu.com/f?kw=' . urlencode($tb_name); $contents = kk_fetch_url($url, 0, '', get_cookie($uid)); $fid = 0; preg_match('/"forum_id"?:?(?<fid>\\d+)/', $contents, $fids); $fid = $fids['fid']; if ($fid == 0) { $data['msg'] = "添加失败,无法获取该贴吧的FID"; $data['msgx'] = 0; break; } if ($result = DB::result_first("SELECT * FROM zw_blockid_list WHERE uid={$uid} AND fid={$fid} AND blockid='{$blockid}' AND tieba='{$tieba}'")) { $data['msg'] = "添加失败,已有重复记录!"; } else { DB::insert('zw_blockid_list', array('uid' => $uid, 'fid' => $fid, 'blockid' => $blockid, 'tieba' => $tieba)); $re = $this->blockid($fid, $blockid, 1, $uid); $data['msg'] = ($re['errno'] == 0 ? "封禁成功" : "封禁失败,已添加进封禁列表") . "!贴吧FID为:{$fid},被封禁用户为{$user_name}"; } break; case 'add-id-batch': $tieba = $_POST['tb_name']; $user_name = explode("\n", $_POST['user_name']); for ($i = 0; $i < count($user_name); $i++) { $user_name[$i] = trim($user_name[$i]); } $user_name = array_filter($user_name); if (!is_array($user_name)) { $data['msg'] = "添加失败:格式错误,多个ID请用换行分隔!"; break; } $tb_name = mb_convert_encoding($tieba, 'gb2312', 'utf-8'); $url = 'http://tieba.baidu.com/f?kw=' . urlencode($tb_name); $contents = kk_fetch_url($url, 0, '', get_cookie($uid)); $fid = 0; preg_match('/"forum_id"?:?(?<fid>\\d+)/', $contents, $fids); $fid = $fids['fid']; if ($fid == 0) { $data['msg'] = "添加失败,无法获取该贴吧的FID"; $data['msgx'] = 0; break; } $count = 0; foreach ($user_name as $id) { if (DB::insert('zw_blockid_list', array('uid' => $uid, 'fid' => $fid, 'blockid' => daddslashes($id), 'tieba' => daddslashes($tieba)), true)) { $count++; } } $data['msg'] = "成功添加了{$count}个ID!所在贴吧为{$tieba},该贴吧FID为:{$fid}"; break; case 'get-list': $data['list'] = array(); $data['log'] = array(); $query = DB::query("SELECT * FROM zw_blockid_list WHERE uid={$uid}"); while ($result = DB::fetch($query)) { $data['list'][] = $result; } $data['today'] = date('Ymd'); $sendmail_uid = array_filter(explode(',', $this->getSetting('sendmail_uid'))); $data['sendmail'] = in_array($uid, $sendmail_uid) ? 1 : 0; break; case 'get-log': $date = intval($_GET['date']); $data['log'] = array(); $data['today'] = date('Ymd'); $data['date'] = substr($date, 0, 4) . '-' . substr($date, 4, 2) . '-' . substr($date, 6, 2); $data['log_success_status'] = 0; $query = DB::query("SELECT * FROM zw_blockid_log WHERE uid={$uid} AND date={$date}"); while ($result = DB::fetch($query)) { if ($result['status'] == 1) { $data['log_success_status']++; } $data['log'][] = $result; } $data['log_count'] = count($data['log']); $data['before_date'] = DB::result_first("SELECT date FROM zw_blockid_log WHERE uid={$uid} AND date<{$date} ORDER BY date DESC LIMIT 0,1"); $data['after_date'] = DB::result_first("SELECT date FROM zw_blockid_log WHERE uid={$uid} AND date>{$date} ORDER BY date LIMIT 0,1"); break; case 'del-blockid': $no = intval($_GET['no']); DB::query("DELETE FROM zw_blockid_list WHERE id={$no} AND uid={$uid}"); $data['msg'] = "删除成功!"; break; case 'do-blockid': $username = urldecode($_GET['blockid']); $tieba = urldecode($_GET['tieba']); $re = $this->blockid($_GET['fid'], $username, 1, $uid); $id = intval($_GET['bid']); if ($re['errno'] == -1) { $data['msg'] = "JSON解析失败!"; } elseif ($re['errno'] == 1) { $data['msg'] = "封禁成功!封禁账号:{$username},FID为{$_GET['fid']}"; DB::query("UPDATE zw_blockid_log SET status=1 WHERE id={$id} AND uid={$uid}"); } else { $data['msg'] = "封禁失败!返回信息:{$re['errmsg']},封禁账号:{$username},所在贴吧:{$tieba},FID为{$_GET['fid']}"; } break; case 'del-all': DB::query("DELETE FROM zw_blockid_list WHERE uid='{$uid}'"); $data['msg'] = "删除成功!"; break; case 'test-blockid': $query = DB::query("SELECT * FROM zw_blockid_list WHERE uid='{$uid}'"); while ($result = DB::fetch($query)) { $blockid_list[] = $result; } if (!$blockid_list) { $data['msgx'] = 0; $data['msg'] = "没有封禁信息,请先添加!"; break; } $rand = rand(0, count($blockid_list) - 1); $test_blockid = $blockid_list[$rand]; $re = $this->blockid($test_blockid['fid'], $test_blockid['blockid'], 1, $uid); if ($re['errno'] == -1) { $data['msg'] = "JSON解析失败!"; } elseif ($re['errno'] == 0) { $data['msg'] = "封禁成功!封禁账号:{$test_blockid['blockid']},所在贴吧:{$test_blockid['tieba']},FID为{$test_blockid['fid']}"; } else { $data['msg'] = "封禁失败!返回信息:{$re['errmsg']},封禁账号:{$test_blockid['blockid']},所在贴吧:{$test_blockid['tieba']},FID为{$test_blockid['fid']}"; } break; case 'setting': if (intval($_POST['zw_blockid-report']) == 1) { $sendmail_uid = array_filter(explode(',', $this->getSetting('sendmail_uid'))); if (!in_array($uid, $sendmail_uid)) { $sendmail_uid[] = $uid; } $this->saveSetting('sendmail_uid', implode(',', $sendmail_uid)); $data['msg'] = "成功开启邮件报告!"; } else { $sendmail_uid = array_filter(explode(',', $this->getSetting('sendmail_uid'))); if (in_array($uid, $sendmail_uid)) { for ($i = 0; $i < count($sendmail_uid); $i++) { if ($sendmail_uid[$i] == $uid) { unset($sendmail_uid[$i]); } } $this->saveSetting('sendmail_uid', implode(',', $sendmail_uid)); } $data['msg'] = "成功关闭邮件报告!"; } break; default: $data['msg'] = "没有指定action!"; break; } echo json_encode($data); }
<?php if (!defined('IN_KKFRAME')) { exit; } $obj = $_PLUGIN['obj']['cloud_stat']; if (!$obj && file_exists(ROOT . 'plugins/cloud_stat/plugin.class.php')) { $obj = new plugin_cloud_stat(); } $date = date('Ymd', TIMESTAMP); $tieba = intval($obj->getSetting('tieba')); $exp = intval($obj->getSetting('exp')); $tieba += DB::result_first("SELECT COUNT(*) FROM sign_log WHERE status=2 AND date='{$date}'"); $obj->saveSetting('tieba', $tieba); $exp += DB::result_first("SELECT SUM(exp) FROM sign_log WHERE status=2 AND date='{$date}'"); $obj->saveSetting('exp', $exp); /* send data */ $sid = cloud::id(); $key = cloud::key(); $sign = md5($key . $sid . $tieba . $exp . $key); $ret = kk_fetch_url("http://api.ikk.me/stat.php?sid={$sid}&tieba={$tieba}&exp={$exp}&sign={$sign}"); if ($ret) { $data = json_decode($ret); if ($data) { $obj->saveSetting('cloud_tieba', $data->tieba); $obj->saveSetting('cloud_exp', $data->exp); } } cron_set_nextrun($tomorrow + 3600);