123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- <?php
- /**
- * [Discuz!] (C)2001-2099 Comsenz Inc.
- * This is NOT a freeware, use is subject to license terms
- *
- * $Id: index.php 23508 2011-07-21 06:34:40Z cnteacher $
- */
- define('IN_API', true);
- define('CURSCRIPT', 'api_mserver');
- define('APPTYPEID', 200);
- $_ENV['remote'] = new discuz_remote();
- $_ENV['remote']->init();
- $_ENV['remote']->loadservice();
- class discuz_remote {
- var $mod;
- var $modobj;
- var $core;
- function init() {
- require_once('../../source/class/class_core.php');
- $cachelist = array();
- $this->core = C::app();
- $this->core->cachelist = $cachelist;
- $this->core->init_setting = true;
- $this->core->init_cron = false;
- $this->core->init_user = false;
- $this->core->init_session = false;
- $this->core->init_misc = false;
- $this->core->init_mobile = false;
- $this->core->init();
- define('SERVICE_DIR', getglobal('config/remote/dir') ? getglobal('config/remote/dir') : 'remote');
- $this->core->reject_robot();
- if (empty($_GET['mod']) || preg_match('/[^0-9a-z]/i', $_GET['mod'])) {
- $this->mod = 'index';
- } else {
- $this->mod = $_GET['mod'];
- }
- }
- function loadservice() {
- if(!$this->core->config['remote']['on']) {
- remote_service::error(1, 'remote service is down');
- }
- if(!$this->core->config['remote']['appkey']) {
- remote_service::error(1, 'remote service need a appkey, please edit you config.global.php');
- }
- if ($this->mod != 'index') {
- $sign = $_GET['sign'];
- unset($_GET['sign']);
- if (empty($sign) || $sign != $this->sign($_GET)) {
- }
- }
- if(!$this->check_timestamp()) {
- remote_service::error(5, 'your request is time out');
- }
- $modfile = DISCUZ_ROOT . './api/' . SERVICE_DIR . '/mod/mod_' . $this->mod . '.php';
- if (!is_file($modfile)) {
- remote_service::error(3, 'mod file is missing');
- }
- require $modfile;
- $classname = 'mod_'.$this->mod;
- if(class_exists($classname)) {
- $service = new $classname;
- $service->run();
- }
- }
- function check_timestamp()
- {
- if(empty($_GET['timestamp'])) {
- return 1;
- }
- $ttl = abs(empty($_GET['ttl']) ? 600 : $_GET['ttl']);
- $check = abs(TIMESTAMP - $_GET['timestamp']);
- return $check > $ttl ? 0 : 1;
- }
- function sign($arg) {
- $str = '';
- foreach ($arg as $k => $v) {
- $str .= $k . '=' . $v . '&';
- }
- return md5($str . getglobal('config/remote/appkey'));
- }
- }
- class remote_service {
- var $version = '1.0.0';
- var $config;
- function remote_service() {
- $this->config = getglobal('config/remote');
- }
- function run() {
- remote_service::success('service is done.');
- }
- function error($code, $msg) {
- $code = sprintf("%04d", $code);
- echo $code.':'.ucfirst($msg);
- exit();
- }
- function success($msg) {
- remote_service::error(0, $msg);
- }
- }
- ?>
|