From 9fb8f1d96f5bd25c9278d3667c28e3fcdb3258a5 Mon Sep 17 00:00:00 2001 From: zorlan <285909184@qq.com> Date: Thu, 8 Dec 2022 11:13:01 +0800 Subject: [PATCH] 2.5.2 --- vendor/skycaiji/app/admin/model/Proxyip.php | 272 -------------------- 1 file changed, 272 deletions(-) delete mode 100644 vendor/skycaiji/app/admin/model/Proxyip.php diff --git a/vendor/skycaiji/app/admin/model/Proxyip.php b/vendor/skycaiji/app/admin/model/Proxyip.php deleted file mode 100644 index 8c16503..0000000 --- a/vendor/skycaiji/app/admin/model/Proxyip.php +++ /dev/null @@ -1,272 +0,0 @@ -$ip[0], - 'port'=>$ip[1], - 'type'=>$proxyDbIp['type'], - ); - if(!empty($proxyDbIp['user'])){ - - $proxyIp['user']=$proxyDbIp['user']; - $proxyIp['pwd']=$proxyDbIp['pwd']; - } - return $proxyIp; - } - /*获取可用的ip*/ - public function get_usable_ip(){ - $config=g_sc_c('proxy'); - init_array($config); - - if(!empty($config['open'])){ - - $cond=array(); - $order=null; - if(!empty($config['use'])){ - - if($config['use']=='num'){ - - $cond['num']=array('lt',$config['use_num']); - $order='no desc'; - }elseif($config['use']=='time'){ - - $cond['time']=array(array('eq',0),array('gt',time()-$config['use_time']*60), 'or') ; - $order='no desc'; - } - }else{ - - $cond['num']=array('lt',1); - } - if(!empty($config['group_id'])){ - - $cond['group_id']=$config['group_id']; - } - $cond['invalid']=0; - $proxyipData=$this->where($cond)->order($order)->find(); - - if(empty($proxyipData)&&!empty($config['api']['open'])){ - - $apiInsert=strtolower($config['api']['insert']); - if(empty($apiInsert)){ - - $cond2=array(); - if(!empty($config['group_id'])){ - - $cond2['group_id']=$config['group_id']; - } - $cond2['invalid']=0; - if($this->where($cond2)->count()<=0){ - - $this->add_api_ips(); - $proxyipData=$this->where($cond)->order($order)->find(); - } - }elseif($apiInsert=='end'){ - - $this->add_api_ips(); - $proxyipData=$this->where($cond)->order($order)->find(); - } - } - - if(empty($proxyipData)){ - - if(!empty($config['use'])){ - - if($config['use']=='num'){ - $this->strict(false)->where('1=1')->update(array('num'=>0)); - }elseif($config['use']=='time'){ - $this->strict(false)->where('1=1')->update(array('time'=>0)); - } - }else{ - - $this->strict(false)->where('1=1')->update(array('num'=>0)); - } - $proxyipData=$this->where($cond)->order($order)->find(); - } - if(!empty($proxyipData)){ - - $upData=array(); - if(!empty($config['use'])){ - - if($config['use']=='num'){ - - $upData['num']=$proxyipData['num']+1; - }elseif($config['use']=='time'){ - - if(empty($proxyipData['time'])){ - - $upData['time']=time(); - } - } - }else{ - - $upData['num']=$proxyipData['num']+1; - } - $this->strict(false)->where(array('ip'=>$proxyipData['ip']))->update($upData); - } - return $proxyipData; - } - return null; - } - /*ip失败次数*/ - public function set_ip_failed($proxy_ip){ - if(empty($proxy_ip)){ - return; - } - $upData=array(); - $upData['failed']=intval($proxy_ip['failed'])+1; - $failed=g_sc_c('proxy','failed'); - if(!empty($failed)){ - - if($upData['failed']>=$failed){ - - $upData['invalid']=1; - } - } - $this->strict(false)->where(array('ip'=>$proxy_ip['ip']))->update($upData); - } - /*代理类型*/ - public function proxy_types(){ - return array('http(s)'=>'','socks4'=>'socks4','socks5'=>'socks5'); - } - /*匹配格式的ip*/ - public function get_format_ips($html,$format,$multiple=false){ - if(empty($html)||empty($format)){ - return null; - } - $format=$this->convert_format($format); - - if(!$multiple){ - - $ip=null; - if(preg_match('/'.$format.'/i',$html,$mip)){ - $ip=array( - 'ip'=>$mip['ip'], - 'port'=>$mip['port'], - 'user'=>$mip['user'], - 'pwd'=>$mip['pwd'], - ); - } - return $ip; - }else{ - - $ips=array(); - if(preg_match_all('/'.$format.'/i',$html,$mips)){ - init_array($mips['ip']); - init_array($mips['port']); - init_array($mips['user']); - init_array($mips['pwd']); - for($i=0;$i$mips['ip'][$i], - 'port'=>$mips['port'][$i], - 'user'=>$mips['user'][$i], - 'pwd'=>$mips['pwd'][$i], - ); - } - } - return $ips; - } - return null; - } - /*转换api匹配格式*/ - public function convert_format($format){ - static $list=array(); - $md5=md5($format); - if(!isset($list[$md5])){ - $format=controller('admin/Cpattern','event')->correct_reg_pattern($format); - $format=str_replace(array('[ip]','[端口]','[用户名]','[密码]','(*)') - ,array('(?P(\d+\.){3}\d+)','(?P\d+)','(?P[^\s\\\'\"\<\>\,]*)','(?P[^\s\\\'\"\<\>\,]*)','[\s\S]*?') - ,$format); - - $list[$md5]=$format; - }else{ - $format=$list[$md5]; - } - return $format; - } - /*转换成数据库形式*/ - public function ips_format2db($ipList,$default=array()){ - $ipList=is_array($ipList)?$ipList:array(); - $default=is_array($default)?$default:array(); - $nowTime=time(); - foreach ($ipList as $k=>$ip){ - if(empty($ip)||empty($ip['ip'])){ - unset($ipList[$k]); - continue; - } - if(empty($ip['user'])){ - $ip['user']=$default['user']; - - $ip['pwd']=$default['pwd']; - } - $ip['ip']=$ip['ip'].':'.$ip['port']; - $ip['type']=$default['type']; - $ip['group_id']=$default['group_id']; - $ip['addtime']=$nowTime; - unset($ip['port']); - $ipList[$k]=$ip; - } - return $ipList; - } - - - private function add_api_ips(){ - $config=g_sc_c('proxy'); - if(!is_array($config)||empty($config['api'])||empty($config['api']['open'])||!is_array($config['apis'])){ - return; - } - foreach ($config['apis'] as $api){ - if(empty($api['api_url'])||!preg_match('/^\w+\:\/\//',$api['api_url'])||empty($api['api_format'])){ - - continue; - } - $timeout=intval($api['api_interval']); - $timeout=$timeout>0?$timeout*60:60; - $cname=md5($api['api_url']); - $mcahce=CacheModel::getInstance('proxy_api'); - if($mcahce->expire($cname,$timeout)){ - - $mcahce->setCache($cname, 1); - $html=get_html($api['api_url']); - $ips=$this->get_format_ips($html, $api['api_format'],true); - $ips = $this->ips_format2db ( $ips, array ( - 'type' => $api ['api_type']?$api ['api_type']:'', - 'user' => $api ['api_user']?$api ['api_user']:'', - 'pwd' => $api ['api_pwd']?$api ['api_pwd']:'', - 'group_id' => $api ['api_group_id']?$api ['api_group_id']:'', - ) ); - - if(!empty($ips)){ - - $this->strict(false)->insertAll($ips,true,500); - } - } - } - } -} - -?> \ No newline at end of file