Collecting And Building Dependencies - TechnikEmpire/HttpFilteringEngine GitHub Wiki

HttpFilteringEngine abuses the concept of "don't reinvent the wheel" to the point that you're going to be in pain by the time you finish getting the dependencies setup. Just a heads up. If you don't want to run the gauntlet, you can download a binary distribution from the Releases page.

All of the wiki pages are linked together to provide step-by-step instructions which logically follow (building things in order as some dependencies depend on each other). So, just keep following links at the bottom of each page and you should be fine. :)

Building Requirements

  • Windows Vista or later.
  • Microsoft Visual Studio 2015 with optional Visual C++ installed (Don't worry, it's free!).
  • .NET 4.5 or later (VS install should take care of this).
  • NASM
  • MozillaBuild
  • Perl
  • 7-Zip (Recommended for decompressing different archive types, but not absolutely required)

Currently this project officially supports Windows only. The core engine itself, HttpFilteringEngine, can be built and run across almost every platform. It is written in (hopefully) portable, standard compliant C++ and can therefore be ported with no modification. However, there is some platform specific code required to divert traffic through the engine, provide a UI etc. Currently, these things are only complete on Windows, specifically Vista or later.

Further, you will need to install Visual Studio 2015. It's free for individuals. I thought about creating premake configuration files to appease everyone and make the project files more portable, but for time constraints, I've decided to leave this until later. Besides, at this point it's a bit premature, considering other operating systems are currently officially unsupported.

NASM and Perl are required for building OpenSSL and MozillaBuild is required for building the NSS Utils (which are required for having utilities to install CA's in discovered Firefox installs). You do not need NASM if you don't plan on compiling an x86 version of HttpFilteringEngine or Stahp It (which would inherently require x86 openSSL binaries). These tools must be added to your %PATH% environment variable, but the scripts provided in this wiki will handle that at least for NASM.

Once you've satisfied those requirements, you can begin to get all of the dependencies downloaded, configured and compiled. The first step is to grab a source release or checkout from master. Extract the contents of either to wherever you wish to keep the project. Do no modify the directory structure provided in the download, unless you want to be pouring over Visual Studio project settings and adjusting paths. The provided solution uses relative paths expecting to find what it needs there.

Here is a complete list of all dependencies required for both HttpFilteringEngine and the Stahp It WPF application:

List Of Dependencies For HttpFilteringEngine

  • OpenSSL
  • Boost (asio, iostreams, misc containers, etc)
  • gumbo-parser
  • gumbo-query
  • WinDivert
  • bzip-2
  • zlib
  • nss
  • OpenCV

List Of Dependencies For Stahp It

  • ByteSizeLib
  • Apache OpenNLP
  • IKVM
  • WinSparkle
  • NewtonSoft JSON
  • Nlog
  • Nlog.Config
  • Nlog.Schema
  • Mahapps.Metro
  • Mahapps.Metro.Resources
  • ModernUiCharts
  • EntityFramework
  • System.Data.SQLite
  • System.Data.SQLite.Core
  • System.Data.SQLite.EF6
  • System.Data.SQLite.Linq

For the dependencies required by the Stahp It WPF application, you don't need to worry about most of those. The vast majority are handled on a project level and you'll be prompted to update via NuGet. Only IKVM, Apache OpenNLP and ModernUiCharts require any custom action.

Start by setting up boost.