OGProxy: Open GRiD Project's Proxy

Description:
Code for an HTTP/HTTPS Internet proxy (Open GRiD proxy) and some generic and Web-specific libraries in C++.

The source code is mostly for developers, as the functionality of the proxy is not yet very extensive.

The code was developed during an early stage of the Open GRiD project in particular to see how and whether additional funcionality can be provided for existing browsers by a proxy that filters all HTML documents adding its own functionality menu to all displayed documents.

This code has been then substantially architecturally redesigned into the OpenGRiD project's code.
(Note that the latter does not yet contain an application whose functionality subsumes that of the OGProxy.)

Features:

The provided Web-specific library functionality includes:

The provided general C++ library functionality includes:

Languages:
C++, Java Script

Platforms:

Known to work on RedHat Linux 6.0, SunOS 5.6, MS Windows 98.

Downloads:

License:
GNU General Public License (GNU GPL)

Changes:

New in version 0.1.2 (August 30, 1999):

New in version 0.1.1 (July 25, 1999):

  • Proxy Functionality:
    • The user can easily get the information about the recent and active requests: the request headers and how the requests were processed.
    • More parameters of the proxy can be changed.
    • Some rudimentary memory-only cache functionality is present.
    • A special control panel is added to all top-level html documents to facilitate access to the functions of the proxy. (The panel is automatically blocked for frames, so that frame-sets are displayed correctly. Also the panel can be easily switched on and off manually for a particular page.)
    • Some Java Script interface enhancements are present.
    • Proxy authorization can be enforced to enhance security.
    • Welcome screen and other navigation documents are produced.
      All generated documents have consistent look and feel.
    • All error messages of the proxy also can be viewed (remotely) using a browser.
  • Web-specific libraries:
    • Html-generation facilitating classes were added.
    • More rfc-compliant URI parsing; code to create absolute URI's from relative ones.
    • More (un)escaping and other string utilities.
    • Generic least-recently-used cache classes were added.
  • Basic C++ libraries:
    • Better memory leaks and other memory errors detection support:
      • memory leaks can be traced after program execution back to the place of allocation including 3 stack frames of function call history (you will need gdb for this).
      • fields around allocated objects are added to help detect out-of bounds memory accesses
      • new memory is garbage-initialized to help catch use of uninitialized fields
      • freed memory is garbage-cleaned and kept around for a while to help catch the use of dangling pointers
      • but works for C++ new and delete only!
  • Bug fixes.
  • All README files were converted to interlinked html README files.

New in version 0.1.0 (June 4, 1999):

The initial version:

  • Proxy Functionality:
    • Works as HTTP/HTTPS proxy.
    • Can forward requests to another proxy.
    • Unconditionally filters out Java Script and Java code from html's passing through it.
    • Most proxy parameters can be (remotely) changed on the fly using a Web browser.
  • Web-specific libraries:
    • Some manipulations with strings.
    • Core proxy functionality, using a uni-process data-driven model based on the select() call.
    • Flexible filtering of (HTML) streams.
    • Parsing and other manipulations with HTML and HTTP elements.
    • Creation and handling of forms enabling to change a set of options of different types; the options can also be saved to and read from a file.
  • Basic C++ libraries:
    • Flexible compilable-out debugging messages and runtime checks.
    • Facilitation of runtime checks for objects of different classes.
    • Performs hierarchical initializations and "finalizations" of "modules".
    • Class wrappers to make the use of STL containers more efficient.
    • One can use MODULA-like syntax in C++.

/\ Programming Projects


Last updated on Dec. 17, 2000 by Maxim Lifantsev
Comments, Suggestions?