__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?php
/*
* @link http://kodcloud.com/
* @author warlee | e-mail:[email protected]
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kodcloud.com/tools/license/license.txt
*/

class PluginBase{
	public $in;
	public $pluginName;
	public $pluginPath;
	public $pluginHost;
	public $pluginHostDefault;
	public $pluginApi;
	public $packageData;

	private $pluginLangArr;
	private $pluginConfig;
	function __construct(){
		global $in,$config;
		$this->config = &$config;
		$this->in = &$in;

		$this->pluginName = str_replace('Plugin','',get_class($this));
		$this->pluginPath = PLUGIN_DIR.$this->pluginName.'/';
		$this->pluginApi  = rtrim(APP_HOST,'/').'/index.php?pluginApp/to/'.$this->pluginName.'/';
		$this->pluginHost = $this->config['settings']['pluginHost'].$this->pluginName.'/';
		$this->pluginHostDefault = PLUGIN_HOST.$this->pluginName.'/';
		$this->pluginLangArr = $this->initLang();
		return $this;
	}
	public function regiest(){
		$this->hookRegiest(array());
		$this->setConfig(array());
	}
	public function install(){}
	public function update(){}
	public function unInstall(){}


	/**
	 * 注册hook到当前插件配置
	 * @param  [type] $array [description]
	 * @return [type]        [description]
	 */
	final function hookRegiest($array){
		$id = $this->pluginName;
		$systemConfig = &$this->config['settingSystem'];
		if(!is_array($systemConfig['pluginList'])){
			$systemConfig['pluginList'] = array();
		}
		if(is_array($systemConfig['pluginList'][$id])){ 
			$systemConfig['pluginList'][$id]['regiest'] = $array;
		}else{
			$systemConfig['pluginList'][$id] = array(
				'id'		=> $id,
				'regiest'	=> $array,
				'status'	=> 0,
				'config'	=> $this->getConfig()				
			);
		}
	}
	final function appIcon(){
		$package = $this->appPackage();
		$icon = '';
		if(isset($package['source'])){
			if($package['source']['icon']){
				$icon = '<img class="icon" src="'.$package['source']['icon'].'"/>';
			}else if($package['source']['className']){
				$icon = "<i class='icon font-icon ".$package['source']['className']."'></i>";
			}
		}
		return $icon;
	}
	final function filePath($path){
		if(substr($path,0,4) == 'http'){
			if(!request_url_safe($path)){
				show_json(LNG('url error!'),false);
			}
			$cacheName = md5($path.'kodcloud').'.'.get_path_ext($path);
			$cacheFile = $this->filePathName($cacheName);
			mk_dir(get_path_father($cacheFile));
			if(!file_exists($cacheFile)){
				$result = url_request($path,'DOWNLOAD',$cacheFile);
			}
			$path = $cacheFile;
		}else{
			$path = _DIR($path);
			//php7.1,含有中文文件,windows下 curl上传会有问题
			if( strtoupper(substr(PHP_OS, 0,3)) === 'WIN' &&
				version_compare(phpversion(), '7.1.0', '>=') &&
				preg_match("/([\x81-\xfe][\x40-\xfe])/", $path, $match)){

				$cacheName = hash_path($path).'.'.get_path_ext($path);
				$cacheFile = $this->filePathName($cacheName);
				mk_dir(get_path_father($cacheFile));
				if(!file_exists($cacheFile)){
					@copy($path,$cacheFile);
				}
				$path = $cacheFile;
			}
		}
		if (!file_exists($path)) {
			show_tips(LNG('file').' '.LNG('not_exists'));
		}
		return $path;
	}
	private function filePathName($fileName){
		if(! checkExtSafe($fileName)){$fileName = $fileName.'.txt';}
		return TEMP_PATH.$this->pluginName.'/files/'.$fileName;
	}

	/**
	 * 插件配置数据加载
	 * @return [type] [description]
	 */
	final function appPackage(){
		if($this->packageData){
			return $this->packageData;
		}
		$content = $this->parseFile($this->pluginPath.'package.json');
		$this->parseLang($content);
		$result = json_decode_force($content);
		if(!$result){
			return $content;
		}
		$this->packageData = $result;
		return $result;
	}
	
	/**
	 * 获取package.json中的数据;通过key获取,支持auther.copyright 多级获取
	 * @param  [type] $key [description]
	 * @return [type]      [description]
	 */
	public function packageInfoGet($key){
		$data = $this->appPackage();
		$result = null;
		$keyArr = explode('.',$key);
		for ($i = 0; $i < count($keyArr); $i++) {
			if($i == 0){
				$result = $data[$keyArr[$i]];
				continue;
			}
			if(is_array($result)){
				$result = $result[$keyArr[$i]];
			}else{
				return null;
			}
		}
		return $result;
	}
	public function packageVersion(){return $this->packageInfoGet('version');}
	public function packageTitle(){return $this->packageInfoGet('title');}
	public function packageCopyright(){return $this->packageInfoGet('auther.copyright');}

	private function parseFile($file){
		$content = file_get_contents($file);
		$replaceFrom = array(
			'{{pluginHost}}',
			'{{pluginHostDefault}}',
			'{{pluginApi}}',
			'{{pluginName}}',
			'{{pluginPath}}',
			'{{appHost}}',
			'{{staticPath}}',
			//"\r","\n"
		);
		$replaceTo = array(
			$this->pluginHost,
			$this->pluginHostDefault,
			$this->pluginApi,
			$this->pluginName,
			$this->pluginPath,
			APP_HOST,
			$this->config['settings']['staticPath'],
			//" "," "
		);
		$content = str_replace($replaceFrom,$replaceTo,$content);
		return $content;
	}

	private function parseLang(&$content){
		$pre = '{{LNG.';
		if(!strstr($content,$pre)){
			return;
		}
		preg_match_all('/{{LNG\..*}}/isU',$content,$match);
		if( !is_array($match) || count($match) == 0 ||
			!is_array($match[0]) || count($match[0]) == 0 ){
			return;
		}
		$replaceFrom = array();
		$replaceTo   = array();
		foreach ($match[0] as $key) {
			$langKey = substr($key,strlen($pre),-2); //{{LNG.file}}
			$langVal = LNG($langKey);

			$replaceFrom[] = $key;
			$replaceTo[]   = str_replace(
				array("\n","\r","\t",'"'),
				array(' ',' ','','\\"'),
				$langVal
			);
		}
		$content = str_replace($replaceFrom,$replaceTo,$content);
	}
	private function parseConfig(&$content){
		$config = $this->getConfig();
		$pre = '{{config.';
		if(!strstr($content,$pre)){
			return;
		}
		preg_match_all('/{{config\..*}}/isU',$content,$match);
		if( !is_array($match) || count($match) == 0 ||
			!is_array($match[0]) || count($match[0]) == 0 ){
			return;
		}
		$replaceFrom = array();
		$replaceTo   = array();
		foreach ($match[0] as $key) {
			$langKey = substr($key,strlen($pre),-2); //{{config.file}}
			$replaceFrom[] = $key;
			$replaceTo[]   = $config[$langKey];
		}
		$content = str_replace($replaceFrom,$replaceTo,$content);
	}

	/**
	 * 输出文件
	 * @param  [type] $file [description]
	 * @return [type]       [description]
	 */
	final function echoFile($file,$replace=false){
		$filePath = $this->pluginPath.$file;
		if(ACT == 'commonJs'){
			echo "\n/* [".$this->pluginName.'/'.$file."] */";
			if(!file_exists($filePath)){
				echo "   /* ==>[not exist]*/";
				return;
			}
		}
						
		$content = $this->parseFile($filePath);
		$this->parseLang($content);
		$this->parseConfig($content);
		if(is_array($replace) && count($replace) == 2){
			$content = str_replace($replace[0],$replace[1],$content);
		}
		echo "\n".$content;
	}

	/**
	 * 初始化多语言
	 * @return [type] [description]
	 */
	final function initLang(){
		$default = 'en';
		$path = $this->pluginPath.'i18n/';
		$lang = I18n::getType();
		$array = array();
		if(file_exists($path.$lang.'.php')){
			$array = include($path.$lang.'.php');
		}else if(file_exists($path.$default.'.php')){
			$array = include($path.$default.'.php');
		}
		if(!is_array($array)) return array();
		if(count($array) > 0){
			I18n::set($array);
		}
		return $array;
	}

	final function isFileExtence($st,$act){
		if(in_array($st,array('desktop','editor','explorer','share','api'))){
			return true;
		}
		return false;
	}

	/**
	 * 获取插件配置
	 * @return [type] [description]
	 */
	final function getConfig(){
		if(!$this->pluginConfig){
			$model = new PluginModel();
			$this->pluginConfig = $model->getConfig($this->pluginName);
		}
		return $this->pluginConfig;		
	}

	/**
	 * 修改插件配置
	 * @return [type] [description]
	 */
	final function setConfig($value){
		$model = new PluginModel();
		return $model->setConfig($this->pluginName,$value);
	}
}


Filemanager

Name Type Size Permission Actions
archiveLib Folder 6775
Downloader.class.php File 5.08 KB 0775
FileCache.class.php File 6.21 KB 0775
Hook.class.php File 2.93 KB 0775
I18n.class.php File 2.91 KB 0775
ImageThumb.class.php File 8.7 KB 0775
KodArchive.class.php File 10.12 KB 0775
Mcrypt.class.php File 4 KB 0775
PluginBase.class.php File 8.05 KB 0775
imageGdBMP.class.php File 7.87 KB 0775
Filemanager