コード例 #1
0
ファイル: sign.php プロジェクト: istobran/Tieba_Sign
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;
}
コード例 #2
0
ファイル: plugin.class.php プロジェクト: istobran/Tieba_Sign
 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);
 }
コード例 #3
0
ファイル: cloud.php プロジェクト: wsunxa/Tieba_Sign-1
 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;
 }
コード例 #4
0
ファイル: updater.php プロジェクト: istobran/Tieba_Sign
 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;
 }
コード例 #5
0
ファイル: updater.php プロジェクト: wsunxa/Tieba_Sign-1
 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;
 }
コード例 #6
0
ファイル: plugin.class.php プロジェクト: myhloli/Tieba_Sign
 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);
 }
コード例 #7
0
<?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);