Jump to content
  • 0

Подскажите алгоритм


Kypaku
 Share

Question

Здравствуйте!

Нужна помощь в поиске идеи для алгоритма реализации следующей задачи:

Есть FTP-мэнеджер.

Есть достаточно большая история вида {сервер - директория - список файлов в директории}

Нужно для текущей директории определить - является ли она корнем какого либо сайта или нет.

Предпологаю использование машинного обучения по истории. Но нужно определить выборку элементов истории. Не думаю что  указание вручную  хорошая идея  - поэтому и ищу способ.

Можно разбить всю историю на группы и вручную указать какие группу подходящие. Но низкая точность и слишком большие вычисления для достаточно большой истории.

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

Вообще не понял что хотите сделать. Проясните некоторые вещи, пожалуйста.

1. Кто такой «FTP-мэнеджер»?

2. Что такое «история вида»?

3. Что такое «машинное обучение по истории»?

Link to comment
Share on other sites

  • 0

Вообще не понял что хотите сделать. Проясните некоторые вещи, пожалуйста.

1. Кто такой «FTP-мэнеджер»?

2. Что такое «история вида»?

3. Что такое «машинное обучение по истории»?

1.Программа типа FileZilla.

2.История вида - это значит что примерно так выглядит каждый элемент истории.

3. Не совсем знал как выразится - но вобщем надо проанализировать элементы истроии и на основании этого анализа дать ответ.

Edited by Kypaku
Link to comment
Share on other sites

  • 0

Мне кажется, что вы либо пытаетесь запилить вирус и тогда я помогать вам не буду либо делаете что-то несуразное. Озвучтьте изначальную задачу и тогда можно будет подумать над её решением, а то очень странная формулировка какая-то — может, просто надо решать иначе?

Link to comment
Share on other sites

  • 0

Мне кажется, что вы либо пытаетесь запилить вирус и тогда я помогать вам не буду либо делаете что-то несуразное. Озвучтьте изначальную задачу и тогда можно будет подумать над её решением, а то очень странная формулировка какая-то — может, просто надо решать иначе?

Причем здесь вирус вообще?

Я пытаюсь модифицировать свой FTP-мэнеджер.

Просто надо придумать логическое решение.

Как из этой кучи информации(истории в данном случае) выделить кое-что полезное.

Как иначе? Все сайты разные и однозначно определить для всех(или хотябы для большинства) условия не так просто...да и смысла нету.

Например я могу определить некоторые CMS путем сравнения файлов в директории с неким "эталоном"(который тоже образовался путем анализа директорий сайтов с одной CMS - задавал вручную это).

Но не все - тем более самописные, или лэндинги. Поэтому надо както заставить автоматически сделать эти "эталоны" и потом сравнивать с ними.

Конечная цель - ответ является ли директория корнем какого либо сайта(True False)

Edited by Kypaku
Link to comment
Share on other sites

  • 0

Я правильно понимаю: у вас есть доступ к директории N своего сайта. Входящие данные: путь вида сервер/папка/файл|папка.  Определить, что текущий путь относится  к   сервер/public_папка (корневая) если такой список есть или как-то эвристически определить, что текущий путь корневой, если таких списков нет?

Хм, для известных сайтов такой  путь можно установить вручную ("xx.xx.xx.xx./public_html") и проверять текущий путь по этому списку или на наличие  robots.txt., хеш-файл яндекска, .htaccess., или собственного генерируемого файла, но для этого уже нужен список файлов к каталоге. Но сканировать каждую директорию, как вы подметили - затратно.  Если же вы создаете эталонный список файлов - то все равно же нужно указать публичный путь. Допустим, файлов робота и т.п. нет...

Можно один раз обратиться к сайту - файлы css, картинки хранятся в публичной папке, а если нет, то каким нибудь ассетором все равно копируются туды. И извлечь часть пути, например, с css или js (вернее, лишь определить наличие в публичной папке некоторых файлов). Извращение, конечно)

Допустим, что файлов вообще нет, только внутренние стили, картинки кодированы и т.п.

путь хранится, например в $_SERVER php ключ DOCUMENT_ROOT и т.п.Пути к публичной папке есть в конфигах сервера. есть в pear библиотека для чтения конфига, например, апача... хотяяяя.. она туда умеет и писать, что уже опаснее)

Сорри, если туплю - утро.

 

UPD:

Даже если пойти путем эталонов. Например, авто сделать "эталон" сайта. Через час разработчик перенастраивает  сервер и публичная директория становится уже другой, программа же верно сравнит по эталону и выдаст неверный ответ при существующей папке, скопирует туда что-нить или затрет  и т.п. Поэтому вариант с эталонами, списком путей и т.п. базирующиеся на истории, наверное, следует считать ненадежным способом.

Edited by bryknyk
  • Like 1
Link to comment
Share on other sites

  • 0

Я правильно понимаю: у вас есть доступ к директории N своего сайта. Входящие данные: путь вида сервер/папка/файл|папка.  Определить, что текущий путь относится  к   сервер/public_папка (корневая) если такой список есть или как-то эвристически определить, что текущий путь корневой, если таких списков нет?

Хм, для известных сайтов такой  путь можно установить вручную ("xx.xx.xx.xx./public_html") и проверять текущий путь по этому списку или на наличие  robots.txt., хеш-файл яндекска, .htaccess., или собственного генерируемого файла, но для этого уже нужен список файлов к каталоге. Но сканировать каждую директорию, как вы подметили - затратно.  Если же вы создаете эталонный список файлов - то все равно же нужно указать публичный путь. Допустим, файлов робота и т.п. нет...

Можно один раз обратиться к сайту - файлы css, картинки хранятся в публичной папке, а если нет, то каким нибудь ассетором все равно копируются туды. И извлечь часть пути, например, с css или js (вернее, лишь определить наличие в публичной папке некоторых файлов). Извращение, конечно)

Допустим, что файлов вообще нет, только внутренние стили, картинки кодированы и т.п.

путь хранится, например в $_SERVER php ключ DOCUMENT_ROOT и т.п.Пути к публичной папке есть в конфигах сервера. есть в pear библиотека для чтения конфига, например, апача... хотяяяя.. она туда умеет и писать, что уже опаснее)

Сорри, если туплю - утро.

 

UPD:

Даже если пойти путем эталонов. Например, авто сделать "эталон" сайта. Через час разработчик перенастраивает  сервер и публичная директория становится уже другой, программа же верно сравнит по эталону и выдаст неверный ответ при существующей папке, скопирует туда что-нить или затрет  и т.п. Поэтому вариант с эталонами, списком путей и т.п. базирующиеся на истории, наверное, следует считать ненадежным способом.

Как ряз для того чтобы определить какие файлы/папки(роботс, htacess стили и т.д) должны находится в директори - нужно создать несколько "эталонов" (один врятли поможет) - путем анализа уже имеющихся данных.

Тогда если директория изменится незначительно - то все равно можно будет определить по тому же "эталону", а если совсем поменяется структура сайта - то уже по другому, более подходящему "эталону". Например был сайт на WordPress - можно определить по эталону собраному из вордпрессовских сайтов, а если поменяли на Joomla- то соответсвенно из джумловских.

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

Link to comment
Share on other sites

  • 0
Но проблема в том как "собрать" эти эталоны - для этого придется для каждой разновидности сайтов сначала вручную указать какие - где, а затем выделить условия.

Ну а почему бы и нет?

Link to comment
Share on other sites

  • 0

 

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

Ну а почему бы и нет?

 

Да похоже и правда единственный выход.

Link to comment
Share on other sites

  • 0

Допустим, есть сайт, фронт контроллер, для корневой - папка public. Если это не шаред хостинг, то во vhost апача -  DocumentRoot "path/public". И эта папка станет корневой. Могу сделать вторую папку stupid_site (допустим, что мне нечего делать, я неудовлетворенный жизнью и т.п.) потестить, сайт в бете... файлов робота и т.п. нет. Снова  DocumentRoot "path/stupid_site". теперь эта папка станет корневой, но сайт продолжит работать, т.к. конфиг который загружает index.php цепляет все нужные файлы и прежняя папка есть. могу так хоть целый день. Я могу разделить сайт на бекенд и фронтенд и прописать для бекенда вообще отдельный путь с отдельным адресом DocumentRoot "path/manager"   фактически мы имеем две публичных папки на сайте по разным адресам, которые легко меняются.

Как вы собираетесь сформировать условия в таком мало предсказуемом случае? Для большинства известных можно... но остаются и другие,. А если у сайта 10 публичных папок в 1 директории - блог, магазин, мобильный и т.п., то нужно еще и разделять их по назначению.

Лично я бы пошел путем яндекса\гугла с размещением проверочного файла или использованием их файлов: один раз его поискать рекурсивно (ибо лень вручную вписывать путь) и занести путь в конфиг, работать уже с этим путем. Отслеживание измений как мини vcs. Всегда доступен из инета по адресу сайта - можно быть уверенным, что папка с ним доступна, должна быть 1 копия на сайте т.к. можно скопировать публичную папку и  он также будет доступен, но уже это его копия и другая папка и т.п. имхо.

Link to comment
Share on other sites

  • 0

Допустим, есть сайт, фронт контроллер, для корневой - папка public. Если это не шаред хостинг, то во vhost апача -  DocumentRoot "path/public". И эта папка станет корневой. Могу сделать вторую папку stupid_site (допустим, что мне нечего делать, я неудовлетворенный жизнью и т.п.) потестить, сайт в бете... файлов робота и т.п. нет. Снова  DocumentRoot "path/stupid_site". теперь эта папка станет корневой, но сайт продолжит работать, т.к. конфиг который загружает index.php цепляет все нужные файлы и прежняя папка есть. могу так хоть целый день. Я могу разделить сайт на бекенд и фронтенд и прописать для бекенда вообще отдельный путь с отдельным адресом DocumentRoot "path/manager"   фактически мы имеем две публичных папки на сайте по разным адресам, которые легко меняются.

 

Всё на что я могу ориентироваться- на список файлов в директории. Как прмиерно  будет он выглядить для случаев которые Вы описали?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy