Skip to content

JEE Web Proxy/CDN for Google App Engine and stand-alone

License

Notifications You must be signed in to change notification settings

johannburkard/eproxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Coverage Status

eproxy

eproxy is a web proxy that

  • rewrites HTML, CSS, SVG and JavaScript*
  • rewrites data: URIs
  • supports cookies
  • supports HTTPS
  • supports HTTP Byte Serving independent of the origin server using the Range header (unless rewriting)
  • supports cache validation using If-Modified-Since and If-None-Match
  • supports SOCKS proxies for your hardcore tunneling needs
  • supports browsers with JavaScript disabled
  • caches content in-memory and using Memcache (on Google App Engine)
  • lets you customize the HTTP and TCP/IP setup
  • uses robust, parser-based rewriting for HTML (using NekoHTML) and SVG (using SAX)
  • uses regular expression-based rewriting for CSS (sorry, but there are no robust Java CSS parsers)
  • attempts to be as secure as possible
  • runs stand-alone, in a JEE container (Tomcat or Jetty) and on Google App Engine
  • has really good HTTP support

Security status

eproxy does pretty well on the HTTPLeaks test. Still, it is not tested enough yet. Do not use eproxy yet if you rely on security.

Installation

0. Prerequisites

You'll need

1. Get the Code

git clone https://github.com/johannburkard/eproxy.git

2. Build

cd eproxy && mvn clean package

3. Run or Deploy

Stand-alone

If you simply want to try out eproxy, start the .war file in the target directory:

java -jar target/*##*.war

Next, go to http://127.0.0.1:8080/index.html. Press Ctrl-C in the console when you're done.

Tomcat or Jetty

Deploy the target/eproxy##....war file.

Google App Engine

  1. Create a project in Google Cloud
  2. Change <application> to the name of your project in src/main/webapp/WEB-INF/appengine-web.xml
  3. appcfg.sh update target/*##*/

Configuration

The configuration can be found in src/main/resources/application.properties.

History

The idea is based on mirrorr. Some of the code came from media.io, a project called Delivrr (sadly gone) and EAIO.

* Planned

Analytics