Server : nginx/1.22.1
System : Linux iZwz9daxib3w3i063fw434Z 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64
User : www ( 1000)
PHP Version : 5.6.40
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /www/wwwroot/www.jkmold.com/phpsso_server/phpcms/modules/admin/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /www/wwwroot/www.jkmold.com/phpsso_server/phpcms/modules/admin/applications.php
<?php

defined('IN_PHPCMS') or exit('No permission resources.');

pc_base::load_app_class('admin','admin',0);

class applications extends admin {

	

	private $db;

	public function __construct() {

		$this->db = pc_base::load_model('applications_model');

		parent::__construct();

	}

	

	public function init() {

		$page = isset($_GET['page']) && intval($_GET['page']) ? intval($_GET['page']) : 1;

		$pagesize = 20;

		$offset = ($page - 1) * $pagesize;

		$total = $this->db->count();

		$pages = pages($total, $page, $pagesize);

		$list = $this->db->select('', '*', $offset.','.$pagesize);

		include $this->admin_tpl('applications_list');

	}

	

	public function add() {

		header("Cache-control: private"); 

		if (isset($_POST['dosubmit'])) {

			$name = isset($_POST['name']) && trim($_POST['name']) ? trim($_POST['name']) : showmessage(L('application_name').L('can_not_be_empty'));

			$url = isset($_POST['url']) && trim($_POST['url']) ? trim($_POST['url']) : showmessage(L('application_url').L('can_not_be_empty'));

			$authkey = isset($_POST['authkey']) && trim($_POST['authkey']) ? trim($_POST['authkey']) : showmessage(L('authkey').L('can_not_be_empty'));

			$type = isset($_POST['type']) && trim($_POST['type']) ? trim($_POST['type']) : showmessage(L('type').L('can_not_be_empty'));

			$ip = isset($_POST['ip']) && trim($_POST['ip']) ? trim($_POST['ip']) : '';

			$apifilename = isset($_POST['apifilename']) && trim($_POST['apifilename']) ? trim($_POST['apifilename']) : showmessage(L('application_apifilename').L('can_not_be_empty'));

			$charset = isset($_POST['charset']) && trim($_POST['charset']) ? trim($_POST['charset']) : showmessage(L('application_charset').L('can_not_be_empty'));

			$synlogin = isset($_POST['synlogin']) && intval($_POST['synlogin']) ? intval($_POST['synlogin']) : 0;

			if ($this->db->get_one(array('name'=>$name))) {

				showmessage(L('application_name').L('exist'));

			}

			if ($this->db->get_one(array('url'=>$url))) {

				showmessage(L('application_url').L('exist'));

			}

			if ($this->db->insert(array('name'=>$name,'url'=>$url, 'authkey'=>$authkey, 'type'=>$type, 'ip'=>$ip, 'apifilename'=>$apifilename, 'charset'=>$charset, 'synlogin'=>$synlogin))) {

				/*写入应用列表缓存*/

				$applist = $this->db->listinfo('', '', 1, 100, 'appid');

				setcache('applist', $applist);

				

				showmessage(L('operation_success'), '?m=admin&c=applications&a=init');

			} else {

				showmessage(L('operation_failure'));

			}

		}

		include $this->admin_tpl('applications_add');

	}

	

	public function del() {

		$appid = isset($_GET['appid']) && intval($_GET['appid']) ? intval($_GET['appid']) : showmessage(L('illegal_parameters'), HTTP_REFERER);

		if ($r = $this->db->get_one(array('appid'=>$appid))) {

			if ($this->db->delete(array('appid'=>$appid))) {

				/*写入应用列表缓存*/

				$applist = $this->db->listinfo('', '', 1, 100, 'appid');

				setcache('applist', $applist);

				

				showmessage(L('operation_success'), HTTP_REFERER);

			} else {

				showmessage(L('operation_failure'), HTTP_REFERER);

			}		

		} else {

			showmessage(L('application_not_exist'), HTTP_REFERER);

		}

	}

	

	public function edit() {

		header("Cache-control: private");

		$appid = isset($_GET['appid']) && intval($_GET['appid']) ? intval($_GET['appid']) : showmessage(L('illegal_parameters'), HTTP_REFERER);

		if ($data = $this->db->get_one(array('appid'=>$appid))) {

			if (isset($_POST['dosubmit'])) {

				$name = isset($_POST['name']) && trim($_POST['name']) ? trim($_POST['name']) : showmessage(L('application_name').L('can_not_be_empty'));

				$url = isset($_POST['url']) && trim($_POST['url']) ? trim($_POST['url']) : showmessage(L('application_url').L('can_not_be_empty'));

				$authkey = isset($_POST['authkey']) && trim($_POST['authkey']) ? trim($_POST['authkey']) : showmessage(L('authkey').L('can_not_be_empty'));

				$type = isset($_POST['type']) && trim($_POST['type']) ? trim($_POST['type']) : showmessage(L('type').L('can_not_be_empty'));

				$ip = isset($_POST['ip']) && trim($_POST['ip']) ? trim($_POST['ip']) : '';

				$apifilename = isset($_POST['apifilename']) && trim($_POST['apifilename']) ? trim($_POST['apifilename']) : showmessage(L('application_apifilename').L('can_not_be_empty'));

				$charset = isset($_POST['charset']) && trim($_POST['charset']) ? trim($_POST['charset']) : showmessage(L('application_charset').L('can_not_be_empty'));

				$synlogin = isset($_POST['synlogin']) && intval($_POST['synlogin']) ? intval($_POST['synlogin']) : 0;

				if ($data['name'] != $name && $this->db->get_one(array('name'=>$name))) {

					showmessage(L('application_name').L('exist'));

				}

				if ($data['url'] != $url && $this->db->get_one(array('url'=>$url))) {

					showmessage(L('application_url').L('exist'));

				}

				if ($this->db->update(array('name'=>$name,'url'=>$url, 'authkey'=>$authkey, 'type'=>$type, 'ip'=>$ip, 'apifilename'=>$apifilename, 'charset'=>$charset, 'synlogin'=>$synlogin), array('appid'=>$appid))) {

					/*写入应用列表缓存*/

					$applist = $this->db->listinfo('', '', 1, 100, 'appid');

					setcache('applist', $applist);

					

					showmessage(L('operation_success'), '?m=admin&c=applications&a=init');

				} else {

					showmessage(L('operation_failure'));

				}

			}

			include $this->admin_tpl('applications_edit');

		} else {

			showmessage(L('application_not_exist'));

		}

	}

	

	public function ajax_name() {

		$name = isset($_GET['name']) && trim($_GET['name']) ?  (pc_base::load_config('system','charset')=='gbk' ? iconv('utf-8', 'gbk', trim($_GET['name'])) : trim($_GET['name'])) : exit('0');

		$id = isset($_GET['id']) && intval($_GET['id']) ? intval($_GET['id']) : '';

		if ($id) {

			$r = $this->db->get_one(array('appid'=>$id), 'name');

			if ($r['name'] == $name) {

				exit('1');

			}

		}

		if ($this->db->get_one(array("name"=>$name), 'appid')) {

			echo 0;

		} else {

			echo 1;

		}

	}

	

	public function ajax_url() {

		$url = isset($_GET['url']) && trim($_GET['url']) ?  trim($_GET['url']) : exit('0');

		$id = isset($_GET['id']) && intval($_GET['id']) ? intval($_GET['id']) : '';

		if ($id) {

			$r = $this->db->get_one(array('appid'=>$id), 'url');

			if ($r['url'] == $url) {

				exit('1');

			}

		}

		if ($this->db->get_one(array("url"=>$url), 'appid')) {

			exit('0');

		} else {

			exit('1');

		}

	}

	

	public function check_status() {

		$appid = isset($_GET['appid']) && intval($_GET['appid']) ? intval($_GET['appid']) : exit('0');

		$applist = getcache('applist');

		if(empty($applist)) {

			/*写入应用列表缓存*/

			$applist = $this->db->listinfo('', '', 1, 100, 'appid');

			setcache('applist', $applist);

		}



		if (!empty($applist)) {

			$param = sys_auth('action=check_status', 'ENCODE', $applist[$appid]['authkey']);

			//如果填写ip则通信地址为ip地址,此时绑定了多个虚拟主机有可能出现错误

			$appurl = !empty($applist[$appid]['ip']) ? 'http://'.$applist[$appid]['ip'].'/api/' : $applist[$appid]['url'];

			$url = $appurl.$applist[$appid]['apifilename'];

			if (strpos($url, '?')) {

				$url .= '&';

			} else {

				$url .= "?";

			}



			if ($data = @file_get_contents($url.'code='.urlencode($param))) {

				exit($data);

			} else {

				exit('0');

			}

		} else {

			exit('0');

		}

	}

}