| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343 |
- <?php
- /**
- * 来自:信呼开发团队
- * 作者:磐石(rainrock)
- * 网址:http://www.rockoa.com/
- * 系统文件
- */
- class xinhuapiChajian extends Chajian
- {
- private $updatekey = '';
- private $updatekeys = '';
- private $systemnum = '';
- private $smsapikey = '';
- public $qiannum, $sendtype;
- protected function initChajian()
- {
- if (getconfig('systype') == 'dev') {
- $this->updatekeys = 'aHR0cDovLzEyNy4wLjAuMS9hcHAvcm9ja2FwaS8:';
- } else {
- $this->updatekeys = 'aHR0cDovL2FwaS5yb2Nrb2EuY29tLw::';
- }
- $this->updatekey = $this->rock->jm->base64decode($this->updatekeys);
- $this->getsysnum();
- }
- private function getsysnum()
- {
- $dbs = m('option');
- $this->systemnum = $dbs->getval('systemnum');
- $this->smsapikey = $dbs->getval('sms_apikey');
- $this->qiannum = $dbs->getval('sms_qmnum');
- $this->sendtype = $dbs->getval('sms_dirtype');
- if (isempt($this->qiannum)) $this->qiannum = '';
- if (isempt($this->systemnum)) {
- $rnd = md5(str_shuffle('abcedfghijk') . rand(1000, 9999));
- $dbs->setval('systemnum', $rnd);
- $this->systemnum = $rnd;
- }
- return $this->systemnum;
- }
- public function geturlstr($mod, $act, $can = array())
- {
- $url = $this->updatekey;
- $url .= '?m=' . $mod . '&a=' . $act . '';
- $url .= '&host=' . $this->rock->jm->base64encode(HOST) . '&version=' . VERSION . '&randtime=' . time() . '&ip=' . $this->rock->ip . '&xinhukey=' . getconfig('xinhukey') . '&sysnum=' . $this->systemnum . '';
- if (!isempt($this->smsapikey)) $url .= '&smsapikey=' . $this->smsapikey . '';
- $url .= '&authorkey=' . getconfig('authorkey') . '';
- foreach ($can as $k => $v) $url .= '&' . $k . '=' . $v . '';
- return $url;
- }
- public function getdata($mod, $act, $can = array())
- {
- $url = $this->geturlstr($mod, $act, $can);
- $cont = c('curl')->getcurl($url);
- if (!isempt($cont) && contain($cont, 'success')) {
- $data = json_decode($cont, true);
- } else {
- $data = returnerror('无法访问到官网API的,' . $cont . '');
- }
- return $data;
- }
- public function postdata($mod, $act, $can = array())
- {
- $url = $this->geturlstr($mod, $act);
- $cont = c('curl')->postcurl($url, $can);
- if (!isempt($cont) && contain($cont, 'success')) {
- $data = json_decode($cont, true);
- } else {
- $data = returnerror('无法访问到官网API的,' . $cont . '');
- }
- return $data;
- }
- public function urlsmall($url)
- {
- if (isempt($url)) return '';
- $barr = $this->getdata('sms', 'urlsmall', array('url' => $this->rock->jm->base64encode($url)));
- if (!$barr['success']) return $url;
- return $barr['data']['url'];
- }
- public function send($tomobile, $qiannum, $tplnum, $params = array(), $url = '', $addlog = true)
- {
- if (isempt($qiannum)) $qiannum = $this->qiannum;
- if (!isempt($this->sendtype)) {
- if (!isset($params['url']) && $url) $params['url'] = $url;
- $barr = c($this->sendtype)->send($tomobile, $qiannum, $tplnum, $params);
- } else {
- $para['sys_tomobile'] = $tomobile;
- $para['sys_tplnum'] = $tplnum;
- $para['sys_qiannum'] = $qiannum;
- $para['sys_url'] = $this->rock->jm->base64encode($url);
- foreach ($params as $k => $v) $para['can_' . $k . ''] = $v;
- $barr = $this->postdata('sms', 'send', $para);
- }
- if (!$barr['success'] && $addlog) m('log')->addlogs('短信', $barr['msg'], 2);
- return $barr;
- }
- public function sendsms($receid, $qiannum, $tplnum, $params = array(), $url = '', $addlog = true, $isyb = true)
- {
- if (isempt($receid)) return returnerror('没有接收人');
- $receda = explode(',', $receid);
- if (c('check')->iscnmobile($receda[0])) {
- $tomobile = $receid;
- } else {
- $tomobile = m('admin')->getjoinfields($receid, 'mobile');
- }
- if (isempt($tomobile)) return returnerror('接收人[' . $receid . ']可能没设置手机号');
- $toama = explode(',', $tomobile);
- $toarr = array();
- foreach ($toama as $tostr) if (!contain($tostr, '000000')) $toarr[] = $tostr;
- if (!$toarr) return returnerror('接收人的手机号不完整');
- $tomobile = join(',', $toarr);
- if (isempt($qiannum)) $qiannum = $this->qiannum;
- if (getconfig('asynsend') && $isyb) {
- $ybbo = m('reim')->asynurl('asynrun', 'sendsms', array('tomobile' => $tomobile, 'qiannum' => $qiannum, 'tplnum' => $tplnum, 'url' => $this->rock->jm->base64encode($url), 'params' => $this->rock->jm->base64encode(json_encode($params)),));
- if ($ybbo) return returnsuccess('异步发送');
- }
- return $this->send($tomobile, $qiannum, $tplnum, $params, $url, $addlog);
- }
- public function sendanay($m, $a, $can = array(), $runtime = 0)
- {
- $runurl = m('base')->getasynurl($m, $a, $can, 1);
- $barr = $this->sendanayurl($runurl, $runtime);
- return $barr;
- }
- public function sendanayurl($runurl, $runtime = 0)
- {
- if (isempt($runurl)) return returnerror('异步调用地址不能为空');
- $para = array('runurl' => $this->rock->jm->base64encode($runurl), 'runtime' => $runtime,);
- $barr = $this->postdata('anay', 'send', $para);
- if (!$barr['success']) m('log')->addlogs('调用官网异步', $barr['msg'], 2);
- return $barr;
- }
- public function getvercode($tomobile, $device, $tplnum = '', $qiannum = '')
- {
- if (isempt($tomobile)) return returnerror('接收手机号不能为空');
- if ($tplnum == '') $tplnum = m('option')->getval('sms_yanzm');
- if (isempt($tplnum)) $tplnum = 'defyzm';
- $otme = 0;
- $lorsr = m('log')->getone("`type`='获取验证码' and (`optname`='$tomobile' or `device`='$device')", '`optdt`', 'id desc');
- if ($lorsr) $otme = strtotime($lorsr['optdt']);
- $jgtims = 60;
- $jgtime = time() - $otme;
- if ($otme > 0 && $jgtime < $jgtims) return returnerror('获取太频繁,请' . ($jgtims - $jgtime) . '秒后在试');
- $code = '5' . rand(10000, 99999);
- $params['code'] = $code;
- $kaifbo = (getconfig('systype') == 'dev' || getconfig('systype') == 'demo');
- if (!$kaifbo) {
- $barr = $this->send($tomobile, $qiannum, $tplnum, $params);
- } else {
- $barr = returnsuccess('ok');
- }
- if ($barr['success']) {
- m('log')->addlog('获取验证码', '获取验证码为:' . $code . '', array('device' => $device, 'optname' => $tomobile, 'optid' => $code));
- $barr['data'] = '';
- if ($kaifbo) $barr['data'] = $code;
- }
- return $barr;
- }
- public function checkcode($tomobile, $code, $device)
- {
- if (isempt($tomobile)) return returnerror('手机号不能为空');
- if (isempt($code)) return returnerror('验证码不能为空');
- $youxiaq = 5 * 60;
- $optdt = date('Y-m-d H:i:s', time() - $youxiaq);
- $ors = m('log')->getone("`type`='获取验证码' and `optname`='$tomobile' and `device`='$device' and `optdt`>'$optdt'", '`optid`,`optdt`,`id`', '`id` desc');
- if (!$ors) return returnerror('请先获取验证码');
- if ($code != $ors['optid']) return returnerror('验证码错误');
- m('log')->update('`optid`=0', $ors['id']);
- return returnsuccess('ok');
- }
- public function starttask()
- {
- $turl = getconfig('anayurl', URL);
- $url = '' . $turl . 'task.php?m=runt&a=task';
- $barr = $this->postdata('anay', 'starttask', array('runurl' => $this->rock->jm->base64encode($url)));
- return $barr;
- }
- public function stoptask()
- {
- $barr = $this->getdata('anay', 'stoptask');
- return $barr;
- }
- public function officesend($fileid, $lx = 0)
- {
- $yulx = ',doc,docx,xls,xlsx,ppt,pptx,';
- $frs = m('file')->getone($fileid);
- if (!$frs) return returnerror('文件不存在1');
- $filepath = $frs['filepath'];
- $fileext = $frs['fileext'];
- $filepathout = arrvalue($frs, 'filepathout');
- $filesize = floatval($frs['filesize']);
- if (!contain($yulx, ',' . $fileext . ',')) return returnerror('不是文档类型');
- if (isempt($filepath)) return returnerror('文件路径是空的');
- if (substr($filepath, 0, 4) != 'http' && isempt($filepathout) && !file_exists($filepath)) return returnerror('文件不存在2');
- $pdfpath = $frs['pdfpath'];
- if (!isempt($pdfpath) && file_exists($pdfpath)) return returnerror('已转过了');
- $localpath = $frs['filepath'];
- if (substr($filepath, 0, 4) != 'http' && !isempt($filepathout) && !file_exists($filepath)) return returnerror('文件同步到其他平台无法转化预览');
- if (substr($filepath, 0, 4) == 'http') {
- $localpath = '' . UPDIR . '/' . date('Y-m') . '/' . date('d_His') . '' . rand(10, 99) . '_temp.' . $fileext . '';
- $this->rock->createtxt($localpath, @file_get_contents($filepath));
- if (!file_exists($localpath)) return returnerror('无法下载远程文件,不能转换');
- $filesize = filesize($localpath);
- if ($filesize == 0) return returnerror('远程文件已损坏');
- }
- $officeyl = getconfig('officeyl');
- $cache = c('cache');
- $zhkey = 'filetopdf' . $fileid . '';
- $zhval = $cache->get($zhkey);
- if (isempt($zhval)) {
- if ($officeyl == '1') {
- $barr = $this->postdata('office', 'recedata', array('data' => $this->rock->jm->base64encode(file_get_contents($localpath)), 'fileid' => $fileid, 'fileext' => $fileext, 'filesize' => $filesize, 'filesizecn' => $frs['filesizecn'], 'backurl' => $this->rock->jm->base64encode(m('base')->getasynurl('asynrun', 'gwpdf', array('fileid' => $fileid), 2))));
- } else if ($officeyl == '4') {
- $barr = c('libreoffice')->filetopdf($fileid);
- } else {
- if (!contain(PHP_OS, 'WIN')) return returnerror('只能在windows的服务器下转化');
- $bo = c('socket')->topdf($localpath, $fileid, $fileext);
- if (!$bo || is_string($bo)) return returnerror('' . $bo . ',' . c('xinhu')->helpstr('topdf') . '');
- $barr = returnsuccess();
- }
- } else {
- $barr = returnsuccess();
- }
- if ($barr['success']) {
- $times = ceil($filesize / (20 * 1024)) + 10;
- if ($times < 10) $times = 10;
- $cache->set($zhkey, 'true', $times + 5);
- if (!is_array($barr['data'])) $barr['data'] = array();
- $barr['data']['times'] = $times;
- $barr['data']['localpath'] = $this->rock->jm->base64encode($localpath);
- }
- return $barr;
- }
- public function officestatus($fileid)
- {
- if (getconfig('officeyl') == '1') {
- $barr = $this->getdata('office', 'getstatus', array('fileid' => $fileid));
- } else {
- $frs = m('file')->getone($fileid);
- if (!$frs) return returnerror('文件不存在1');
- $filepath = $frs['filepath'];
- $localpath = $this->rock->get('localpath');
- if (!isempt($localpath)) {
- $filepath = $this->rock->jm->base64decode($localpath);
- }
- $pdfpath = str_replace('.' . $frs['fileext'] . '', '.pdf', $filepath);
- $status = 0;
- if (file_exists($pdfpath)) {
- $status = 1;
- }
- if ($status == 1) {
- m('file')->update(array('pdfpath' => $pdfpath), $fileid);
- }
- $barr = returnsuccess(array('status' => $status, 'ftype' => '0'));
- }
- return $barr;
- }
- public function officedown($fileid)
- {
- $barr = $this->getdata('office', 'down', array('fileid' => $fileid));
- if ($barr['success']) {
- $data = $barr['data'];
- $pdfpath = $data['pdfpath'];
- $this->rock->createtxt($pdfpath, $this->rock->jm->base64decode($data['data']));
- m('file')->update(array('pdfpath' => $pdfpath,), $fileid);
- $barr = returnsuccess();
- }
- return $barr;
- }
- public function getjiari()
- {
- $barr = $this->getdata('base', 'getjiari');
- return $barr;
- }
- public function authercheck($key, $ym)
- {
- if (isempt($key)) return returnerror('密钥格不能为空');
- if (isempt($ym)) return returnerror('域名不能为空');
- $barr = $this->getdata('auther', 'check', array('autherkey' => $key, 'yuming' => $ym, 'randkey' => getconfig('randkey')));
- if ($barr['success']) {
- $da = $barr['data'];
- $this->saveauther($da, $key);
- return returnsuccess();
- } else {
- return $barr;
- }
- }
- private function saveauther($da, $key)
- {
- $db = m('option');
- $db->setval('auther_enddt@-101', $da['enddt']);
- $db->setval('auther_yuming@-101', $da['yuming']);
- $db->setval('auther_authkey@-101', $da['authkey']);
- $db->setval('auther_aukey@-101', $key);
- m('chargems')->update("`updatedt`='2020-02-02 02:02:02'", "`type`=0 and `mid` in(1,22)");
- }
- public function autherfile($da, $key, $ym)
- {
- $da['enddt'] = $this->rock->jm->encrypt($this->rock->jm->strunlook($da['enddt'], $key));
- $yuming = $this->rock->jm->strunlook($da['yuming'], $key);
- $xhkey1 = $this->rock->jm->strunlook($da['xhkey'], $key);
- $da['yuming'] = $this->rock->jm->encrypt($yuming);
- $da['authkey'] = $this->rock->jm->base64encode($this->rock->jm->strunlook($da['authkey'], $key));
- $xhkey = getconfig('xinhukey');
- if (isempt($xhkey)) return returnerror($this->rock->jm->base64decode('6K!35YWI5Yiw57O757uf6K6!572u5LiL6K6!572u5L!h5ZG85a6Y572Ra2V5'));
- if ($xhkey1 != $xhkey) return returnerror($this->rock->jm->base64decode('5L!h5ZG85a6Y572Ra2V55LiN5LiA6Ie077yM6K!36YeN5paw6K6!572u'));
- if (!contain(',' . $yuming . ',', ',' . $ym . ',')) return returnerror('' . $ym . '不在签授域名里');
- $this->saveauther($da, $key);
- return returnsuccess();
- }
- public function autherdel()
- {
- $aukey = m('option')->getval('auther_aukey');
- m('option')->update('`value`=null', 'pid=-101');
- if (!isempt($aukey)) {
- $barr = $this->getdata('auther', 'delkey', array('autherkey' => $aukey, 'randkey' => getconfig('randkey')));
- return $barr;
- }
- return returnsuccess();
- }
- }
|