1
0
mirror of https://github.com/stefanocasazza/ULib.git synced 2025-09-28 19:05:55 +08:00
ULib/index.html
2015-03-06 15:03:12 +01:00

161 lines
11 KiB
HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<title>Ulib by stefanocasazza</title>
<link rel="stylesheet" href="stylesheets/styles.css">
<link rel="stylesheet" href="stylesheets/pygment_trac.css">
<script src="javascripts/scale.fix.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<h1>Ulib</h1>
<p>C++ application development framework, to help developers create and deploy applications very fast and more simple</p>
<p class="view"><a href="https://github.com/stefanocasazza/ULib">View the Project on GitHub <small>stefanocasazza/ULib</small></a></p>
<ul>
<li><a href="https://github.com/stefanocasazza/ULib/zipball/master">Download <strong>ZIP File</strong></a></li>
<li><a href="https://github.com/stefanocasazza/ULib/tarball/master">Download <strong>TAR Ball</strong></a></li>
<li><a href="https://github.com/stefanocasazza/ULib">View On <strong>GitHub</strong></a></li>
</ul>
</header>
<section>
<h1>
<a id="ulib---c-library" class="anchor" href="#ulib---c-library" aria-hidden="true"><span class="octicon octicon-link"></span></a>ULib - C++ library</h1>
<p>Travis CI: <a href="https://travis-ci.org/stefanocasazza/ULib"><img src="https://travis-ci.org/stefanocasazza/ULib.svg?branch=master" alt="Build Status"></a>
Coverity Scan: <a href="https://scan.coverity.com/projects/3322"><img src="https://scan.coverity.com/projects/3322/badge.svg" alt="Coverity Scan Build Status"></a></p>
<p>ULib is a highly optimized class framework for writing C++ applications. I wrote this framework as my tool for writing applications in various contexts. It is a result of many years of work as C++ programmer. I think, in my opinion, that its strongest points are simplicity, efficiency and sophisticate debugging.</p>
<p>ULib is meant as a very light-weight C++ library to facilitate using C++ design patterns even for very deeply embedded applications, such as for systems using uclibc along with posix threading support. For this reason, ULib disables language features that consume memory or introduce runtime overhead, such as rtti and exception handling, and assumes one will mostly be linking applications with other pure C based libraries rather than using the overhead of the standard C++ library and other similar class frameworks.</p>
<p>It include as application example a powerful search engine with relative <a href="https://github.com/stefanocasazza/ULib/blob/master/examples/IR/ir_web.usp">web interface</a> and a multi purpose server (plugin oriented) which results, out of <a href="http://john.freml.in/ulib-fast-io-framework">John Fremlin accurate investigations</a>, to be one of the fastest web application frameworks for serving small dynamic webpages (and also make easier the usage of shell scripts for CGI application)</p>
<h1>
<a id="userver-_tcp--_ssl--_ipc-application-server-plugin-oriented" class="anchor" href="#userver-_tcp--_ssl--_ipc-application-server-plugin-oriented" aria-hidden="true"><span class="octicon octicon-link"></span></a>userver (<code>_tcp</code> | <code>_ssl</code> | <code>_ipc</code>) application server (<code>plugin oriented</code>)</h1>
<p>The current version offers the following features :</p>
<ul>
<li>HTTP/1.0 and 1.1 protocols supported.</li>
<li>Persistent connections for HTTP/1.1 and Keep-Alive support for HTTP/1.0.</li>
<li>Browser cache management (headers: If-Modified-Since/Last-modified).</li>
<li>Chunk-encoding transfers support.</li>
<li>HTTP multi-range request support.</li>
<li>Memory caching of document root for (small) static pages with smart gzip compression and CSS/JS reduction.</li>
<li>Support for automatic update of caching document root with inotify (on Linux).</li>
<li>Support for pipelining.</li>
<li>Support for virtual hosts (also with SSL).</li>
<li>Support for basic/digest authentication.</li>
<li>Support for directory listings via basic/digest authentication.</li>
<li>Support for uri protection.</li>
<li>Support for aliases/redirection.</li>
<li>Support for switch the site to a maintenance page only.</li>
<li>Support for overriden of error messages by local document (ErrorDocument/40x|500.html).</li>
<li>Support for RewriteRule (lighttpd-like) that check for file existence as they do on Apache, some CMS (SilverStripe) require it.</li>
<li>Support for (apache-like) log <a href="http://httpd.apache.org/docs/2.0/mod/mod_log_config.html">NCSA extended/combined format</a>
</li>
<li>Support for <a href="http://json.org/JSONRequest.html">JSONRequest</a>.</li>
<li>Accept HTTP uploads up to 4 GB without increasing memory usage.</li>
<li>General <a href="http://it.wikipedia.org/wiki/Common_Gateway_Interface">CGI</a> support (run any CGI script) with automatic output compression (using gzip method).</li>
<li>CGI support for shell script processes (with automatic management of form and cookie).</li>
<li>CGI support for the X-Sendfile feature and also supports X-Accel-Redirect headers transparently.</li>
<li>Support for minify HTML CGI output by wrapping <a href="http://code.google.com/speed/page-speed/download.html#pagespeed-sdk">google page speed SDK</a>.</li>
<li>Support for running JavaScript code by wrapping <a href="http://code.google.com/apis/v8/intro.html">google V8 JavaScript Engine</a>.</li>
<li>
<a href="http://www.phpmotionwiz.com/what-is-pseudo-streaming">HTTP pseudo-streaming</a> for FLV video managed transparently.</li>
<li>
<a href="http://bellard.org/tcc/">C Servlet Support</a> with libtcc (if available) as a backend for dynamic code generation (experimental).</li>
<li>Preforking mode to improve concurrency with dedicated process for long-time request.</li>
<li>Support for Windows (without preforking).</li>
<li>Customizable builds (you can remove unneeded functionality).</li>
<li>Requests cut in phases for modular architecture (apache-like).</li>
<li>Configuration file with dedicated section.</li>
<li>Built-in modules :
<ul>
<li>
<code>mod_echo</code> : echo features.</li>
<li>
<code>mod_rpc</code> : generic Remote Procedure Call.</li>
<li>
<code>mod_http</code> : core features, static file handler and dynamic page (ULib Servlet Page).</li>
<li>
<code>mod_ssi</code> : <a href="http://en.wikipedia.org/wiki/Server_Side_Include">Server Side Includes</a> support with enhanced #set, direct include and #exec servlet (C/ULib Servlet Page).</li>
<li>
<code>mod_nocat</code> : <a href="http://nocat.net/">captive portal</a> implementation.</li>
<li>
<code>mod_proxy</code> : multi-features reverse proxy with websocket support.</li>
<li>
<code>mod_tsa</code> : server side <a href="http://www.opentsa.org">Time Stamp</a> support.</li>
<li>
<code>mod_soap</code> : generic <a href="http://java.sun.com/developer/technicalArticles/xml/webservices">SOAP</a> server services support.</li>
<li>
<code>mod_fcgi</code> : third-party applications support thru <a href="http://www.fastcgi.com/drupal">FastCGI</a> interface.</li>
<li>
<code>mod_scgi</code> : module that implements the client side of the <a href="http://www.mems-exchange.org/software/scgi">SCGI</a> protocol (experimental).</li>
<li>
<code>mod_shib</code> : <a href="http://shibboleth.internet2.edu">web single sign-on support</a> (experimental).</li>
<li>
<code>mod_geoip</code> : <a href="http://www.maxmind.com/geoip/api/c.shtml">geolocation support</a> (experimental).</li>
<li>
<code>mod_stream</code> : simple streaming support (experimental).</li>
<li>
<code>mod_socket</code> : <a href="http://dev.w3.org/html5/websockets">Web Socket</a> application framework (experimental).</li>
</ul>
</li>
<li>Security protection :
<ul>
<li>
<a href="http://cleverlogic.net/articles/kochure">HTTP Session Hijacking</a> mitigation.</li>
<li>
<a href="http://lwn.net/Articles/474365/">Algorithmic Complexity Attacks</a> prevention by randomizing hash seed.</li>
<li>
<a href="http://en.wikipedia.org/wiki/DNS_rebinding">DNS rebinding</a> prevention by RFC1918 filtering and Host header validation.</li>
<li>selective uri support (DOS regex) for <a href="https://developer.mozilla.org/en/Security/HTTP_Strict_Transport_Security">HTTP Strict Transport Security</a>.</li>
</ul>
</li>
<li>Immune to <a href="http://code.google.com/p/slowhttptest/">Slow Read DoS attack</a>
</li>
<li><a href="https://www.ssllabs.com/ssltest/analyze.html?d=wifi-aaa.comune.fi.it">High SSL server quality score</a></li>
</ul>
<p>It is the main software component of <a href="http://wifi-aaa.comune.fi.it/login?mac=00%3A00%3A00%3A00%3A00%3A00&amp;ip=172.22.11.124&amp;redirect=http%3A//pasta.dianxinos.com/api/data&amp;gateway=159.213.248.230%3A5280&amp;timeout=0&amp;token=1810300063&amp;ap=05@159.213.248.230">city of Florence wireless network</a></p>
<p>We're hoping to get included in <a href="http://techempower.com/">TechEmpower's</a> <a href="http://www.techempower.com/benchmarks/">next round of benchmarks</a>. A pull request has been already issued.</p>
<p>ULib is normally built and installed as a set of shared object libraries and header files. These libraries and headers are installed using directories selected through a "configure" script that has been prepared with automake and autoconf. As such, they should build and install similarly to and in a manner compatible and consistent with most other GNU software. ULib is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</p>
<p>Comments and suggestions are welcome.</p>
<pre><code>stefano casazza &lt;stefano.casazza@gmail.com&gt;
</code></pre>
</section>
</div>
<footer>
<p>Project maintained by <a href="https://github.com/stefanocasazza">stefanocasazza</a></p>
<p>Hosted on GitHub Pages &mdash; Theme by <a href="https://github.com/orderedlist">orderedlist</a></p>
</footer>
<!--[if !IE]><script>fixScale(document);</script><![endif]-->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-60470323-1");
pageTracker._trackPageview();
} catch(err) {}
</script>
</body>
</html>