From 1e794284257a58b2dca422e0e0764a5268f30061 Mon Sep 17 00:00:00 2001
From: HFO4 <912394456@qq.com>
Date: Tue, 13 Feb 2018 16:11:15 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=BF=9C=E7=A8=8B=E4=B8=8A?=
=?UTF-8?q?=E4=BC=A0=E7=AD=96=E7=95=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
application/index/controller/Admin.php | 6 +
application/index/model/FileManage.php | 24 ++-
application/index/model/Remote.php | 14 ++
application/index/view/admin/add_policy.html | 12 +-
.../index/view/admin/add_policy_remote.html | 170 ++++++++++++++++++
application/index/view/admin/edit_policy.html | 126 ++++++++++++-
application/index/view/admin/policy_list.html | 4 +
static/img/remote.png | Bin 0 -> 21922 bytes
8 files changed, 353 insertions(+), 3 deletions(-)
create mode 100644 application/index/view/admin/add_policy_remote.html
create mode 100644 static/img/remote.png
diff --git a/application/index/controller/Admin.php b/application/index/controller/Admin.php
index 00bceabe..15a13ea6 100644
--- a/application/index/controller/Admin.php
+++ b/application/index/controller/Admin.php
@@ -409,6 +409,12 @@ class Admin extends Controller{
]);
}
+ public function PolicyAddRemote(){
+ return view('add_policy_remote', [
+ 'options' => $this->siteOptions,
+ ]);
+ }
+
public function About(){
$verison = json_decode(file_get_contents(ROOT_PATH . "application/version.json"),true);
return view('about', [
diff --git a/application/index/model/FileManage.php b/application/index/model/FileManage.php
index a537694b..b256641e 100644
--- a/application/index/model/FileManage.php
+++ b/application/index/model/FileManage.php
@@ -67,6 +67,9 @@ class FileManage extends Model{
case 's3':
$fileContent = $this->getS3FileContent();
break;
+ case 'remote':
+ $fileContent = $this->getRemoteFileContent();
+ break;
default:
# code...
break;
@@ -101,6 +104,10 @@ class FileManage extends Model{
return file_get_contents($this->s3Preview()[1]);
}
+ public function getRemoteFileContent(){
+ return file_get_contents($this->remotePreview()[1]);
+ }
+
public function saveContent($content){
$contentSize = strlen($content);
$originSize = $this->fileData["size"];
@@ -125,6 +132,9 @@ class FileManage extends Model{
case 's3':
$this->saveS3Content($content);
break;
+ case 'remote':
+ $this->saveRemoteContent($content);
+ break;
default:
# code...
break;
@@ -180,6 +190,11 @@ class FileManage extends Model{
$s3->putObjectString($content, $this->policyData["bucketname"], $this->fileData["pre_name"]);
}
+ public function saveRemoteContent($content){
+ $remote = new Remote($this->policyData);
+ $remote->updateContent($this->fileData["pre_name"],$content);
+ }
+
static function fileNameValidate($value){
$validate = new Validate([
'val' => 'require|max:250',
@@ -365,6 +380,10 @@ class FileManage extends Model{
$Redirect = $this->getUpyunThumb();
return $Redirect;
break;
+ case 'remote':
+ $remote = new Remote($this->policyData);
+ return [1,$remote->thumb($this->fileData["pre_name"],explode(",",$this->fileData["pic_info"]))];
+ break;
default:
# code...
break;
@@ -1263,7 +1282,10 @@ class FileManage extends Model{
$delayTime = time()+$timeOut;
$key=$this->fileData["id"].":".$delayTime.":".md5($this->userData["user_pass"].$this->fileData["id"].$delayTime.config("salt"));
return $options['siteURL']."Callback/TmpPreview/key/".$key;
- break;
+ break;
+ case 'remote':
+ return $this->remotePreview()[1];
+ break;
default:
# code...
break;
diff --git a/application/index/model/Remote.php b/application/index/model/Remote.php
index 5ceb3a9f..d74b9824 100644
--- a/application/index/model/Remote.php
+++ b/application/index/model/Remote.php
@@ -25,15 +25,29 @@ class Remote extends Model{
return $this->signUrl($this->policy["url"]."object.php?action=preview&name=".urlencode($fname)."&expires=".(time()+(int)Option::getValue("timeout")));
}
+ public function clean(){
+ return $this->signUrl($this->policy["url"]."object.php?action=clean&expires=".(time()+(int)Option::getValue("timeout")));
+ }
+
public function download($fname,$attnanme){
return $this->signUrl($this->policy["url"]."object.php?action=download&name=".urlencode($fname)."&attaname=".urlencode($attnanme)."&expires=".(time()+(int)Option::getValue("timeout")));
}
+
+ public function thumb($fname,$picInfo){
+ return $this->signUrl($this->policy["url"]."object.php?action=thumb&name=".urlencode($fname)."&expires=".(time()+(int)Option::getValue("timeout"))."&w=".$picInfo[0]."&h=".$picInfo[1]);
+ }
public function signUrl($url){
$signKey = hash_hmac("sha256",$url,"GET".$this->policy["sk"]);
return $url."&auth=".$signKey;
}
+ public function updateContent($fname,$content){
+ $object = ["fname"=>$fname,"content"=>$content];
+ $signKey = $this->sign($object,"UPDATE");
+ $this->send("manager.php",$signKey,"UPDATE",base64_encode(json_encode($object)));
+ }
+
public function send($target,$auth,$action,$object){
$session = curl_init($this->policy["server"].$target);
$postData = array(
diff --git a/application/index/view/admin/add_policy.html b/application/index/view/admin/add_policy.html
index ce471801..cf1205b2 100644
--- a/application/index/view/admin/add_policy.html
+++ b/application/index/view/admin/add_policy.html
@@ -67,11 +67,21 @@
q$s zQ%8@(NDXTk5N|7Tc#Vglt5dm-IrPfo>-8SZdw>&bW8*OiwtQFFLU-Y2bE-pFV=h)x zu~$2@Y!DnUm-|*@aqVmaQ|s)&qTi%Te|yN~LwM__C3$%|*^75AB#xz+^<>Zxa37;>I}?G#^T zhigyXQ_;B=!YtaRzP>i0AyT*Y2djhkMF6|}1fL-osU^^n=~muJ(McaHFA-hHI?LU5O*!!$FR6 zIWfR-Lv*{=VjEU<1cw*T!s@8EI+b{Z9c#ACF4q}1fY-dB%Lw5N8)fg7NV{N{;H6*g z>*cAV(r;lcQg>?qRaV`Xt!Cj_L+KskM(@uln;ioi2xjK=zWto ynIn^v5n<#4+1UvG ry9u>u0 z=bW+o)Y4^~ WNYqNx*dEKu)64CNo~imx8L-^tvO`{#K`x(toO?FsCz{PmZ%G`u z+nVU?HWM;?=;afHzqy-fV|rv5a6-;G#?P)lDdQW@Mi6!Tu>zJGy|v6r)$B*W%JuYq z((2M0$IrF*3NVe+EbnZvx>JKi=&|Z%veu`to2HkhuzSOf%(?%@l~jt!GRyA Y~<;cW6!Bf@&!qUl(J{wkzw2vEv*CAboW z^D5}~9h9%0+vQ3WO~*)DIA)8SYhcQmtxl6*>Qe2;a>>;SBt8FhJj(oqkO{9Ia1-!k zP^m GZEl7+N`A3qte8jjhl=+1h1N}JyMs$Am?yY5J2$D9FR z6Ffc^0+yeilTx*2I<6KwuLncAc&>*PC`)zBZkmdnc|sW&YZR?WmsfNhP3EO&MN+ z<&> x569O`W^K@R(28gLXxFt?fK#%yM=3o9(j#5v`sw zg*D4> oO0 z#S#-NRKeZH?-;>2d;0}a8PTZNvdEK&e2?BI|{t o_}I7nXq2+^6zI z=9+@mhtW^Wr%hAy9EaL~Ga&Ong#hX^5Lr7d*^vh?=zKET?lipe)K)m(|Jq2sv0FGj zk7EGwc|5x>;Xkq=keP|;)AJEfy5`I{g46wYEXpF!v(rF;gA|eeEY(o0tM};mL81iK z+WB=sx=onp<7b0)Cj=I(D$%-egFA-YYbJUt?&MkxE$z!g?VdK_Wp z!BUg*2rVu_!X~|Fx?y^@Cb23pa#JlUxEc&S4*^4+a-U@z?{F&J0rnd1h;&bUK_}AQ za1ml$G+wS95P3bv^At7(H){_}4IJQi%N}K4;K}Dil8!5H?4+B@{!d|f(*mEmS7p`0 zRWNqmK6_8$_zoNkBVB-ZU`M1EaO-~ N9p&^T)6t2R;axpm??+_QblVYUKYs| zbl5n}N9MAjk*o3h2lx2EX(3Rc4$^aB>c14eF|1;B|LCkjVtTHLoP}|Q4u67oXs;X( zQ-l`0I3~+dcR~hSB`;H8T`A+y9*Va2seByXSNouZ&%)F5Y)3!cF(py@A;t)CbtySj z4~6$oS-afhDhl2!^AAq~^$6l1+wlP3+_yl1#T8bX%WkGy>p5}#DIZi>Lmk{OClO_i zbwNM5<+D1TqPz=o2F#uCyjNBSVu;W&D4h37ebBRaJSL`Ud26}{*k%Ui3Qhuyn{E4f z+}C>?dm3zA3FUCGqg8cHqs>)8PJ#ZM!ptS-uISs`0l@83N$Bc}X0$*{*=D4*fttOu zJBLc1z~Dnr)SrXM+;aBKjc0Yv7mxWk+!2>P3na{>=YYSXV@fu;U7FVv8b!|-XjMk_ zE2V{27t6dVYYn-DKi_d9F(z|Q;f*syC;ga4L*R%pE*d;Cp1Lb+_D?AnS=u1di05$V zg`wGNSFp9a3fe!kbrqw_>PS0pf&nu`{h2uKrs(IRz1mGNp;BNC72icm#n!tGue!`N zj!V;v9lNg!1iOl2t7OBg8gu^C^$&z1kyBQrQ{}_+zss~4We0OTuA--Xt8=;>C>kGd zU+xdtkf}swpE$bwY2itU#M18p134wr{l!Jz6LM3I48TD)06cTKVC$hF4X`pX{0!8N z(s9pYu{vcJATvM`3Q3Iv>Tb=<7R6e2T~*;C*0%MT4cqY@lQ|W2Fxi?eeXX>#=c1)g z=9c30`Z*U`Y2Dg@;*Bemhqq+RO1?(#nm`4qubAIX>E@Lcpcn^IL{#_ z<9ehMGp@0OeCt3doC UO zjWX^`8ePE`bf-+3MsTB>9)1|kiVQTEbgKjI_JJB3A#U3|9RZXH-fA|!D6b;pWU-Go z()$L>r!N(>r?27M)E^21&oH_cYcncHwW2(h-J6BesX2b;8^g~rkeQX!n}YntZzbHO zW`Kjo_;XNE=8!W`>NykUXSo%fofhuO%f)XR)s4_EBv;wRn>$PmLed?Um6dJz#6>M9 zB)W3Zz|psfTA%E*s68(479R9q;qE*vMIwu+xiLgfFZL#t!GwVYlD@9+>7`vEYOR0| zT4&PcwcwuPZ+SeRK;9Ug|4>uYQl#7Nd0qiZc6e^#_TqiXlTzrG`i64}c~MPFx_HAJ zPZ#`HxS&th5{R>`H!{RPvs-@_D9<50Ik)tI)p_^MLc_vXZ#}~Peqq(oxf4g(l&V64 zHR3Ac%d6q 6$qqC?5BSS^H0K !l6cU$3&B>1TyVtB6L= z#)7VK6_%Zh@`y0Oy$XY#Z*JmM?+5M^fSX#SniFRrl6`6yF!W`55ne#q1Uv(^oOUk9 z9P^fm5wmpby_a9xl0N6se-1bgs|n{$M0s?H8+J6btekZB<@<~`zj`^5w|hy{T&~uW z&S3Cf@|FJM%UlN#pY|<>7Ko^xns5l~r$-Rq)6+7<${zGmJ_-)2nt}07njLbuANw?8 z=6#=qlC;XzxB<_~5Bv7hABYO>R{{qFBuKjPFE(7_Gxv?Qb)IelN|{KoTU6-!YawD# z8st2NetpdBP+l@E>Uu@R`R;tHrMS)|b-O?7nSnf#n&!{!bbj_vuOqE3&K33>CZ%R# z2xf-$EMlZJju@OaVKo)`q~yhf36G`Ud(NfyRwf=UiQH_>Q(ZHUls8@r9AI>RlLTiQ z4Va#_=}L&!KKq6Vao+WXHSuoFxC2SYqn({z2|Om${zg#t WJ-$DvV+hS`551y`Sd7bD^VG(kgSSf6Hk` zD%dTyCjxhf8Z}YN$IEdD%Y|y=IxnVj7WyJ)9?RXa0WkyS{mJsB6B!!$L(Qk}b8zGk zKc7_Y6d3G8_H&-k@C0&z<;^Sko_x0Ug~0QLIzf;8R1W&nr;3(7(@UVo9^PE5A6sk4 z@bDXU+`ug)iw{nkPGz5<-wB-EcO#_vuVraJ=NL|CKQt7hr!hOj8YV87)kEktyS#EQ zb(F4ot&1(^$+N*dtjPGX4WND ^Vja2G=0}@xb?s-7sBoX`qiVQZ69g;kNrsEf83`mD=C{2Aiv{}vqU$%5L>^Z ODl4rdm3rmYo&N$1W-8wR literal 0 HcmV?d00001