Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索
123
返回列表 发新帖

[疑难] 论坛免激活代码

[复制链接]
网维 发表于 2009-5-26 09:24:02 | 显示全部楼层
  1. <?php

  2. define('UC_VERSION', '1.0.0');

  3. define('API_DELETEUSER', 1);
  4. define('API_RENAMEUSER', 1);
  5. define('API_GETTAG', 1);
  6. define('API_SYNLOGIN', 1);
  7. define('API_SYNLOGOUT', 1);
  8. define('API_UPDATEPW', 1);
  9. define('API_UPDATEBADWORDS', 1);
  10. define('API_UPDATEHOSTS', 1);
  11. define('API_UPDATEAPPS', 1);
  12. define('API_UPDATECLIENT', 1);
  13. define('API_UPDATECREDIT', 1);
  14. define('API_GETCREDITSETTINGS', 1);
  15. define('API_UPDATECREDITSETTINGS', 1);

  16. define('API_RETURN_SUCCEED', '1');
  17. define('API_RETURN_FAILED', '-1');
  18. define('API_RETURN_FORBIDDEN', '-2');

  19. error_reporting(7);
  20. set_magic_quotes_runtime(0);

  21. define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());

  22. define('IN_DISCUZ', TRUE);
  23. define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -3));
  24. define('UC_CLIENT_ROOT', DISCUZ_ROOT.'./uc_client/');

  25. $_DCACHE = array();

  26. require_once DISCUZ_ROOT.'./config.inc.php';

  27. $code = $_GET['code'];
  28. parse_str(authcode($code, 'DECODE', UC_KEY), $get);
  29. if(MAGIC_QUOTES_GPC) {
  30.         $get = dstripslashes($get);
  31. }

  32. if(time() - $get['time'] > 3600) {
  33.         exit('Authracation has expiried');
  34. }
  35. if(empty($get)) {
  36.         exit('Invalid Request');
  37. }
  38. $action = $get['action'];
  39. $timestamp = time();

  40. if($action == 'test') {
  41.         exit(API_RETURN_SUCCEED);

  42. } elseif($action == 'deleteuser') {

  43.         !API_DELETEUSER && exit(API_RETURN_FORBIDDEN);

  44.         require_once DISCUZ_ROOT.'./include/db_'.$database.'.class.php';

  45.         $db = new dbstuff;
  46.         $db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
  47.         unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);

  48.         $uids = $get['ids'];
  49.         $threads = array();

  50.         $query = $db->query("SELECT f.fid, t.tid FROM {$tablepre}threads t LEFT JOIN {$tablepre}forums f ON t.fid=f.fid WHERE t.authorid IN ($uids) ORDER BY f.fid");
  51.         while($thread = $db->fetch_array($query)) {
  52.                 $threads[$thread['fid']] .= ($threads[$thread['fid']] ? ',' : '').$thread['tid'];
  53.         }

  54.         if($threads) {
  55.                 require_once DISCUZ_ROOT.'./forumdata/cache/cache_settings.php';
  56.                 foreach($threads as $fid => $tids) {
  57.                         $query = $db->query("SELECT attachment, thumb, remote FROM {$tablepre}attachments WHERE tid IN ($tids)");
  58.                         while($attach = $db->fetch_array($query)) {
  59.                                 @unlink($_DCACHE['settings']['attachdir'].'/'.$attach['attachment']);
  60.                                 $attach['thumb'] && @unlink($_DCACHE['settings']['attachdir'].'/'.$attach['attachment'].'.thumb.jpg');
  61.                         }

  62.                         foreach(array('threads', 'threadsmod', 'relatedthreads', 'posts', 'polls', 'polloptions', 'trades', 'activities', 'activityapplies', 'debates', 'debateposts', 'attachments', 'favorites', 'mythreads', 'myposts', 'subscriptions', 'typeoptionvars', 'forumrecommend') as $value) {
  63.                                 $db->query("DELETE FROM {$tablepre}$value WHERE tid IN ($tids)", 'UNBUFFERED');
  64.                         }

  65.                         require_once DISCUZ_ROOT.'./include/post.func.php';
  66.                         updateforumcount($fid);
  67.                 }
  68.                 if($globalstick && $stickmodify) {
  69.                         require_once DISCUZ_ROOT.'./include/cache.func.php';
  70.                         updatecache('globalstick');
  71.                 }
  72.         }

  73.         $query = $db->query("DELETE FROM {$tablepre}members WHERE uid IN ($uids)");
  74.         $db->query("DELETE FROM {$tablepre}access WHERE uid IN ($uids)", 'UNBUFFERED');
  75.         $db->query("DELETE FROM {$tablepre}memberfields WHERE uid IN ($uids)", 'UNBUFFERED');
  76.         $db->query("DELETE FROM {$tablepre}favorites WHERE uid IN ($uids)", 'UNBUFFERED');
  77.         $db->query("DELETE FROM {$tablepre}moderators WHERE uid IN ($uids)", 'UNBUFFERED');
  78.         $db->query("DELETE FROM {$tablepre}subscriptions WHERE uid IN ($uids)", 'UNBUFFERED');

  79.         $query = $db->query("SELECT uid, attachment, thumb, remote FROM {$tablepre}attachments WHERE uid IN ($uids)");
  80.         while($attach = $db->fetch_array($query)) {
  81.                 @unlink($_DCACHE['settings']['attachdir'].'/'.$attach['attachment']);
  82.                 $attach['thumb'] && @unlink($_DCACHE['settings']['attachdir'].'/'.$attach['attachment'].'.thumb.jpg');
  83.         }
  84.         $db->query("DELETE FROM {$tablepre}attachments WHERE uid IN ($uids)");

  85.         $db->query("DELETE FROM {$tablepre}posts WHERE authorid IN ($uids)");
  86.         $db->query("DELETE FROM {$tablepre}trades WHERE sellerid IN ($uids)");

  87.         exit(API_RETURN_SUCCEED);

  88. } elseif($action == 'renameuser') {

  89.         !API_RENAMEUSER && exit(API_RETURN_FORBIDDEN);

  90.         require_once DISCUZ_ROOT.'./include/db_'.$database.'.class.php';

  91.         $db = new dbstuff;
  92.         $db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
  93.         unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);

  94.         $uid = $get['uid'];
  95.         $usernameold = $get['oldusername'];
  96.         $usernamenew = $get['newusername'];

  97.         $db->query("UPDATE {$tablepre}announcements SET author='$usernamenew' WHERE author='$usernameold'");
  98.         $db->query("UPDATE {$tablepre}banned SET admin='$usernamenew' WHERE admin='$usernameold'");
  99.         $db->query("UPDATE {$tablepre}forums SET lastpost=REPLACE(lastpost, '\t$usernameold', '\t$usernamenew')");
  100.         $db->query("UPDATE {$tablepre}members SET username='$usernamenew' WHERE uid='$uid'");
  101.         $db->query("UPDATE {$tablepre}pms SET msgfrom='$usernamenew' WHERE msgfromid='$uid'");
  102.         $db->query("UPDATE {$tablepre}posts SET author='$usernamenew' WHERE authorid='$uid'");
  103.         $db->query("UPDATE {$tablepre}threads SET author='$usernamenew' WHERE authorid='$uid'");
  104.         $db->query("UPDATE {$tablepre}threads SET lastposter='$usernamenew' WHERE lastposter='$usernameold'");
  105.         $db->query("UPDATE {$tablepre}threadsmod SET username='$usernamenew' WHERE uid='$uid'");
  106.         exit(API_RETURN_SUCCEED);

  107. } elseif($action == 'gettag') {

  108.         !API_GETTAG && exit(API_RETURN_FORBIDDEN);

  109.         require_once DISCUZ_ROOT.'./include/db_'.$database.'.class.php';

  110.         $db = new dbstuff;
  111.         $db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
  112.         unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);

  113.         $name = trim($get['id']);
  114.         if(empty($name) || !preg_match('/^([\x7f-\xff_-]|\w|\s)+$/', $name) || strlen($name) > 20) {
  115.                 exit(API_RETURN_FAILED);
  116.         }

  117.         require_once DISCUZ_ROOT.'./include/misc.func.php';

  118.         $tag = $db->fetch_first("SELECT * FROM {$tablepre}tags WHERE tagname='$name'");
  119.         if($tag['closed']) {
  120.                 exit(API_RETURN_FAILED);
  121.         }

  122.         $tpp = 10;
  123.         $PHP_SELF = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
  124.         $boardurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace("/\/+(api)?\/*$/i", '', substr($PHP_SELF, 0, strrpos($PHP_SELF, '/'))).'/';
  125.         $query = $db->query("SELECT t.* FROM {$tablepre}threadtags tt LEFT JOIN {$tablepre}threads t ON t.tid=tt.tid AND t.displayorder>='0' WHERE tt.tagname='$name' ORDER BY tt.tid DESC LIMIT $tpp");
  126.         $threadlist = array();
  127.         while($tagthread = $db->fetch_array($query)) {
  128.                 if($tagthread['tid']) {
  129.                         $threadlist[] = array(
  130.                                 'subject' => $tagthread['subject'],
  131.                                 'uid' => $tagthread['authorid'],
  132.                                 'username' => $tagthread['author'],
  133.                                 'dateline' => $tagthread['dateline'],
  134.                                 'url' => $boardurl.'viewthread.php?tid='.$tagthread['tid'],
  135.                         );
  136.                 }
  137.         }

  138.         $return = array($name, $threadlist);
  139.         echo uc_serialize($return, 1);

  140. } elseif($action == 'synlogin') {

  141. $member = array();
  142. $member[uid] = $uid;
  143. $member[username] = $get['username'];
  144. $member[email] = empty($get['email'])?'your@email.com':$get['email'];                                                               
  145. $member[password] = md5(time().rand(100000, 999999));
  146. $member[secques] = '';
  147. $db->query("INSERT INTO {$tablepre}members (uid,username,email,password,groupid,regip,regdate,timeoffset) VALUES ('{$member[uid]}','{$member[username]}','{$member[email]}','{$member[password]}',10,'', '$timestamp',9999)");
  148. dsetcookie('sid', '', -86400 * 365);
  149. dsetcookie('cookietime', $cookietime, 31536000);
  150. dsetcookie('auth', authcode("$member[password]\t$member[secques]\t$member[uid]", 'ENCODE', $discuz_auth_key), $cookietime);

  151.         !API_SYNLOGIN && exit(API_RETURN_FORBIDDEN);

  152.         require_once DISCUZ_ROOT.'./include/db_'.$database.'.class.php';
  153.         require_once DISCUZ_ROOT.'./forumdata/cache/cache_settings.php';

  154.         $db = new dbstuff;
  155.         $db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
  156.         unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
  157.         $cookietime = 2592000;
  158.         $discuz_auth_key = md5($_DCACHE['settings']['authkey'].$_SERVER['HTTP_USER_AGENT']);
  159.         header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
  160.         $uid = intval($get['uid']);
  161.         $query = $db->query("SELECT username, uid, password, secques FROM {$tablepre}members WHERE uid='$uid'");
  162.         if($member = $db->fetch_array($query)) {
  163.                 dsetcookie('sid', '', -86400 * 365);
  164.                 dsetcookie('cookietime', $cookietime, 31536000);
  165.                 dsetcookie('auth', authcode("$member[password]\t$member[secques]\t$member[uid]", 'ENCODE', $discuz_auth_key), $cookietime);
  166.         } else {
  167.                 dsetcookie('cookietime', $cookietime, 31536000);
  168.                 dsetcookie('loginuser', $get['username'], $cookietime);
  169.                 dsetcookie('activationauth', authcode($get['username'], 'ENCODE', $discuz_auth_key), $cookietime);
  170.         }

  171. } elseif($action == 'synlogout') {

  172.         !API_SYNLOGOUT && exit(API_RETURN_FORBIDDEN);

  173.         header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
  174.         dsetcookie('auth', '', -86400 * 365);
  175.         dsetcookie('sid', '', -86400 * 365);
  176.         dsetcookie('loginuser', '', -86400 * 365);
  177.         dsetcookie('activationauth', '', -86400 * 365);

  178. } elseif($action == 'updatepw') {

  179.         !API_UPDATEPW && exit(API_RETURN_FORBIDDEN);

  180.         require_once DISCUZ_ROOT.'./include/db_'.$database.'.class.php';
  181.         $db = new dbstuff;
  182.         $db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
  183.         unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
  184.        
  185.         $username = $get['username'];
  186.         $password = $get['password'];
  187.         $newpw = md5(time().rand(100000, 999999));
  188.         $db->query("UPDATE {$tablepre}members SET password='$newpw' WHERE username='$username'");
  189.         exit(API_RETURN_SUCCEED);

  190. } elseif($action == 'updatebadwords') {

  191.         !API_UPDATEBADWORDS && exit(API_RETURN_FORBIDDEN);

  192.         $post = uc_unserialize(uc_post_contents());
  193.         $cachefile = DISCUZ_ROOT.'./uc_client/data/cache/badwords.php';
  194.         $fp = fopen($cachefile, 'w');
  195.         $s = "<?php\r\n";
  196.         $s .= '$_CACHE[\'badwords\'] = '.var_export($post, TRUE).";\r\n";
  197.         fwrite($fp, $s);
  198.         fclose($fp);
  199.         exit(API_RETURN_SUCCEED);

  200. } elseif($action == 'updatehosts') {

  201.         !API_UPDATEHOSTS && exit(API_RETURN_FORBIDDEN);

  202.         $post = uc_unserialize(uc_post_contents());
  203.         $cachefile = DISCUZ_ROOT.'./uc_client/data/cache/hosts.php';
  204.         $fp = fopen($cachefile, 'w');
  205.         $s = "<?php\r\n";
  206.         $s .= '$_CACHE[\'hosts\'] = '.var_export($post, TRUE).";\r\n";
  207.         fwrite($fp, $s);
  208.         fclose($fp);
  209.         exit(API_RETURN_SUCCEED);

  210. } elseif($action == 'updateapps') {

  211.         !API_UPDATEAPPS && exit(API_RETURN_FORBIDDEN);

  212.         $post = uc_unserialize(uc_post_contents());
  213.         $UC_API = $post['UC_API'];
  214.         unset($post['UC_API']);

  215.         $cachefile = DISCUZ_ROOT.'./uc_client/data/cache/apps.php';
  216.         $fp = fopen($cachefile, 'w');
  217.         $s = "<?php\r\n";
  218.         $s .= '$_CACHE[\'apps\'] = '.var_export($post, TRUE).";\r\n";
  219.         fwrite($fp, $s);
  220.         fclose($fp);

  221.         if(is_writeable(DISCUZ_ROOT.'./config.inc.php')) {
  222.                 $configfile = trim(file_get_contents(DISCUZ_ROOT.'./config.inc.php'));
  223.                 $configfile = substr($configfile, -2) == '?>' ? substr($configfile, 0, -2) : $configfile;
  224.                 $configfile = preg_replace("/define\('UC_API',\s*'.*?'\);/i", "define('UC_API', '$UC_API');", $configfile);
  225.                 if($fp = @fopen(DISCUZ_ROOT.'./config.inc.php', 'w')) {
  226.                         @fwrite($fp, trim($configfile));
  227.                         @fclose($fp);
  228.                 }
  229.         }

  230.         exit(API_RETURN_SUCCEED);

  231. } elseif($action == 'updateclient') {

  232.         !API_UPDATECLIENT && exit(API_RETURN_FORBIDDEN);
  233.        
  234.         $post = uc_unserialize(uc_post_contents());
  235.         $cachefile = DISCUZ_ROOT.'./uc_client/data/cache/settings.php';
  236.         $fp = fopen($cachefile, 'w');
  237.         $s = "<?php\r\n";
  238.         $s .= '$_CACHE[\'settings\'] = '.var_export($post, TRUE).";\r\n";
  239.         fwrite($fp, $s);
  240.         fclose($fp);
  241.         exit(API_RETURN_SUCCEED);


  242. } elseif($action == 'updatecredit') {

  243.         !UPDATECREDIT && exit(API_RETURN_FORBIDDEN);

  244.         require_once DISCUZ_ROOT.'./include/db_'.$database.'.class.php';
  245.         require_once DISCUZ_ROOT.'./forumdata/cache/cache_settings.php';

  246.         $db = new dbstuff;
  247.         $db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
  248.         unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);

  249.         $credit = intval($get['credit']);
  250.         $amount = intval($get['amount']);
  251.         $uid = intval($get['uid']);

  252.         $db->query("UPDATE {$tablepre}members SET extcredits$credit=extcredits$credit+'$amount' WHERE uid='$uid'");

  253.         $discuz_user = $db->result_first("SELECT username FROM {$tablepre}members WHERE uid='$uid'");

  254.         $db->query("INSERT INTO {$tablepre}creditslog (uid, fromto, sendcredits, receivecredits, send, receive, dateline, operation)
  255.                         VALUES ('$uid', '$discuz_user', '0', '$credit', '0', '$amount', '$timestamp', 'EXC')");
  256.         exit(API_RETURN_SUCCEED);

  257. } elseif($action == 'getcreditsettings') {

  258.         !API_GETCREDITSETTINGS && exit(API_RETURN_FORBIDDEN);

  259.         require_once DISCUZ_ROOT.'./forumdata/cache/cache_settings.php';

  260.         $credits = array();
  261.         foreach($_DCACHE['settings']['extcredits'] as $id => $extcredits) {
  262.                 $credits[$id] = array($extcredits['title'], $extcredits['unit']);
  263.         }
  264.         echo uc_serialize($credits);

  265. } elseif($action == 'updatecreditsettings') {

  266.         !API_UPDATECREDITSETTINGS && exit(API_RETURN_FORBIDDEN);

  267.         $outextcredits = array();
  268.        
  269.         foreach($get['credit'] as $appid => $credititems) {
  270.                 if($appid == UC_APPID) {
  271.                         foreach($credititems as $value) {
  272.                                 $outextcredits[] = array(
  273.                                         'appiddesc' => $value['appiddesc'],
  274.                                         'creditdesc' => $value['creditdesc'],
  275.                                         'creditsrc' => $value['creditsrc'],
  276.                                         'title' => $value['title'],
  277.                                         'unit' => $value['unit'],
  278.                                         'ratio' => $value['ratio']
  279.                                 );
  280.                         }
  281.                 }
  282.         }

  283.         require_once DISCUZ_ROOT.'./include/db_'.$database.'.class.php';
  284.         require_once DISCUZ_ROOT.'./forumdata/cache/cache_settings.php';
  285.         require_once DISCUZ_ROOT.'./include/cache.func.php';

  286.         $db = new dbstuff;
  287.         $db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect, true, $dbcharset);
  288.         unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);

  289.         $db->query("REPLACE INTO {$tablepre}settings (variable, value) VALUES ('outextcredits', '".addslashes(serialize($outextcredits))."');", 'UNBUFFERED');

  290.         $tmp = array();
  291.         foreach($outextcredits as $value) {
  292.                 $key = $value['appiddesc'].'|'.$value['creditdesc'];
  293.                 if(!isset($tmp[$key])) {
  294.                         $tmp[$key] = array('title' => $value['title'], 'unit' => $value['unit']);
  295.                 }
  296.                 $tmp[$key]['creditsrc'][$value['creditsrc']] = $value['ratio'];
  297.         }
  298.         $_DCACHE['settings']['outextcredits'] = $tmp;
  299.        
  300.         updatesettings();

  301.         exit(API_RETURN_SUCCEED);

  302. } else {

  303.         exit(API_RETURN_FAILED);

  304. }

  305. function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {

  306.         $ckey_length = 4;

  307.         $key = md5($key ? $key : UC_KEY);
  308.         $keya = md5(substr($key, 0, 16));
  309.         $keyb = md5(substr($key, 16, 16));
  310.         $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';

  311.         $cryptkey = $keya.md5($keya.$keyc);
  312.         $key_length = strlen($cryptkey);

  313.         $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
  314.         $string_length = strlen($string);

  315.         $result = '';
  316.         $box = range(0, 255);

  317.         $rndkey = array();
  318.         for($i = 0; $i <= 255; $i++) {
  319.                 $rndkey[$i] = ord($cryptkey[$i % $key_length]);
  320.         }

  321.         for($j = $i = 0; $i < 256; $i++) {
  322.                 $j = ($j + $box[$i] + $rndkey[$i]) % 256;
  323.                 $tmp = $box[$i];
  324.                 $box[$i] = $box[$j];
  325.                 $box[$j] = $tmp;
  326.         }

  327.         for($a = $j = $i = 0; $i < $string_length; $i++) {
  328.                 $a = ($a + 1) % 256;
  329.                 $j = ($j + $box[$a]) % 256;
  330.                 $tmp = $box[$a];
  331.                 $box[$a] = $box[$j];
  332.                 $box[$j] = $tmp;
  333.                 $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
  334.         }

  335.         if($operation == 'DECODE') {
  336.                 if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
  337.                         return substr($result, 26);
  338.                 } else {
  339.                         return '';
  340.                 }
  341.         } else {
  342.                 return $keyc.str_replace('=', '', base64_encode($result));
  343.         }

  344. }

  345. function dsetcookie($var, $value, $life = 0, $prefix = 1) {
  346.         global $cookiepre, $cookiedomain, $cookiepath, $timestamp, $_SERVER;
  347.         setcookie(($prefix ? $cookiepre : '').$var, $value,
  348.                 $life ? $timestamp + $life : 0, $cookiepath,
  349.                 $cookiedomain, $_SERVER['SERVER_PORT'] == 443 ? 1 : 0);
  350. }

  351. function dstripslashes($string) {
  352.         if(is_array($string)) {
  353.                 foreach($string as $key => $val) {
  354.                         $string[$key] = dstripslashes($val);
  355.                 }
  356.         } else {
  357.                 $string = stripslashes($string);
  358.         }
  359.         return $string;
  360. }

  361. function uc_serialize($arr, $htmlon = 0) {
  362.         include_once UC_CLIENT_ROOT.'./lib/xml.class.php';
  363.         return xml_serialize($arr, $htmlon);
  364. }

  365. function uc_unserialize($s) {
  366.         include_once UC_CLIENT_ROOT.'./lib/xml.class.php';
  367.         return xml_unserialize($s);
  368. }

  369. function uc_post_contents() {
  370.         return file_get_contents('php://input');
  371. }
复制代码
回复

使用道具 举报

wispersure 发表于 2010-5-4 19:58:07 | 显示全部楼层
占坑。。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-9-13 03:31 , Processed in 0.124504 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表