Skip to content

DDmitiy/acribia_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Acribia test assignment

Задание

Необходимо реализовать web-сервис на языке python. Сервис должен производить рекурсивный поиск поддоменов по заданному домену с учётом заданной глубины. Входные значения:

  • домен - любой валиндый домен: google.com, raw.githubusercontent.com, спутник.рф, и т.п.
  • глубина - числовое значение от 1 до 3.

Поиск по поддоменам должен производиться параллельно(!). Список поддоменов можно взять отсюда:

https://raw.githubusercontent.com/darkoperator/dnsrecon/master/subdomains-top1mil-5000.txt

Поиск должен выполняться на бекенде. Успешные результаты поиска должны отображаться пользователю на ту же страницу постепенно (как только поддомен найден) и без перезагрузки страницы.

Решение

  1. Для подтверждения, что поддомен существует -- было выбрано проверять наличие А записи.
  2. Для "параллельного" поиска -- coroutines
  3. Для постепенного добавления -- websockets
  4. Для перебора всех возможных комбинаций -- генераторы
  5. Для обеспечения хоть какой-то отзывчивости веб интерфейса при работе -- таблица с пагинацией и добавление в нее через setTimeout(() => {}, 0)

Запуск проекта локально

docker build -f Dockerfile.app -t resolver .
docker build -f Dockerfile.nginx -t app_nginx .
docker-compose -p resolver up -d

Теперь приложение поднято и доступно на http://localhost

Сборка проекта для отправки

docker build -f Dockerfile.app -t resolver .
docker build -f Dockerfile.nginx -t app_nginx .
docker save resolver -o resolver.tar
docker save app_nginx -o app_nginx.tar

Или запуск скрипта для сборки:

/bin/bash build.sh

Запуск приложения из архива

Для запуска приложения из архива необходимо распаковать архив и запустить файл deploy.sh, который там находится

tar -xvf resolver.tar.gz
cd resolver
chmod +x deploy.sh
bash deploy.sh

Теперь приложение поднято и доступно на http://localhost (если не занят 80-ый порт).

About

Test task for acribia

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published