Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   как узнать путь к webpath (например /public_html) на фтп-серверах? (https://forum.antichat.xyz/showthread.php?t=125579)

Дикс 16.06.2009 19:19

как узнать путь к webpath (например /public_html) на фтп-серверах?
 
захожу на фтп с помощью пхп
есть ли возможность сразу определить корневую директорию размещённого там сайта?

на некоторорых серверах она называется public_html, на других www..

гугл ничего не дал
хотя бы составить список таких имён

FireFenix 16.06.2009 19:42

Apache/conf/httpd.conf - параметр DocumentRoot (или файл конфигурации любого другого веб-сервера)
или
PHP код:

<?php phpinfo(); ?>

параметр DOCUMENT_ROOT

Kaimi 16.06.2009 20:08

Он же на фтп заходит, толку с этого?

Дикс 16.06.2009 21:16

да, на двух англоязычных сайтах так и отвечали)

вот, если кому надо:

PHP код:

$webpath '(([a-zA-Z0-9\-](\.|_)(asia$|com$|net$|org$|biz$|name$|mobi$|info$|com$|net$|ch$|uk$|us$|pro$|eng.pro$|aca.pro$|bar.pro$|cpa.pro$|jur.pro$|law.pro$|med.pro$|ru$|su$|com.ua$|in.ua$|kiev.ua$|dp.ua$|ua$|co.uk$|cc$|de$|fm$|in$|kz$|me$|nu$|tv$|ws$|ac$|ag$|am$|at$|be$|bz$|cn$|gs$|h$|io$|it$|la$|mn$|ms$|com.mx$|co.nz$|pl$|sc$|sh$|tc$|tj$|tk$|tm$|tw$|uz$|vc$|vg$|com.ag$|net.ag$|org.ag$|com.bz$|net.bz$|com.hn$|net.hn$|org.hn$|net.nz$|org.nz$|com.pl$|net.pl$|org.pl$|info.pl$|com.sc$|net.sc$|org.sc$|com.tw$|org.tw$|com.vc$|net.vc$|org.vc)))';
$folders = array('public_html''pages''www''html''htdocs''httpdocs''httpsdocs''docs''site''wwwroot''domains');

$found 0;

foreach(
$dirs as $dir)
    if(
$dir != '.' || $dir != '..')
    if(
in_array($dir$folders))
    {
        
$found $dir;
        break;
    }elseif(
preg_match($webpath$dir)){
        
$found $dir;
        break;
    }else
        continue;

if(!
$found) die('webpath not found'); 


FireFenix 16.06.2009 21:23

Цитата:

Сообщение от Kaimi
Он же на фтп заходит, толку с этого?

Залил и выполнил :)

Дикс 16.06.2009 22:35

как ты выполнишь скрипт на фтп-сервере, не зная доменного имени и корневой папки веб-сервера?

FireFenix 16.06.2009 22:55

Цитата:

Сообщение от Дикс
как ты выполнишь скрипт на фтп-сервере, не зная доменного имени и корневой папки веб-сервера?

Ты не говорил, что ты незнаешь домена :)

diehard 17.06.2009 01:55

Цитата:

захожу на фтп с помощью пхп
есть ли возможность сразу определить корневую директорию размещённого там сайта?
Перебор с глубиной 2-3, по тем что написали
'public_html', 'pages', 'www', 'html', 'htdocs', 'httpdocs', 'httpsdocs', 'docs', 'site', 'wwwroot', 'domains'
плюс часто бывает имя домена в качестве веб-диры, так что добавь еще регулярку под этот случай.

diehard 17.06.2009 01:56

Цитата:

Сообщение от FireFenix
Залил и выполнил :)

омг, куда залил, если он вебдиры не знает?

Pashkela 17.06.2009 02:23

Код:

омг, куда залил, если он вебдиры не знает?
Куда-куда, в корень

PHP код:

./ 

а далше курить вот это,

http://us3.php.net/manual/en/book.ftp.php

с помощью этих команд можно сделать что угодно, например загрузить скрипт, узнающий список дир, сохраняющий это дело в файл и скачать такой файлик обратно к себе

скрипт, закачанный в корень, можно запустить с помощью ftp_site

diehard 17.06.2009 03:33

Цитата:

Сообщение от Pashkela
Код:

омг, куда залил, если он вебдиры не знает?
Куда-куда, в корень

PHP код:

./ 

а далше курить вот это,

http://us3.php.net/manual/en/book.ftp.php

с помощью этих команд можно сделать что угодно, например загрузить скрипт, узнающий список дир, сохраняющий это дело в файл и скачать такой файлик обратно к себе

скрипт, закачанный в корень, можно запустить с помощью ftp_site

Ну давай поподробнее, как с помощью команд ФТП сервера передаваемых ftp_site ты собираешься выполнить PHP-код???

Pashkela 17.06.2009 04:22

Ну да, тут я погрячился децл:)) Зато в процессе эксперимента нашел более клёвый способ, позволяющий решить задачу быстро и без всяких загрузок, а именно - рекурсивно получить список папок, подпапок и файлов в них и, соотвественно, вычислить любые нужные пути:

PHP код:

<pre>
<?php
@set_time_limit(0); 
@
ini_set("display_errors","1");
$ftp_server 'фтп-сервер';
$ftp_user_name 'фтп-логин';
$ftp_user_pass 'фтп-пароль';
$conn_id ftp_connect($ftp_server);
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass);
// Рекурсивно получаем список всех файлов и директорий на ФТП
$buff ftp_rawlist($conn_id'/'TRUE);
ftp_close($conn_id);
var_dump($buff);
?>
</pre>

а уж с полученным массивом $buff делать всё что душе угодно

diehard 17.06.2009 05:14

Цитата:

а уж с полученным массивом $buff делать всё что душе угодно
Вот только так и нужно делать. Писал это дело сто лет назад, за кривость кода не ругать )) :

PHP код:


...

function 
iswebdir($dir){
  
$strs = array("public_html","www","pages","html","htdocs","httpdocs","docs","site","wwwroot");
  foreach (
$strs as $ptrn){
    if (
$dir == $ptrn
      return 
1;
  }
  return 
0;
}


...

  
$filelist ftp_rawlist($conn$rootdir);

  foreach (
$filelist as $raw){
    
$filename trim(substr($rawstrrpos($raw" ")));
    
$len strlen($filename);
    if (
substr($filename$len-1) == "/"
      
$filename substr($filename0$len 1);
    if (
$slash strrpos($filename"/"))
      
$filename substr($filename$slash 1);
    if (
substr($raw01) == "d" OR strstr($raw"<DIR>")){ 
      if (
iswebdir($filename)){
        if (
substr($rootdir,-1)=="/")
          
$wb $rootdir.$filename;
        else
          
$wb $rootdir."/".$filename;
    
$webdirs[] = $wb;
        }
      }
    }
  
$webdirs[] = $rootdir


Дикс 17.06.2009 12:45

спасибо
мутная это тема - искать домен по айпи
если займетесь этим - скажу что то что выдают сервисы типа 1whois.ru и бинг - лажа

diehard 17.06.2009 16:50

Цитата:

Сообщение от Дикс
спасибо
мутная это тема - искать домен по айпи
если займетесь этим - скажу что то что выдают сервисы типа 1whois.ru и бинг - лажа

пропиши на морде код, отправляющий $_SERVER['SERVER_NAME'] куда надо, через час - прочекай - забери ответ, за час то траф придет какой-нибудь на сайт.


Время: 01:34