Kronus - уеб-базиран прокси с ръцете си

Необходими за прилагането на уеб приложение, което е уеб прокси сървър (както е посочено в определението по-горе) и има функции:

изпълнение

Пишем в PHP. За да се справят с DOM дърво вземе simple_html_dom библиотека. За CSS е имало желание да използва PHP-CSS-синтактичен анализ. но тя трябваше да бъде изоставена, тъй като това анализатора дръжки определени файлове за дълго време.

Необходимо е да се определят елементите, които са необходими:

  • Възрази срещу обработването на заявките (най-лесно - изпратени, получени и разделени заглавията от тялото и се върна на резултата).
  • съхранение на обекта на исканата URL адрес (това ще бъде необходимо да се отпуснат, за да го хост, път, файл и т.н.).
  • Обектите е файлове (HTML, CSS, и т.н.), изтеглени при поискване.
  • Фабрика за файлови обекти.

От гледна точка на UI ще бъде само две файлове:

  • index.php - тук потребителят въвежда желаната си URL адрес.
  • view.php - тук пренасочване на потребител след въвеждане на адреса на index.php.

От горното е такъв клас диаграма:

Kronus - уеб-базиран прокси с ръцете си

Ако разгледаме кода от гледна точка на "кой ще спечели е, когато" ние получаваме това:

  • На view.php искане идва от URL кодирано.
  • URL стои в page_factory (PF).
  • Най-PF, наречена get_page метод, който изтегля съдържанието на URL адрес.
  • В зависимост от отговора на CONTENT_TYPE сървъра се генерира и се връща към желания обект-страница (HTML, CSS, основни, и т.н.).
  • Този процес се нарича метод обект, който изпълнява различни превръщане (вж. Метод в class.basic_page.php, class.css_page.php, class.html_page.php).
  • След това, на потребителя се предава от обекта на водещата CONTENT_TYPE и обработена тяло обекта.

тестване

Аз трябва да кажа, че на теста - не ми опорна точка. Така че струва най-непретенциозен и нещата assertEquals 🙂 Да, тестове са тестове в папката (вече всички, създаден по силата PHPUnit). Проверих в - всички произведения (PHP 5.3.8). После се сетих, че е налице услуга Травис CI (Free Домакин Platform Непрекъснато интеграция за общността на отворения код), по които има интеграция с GitHub'om. Реших да се включат в WebProxy тестване и внедряване на PHP 5.3, 5.4, 5.5, с помощта на Травис CI (вж. .travis.yml файл). Както се вижда от стартирането на Травис, WebProxy работи на всички три клона на одитирания PHP. Така че в Readme, можете да добавите малко елемент с красива картина - Травис CI статус.

Сега WebProxy подходящ за лесно сърфиране в статични страници, но развитието не е на мястото си. Плановете - правилните форми на обработка, възможността за получаване на Cookies (по избор), и т.н.

Демонстрация на Аз няма да направя kronus.me, като общежитие не одобрява, и черупки (което не е за съжаление), не е под ръка. Така че, разполагане с Localhost.