1/31/2017 GitHubstefanocasazza/ULib:C++applicationdevelopmentframework,tohelpdeveloperscreateanddeployapplicationsveryfastandmoresimple
Personal Open source Business Explore Pricing Blog Support This repository Search Sign in Sign up
stefanocasazza / ULib Watch 56 Star 396 Fork 47
Code Issues 1 Pull requests 0 Projects 0 Wiki Pulse Graphs
C++ application development framework, to help developers create and deploy applications very fast and more simple
http://www.unirel.com
118 commits 2 branches 40 releases 1 contributor LGPL3.0
Branch: master New pull request Find file Clone or download
stefanocasazza fix Latest commit dfbb912 15 hours ago
cdb clean history 2 years ago
contrib sync 5 months ago
doc sync 5 months ago
examples fix 2 months ago
include fix 15 hours ago
m4 fix 2 months ago
nativejsonbenchmark sync 3 months ago
openwrt/package sync 4 months ago
src/ulib fix 15 hours ago
tests fix 15 hours ago
.travis.yml sync 2 months ago
AUTHORS clean history 2 years ago
ChangeLog add client REDIS 2 years ago
INSTALL clean history 2 years ago
LICENSE change license + optimizations + bug fixing 2 years ago
LICENSE.OpenSSL clean history 2 years ago
Makefile.am sync 3 months ago
Makefile.in sync 3 months ago
NEWS add client REDIS 2 years ago
README change license + optimizations + bug fixing 2 years ago
README.cdb clean history 2 years ago
README.configure clean history 2 years ago
README.md fix 15 hours ago
THANKS clean history 2 years ago
TODO some fix plus prototype 10 months ago
ULib.m4 clean history 2 years ago
ULib.spec.in optimizations + bug fixing 2 years ago
aclocal.m4 sync 5 months ago
autogen.sh clean history 2 years ago
compile some fix 9 months ago
config.guess change license + optimizations + bug fixing 2 years ago
config.sub change license + optimizations + bug fixing 2 years ago
https://github.com/stefanocasazza/ULib 1/4
1/31/2017 GitHubstefanocasazza/ULib:C++applicationdevelopmentframework,tohelpdeveloperscreateanddeployapplicationsveryfastandmoresimple
configure sync 11 days ago
configure.ac sync 11 days ago
configure.help clean history 2 years ago
configure_h.awk clean history 2 years ago
configure_log.awk clean history 2 years ago
depcomp some fix 9 months ago
installsh clean history 2 years ago
ltmain.sh sync 3 months ago
missing some fix 9 months ago
rpm.sh clean history 2 years ago
rpm.sh.in clean history 2 years ago
rpmpkgreq.lst clean history 2 years ago
rpmpkgreq.lst.suse clean history 2 years ago
shtool clean history 2 years ago
testdriver change license + optimizations + bug fixing 2 years ago
ylwrap change license + optimizations + bug fixing 2 years ago
README.md
ULib - C++ library
Travis CI: build passing Coverity Scan: coverity passed
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.
ULib is meant as a very lightweight 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.
It include as application example a powerful search engine with relative web interface and a multi purpose server plugin
oriented which results, out of John Fremlin accurate investigations, 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
userver (_tcp | _ssl | _ipc) application server (plugin
oriented)
The current version offers the following features :
HTTP/1.0 and 1.1 protocols supported and experimental implementations of HTTP/2 h2spec compliant.
Persistent connections for HTTP/1.1 and KeepAlive support for HTTP/1.0.
Browser cache management headers: IfModifiedSince/Lastmodified.
Chunkencoding transfers support.
HTTP multirange request support.
Memory caching of document root for small static pages with smart gzip compression and CSS/JS reduction.
Support for automatic update of caching document root with inotify on Linux.
Support for pipelining.
Support for virtual hosts also with SSL.
Support for basic/digest authentication optionally based on url mask.
https://github.com/stefanocasazza/ULib 2/4
1/31/2017 GitHubstefanocasazza/ULib:C++applicationdevelopmentframework,tohelpdeveloperscreateanddeployapplicationsveryfastandmoresimple
Support for directory listings via basic/digest authentication.
Support for uri protection.
Support for aliases/redirection.
Support for switch the site to a maintenance page only.
Support for URL traffic based throttling experimental.
Support for overriden of error messages by local document ErrorDocument/40x|500.html.
Support for RewriteRule lighttpdlike that check for file existence as they do on Apache, some CMS SilverStripe require
it.
Support for apachelike log NCSA extended/combined format
Support for JSONRequest.
Accept HTTP uploads up to 4 GB without increasing memory usage.
General CGI support run any CGI script with automatic output compression using gzip method.
CGI support for shell script processes with automatic management of form and cookie.
CGI support for the XSendfile feature and also supports XAccelRedirect headers transparently.
Support for minify HTML CGI output by wrapping google page speed SDK.
Support for running JavaScript code by wrapping google V8 JavaScript Engine.
HTTP pseudostreaming for FLV video managed transparently.
C Servlet Support with libtcc if available as a backend for dynamic code generation experimental.
Support for running Ruby on Rails applications natively experimental.
Support for running natively PHP applications whith a php embedded library experimental.
Preforking mode to improve concurrency with dedicated process for longtime request.
Support for Windows without preforking.
Customizable builds you can remove unneeded functionality.
Requests cut in phases for modular architecture apachelike.
Configuration file with dedicated section.
Builtin modules :
mod_echo : echo features.
mod_rpc : generic Remote Procedure Call.
mod_http : core features, static file handler and dynamic page ULib Servlet Page.
mod_ssi : Server Side Includes support with enhanced #set, direct include and #exec servlet C/ULib Servlet Page.
mod_nocat : captive portal implementation.
mod_proxy : multifeatures reverse proxy with websocket support.
mod_tsa : server side Time Stamp support.
mod_soap : generic SOAP server services support.
mod_fcgi : thirdparty applications support thru FastCGI interface.
mod_scgi : module that implements the client side of the SCGI protocol experimental.
mod_shib : web single signon support experimental.
mod_geoip : geolocation support experimental.
mod_stream : simple streaming support experimental.
mod_socket : Web Socket application framework experimental.
Security protection :
HTTP Session Hijacking mitigation.
Algorithmic Complexity Attacks prevention by randomizing hash seed.
DNS rebinding prevention by RFC1918 filtering and Host header validation.
selective uri support DOS regex for HTTP Strict Transport Security.
Immune to Slow Read DoS attack
High SSL server quality score
Who is Using ULib
It is the main software component of city of Florence wireless network
Benchmark
https://github.com/stefanocasazza/ULib 3/4
1/31/2017 GitHubstefanocasazza/ULib:C++applicationdevelopmentframework,tohelpdeveloperscreateanddeployapplicationsveryfastandmoresimple
userver application server is since 10th round in the TechEmpower's web framework benchmarks. This independent work tests
a large number of frameworks and platforms against a set of tests common to web applications, such as JSON serialization,
database queries and templating.
Contributing
1. Fork it http://github.com//ULib/fork
2. Create your feature branch gitcheckoutbmynewfeature
3. Commit your changes gitcommitam'Addsomefeature'
4. Push to the branch gitpushoriginmynewfeature
5. Create new Pull Request
License
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 under the LGPL and it 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.
Comments and suggestions are welcome.
stefanocasazza<stefano.casazza@gmail.com>
2017 GitHub, Inc. Terms Privacy Security Status Help Contact GitHub API Training Shop Blog About
https://github.com/stefanocasazza/ULib 4/4