diff --git a/configure b/configure index d894881f..5e0828be 100755 --- a/configure +++ b/configure @@ -805,6 +805,10 @@ ENABLE_SHARED_FALSE ENABLE_SHARED_TRUE ENABLE_EXAMPLES_FALSE ENABLE_EXAMPLES_TRUE +USERVER_UDP_FALSE +USERVER_UDP_TRUE +USERVER_IPC_FALSE +USERVER_IPC_TRUE POW_LIB LIBOBJS SEM_TIMEDWAIT_FALSE @@ -1039,6 +1043,8 @@ enable_thread enable_pth with_ipv6 enable_examples +with_userver_ipc +with_userver_udp enable_plugins enable_memory_pool enable_LFS @@ -1836,6 +1842,8 @@ Optional Packages: compiler's sysroot if not specified). --with-libc=path specify path to alternate libc [[default=c]] --with-ipv6 Enable ipv6, default is disabled + --with-userver-ipc Enable building of userver_ipc, default is disabled + --with-userver-udp Enable building of userver_udp, default is disabled --with-parser use parser generator bison/yacc --with-distcc using distcc we must avoid to use some gcc flags (-mtune=native,-flto,...) --with-libz use system LIBZ library - [will check /usr /usr/local] [default=use if present] @@ -27818,6 +27826,23 @@ if test -z "$enable_examples" -a "$enable_shared" = "yes"; then enable_examples="yes" fi + if false; then + USERVER_IPC_TRUE= + USERVER_IPC_FALSE='#' +else + USERVER_IPC_TRUE='#' + USERVER_IPC_FALSE= +fi + + if false; then + USERVER_UDP_TRUE= + USERVER_UDP_FALSE='#' +else + USERVER_UDP_TRUE='#' + USERVER_UDP_FALSE= +fi + + if test "$enable_examples" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -27830,6 +27855,60 @@ else ENABLE_EXAMPLES_FALSE= fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if you want to build userver_ipc" >&5 +$as_echo_n "checking if you want to build userver_ipc... " >&6; } + +# Check whether --with-userver-ipc was given. +if test "${with_userver_ipc+set}" = set; then : + withval=$with_userver_ipc; use_userver_ipc=$withval +else + use_userver_ipc=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_userver_ipc" >&5 +$as_echo "$use_userver_ipc" >&6; } + + if test "$use_userver_ipc" = "yes" ; then + if true; then + USERVER_IPC_TRUE= + USERVER_IPC_FALSE='#' +else + USERVER_IPC_TRUE='#' + USERVER_IPC_FALSE= +fi + + +$as_echo "#define USERVER_IPC 1" >>confdefs.h + + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if you want to build userver_udp" >&5 +$as_echo_n "checking if you want to build userver_udp... " >&6; } + +# Check whether --with-userver-udp was given. +if test "${with_userver_udp+set}" = set; then : + withval=$with_userver_udp; use_userver_udp=$withval +else + use_userver_udp=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_userver_udp" >&5 +$as_echo "$use_userver_udp" >&6; } + + if test "$use_userver_udp" = "yes" ; then + if true; then + USERVER_UDP_TRUE= + USERVER_UDP_FALSE='#' +else + USERVER_UDP_TRUE='#' + USERVER_UDP_FALSE= +fi + + +$as_echo "#define USERVER_UDP 1" >>confdefs.h + + fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -28501,6 +28580,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_parser" >&5 $as_echo "$use_parser" >&6; } + if test "$use_parser" = "yes" ; then for ac_prog in 'bison -y' byacc do @@ -35873,10 +35953,26 @@ if test -z "${NANOSLEEP_TRUE}" && test -z "${NANOSLEEP_FALSE}"; then as_fn_error $? "conditional \"NANOSLEEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${USERVER_IPC_TRUE}" && test -z "${USERVER_IPC_FALSE}"; then + as_fn_error $? "conditional \"USERVER_IPC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USERVER_UDP_TRUE}" && test -z "${USERVER_UDP_FALSE}"; then + as_fn_error $? "conditional \"USERVER_UDP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${ENABLE_EXAMPLES_TRUE}" && test -z "${ENABLE_EXAMPLES_FALSE}"; then as_fn_error $? "conditional \"ENABLE_EXAMPLES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${USERVER_IPC_TRUE}" && test -z "${USERVER_IPC_FALSE}"; then + as_fn_error $? "conditional \"USERVER_IPC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USERVER_UDP_TRUE}" && test -z "${USERVER_UDP_FALSE}"; then + as_fn_error $? "conditional \"USERVER_UDP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${ENABLE_EXAMPLES_TRUE}" && test -z "${ENABLE_EXAMPLES_FALSE}"; then as_fn_error $? "conditional \"ENABLE_EXAMPLES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/configure.ac b/configure.ac index a8641bce..45cc6b61 100644 --- a/configure.ac +++ b/configure.ac @@ -1253,10 +1253,37 @@ if test -z "$enable_examples" -a "$enable_shared" = "yes"; then enable_examples="yes" fi +AM_CONDITIONAL(USERVER_IPC, false) +AM_CONDITIONAL(USERVER_UDP, false) + if test "$enable_examples" = "yes"; then AC_MSG_RESULT(yes) ulib_examples="enabled" AM_CONDITIONAL(ENABLE_EXAMPLES, true) + + AC_MSG_CHECKING(if you want to build userver_ipc) + AC_ARG_WITH(userver-ipc, + [ --with-userver-ipc Enable building of userver_ipc, default is disabled], + [use_userver_ipc=$withval], + [use_userver_ipc=no]) + AC_MSG_RESULT($use_userver_ipc) + + if test "$use_userver_ipc" = "yes" ; then + AM_CONDITIONAL(USERVER_IPC, true) + AC_DEFINE(USERVER_IPC, 1, [Define if use userver_ipc]) + fi + + AC_MSG_CHECKING(if you want to build userver_udp) + AC_ARG_WITH(userver-udp, + [ --with-userver-udp Enable building of userver_udp, default is disabled], + [use_userver_udp=$withval], + [use_userver_udp=no]) + AC_MSG_RESULT($use_userver_udp) + + if test "$use_userver_udp" = "yes" ; then + AM_CONDITIONAL(USERVER_UDP, true) + AC_DEFINE(USERVER_UDP, 1, [Define if use userver_udp]) + fi else AC_MSG_RESULT(no) AM_CONDITIONAL(ENABLE_EXAMPLES, false) @@ -1299,6 +1326,7 @@ AC_ARG_WITH(parser, [use_parser=$withval], [use_parser=no]) AC_MSG_RESULT($use_parser) + if test "$use_parser" = "yes" ; then AC_PROG_YACC AC_PROG_LEX diff --git a/examples/userver/Makefile.am b/examples/userver/Makefile.am index 1a976844..1d218829 100644 --- a/examples/userver/Makefile.am +++ b/examples/userver/Makefile.am @@ -23,6 +23,15 @@ userver_ssl_CPPFLAGS = -DU_SSL_SOCKET $(CPPFLAGS) bin_PROGRAMS += userver_ssl endif +if USERVER_UDP +userver_udp_LDADD = $(ulib_la) +userver_udp_SOURCES = userver.cpp +userver_udp_LDFLAGS = $(PRG_LDFLAGS) +userver_udp_CPPFLAGS = -DU_UDP_SOCKET $(CPPFLAGS) +bin_PROGRAMS += userver_udp +endif + +if USERVER_IPC ## MINGW don't have unix socket... if !MINGW userver_ipc_LDADD = $(ulib_la) @@ -31,6 +40,7 @@ userver_ipc_LDFLAGS = $(PRG_LDFLAGS) userver_ipc_CPPFLAGS = -DU_UNIX_SOCKET $(CPPFLAGS) bin_PROGRAMS += userver_ipc endif +endif install-exec-hook: @if test -f "$(DESTDIR)$(DEFAULT_CONFIG_FILE)" ; then \ diff --git a/examples/userver/Makefile.in b/examples/userver/Makefile.in index 933c1c44..0153d5f0 100644 --- a/examples/userver/Makefile.in +++ b/examples/userver/Makefile.in @@ -90,9 +90,11 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -bin_PROGRAMS = userver_tcp$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) +bin_PROGRAMS = userver_tcp$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \ + $(am__EXEEXT_3) @SSL_TRUE@am__append_1 = userver_ssl -@MINGW_FALSE@am__append_2 = userver_ipc +@USERVER_UDP_TRUE@am__append_2 = userver_udp +@MINGW_FALSE@@USERVER_IPC_TRUE@am__append_3 = userver_ipc subdir = examples/userver ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ac_check_package.m4 \ @@ -123,14 +125,17 @@ CONFIG_CLEAN_FILES = web_server.spec wagsmserver.spec tsaserver.spec \ cspserver.spec rsignserver.spec CONFIG_CLEAN_VPATH_FILES = @SSL_TRUE@am__EXEEXT_1 = userver_ssl$(EXEEXT) -@MINGW_FALSE@am__EXEEXT_2 = userver_ipc$(EXEEXT) +@USERVER_UDP_TRUE@am__EXEEXT_2 = userver_udp$(EXEEXT) +@MINGW_FALSE@@USERVER_IPC_TRUE@am__EXEEXT_3 = userver_ipc$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sysconfdir)" PROGRAMS = $(bin_PROGRAMS) am__userver_ipc_SOURCES_DIST = userver.cpp -@MINGW_FALSE@am_userver_ipc_OBJECTS = userver_ipc-userver.$(OBJEXT) +@MINGW_FALSE@@USERVER_IPC_TRUE@am_userver_ipc_OBJECTS = \ +@MINGW_FALSE@@USERVER_IPC_TRUE@ userver_ipc-userver.$(OBJEXT) userver_ipc_OBJECTS = $(am_userver_ipc_OBJECTS) am__DEPENDENCIES_1 = $(top_builddir)/src/ulib/lib@ULIB@.la -@MINGW_FALSE@userver_ipc_DEPENDENCIES = $(am__DEPENDENCIES_1) +@MINGW_FALSE@@USERVER_IPC_TRUE@userver_ipc_DEPENDENCIES = \ +@MINGW_FALSE@@USERVER_IPC_TRUE@ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent @@ -151,6 +156,14 @@ userver_tcp_DEPENDENCIES = $(am__DEPENDENCIES_1) userver_tcp_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(userver_tcp_LDFLAGS) $(LDFLAGS) -o $@ +am__userver_udp_SOURCES_DIST = userver.cpp +@USERVER_UDP_TRUE@am_userver_udp_OBJECTS = \ +@USERVER_UDP_TRUE@ userver_udp-userver.$(OBJEXT) +userver_udp_OBJECTS = $(am_userver_udp_OBJECTS) +@USERVER_UDP_TRUE@userver_udp_DEPENDENCIES = $(am__DEPENDENCIES_1) +userver_udp_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(userver_udp_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -185,9 +198,10 @@ am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(userver_ipc_SOURCES) $(userver_ssl_SOURCES) \ - $(userver_tcp_SOURCES) + $(userver_tcp_SOURCES) $(userver_udp_SOURCES) DIST_SOURCES = $(am__userver_ipc_SOURCES_DIST) \ - $(am__userver_ssl_SOURCES_DIST) $(userver_tcp_SOURCES) + $(am__userver_ssl_SOURCES_DIST) $(userver_tcp_SOURCES) \ + $(am__userver_udp_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -451,10 +465,14 @@ userver_tcp_CPPFLAGS = -DU_TCP_SOCKET $(CPPFLAGS) @SSL_TRUE@userver_ssl_SOURCES = userver.cpp @SSL_TRUE@userver_ssl_LDFLAGS = $(PRG_LDFLAGS) @SSL_TRUE@userver_ssl_CPPFLAGS = -DU_SSL_SOCKET $(CPPFLAGS) -@MINGW_FALSE@userver_ipc_LDADD = $(ulib_la) -@MINGW_FALSE@userver_ipc_SOURCES = userver.cpp -@MINGW_FALSE@userver_ipc_LDFLAGS = $(PRG_LDFLAGS) -@MINGW_FALSE@userver_ipc_CPPFLAGS = -DU_UNIX_SOCKET $(CPPFLAGS) +@USERVER_UDP_TRUE@userver_udp_LDADD = $(ulib_la) +@USERVER_UDP_TRUE@userver_udp_SOURCES = userver.cpp +@USERVER_UDP_TRUE@userver_udp_LDFLAGS = $(PRG_LDFLAGS) +@USERVER_UDP_TRUE@userver_udp_CPPFLAGS = -DU_UDP_SOCKET $(CPPFLAGS) +@MINGW_FALSE@@USERVER_IPC_TRUE@userver_ipc_LDADD = $(ulib_la) +@MINGW_FALSE@@USERVER_IPC_TRUE@userver_ipc_SOURCES = userver.cpp +@MINGW_FALSE@@USERVER_IPC_TRUE@userver_ipc_LDFLAGS = $(PRG_LDFLAGS) +@MINGW_FALSE@@USERVER_IPC_TRUE@userver_ipc_CPPFLAGS = -DU_UNIX_SOCKET $(CPPFLAGS) all: all-am .SUFFIXES: @@ -560,6 +578,10 @@ userver_tcp$(EXEEXT): $(userver_tcp_OBJECTS) $(userver_tcp_DEPENDENCIES) $(EXTRA @rm -f userver_tcp$(EXEEXT) $(AM_V_CXXLD)$(userver_tcp_LINK) $(userver_tcp_OBJECTS) $(userver_tcp_LDADD) $(LIBS) +userver_udp$(EXEEXT): $(userver_udp_OBJECTS) $(userver_udp_DEPENDENCIES) $(EXTRA_userver_udp_DEPENDENCIES) + @rm -f userver_udp$(EXEEXT) + $(AM_V_CXXLD)$(userver_udp_LINK) $(userver_udp_OBJECTS) $(userver_udp_LDADD) $(LIBS) + mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -569,6 +591,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userver_ipc-userver.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userver_ssl-userver.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userver_tcp-userver.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userver_udp-userver.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @@ -636,6 +659,20 @@ userver_tcp-userver.obj: userver.cpp @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(userver_tcp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o userver_tcp-userver.obj `if test -f 'userver.cpp'; then $(CYGPATH_W) 'userver.cpp'; else $(CYGPATH_W) '$(srcdir)/userver.cpp'; fi` +userver_udp-userver.o: userver.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(userver_udp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT userver_udp-userver.o -MD -MP -MF $(DEPDIR)/userver_udp-userver.Tpo -c -o userver_udp-userver.o `test -f 'userver.cpp' || echo '$(srcdir)/'`userver.cpp +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/userver_udp-userver.Tpo $(DEPDIR)/userver_udp-userver.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='userver.cpp' object='userver_udp-userver.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(userver_udp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o userver_udp-userver.o `test -f 'userver.cpp' || echo '$(srcdir)/'`userver.cpp + +userver_udp-userver.obj: userver.cpp +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(userver_udp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT userver_udp-userver.obj -MD -MP -MF $(DEPDIR)/userver_udp-userver.Tpo -c -o userver_udp-userver.obj `if test -f 'userver.cpp'; then $(CYGPATH_W) 'userver.cpp'; else $(CYGPATH_W) '$(srcdir)/userver.cpp'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/userver_udp-userver.Tpo $(DEPDIR)/userver_udp-userver.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='userver.cpp' object='userver_udp-userver.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(userver_udp_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o userver_udp-userver.obj `if test -f 'userver.cpp'; then $(CYGPATH_W) 'userver.cpp'; else $(CYGPATH_W) '$(srcdir)/userver.cpp'; fi` + mostlyclean-libtool: -rm -f *.lo diff --git a/examples/userver/userver.cpp b/examples/userver/userver.cpp index 54d7d3a6..55f46985 100644 --- a/examples/userver/userver.cpp +++ b/examples/userver/userver.cpp @@ -5,14 +5,17 @@ #ifdef U_SSL_SOCKET # include # define Server UServer -#elif defined(U_TCP_SOCKET) -# include -# define Server UServer +#elif defined(U_UDP_SOCKET) +# include +# define Server UServer #elif defined(U_UNIX_SOCKET) # include # define Server UServer +#elif defined(U_TCP_SOCKET) +# include +# define Server UServer #else -# error "you must define the socket type (U_SSL_SOCKET | U_TCP_SOCKET | U_UNIX_SOCKET)" +# error "you must define the socket type (U_SSL_SOCKET | U_TCP_SOCKET | U_UNIX_SOCKET | U_UDP_SOCKET)" #endif #include @@ -132,11 +135,14 @@ public: // DOS_LOGFILE the file to write DOS event // --------------------------------------------------------------------------------------------------------------------------------------- -# ifdef U_SSL_SOCKET +# if defined(U_SSL_SOCKET) UServer_Base::bssl = true; +# elif defined(U_UDP_SOCKET) + UServer_Base::budp = true; # elif defined(U_UNIX_SOCKET) UServer_Base::bipc = true; # endif + server = new Server(&cfg); server->run(); diff --git a/include/ulib/base/coder/gzio.h b/include/ulib/base/coder/gzio.h index 79f79fc9..8238ec24 100644 --- a/include/ulib/base/coder/gzio.h +++ b/include/ulib/base/coder/gzio.h @@ -26,7 +26,9 @@ extern "C" { * #define GZIP_MAGIC "\037\213" Magic header for gzip files, 1F 8B */ -U_EXPORT uint32_t u_gz_deflate(const char* restrict input, uint32_t len, char* restrict result, bool bheader); +extern U_EXPORT bool u_gz_deflate_header; /* deflate, gzip */ + +U_EXPORT uint32_t u_gz_deflate(const char* restrict input, uint32_t len, char* restrict result, int level); U_EXPORT uint32_t u_gz_inflate(const char* restrict input, uint32_t len, char* restrict result); #ifdef __cplusplus diff --git a/include/ulib/dynamic/dynamic.h b/include/ulib/dynamic/dynamic.h index 6233ca63..9bc679aa 100644 --- a/include/ulib/dynamic/dynamic.h +++ b/include/ulib/dynamic/dynamic.h @@ -143,15 +143,8 @@ public: U_CHECK_MEMORY - U_INTERNAL_ASSERT_POINTER(handle) - -# ifdef _MSWINDOWS_ - ::FreeLibrary(handle); -# else - (void) U_SYSCALL(dlclose, "%p", handle); -# endif - - handle = U_NULLPTR; + dclose(handle); + handle = U_NULLPTR; } /** @@ -189,6 +182,7 @@ protected: static UString* plugin_dir; + static void dclose(HINSTANCE handle); static HINSTANCE dload(const char* pathname); static void* lookup(HINSTANCE handle, const char* sym); static HINSTANCE dload(const char* name, uint32_t name_len); diff --git a/include/ulib/examples/wi_auth_declaration.h b/include/ulib/examples/wi_auth_declaration.h index 903f248c..d3d04c1a 100644 --- a/include/ulib/examples/wi_auth_declaration.h +++ b/include/ulib/examples/wi_auth_declaration.h @@ -5667,7 +5667,7 @@ static void GET_get_config() if (U_http_is_accept_gzip && _body.size() > U_MIN_SIZE_FOR_DEFLATE) { - _body = UStringExt::deflate(_body, 1); + _body = UStringExt::deflate(_body, Z_DEFAULT_COMPRESSION); } # endif } diff --git a/include/ulib/internal/config.h.in b/include/ulib/internal/config.h.in index a7eae279..3994559b 100644 --- a/include/ulib/internal/config.h.in +++ b/include/ulib/internal/config.h.in @@ -696,6 +696,12 @@ /* ULib version */ #undef ULIB_VERSION +/* Define if use userver_ipc */ +#undef USERVER_IPC + +/* Define if use userver_udp */ +#undef USERVER_UDP + /* Define if enable c-ares support */ #undef USE_C_ARES diff --git a/include/ulib/net/server/plugin/mod_nocat.h b/include/ulib/net/server/plugin/mod_nocat.h index 2cc84ca3..f127d89d 100644 --- a/include/ulib/net/server/plugin/mod_nocat.h +++ b/include/ulib/net/server/plugin/mod_nocat.h @@ -235,7 +235,6 @@ protected: static bool checkPeerInfo(UStringRep* key, void* value); static bool checkPeerStatus(UStringRep* key, void* value); static bool getPeerListInfo(UStringRep* key, void* value); - static void setHTTPResponse(const UString& content, int mime_index); static void permit(UString& UserDownloadRate, UString& UserUploadRate); static void sendMsgToPortal(uint32_t index_AUTH, const UString& msg, UString* poutput); static void sendData(uint32_t index_AUTH, const UString& data, const char* service, uint32_t service_len); diff --git a/include/ulib/net/server/server.h b/include/ulib/net/server/server.h index 2035aa31..11757e32 100644 --- a/include/ulib/net/server/server.h +++ b/include/ulib/net/server/server.h @@ -19,6 +19,8 @@ #include #include #include +#include +#include #include #include #include @@ -209,7 +211,7 @@ public: static void run(); // loop waiting for connection static UFileConfig* cfg; - static bool bssl, bipc, flag_loop; + static bool bssl, bipc, budp, flag_loop; static unsigned int port; // the port number to bind to static int getReqTimeout() { return (ptime ? ptime->UTimeVal::tv_sec : 0); } @@ -610,8 +612,10 @@ public: static int iAddressType, socket_flags, tcp_linger_set; static uint32_t client_address_len, min_size_for_sendfile; -#define U_CLIENT_ADDRESS_TO_PARAM UServer_Base::client_address, UServer_Base::client_address_len -#define U_CLIENT_ADDRESS_TO_TRACE UServer_Base::client_address_len, UServer_Base::client_address +#define U_CLIENT_ADDRESS_TO_PARAM UServer_Base::client_address, UServer_Base::client_address_len +#define U_CLIENT_ADDRESS_TO_TRACE UServer_Base::client_address_len, UServer_Base::client_address + + static void setClientAddress() { setClientAddress(csocket, client_address, client_address_len); } static UString getIPAddress() { return *IP_address; } static UString getNetworkDevice( const char* exclude) { return USocketExt::getNetworkDevice(exclude); } @@ -641,6 +645,7 @@ public: static USocket* socket; static USocket* csocket; + static UString* name_sock; // name file for the listening socket protected: static int timeoutMS, // the time-out value in milliseconds for client request verify_mode; // mode of verification ssl connection @@ -653,7 +658,6 @@ protected: static UString* password; // password for private key of server static UString* ca_file; // locations of trusted CA certificates used in the verification static UString* ca_path; // locations of trusted CA certificates used in the verification - static UString* name_sock; // name file for the listening socket static UString* IP_address; // IP address of this server static int rkids; @@ -681,6 +685,10 @@ protected: static void runLoop(const char* user); static bool handlerTimeoutConnection(void* cimg); +#ifndef U_LOG_DISABLE + static void logNewClient(USocket* psocket, UClientImage_Base* lClientImage); +#endif + #ifdef U_WELCOME_SUPPORT static UString* msg_welcome; #endif @@ -704,6 +712,28 @@ protected: static UString getStats(); #endif +#ifdef USERVER_UDP + static vPFi runDynamicPage_udp; + + static int handlerUDP() + { + U_TRACE_NO_PARAM(0, "UServer_Base::handlerUDP()") + + U_INTERNAL_DUMP("runDynamicPage_udp = %p", runDynamicPage_udp) + + if (runDynamicPage_udp) runDynamicPage_udp(0); + else + { + *UClientImage_Base::wbuffer = *UClientImage_Base::rbuffer; // echo server + } + + UClientImage_Base::setRequestProcessed(); + UClientImage_Base::setNoHeaderForResponse(); + + U_RETURN(U_PLUGIN_HANDLER_FINISHED); + } +#endif + #ifdef U_THROTTLING_SUPPORT typedef struct uthrottling { uint64_t bytes_since_avg; @@ -872,9 +902,9 @@ protected: U_RETURN(false); } - static RETSIGTYPE handlerForSigHUP( int signo); - static RETSIGTYPE handlerForSigTERM( int signo); -// static RETSIGTYPE handlerForSigCHLD( int signo); + static RETSIGTYPE handlerForSigHUP( int signo); + static RETSIGTYPE handlerForSigTERM(int signo); +// static RETSIGTYPE handlerForSigCHLD(int signo); static void sendSignalToAllChildren(int signo, sighandler_t handler); @@ -901,6 +931,18 @@ private: if (pluginsHandlerSigHUP() != U_PLUGIN_HANDLER_FINISHED) U_WARNING("Plugins stage SigHUP failed..."); } + static void setClientAddress(USocket* psocket, char*& pclient_address, uint32_t& pclient_address_len) + { + U_TRACE(0, "UServer_Base::setClientAddress(%p,%p,%u)", psocket, pclient_address, pclient_address_len) + + U_INTERNAL_ASSERT(psocket->isConnected()) + + pclient_address = UIPAddress::resolveStrAddress(iAddressType, psocket->cRemoteAddress.pcAddress.p, psocket->cRemoteAddress.pcStrAddress); + pclient_address_len = u__strlen(pclient_address, __PRETTY_FUNCTION__); + + U_INTERNAL_DUMP("client_address = %.*S", pclient_address_len, pclient_address) + } + static void logMemUsage(const char* signame) { U_TRACE(0, "UServer_Base::logMemUsage(%S)", signame) @@ -1036,6 +1078,8 @@ public: # endif U_NEW(USSLSocket, socket, USSLSocket(UClientImage_Base::bIPv6, U_NULLPTR, true)); + + if (pcfg) ((USSLSocket*)socket)->ciphersuite_model = pcfg->readLong(U_CONSTANT_TO_PARAM("CIPHER_SUITE")); } virtual ~UServer() @@ -1084,4 +1128,140 @@ private: U_DISALLOW_COPY_AND_ASSIGN(UServer) }; #endif + +#ifdef USERVER_UDP +template <> class U_EXPORT UServer : public UServer_Base { +public: + + typedef UClientImage client_type; + + UServer(UFileConfig* pcfg) : UServer_Base(pcfg) + { + U_TRACE_REGISTER_OBJECT(0, UServer, "%p", pcfg) + +# ifdef DEBUG + if (pcfg && + budp == false) + { + U_ERROR("You need to set budp var before loading the configuration"); + } +# endif + + U_NEW(UUDPSocket, socket, UUDPSocket(UClientImage_Base::bIPv6)); + } + + virtual ~UServer() + { + U_TRACE_UNREGISTER_OBJECT(0, UServer) + } + + // DEBUG + +#if defined(DEBUG) && defined(U_STDCPP_ENABLE) + const char* dump(bool reset) const { return UServer_Base::dump(reset); } +#endif + +protected: + + // --------------------------------------------------------------------------------------------------------------- + // method VIRTUAL to redefine + // --------------------------------------------------------------------------------------------------------------- + // Create a new UClientImage object representing a client connection to the server. + // Derived classes that have overridden UClientImage object may call this function to implement the creation logic + // --------------------------------------------------------------------------------------------------------------- + + virtual void preallocate() U_DECL_OVERRIDE + { + U_TRACE_NO_PARAM(0+256, "UServer::preallocate()") + + // NB: array are not pointers (virtual table can shift the address of this)... + + vClientImage = new client_type[UNotifier::max_connection]; + } + +#ifdef DEBUG + virtual void deallocate() U_DECL_OVERRIDE + { + U_TRACE_NO_PARAM(0+256, "UServer::deallocate()") + + // NB: array are not pointers (virtual table can shift the address of this)... + + delete[] (client_type*)vClientImage; + } + + virtual bool check_memory() U_DECL_OVERRIDE { return u_check_memory_vector((client_type*)vClientImage, UNotifier::max_connection); } +#endif + +private: + U_DISALLOW_COPY_AND_ASSIGN(UServer) +}; +#endif + +#ifdef USERVER_IPC +template <> class U_EXPORT UServer : public UServer_Base { +public: + + typedef UClientImage client_type; + + UServer(UFileConfig* pcfg) : UServer_Base(pcfg) + { + U_TRACE_REGISTER_OBJECT(0, UServer, "%p", pcfg) + +# ifdef DEBUG + if (pcfg && + bipc == false) + { + U_ERROR("You need to set bipc var before loading the configuration"); + } +# endif + + U_NEW(UUnixSocket, socket, UUnixSocket(UClientImage_Base::bIPv6)); + } + + virtual ~UServer() + { + U_TRACE_UNREGISTER_OBJECT(0, UServer) + } + + // DEBUG + +#if defined(DEBUG) && defined(U_STDCPP_ENABLE) + const char* dump(bool reset) const { return UServer_Base::dump(reset); } +#endif + +protected: + + // --------------------------------------------------------------------------------------------------------------- + // method VIRTUAL to redefine + // --------------------------------------------------------------------------------------------------------------- + // Create a new UClientImage object representing a client connection to the server. + // Derived classes that have overridden UClientImage object may call this function to implement the creation logic + // --------------------------------------------------------------------------------------------------------------- + + virtual void preallocate() U_DECL_OVERRIDE + { + U_TRACE_NO_PARAM(0+256, "UServer::preallocate()") + + // NB: array are not pointers (virtual table can shift the address of this)... + + vClientImage = new client_type[UNotifier::max_connection]; + } + +#ifdef DEBUG + virtual void deallocate() U_DECL_OVERRIDE + { + U_TRACE_NO_PARAM(0+256, "UServer::deallocate()") + + // NB: array are not pointers (virtual table can shift the address of this)... + + delete[] (client_type*)vClientImage; + } + + virtual bool check_memory() U_DECL_OVERRIDE { return u_check_memory_vector((client_type*)vClientImage, UNotifier::max_connection); } +#endif + +private: + U_DISALLOW_COPY_AND_ASSIGN(UServer) +}; +#endif #endif diff --git a/include/ulib/net/socket.h b/include/ulib/net/socket.h index 5908c568..78214c6a 100644 --- a/include/ulib/net/socket.h +++ b/include/ulib/net/socket.h @@ -606,12 +606,16 @@ public: int recvFrom(void* pBuffer, uint32_t iBufLength, uint32_t uiFlags, UIPAddress& cSourceIP, unsigned int& iSourcePortNumber); + int recvFrom(void* pBuffer, uint32_t iBufLength, uint32_t uiFlags = 0) { return recvFrom(pBuffer, iBufLength, uiFlags, cRemoteAddress, iRemotePort); } + /** - * The socket transmits the data to the remote socket + * The socket transmits the data to the remote socket. The number of bytes written is returned */ int sendTo(void* pPayload, uint32_t iPayloadLength, uint32_t uiFlags, UIPAddress& cDestinationIP, unsigned int iDestinationPortNumber); + int sendTo(void* pPayload, uint32_t iPayloadLength, uint32_t uiFlags = 0) { return sendTo(pPayload, iPayloadLength, uiFlags, cRemoteAddress, iRemotePort); } + /** * This method is called to read a 16-bit binary value from the remote connection. * We loop - calling recv() - until the required number of bytes are read, if recv() @@ -771,6 +775,9 @@ protected: static bool breuseport, bincoming_cpu; static int iBackLog, incoming_cpu, accept4_flags; // If flags is 0, then accept4() is the same as accept() + static void setLocalInfo( USocket* p, SocketAddress* cLocal); + static void setRemoteInfo(USocket* p, SocketAddress* cRemote); + /** * The _socket() function is called to create the socket of the specified type. * The parameters indicate whether the socket will use IPv6 or IPv4 and the type of socket diff --git a/include/ulib/net/unixsocket.h b/include/ulib/net/unixsocket.h index afb7c619..53e77358 100644 --- a/include/ulib/net/unixsocket.h +++ b/include/ulib/net/unixsocket.h @@ -16,8 +16,9 @@ #include -#ifdef _WIN32 +#ifdef _MSWINDOWS_ # include +typedef struct sockaddr_un { char sun_path[108]; } sockaddr_un; #else # include #endif @@ -57,8 +58,8 @@ */ union uusockaddr_un { - struct sockaddr psaGeneric; - struct sockaddr_un psaUnixAddr; + struct sockaddr psaGeneric; + struct sockaddr_un psaUnixAddr; }; class UServer_Base; diff --git a/include/ulib/utility/string_ext.h b/include/ulib/utility/string_ext.h index 85581bad..a9a1ebb5 100644 --- a/include/ulib/utility/string_ext.h +++ b/include/ulib/utility/string_ext.h @@ -68,26 +68,31 @@ public: static UString compress(const UString& s) { return compress(U_STRING_TO_PARAM(s)); } static UString decompress(const UString& s) { return decompress(U_STRING_TO_PARAM(s)); } -#ifdef USE_LIBBROTLI + static uint32_t ratio, ratio_threshold; + + static bool isGzip(const char* s) { return (u_get_unalignedp16(s) == U_MULTICHAR_CONSTANT16('\x1F','\x8B')); } + static bool isGzip(const UString& s) { return isGzip(s.data()); } + + static UString gunzip(const char* s, uint32_t n, uint32_t sz_orig); // .gz uncompress + static UString gunzip(const UString& s, uint32_t sz_orig = 0) { return gunzip(U_STRING_TO_PARAM(s), sz_orig); } + +#ifdef USE_LIBZ + static UString deflate(const char* s, uint32_t n, uint32_t quality = 0); // .gz compress (0 => zopfli) + static UString deflate(const UString& s, uint32_t quality = 0) { return deflate(U_STRING_TO_PARAM(s), quality); } +#endif + + static bool isBrotli(const char* s) { return false; } // (u_get_unalignedp32(s) == U_MULTICHAR_CONSTANT32('\xCE','\xB2','\xCF','\x81')) + static bool isBrotli(const UString& s) { return isBrotli(s.data()); } + static UString unbrotli(const char* s, uint32_t n); static UString unbrotli(const UString& s) { return unbrotli(U_STRING_TO_PARAM(s)); } +#ifdef USE_LIBBROTLI static UString brotli(const char* s, uint32_t n, uint32_t quality = BROTLI_MAX_QUALITY, uint32_t mode = BROTLI_MODE_TEXT, uint32_t lgwin = BROTLI_DEFAULT_WINDOW); static UString brotli(const UString& s, uint32_t quality = BROTLI_MAX_QUALITY, uint32_t mode = BROTLI_MODE_TEXT, uint32_t lgwin = BROTLI_DEFAULT_WINDOW) { return brotli(U_STRING_TO_PARAM(s), quality, mode, lgwin); } #endif - // GZIP method - - static bool isGzip(const char* s) { return (u_get_unalignedp16(s) == U_MULTICHAR_CONSTANT16('\x1F','\x8B')); } - static bool isGzip(const UString& s) { return isGzip(s.data()); } - - static UString deflate(const char* s, uint32_t n, int type); // .gz compress - static UString gunzip(const char* s, uint32_t n, uint32_t sz_orig); // .gz uncompress - - static UString deflate(const UString& s, int type) { return deflate(U_STRING_TO_PARAM(s), type); } - static UString gunzip(const UString& s, uint32_t sz_orig = 0) { return gunzip(U_STRING_TO_PARAM(s), sz_orig); } - // Convert numeric to string static UString printSize(off_t n) diff --git a/include/ulib/utility/uhttp.h b/include/ulib/utility/uhttp.h index b9050366..480955ed 100644 --- a/include/ulib/utility/uhttp.h +++ b/include/ulib/utility/uhttp.h @@ -44,6 +44,7 @@ class UPageSpeed; class USSIPlugIn; class UHttpPlugIn; class USSLSession; +class UProxyPlugIn; class UMimeMultipart; class UModProxyService; class UClientImage_Base; @@ -184,7 +185,7 @@ public: static char response_buffer[64]; static int mime_index, cgi_timeout; // the time-out value in seconds for output cgi process static bool enable_caching_by_proxy_servers, skip_check_cookie_ip_address; - static uint32_t limit_request_body, request_read_timeout, range_start, range_size, brotli_level_for_dynamic_content; + static uint32_t limit_request_body, request_read_timeout, range_start, range_size, gzip_level_for_dynamic_content, brotli_level_for_dynamic_content; static bool readRequest(); static bool handlerCache(); @@ -419,10 +420,6 @@ public: NETWORK_AUTHENTICATION_REQUIRED = 0x008 }; - static void setDynamicResponse(); - static void setResponse(bool btype, const UString& content_type, UString* pbody); - static void setRedirectResponse(int mode, const char* ptr_location, uint32_t len_location); - static void setErrorResponse(const UString& content_type, int code, const char* fmt, uint32_t fmt_size, bool bformat = true); static void setResponse() { @@ -435,6 +432,12 @@ public: handlerResponse(); } + static void setDynamicResponse(); + static void setResponseMimeIndex(const UString& content, int mime_index); + static void setResponse(const UString& content_type, UString* pbody = U_NULLPTR); + static void setRedirectResponse(int mode, const char* ptr_location, uint32_t len_location); + static void setErrorResponse(const UString& content_type, int code, const char* fmt, uint32_t fmt_size, bool bformat = true); + // set HTTP main error message static void setNotFound() @@ -1282,6 +1285,7 @@ private: static int handlerREAD(); static void processRequest(); static void handlerResponse(); + static void setDynamicResponse(const UString& body, const UString& header = UString::getStringNull(), const UString& content_type = UString::getStringNull()); #ifndef U_LOG_DISABLE static int handlerREADWithLog() @@ -1365,6 +1369,7 @@ private: static void checkArrayCompressData(UFileCacheData* ptr) U_NO_EXPORT; # endif + static inline bool compress(const UString& body) U_NO_EXPORT; static inline void setAcceptEncoding(const char* ptr, uint32_t len) U_NO_EXPORT; #endif @@ -1385,19 +1390,20 @@ private: static bool checkGetRequestIfRange() U_NO_EXPORT; static void setCGIShellScript(UString& command) U_NO_EXPORT; static bool checkIfSourceHasChangedAndCompileUSP() U_NO_EXPORT; - static void setResponseCompressed(const UString& data) U_NO_EXPORT; static bool compileUSP(const char* path, uint32_t len) U_NO_EXPORT; static int checkGetRequestForRange(const UString& data) U_NO_EXPORT; static int sortRange(const void* a, const void* b) __pure U_NO_EXPORT; static bool addHTTPVariables(UStringRep* key, void* value) U_NO_EXPORT; + static void setContentResponse(const UString& content_type) U_NO_EXPORT; static bool splitCGIOutput(const char*& ptr1, const char* ptr2) U_NO_EXPORT; static void putDataInCache(const UString& fmt, UString& content) U_NO_EXPORT; - static void setHeaderForCache(UFileCacheData* ptr, const UString& data) U_NO_EXPORT; + static void setHeaderForCache(UFileCacheData* ptr, UString& data) U_NO_EXPORT; static bool readDataChunked(USocket* sk, UString* pbuffer, UString& body) U_NO_EXPORT; static void setResponseForRange(uint32_t start, uint32_t end, uint32_t header) U_NO_EXPORT; static void manageDataForCache(const UString& basename, const UString& suffix) U_NO_EXPORT; static bool checkDataSession(const UString& token, time_t expire, UString* data) U_NO_EXPORT; static bool processAuthorization(const char* ptr = U_NULLPTR, uint32_t sz = 0, const char* pattern = U_NULLPTR, uint32_t len = 0) U_NO_EXPORT; + static void setDataInCache(const UString& fmt, const UString& content, const char* encoding = U_NULLPTR, uint32_t encoding_len = 0) U_NO_EXPORT; static inline void resetFileCache() U_NO_EXPORT; static inline void setUpgrade(const char* ptr) U_NO_EXPORT; @@ -1425,6 +1431,7 @@ private: friend class UHTTP2; friend class USSIPlugIn; friend class UHttpPlugIn; + friend class UProxyPlugIn; friend class UClientImage_Base; #ifdef U_STDCPP_ENABLE diff --git a/src/ulib/application.cpp b/src/ulib/application.cpp index 59304db3..1b31209e 100644 --- a/src/ulib/application.cpp +++ b/src/ulib/application.cpp @@ -50,7 +50,8 @@ void UApplication::printMemUsage() { U_TRACE_NO_PARAM(0, "UApplication::printMemUsage()") - if (U_SYSCALL(getenv, "%S", "UMEMUSAGE")) + if (UServer_Base::budp == false && + U_SYSCALL(getenv, "%S", "UMEMUSAGE")) { if (UServer_Base::preforked_num_kids) U_WARNING("UMEMUSAGE must be used with PREFORK_CHILD == 0"); diff --git a/src/ulib/base/coder/cgzio.c b/src/ulib/base/coder/cgzio.c index cc5068fe..6d8ce6e1 100644 --- a/src/ulib/base/coder/cgzio.c +++ b/src/ulib/base/coder/cgzio.c @@ -17,6 +17,8 @@ #include +bool u_gz_deflate_header = true; + /** * Synopsis: Compress and Decompresses the source buffer into the destination buffer * @@ -38,13 +40,13 @@ static const char* get_error_string(int err) switch (err) { - case Z_ERRNO: p = "Error occured while reading file"; break; - case Z_STREAM_ERROR: p = "The stream state was inconsistent (e.g., next_in or next_out was NULL)"; break; - case Z_DATA_ERROR: p = "The deflate data was invalid or incomplete"; break; - case Z_MEM_ERROR: p = "Memory could not be allocated for processing"; break; - case Z_BUF_ERROR: p = "Ran out of output buffer for writing compressed bytes"; break; - case Z_VERSION_ERROR: p = "The version of zlib.h and the version of the library linked do not match"; break; - default: p = "Unknown error code."; break; + case Z_ERRNO: p = "Error occured while reading file"; break; + case Z_STREAM_ERROR: p = "The stream state was inconsistent (e.g., next_in or next_out was NULL)"; break; + case Z_DATA_ERROR: p = "The deflate data was invalid or incomplete"; break; + case Z_MEM_ERROR: p = "Memory could not be allocated for processing"; break; + case Z_BUF_ERROR: p = "Ran out of output buffer for writing compressed bytes"; break; + case Z_VERSION_ERROR: p = "The version of zlib.h and the version of the library linked do not match"; break; + default: p = "Unknown error code."; break; } return p; @@ -56,21 +58,21 @@ static int workspacesize = zlib_deflate_workspacesize(); static char workspace[workspacesize]; #endif -uint32_t u_gz_deflate(const char* restrict input, uint32_t len, char* restrict result, bool bheader) +uint32_t u_gz_deflate(const char* restrict input, uint32_t len, char* restrict result, int level) { int err; z_stream stream; /** - * stream.zalloc = // Set zalloc, zfree, and opaque to Z_NULL so - * stream.zfree = // that when we call deflateInit2 they will be - * stream.opaque = // updated to use default allocation functions. - * stream.total_out = // Total number of output bytes produced so far - * stream.next_in = // Pointer to input bytes - * stream.avail_in = // Number of input bytes left to process + * stream.zalloc // Set zalloc, zfree, and opaque to Z_NULL so + * stream.zfree // that when we call deflateInit2 they will be + * stream.opaque // updated to use default allocation functions. + * stream.total_out // Total number of output bytes produced so far + * stream.next_in // Pointer to input bytes + * stream.avail_in // Number of input bytes left to process */ - U_INTERNAL_TRACE("u_gz_deflate(%p,%u,%p,%d)", input, len, result, bheader) + U_INTERNAL_TRACE("u_gz_deflate(%p,%u,%p,%d)", input, len, result, level) U_INTERNAL_ASSERT_POINTER(input) @@ -103,7 +105,7 @@ uint32_t u_gz_deflate(const char* restrict input, uint32_t len, char* restrict r * The parameters are as follows: * * z_streamp strm - Pointer to a zstream struct - * int level - Compression level. Must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + * int level - Compression level. Must be Z_DEFAULT_COMPRESSION(-1), or between 0 and 9: * 1 gives best speed, 9 gives best compression, 0 gives no compression. * * int method - Compression method. Only method supported is "Z_DEFLATED". @@ -127,7 +129,7 @@ uint32_t u_gz_deflate(const char* restrict input, uint32_t len, char* restrict r * force Huffman encoding only (no string match) */ - err = deflateInit2(&stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, (bheader ? MAX_WBITS+16 : -MAX_WBITS), MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY); + err = deflateInit2(&stream, level, Z_DEFLATED, (u_gz_deflate_header ? MAX_WBITS+16 : -MAX_WBITS), MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY); if (err != Z_OK) { @@ -199,7 +201,7 @@ uint32_t u_gz_deflate(const char* restrict input, uint32_t len, char* restrict r U_INTERNAL_ASSERT_EQUALS(stream.total_in, len) #ifdef DEBUG - if (bheader) + if (u_gz_deflate_header) { uint32_t size_original; uint32_t* psize_original = (uint32_t*)(result + stream.total_out - 4); diff --git a/src/ulib/dynamic/dynamic.cpp b/src/ulib/dynamic/dynamic.cpp index a4f5d078..f74f7203 100644 --- a/src/ulib/dynamic/dynamic.cpp +++ b/src/ulib/dynamic/dynamic.cpp @@ -70,6 +70,19 @@ HINSTANCE UDynamic::dload(const char* name, uint32_t name_len) return dload(buffer); } +void UDynamic::dclose(HINSTANCE handle) +{ + U_TRACE(0, "UDynamic::dclose(%p)", handle) + + U_INTERNAL_ASSERT_POINTER(handle) + +#ifdef _MSWINDOWS_ + ::FreeLibrary(handle); +#else + (void) U_SYSCALL(dlclose, "%p", handle); +#endif +} + void* UDynamic::lookup(HINSTANCE handle, const char* sym) { U_TRACE(0, "UDynamic::lookup(%p,%S)", handle, sym) diff --git a/src/ulib/log.cpp b/src/ulib/log.cpp index fff9dce5..ef08b383 100644 --- a/src/ulib/log.cpp +++ b/src/ulib/log.cpp @@ -483,7 +483,7 @@ void ULog::write(const struct iovec* iov, int n) checkForLogRotateDataToWrite(); // check if there are previous data to write # endif - ptr_log_data->gzip_len = u_gz_deflate(UFile::map, file_ptr, (char*)ptr_log_data+sizeof(log_data), true); + ptr_log_data->gzip_len = u_gz_deflate(UFile::map, file_ptr, (char*)ptr_log_data+sizeof(log_data), Z_DEFAULT_COMPRESSION); U_INTERNAL_DUMP("u_gz_deflate(%u) = %u", file_ptr, ptr_log_data->gzip_len) } @@ -491,7 +491,7 @@ void ULog::write(const struct iovec* iov, int n) { U_INTERNAL_ASSERT_EQUALS(ptr_log_data->gzip_len, 0) - UString data_to_write = UStringExt::deflate(UFile::map, file_ptr, 1); + UString data_to_write = UStringExt::deflate(UFile::map, file_ptr, 0); char* ptr1 = buf_path_compress->c_pointer(index_path_compress); diff --git a/src/ulib/net/server/client_image.cpp b/src/ulib/net/server/client_image.cpp index 2ec5e0e9..3b4152ec 100644 --- a/src/ulib/net/server/client_image.cpp +++ b/src/ulib/net/server/client_image.cpp @@ -656,6 +656,15 @@ const char* UClientImage_Base::getRequestUri(uint32_t& sz) ptr = U_http_info.uri; U_INTERNAL_DUMP("U_http_info.uri(%u) = %.*S", sz, sz, ptr) + +#ifdef USERVER_UDP + if (sz == 0 && + UServer_Base::budp) + { + sz = U_CONSTANT_SIZE("unknow"); + ptr = "unknow"; + } +#endif } return ptr; @@ -1070,10 +1079,6 @@ bool UClientImage_Base::genericRead() U_INTERNAL_ASSERT_EQUALS(socket->iSockDesc, UEventFd::fd) - U_gettimeofday // NB: optimization if it is enough a time resolution of one second... - - startRequest(); - rstart = 0; request->clear(); // reset buffer before read @@ -1094,6 +1099,25 @@ bool UClientImage_Base::genericRead() socket->iState = USocket::CONNECT; // prepare socket before read +#ifdef USERVER_UDP + if (UServer_Base::budp) + { + uint32_t sz = rbuffer->size(); + int iBytesTransferred = socket->recvFrom(rbuffer->data()+sz, rbuffer->capacity()); + + if (iBytesTransferred <= 0) U_RETURN(false); + + rbuffer->size_adjust(sz+iBytesTransferred); + + UServer_Base::setClientAddress(); + +# ifndef U_LOG_DISABLE + UServer_Base::logNewClient(socket, this); +# endif + } + else +#endif + { if (USocketExt::read(socket, *rbuffer, U_SINGLE_READ, 0) == false) // NB: timeout == 0 means that we put the socket fd on epoll queue if EAGAIN... { U_ClientImage_state = (socket->isOpen() ? U_PLUGIN_HANDLER_AGAIN @@ -1101,6 +1125,7 @@ bool UClientImage_Base::genericRead() U_RETURN(false); } + } if (data_pending) { @@ -1119,6 +1144,10 @@ bool UClientImage_Base::genericRead() data_pending = U_NULLPTR; } + U_gettimeofday // NB: optimization if it is enough a time resolution of one second... + + startRequest(); + #ifdef U_SERVER_CHECK_TIME_BETWEEN_REQUEST if (U_ClientImage_advise_for_parallelization) { @@ -1146,6 +1175,9 @@ int UClientImage_Base::handlerRead() // Connection-wide hooks int result; uint32_t sz; +# ifdef USERVER_UDP + if (UServer_Base::budp == false) +# endif prepareForRead(); start: @@ -1586,10 +1618,21 @@ bool UClientImage_Base::writeResponse() { U_INTERNAL_ASSERT_EQUALS(nrequest, 0) + U_SRV_LOG_WITH_ADDR("send response (%u bytes) %.*s%#.*S to", ncount, msg_len, "[pipeline] ", iov_vec[2].iov_len, iov_vec[2].iov_base); + +# ifdef USERVER_UDP + if (UServer_Base::budp) + { + iBytesWrite = socket->sendTo(iov_vec[2].iov_base, iov_vec[2].iov_len); + + if (iBytesWrite == (int)ncount) U_RETURN(true); + + U_RETURN(false); + } +# endif + idx = 2; iovcnt = 2; - - U_SRV_LOG_WITH_ADDR("send response (%u bytes) %.*s%#.*S to", ncount, msg_len, "[pipeline] ", iov_vec[2].iov_len, iov_vec[2].iov_base); } else { diff --git a/src/ulib/net/server/plugin/mod_nocat.cpp b/src/ulib/net/server/plugin/mod_nocat.cpp index ecaf2fee..7683d4f5 100644 --- a/src/ulib/net/server/plugin/mod_nocat.cpp +++ b/src/ulib/net/server/plugin/mod_nocat.cpp @@ -440,7 +440,7 @@ void UNoCatPlugIn::setStatusContent(const UString& ap_label) *status_content = buffer; } - setHTTPResponse(*status_content, U_html); + UHTTP::setResponseMimeIndex(*status_content, U_html); } void UNoCatPlugIn::getTraffic() @@ -1809,7 +1809,7 @@ void UNoCatPlugIn::sendData(uint32_t index_AUTH, const UString& data, const char UString body = data, url = getUrlForSendMsgToPortal(index_AUTH, service, service_len); #ifdef USE_LIBZ - if (sz > U_MIN_SIZE_FOR_DEFLATE) body = UStringExt::deflate(data, 1); + if (sz > U_MIN_SIZE_FOR_DEFLATE) body = UStringExt::deflate(data, Z_DEFAULT_COMPRESSION); #endif #ifndef U_LOG_DISABLE @@ -1819,7 +1819,9 @@ void UNoCatPlugIn::sendData(uint32_t index_AUTH, const UString& data, const char { UString str = UStringExt::substitute(data.data(), U_min(sz,200), '%', U_CONSTANT_TO_PARAM("%%")); // NB: we need this because we have a message with url encoded char... - (void) u__snprintf(buffer, sizeof(buffer), U_CONSTANT_TO_PARAM("[nocat] Sent %.*s %%s (%u bytes) after %%d attempts to AUTH(%u): %V"), service_len, service, sz, index_AUTH, str.rep); + (void) u__snprintf(buffer, sizeof(buffer), + U_CONSTANT_TO_PARAM("[nocat] Sent %.*s %%s (%u bytes) after %%d attempts to AUTH(%u): %V"), + service_len, service, sz, index_AUTH, str.rep); log_msg = buffer; } @@ -1873,26 +1875,6 @@ void UNoCatPlugIn::notifyAuthOfUsersInfo(uint32_t index_AUTH) UHTTP::setResponse(); } -void UNoCatPlugIn::setHTTPResponse(const UString& content, int mime_index) -{ - U_TRACE(0, "UNoCatPlugIn::setHTTPResponse(%V%d)", content.rep, mime_index) - - if (content.empty()) - { - U_http_info.nResponseCode = HTTP_NO_CONTENT; - - UHTTP::setResponse(); - } - else - { - U_http_info.endHeader = 0; - U_http_info.nResponseCode = HTTP_OK; - *UClientImage_Base::wbuffer = content; - - UHTTP::setDynamicResponse(); - } -} - bool UNoCatPlugIn::getPeerFromMAC(const UString& mac) { U_TRACE(0, "UNoCatPlugIn::getPeerFromMAC(%V)", mac.rep) @@ -2472,7 +2454,7 @@ int UNoCatPlugIn::handlerRequest() status_content->setFromNumber32(u_get_uptime()); - setHTTPResponse(*status_content, U_unknow); + UHTTP::setResponseMimeIndex(*status_content, U_unknow); } else if (U_HTTP_URI_STREQ("/users")) { @@ -2482,7 +2464,7 @@ int UNoCatPlugIn::handlerRequest() peers->callForAllEntry(getPeerListInfo); - setHTTPResponse(*status_content, U_html); + UHTTP::setResponseMimeIndex(*status_content, U_html); U_SRV_LOG("AUTH request to get list info on peers permitted"); } @@ -2637,7 +2619,7 @@ next: (void) getARPCache(); } } - setHTTPResponse(*status_content, U_txt); + UHTTP::setResponseMimeIndex(*status_content, U_txt); } # endif else @@ -2685,7 +2667,7 @@ next: (void) getARPCache(); /* if (u_find(U_HTTP_USER_AGENT_TO_PARAM, U_CONSTANT_TO_PARAM("CaptiveNetworkSupport")) != 0) { - setHTTPResponse(UString::str_IPHONE_SUCCESS, U_html); + UHTTP::setResponseMimeIndex(UString::str_IPHONE_SUCCESS, U_html); goto end; } @@ -2830,7 +2812,7 @@ set_redirect_to_AUTH: (check_type & U_CHECK_MAC) != 0 && // not unifi (L2) (peer->mac == *UString::str_without_mac || peer->mac.empty())) { - mode = UHTTP::REFRESH | UHTTP::NO_BODY; + mode |= UHTTP::REFRESH; (void) location->reserve(7 + U_http_host_len + U_http_info.uri_len + 1 + U_http_info.query_len); diff --git a/src/ulib/net/server/plugin/mod_proxy.cpp b/src/ulib/net/server/plugin/mod_proxy.cpp index 6a9c0432..a85ac41c 100644 --- a/src/ulib/net/server/plugin/mod_proxy.cpp +++ b/src/ulib/net/server/plugin/mod_proxy.cpp @@ -205,51 +205,16 @@ int UProxyPlugIn::handlerRequest() { // NB: in this case we broke the transparency of the response to avoid a duplication of effort to read chunked data... - uint32_t sz, csz, ratio; - UString body = client_http->getContent(); + UString body = client_http->getContent(), + content_type = client_http->getResponseHeader()->getContentType(); U_INTERNAL_ASSERT(body) if (UHTTP::service->isReplaceResponse()) body = UHTTP::service->replaceResponse(body); - UString content_type = client_http->getResponseHeader()->getContentType(); - content_type.rep->_length += 2; // NB: we add "\r\n"... -# if defined(USE_LIBZ) || defined(USE_LIBBROTLI) - if ((sz = body.size()) > U_MIN_SIZE_FOR_DEFLATE) - { - UString compressed; - - U_INTERNAL_DUMP("U_http_is_accept_gzip = %b U_http_is_accept_brotli = %b", U_http_is_accept_gzip, U_http_is_accept_brotli) - -# ifdef USE_LIBBROTLI - if (U_http_is_accept_brotli && - (compressed = UStringExt::brotli(body, 6))) - { - goto next; - } -# endif -# ifdef USE_LIBZ - if (U_http_is_accept_gzip) compressed = UStringExt::deflate(body, 1); -# endif - -next: csz = compressed.size(), ratio = (csz * 100U) / sz; - - U_INTERNAL_DUMP("ratio = %u (%u%%)", ratio, 100-ratio) - - // NB: we accept new data only if ratio compression is better than 15%... - - if (ratio < 85) - { - body = compressed; - - U_SRV_LOG("proxy response: %u bytes - (%u%%) compression ratio", csz, 100-ratio); - } - } -# endif - - UHTTP::setResponse(true, content_type, &body); + UHTTP::setDynamicResponse(body, UString::getStringNull(), content_type); } } diff --git a/src/ulib/net/server/plugin/mod_soap.cpp b/src/ulib/net/server/plugin/mod_soap.cpp index b5a5a451..8cfd8726 100644 --- a/src/ulib/net/server/plugin/mod_soap.cpp +++ b/src/ulib/net/server/plugin/mod_soap.cpp @@ -98,7 +98,7 @@ int USoapPlugIn::handlerRequest() U_http_info.nResponseCode = HTTP_OK; - UHTTP::setResponse(true, *UString::str_ctype_soap, &body); + UHTTP::setResponse(*UString::str_ctype_soap, &body); } U_RETURN(U_PLUGIN_HANDLER_PROCESSED); diff --git a/src/ulib/net/server/plugin/mod_ssi.cpp b/src/ulib/net/server/plugin/mod_ssi.cpp index a496500f..cc93f92b 100644 --- a/src/ulib/net/server/plugin/mod_ssi.cpp +++ b/src/ulib/net/server/plugin/mod_ssi.cpp @@ -91,7 +91,7 @@ void USSIPlugIn::setAlternativeRedirect(const char* fmt, ...) UClientImage_Base::setCloseConnection(); - UHTTP::setResponse(true, buffer, U_NULLPTR); + UHTTP::setResponse(buffer, U_NULLPTR); } void USSIPlugIn::setBadRequest() @@ -134,7 +134,7 @@ void USSIPlugIn::setAlternativeResponse(UString& _body) { U_http_info.nResponseCode = HTTP_OK; - UHTTP::setResponse(true, *(u_is_know(UHTTP::mime_index) ? UString::str_ctype_txt : UString::str_ctype_html), &_body); + UHTTP::setResponse(*(u_is_know(UHTTP::mime_index) ? UString::str_ctype_txt : UString::str_ctype_html), &_body); } } @@ -1057,7 +1057,9 @@ int USSIPlugIn::handlerRequest() U_INTERNAL_DUMP("U_http_version = %C", U_http_version) - (void) header->append(UHTTP::getDataFromCache(UHTTP::file_data->array, 1)); // NB: after now 'file_data' can change... + // NB: after now 'file_data' can change... + + (void) header->append(UHTTP::getDataFromCache(UHTTP::file_data->array, 1)); // NB: we must consider HTTP/2 *body = (UHTTP::isGETorHEAD() && *UClientImage_Base::body @@ -1073,37 +1075,8 @@ int USSIPlugIn::handlerRequest() U_http_info.nResponseCode = HTTP_OK; - if (alternative_response == 0) - { - uint32_t size = output.size(); - -# if !defined(USE_LIBZ) && !defined(USE_LIBBROTLI) - bool bcompress = false; -# else - bool bcompress = UHTTP::checkForCompression(size); -# endif - - if (bcompress == false) *UClientImage_Base::body = output; - else - { - UHTTP::setResponseCompressed(output); - - size = UClientImage_Base::body->size(); - } - - (void) UHTTP::ext->append(*header); - - if (bcache) (void) UHTTP::checkContentLength(size); // NB: adjusting the size of response... - else - { - UHTTP::mime_index = U_unknow; - - (void) UHTTP::ext->append(UHTTP::getHeaderMimeType(U_NULLPTR, size, U_CTYPE_HTML)); - } - - UHTTP::handlerResponse(); - } - else if (alternative_response > 1) + if (alternative_response == 0) UHTTP::setDynamicResponse(output, *header); + else if (alternative_response > 1) { // ----------------------------------------------------------------------------------------------------- // 1 => response already complete (nothing to do) diff --git a/src/ulib/net/server/plugin/mod_stream.cpp b/src/ulib/net/server/plugin/mod_stream.cpp index 2ad7d11c..928d6169 100644 --- a/src/ulib/net/server/plugin/mod_stream.cpp +++ b/src/ulib/net/server/plugin/mod_stream.cpp @@ -188,7 +188,7 @@ int UStreamPlugIn::handlerRequest() U_http_info.nResponseCode = HTTP_OK; - UHTTP::setResponse(true, *content_type, U_NULLPTR); + UHTTP::setResponse(*content_type, U_NULLPTR); UClientImage_Base::setCloseConnection(); diff --git a/src/ulib/net/server/plugin/mod_tsa.cpp b/src/ulib/net/server/plugin/mod_tsa.cpp index 8f72ab86..ceb95c91 100644 --- a/src/ulib/net/server/plugin/mod_tsa.cpp +++ b/src/ulib/net/server/plugin/mod_tsa.cpp @@ -97,7 +97,7 @@ int UTsaPlugIn::handlerRequest() { U_http_info.nResponseCode = HTTP_OK; - UHTTP::setResponse(true, *UString::str_ctype_tsa, &body); + UHTTP::setResponse(*UString::str_ctype_tsa, &body); } # ifndef U_LOG_DISABLE diff --git a/src/ulib/net/server/plugin/usp/udp.usp b/src/ulib/net/server/plugin/usp/udp.usp new file mode 100644 index 00000000..6c38d26d --- /dev/null +++ b/src/ulib/net/server/plugin/usp/udp.usp @@ -0,0 +1,4 @@ + +Hello, World! diff --git a/src/ulib/net/server/server.cpp b/src/ulib/net/server/server.cpp index 2f2a0927..03431ad1 100644 --- a/src/ulib/net/server/server.cpp +++ b/src/ulib/net/server/server.cpp @@ -88,6 +88,7 @@ int UServer_Base::tcp_linger_set = -2; int UServer_Base::preforked_num_kids; bool UServer_Base::bssl; bool UServer_Base::bipc; +bool UServer_Base::budp; bool UServer_Base::binsert; bool UServer_Base::flag_loop; bool UServer_Base::public_address; @@ -159,6 +160,9 @@ UVector* UServer_Base::vplugin; UVector* UServer_Base::vplugin_static; UVector* UServer_Base::vlog; +#ifdef USERVER_UDP +vPFi UServer_Base::runDynamicPage_udp; +#endif #ifdef U_WELCOME_SUPPORT UString* UServer_Base::msg_welcome; #endif @@ -1097,40 +1101,44 @@ public: U_SRV_LOG("UTimeThread optimization for time resolution of one second activated (tid %u)", u_gettid()); -# ifdef USE_LOAD_BALANCE - uusockaddr addr; +# ifdef USE_LOAD_BALANCE int fd_sock = -1; - uint32_t laddr = 0; + uint32_t addr = 0; + uusockaddr srv_addr, cli_addr; UUDPSocket udp_sock(UClientImage_Base::bIPv6); - if (UServer_Base::bipc == false) +# if defined(USERVER_UDP) || defined(USERVER_IPC) + if (UServer_Base::budp == false && + UServer_Base::bipc == false) +# endif + { + if (UServer_Base::ifname == U_NULLPTR) U_NEW(UString, UServer_Base::ifname, UString(UServer_Base::getNetworkDevice(U_NULLPTR))); + + if (*UServer_Base::ifname) { - if (UServer_Base::ifname == U_NULLPTR) U_NEW(UString, UServer_Base::ifname, UString(UServer_Base::getNetworkDevice(U_NULLPTR))); + srv_addr.psaIP4Addr.sin_family = PF_INET; + srv_addr.psaIP4Addr.sin_addr.s_addr = htonl(INADDR_ANY); - if (*UServer_Base::ifname) + if (udp_sock.setServer(UServer_Base::port, &srv_addr) == false) U_ERROR("Can't bind on udp socket"); + + if (UIPAddress::setBroadcastAddress(srv_addr, *UServer_Base::ifname) == false) { - (void) memset(&addr, 0, sizeof(addr)); - - addr.psaIP4Addr.sin_family = PF_INET; - addr.psaIP4Addr.sin_addr.s_addr = htonl(INADDR_ANY); - - if (udp_sock.setServer(UServer_Base::port, &addr) == false) U_ERROR("Can't bind on udp socket"); - - if (UIPAddress::setBroadcastAddress(addr, *UServer_Base::ifname) == false) U_ERROR("Can't get broadcast address on interface %V", UServer_Base::ifname->rep); - - if (udp_sock.setSockOpt(SOL_SOCKET, SO_BROADCAST, (const int[]){ 1 }) == false) U_ERROR("Can't enable SO_BROADCAST on udp socket"); - - udp_sock.setNonBlocking(); - - laddr = UServer_Base::socket->cLocalAddress.get_addr(); - fd_sock = udp_sock.getFd(); - - U_DUMP("laddr = %V", UIPAddress::toString(laddr).rep) - - U_SRV_LOG("Load balance activated (by udp socket: %u): loadavg_threshold = %u brodacast address = (%v:%v)", - fd_sock, UServer_Base::loadavg_threshold, UServer_Base::ifname->rep, UIPAddress::toString(addr.psaIP4Addr.sin_addr.s_addr).rep); + U_ERROR("Can't get broadcast address on interface %V", UServer_Base::ifname->rep); } + + if (udp_sock.setSockOpt(SOL_SOCKET, SO_BROADCAST, (const int[]){ 1 }) == false) U_ERROR("Can't enable SO_BROADCAST on udp socket"); + + udp_sock.setNonBlocking(); + + addr = UServer_Base::socket->cLocalAddress.get_addr(); + fd_sock = udp_sock.getFd(); + + U_DUMP("addr = %V", UIPAddress::toString(addr).rep) + + U_SRV_LOG("Load balance activated (by udp socket: %u): loadavg_threshold = %u brodacast address = (%v:%v)", + fd_sock, UServer_Base::loadavg_threshold, UServer_Base::ifname->rep, UIPAddress::toString(srv_addr.psaIP4Addr.sin_addr.s_addr).rep); } + } # endif u_gettimenow(); @@ -1168,26 +1176,28 @@ public: U_INTERNAL_DUMP("U_SRV_MY_LOAD = %u", U_SRV_MY_LOAD) - int iBytesTransferred = U_SYSCALL(sendto, "%d,%p,%u,%u,%p,%d", fd_sock, &U_SRV_MY_LOAD, sizeof(char), MSG_DONTROUTE, (sockaddr*)&(addr.psaGeneric), sizeof(addr)); + int iBytesTransferred = U_SYSCALL(sendto, "%d,%p,%u,%u,%p,%d", fd_sock, &U_SRV_MY_LOAD, sizeof(char), MSG_DONTROUTE, + (sockaddr*)&(srv_addr.psaGeneric), sizeof(srv_addr)); if (iBytesTransferred == sizeof(char)) { - uusockaddr saddr; unsigned char datagram[4096]; - socklen_t slDummy = sizeof(addr); + socklen_t slDummy = sizeof(cli_addr); uint8_t min_loadavg_remote = 255; uint32_t min_loadavg_remote_ip = 0; - while ((iBytesTransferred = U_SYSCALL(recvfrom,"%d,%p,%u,%u,%p,%p",fd_sock,datagram,sizeof(datagram),MSG_DONTWAIT,(sockaddr*)&(saddr.psaGeneric),&slDummy)) > 0) + while ((iBytesTransferred = U_SYSCALL(recvfrom,"%d,%p,%u,%u,%p,%p", fd_sock, datagram, sizeof(datagram), MSG_DONTWAIT, + (sockaddr*)&(cli_addr.psaGeneric),&slDummy)) > 0) { - U_DUMP("Received datagram from (%S:%u) = (%u,%#.*S)", - UIPAddress::toString(saddr.psaIP4Addr.sin_addr.s_addr).rep, ntohs(saddr.psaIP4Addr.sin_port), iBytesTransferred, iBytesTransferred, datagram) + U_DUMP("Received datagram from (%V:%u) = (%u,%#.*S)", + UIPAddress::toString(cli_addr.psaIP4Addr.sin_addr.s_addr).rep, + ntohs(cli_addr.psaIP4Addr.sin_port), iBytesTransferred, iBytesTransferred, datagram) if (iBytesTransferred == 1) { - if ((saddr.psaIP4Addr.sin_addr.s_addr == laddr && ntohs(saddr.psaIP4Addr.sin_port) == UServer_Base::port) || - (UServer_Base::vallow_cluster && UIPAllow::isAllowed(saddr.psaIP4Addr.sin_addr.s_addr, *UServer_Base::vallow_cluster) == false)) + if ((cli_addr.psaIP4Addr.sin_addr.s_addr == addr && ntohs(cli_addr.psaIP4Addr.sin_port) == UServer_Base::port) || + (UServer_Base::vallow_cluster && UIPAllow::isAllowed(cli_addr.psaIP4Addr.sin_addr.s_addr, *UServer_Base::vallow_cluster) == false)) { continue; } @@ -1196,7 +1206,7 @@ public: { min_loadavg_remote = datagram[0]; - u_put_unalignedp32(&min_loadavg_remote_ip, addr.psaIP4Addr.sin_addr.s_addr); + u_put_unalignedp32(&min_loadavg_remote_ip, srv_addr.psaIP4Addr.sin_addr.s_addr); } } } @@ -1399,8 +1409,6 @@ UServer_Base::~UServer_Base() U_TRACE_UNREGISTER_OBJECT(0, UServer_Base) U_INTERNAL_ASSERT_POINTER(socket) - U_INTERNAL_ASSERT_POINTER(vplugin) - U_INTERNAL_ASSERT_POINTER(vplugin_static) #ifdef ENABLE_THREAD # if !defined(USE_LIBEVENT) && defined(U_SERVER_THREAD_APPROACH_SUPPORT) @@ -1437,8 +1445,12 @@ UServer_Base::~UServer_Base() UClientImage_Base::clear(); delete socket; - delete vplugin_name; - delete vplugin; + + if (vplugin) + { + delete vplugin_name; + delete vplugin; + } UOrmDriver::clear(); @@ -1743,16 +1755,22 @@ void UServer_Base::loadConfigParam() // DOS_LOGFILE the file to write DOS event // -------------------------------------------------------------------------------------------------------------------------------------- -#ifdef USE_LIBSSL - U_INTERNAL_DUMP("bssl = %b", bssl) -#endif + U_INTERNAL_DUMP("bssl = %b budp = %b bipc = %b", bssl, budp, bipc) -#if !defined(HAVE_EPOLL_WAIT) && !defined(USE_LIBEVENT) && defined(DEBUG) - U_INTERNAL_DUMP("SOMAXCONN = %d FD_SETSIZE = %d", SOMAXCONN, FD_SETSIZE) +#ifdef USERVER_IPC + if (bipc) + { +# ifdef _MSWINDOWS_ + U_ERROR("Sorry, I was compiled on Windows so there isn't UNIX domain sockets"); +# endif + + *name_sock = cfg->at(U_CONSTANT_TO_PARAM("SOCKET_NAME")); + + if (name_sock->empty()) U_ERROR("Sorry, I cannot run without SOCKET_NAME value"); + } #endif UString x = cfg->at(U_CONSTANT_TO_PARAM("SERVER")); - *name_sock = cfg->at(U_CONSTANT_TO_PARAM("SOCKET_NAME")); if (x) U_NEW(UString, server, UString(x)); @@ -1778,6 +1796,8 @@ void UServer_Base::loadConfigParam() port = _port; } + U_INTERNAL_DUMP("SOMAXCONN = %d FD_SETSIZE = %d", SOMAXCONN, FD_SETSIZE) + set_tcp_keep_alive = cfg->readBoolean(U_CONSTANT_TO_PARAM("TCP_KEEP_ALIVE")); set_realtime_priority = cfg->readBoolean(U_CONSTANT_TO_PARAM("SET_REALTIME_PRIORITY"), true); @@ -1785,12 +1805,17 @@ void UServer_Base::loadConfigParam() tcp_linger_set = cfg->readLong(U_CONSTANT_TO_PARAM("TCP_LINGER_SET"), -2); USocket::iBackLog = cfg->readLong(U_CONSTANT_TO_PARAM("LISTEN_BACKLOG"), SOMAXCONN); min_size_for_sendfile = cfg->readLong(U_CONSTANT_TO_PARAM("MIN_SIZE_FOR_SENDFILE"), 500 * 1024); // 500k: for major size we assume is better to use sendfile() - UNotifier::max_connection = cfg->readLong(U_CONSTANT_TO_PARAM("MAX_KEEP_ALIVE")); - u_printf_string_max_length = cfg->readLong(U_CONSTANT_TO_PARAM("LOG_MSG_SIZE")); - num_client_threshold = cfg->readLong(U_CONSTANT_TO_PARAM("CLIENT_THRESHOLD")); + UNotifier::max_connection = cfg->readLong(U_CONSTANT_TO_PARAM("MAX_KEEP_ALIVE")); num_client_for_parallelization = cfg->readLong(U_CONSTANT_TO_PARAM("CLIENT_FOR_PARALLELIZATION")); +#ifdef USERVER_UDP + if (budp == false) +#endif + { + u_printf_string_max_length = cfg->readLong(U_CONSTANT_TO_PARAM("LOG_MSG_SIZE")); + } + x = cfg->at(U_CONSTANT_TO_PARAM("CRASH_EMAIL_NOTIFY")); if (x) @@ -1862,16 +1887,19 @@ void UServer_Base::loadConfigParam() if (preforked_num_kids > 1) monitoring_process = true; #ifdef USE_LIBSSL - *dh_file = cfg->at(U_CONSTANT_TO_PARAM("DH_FILE")); - *ca_file = cfg->at(U_CONSTANT_TO_PARAM("CA_FILE")); - *ca_path = cfg->at(U_CONSTANT_TO_PARAM("CA_PATH")); - *key_file = cfg->at(U_CONSTANT_TO_PARAM("KEY_FILE")); - *password = cfg->at(U_CONSTANT_TO_PARAM("PASSWORD")); - *cert_file = cfg->at(U_CONSTANT_TO_PARAM("CERT_FILE")); + if (bssl) + { + *dh_file = cfg->at(U_CONSTANT_TO_PARAM("DH_FILE")); + *ca_file = cfg->at(U_CONSTANT_TO_PARAM("CA_FILE")); + *ca_path = cfg->at(U_CONSTANT_TO_PARAM("CA_PATH")); + *key_file = cfg->at(U_CONSTANT_TO_PARAM("KEY_FILE")); + *password = cfg->at(U_CONSTANT_TO_PARAM("PASSWORD")); + *cert_file = cfg->at(U_CONSTANT_TO_PARAM("CERT_FILE")); - verify_mode = cfg->readLong(U_CONSTANT_TO_PARAM("VERIFY_MODE")); + verify_mode = cfg->readLong(U_CONSTANT_TO_PARAM("VERIFY_MODE")); - if (bssl) min_size_for_sendfile = U_NOT_FOUND; // NB: we can't use sendfile with SSL... + min_size_for_sendfile = U_NOT_FOUND; // NB: we can't use sendfile with SSL... + } #endif U_INTERNAL_DUMP("min_size_for_sendfile = %u", min_size_for_sendfile) @@ -1964,7 +1992,12 @@ void UServer_Base::loadConfigParam() // DOCUMENT_ROOT: The directory out of which we will serve your documents +#ifdef USERVER_UDP + if (budp == false) +#endif + { if (setDocumentRoot(cfg->at(U_CONSTANT_TO_PARAM("DOCUMENT_ROOT"))) == false) U_ERROR("Setting DOCUMENT ROOT to %V failed", document_root->rep); + } #ifndef U_LOG_DISABLE x = cfg->at(U_CONSTANT_TO_PARAM("LOG_FILE")); @@ -1980,7 +2013,12 @@ void UServer_Base::loadConfigParam() log->init(U_CONSTANT_TO_PARAM(U_SERVER_LOG_PREFIX)); +# ifdef USERVER_UDP + if (budp == false) +# endif + { U_SRV_LOG("Working directory (DOCUMENT_ROOT) changed to %.*S", u_cwd_len, u_cwd); + } if (bmsg) U_SRV_LOG("WARNING: the \"RUN_AS_USER\" directive makes sense only if the master process runs with super-user privileges, ignored"); } @@ -2011,6 +2049,10 @@ void UServer_Base::loadConfigParam() } #ifdef USE_LOAD_BALANCE +# ifdef USERVER_UDP + if (budp == false) +# endif + { x = cfg->at(U_CONSTANT_TO_PARAM("LOAD_BALANCE_DEVICE_NETWORK")); if (x) @@ -2040,9 +2082,14 @@ void UServer_Base::loadConfigParam() vallow_cluster = U_NULLPTR; } } + } #endif #ifdef U_EVASIVE_SUPPORT +# ifdef USERVER_UDP + if (budp == false) +# endif + { /** * This is the threshold for the number of requests for the same page (or URI) per page interval. * Once the threshold for that interval has been exceeded (defaults to 2), the IP address of the client will be added to the blocking list @@ -2140,6 +2187,7 @@ void UServer_Base::loadConfigParam() U_NEW(UFile, dos_LOG, UFile(x)); } + } #endif // load ORM driver modules... @@ -2153,10 +2201,15 @@ void UServer_Base::loadConfigParam() // load plugin modules and call server-wide hooks handlerConfig()... +#ifdef USERVER_UDP + if (budp == false) +#endif + { UString plugin_dir = cfg->at(U_CONSTANT_TO_PARAM("PLUGIN_DIR")), plugin_list = cfg->at(U_CONSTANT_TO_PARAM("PLUGIN")); if (loadPlugins(plugin_dir, plugin_list) != U_PLUGIN_HANDLER_FINISHED) U_ERROR("Plugins stage load failed"); + } } U_NO_EXPORT void UServer_Base::loadStaticLinkedModules(const char* name) @@ -2563,15 +2616,29 @@ void UServer_Base::init() U_INTERNAL_ASSERT_POINTER(socket) + U_INTERNAL_DUMP("bssl = %b budp = %b bipc = %b", bssl, budp, bipc) + +#ifdef USERVER_UDP + if (budp) + { + uusockaddr srv_addr; + + U_ASSERT(socket->isUDP()) + + if (socket->setServer(port, &srv_addr) == false) + { + U_ERROR("Run as server UDP with port '%u' failed", port); + } + + goto next; + } +#endif + #ifdef USE_LIBSSL if (bssl) { U_ASSERT(((USSLSocket*)socket)->isSSL()) - if (cfg) ((USSLSocket*)socket)->ciphersuite_model = cfg->readLong(U_CONSTANT_TO_PARAM("CIPHER_SUITE")); - - // Load our certificate - U_INTERNAL_ASSERT( dh_file->isNullTerminated()) U_INTERNAL_ASSERT( ca_file->isNullTerminated()) U_INTERNAL_ASSERT( ca_path->isNullTerminated()) @@ -2579,28 +2646,26 @@ void UServer_Base::init() U_INTERNAL_ASSERT( password->isNullTerminated()) U_INTERNAL_ASSERT(cert_file->isNullTerminated()) + // Load our certificate + if (((USSLSocket*)socket)->setContext( dh_file->data(), cert_file->data(), key_file->data(), password->data(), ca_file->data(), ca_path->data(), verify_mode) == false) { U_ERROR("SSL: server setContext() failed"); } } - else #endif - { + +#ifdef USERVER_IPC if (bipc) { U_ASSERT(socket->isIPC()) -# ifdef _MSWINDOWS_ - U_ERROR("Sorry, I was compiled on Windows so I can't accept SOCKET_NAME"); -# else - if (*name_sock) UUnixSocket::setPath(name_sock->data()); + UUnixSocket::setPath(name_sock->data()); if (UUnixSocket::path == U_NULLPTR) U_ERROR("UNIX domain socket is not bound to a file system pathname"); -# endif } - } +#endif if (socket->setServer(port, server) == false) { @@ -2609,7 +2674,11 @@ void UServer_Base::init() U_ERROR("Run as server with local address '%v:%u' failed", x.rep, port); } - U_SRV_LOG("TCP SO_REUSEPORT status is: %susing", (USocket::breuseport ? "" : "NOT ")); +#ifdef USERVER_UDP +next: +#endif + + U_SRV_LOG("SO_REUSEPORT status is: %susing", (USocket::breuseport ? "" : "NOT ")); // get name host @@ -2639,7 +2708,8 @@ void UServer_Base::init() { U_ERROR("On windows we need a valid IP_ADDRESS value on configuration file"); } -#else +#endif + /** * This code does NOT make a connection or send any packets (to 8.8.8.8 which is google DNS). * Since UDP is a stateless protocol connect() merely makes a system call which figures out how to @@ -2648,101 +2718,102 @@ void UServer_Base::init() * is what we want) of the socket */ +#ifdef USERVER_IPC if (bipc == false) +#endif + { + UUDPSocket cClientSocket(UClientImage_Base::bIPv6); + + if (cClientSocket.connectServer(U_STRING_FROM_CONSTANT("8.8.8.8"), 1001)) { - UUDPSocket cClientSocket(UClientImage_Base::bIPv6); + socket->setLocal(cClientSocket.cLocalAddress); - if (cClientSocket.connectServer(U_STRING_FROM_CONSTANT("8.8.8.8"), 1001)) + const char* p = socket->getLocalInfo(); + + UString ip(p, u__strlen(p, __PRETTY_FUNCTION__)); + + if ( IP_address->empty()) *IP_address = ip; + else if (*IP_address != ip) { - socket->setLocal(cClientSocket.cLocalAddress); - - const char* p = socket->getLocalInfo(); - - UString ip(p, u__strlen(p, __PRETTY_FUNCTION__)); - - if ( IP_address->empty()) *IP_address = ip; - else if (*IP_address != ip) - { - U_SRV_LOG("WARNING: SERVER IP ADDRESS from configuration (%V) differ from system interface (%V)", IP_address->rep, ip.rep); - } + U_SRV_LOG("WARNING: SERVER IP ADDRESS from configuration (%V) differ from system interface (%V)", IP_address->rep, ip.rep); } - - if (IP_address->empty()) - { - (void) IP_address->assign(U_CONSTANT_TO_PARAM("127.0.0.1")); - - socket->cLocalAddress.setLocalHost(UClientImage_Base::bIPv6); - - U_WARNING("getting IP_ADDRESS from system interface fail, we try using localhost"); - } - else - { - struct in_addr ia; - - if (inet_aton(IP_address->c_str(), &ia) == 0) U_ERROR("IP_ADDRESS conversion fail: %V", IP_address->rep); - - socket->setAddress(&ia); - - public_address = (socket->cLocalAddress.isPrivate() == false); - } - - U_SRV_LOG("SERVER IP ADDRESS registered as: %v (%s)", IP_address->rep, (public_address ? "public" : "private")); - - u_need_root(false); - -# ifdef U_LINUX - /** - * timeout_timewait parameter: Determines the time that must elapse before TCP/IP can release a closed connection - * and reuse its resources. This interval between closure and release is known as the TIME_WAIT state or twice the - * maximum segment lifetime (2MSL) state. During this time, reopening the connection to the client and server cost - * less than establishing a new connection. By reducing the value of this entry, TCP/IP can release closed connections - * faster, providing more resources for new connections. Adjust this parameter if the running application requires rapid - * release, the creation of new connections, and a low throughput due to many connections sitting in the TIME_WAIT state - */ - - tcp_fin_timeout = UFile::getSysParam("/proc/sys/net/ipv4/tcp_fin_timeout"); - if (tcp_fin_timeout > 30) tcp_fin_timeout = UFile::setSysParam("/proc/sys/net/ipv4/tcp_fin_timeout", 30, true); - - /** - * sysctl_somaxconn (SOMAXCONN: 128) specifies the maximum number of sockets in state SYN_RECV per listen socket queue. - * At listen(2) time the backlog is adjusted to this limit if bigger then that. - * - * sysctl_max_syn_backlog on the other hand is dynamically adjusted, depending on the memory characteristic of the system. - * Default is 256, 128 for small systems and up to 1024 for bigger systems. - * - * The system limits (somaxconn & tcp_max_syn_backlog) specify a _maximum_, the user cannot exceed this limit with listen(2). - * The backlog argument for listen on the other hand specify a _minimum_ - */ - - if (USocket::iBackLog == 1) - { - // sysctl_tcp_abort_on_overflow when its on, new connections are reset once the backlog is exhausted - - tcp_abort_on_overflow = UFile::setSysParam("/proc/sys/net/ipv4/tcp_abort_on_overflow", 1, true); - } - else if (USocket::iBackLog > SOMAXCONN) - { - // NB: take a look at `netstat -s | grep overflowed` - - sysctl_somaxconn = UFile::getSysParam("/proc/sys/net/core/somaxconn"); - - if (sysctl_somaxconn < USocket::iBackLog) - { - int value = UFile::setSysParam("/proc/sys/net/core/somaxconn", USocket::iBackLog); - - if (value == USocket::iBackLog) sysctl_max_syn_backlog = UFile::setSysParam("/proc/sys/net/ipv4/tcp_max_syn_backlog", value * 8); - else - { - U_WARNING("The TCP backlog (LISTEN_BACKLOG) setting of %u cannot be enforced because of OS error - " - "/proc/sys/net/core/somaxconn is set to the lower value of %d", USocket::iBackLog, sysctl_somaxconn); - } - } - } - - U_INTERNAL_DUMP("sysctl_somaxconn = %d tcp_abort_on_overflow = %b sysctl_max_syn_backlog = %d", - sysctl_somaxconn, tcp_abort_on_overflow, sysctl_max_syn_backlog) -# endif } + + if (IP_address->empty()) + { + (void) IP_address->assign(U_CONSTANT_TO_PARAM("127.0.0.1")); + + socket->cLocalAddress.setLocalHost(UClientImage_Base::bIPv6); + + U_WARNING("getting IP_ADDRESS from system interface fail, we try using localhost"); + } + else + { + struct in_addr ia; + + if (inet_aton(IP_address->c_str(), &ia) == 0) U_ERROR("IP_ADDRESS conversion fail: %V", IP_address->rep); + + socket->setAddress(&ia); + + public_address = (socket->cLocalAddress.isPrivate() == false); + } + } + + U_SRV_LOG("SERVER IP ADDRESS registered as: %v (%s)", IP_address->rep, (public_address ? "public" : "private")); + +#ifdef U_LINUX + u_need_root(false); + + /** + * timeout_timewait parameter: Determines the time that must elapse before TCP/IP can release a closed connection + * and reuse its resources. This interval between closure and release is known as the TIME_WAIT state or twice the + * maximum segment lifetime (2MSL) state. During this time, reopening the connection to the client and server cost + * less than establishing a new connection. By reducing the value of this entry, TCP/IP can release closed connections + * faster, providing more resources for new connections. Adjust this parameter if the running application requires rapid + * release, the creation of new connections, and a low throughput due to many connections sitting in the TIME_WAIT state + */ + + tcp_fin_timeout = UFile::getSysParam("/proc/sys/net/ipv4/tcp_fin_timeout"); + if (tcp_fin_timeout > 30) tcp_fin_timeout = UFile::setSysParam("/proc/sys/net/ipv4/tcp_fin_timeout", 30, true); + + /** + * sysctl_somaxconn (SOMAXCONN: 128) specifies the maximum number of sockets in state SYN_RECV per listen socket queue. + * At listen(2) time the backlog is adjusted to this limit if bigger then that. + * + * sysctl_max_syn_backlog on the other hand is dynamically adjusted, depending on the memory characteristic of the system. + * Default is 256, 128 for small systems and up to 1024 for bigger systems. + * + * The system limits (somaxconn & tcp_max_syn_backlog) specify a _maximum_, the user cannot exceed this limit with listen(2). + * The backlog argument for listen on the other hand specify a _minimum_ + */ + + if (USocket::iBackLog == 1) + { + // sysctl_tcp_abort_on_overflow when its on, new connections are reset once the backlog is exhausted + + tcp_abort_on_overflow = UFile::setSysParam("/proc/sys/net/ipv4/tcp_abort_on_overflow", 1, true); + } + else if (USocket::iBackLog > SOMAXCONN) + { + // NB: take a look at `netstat -s | grep overflowed` + + sysctl_somaxconn = UFile::getSysParam("/proc/sys/net/core/somaxconn"); + + if (sysctl_somaxconn < USocket::iBackLog) + { + int value = UFile::setSysParam("/proc/sys/net/core/somaxconn", USocket::iBackLog); + + if (value == USocket::iBackLog) sysctl_max_syn_backlog = UFile::setSysParam("/proc/sys/net/ipv4/tcp_max_syn_backlog", value * 8); + else + { + U_WARNING("The TCP backlog (LISTEN_BACKLOG) setting of %u cannot be enforced because of OS error - " + "/proc/sys/net/core/somaxconn is set to the lower value of %d", USocket::iBackLog, sysctl_somaxconn); + } + } + } + + U_INTERNAL_DUMP("sysctl_somaxconn = %d tcp_abort_on_overflow = %b sysctl_max_syn_backlog = %d", + sysctl_somaxconn, tcp_abort_on_overflow, sysctl_max_syn_backlog) #endif UTimer::init(UTimer::NOSIGNAL); @@ -2771,7 +2842,12 @@ void UServer_Base::init() // init plugin modules, must run after the setting for shared log +#ifdef USERVER_UDP + if (budp == false) +#endif + { if (pluginsHandlerInit() != U_PLUGIN_HANDLER_FINISHED) U_ERROR("Plugins stage init failed"); + } // manage shared data... @@ -2820,6 +2896,7 @@ void UServer_Base::init() U_MEMCPY(ULog::ptr_shared_date, &ULog::date, sizeof(ULog::log_date)); // NB: we block SIGHUP and SIGTERM; the threads created will inherit a copy of the signal mask... + # ifdef sigemptyset sigemptyset(&mask); # else @@ -2893,68 +2970,79 @@ void UServer_Base::init() } #endif + socket_flags |= O_RDWR | O_CLOEXEC; + +#ifdef USERVER_UDP + if (budp) + { + UNotifier::max_connection = 1; + UNotifier::num_connection = + UNotifier::min_connection = 0; + } + else +#endif + { // --------------------------------------------------------------------------------------------------------- // init notifier event manager // --------------------------------------------------------------------------------------------------------- - socket_flags |= O_RDWR | O_CLOEXEC; - #if defined(ENABLE_THREAD) && !defined(USE_LIBEVENT) && defined(U_SERVER_THREAD_APPROACH_SUPPORT) if (preforked_num_kids != -1) #endif + { + // --------------------------------------------------------------------------------------------------------- + // NB: in the classic model we don't need to be notified for request of connection (loop: accept-fork) + // and the forked child don't accept new client, but we need anyway the event manager because + // the forked child must feel the possibly timeout for request from the new client... + // --------------------------------------------------------------------------------------------------------- + + if (timeoutMS > 0 || + isClassic() == false) { - // --------------------------------------------------------------------------------------------------------- - // NB: in the classic model we don't need to be notified for request of connection (loop: accept-fork) - // and the forked child don't accept new client, but we need anyway the event manager because - // the forked child must feel the possibly timeout for request from the new client... - // --------------------------------------------------------------------------------------------------------- + binsert = true; // NB: we ask to be notified for request of connection (=> accept) - if (timeoutMS > 0 || - isClassic() == false) - { - binsert = true; // NB: we ask to be notified for request of connection (=> accept) + UNotifier::min_connection = 1; - UNotifier::min_connection = 1; +# ifndef USE_LIBEVENT + if (timeoutMS > 0) U_NEW(UTimeoutConnection, ptime, UTimeoutConnection); +# endif -# ifndef USE_LIBEVENT - if (timeoutMS > 0) U_NEW(UTimeoutConnection, ptime, UTimeoutConnection); -# endif + pthis->UEventFd::op_mask |= EPOLLET; + pthis->UEventFd::op_mask &= ~EPOLLRDHUP; - pthis->UEventFd::op_mask |= EPOLLET; - pthis->UEventFd::op_mask &= ~EPOLLRDHUP; + U_INTERNAL_ASSERT_EQUALS(pthis->UEventFd::op_mask, EPOLLIN | EPOLLET) - U_INTERNAL_ASSERT_EQUALS(pthis->UEventFd::op_mask, EPOLLIN | EPOLLET) + /** + * There may not always be a connection waiting after a SIGIO is delivered or select(2) or poll(2) return a readability + * event because the connection might have been removed by an asynchronous network error or another thread before + * accept() is called. If this happens then the call will block waiting for the next connection to arrive. To ensure + * that accept() never blocks, the passed socket sockfd needs to have the O_NONBLOCK flag set (see socket(7)) + */ - /** - * There may not always be a connection waiting after a SIGIO is delivered or select(2) or poll(2) return a readability - * event because the connection might have been removed by an asynchronous network error or another thread before - * accept() is called. If this happens then the call will block waiting for the next connection to arrive. To ensure - * that accept() never blocks, the passed socket sockfd needs to have the O_NONBLOCK flag set (see socket(7)) - */ - - socket_flags |= O_NONBLOCK; - } - - if (handler_other) - { - UNotifier::min_connection++; - - handler_other->UEventFd::op_mask &= ~EPOLLRDHUP; - } - - if (handler_inotify) - { - UNotifier::min_connection++; - - handler_inotify->UEventFd::op_mask &= ~EPOLLRDHUP; - } + socket_flags |= O_NONBLOCK; } + if (handler_other) + { + UNotifier::min_connection++; + + handler_other->UEventFd::op_mask &= ~EPOLLRDHUP; + } + + if (handler_inotify) + { + UNotifier::min_connection++; + + handler_inotify->UEventFd::op_mask &= ~EPOLLRDHUP; + } + } + UNotifier::max_connection = (UNotifier::max_connection ? UNotifier::max_connection : USocket::iBackLog) + (UNotifier::num_connection = UNotifier::min_connection); if (num_client_threshold == 0) num_client_threshold = U_NOT_FOUND; if (num_client_for_parallelization == 0) num_client_for_parallelization = UNotifier::max_connection / 2; + } U_INTERNAL_DUMP("UNotifier::max_connection = %u UNotifier::min_connection = %u num_client_for_parallelization = %u num_client_threshold = %u", UNotifier::max_connection, UNotifier::min_connection, num_client_for_parallelization, num_client_threshold) @@ -2969,7 +3057,12 @@ void UServer_Base::init() } #endif +#ifdef USERVER_UDP + if (budp == false) +#endif + { if (pluginsHandlerRun() != U_PLUGIN_HANDLER_FINISHED) U_ERROR("Plugins stage run failed"); + } if (u_start_time == 0 && u_setStartTime() == false) @@ -2978,10 +3071,16 @@ void UServer_Base::init() } #ifdef U_THROTTLING_SUPPORT +# ifdef USERVER_UDP + if (budp == false) +# endif if (throttling_mask) initThrottlingServer(); #endif #ifdef U_EVASIVE_SUPPORT +# ifdef USERVER_UDP + if (budp == false) +# endif initEvasive(); #endif @@ -3186,6 +3285,7 @@ U_NO_EXPORT bool UServer_Base::clientImageHandlerRead() { U_TRACE_NO_PARAM(0, "UServer_Base::clientImageHandlerRead()") + U_INTERNAL_ASSERT_POINTER(csocket) U_INTERNAL_ASSERT(csocket->isOpen()) U_INTERNAL_ASSERT_EQUALS(csocket, pClientImage->socket) @@ -3206,6 +3306,33 @@ U_NO_EXPORT bool UServer_Base::clientImageHandlerRead() U_RETURN(true); } +#ifndef U_LOG_DISABLE +void UServer_Base::logNewClient(USocket* psocket, UClientImage_Base* lClientImage) +{ + U_TRACE(0, "UServer_Base::logNewClient(%p,%p)", psocket, lClientImage) + + if (isLog()) + { +# ifdef USE_LIBSSL + if (bssl) lClientImage->logCertificate(); +# endif + + USocketExt::setRemoteInfo(psocket, *(lClientImage->logbuf)); + + U_INTERNAL_ASSERT(lClientImage->logbuf->isNullTerminated()) + + char buffer[32]; + uint32_t len = setNumConnection(buffer); + + log->log(U_CONSTANT_TO_PARAM("New client connected from %v, %.*s clients currently connected"), lClientImage->logbuf->rep, len, buffer); + +# ifdef U_WELCOME_SUPPORT + if (msg_welcome) log->log(U_CONSTANT_TO_PARAM("Sending welcome message to %v"), lClientImage->logbuf->rep); +# endif + } +} +#endif + #if defined(ENABLE_THREAD) && !defined(USE_LIBEVENT) && defined(U_SERVER_THREAD_APPROACH_SUPPORT) # define CSOCKET psocket # define CLIENT_IMAGE lClientIndex @@ -3387,12 +3514,7 @@ try_accept: goto end; } - U_INTERNAL_ASSERT(CSOCKET->isConnected()) - - CLIENT_ADDRESS = UIPAddress::resolveStrAddress(iAddressType, CSOCKET->cRemoteAddress.pcAddress.p, CSOCKET->cRemoteAddress.pcStrAddress); - CLIENT_ADDRESS_LEN = u__strlen(CLIENT_ADDRESS, __PRETTY_FUNCTION__); - - U_INTERNAL_DUMP("client_address = %.*S", CLIENT_ADDRESS_LEN, CLIENT_ADDRESS) + setClientAddress(CSOCKET, CLIENT_ADDRESS, CLIENT_ADDRESS_LEN); #ifdef U_EVASIVE_SUPPORT if (checkHold(CSOCKET->remoteIPAddress().getInAddr())) @@ -3564,25 +3686,7 @@ retry: pid = UProcess::waitpid(-1, &status, WNOHANG); // NB: to avoid too much #endif #ifndef U_LOG_DISABLE - if (isLog()) - { -# ifdef USE_LIBSSL - if (bssl) CLIENT_IMAGE->logCertificate(); -# endif - - USocketExt::setRemoteInfo(CSOCKET, *CLIENT_IMAGE->logbuf); - - U_INTERNAL_ASSERT(CLIENT_IMAGE->logbuf->isNullTerminated()) - - char buffer[32]; - uint32_t len = setNumConnection(buffer); - - log->log(U_CONSTANT_TO_PARAM("New client connected from %v, %.*s clients currently connected"), CLIENT_IMAGE->logbuf->rep, len, buffer); - -# ifdef U_WELCOME_SUPPORT - if (msg_welcome) log->log(U_CONSTANT_TO_PARAM("Sending welcome message to %v"), CLIENT_IMAGE->logbuf->rep); -# endif - } + logNewClient(CSOCKET, CLIENT_IMAGE); #endif #ifdef U_WELCOME_SUPPORT @@ -3688,6 +3792,11 @@ uint32_t UServer_Base::setNumConnection(char* ptr) { U_TRACE(0, "UServer_Base::setNumConnection(%p)", ptr) +# ifdef USERVER_UDP + *ptr = '0'; + + U_RETURN(1); +# else uint32_t len, sz = UNotifier::num_connection - UNotifier::min_connection - 1; if (preforked_num_kids <= 0) len = u_num2str32(sz, ptr) - ptr; @@ -3717,6 +3826,7 @@ uint32_t UServer_Base::setNumConnection(char* ptr) } U_RETURN(len); +# endif } #endif @@ -3784,54 +3894,59 @@ void UServer_Base::runLoop(const char* user) { U_TRACE(0, "UServer_Base::runLoop(%S)", user) +#ifdef USERVER_UDP + if (budp == false) +#endif + { if (pluginsHandlerFork() != U_PLUGIN_HANDLER_FINISHED) U_ERROR("Plugins stage fork failed"); + } socket->reusePort(socket_flags); #ifdef U_LINUX - if (bipc == false) - { - U_ASSERT_EQUALS(socket->isUDP(), false) +# if defined(USERVER_UDP) || defined(USERVER_IPC) + if (budp == false && + bipc == false) +# endif + { + /** + * Let's say an application just issued a request to send a small block of data. Now, we could + * either send the data immediately or wait for more data. Some interactive and client-server + * applications will benefit greatly if we send the data right away. For example, when we are + * sending a short request and awaiting a large response, the relative overhead is low compared + * to the total amount of data transferred, and the response time could be much better if the + * request is sent immediately. This is achieved by setting the TCP_NODELAY option on the socket, + * which disables the Nagle algorithm. + * + * Linux (along with some other OSs) includes a TCP_DEFER_ACCEPT option in its TCP implementation. + * Set on a server-side listening socket, it instructs the kernel not to wait for the final ACK packet + * and not to initiate the process until the first packet of real data has arrived. After sending the SYN/ACK, + * the server will then wait for a data packet from a client. Now, only three packets will be sent over the + * network, and the connection establishment delay will be significantly reduced, which is typical for HTTP. + * NB: Takes an integer value (seconds) + * + * Another way to prevent delays caused by sending useless packets is to use the TCP_QUICKACK option. + * This option is different from TCP_DEFER_ACCEPT, as it can be used not only to manage the process of + * connection establishment, but it can be used also during the normal data transfer process. In addition, + * it can be set on either side of the client-server connection. Delaying sending of the ACK packet could + * be useful if it is known that the user data will be sent soon, and it is better to set the ACK flag on + * that data packet to minimize overhead. When the sender is sure that data will be immediately be sent + * (multiple packets), the TCP_QUICKACK option can be set to 0. The default value of this option is 1 for + * sockets in the connected state, which will be reset by the kernel to 1 immediately after the first use. + * (This is a one-time option) + */ - /** - * Let's say an application just issued a request to send a small block of data. Now, we could - * either send the data immediately or wait for more data. Some interactive and client-server - * applications will benefit greatly if we send the data right away. For example, when we are - * sending a short request and awaiting a large response, the relative overhead is low compared - * to the total amount of data transferred, and the response time could be much better if the - * request is sent immediately. This is achieved by setting the TCP_NODELAY option on the socket, - * which disables the Nagle algorithm. - * - * Linux (along with some other OSs) includes a TCP_DEFER_ACCEPT option in its TCP implementation. - * Set on a server-side listening socket, it instructs the kernel not to wait for the final ACK packet - * and not to initiate the process until the first packet of real data has arrived. After sending the SYN/ACK, - * the server will then wait for a data packet from a client. Now, only three packets will be sent over the - * network, and the connection establishment delay will be significantly reduced, which is typical for HTTP. - * NB: Takes an integer value (seconds) - * - * Another way to prevent delays caused by sending useless packets is to use the TCP_QUICKACK option. - * This option is different from TCP_DEFER_ACCEPT, as it can be used not only to manage the process of - * connection establishment, but it can be used also during the normal data transfer process. In addition, - * it can be set on either side of the client-server connection. Delaying sending of the ACK packet could - * be useful if it is known that the user data will be sent soon, and it is better to set the ACK flag on - * that data packet to minimize overhead. When the sender is sure that data will be immediately be sent - * (multiple packets), the TCP_QUICKACK option can be set to 0. The default value of this option is 1 for - * sockets in the connected state, which will be reset by the kernel to 1 immediately after the first use. - * (This is a one-time option) - */ + if (tcp_linger_set > -2) socket->setTcpLinger(tcp_linger_set); -# if defined(U_LINUX) && (!defined(U_SERVER_CAPTIVE_PORTAL) || defined(ENABLE_THREAD)) - socket->setTcpNoDelay(); - socket->setTcpFastOpen(); - socket->setTcpDeferAccept(); - if (bssl == false) socket->setBufferSND(500 * 1024); // 500k: for major size we assume is better to use sendfile() - if (set_tcp_keep_alive ) socket->setTcpKeepAlive(); -# endif - if (tcp_linger_set > -2) socket->setTcpLinger(tcp_linger_set); - } -#endif +# if !defined(U_SERVER_CAPTIVE_PORTAL) || defined(ENABLE_THREAD) + socket->setTcpNoDelay(); + socket->setTcpFastOpen(); + socket->setTcpDeferAccept(); + if (bssl == false) socket->setBufferSND(500 * 1024); // 500k: for major size we assume is better to use sendfile() + if (set_tcp_keep_alive) socket->setTcpKeepAlive(); +# endif + } -#ifndef _MSWINDOWS_ if (user) { if (u_runAsUser(user, false) == false) U_ERROR("Set user %S context failed", user); @@ -3850,6 +3965,10 @@ void UServer_Base::runLoop(const char* user) pthis->UEventFd::fd = socket->iSockDesc; +#ifdef USERVER_UDP + if (budp == false) +#endif + { UNotifier::init(); U_INTERNAL_DUMP("UNotifier::min_connection = %d", UNotifier::min_connection) @@ -3861,8 +3980,6 @@ void UServer_Base::runLoop(const char* user) if (handler_inotify) UNotifier::insert(handler_inotify, EPOLLEXCLUSIVE | EPOLLROUNDROBIN); // NB: we ask to be notified for change of file system (=> inotify) } - U_SRV_LOG("Waiting for connection on port %u", port); - #if defined(ENABLE_THREAD) && !defined(USE_LIBEVENT) && defined(U_SERVER_THREAD_APPROACH_SUPPORT) U_INTERNAL_ASSERT_EQUALS(UNotifier::pthread, U_NULLPTR) @@ -3881,6 +3998,9 @@ void UServer_Base::runLoop(const char* user) U_ASSERT(proc->parent()) } #endif + } + + U_SRV_LOG("Waiting for connection on port %u", port); #if defined(U_LINUX) && defined(ENABLE_THREAD) (void) U_SYSCALL(pthread_sigmask, "%d,%p,%p", SIG_UNBLOCK, &mask, U_NULLPTR); @@ -3895,6 +4015,60 @@ void UServer_Base::runLoop(const char* user) # endif } +#ifdef USERVER_UDP + if (budp) + { + struct stat st; + char buffer[U_PATH_MAX]; + HINSTANCE handle = U_NULLPTR; + uint32_t len = u__snprintf(buffer, sizeof(buffer), U_CONSTANT_TO_PARAM(U_LIBEXECDIR "/usp/udp.%s"), U_LIB_SUFFIX); + + if (U_SYSCALL(stat, "%S,%p", buffer, &st)) + { + U_WARNING("I can't found the usp page: %.*S", len, buffer); + } + else + { + if ((handle = UDynamic::dload(buffer)) == U_NULLPTR || + (runDynamicPage_udp = (vPFi)UDynamic::lookup(handle, "runDynamicPage_udp")) == U_NULLPTR) + { + U_WARNING("load failed of usp page: %.*S", len, buffer); + } + else + { + runDynamicPage_udp(U_DPAGE_INIT); + runDynamicPage_udp(U_DPAGE_FORK); + } + } + + csocket = + pClientImage->socket = socket; + pClientImage->UEventFd::fd = socket->iSockDesc; + + UClientImage_Base::callerHandlerRead = UServer_Base::handlerUDP; + + U_INTERNAL_DUMP("handler_other = %p handler_inotify = %p UNotifier::num_connection = %u UNotifier::min_connection = %u", + handler_other, handler_inotify, UNotifier::num_connection, UNotifier::min_connection) + + // NB: we can go directly on recvFrom() and block on it... + + U_INTERNAL_ASSERT_EQUALS(socket_flags & O_NONBLOCK, 0) + + while (flag_loop) + { + if (pClientImage->handlerRead() == U_NOTIFIER_DELETE) break; + } + + if (runDynamicPage_udp) + { + runDynamicPage_udp(U_DPAGE_DESTROY); + + UDynamic::dclose(handle); + } + } + else +#endif + { while (flag_loop) { U_INTERNAL_DUMP("handler_other = %p handler_inotify = %p UNotifier::num_connection = %u UNotifier::min_connection = %u", @@ -3934,14 +4108,13 @@ void UServer_Base::runLoop(const char* user) (void) pthis->UServer_Base::handlerRead(); } + } } void UServer_Base::run() { U_TRACE_NO_PARAM(1, "UServer_Base::run()") - U_INTERNAL_ASSERT_POINTER(pthis) - init(); int status; @@ -3961,6 +4134,8 @@ void UServer_Base::run() * >1 - pool of process serialize plus monitoring process */ + U_INTERNAL_DUMP("monitoring_process = %b", monitoring_process) + if (monitoring_process == false) { runLoop(user); @@ -4182,7 +4357,12 @@ void UServer_Base::run() U_INTERNAL_ASSERT(proc->parent()) stop: +#ifdef USERVER_UDP + if (budp == false) +#endif + { if (pluginsHandlerStop() != U_PLUGIN_HANDLER_FINISHED) U_WARNING("Plugins stage stop failed"); + } manageWaitAll(); diff --git a/src/ulib/net/socket.cpp b/src/ulib/net/socket.cpp index 7d28b1ee..ca177ad7 100644 --- a/src/ulib/net/socket.cpp +++ b/src/ulib/net/socket.cpp @@ -52,11 +52,9 @@ void USocket::setAddress(void* address) { U_TRACE(0, "USocket::setAddress(%p)", address) - U_INTERNAL_ASSERT_POINTER(cLocal) - cLocalAddress.setAddress(address, (bool)U_socket_IPv6(this)); - cLocal->setIPAddress(cLocalAddress); + if (cLocal) cLocal->setIPAddress(cLocalAddress); U_socket_LocalSet(this) = true; } @@ -184,20 +182,34 @@ bool USocket::checkTime(long time_limit, long& timeout) U_RETURN(true); } +void USocket::setLocalInfo(USocket* p, SocketAddress* cLocal) +{ + U_TRACE(0, "USocket::setLocalInfo(%p,%p)", p, cLocal) + + p->iLocalPort = cLocal->getPortNumber(); + cLocal->getIPAddress(p->cLocalAddress); +} + +void USocket::setRemoteInfo(USocket* p, SocketAddress* cRemote) +{ + U_TRACE(0, "USocket::setRemoteInfo(%p,%p)", p, cRemote) + + p->iRemotePort = cRemote->getPortNumber(); + cRemote->getIPAddress(p->cRemoteAddress); +} + void USocket::setLocal() { U_TRACE_NO_PARAM(1, "USocket::setLocal()") U_CHECK_MEMORY - SocketAddress tmp; + SocketAddress cLocal; + socklen_t slDummy = cLocal.sizeOf(); - socklen_t slDummy = tmp.sizeOf(); - - if (U_SYSCALL(getsockname, "%d,%p,%p", getFd(), (sockaddr*)tmp, &slDummy) == 0) + if (U_SYSCALL(getsockname, "%d,%p,%p", getFd(), (sockaddr*)cLocal, &slDummy) == 0) { - iLocalPort = tmp.getPortNumber(); - tmp.getIPAddress(cLocalAddress); + setLocalInfo(this, &cLocal); U_socket_LocalSet(this) = true; } @@ -406,6 +418,8 @@ bool USocket::setServer(unsigned int port, void* localAddress) if (isUDP()) { + U_INTERNAL_ASSERT_POINTER(localAddress) + ((uusockaddr*)localAddress)->psaIP4Addr.sin_port = htons(port); if (U_SYSCALL(bind, "%d,%p,%d", iSockDesc, &(((uusockaddr*)localAddress)->psaGeneric), sizeof(uusockaddr)) == 0) @@ -560,14 +574,9 @@ void USocket::setRemote() U_INTERNAL_ASSERT(isOpen()) SocketAddress cRemote; - socklen_t slDummy = cRemote.sizeOf(); - if (U_SYSCALL(getpeername, "%d,%p,%p", getFd(), (sockaddr*)cRemote, &slDummy) == 0) - { - iRemotePort = cRemote.getPortNumber(); - cRemote.getIPAddress(cRemoteAddress); - } + if (U_SYSCALL(getpeername, "%d,%p,%p", getFd(), (sockaddr*)cRemote, &slDummy) == 0) setRemoteInfo(this, &cRemote); } bool USocket::connect() @@ -627,15 +636,13 @@ int USocket::recvFrom(void* pBuffer, uint32_t iBufLength, uint32_t uiFlags, UIPA int iBytesRead; SocketAddress cSource; - socklen_t slDummy = cSource.sizeOf(); -loop: iBytesRead = U_SYSCALL(recvfrom, "%d,%p,%u,%u,%p,%p", getFd(), CAST(pBuffer), iBufLength, uiFlags, (sockaddr*)cSource, &slDummy); if (iBytesRead > 0) { - U_INTERNAL_DUMP("BytesRead(%d) = %#.*S", iBytesRead, iBytesRead, CAST(pBuffer)) + U_INTERNAL_DUMP("BytesRead(%u) = %#.*S", iBytesRead, iBytesRead, CAST(pBuffer)) iSourcePortNumber = cSource.getPortNumber(); cSource.getIPAddress(cSourceIP); @@ -643,12 +650,7 @@ loop: U_RETURN(iBytesRead); } - if (errno == EINTR) - { - UInterrupt::checkForEventSignalPending(); - - goto loop; - } + if (errno == EINTR) UInterrupt::checkForEventSignalPending(); // NB: we never restart recvfrom(), in general the socket server is NOT blocking... U_RETURN(-1); } @@ -672,7 +674,7 @@ loop: if (iBytesWrite > 0) { - U_INTERNAL_DUMP("BytesWrite(%d) = %#.*S", iBytesWrite, iBytesWrite, CAST(pPayload)) + U_INTERNAL_DUMP("BytesWrite(%u) = %#.*S", iBytesWrite, iBytesWrite, CAST(pPayload)) U_RETURN(iBytesWrite); } @@ -896,7 +898,6 @@ bool USocket::acceptClient(USocket* pcNewConnection) U_INTERNAL_ASSERT_POINTER(pcNewConnection) SocketAddress cRemote; - socklen_t slDummy = cRemote.sizeOf(); #ifdef HAVE_ACCEPT4 @@ -917,8 +918,7 @@ bool USocket::acceptClient(USocket* pcNewConnection) { pcNewConnection->iState = CONNECT; - pcNewConnection->iRemotePort = cRemote.getPortNumber(); - cRemote.getIPAddress( pcNewConnection->cRemoteAddress); + setRemoteInfo(pcNewConnection, &cRemote); U_INTERNAL_DUMP("pcNewConnection->iSockDesc = %d pcNewConnection->flags = %d %B", pcNewConnection->iSockDesc, pcNewConnection->flags, pcNewConnection->flags) diff --git a/src/ulib/string.cpp b/src/ulib/string.cpp index 984a4d2e..d68c2e39 100644 --- a/src/ulib/string.cpp +++ b/src/ulib/string.cpp @@ -1212,11 +1212,7 @@ void UString::moveToBeginDataInBuffer(uint32_t n) rep->_length -= n; -#ifdef U_APEX_ENABLE - (void) U_SYSCALL(apex_memmove, "%p,%p,%u", (void*)rep->str, rep->str + n, rep->_length); -#else - (void) U_SYSCALL( memmove, "%p,%p,%u", (void*)rep->str, rep->str + n, rep->_length); -#endif + (void) U_SYSCALL(memmove, "%p,%p,%u", (void*)rep->str, rep->str + n, rep->_length); U_INTERNAL_ASSERT(invariant()) } diff --git a/src/ulib/utility/http2.cpp b/src/ulib/utility/http2.cpp index dbaa3fa4..10762d36 100644 --- a/src/ulib/utility/http2.cpp +++ b/src/ulib/utility/http2.cpp @@ -3813,8 +3813,6 @@ void UHTTP2::sendGoAway(USocket* psocket) { psocket->close(); - UClientImage_Base::setRequestProcessed(); - UClientImage_Base::resetPipelineAndSetCloseConnection(); } } diff --git a/src/ulib/utility/string_ext.cpp b/src/ulib/utility/string_ext.cpp index 5edb3c15..52106476 100644 --- a/src/ulib/utility/string_ext.cpp +++ b/src/ulib/utility/string_ext.cpp @@ -1234,6 +1234,9 @@ UString UStringExt::decompress(const char* s, uint32_t n) U_RETURN_STRING(out); } +uint32_t UStringExt::ratio; +uint32_t UStringExt::ratio_threshold = 90; // NB: we accept compressed data only if ratio compression is better than 10%... + #ifdef USE_LIBBROTLI UString UStringExt::brotli(const char* s, uint32_t len, uint32_t quality, uint32_t mode, uint32_t lgwin) // .br compress { @@ -1248,9 +1251,17 @@ UString UStringExt::brotli(const char* s, uint32_t len, uint32_t quality, uint32 { rc = U_SYSCALL(BrotliEncoderCompress, "%u,%u,%u,%u,%p,%p,%p", quality, lgwin, (BrotliEncoderMode)mode, (size_t)len, (uint8_t*)s, &sz, (uint8_t*)UFile::pfree); - U_INTERNAL_DUMP("BrotliEncoderCompress() = %d (%u => %u)", rc, len, sz) + ratio = (sz * 100U) / len; - if (rc == 0) return UString::getStringNull(); + U_INTERNAL_DUMP("BrotliEncoderCompress() = %d ratio = %u (%u%%)", rc, ratio, 100-ratio) + + if (rc == 0 || + ratio > ratio_threshold) + { + return UString::getStringNull(); + } + + U_INTERNAL_DUMP("BrotliEncoderCompress() = %#.4S", UFile::pfree) len = UFile::getSizeAligned(sz); @@ -1259,6 +1270,8 @@ UString UStringExt::brotli(const char* s, uint32_t len, uint32_t quality, uint32 UFile::pfree += len; UFile::nfree -= len; + // U_INTERNAL_ASSERT(isBrotli(result)) // check magic byte + U_RETURN_STRING(result); } @@ -1266,19 +1279,31 @@ UString UStringExt::brotli(const char* s, uint32_t len, uint32_t quality, uint32 rc = U_SYSCALL(BrotliEncoderCompress, "%u,%u,%u,%u,%p,%p,%p", quality, lgwin, (BrotliEncoderMode)mode, (size_t)len, (uint8_t*)s, &sz, (uint8_t*)r.data()); - U_INTERNAL_DUMP("BrotliEncoderCompress() = %d (%u => %u)", rc, len, sz) + ratio = (sz * 100U) / len; - if (rc == 0) return UString::getStringNull(); + U_INTERNAL_DUMP("BrotliEncoderCompress() = %d ratio = %u (%u%%)", rc, ratio, 100-ratio) + + if (rc == 0 || + ratio > ratio_threshold) + { + return UString::getStringNull(); + } + + U_INTERNAL_DUMP("BrotliEncoderCompress() = %#.4S", r.data()) r.rep->_length = sz; +// U_INTERNAL_ASSERT(isBrotli(r)) // check magic byte + U_RETURN_STRING(r); } +#endif UString UStringExt::unbrotli(const char* ptr, uint32_t sz) // .br uncompress { U_TRACE(0, "UStringExt::unbrotli(%.*S,%u)", sz, ptr, sz) +#ifdef USE_LIBBROTLI UString r(sz); const uint8_t* next_out; BrotliDecoderResult result; @@ -1308,16 +1333,15 @@ UString UStringExt::unbrotli(const char* ptr, uint32_t sz) // .br uncompress U_SYSCALL_VOID(BrotliDecoderDestroyInstance, "%p", state); U_RETURN_STRING(r); -} -#endif - -UString UStringExt::deflate(const char* s, uint32_t len, int type) // .gz compress -{ - U_TRACE(1, "UStringExt::deflate(%.*S,%u,%d)", len, s, len, type) - -#ifndef USE_LIBZ +#else return UString::getStringNull(); #endif +} + +#ifdef USE_LIBZ +UString UStringExt::deflate(const char* s, uint32_t len, uint32_t quality) // .gz compress +{ + U_TRACE(1, "UStringExt::deflate(%.*S,%u,%u)", len, s, len, quality) // The zlib documentation states that destination buffer size must be at least 0.1% larger than avail_in plus 12 bytes @@ -1326,17 +1350,7 @@ UString UStringExt::deflate(const char* s, uint32_t len, int type) // .gz compre if (UFile::isAllocableFromPool(sz)) { # ifdef USE_LIBZOPFLI - if (type <= 1) -# endif - { -# ifdef USE_LIBZ - len = u_gz_deflate(s, len, UFile::pfree, type); -# endif - - U_INTERNAL_DUMP("u_gz_deflate() = %u", len) - } -# ifdef USE_LIBZOPFLI - else + if (quality == 0) { size_t outsize = 0; ZopfliOptions options; @@ -1346,54 +1360,68 @@ UString UStringExt::deflate(const char* s, uint32_t len, int type) // .gz compre U_SYSCALL_VOID(ZopfliCompress, "%p,%d,%p,%u,%p,%p", &options, ZOPFLI_FORMAT_GZIP, (unsigned char*)s, (size_t)len, &out, &outsize); - U_INTERNAL_DUMP("ZopfliCompress(%u) = %u", len, outsize) + ratio = (outsize * 100U) / len; - len = outsize; + U_INTERNAL_DUMP("ZopfliCompress(%u) = %u ratio = %u (%u%%)", len, outsize, ratio, 100-ratio) - U_MEMCPY(UFile::pfree, out, len); + if (ratio > ratio_threshold) return UString::getStringNull(); + + U_MEMCPY(UFile::pfree, out, sz = outsize); U_SYSCALL_VOID(free, "%p", out); } + else # endif + { + sz = u_gz_deflate(s, len, UFile::pfree, (quality ? quality : Z_BEST_COMPRESSION)); - sz = UFile::getSizeAligned(len); + ratio = (sz * 100U) / len; - UString result(len, sz, UFile::pfree); + U_INTERNAL_DUMP("u_gz_deflate(%u) = %u ratio = %u (%u%%)", len, sz, ratio, 100-ratio) - UFile::pfree += sz; - UFile::nfree -= sz; + if (ratio > ratio_threshold) return UString::getStringNull(); + } + + UString result(sz, len = UFile::getSizeAligned(sz), UFile::pfree); + + UFile::pfree += len; + UFile::nfree -= len; + + U_INTERNAL_ASSERT(isGzip(result)) // check magic byte U_RETURN_STRING(result); } UString r(sz); -#ifdef USE_LIBZ - r.rep->_length = u_gz_deflate(s, len, r.rep->data(), (type ? true : false)); -#endif + r.rep->_length = u_gz_deflate(s, len, r.rep->data(), (quality ? quality : Z_BEST_COMPRESSION)); - U_INTERNAL_DUMP("u_gz_deflate(%u) = %u", len, r.size()) + ratio = (r.rep->_length * 100U) / len; + + U_INTERNAL_DUMP("u_gz_deflate(%u) = %u ratio = %u (%u%%)", len, r.rep->_length, ratio, 100-ratio) + + if (ratio > ratio_threshold) return UString::getStringNull(); #ifdef DEBUG - if (type) - { - uint32_t* psize_original = (uint32_t*)r.c_pointer(r.size() - 4); - + uint32_t* psize_original = (uint32_t*)r.c_pointer(r.size() - 4); # if __BYTE_ORDER == __LITTLE_ENDIAN - U_INTERNAL_DUMP("size original = %u (LE)", *psize_original) + U_INTERNAL_DUMP("size original = %u (LE)", *psize_original) # else - U_INTERNAL_DUMP("size original = %u (BE)", u_invert32(*psize_original)) + U_INTERNAL_DUMP("size original = %u (BE)", u_invert32(*psize_original)) # endif - } #endif + U_INTERNAL_ASSERT(isGzip(r)) // check magic byte + U_RETURN_STRING(r); } +#endif UString UStringExt::gunzip(const char* ptr, uint32_t sz, uint32_t space) // .gz uncompress { U_TRACE(0, "UStringExt::gunzip(%.*S,%u,%u)", sz, ptr, sz, space) +#ifdef USE_LIBZ if (space == 0) { if (isGzip(ptr)) // check magic byte @@ -1412,7 +1440,6 @@ UString UStringExt::gunzip(const char* ptr, uint32_t sz, uint32_t space) // .gz if (space == 0) space = sz * 4; } -#ifdef USE_LIBZ // decompress with zlib UString result(space); result.rep->_length = u_gz_inflate(ptr, sz, result.rep->data()); diff --git a/src/ulib/utility/uhttp.cpp b/src/ulib/utility/uhttp.cpp index c1828a7d..39a96b25 100644 --- a/src/ulib/utility/uhttp.cpp +++ b/src/ulib/utility/uhttp.cpp @@ -111,6 +111,7 @@ uint32_t UHTTP::limit_request_body = U_STRING_MAX_SIZE; uint32_t UHTTP::request_read_timeout; // https://www.google.com/url?q=https%3A%2F%2Fblogs.akamai.com%2F2016%2F02%2Funderstanding-brotlis-potential.html&sa=D&sntz=1&usg=AFQjCNGP4Nu9yPm65RKkAThsWxJ8qy49Sw +uint32_t UHTTP::gzip_level_for_dynamic_content = 3; uint32_t UHTTP::brotli_level_for_dynamic_content = 2; UCommand* UHTTP::pcmd; @@ -1554,9 +1555,7 @@ __pure bool UHTTP::isMobile() } /** - * HTTP message - * --------------------------------------------------------------------------------------------------------------------------- - * There are four parts to an HTTP request: + * HTTP message: there are four parts to an HTTP request: * --------------------------------------------------------------------------------------------------------------------------- * 1) the request line [REQUIRED]: the method, the URL, the version of the protocol * 2) the request headers [OPTIONAL]: a series of lines (one per) in the format of name, colon(:), and the value of the header @@ -2101,7 +2100,7 @@ bool UHTTP::checkContentLength(const UString& response) U_INTERNAL_DUMP("U_http_info.clength = %u U_http_data_chunked = %b", U_http_info.clength, U_http_data_chunked) - // check for double content-length + // check for duolicate content-length header pos = response.distance(s); @@ -4809,43 +4808,90 @@ U_NO_EXPORT inline void UHTTP::resetFileCache() file_data->fd = -1; } -U_NO_EXPORT void UHTTP::setResponseCompressed(const UString& data) +#if defined(USE_LIBZ) || defined(USE_LIBBROTLI) +U_NO_EXPORT inline bool UHTTP::compress(const UString& body) { - U_TRACE(0, "UHTTP::setResponseCompressed(%V)", data.rep) + U_TRACE(0, "UHTTP::compress(%V)", body.rep) - ext->setBuffer(U_CAPACITY); - - U_INTERNAL_DUMP("U_http_is_accept_gzip = %b U_http_is_accept_brotli = %b", U_http_is_accept_gzip, U_http_is_accept_brotli) + char* ptr = ext->data(); #ifdef USE_LIBBROTLI if (U_http_is_accept_brotli && - (*UClientImage_Base::body = UStringExt::brotli(data, brotli_level_for_dynamic_content))) + (*UClientImage_Base::body = UStringExt::brotli(body, (U_PARALLELIZATION_CHILD ? BROTLI_MAX_QUALITY : brotli_level_for_dynamic_content)))) { # ifndef U_CACHE_REQUEST_DISABLE is_response_compressed = 2; // brotli # endif - (void) ext->append(U_CONSTANT_TO_PARAM("Content-Encoding: br\r\n")); + u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); + u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('E','n','c','o','d','i','n','g')); + u_put_unalignedp32(ptr+16, U_MULTICHAR_CONSTANT32(':',' ','b','r')); + u_put_unalignedp16(ptr+20, U_MULTICHAR_CONSTANT16('\r','\n')); - return; + ext->rep->_length = U_CONSTANT_SIZE("Content-Encoding: br\r\n"); + + U_SRV_LOG("dynamic response: %u bytes - (%u%%) brotli compression ratio", UClientImage_Base::body->size(), 100-UStringExt::ratio); + + U_RETURN(true); } #endif #ifdef USE_LIBZ if (U_http_is_accept_gzip && - (*UClientImage_Base::body = UStringExt::deflate(data, 1))) + (*UClientImage_Base::body = UStringExt::deflate(body, (U_PARALLELIZATION_CHILD ? 0 : gzip_level_for_dynamic_content)))) { # ifndef U_CACHE_REQUEST_DISABLE is_response_compressed = 1; // gzip # endif - (void) ext->append(U_CONSTANT_TO_PARAM("Content-Encoding: gzip\r\n")); + u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); + u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('E','n','c','o','d','i','n','g')); + u_put_unalignedp64(ptr+16, U_MULTICHAR_CONSTANT64(':',' ','g','z','i','p','\r','\n')); - return; + ext->rep->_length = U_CONSTANT_SIZE("Content-Encoding: gzip\r\n"); + + U_SRV_LOG("dynamic response: %u bytes - (%u%%) gzip compression ratio", UClientImage_Base::body->size(), 100-UStringExt::ratio); + + U_RETURN(true); } -# endif +#endif - *UClientImage_Base::body = data; + U_RETURN(false); +} +#endif + +void UHTTP::setDynamicResponse(const UString& body, const UString& header, const UString& content_type) +{ + U_TRACE(0, "UHTTP::setDynamicResponse(%V,%V,%V)", body.rep, header.rep, content_type.rep) + + ext->setBuffer(U_CAPACITY); + +#if defined(USE_LIBZ) || defined(USE_LIBBROTLI) + if (checkForCompression(body.size()) == false || + compress(body) == false) +#endif + { + *UClientImage_Base::body = body; + } + + if (header) + { + (void) ext->append(header); + + (void) checkContentLength(UClientImage_Base::body->size()); // NB: adjusting the size of response... + } + else + { + if (content_type) setContentResponse(content_type); + else + { + mime_index = U_unknow; + + (void) ext->append(getHeaderMimeType(U_NULLPTR, UClientImage_Base::body->size(), U_CTYPE_HTML)); + } + } + + handlerResponse(); } void UHTTP::processRequest() @@ -5065,13 +5111,9 @@ void UHTTP::processRequest() { // check if it's OK to do directory listing via authentication (digest|basic) - if (processAuthorization() == false) return; + if (processAuthorization()) setDynamicResponse(getHTMLDirectoryList()); - setResponseCompressed(getHTMLDirectoryList()); - - mime_index = U_unknow; - - (void) ext->append(getHeaderMimeType(U_NULLPTR, UClientImage_Base::body->size(), U_CTYPE_HTML)); + return; } goto end; @@ -6685,79 +6727,122 @@ void UHTTP::handlerResponse() U_INTERNAL_DUMP("UClientImage_Base::body(%u) = %V", UClientImage_Base::body->size(), UClientImage_Base::body->rep) } -void UHTTP::setResponse(bool btype, const UString& content_type, UString* pbody) +void UHTTP::setResponseMimeIndex(const UString& content, int mime_idx) { - U_TRACE(0, "UHTTP::setResponse(%b,%V,%p)", btype, content_type.rep, pbody) + U_TRACE(0, "UHTTP::setResponseMimeIndex(%V,%d)", content.rep, mime_idx) - U_INTERNAL_ASSERT_POINTER(UClientImage_Base::body) - U_INTERNAL_ASSERT_MAJOR(U_http_info.nResponseCode, 0) + if (content.empty()) + { + U_http_info.nResponseCode = HTTP_NO_CONTENT; + + setResponse(); + + return; + } + + U_INTERNAL_ASSERT_EQUALS(U_http_info.nResponseCode, HTTP_OK) + + U_http_info.endHeader = 0; + *UClientImage_Base::wbuffer = content; + + setDynamicResponse(); +} + +U_NO_EXPORT void UHTTP::setContentResponse(const UString& content_type) +{ + U_TRACE(0, "UHTTP::setContentResponse(%V)", content_type.rep) U_INTERNAL_ASSERT(u_endsWith(U_STRING_TO_PARAM(content_type), U_CONSTANT_TO_PARAM(U_CRLF))) - ext->setBuffer(U_CAPACITY); + char* ptr = ext->pend(); + + u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); + u_put_unalignedp32(ptr+8, U_MULTICHAR_CONSTANT32('T','y','p','e')); + u_put_unalignedp16(ptr+12, U_MULTICHAR_CONSTANT16(':',' ')); + + ptr += U_CONSTANT_SIZE("Content-Type: "); - char* start = ext->data(); - char* ptr = start; uint32_t sz = content_type.size(); - U_INTERNAL_ASSERT_RANGE(1,sz,U_CAPACITY) - - if (btype) - { - u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); - u_put_unalignedp32(ptr+8, U_MULTICHAR_CONSTANT32('T','y','p','e')); - u_put_unalignedp16(ptr+12, U_MULTICHAR_CONSTANT16(':',' ')); - - ptr += U_CONSTANT_SIZE("Content-Type: "); - } - U_MEMCPY(ptr, content_type.data(), sz); - - ptr += sz; + ptr += sz; u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('L','e','n','g','t','h',':',' ')); - ptr += U_CONSTANT_SIZE("Content-Length: "); + ptr = u_num2str32(UClientImage_Base::body->size(), ptr + U_CONSTANT_SIZE("Content-Length: ")); + + u_put_unalignedp32(ptr, U_MULTICHAR_CONSTANT32('\r','\n','\r','\n')); + + ext->size_adjust(ptr + U_CONSTANT_SIZE(U_CRLF2)); +} + +void UHTTP::setResponse(const UString& content_type, UString* pbody) +{ + U_TRACE(0, "UHTTP::setResponse(%V,%p)", content_type.rep, pbody) + + U_INTERNAL_ASSERT_MAJOR(U_http_info.nResponseCode, 0) + + ext->setBuffer(U_CAPACITY); if (pbody == U_NULLPTR) { - *ptr++ = '0'; - UClientImage_Base::body->clear(); // clean body to avoid writev() in response... - goto end; - } - -#ifdef USE_LIBZ - if (UStringExt::isGzip(*pbody)) - { - if (U_http_is_accept_gzip == false) *pbody = UStringExt::gunzip(*pbody); - - ptr = u_num2str32(pbody->size(), ptr); - - if (U_http_is_accept_gzip) - { - u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('\r','\n','C','o','n','t','e','n')); - u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('t', '-','E','n','c','o','d','i')); - u_put_unalignedp64(ptr+16, U_MULTICHAR_CONSTANT64('n', 'g',':',' ','g','z','i','p')); - - ptr += U_CONSTANT_SIZE("\r\nContent-Encoding: gzip"); - } + pbody = UClientImage_Base::body; } else + { +# ifdef USE_LIBBROTLI + if (UStringExt::isBrotli(*pbody)) + { + if (U_http_is_accept_brotli == false) *UClientImage_Base::body = UStringExt::unbrotli(*pbody); + else + { + char* ptr = ext->data(); + + u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); + u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('E','n','c','o','d','i','n','g')); + u_put_unalignedp32(ptr+16, U_MULTICHAR_CONSTANT32(':',' ','b','r')); + u_put_unalignedp16(ptr+20, U_MULTICHAR_CONSTANT16('\r','\n')); + + ext->rep->_length = U_CONSTANT_SIZE("Content-Encoding: br\r\n"); + + *UClientImage_Base::body = *pbody; + } + + goto next; + } +# endif + +# ifdef USE_LIBZ + if (UStringExt::isGzip(*pbody)) + { + if (U_http_is_accept_gzip == false) *UClientImage_Base::body = UStringExt::gunzip(*pbody); + else + { + char* ptr = ext->data(); + + u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); + u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('E','n','c','o','d','i','n','g')); + u_put_unalignedp64(ptr+16, U_MULTICHAR_CONSTANT64(':',' ','g','z','i','p','\r','\n')); + + ext->rep->_length = U_CONSTANT_SIZE("Content-Encoding: gzip\r\n"); + + *UClientImage_Base::body = *pbody; + } + + goto next; + } +# endif + + *UClientImage_Base::body = *pbody; + } + +#if defined(USE_LIBBROTLI) || defined(USE_LIBZ) +next: #endif - { - ptr = u_num2str32(pbody->size(), ptr); - } - - *UClientImage_Base::body = *pbody; - -end: - u_put_unalignedp32(ptr, U_MULTICHAR_CONSTANT32('\r','\n','\r','\n')); - ptr += U_CONSTANT_SIZE(U_CRLF2); - - ext->size_adjust(ptr - start); + setContentResponse(content_type); handlerResponse(); } @@ -6838,35 +6923,54 @@ void UHTTP::setRedirectResponse(int mode, const char* ptr_location, uint32_t len # endif } - if ((mode & NO_BODY) != 0) setResponse(false, tmp, U_NULLPTR); + if ((mode & NO_BODY) != 0) + { + ext->setBuffer(U_CAPACITY); + + UClientImage_Base::body->clear(); // clean body to avoid writev() in response... + + char* ptr = ext->data(); + uint32_t sz = tmp.size(); + + U_MEMCPY(ptr, tmp.data(), sz); + ptr += sz; + + u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); + u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('L','e','n','g','t','h',':',' ')); + u_put_unalignedp64(ptr+16, U_MULTICHAR_CONSTANT64('0','\r','\n','\r','\n','\0','\0','\0')); + + ext->size_adjust(ptr + U_CONSTANT_SIZE("Content-Length: 0\r\n\r\n")); + + handlerResponse(); + + return; + } + + char msg[4096]; + uint32_t sz, len; + + if ((mode & NETWORK_AUTHENTICATION_REQUIRED) != 0) + { + len = u__snprintf(msg, sizeof(msg), U_CONSTANT_TO_PARAM("You need to authenticate with the local network in order to get access"), + len_location, ptr_location); + } else { - char msg[4096]; - uint32_t sz, len; - - if ((mode & NETWORK_AUTHENTICATION_REQUIRED) != 0) - { - len = u__snprintf(msg, sizeof(msg), U_CONSTANT_TO_PARAM("You need to authenticate with the local network in order to get access"), - len_location, ptr_location); - } - else - { - len = u__snprintf(msg, sizeof(msg), U_CONSTANT_TO_PARAM("The document has moved here"), len_location, ptr_location); - } - - const char* status = getStatusDescription(&sz); - UString body(500U + len_location), content_type(U_CAPACITY); - - body.snprintf(U_CONSTANT_TO_PARAM(U_STR_FMR_BODY), - U_http_info.nResponseCode, sz, status, - sz, status, - len, msg); - - (void) content_type.assign(U_CONSTANT_TO_PARAM(U_CTYPE_HTML "\r\n")); - (void) content_type.append(tmp); - - setResponse(true, content_type, &body); + len = u__snprintf(msg, sizeof(msg), U_CONSTANT_TO_PARAM("The document has moved here"), len_location, ptr_location); } + + const char* status = getStatusDescription(&sz); + UString body(500U + len_location), content_type(U_CAPACITY); + + body.snprintf(U_CONSTANT_TO_PARAM(U_STR_FMR_BODY), + U_http_info.nResponseCode, sz, status, + sz, status, + len, msg); + + (void) content_type.assign(U_CONSTANT_TO_PARAM(U_CTYPE_HTML "\r\n")); + (void) content_type.append(tmp); + + setResponse(content_type, &body); } void UHTTP::setErrorResponse(const UString& content_type, int code, const char* fmt, uint32_t fmt_size, bool bformat) @@ -6928,7 +7032,7 @@ void UHTTP::setErrorResponse(const UString& content_type, int code, const char* } } - setResponse(true, content_type, &body); + setResponse(content_type, &body); } void UHTTP::setUnAuthorized() @@ -6966,10 +7070,9 @@ void UHTTP::setDynamicResponse() U_INTERNAL_ASSERT_MAJOR(U_http_info.nResponseCode, 0) - char* ptr1; - UString compressed; + char* ptr; const char* pEndHeader; - uint32_t sz = 0, csz, ratio, clength = UClientImage_Base::wbuffer->size(); + uint32_t clength = UClientImage_Base::wbuffer->size(); #if !defined(USE_LIBZ) && !defined(USE_LIBBROTLI) bool bcompress = false; @@ -6979,111 +7082,21 @@ void UHTTP::setDynamicResponse() ext->setBuffer(U_CAPACITY); - char* ptr = ext->data(); - if (U_http_info.endHeader) { U_INTERNAL_ASSERT(clength >= U_http_info.endHeader) clength -= U_http_info.endHeader; - if (clength == 0) // no response - { - UClientImage_Base::body->clear(); // clean body to avoid writev() in response... - - UClientImage_Base::wbuffer->clear(); - - goto no_response; - } + if (clength == 0) goto no_response; pEndHeader = UClientImage_Base::wbuffer->data(); - if (bcompress == false) goto no_compress; - } - else - { - pEndHeader = U_NULLPTR; - - if (bcompress == false) - { - *UClientImage_Base::body = *UClientImage_Base::wbuffer; - - if (clength == 0) goto no_response; - - goto end; - } - } - -#ifdef USE_LIBBROTLI - if (U_http_is_accept_brotli && - (compressed = UStringExt::brotli(UClientImage_Base::wbuffer->c_pointer(U_http_info.endHeader), clength, brotli_level_for_dynamic_content))) - { - bcompress = false; - - goto next; - } -#endif -#ifdef USE_LIBZ - if (U_http_is_accept_gzip) compressed = UStringExt::deflate(UClientImage_Base::wbuffer->c_pointer(U_http_info.endHeader), clength, 1); -#endif - -#ifdef USE_LIBBROTLI -next: -#endif - csz = compressed.size(), ratio = (csz * 100U) / clength; - - U_INTERNAL_DUMP("ratio = %u (%u%%)", ratio, 100-ratio) - - // NB: we accept new data only if ratio compression is better than 15%... - - if (ratio < 85) - { - clength = csz; - - *UClientImage_Base::body = compressed; - - U_SRV_LOG("cgi response: %u bytes - (%u%%) compression ratio", csz, 100-ratio); - -# ifdef USE_LIBBROTLI - if (bcompress == false) - { - U_INTERNAL_ASSERT(U_http_is_accept_brotli) - - sz = U_CONSTANT_SIZE("Content-Encoding: br\r\n"); - - u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); - u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('E','n','c','o','d','i','n','g')); - u_put_unalignedp32(ptr+16, U_MULTICHAR_CONSTANT32(':',' ','b','r')); - u_put_unalignedp16(ptr+20, U_MULTICHAR_CONSTANT16('\r','\n')); - - goto end; - } -# endif -# ifdef USE_LIBZ - U_INTERNAL_ASSERT(U_http_is_accept_gzip) - - sz = U_CONSTANT_SIZE("Content-Encoding: gzip\r\n"); - - u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); - u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('E','n','c','o','d','i','n','g')); - u_put_unalignedp64(ptr+16, U_MULTICHAR_CONSTANT64(':',' ','g','z','i','p','\r','\n')); -# endif - } - else - { -no_compress: - (void) UClientImage_Base::body->replace(pEndHeader + U_http_info.endHeader, clength); - } - -end: - if (U_http_content_type_len != 1) - { - // NB: we assume that we don't have a HTTP content-type header... - # if defined(DEBUG) && defined(USE_LIBMAGIC) - if (clength > 4) + if (clength > 4 && + U_http_content_type_len != 1) // NB: we assume that we don't have a HTTP content-type header... { - const char* p = UClientImage_Base::wbuffer->c_pointer(U_http_info.endHeader); + const char* p = pEndHeader + U_http_info.endHeader; if (u_isText((const unsigned char*)p, clength)) { @@ -7094,67 +7107,111 @@ end: } # endif - ptr1 = ptr+sz; + if (bcompress == false) + { + (void) UClientImage_Base::body->replace(pEndHeader + U_http_info.endHeader, clength); - u_put_unalignedp64(ptr1, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); - u_put_unalignedp64(ptr1+8, U_MULTICHAR_CONSTANT64('T','y','p','e',':',' ','t','e')); - u_put_unalignedp16(ptr1+16, U_MULTICHAR_CONSTANT16('x','t')); + goto next; + } + } + else + { + if (clength == 0) + { +no_response: + UClientImage_Base::body->clear(); // clean body to avoid writev() in response... - ptr1 += U_CONSTANT_SIZE("Content-Type: text"); + handlerResponse(); + + return; + } + + pEndHeader = U_NULLPTR; + + if (bcompress == false) + { + *UClientImage_Base::body = *UClientImage_Base::wbuffer; + + goto next; + } + } + + U_INTERNAL_ASSERT(bcompress) + +#if defined(USE_LIBZ) || defined(USE_LIBBROTLI) + if (compress(UClientImage_Base::wbuffer->substr(U_http_info.endHeader, clength))) clength = UClientImage_Base::body->size(); + else + { + U_INTERNAL_ASSERT_MAJOR(clength, 0) + U_INTERNAL_ASSERT_POINTER(pEndHeader) + + (void) UClientImage_Base::body->replace(pEndHeader + U_http_info.endHeader, clength); + } +#endif + +next: + ptr = ext->pend(); + + if (U_http_content_type_len != 1) + { + // NB: we assume that we don't have a HTTP content-type header... + + u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); + u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('T','y','p','e',':',' ','t','e')); + u_put_unalignedp16(ptr+16, U_MULTICHAR_CONSTANT16('x','t')); + + ptr += U_CONSTANT_SIZE("Content-Type: text"); if (u_is_html(mime_index)) { - u_put_unalignedp64(ptr1, U_MULTICHAR_CONSTANT64('/','h','t','m','l',';',' ','c')); - u_put_unalignedp64(ptr1+8, U_MULTICHAR_CONSTANT64('h','a','r','s','e','t','=','U')); - u_put_unalignedp32(ptr1+16, U_MULTICHAR_CONSTANT32('T','F','-','8')); - u_put_unalignedp16(ptr1+20, U_MULTICHAR_CONSTANT16('\r','\n')); + u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('/','h','t','m','l',';',' ','c')); + u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('h','a','r','s','e','t','=','U')); + u_put_unalignedp32(ptr+16, U_MULTICHAR_CONSTANT32('T','F','-','8')); + u_put_unalignedp16(ptr+20, U_MULTICHAR_CONSTANT16('\r','\n')); - sz += U_CONSTANT_SIZE("Content-Type: " U_CTYPE_HTML "\r\n"); + ptr += U_CONSTANT_SIZE("/html; charset=UTF-8\r\n"); } else { # ifdef U_SERVER_CAPTIVE_PORTAL - u_put_unalignedp64(ptr1, U_MULTICHAR_CONSTANT64('/','p','l','a','i','n','\r','\n')); + u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('/','p','l','a','i','n','\r','\n')); - sz += U_CONSTANT_SIZE("Content-Type: text/plain\r\n"); + ptr += U_CONSTANT_SIZE("/plain\r\n"); # else - u_put_unalignedp64(ptr1, U_MULTICHAR_CONSTANT64('/','p','l','a','i','n',';',' ')); - u_put_unalignedp64(ptr1+8, U_MULTICHAR_CONSTANT64('c','h','a','r','s','e','t','=')); - u_put_unalignedp32(ptr1+16, U_MULTICHAR_CONSTANT32('U','T','F','-')); - ptr1[20] = '8'; - u_put_unalignedp16(ptr1+21, U_MULTICHAR_CONSTANT16('\r','\n')); + u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('/','p','l','a','i','n',';',' ')); + u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('c','h','a','r','s','e','t','=')); + u_put_unalignedp32(ptr+16, U_MULTICHAR_CONSTANT32('U','T','F','-')); + ptr[20] = '8'; + u_put_unalignedp16(ptr+21, U_MULTICHAR_CONSTANT16('\r','\n')); - sz += U_CONSTANT_SIZE("Content-Type: " U_CTYPE_TEXT_WITH_CHARSET "\r\n"); + ptr += U_CONSTANT_SIZE("/plain; charset=UTF-8\r\n"); # endif } } - ptr1 = ptr+sz; + u_put_unalignedp64(ptr, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); + u_put_unalignedp64(ptr+8, U_MULTICHAR_CONSTANT64('L','e','n','g','t','h',':',' ')); - u_put_unalignedp64(ptr1, U_MULTICHAR_CONSTANT64('C','o','n','t','e','n','t','-')); - u_put_unalignedp64(ptr1+8, U_MULTICHAR_CONSTANT64('L','e','n','g','t','h',':',' ')); - - ptr1 = u_num2str32(clength, ptr1 + U_CONSTANT_SIZE("Content-Length: ")); + ptr = u_num2str32(clength, ptr + U_CONSTANT_SIZE("Content-Length: ")); if (pEndHeader == U_NULLPTR) { - u_put_unalignedp32(ptr1, U_MULTICHAR_CONSTANT32('\r','\n','\r','\n')); - ptr1 += 4; + u_put_unalignedp32(ptr, U_MULTICHAR_CONSTANT32('\r','\n','\r','\n')); + ptr += U_CONSTANT_SIZE(U_CRLF2); } else { - u_put_unalignedp16(ptr1, U_MULTICHAR_CONSTANT16('\r','\n')); - ptr1 += 2; + u_put_unalignedp16(ptr, U_MULTICHAR_CONSTANT16('\r','\n')); + ptr += U_CONSTANT_SIZE(U_CRLF); U_INTERNAL_ASSERT(u_endsWith(pEndHeader, U_http_info.endHeader, U_CONSTANT_TO_PARAM(U_CRLF2))) - U_MEMCPY(ptr1, pEndHeader, U_http_info.endHeader); - ptr1 += U_http_info.endHeader; + U_MEMCPY(ptr, pEndHeader, U_http_info.endHeader); + ptr += U_http_info.endHeader; } - ext->size_adjust(ptr1); + ext->size_adjust(ptr); -no_response: handlerResponse(); } @@ -7968,12 +8025,14 @@ next: U_RETURN_STRING(header); } -U_NO_EXPORT void UHTTP::setHeaderForCache(UHTTP::UFileCacheData* ptr, const UString& data) +U_NO_EXPORT void UHTTP::setHeaderForCache(UHTTP::UFileCacheData* ptr, UString& data) { U_TRACE(0, "UHTTP::setHeaderForCache(%p,%V)", ptr, data.rep) U_INTERNAL_ASSERT_POINTER(ptr) + (void) data.shrink(); + ptr->array->push_back(data); #ifndef U_HTTP2_DISABLE @@ -7988,6 +8047,29 @@ U_NO_EXPORT void UHTTP::setHeaderForCache(UHTTP::UFileCacheData* ptr, const UStr #endif } +U_NO_EXPORT void UHTTP::setDataInCache(const UString& fmt, const UString& content, const char* encoding, uint32_t encoding_len) +{ + U_TRACE(0, "UHTTP::setDataInCache(%V,%V,%.*S,%u)", fmt.rep, content.rep, encoding_len, encoding, encoding_len) + + uint32_t size = content.size(); + + file_data->array->push_back(content); + + UString header(U_CAPACITY); + + if (encoding_len == 0) header.snprintf(U_STRING_TO_PARAM(fmt), size); + else + { + U_INTERNAL_ASSERT_POINTER(encoding) + + (void) header.append(encoding, encoding_len); + + header.snprintf_add(U_STRING_TO_PARAM(fmt), size); + } + + setHeaderForCache(file_data, header); +} + #ifdef USE_LIBBROTLI U_NO_EXPORT void UHTTP::checkArrayCompressData(UFileCacheData* ptr) { @@ -8015,29 +8097,24 @@ U_NO_EXPORT void UHTTP::putDataInCache(const UString& fmt, UString& content) U_INTERNAL_ASSERT_MAJOR(file_data->size, 0) U_INTERNAL_ASSERT_EQUALS(file_data->mime_index, mime_index) - UString header(U_CAPACITY); - uint32_t size = file_data->size, ratio1 = 100, ratio2 = 100; - U_NEW(UVector, file_data->array, UVector(6U)); #ifndef U_HTTP2_DISABLE U_NEW(UVector, file_data->http2, UVector(3U)); #endif - file_data->array->push_back(content); - - header.snprintf(U_STRING_TO_PARAM(fmt), size); - - (void) header.shrink(); - - setHeaderForCache(file_data, header); + setDataInCache(fmt, content); if (content.empty()) { - U_SRV_LOG("File cached (sendfile): %V - %u bytes", pathname->rep, size); + U_SRV_LOG("File cached (sendfile): %V - %u bytes", pathname->rep, file_data->size); return; } + U_INTERNAL_ASSERT_EQUALS(file_data->size, content.size()) + + uint32_t ratio1 = 100, ratio2 = 100; + if (u_is_img(mime_index)) { U_INTERNAL_ASSERT(u_endsWith(U_FILE_TO_PARAM(*file), U_CONSTANT_TO_PARAM(".gif")) || @@ -8051,10 +8128,10 @@ U_NO_EXPORT void UHTTP::putDataInCache(const UString& fmt, UString& content) else if (u_is_png(mime_index)) page_speed->optimize_png(content); else page_speed->optimize_jpg(content); - if (content.size() < size) U_SRV_LOG("WARNING: found image not optimized: %V", pathname->rep); + if (content.size() < file_data->size) U_SRV_LOG("WARNING: found image not optimized: %V", pathname->rep); # endif - U_SRV_LOG("File cached (image): %V - %u bytes", pathname->rep, size); + U_SRV_LOG("File cached (image): %V - %u bytes", pathname->rep, file_data->size); return; } @@ -8102,8 +8179,8 @@ U_NO_EXPORT void UHTTP::putDataInCache(const UString& fmt, UString& content) next: #if defined(USE_LIBZ) || defined(USE_LIBBROTLI) - if (size > U_MIN_SIZE_FOR_DEFLATE && - u_is_compressable(mime_index)) + if (u_is_compressable(mime_index) && + file_data->size > U_MIN_SIZE_FOR_DEFLATE) { # ifdef USE_LIBZ /** @@ -8133,60 +8210,26 @@ next: * Sending raw DEFLATE data is just not a good idea. As Mark says "[it's] simply more reliable to only use GZIP" */ - UString content1 = UStringExt::deflate(content, 2); // 2 => zopfli... + UString content1 = UStringExt::deflate(content); // zopfli... - // NB: we accept compress data only if ratio compression is better than 15%... - - if ((size = content1.size()) < file_data->size) + if (content1) { - if (size) ratio1 = (size * 100U) / file_data->size; + ratio1 = UStringExt::ratio; - U_INTERNAL_DUMP("ratio1 = %u (%u%%)", ratio1, 100-ratio1) - - if (ratio1 < 85) - { - file_data->array->push_back(content1); // gzip content... - - header.setBuffer(U_CAPACITY); - - (void) header.replace(U_CONSTANT_TO_PARAM("Content-Encoding: gzip\r\n")); - - header.snprintf_add(U_STRING_TO_PARAM(fmt), size); - - (void) header.shrink(); - - setHeaderForCache(file_data, header); - } + setDataInCache(fmt, content1, U_CONSTANT_TO_PARAM("Content-Encoding: gzip\r\n")); } # endif # ifdef USE_LIBBROTLI UString content2 = UStringExt::brotli(content); - // NB: we accept compress data only if ratio compression is better than 15%... - - if ((size = content2.size()) < file_data->size) + if (content2) { + ratio2 = UStringExt::ratio; + checkArrayCompressData(file_data); - if (size) ratio2 = (size * 100U) / file_data->size; - - U_INTERNAL_DUMP("ratio2 = %u (%u%%)", ratio2, 100-ratio2) - - if (ratio2 < 85) - { - file_data->array->push_back(content2); // brotli content... - - header.setBuffer(U_CAPACITY); - - (void) header.replace(U_CONSTANT_TO_PARAM("Content-Encoding: br\r\n")); - - header.snprintf_add(U_STRING_TO_PARAM(fmt), size); - - (void) header.shrink(); - - setHeaderForCache(file_data, header); - } + setDataInCache(fmt, content2, U_CONSTANT_TO_PARAM("Content-Encoding: br\r\n")); } # endif } @@ -10405,7 +10448,7 @@ void UHTTP::checkContentLength(uint32_t length) if (pos != U_NOT_FOUND) { - const char* ptr = ext->c_pointer(pos += U_CONSTANT_SIZE("Content-Length") + 1); + const char* ptr = ext->c_pointer((pos += sizeof("Content-Length"))); if (u__isblank(*ptr)) // NB: weighttp fail if we don't put at least one space... { @@ -11600,7 +11643,7 @@ U_EXPORT istream& operator>>(istream& is, UHTTP::UFileCacheData& d) # ifdef USE_LIBZ else if (u_is_img(d.mime_index) == false) { - d.array->push_back(UStringExt::deflate(content, 2)); // 2 gzip(content) + d.array->push_back(UStringExt::deflate(content)); // 2 gzip(content) decoded = U_STRING_FROM_CONSTANT("Content-Encoding: gzip\r\n") + header; diff --git a/tests/base/test_gzio.c b/tests/base/test_gzio.c index bb2ccfb0..f305f176 100644 --- a/tests/base/test_gzio.c +++ b/tests/base/test_gzio.c @@ -43,7 +43,7 @@ static void do_cipher(int fd, int operation) } } - if (operation == U_ENCODE) ebuflen = u_gz_deflate(buf, readlen, ebuf, true); + if (operation == U_ENCODE) ebuflen = u_gz_deflate(buf, readlen, ebuf, Z_DEFAULT_COMPRESSION); else ebuflen = u_gz_inflate(buf, readlen, ebuf); write(STDOUT_FILENO, ebuf, ebuflen); diff --git a/tests/examples/ok/web_server.ok b/tests/examples/ok/web_server.ok index 0128b20f..31ec2816 100644 --- a/tests/examples/ok/web_server.ok +++ b/tests/examples/ok/web_server.ok @@ -1,11 +1,11 @@ HTTP/1.1 505 HTTP Version Not Supported -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 501 Not Implemented -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -21,7 +21,7 @@ Content-Length: 256
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -37,7 +37,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -53,7 +53,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -69,19 +69,19 @@ Content-Length: 263
ULib Server
HTTP/1.1 411 Length Required -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 413 Request Entity Too Large -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -97,7 +97,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -113,7 +113,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -129,7 +129,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -145,7 +145,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -161,7 +161,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -177,14 +177,14 @@ Content-Length: 263
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT, COPY, MOVE, LOCK, UNLOCK, MKCOL, PROPFIND, PATCH, PURGE, MERGE, REPORT, CHECKOUT, MKACTIVITY, NOTIFY, MSEARCH, SUBSCRIBE, UNSUBSCRIBE Content-Length: 0 HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -201,13 +201,13 @@ Content-Length: 444
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 257 HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 344 @@ -222,7 +222,7 @@ Content-Length: 344
ULib Server
HTTP/1.1 403 Forbidden -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 304 @@ -237,7 +237,7 @@ Content-Length: 304
ULib Server
HTTP/1.1 500 Internal Server Error -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 548 @@ -252,14 +252,14 @@ Content-Length: 548
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 21 pippo pluto paperino HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 WWW-Authenticate: Basic realm="Protected Area" @@ -275,21 +275,21 @@ Content-Length: 444
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 -Expires: Mon, 24 Sep 2018 17:06:46 GMT +Expires: Tue, 02 Oct 2018 14:52:22 GMT Last-Modified: Fri, 20 Feb 2009 14:50:49 GMT Content-Length: 63 this is the web_server testsuite inp/http/data/index.html file HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Range: bytes 0-63/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:06:47 GMT -Last-Modified: Sun, 24 Sep 2017 17:03:10 GMT +Expires: Tue, 02 Oct 2018 14:52:23 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 64 123456781234567 @@ -297,2908 +297,90 @@ Content-Length: 64 34567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Range: bytes 0-31/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:06:47 GMT -Last-Modified: Sun, 24 Sep 2017 17:06:47 GMT +Expires: Tue, 02 Oct 2018 14:52:23 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 123456781234567 345678903456789 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Range: bytes 32-63/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:06:47 GMT -Last-Modified: Sun, 24 Sep 2017 17:06:47 GMT +Expires: Tue, 02 Oct 2018 14:52:23 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 34567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:06:47 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Range: bytes 32-63/64 Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:06:47 GMT -Last-Modified: Sun, 24 Sep 2017 17:03:10 GMT +Expires: Tue, 02 Oct 2018 14:52:23 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 234567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Length: 224 -Content-Type: multipart/byteranges; boundary="=_288329059591537812" - - ---=_288329059591537812 -Content-Range: bytes 0-0/64 -Content-Type: text/html; charset=UTF-8 - -1 ---=_288329059591537812 -Content-Range: bytes 63-63/64 -Content-Type: text/html; charset=UTF-8 - - - ---=_288329059591537812--HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Range: bytes 50-63/64 -Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:06:47 GMT -Last-Modified: Sun, 24 Sep 2017 17:06:47 GMT -Content-Length: 14 - -2345670123456 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Length: 244 -Content-Type: multipart/byteranges; boundary="=_288329059591537813" - - ---=_288329059591537813 -Content-Range: bytes 10-19/64 -Content-Type: text/html; charset=UTF-8 - -34567 -3456 ---=_288329059591537813 -Content-Range: bytes 50-59/64 -Content-Type: text/html; charset=UTF-8 - -2345670123 ---=_288329059591537813--HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:06:47 GMT -Last-Modified: Sun, 24 Sep 2017 17:06:47 GMT -Content-Length: 64 - -123456781234567 -345678903456789 -234567892345678 -012345670123456 -HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Length: 0 - -HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Length: 0 - -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Encoding: gzip -Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 295 - -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 561 - -Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes24/09/2017 17:06:46

ULib Server
HTTP/1.1 304 Not Modified -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Length: 0 - -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 1669 - - - - Welcome to ULib Web Server! - - - - -
-

Welcome to ULib Web Server!

-
- - -
- - - - - - -
- - -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 1898 - -
-ssi_begin
-This page last updated: Friday, 30-Oct-2015 15:20:57 GMT
-
- -1: ok - - -2: ok - - -3: ok - - -4: ok - - -
-SSI_BEGIN
-Name of user: nobody
-
-Document name: ssi1.shtml
-
-Document URI: /SSI/ssi1.shtml
-
-It's now: Sunday, 24-Sep-2017 17:06:47 GMT
-
-It's now: Sunday, 24-Sep-2017 19:06:47 CEST
-
-This page is:     179 Bytes
-
-This file last modified: August 12, 2015
-
-You're using: 
-
-$HTTP_X_SENDFILE: 
-
-
-start PRINTENV
---------------
-QUERY_STRING=
-REQUEST_URI=/SSI/ssi1.shtml
-CONTENT_LENGTH=0
-REQUEST_METHOD=GET
-SCRIPT_NAME=/SSI/ssi1.shtml
-SERVER_NAME=stefano
-SERVER_PORT=8080
-HTTP_HOST=10.30.1.131
-SERVER_PROTOCOL=HTTP/1.1
-SERVER_ADDR=192.168.42.60
-DOCUMENT_ROOT=/usr/src/ULib-1.4.2/tests/examples/docroot
-SERVER_SOFTWARE=ULib/1.4.2
-REMOTE_PORT=36840
-REMOTE_ADDR=127.0.0.1
-SESSION_ID=127.0.0.1:0
-REQUEST_ID=127.0.0.1:36840:0
-PWD=/usr/src/ULib-1.4.2/tests/examples/docroot
-PATH=/usr/local/bin:/usr/bin:/bin
-HTTP_X_SENDFILE=puppamelo
---------------
-end   PRINTENV
- 
-
-start LS
---------------
-total 392
-drwxr-xr-x 3 nobody nobody   4096 Oct 30  2015 .
-drwxr-xr-x 8 nobody nobody 368640 Sep 24 19:06 ..
-drwxr-xr-x 3 nobody nobody   4096 Aug 25  2014 earth
--rw-r--r-- 1 nobody nobody    179 Aug 12  2015 embed.c
--rw-r--r-- 3 nobody nobody    160 Mar 28  2011 index.shtml
--rw-r--r-- 1 nobody nobody    352 Nov  8  2011 menu.shtml
--rw-r--r-- 1 nobody nobody    917 Oct 30  2015 ssi1.shtml
--rw-r--r-- 1 nobody nobody   1190 Aug 25  2014 ssi2.shtml
---------------
-end   LS
-
-start CGI
---------------
-Content-Type: text/html
-
-You're not using Microsoft® Internet Explorer® 5.0
---------------
-end   CGI
-SSI include failed!
-SSI include failed!
-/*int main(void) {
-  struct mg_context* ctx;
-  const char *options[] = {"listening_ports", LISTENING_PORT, NULL};
-
-  ctx = mg_start(callback, options);
-  pause();
-  return 0;
-}*/
-
-SSI_END
-
- - -
-ssi_end
-
-HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Length: 115 -X-Real-IP: 10.30.1.131 -Set-Cookie: ulib.s1=; expires=Sat, 23 Sep 2017 17:06:47 GMT -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353932303726f75bb9c9a10a2c0f7f52ac8fecaf2a74; expires=Mon, 25 Sep 2017 17:06:47 GMT -Set-Cookie: TestCookie=pippo -Content-Type: text/html; charset=iso-8859-1 - -UID = Steve Johnson -HTTP_COOKIE = name1=value1, name2=value2; name3=value3, name4=value4 -ULIB_SESSION = -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Encoding: gzip -Content-Type: text/html; charset=UTF-8 -Content-Length: 718 - -UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Length: 211 -Content-Type: text/html - -

Esempio di CGI

scritto in linguaggio rubyHTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Length: 72 -Content-Type: application/jsonrequest - -{"user":"doctoravatar@penzance.com","t":"vlIj","forecast":7,"zip":94089}HTTP/1.1 302 Moved Temporarily -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Location: http://10.30.1.131/?ticket=U2FsdGVkX1+/AYaicDGB1EReb1+EErzD/ar1Wrv8wrXpYEj9RoN3RlzFWK5ykUyRMg4AicmBMNQsUQDWZENgiQ -X-Powered-By: PHP/5.2.6-pl7-gentoo -X-Powered-By: PHP/5.2.6-pl7-gentoo -Content-Length: 365 - - - -302 Moved Temporarily - -

Moved Temporarily

-

The document has moved here

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/uploader" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:47 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/uploader" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/uploader" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:06:51 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 272 - - - -400 Bad Request - -

Bad Request

-

Your requested URL "/" was a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/test" was not found on this server

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: image/x-icon -Expires: Mon, 24 Sep 2018 17:06:46 GMT -Last-Modified: Fri, 24 Jul 2009 16:01:29 GMT -Content-Length: 318 - -(( Fi " " " " " 33333HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/dumbfuck" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 273 - - - -404 Not Found - -

Not Found

-

Your requested URL "/get_no_headers_no_body/world" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 267 - - - -404 Not Found - -

Not Found

-

Your requested URL "/get_one_header_no_body" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 280 - - - -404 Not Found - -

Not Found

-

Your requested URL "/get_funky_content_length_body_hello" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 269 - - - -404 Not Found - -

Not Found

-

Your requested URL "/post_identity_body_world" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 271 - - - -404 Not Found - -

Not Found

-

Your requested URL "/post_chunked_all_your_base" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 269 - - - -404 Not Found - -

Not Found

-

Your requested URL "/two_chunks_mult_zero_end" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 271 - - - -404 Not Found - -

Not Found

-

Your requested URL "/chunked_w_trailing_headers" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 276 - - - -404 Not Found - -

Not Found

-

Your requested URL "/chunked_w_bullshit_after_length" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/test" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/test.cgi" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/test" was not found on this server

-
-
ULib Server
- -HTTP/1.1 101 Switching Protocols -Upgrade: websocket -Connection: Upgrade -Sec-WebSocket-Accept: +RIhmNa6feUAKW0sMFZ0xw== - -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/demo" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 245 - - - -404 Not Found - -

Not Found

-

Your requested URL "*" was not found on this server

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:06:55 GMT -Last-Modified: Wed, 06 Jul 2011 16:28:46 GMT -Content-Length: 1669 - - - - Welcome to ULib Web Server! - - - - -
-

Welcome to ULib Web Server!

-
- - -
- - - - - - -
- - -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:55 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/file.txt" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:59 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 252 - - - -404 Not Found - -

Not Found

-

Your requested URL "/bag.xml" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:06:59 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 254 - - - -404 Not Found - -

Not Found

-

Your requested URL "/help.html" was not found on this server

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:03 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 13 - -Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:03 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 13 - -Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:03 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 13 - -Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:03 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 13 - -Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:03 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 13 - -Hello, World!HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:03 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 255 - - - -404 Not Found - -

Not Found

-

Your requested URL "/plaintext1" was not found on this server

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:03 GMT -Server: ULib -Connection: close -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353932323326ac9677299fea72a5e693bbadc14b5811; expires=Mon, 25 Sep 2017 17:07:03 GMT -Content-Length: 0 - - - - - - - - - - - - - -
Your file have been uploaded!

- File #1: /uploads/vuoto.txt
-
-
- Go Back
- - - - - - - - - - - - - - -
Your file have been uploaded!

- File #1: /uploads/operazione.xml
-
-
- Go Back
- - -HTTP/1.1 505 HTTP Version Not Supported -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Length: 0 - -HTTP/1.1 501 Not Implemented -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 256 - - - -501 Not Implemented - -

Not Implemented

-

Sorry, the method you requested is not implemented

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 411 Length Required -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Length: 0 - -HTTP/1.1 413 Request Entity Too Large -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Length: 0 - -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:06 GMT -Server: ULib -Connection: close -Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT, COPY, MOVE, LOCK, UNLOCK, MKCOL, PROPFIND, PATCH, PURGE, MERGE, REPORT, CHECKOUT, MKACTIVITY, NOTIFY, MSEARCH, SUBSCRIBE, UNSUBSCRIBE -Content-Length: 0 - -HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -WWW-Authenticate: Basic realm="Protected Area" -Content-Length: 444 - - - -401 Authorization Required - -

Authorization Required

-

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 257 - -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 344 - - - -404 Not Found - -

Not Found

-

Your requested URL "/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" was not found on this server

-
-
ULib Server
- -HTTP/1.1 403 Forbidden -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 304 - - - -403 Forbidden - -

Forbidden

-

You don't have permission to access "/../../../../linux/include/generated/uapi/linux/version.h" on this server

-
-
ULib Server
- -HTTP/1.1 500 Internal Server Error -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 548 - - - -500 Internal Server Error - -

Internal Server Error

-

The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 21 - -pippo pluto paperino -HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -WWW-Authenticate: Basic realm="Protected Area" -Content-Length: 444 - - - -401 Authorization Required - -

Authorization Required

-

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Expires: Mon, 24 Sep 2018 17:07:06 GMT -Last-Modified: Fri, 20 Feb 2009 14:50:49 GMT -Content-Length: 63 - -this is the web_server testsuite inp/http/data/index.html file -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Range: bytes 0-63/64 -Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:07:08 GMT -Last-Modified: Sun, 24 Sep 2017 17:06:47 GMT -Content-Length: 64 - -123456781234567 -345678903456789 -34567892345678 -012345670123456 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Range: bytes 0-31/64 -Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:07:08 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:08 GMT -Content-Length: 32 - -123456781234567 -345678903456789 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Range: bytes 32-63/64 -Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:07:08 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:08 GMT -Content-Length: 32 - -34567892345678 -012345670123456 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Range: bytes 32-63/64 -Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:07:08 GMT -Last-Modified: Sun, 24 Sep 2017 17:06:47 GMT -Content-Length: 32 - -234567892345678 -012345670123456 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Length: 230 -Content-Type: multipart/byteranges; boundary="=_13258695987027747056" - - ---=_13258695987027747056 -Content-Range: bytes 0-0/64 -Content-Type: text/html; charset=UTF-8 - -1 ---=_13258695987027747056 -Content-Range: bytes 63-63/64 -Content-Type: text/html; charset=UTF-8 - - - ---=_13258695987027747056--HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Range: bytes 50-63/64 -Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:07:08 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:08 GMT -Content-Length: 14 - -2345670123456 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Length: 250 -Content-Type: multipart/byteranges; boundary="=_13258695987027747057" - - ---=_13258695987027747057 -Content-Range: bytes 10-19/64 -Content-Type: text/html; charset=UTF-8 - -34567 -3456 ---=_13258695987027747057 -Content-Range: bytes 50-59/64 -Content-Type: text/html; charset=UTF-8 - -2345670123 ---=_13258695987027747057--HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:07:08 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:08 GMT -Content-Length: 64 - -123456781234567 -345678903456789 -234567892345678 -012345670123456 -HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Length: 0 - -HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Length: 0 - -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Encoding: gzip -Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 295 - -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 561 - -Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes24/09/2017 17:06:46

ULib Server
HTTP/1.1 304 Not Modified -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Length: 0 - -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 1669 - - - - Welcome to ULib Web Server! - - - - -
-

Welcome to ULib Web Server!

-
- - -
- - - - - - -
- - -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 1898 - -
-ssi_begin
-This page last updated: Friday, 30-Oct-2015 15:20:57 GMT
-
- -1: ok - - -2: ok - - -3: ok - - -4: ok - - -
-SSI_BEGIN
-Name of user: nobody
-
-Document name: ssi1.shtml
-
-Document URI: /SSI/ssi1.shtml
-
-It's now: Sunday, 24-Sep-2017 17:07:08 GMT
-
-It's now: Sunday, 24-Sep-2017 19:07:08 CEST
-
-This page is:     179 Bytes
-
-This file last modified: August 12, 2015
-
-You're using: 
-
-$HTTP_X_SENDFILE: 
-
-
-start PRINTENV
---------------
-QUERY_STRING=
-REQUEST_URI=/SSI/ssi1.shtml
-CONTENT_LENGTH=0
-REQUEST_METHOD=GET
-SCRIPT_NAME=/SSI/ssi1.shtml
-SERVER_NAME=stefano
-SERVER_PORT=8080
-HTTP_HOST=10.30.1.131
-SERVER_PROTOCOL=HTTP/1.1
-SERVER_ADDR=192.168.42.60
-DOCUMENT_ROOT=/usr/src/ULib-1.4.2/tests/examples/docroot
-SERVER_SOFTWARE=ULib/1.4.2
-REMOTE_PORT=37464
-REMOTE_ADDR=127.0.0.1
-SESSION_ID=127.0.0.1:0
-REQUEST_ID=127.0.0.1:37464:0
-PWD=/usr/src/ULib-1.4.2/tests/examples/docroot
-PATH=/usr/local/bin:/usr/bin:/bin
-HTTP_X_SENDFILE=puppamelo
---------------
-end   PRINTENV
- 
-
-start LS
---------------
-total 392
-drwxr-xr-x 3 nobody nobody   4096 Oct 30  2015 .
-drwxr-xr-x 8 nobody nobody 368640 Sep 24 19:07 ..
-drwxr-xr-x 3 nobody nobody   4096 Aug 25  2014 earth
--rw-r--r-- 1 nobody nobody    179 Aug 12  2015 embed.c
--rw-r--r-- 3 nobody nobody    160 Mar 28  2011 index.shtml
--rw-r--r-- 1 nobody nobody    352 Nov  8  2011 menu.shtml
--rw-r--r-- 1 nobody nobody    917 Oct 30  2015 ssi1.shtml
--rw-r--r-- 1 nobody nobody   1190 Aug 25  2014 ssi2.shtml
---------------
-end   LS
-
-start CGI
---------------
-Content-Type: text/html
-
-You're not using Microsoft® Internet Explorer® 5.0
---------------
-end   CGI
-SSI include failed!
-SSI include failed!
-/*int main(void) {
-  struct mg_context* ctx;
-  const char *options[] = {"listening_ports", LISTENING_PORT, NULL};
-
-  ctx = mg_start(callback, options);
-  pause();
-  return 0;
-}*/
-
-SSI_END
-
- - -
-ssi_end
-
-HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Length: 115 -X-Real-IP: 10.30.1.131 -Set-Cookie: ulib.s1=; expires=Sat, 23 Sep 2017 17:07:08 GMT -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353932323826627458ac5153c9b0224e70b5334d22a0; expires=Mon, 25 Sep 2017 17:07:08 GMT -Set-Cookie: TestCookie=pippo -Content-Type: text/html; charset=iso-8859-1 - -UID = Steve Johnson -HTTP_COOKIE = name1=value1, name2=value2; name3=value3, name4=value4 -ULIB_SESSION = -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Encoding: gzip -Content-Type: text/html; charset=UTF-8 -Content-Length: 718 - -UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Length: 211 -Content-Type: text/html - -

Esempio di CGI

scritto in linguaggio rubyHTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Length: 72 -Content-Type: application/jsonrequest - -{"user":"doctoravatar@penzance.com","t":"vlIj","forecast":7,"zip":94089}HTTP/1.1 302 Moved Temporarily -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Location: http://10.30.1.131/?ticket=U2FsdGVkX1+/AYaicDGB1EReb1+EErzD/ar1Wrv8wrXpYEj9RoN3RlzFWK5ykUyRMg4AicmBMNQsUQDWZENgiQ -X-Powered-By: PHP/5.2.6-pl7-gentoo -X-Powered-By: PHP/5.2.6-pl7-gentoo -Content-Length: 365 - - - -302 Moved Temporarily - -

Moved Temporarily

-

The document has moved here

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/uploader" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:08 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/uploader" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/uploader" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/info" was not found on this server

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:12 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 272 - - - -400 Bad Request - -

Bad Request

-

Your requested URL "/" was a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/test" was not found on this server

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: image/x-icon -Expires: Mon, 24 Sep 2018 17:07:07 GMT -Last-Modified: Fri, 24 Jul 2009 16:01:29 GMT -Content-Length: 318 - -(( Fi " " " " " 33333HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/dumbfuck" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 273 - - - -404 Not Found - -

Not Found

-

Your requested URL "/get_no_headers_no_body/world" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 267 - - - -404 Not Found - -

Not Found

-

Your requested URL "/get_one_header_no_body" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 280 - - - -404 Not Found - -

Not Found

-

Your requested URL "/get_funky_content_length_body_hello" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 269 - - - -404 Not Found - -

Not Found

-

Your requested URL "/post_identity_body_world" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 271 - - - -404 Not Found - -

Not Found

-

Your requested URL "/post_chunked_all_your_base" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 269 - - - -404 Not Found - -

Not Found

-

Your requested URL "/two_chunks_mult_zero_end" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 271 - - - -404 Not Found - -

Not Found

-

Your requested URL "/chunked_w_trailing_headers" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 276 - - - -404 Not Found - -

Not Found

-

Your requested URL "/chunked_w_bullshit_after_length" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/test" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/test.cgi" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/test" was not found on this server

-
-
ULib Server
- -HTTP/1.1 101 Switching Protocols -Upgrade: websocket -Connection: Upgrade -Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= - -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/demo" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 245 - - - -404 Not Found - -

Not Found

-

Your requested URL "*" was not found on this server

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:07:16 GMT -Last-Modified: Wed, 06 Jul 2011 16:28:46 GMT -Content-Length: 1669 - - - - Welcome to ULib Web Server! - - - - -
-

Welcome to ULib Web Server!

-
- - -
- - - - - - -
- - -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:16 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/file.txt" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:20 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 252 - - - -404 Not Found - -

Not Found

-

Your requested URL "/bag.xml" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:20 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 254 - - - -404 Not Found - -

Not Found

-

Your requested URL "/help.html" was not found on this server

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:24 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 13 - -Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:24 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 13 - -Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:24 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 13 - -Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:24 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 13 - -Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:24 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 13 - -Hello, World!HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:24 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 255 - - - -404 Not Found - -

Not Found

-

Your requested URL "/plaintext1" was not found on this server

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:24 GMT -Server: ULib -Connection: close -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353932343426cad21a3c0386ea598dbcb6248b431985; expires=Mon, 25 Sep 2017 17:07:24 GMT -Content-Length: 0 - - - - - - - - - - - - - -
Your file have been uploaded!

- File #1: /uploads/vuoto.txt
-
-
- Go Back
- - - - - - - - - - - - - - -
Your file have been uploaded!

- File #1: /uploads/operazione.xml
-
-
- Go Back
- - -HTTP/1.1 505 HTTP Version Not Supported -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Length: 0 - -HTTP/1.1 501 Not Implemented -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 256 - - - -501 Not Implemented - -

Not Implemented

-

Sorry, the method you requested is not implemented

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 411 Length Required -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Length: 0 - -HTTP/1.1 413 Request Entity Too Large -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Length: 0 - -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT, COPY, MOVE, LOCK, UNLOCK, MKCOL, PROPFIND, PATCH, PURGE, MERGE, REPORT, CHECKOUT, MKACTIVITY, NOTIFY, MSEARCH, SUBSCRIBE, UNSUBSCRIBE -Content-Length: 0 - -HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -WWW-Authenticate: Basic realm="Protected Area" -Content-Length: 444 - - - -401 Authorization Required - -

Authorization Required

-

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 257 - -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 344 - - - -404 Not Found - -

Not Found

-

Your requested URL "/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" was not found on this server

-
-
ULib Server
- -HTTP/1.1 403 Forbidden -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 304 - - - -403 Forbidden - -

Forbidden

-

You don't have permission to access "/../../../../linux/include/generated/uapi/linux/version.h" on this server

-
-
ULib Server
- -HTTP/1.1 500 Internal Server Error -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 548 - - - -500 Internal Server Error - -

Internal Server Error

-

The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 21 - -pippo pluto paperino -HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -WWW-Authenticate: Basic realm="Protected Area" -Content-Length: 444 - - - -401 Authorization Required - -

Authorization Required

-

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Expires: Mon, 24 Sep 2018 17:07:27 GMT -Last-Modified: Fri, 20 Feb 2009 14:50:49 GMT -Content-Length: 63 - -this is the web_server testsuite inp/http/data/index.html file -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Content-Range: bytes 0-63/64 -Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:07:28 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:08 GMT -Content-Length: 64 - -123456781234567 -345678903456789 -34567892345678 -012345670123456 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Content-Range: bytes 0-31/64 -Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:07:28 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:28 GMT -Content-Length: 32 - -123456781234567 -345678903456789 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Content-Range: bytes 32-63/64 -Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:07:28 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:28 GMT -Content-Length: 32 - -34567892345678 -012345670123456 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:28 GMT -Server: ULib -Content-Range: bytes 32-63/64 -Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:07:28 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:08 GMT -Content-Length: 32 - -234567892345678 -012345670123456 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Length: 227 -Content-Type: multipart/byteranges; boundary="=_5476475829813381992" +Content-Type: multipart/byteranges; boundary="=_4611784770216147068" ---=_5476475829813381992 +--=_4611784770216147068 Content-Range: bytes 0-0/64 Content-Type: text/html; charset=UTF-8 1 ---=_5476475829813381992 +--=_4611784770216147068 Content-Range: bytes 63-63/64 Content-Type: text/html; charset=UTF-8 ---=_5476475829813381992--HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:28 GMT +--=_4611784770216147068--HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Range: bytes 50-63/64 Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:07:28 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:28 GMT +Expires: Tue, 02 Oct 2018 14:52:23 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 14 2345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Length: 247 -Content-Type: multipart/byteranges; boundary="=_5476475829813381993" +Content-Type: multipart/byteranges; boundary="=_4611784770216147069" ---=_5476475829813381993 +--=_4611784770216147069 Content-Range: bytes 10-19/64 Content-Type: text/html; charset=UTF-8 34567 3456 ---=_5476475829813381993 +--=_4611784770216147069 Content-Range: bytes 50-59/64 Content-Type: text/html; charset=UTF-8 2345670123 ---=_5476475829813381993--HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:28 GMT +--=_4611784770216147069--HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:07:28 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:28 GMT +Expires: Tue, 02 Oct 2018 14:52:23 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 64 123456781234567 @@ -3206,37 +388,37 @@ Content-Length: 64 234567892345678 012345670123456 HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Length: 0 HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Length: 0 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 295 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 292 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 561 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 558 -Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes24/09/2017 17:06:46

ULib Server
HTTP/1.1 304 Not Modified -Date: Sun, 24 Sep 2017 17:07:28 GMT +Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes02/10/2017 14:52:22

ULib Server
HTTP/1.1 304 Not Modified +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Length: 0 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 1669 @@ -3283,7 +465,7 @@ Content-Length: 1669 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 1898 @@ -3313,9 +495,9 @@ Document name: ssi1.shtml Document URI: /SSI/ssi1.shtml -It's now: Sunday, 24-Sep-2017 17:07:28 GMT +It's now: Monday, 02-Oct-2017 14:52:23 GMT -It's now: Sunday, 24-Sep-2017 19:07:28 CEST +It's now: Monday, 02-Oct-2017 16:52:23 CEST This page is: 179 Bytes @@ -3337,13 +519,13 @@ SERVER_NAME=stefano SERVER_PORT=8080 HTTP_HOST=10.30.1.131 SERVER_PROTOCOL=HTTP/1.1 -SERVER_ADDR=192.168.42.60 +SERVER_ADDR=192.168.42.12 DOCUMENT_ROOT=/usr/src/ULib-1.4.2/tests/examples/docroot SERVER_SOFTWARE=ULib/1.4.2 -REMOTE_PORT=38040 +REMOTE_PORT=40378 REMOTE_ADDR=127.0.0.1 SESSION_ID=127.0.0.1:0 -REQUEST_ID=127.0.0.1:38040:0 +REQUEST_ID=127.0.0.1:40378:0 PWD=/usr/src/ULib-1.4.2/tests/examples/docroot PATH=/usr/local/bin:/usr/bin:/bin HTTP_X_SENDFILE=puppamelo @@ -3355,7 +537,7 @@ start LS -------------- total 392 drwxr-xr-x 3 nobody nobody 4096 Oct 30 2015 . -drwxr-xr-x 8 nobody nobody 368640 Sep 24 19:07 .. +drwxr-xr-x 8 nobody nobody 368640 Oct 2 16:52 .. drwxr-xr-x 3 nobody nobody 4096 Aug 25 2014 earth -rw-r--r-- 1 nobody nobody 179 Aug 12 2015 embed.c -rw-r--r-- 3 nobody nobody 160 Mar 28 2011 index.shtml @@ -3391,12 +573,12 @@ SSI_END ssi_end HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Length: 115 X-Real-IP: 10.30.1.131 -Set-Cookie: ulib.s1=; expires=Sat, 23 Sep 2017 17:07:28 GMT -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353036333539323438262034ec2193795204e6c2a88e8cfe2f78; expires=Mon, 25 Sep 2017 17:07:28 GMT +Set-Cookie: ulib.s1=; expires=Sun, 01 Oct 2017 14:52:23 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303730343233343326f06a10f1701f14cca47f22b45ea4e03a; expires=Tue, 03 Oct 2017 14:52:23 GMT Set-Cookie: TestCookie=pippo Content-Type: text/html; charset=iso-8859-1 @@ -3404,26 +586,27 @@ UID = Steve Johnson HTTP_COOKIE = name1=value1, name2=value2; name3=value3, name4=value4 ULIB_SESSION = HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 Content-Length: 718 -UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:28 GMT +UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib -Content-Length: 211 +Content-Encoding: gzip +Content-Length: 186 Content-Type: text/html -

Esempio di CGI

scritto in linguaggio rubyHTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:28 GMT +MK @mz+]mW)X4_ܴ;s>ڹf~z !~aL}@ XTBY  VM d';r%7^vPJpRQbJu [ 8Y'/GV.kي)bZ 7 _ Y'HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:52:23 GMT Server: ULib Content-Length: 72 Content-Type: application/jsonrequest {"user":"doctoravatar@penzance.com","t":"vlIj","forecast":7,"zip":94089}HTTP/1.1 302 Moved Temporarily -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -3442,7 +625,7 @@ Content-Length: 365
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -3457,7 +640,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3472,7 +655,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3487,7 +670,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3502,7 +685,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3517,7 +700,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3532,7 +715,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3547,7 +730,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3562,7 +745,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3577,7 +760,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3592,7 +775,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:28 GMT +Date: Mon, 02 Oct 2017 14:52:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3607,7 +790,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -3622,7 +805,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -3637,7 +820,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3652,7 +835,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3667,7 +850,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3682,7 +865,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3697,7 +880,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3712,7 +895,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3727,7 +910,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3742,7 +925,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3757,7 +940,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3772,7 +955,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3787,7 +970,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:32 GMT +Date: Mon, 02 Oct 2017 14:52:28 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -3803,7 +986,7 @@ Content-Length: 272
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3818,15 +1001,15 @@ Content-Length: 249
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib -Content-Type: image/x-icon -Expires: Mon, 24 Sep 2018 17:07:27 GMT -Last-Modified: Fri, 24 Jul 2009 16:01:29 GMT +Content-Type: image/x-icon; charset=binary +Expires: Tue, 15 Apr 2050 14:40:40 GMT +Last-Modified: Mon, 15 Apr 2017 14:36:13 GMT Content-Length: 318 (( Fi " " " " " 33333HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -3841,7 +1024,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 273 @@ -3856,7 +1039,7 @@ Content-Length: 273
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 267 @@ -3871,7 +1054,7 @@ Content-Length: 267
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 280 @@ -3886,7 +1069,7 @@ Content-Length: 280
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 269 @@ -3901,7 +1084,7 @@ Content-Length: 269
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 271 @@ -3916,7 +1099,7 @@ Content-Length: 271
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 269 @@ -3931,7 +1114,7 @@ Content-Length: 269
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 271 @@ -3946,7 +1129,7 @@ Content-Length: 271
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 276 @@ -3961,7 +1144,7 @@ Content-Length: 276
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -3976,7 +1159,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -3991,7 +1174,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -4008,10 +1191,10 @@ Content-Length: 249 HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade -Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= +Sec-WebSocket-Accept: FKZI51TGjivTfri3JfTS7g== HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -4026,7 +1209,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 245 @@ -4041,10 +1224,10 @@ Content-Length: 245
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib -Content-Type: text/html; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:07:36 GMT +Content-Type: text/html; charset=UTF-8 +Expires: Tue, 02 Oct 2018 14:52:22 GMT Last-Modified: Wed, 06 Jul 2011 16:28:46 GMT Content-Length: 1669 @@ -4090,7 +1273,7 @@ Content-Length: 1669 HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:36 GMT +Date: Mon, 02 Oct 2017 14:52:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -4105,7 +1288,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:40 GMT +Date: Mon, 02 Oct 2017 14:52:36 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 252 @@ -4120,7 +1303,7 @@ Content-Length: 252
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:40 GMT +Date: Mon, 02 Oct 2017 14:52:36 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 254 @@ -4135,37 +1318,37 @@ Content-Length: 254
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:44 GMT +Date: Mon, 02 Oct 2017 14:52:40 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:44 GMT +Date: Mon, 02 Oct 2017 14:52:40 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:44 GMT +Date: Mon, 02 Oct 2017 14:52:40 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:44 GMT +Date: Mon, 02 Oct 2017 14:52:40 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:44 GMT +Date: Mon, 02 Oct 2017 14:52:40 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:44 GMT +Date: Mon, 02 Oct 2017 14:52:40 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4181,10 +1364,10 @@ Content-Length: 255
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:44 GMT +Date: Mon, 02 Oct 2017 14:52:40 GMT Server: ULib Connection: close -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e26313530363335393236342645bfd2551087fd933206de15eef75556; expires=Mon, 25 Sep 2017 17:07:44 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353037303432333630261fb4209e39e570ca0bdec0afb0200f3f; expires=Tue, 03 Oct 2017 14:52:40 GMT Content-Length: 0 @@ -4226,13 +1409,13 @@ Content-Length: 0 HTTP/1.1 505 HTTP Version Not Supported -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 501 Not Implemented -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4248,7 +1431,7 @@ Content-Length: 256
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4264,7 +1447,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4280,7 +1463,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4296,19 +1479,19 @@ Content-Length: 263
ULib Server
HTTP/1.1 411 Length Required -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 413 Request Entity Too Large -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4324,7 +1507,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4340,7 +1523,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4356,7 +1539,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4372,7 +1555,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4388,7 +1571,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4404,14 +1587,14 @@ Content-Length: 263
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT, COPY, MOVE, LOCK, UNLOCK, MKCOL, PROPFIND, PATCH, PURGE, MERGE, REPORT, CHECKOUT, MKACTIVITY, NOTIFY, MSEARCH, SUBSCRIBE, UNSUBSCRIBE Content-Length: 0 HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4428,13 +1611,13 @@ Content-Length: 444
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 257 HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 344 @@ -4449,7 +1632,7 @@ Content-Length: 344
ULib Server
HTTP/1.1 403 Forbidden -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 304 @@ -4464,7 +1647,7 @@ Content-Length: 304
ULib Server
HTTP/1.1 500 Internal Server Error -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 548 @@ -4479,14 +1662,14 @@ Content-Length: 548
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 21 pippo pluto paperino HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 WWW-Authenticate: Basic realm="Protected Area" @@ -4502,21 +1685,21 @@ Content-Length: 444
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 -Expires: Mon, 24 Sep 2018 17:07:47 GMT +Expires: Tue, 02 Oct 2018 14:52:43 GMT Last-Modified: Fri, 20 Feb 2009 14:50:49 GMT Content-Length: 63 this is the web_server testsuite inp/http/data/index.html file HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Range: bytes 0-63/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:07:48 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:28 GMT +Expires: Tue, 02 Oct 2018 14:52:44 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 64 123456781234567 @@ -4524,90 +1707,90 @@ Content-Length: 64 34567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Range: bytes 0-31/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:07:48 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:48 GMT +Expires: Tue, 02 Oct 2018 14:52:44 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 123456781234567 345678903456789 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Range: bytes 32-63/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:07:48 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:48 GMT +Expires: Tue, 02 Oct 2018 14:52:44 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 34567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Range: bytes 32-63/64 Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:07:48 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:28 GMT +Expires: Tue, 02 Oct 2018 14:52:44 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 234567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Length: 230 -Content-Type: multipart/byteranges; boundary="=_16213057342737077886" +Content-Type: multipart/byteranges; boundary="=_17149806132065603242" ---=_16213057342737077886 +--=_17149806132065603242 Content-Range: bytes 0-0/64 Content-Type: text/html; charset=UTF-8 1 ---=_16213057342737077886 +--=_17149806132065603242 Content-Range: bytes 63-63/64 Content-Type: text/html; charset=UTF-8 ---=_16213057342737077886--HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:48 GMT +--=_17149806132065603242--HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Range: bytes 50-63/64 Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:07:48 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:48 GMT +Expires: Tue, 02 Oct 2018 14:52:44 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 14 2345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Length: 250 -Content-Type: multipart/byteranges; boundary="=_16213057342737077887" +Content-Type: multipart/byteranges; boundary="=_17149806132065603243" ---=_16213057342737077887 +--=_17149806132065603243 Content-Range: bytes 10-19/64 Content-Type: text/html; charset=UTF-8 34567 3456 ---=_16213057342737077887 +--=_17149806132065603243 Content-Range: bytes 50-59/64 Content-Type: text/html; charset=UTF-8 2345670123 ---=_16213057342737077887--HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:48 GMT +--=_17149806132065603243--HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:07:48 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:48 GMT +Expires: Tue, 02 Oct 2018 14:52:44 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 64 123456781234567 @@ -4615,37 +1798,37 @@ Content-Length: 64 234567892345678 012345670123456 HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Length: 0 HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Length: 0 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 295 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 292 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 561 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 558 -Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes24/09/2017 17:06:46

ULib Server
HTTP/1.1 304 Not Modified -Date: Sun, 24 Sep 2017 17:07:48 GMT +Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes02/10/2017 14:52:22

ULib Server
HTTP/1.1 304 Not Modified +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Length: 0 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 1669 @@ -4692,7 +1875,7 @@ Content-Length: 1669 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 1898 @@ -4722,9 +1905,9 @@ Document name: ssi1.shtml Document URI: /SSI/ssi1.shtml -It's now: Sunday, 24-Sep-2017 17:07:48 GMT +It's now: Monday, 02-Oct-2017 14:52:44 GMT -It's now: Sunday, 24-Sep-2017 19:07:48 CEST +It's now: Monday, 02-Oct-2017 16:52:44 CEST This page is: 179 Bytes @@ -4746,13 +1929,13 @@ SERVER_NAME=stefano SERVER_PORT=8080 HTTP_HOST=10.30.1.131 SERVER_PROTOCOL=HTTP/1.1 -SERVER_ADDR=192.168.42.60 +SERVER_ADDR=192.168.42.12 DOCUMENT_ROOT=/usr/src/ULib-1.4.2/tests/examples/docroot SERVER_SOFTWARE=ULib/1.4.2 -REMOTE_PORT=38700 +REMOTE_PORT=41190 REMOTE_ADDR=127.0.0.1 SESSION_ID=127.0.0.1:0 -REQUEST_ID=127.0.0.1:38700:0 +REQUEST_ID=127.0.0.1:41190:0 PWD=/usr/src/ULib-1.4.2/tests/examples/docroot PATH=/usr/local/bin:/usr/bin:/bin HTTP_X_SENDFILE=puppamelo @@ -4764,7 +1947,7 @@ start LS -------------- total 392 drwxr-xr-x 3 nobody nobody 4096 Oct 30 2015 . -drwxr-xr-x 8 nobody nobody 368640 Sep 24 19:07 .. +drwxr-xr-x 8 nobody nobody 368640 Oct 2 16:52 .. drwxr-xr-x 3 nobody nobody 4096 Aug 25 2014 earth -rw-r--r-- 1 nobody nobody 179 Aug 12 2015 embed.c -rw-r--r-- 3 nobody nobody 160 Mar 28 2011 index.shtml @@ -4800,12 +1983,12 @@ SSI_END ssi_end HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Length: 115 X-Real-IP: 10.30.1.131 -Set-Cookie: ulib.s1=; expires=Sat, 23 Sep 2017 17:07:48 GMT -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353932363826ec316a62ef16e11953c4c50277f93ceb; expires=Mon, 25 Sep 2017 17:07:48 GMT +Set-Cookie: ulib.s1=; expires=Sun, 01 Oct 2017 14:52:44 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303730343233363426a1fdd13fbf0004f55dcb494ec961d01c; expires=Tue, 03 Oct 2017 14:52:44 GMT Set-Cookie: TestCookie=pippo Content-Type: text/html; charset=iso-8859-1 @@ -4813,26 +1996,27 @@ UID = Steve Johnson HTTP_COOKIE = name1=value1, name2=value2; name3=value3, name4=value4 ULIB_SESSION = HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 Content-Length: 718 -UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:48 GMT +UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib -Content-Length: 211 +Content-Encoding: gzip +Content-Length: 186 Content-Type: text/html -

Esempio di CGI

scritto in linguaggio rubyHTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:48 GMT +MK @mz+]mW)X4_ܴ;s>ڹf~z !~aL}@ XTBY  VM d';r%7^vPJpRQbJu [ 8Y'/GV.kي)bZ 7 _ Y'HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Length: 72 Content-Type: application/jsonrequest {"user":"doctoravatar@penzance.com","t":"vlIj","forecast":7,"zip":94089}HTTP/1.1 302 Moved Temporarily -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -4851,7 +2035,7 @@ Content-Length: 365
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -4866,7 +2050,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -4881,7 +2065,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -4896,7 +2080,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -4911,7 +2095,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -4926,7 +2110,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -4941,7 +2125,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -4956,7 +2140,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -4971,7 +2155,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -4986,7 +2170,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5001,7 +2185,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:48 GMT +Date: Mon, 02 Oct 2017 14:52:44 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5016,7 +2200,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -5031,7 +2215,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -5046,7 +2230,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5061,7 +2245,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5076,7 +2260,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5091,7 +2275,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5106,7 +2290,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5121,7 +2305,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5136,7 +2320,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5151,7 +2335,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5166,7 +2350,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5181,7 +2365,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5196,7 +2380,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:07:52 GMT +Date: Mon, 02 Oct 2017 14:52:48 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5212,7 +2396,7 @@ Content-Length: 272
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5227,15 +2411,15 @@ Content-Length: 249
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib -Content-Type: image/x-icon -Expires: Mon, 24 Sep 2018 17:07:47 GMT -Last-Modified: Fri, 24 Jul 2009 16:01:29 GMT +Content-Type: image/x-icon; charset=binary +Expires: Tue, 15 Apr 2050 14:40:40 GMT +Last-Modified: Mon, 15 Apr 2017 14:36:13 GMT Content-Length: 318 (( Fi " " " " " 33333HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -5250,7 +2434,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 273 @@ -5265,7 +2449,7 @@ Content-Length: 273
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 267 @@ -5280,7 +2464,7 @@ Content-Length: 267
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 280 @@ -5295,7 +2479,7 @@ Content-Length: 280
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 269 @@ -5310,7 +2494,7 @@ Content-Length: 269
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 271 @@ -5325,7 +2509,7 @@ Content-Length: 271
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 269 @@ -5340,7 +2524,7 @@ Content-Length: 269
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 271 @@ -5355,7 +2539,7 @@ Content-Length: 271
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 276 @@ -5370,7 +2554,7 @@ Content-Length: 276
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5385,7 +2569,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -5400,7 +2584,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5420,7 +2604,7 @@ Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -5435,7 +2619,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 245 @@ -5450,10 +2634,10 @@ Content-Length: 245
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib -Content-Type: text/html; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:07:56 GMT +Content-Type: text/html; charset=UTF-8 +Expires: Tue, 02 Oct 2018 14:52:43 GMT Last-Modified: Wed, 06 Jul 2011 16:28:46 GMT Content-Length: 1669 @@ -5499,7 +2683,7 @@ Content-Length: 1669 HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:07:56 GMT +Date: Mon, 02 Oct 2017 14:52:52 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -5514,7 +2698,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:00 GMT +Date: Mon, 02 Oct 2017 14:52:56 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 252 @@ -5529,7 +2713,7 @@ Content-Length: 252
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:00 GMT +Date: Mon, 02 Oct 2017 14:52:56 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 254 @@ -5544,37 +2728,37 @@ Content-Length: 254
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:04 GMT +Date: Mon, 02 Oct 2017 14:53:00 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:04 GMT +Date: Mon, 02 Oct 2017 14:53:00 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:04 GMT +Date: Mon, 02 Oct 2017 14:53:00 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:04 GMT +Date: Mon, 02 Oct 2017 14:53:00 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:04 GMT +Date: Mon, 02 Oct 2017 14:53:00 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:04 GMT +Date: Mon, 02 Oct 2017 14:53:00 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5590,10 +2774,10 @@ Content-Length: 255
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:04 GMT +Date: Mon, 02 Oct 2017 14:53:00 GMT Server: ULib Connection: close -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353036333539323834269b02873280b7762d864634d8c5934f6f; expires=Mon, 25 Sep 2017 17:08:04 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303730343233383026285f6047db1c137ff20e17ab1a27ad0e; expires=Tue, 03 Oct 2017 14:53:00 GMT Content-Length: 0 @@ -5635,13 +2819,13 @@ Content-Length: 0 HTTP/1.1 505 HTTP Version Not Supported -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 501 Not Implemented -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5657,7 +2841,7 @@ Content-Length: 256
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5673,7 +2857,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5689,7 +2873,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5705,19 +2889,19 @@ Content-Length: 263
ULib Server
HTTP/1.1 411 Length Required -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 413 Request Entity Too Large -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5733,7 +2917,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5749,7 +2933,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5765,7 +2949,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5781,7 +2965,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5797,7 +2981,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5813,14 +2997,14 @@ Content-Length: 263
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT, COPY, MOVE, LOCK, UNLOCK, MKCOL, PROPFIND, PATCH, PURGE, MERGE, REPORT, CHECKOUT, MKACTIVITY, NOTIFY, MSEARCH, SUBSCRIBE, UNSUBSCRIBE Content-Length: 0 HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -5837,13 +3021,13 @@ Content-Length: 444
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 257 HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 344 @@ -5858,7 +3042,7 @@ Content-Length: 344
ULib Server
HTTP/1.1 403 Forbidden -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 304 @@ -5873,7 +3057,7 @@ Content-Length: 304
ULib Server
HTTP/1.1 500 Internal Server Error -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 548 @@ -5888,14 +3072,14 @@ Content-Length: 548
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 21 pippo pluto paperino HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 WWW-Authenticate: Basic realm="Protected Area" @@ -5911,21 +3095,21 @@ Content-Length: 444
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 -Expires: Mon, 24 Sep 2018 17:08:07 GMT +Expires: Tue, 02 Oct 2018 14:53:03 GMT Last-Modified: Fri, 20 Feb 2009 14:50:49 GMT Content-Length: 63 this is the web_server testsuite inp/http/data/index.html file HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Range: bytes 0-63/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:08:08 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:48 GMT +Expires: Tue, 02 Oct 2018 14:53:04 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 64 123456781234567 @@ -5933,90 +3117,90 @@ Content-Length: 64 34567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Range: bytes 0-31/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:08:08 GMT -Last-Modified: Sun, 24 Sep 2017 17:08:08 GMT +Expires: Tue, 02 Oct 2018 14:53:04 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 123456781234567 345678903456789 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Range: bytes 32-63/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:08:08 GMT -Last-Modified: Sun, 24 Sep 2017 17:08:08 GMT +Expires: Tue, 02 Oct 2018 14:53:04 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 34567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Range: bytes 32-63/64 Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:08:08 GMT -Last-Modified: Sun, 24 Sep 2017 17:07:48 GMT +Expires: Tue, 02 Oct 2018 14:53:04 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 234567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Length: 227 -Content-Type: multipart/byteranges; boundary="=_9079355532926692592" +Content-Type: multipart/byteranges; boundary="=_9655816351270456544" ---=_9079355532926692592 +--=_9655816351270456544 Content-Range: bytes 0-0/64 Content-Type: text/html; charset=UTF-8 1 ---=_9079355532926692592 +--=_9655816351270456544 Content-Range: bytes 63-63/64 Content-Type: text/html; charset=UTF-8 ---=_9079355532926692592--HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:07 GMT +--=_9655816351270456544--HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Range: bytes 50-63/64 Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:08:08 GMT -Last-Modified: Sun, 24 Sep 2017 17:08:08 GMT +Expires: Tue, 02 Oct 2018 14:53:04 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 14 2345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Length: 247 -Content-Type: multipart/byteranges; boundary="=_9079355532926692593" +Content-Type: multipart/byteranges; boundary="=_9655816351270456545" ---=_9079355532926692593 +--=_9655816351270456545 Content-Range: bytes 10-19/64 Content-Type: text/html; charset=UTF-8 34567 3456 ---=_9079355532926692593 +--=_9655816351270456545 Content-Range: bytes 50-59/64 Content-Type: text/html; charset=UTF-8 2345670123 ---=_9079355532926692593--HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:07 GMT +--=_9655816351270456545--HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:08:08 GMT -Last-Modified: Sun, 24 Sep 2017 17:08:08 GMT +Expires: Tue, 02 Oct 2018 14:53:04 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 64 123456781234567 @@ -6024,37 +3208,37 @@ Content-Length: 64 234567892345678 012345670123456 HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Length: 0 HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Length: 0 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 295 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 292 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:07 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 561 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 558 -Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes24/09/2017 17:06:46

ULib Server
HTTP/1.1 304 Not Modified -Date: Sun, 24 Sep 2017 17:08:07 GMT +Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes02/10/2017 14:52:22

ULib Server
HTTP/1.1 304 Not Modified +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Length: 0 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 1669 @@ -6101,7 +3285,7 @@ Content-Length: 1669 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 1898 @@ -6131,9 +3315,9 @@ Document name: ssi1.shtml Document URI: /SSI/ssi1.shtml -It's now: Sunday, 24-Sep-2017 17:08:09 GMT +It's now: Monday, 02-Oct-2017 14:53:04 GMT -It's now: Sunday, 24-Sep-2017 19:08:09 CEST +It's now: Monday, 02-Oct-2017 16:53:04 CEST This page is: 179 Bytes @@ -6155,13 +3339,13 @@ SERVER_NAME=stefano SERVER_PORT=8080 HTTP_HOST=10.30.1.131 SERVER_PROTOCOL=HTTP/1.1 -SERVER_ADDR=192.168.42.60 +SERVER_ADDR=192.168.42.12 DOCUMENT_ROOT=/usr/src/ULib-1.4.2/tests/examples/docroot SERVER_SOFTWARE=ULib/1.4.2 -REMOTE_PORT=39444 +REMOTE_PORT=42558 REMOTE_ADDR=127.0.0.1 SESSION_ID=127.0.0.1:0 -REQUEST_ID=127.0.0.1:39444:0 +REQUEST_ID=127.0.0.1:42558:0 PWD=/usr/src/ULib-1.4.2/tests/examples/docroot PATH=/usr/local/bin:/usr/bin:/bin HTTP_X_SENDFILE=puppamelo @@ -6173,7 +3357,7 @@ start LS -------------- total 392 drwxr-xr-x 3 nobody nobody 4096 Oct 30 2015 . -drwxr-xr-x 8 nobody nobody 368640 Sep 24 19:08 .. +drwxr-xr-x 8 nobody nobody 368640 Oct 2 16:53 .. drwxr-xr-x 3 nobody nobody 4096 Aug 25 2014 earth -rw-r--r-- 1 nobody nobody 179 Aug 12 2015 embed.c -rw-r--r-- 3 nobody nobody 160 Mar 28 2011 index.shtml @@ -6209,12 +3393,12 @@ SSI_END ssi_end HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Length: 115 X-Real-IP: 10.30.1.131 -Set-Cookie: ulib.s1=; expires=Sat, 23 Sep 2017 17:08:09 GMT -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353932383926a661a433f44662813badc68528f54dd4; expires=Mon, 25 Sep 2017 17:08:09 GMT +Set-Cookie: ulib.s1=; expires=Sun, 01 Oct 2017 14:53:04 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353037303432333834266c30eb674018125cdfef93fe9679c134; expires=Tue, 03 Oct 2017 14:53:04 GMT Set-Cookie: TestCookie=pippo Content-Type: text/html; charset=iso-8859-1 @@ -6222,26 +3406,27 @@ UID = Steve Johnson HTTP_COOKIE = name1=value1, name2=value2; name3=value3, name4=value4 ULIB_SESSION = HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 Content-Length: 718 -UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:09 GMT +UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib -Content-Length: 211 +Content-Encoding: gzip +Content-Length: 186 Content-Type: text/html -

Esempio di CGI

scritto in linguaggio rubyHTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:09 GMT +MK @mz+]mW)X4_ܴ;s>ڹf~z !~aL}@ XTBY  VM d';r%7^vPJpRQbJu [ 8Y'/GV.kي)bZ 7 _ Y'HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Length: 72 Content-Type: application/jsonrequest {"user":"doctoravatar@penzance.com","t":"vlIj","forecast":7,"zip":94089}HTTP/1.1 302 Moved Temporarily -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -6260,7 +3445,7 @@ Content-Length: 365
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -6275,7 +3460,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6290,7 +3475,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6305,7 +3490,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6320,7 +3505,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6335,7 +3520,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6350,7 +3535,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6365,7 +3550,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6380,7 +3565,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6395,7 +3580,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6410,7 +3595,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:09 GMT +Date: Mon, 02 Oct 2017 14:53:04 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6425,7 +3610,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -6440,7 +3625,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -6455,7 +3640,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6470,7 +3655,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6485,7 +3670,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6500,7 +3685,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6515,7 +3700,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6530,7 +3715,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6545,7 +3730,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6560,7 +3745,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6575,7 +3760,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6590,7 +3775,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6605,7 +3790,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:13 GMT +Date: Mon, 02 Oct 2017 14:53:08 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -6621,7 +3806,7 @@ Content-Length: 272
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6636,15 +3821,15 @@ Content-Length: 249
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib -Content-Type: image/x-icon -Expires: Mon, 24 Sep 2018 17:08:08 GMT -Last-Modified: Fri, 24 Jul 2009 16:01:29 GMT +Content-Type: image/x-icon; charset=binary +Expires: Tue, 15 Apr 2050 14:40:40 GMT +Last-Modified: Mon, 15 Apr 2017 14:36:13 GMT Content-Length: 318 (( Fi " " " " " 33333HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -6659,7 +3844,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 273 @@ -6674,7 +3859,7 @@ Content-Length: 273
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 267 @@ -6689,7 +3874,7 @@ Content-Length: 267
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 280 @@ -6704,7 +3889,7 @@ Content-Length: 280
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 269 @@ -6719,7 +3904,7 @@ Content-Length: 269
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 271 @@ -6734,7 +3919,7 @@ Content-Length: 271
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 269 @@ -6749,7 +3934,7 @@ Content-Length: 269
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 271 @@ -6764,7 +3949,7 @@ Content-Length: 271
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 276 @@ -6779,7 +3964,7 @@ Content-Length: 276
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6794,7 +3979,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -6809,7 +3994,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6829,7 +4014,7 @@ Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -6844,7 +4029,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 245 @@ -6859,10 +4044,10 @@ Content-Length: 245
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib -Content-Type: text/html; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:08:17 GMT +Content-Type: text/html; charset=UTF-8 +Expires: Tue, 02 Oct 2018 14:53:03 GMT Last-Modified: Wed, 06 Jul 2011 16:28:46 GMT Content-Length: 1669 @@ -6908,7 +4093,7 @@ Content-Length: 1669 HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:17 GMT +Date: Mon, 02 Oct 2017 14:53:12 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -6923,7 +4108,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:21 GMT +Date: Mon, 02 Oct 2017 14:53:16 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 252 @@ -6938,7 +4123,7 @@ Content-Length: 252
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:21 GMT +Date: Mon, 02 Oct 2017 14:53:16 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 254 @@ -6953,37 +4138,37 @@ Content-Length: 254
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:25 GMT +Date: Mon, 02 Oct 2017 14:53:20 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:25 GMT +Date: Mon, 02 Oct 2017 14:53:20 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:25 GMT +Date: Mon, 02 Oct 2017 14:53:20 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:25 GMT +Date: Mon, 02 Oct 2017 14:53:20 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:25 GMT +Date: Mon, 02 Oct 2017 14:53:20 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:25 GMT +Date: Mon, 02 Oct 2017 14:53:20 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -6999,10 +4184,10 @@ Content-Length: 255
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:25 GMT +Date: Mon, 02 Oct 2017 14:53:20 GMT Server: ULib Connection: close -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353933303526abd923efa233131e1fd2965e371ea1ef; expires=Mon, 25 Sep 2017 17:08:25 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303730343234303026085294e7edb0ea68afaede52deaf8b2b; expires=Tue, 03 Oct 2017 14:53:20 GMT Content-Length: 0 @@ -7044,13 +4229,13 @@ Content-Length: 0 HTTP/1.1 505 HTTP Version Not Supported -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 501 Not Implemented -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -7066,7 +4251,7 @@ Content-Length: 256
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -7082,7 +4267,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -7098,7 +4283,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -7114,19 +4299,19 @@ Content-Length: 263
ULib Server
HTTP/1.1 411 Length Required -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 413 Request Entity Too Large -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -7142,7 +4327,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -7158,7 +4343,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -7174,7 +4359,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -7190,7 +4375,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -7206,7 +4391,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -7222,14 +4407,14 @@ Content-Length: 263
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT, COPY, MOVE, LOCK, UNLOCK, MKCOL, PROPFIND, PATCH, PURGE, MERGE, REPORT, CHECKOUT, MKACTIVITY, NOTIFY, MSEARCH, SUBSCRIBE, UNSUBSCRIBE Content-Length: 0 HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -7246,13 +4431,13 @@ Content-Length: 444
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 257 HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 344 @@ -7267,7 +4452,7 @@ Content-Length: 344
ULib Server
HTTP/1.1 403 Forbidden -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 304 @@ -7282,7 +4467,7 @@ Content-Length: 304
ULib Server
HTTP/1.1 500 Internal Server Error -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 548 @@ -7297,14 +4482,14 @@ Content-Length: 548
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 21 pippo pluto paperino HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 WWW-Authenticate: Basic realm="Protected Area" @@ -7320,21 +4505,21 @@ Content-Length: 444
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 -Expires: Mon, 24 Sep 2018 17:08:28 GMT +Expires: Tue, 02 Oct 2018 14:53:23 GMT Last-Modified: Fri, 20 Feb 2009 14:50:49 GMT Content-Length: 63 this is the web_server testsuite inp/http/data/index.html file HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Range: bytes 0-63/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:08:29 GMT -Last-Modified: Sun, 24 Sep 2017 17:08:08 GMT +Expires: Tue, 02 Oct 2018 14:53:24 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 64 123456781234567 @@ -7342,90 +4527,90 @@ Content-Length: 64 34567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Range: bytes 0-31/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:08:29 GMT -Last-Modified: Sun, 24 Sep 2017 17:08:29 GMT +Expires: Tue, 02 Oct 2018 14:53:24 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 123456781234567 345678903456789 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Range: bytes 32-63/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:08:29 GMT -Last-Modified: Sun, 24 Sep 2017 17:08:29 GMT +Expires: Tue, 02 Oct 2018 14:53:24 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 34567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Range: bytes 32-63/64 Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:08:29 GMT -Last-Modified: Sun, 24 Sep 2017 17:08:08 GMT +Expires: Tue, 02 Oct 2018 14:53:24 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 234567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Length: 224 -Content-Type: multipart/byteranges; boundary="=_432444246642831288" +Content-Type: multipart/byteranges; boundary="=_360386723126625626" ---=_432444246642831288 +--=_360386723126625626 Content-Range: bytes 0-0/64 Content-Type: text/html; charset=UTF-8 1 ---=_432444246642831288 +--=_360386723126625626 Content-Range: bytes 63-63/64 Content-Type: text/html; charset=UTF-8 ---=_432444246642831288--HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:29 GMT +--=_360386723126625626--HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Range: bytes 50-63/64 Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:08:29 GMT -Last-Modified: Sun, 24 Sep 2017 17:08:29 GMT +Expires: Tue, 02 Oct 2018 14:53:24 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 14 2345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Length: 244 -Content-Type: multipart/byteranges; boundary="=_432444246642831289" +Content-Type: multipart/byteranges; boundary="=_360386723126625627" ---=_432444246642831289 +--=_360386723126625627 Content-Range: bytes 10-19/64 Content-Type: text/html; charset=UTF-8 34567 3456 ---=_432444246642831289 +--=_360386723126625627 Content-Range: bytes 50-59/64 Content-Type: text/html; charset=UTF-8 2345670123 ---=_432444246642831289--HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:29 GMT +--=_360386723126625627--HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:08:29 GMT -Last-Modified: Sun, 24 Sep 2017 17:08:29 GMT +Expires: Tue, 02 Oct 2018 14:53:24 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 64 123456781234567 @@ -7433,37 +4618,37 @@ Content-Length: 64 234567892345678 012345670123456 HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Length: 0 HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Length: 0 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 295 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 292 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 561 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 558 -Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes24/09/2017 17:06:46

ULib Server
HTTP/1.1 304 Not Modified -Date: Sun, 24 Sep 2017 17:08:29 GMT +Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes02/10/2017 14:52:22

ULib Server
HTTP/1.1 304 Not Modified +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Length: 0 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 1669 @@ -7510,7 +4695,7 @@ Content-Length: 1669 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 1898 @@ -7540,9 +4725,9 @@ Document name: ssi1.shtml Document URI: /SSI/ssi1.shtml -It's now: Sunday, 24-Sep-2017 17:08:29 GMT +It's now: Monday, 02-Oct-2017 14:53:24 GMT -It's now: Sunday, 24-Sep-2017 19:08:29 CEST +It's now: Monday, 02-Oct-2017 16:53:24 CEST This page is: 179 Bytes @@ -7564,13 +4749,13 @@ SERVER_NAME=stefano SERVER_PORT=8080 HTTP_HOST=10.30.1.131 SERVER_PROTOCOL=HTTP/1.1 -SERVER_ADDR=192.168.42.60 +SERVER_ADDR=192.168.42.12 DOCUMENT_ROOT=/usr/src/ULib-1.4.2/tests/examples/docroot SERVER_SOFTWARE=ULib/1.4.2 -REMOTE_PORT=40156 +REMOTE_PORT=43330 REMOTE_ADDR=127.0.0.1 SESSION_ID=127.0.0.1:0 -REQUEST_ID=127.0.0.1:40156:0 +REQUEST_ID=127.0.0.1:43330:0 PWD=/usr/src/ULib-1.4.2/tests/examples/docroot PATH=/usr/local/bin:/usr/bin:/bin HTTP_X_SENDFILE=puppamelo @@ -7582,7 +4767,7 @@ start LS -------------- total 392 drwxr-xr-x 3 nobody nobody 4096 Oct 30 2015 . -drwxr-xr-x 8 nobody nobody 368640 Sep 24 19:08 .. +drwxr-xr-x 8 nobody nobody 368640 Oct 2 16:53 .. drwxr-xr-x 3 nobody nobody 4096 Aug 25 2014 earth -rw-r--r-- 1 nobody nobody 179 Aug 12 2015 embed.c -rw-r--r-- 3 nobody nobody 160 Mar 28 2011 index.shtml @@ -7618,12 +4803,12 @@ SSI_END ssi_end HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Length: 115 X-Real-IP: 10.30.1.131 -Set-Cookie: ulib.s1=; expires=Sat, 23 Sep 2017 17:08:29 GMT -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353933303926159c8d37cf7838cf8be16caca55a2c95; expires=Mon, 25 Sep 2017 17:08:29 GMT +Set-Cookie: ulib.s1=; expires=Sun, 01 Oct 2017 14:53:24 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353037303432343034268fc0d889ad92859f720f83688c9a4785; expires=Tue, 03 Oct 2017 14:53:24 GMT Set-Cookie: TestCookie=pippo Content-Type: text/html; charset=iso-8859-1 @@ -7631,26 +4816,27 @@ UID = Steve Johnson HTTP_COOKIE = name1=value1, name2=value2; name3=value3, name4=value4 ULIB_SESSION = HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 Content-Length: 718 -UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:29 GMT +UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib -Content-Length: 211 +Content-Encoding: gzip +Content-Length: 186 Content-Type: text/html -

Esempio di CGI

scritto in linguaggio rubyHTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:29 GMT +MK @mz+]mW)X4_ܴ;s>ڹf~z !~aL}@ XTBY  VM d';r%7^vPJpRQbJu [ 8Y'/GV.kي)bZ 7 _ Y'HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Length: 72 Content-Type: application/jsonrequest {"user":"doctoravatar@penzance.com","t":"vlIj","forecast":7,"zip":94089}HTTP/1.1 302 Moved Temporarily -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -7669,7 +4855,7 @@ Content-Length: 365
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -7684,7 +4870,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7699,7 +4885,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7714,7 +4900,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7729,7 +4915,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7744,7 +4930,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7759,7 +4945,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7774,7 +4960,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7789,7 +4975,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7804,7 +4990,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7819,7 +5005,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:29 GMT +Date: Mon, 02 Oct 2017 14:53:24 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7834,7 +5020,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -7849,7 +5035,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -7864,7 +5050,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7879,7 +5065,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7894,7 +5080,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7909,7 +5095,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7924,7 +5110,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7939,7 +5125,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7954,7 +5140,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7969,7 +5155,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7984,7 +5170,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -7999,7 +5185,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -8014,7 +5200,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:08:33 GMT +Date: Mon, 02 Oct 2017 14:53:28 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -8030,7 +5216,7 @@ Content-Length: 272
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -8045,15 +5231,15 @@ Content-Length: 249
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib -Content-Type: image/x-icon -Expires: Mon, 24 Sep 2018 17:08:28 GMT -Last-Modified: Fri, 24 Jul 2009 16:01:29 GMT +Content-Type: image/x-icon; charset=binary +Expires: Tue, 15 Apr 2050 14:40:40 GMT +Last-Modified: Mon, 15 Apr 2017 14:36:13 GMT Content-Length: 318 (( Fi " " " " " 33333HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -8068,7 +5254,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 273 @@ -8083,7 +5269,7 @@ Content-Length: 273
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 267 @@ -8098,7 +5284,7 @@ Content-Length: 267
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 280 @@ -8113,7 +5299,7 @@ Content-Length: 280
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 269 @@ -8128,7 +5314,7 @@ Content-Length: 269
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 271 @@ -8143,7 +5329,7 @@ Content-Length: 271
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 269 @@ -8158,7 +5344,7 @@ Content-Length: 269
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 271 @@ -8173,7 +5359,7 @@ Content-Length: 271
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 276 @@ -8188,7 +5374,7 @@ Content-Length: 276
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -8203,7 +5389,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -8218,7 +5404,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -8238,7 +5424,7 @@ Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -8253,7 +5439,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 245 @@ -8268,10 +5454,10 @@ Content-Length: 245
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib -Content-Type: text/html; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:08:37 GMT +Content-Type: text/html; charset=UTF-8 +Expires: Tue, 02 Oct 2018 14:53:23 GMT Last-Modified: Wed, 06 Jul 2011 16:28:46 GMT Content-Length: 1669 @@ -8317,7 +5503,7 @@ Content-Length: 1669 HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:37 GMT +Date: Mon, 02 Oct 2017 14:53:32 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -8332,7 +5518,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:41 GMT +Date: Mon, 02 Oct 2017 14:53:36 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 252 @@ -8347,7 +5533,7 @@ Content-Length: 252
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:41 GMT +Date: Mon, 02 Oct 2017 14:53:36 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 254 @@ -8362,37 +5548,37 @@ Content-Length: 254
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:45 GMT +Date: Mon, 02 Oct 2017 14:53:40 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:45 GMT +Date: Mon, 02 Oct 2017 14:53:40 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:45 GMT +Date: Mon, 02 Oct 2017 14:53:40 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:45 GMT +Date: Mon, 02 Oct 2017 14:53:40 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:45 GMT +Date: Mon, 02 Oct 2017 14:53:40 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 13 Hello, World!HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:08:45 GMT +Date: Mon, 02 Oct 2017 14:53:40 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -8408,10 +5594,2830 @@ Content-Length: 255
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:08:45 GMT +Date: Mon, 02 Oct 2017 14:53:40 GMT Server: ULib Connection: close -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353933323526dcd13e64d3601b433f816f5c9011adf4; expires=Mon, 25 Sep 2017 17:08:45 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353037303432343230260bbf2299d244a42fd528987fe670d2b8; expires=Tue, 03 Oct 2017 14:53:40 GMT +Content-Length: 0 + + + + + + + + + + + + + +
Your file have been uploaded!

+ File #1: /uploads/vuoto.txt
+
+
+ Go Back
+ + + + + + + + + + + + + + +
Your file have been uploaded!

+ File #1: /uploads/operazione.xml
+
+
+ Go Back
+ + +HTTP/1.1 505 HTTP Version Not Supported +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Length: 0 + +HTTP/1.1 501 Not Implemented +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 256 + + + +501 Not Implemented + +

Not Implemented

+

Sorry, the method you requested is not implemented

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 411 Length Required +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Length: 0 + +HTTP/1.1 413 Request Entity Too Large +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Length: 0 + +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT, COPY, MOVE, LOCK, UNLOCK, MKCOL, PROPFIND, PATCH, PURGE, MERGE, REPORT, CHECKOUT, MKACTIVITY, NOTIFY, MSEARCH, SUBSCRIBE, UNSUBSCRIBE +Content-Length: 0 + +HTTP/1.1 401 Authorization Required +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +WWW-Authenticate: Basic realm="Protected Area" +Content-Length: 444 + + + +401 Authorization Required + +

Authorization Required

+

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 257 + +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 344 + + + +404 Not Found + +

Not Found

+

Your requested URL "/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 403 Forbidden +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 304 + + + +403 Forbidden + +

Forbidden

+

You don't have permission to access "/../../../../linux/include/generated/uapi/linux/version.h" on this server

+
+
ULib Server
+ +HTTP/1.1 500 Internal Server Error +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 548 + + + +500 Internal Server Error + +

Internal Server Error

+

The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 21 + +pippo pluto paperino +HTTP/1.1 401 Authorization Required +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +WWW-Authenticate: Basic realm="Protected Area" +Content-Length: 444 + + + +401 Authorization Required + +

Authorization Required

+

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Expires: Tue, 02 Oct 2018 14:53:44 GMT +Last-Modified: Fri, 20 Feb 2009 14:50:49 GMT +Content-Length: 63 + +this is the web_server testsuite inp/http/data/index.html file +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Range: bytes 0-63/64 +Content-Type: application/octet-stream; charset=binary +Expires: Tue, 02 Oct 2018 14:53:45 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 64 + +123456781234567 +345678903456789 +34567892345678 +012345670123456 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Range: bytes 0-31/64 +Content-Type: application/octet-stream; charset=binary +Expires: Tue, 02 Oct 2018 14:53:45 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 32 + +123456781234567 +345678903456789 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Range: bytes 32-63/64 +Content-Type: application/octet-stream; charset=binary +Expires: Tue, 02 Oct 2018 14:53:45 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 32 + +34567892345678 +012345670123456 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Range: bytes 32-63/64 +Content-Type: text/plain; charset=us-ascii +Expires: Tue, 02 Oct 2018 14:53:45 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 32 + +234567892345678 +012345670123456 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Length: 227 +Content-Type: multipart/byteranges; boundary="=_9295528381552212820" + + +--=_9295528381552212820 +Content-Range: bytes 0-0/64 +Content-Type: text/html; charset=UTF-8 + +1 +--=_9295528381552212820 +Content-Range: bytes 63-63/64 +Content-Type: text/html; charset=UTF-8 + + + +--=_9295528381552212820--HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Range: bytes 50-63/64 +Content-Type: text/plain; charset=us-ascii +Expires: Tue, 02 Oct 2018 14:53:45 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 14 + +2345670123456 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Length: 247 +Content-Type: multipart/byteranges; boundary="=_9295528381552212821" + + +--=_9295528381552212821 +Content-Range: bytes 10-19/64 +Content-Type: text/html; charset=UTF-8 + +34567 +3456 +--=_9295528381552212821 +Content-Range: bytes 50-59/64 +Content-Type: text/html; charset=UTF-8 + +2345670123 +--=_9295528381552212821--HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/plain; charset=us-ascii +Expires: Tue, 02 Oct 2018 14:53:45 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 64 + +123456781234567 +345678903456789 +234567892345678 +012345670123456 +HTTP/1.1 204 No Content +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Length: 0 + +HTTP/1.1 204 No Content +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Length: 0 + +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Encoding: gzip +Content-Type: text/html; charset=UTF-8 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 292 + +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 558 + +Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes02/10/2017 14:52:22

ULib Server
HTTP/1.1 304 Not Modified +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Length: 0 + +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 1669 + + + + Welcome to ULib Web Server! + + + + +
+

Welcome to ULib Web Server!

+
+ + +
+ + + + + + +
+ + +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 1898 + +
+ssi_begin
+This page last updated: Friday, 30-Oct-2015 15:20:57 GMT
+
+ +1: ok + + +2: ok + + +3: ok + + +4: ok + + +
+SSI_BEGIN
+Name of user: nobody
+
+Document name: ssi1.shtml
+
+Document URI: /SSI/ssi1.shtml
+
+It's now: Monday, 02-Oct-2017 14:53:45 GMT
+
+It's now: Monday, 02-Oct-2017 16:53:45 CEST
+
+This page is:     179 Bytes
+
+This file last modified: August 12, 2015
+
+You're using: 
+
+$HTTP_X_SENDFILE: 
+
+
+start PRINTENV
+--------------
+QUERY_STRING=
+REQUEST_URI=/SSI/ssi1.shtml
+CONTENT_LENGTH=0
+REQUEST_METHOD=GET
+SCRIPT_NAME=/SSI/ssi1.shtml
+SERVER_NAME=stefano
+SERVER_PORT=8080
+HTTP_HOST=10.30.1.131
+SERVER_PROTOCOL=HTTP/1.1
+SERVER_ADDR=192.168.42.12
+DOCUMENT_ROOT=/usr/src/ULib-1.4.2/tests/examples/docroot
+SERVER_SOFTWARE=ULib/1.4.2
+REMOTE_PORT=44122
+REMOTE_ADDR=127.0.0.1
+SESSION_ID=127.0.0.1:0
+REQUEST_ID=127.0.0.1:44122:0
+PWD=/usr/src/ULib-1.4.2/tests/examples/docroot
+PATH=/usr/local/bin:/usr/bin:/bin
+HTTP_X_SENDFILE=puppamelo
+--------------
+end   PRINTENV
+ 
+
+start LS
+--------------
+total 392
+drwxr-xr-x 3 nobody nobody   4096 Oct 30  2015 .
+drwxr-xr-x 8 nobody nobody 368640 Oct  2 16:53 ..
+drwxr-xr-x 3 nobody nobody   4096 Aug 25  2014 earth
+-rw-r--r-- 1 nobody nobody    179 Aug 12  2015 embed.c
+-rw-r--r-- 3 nobody nobody    160 Mar 28  2011 index.shtml
+-rw-r--r-- 1 nobody nobody    352 Nov  8  2011 menu.shtml
+-rw-r--r-- 1 nobody nobody    917 Oct 30  2015 ssi1.shtml
+-rw-r--r-- 1 nobody nobody   1190 Aug 25  2014 ssi2.shtml
+--------------
+end   LS
+
+start CGI
+--------------
+Content-Type: text/html
+
+You're not using Microsoft® Internet Explorer® 5.0
+--------------
+end   CGI
+SSI include failed!
+SSI include failed!
+/*int main(void) {
+  struct mg_context* ctx;
+  const char *options[] = {"listening_ports", LISTENING_PORT, NULL};
+
+  ctx = mg_start(callback, options);
+  pause();
+  return 0;
+}*/
+
+SSI_END
+
+ + +
+ssi_end
+
+HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Length: 115 +X-Real-IP: 10.30.1.131 +Set-Cookie: ulib.s1=; expires=Sun, 01 Oct 2017 14:53:45 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353037303432343235265fde3b237949973fe4f9d38c8a0fe600; expires=Tue, 03 Oct 2017 14:53:45 GMT +Set-Cookie: TestCookie=pippo +Content-Type: text/html; charset=iso-8859-1 + +UID = Steve Johnson +HTTP_COOKIE = name1=value1, name2=value2; name3=value3, name4=value4 +ULIB_SESSION = +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Encoding: gzip +Content-Type: text/html; charset=UTF-8 +Content-Length: 718 + +UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Encoding: gzip +Content-Length: 186 +Content-Type: text/html + +MK @mz+]mW)X4_ܴ;s>ڹf~z !~aL}@ XTBY  VM d';r%7^vPJpRQbJu [ 8Y'/GV.kي)bZ 7 _ Y'HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Length: 72 +Content-Type: application/jsonrequest + +{"user":"doctoravatar@penzance.com","t":"vlIj","forecast":7,"zip":94089}HTTP/1.1 302 Moved Temporarily +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Location: http://10.30.1.131/?ticket=U2FsdGVkX1+/AYaicDGB1EReb1+EErzD/ar1Wrv8wrXpYEj9RoN3RlzFWK5ykUyRMg4AicmBMNQsUQDWZENgiQ +X-Powered-By: PHP/5.2.6-pl7-gentoo +X-Powered-By: PHP/5.2.6-pl7-gentoo +Content-Length: 365 + + + +302 Moved Temporarily + +

Moved Temporarily

+

The document has moved here

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/uploader" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:45 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/uploader" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/uploader" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:53:49 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 272 + + + +400 Bad Request + +

Bad Request

+

Your requested URL "/" was a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/test" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: image/x-icon; charset=binary +Expires: Tue, 15 Apr 2050 14:40:40 GMT +Last-Modified: Mon, 15 Apr 2017 14:36:13 GMT +Content-Length: 318 + +(( Fi " " " " " 33333HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/dumbfuck" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 273 + + + +404 Not Found + +

Not Found

+

Your requested URL "/get_no_headers_no_body/world" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 267 + + + +404 Not Found + +

Not Found

+

Your requested URL "/get_one_header_no_body" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 280 + + + +404 Not Found + +

Not Found

+

Your requested URL "/get_funky_content_length_body_hello" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 269 + + + +404 Not Found + +

Not Found

+

Your requested URL "/post_identity_body_world" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 271 + + + +404 Not Found + +

Not Found

+

Your requested URL "/post_chunked_all_your_base" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 269 + + + +404 Not Found + +

Not Found

+

Your requested URL "/two_chunks_mult_zero_end" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 271 + + + +404 Not Found + +

Not Found

+

Your requested URL "/chunked_w_trailing_headers" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 276 + + + +404 Not Found + +

Not Found

+

Your requested URL "/chunked_w_bullshit_after_length" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/test" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/test.cgi" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/test" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 101 Switching Protocols +Upgrade: websocket +Connection: Upgrade +Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= + +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/demo" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 245 + + + +404 Not Found + +

Not Found

+

Your requested URL "*" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Expires: Tue, 02 Oct 2018 14:53:44 GMT +Last-Modified: Wed, 06 Jul 2011 16:28:46 GMT +Content-Length: 1669 + + + + Welcome to ULib Web Server! + + + + +
+

Welcome to ULib Web Server!

+
+ + +
+ + + + + + +
+ + +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:53 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/file.txt" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:57 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 252 + + + +404 Not Found + +

Not Found

+

Your requested URL "/bag.xml" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:53:57 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 254 + + + +404 Not Found + +

Not Found

+

Your requested URL "/help.html" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:01 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 13 + +Hello, World!HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:01 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 13 + +Hello, World!HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:01 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 13 + +Hello, World!HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:01 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 13 + +Hello, World!HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:01 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 13 + +Hello, World!HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:01 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 255 + + + +404 Not Found + +

Not Found

+

Your requested URL "/plaintext1" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:01 GMT +Server: ULib +Connection: close +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e26313530373034323434312684bf4a71e651e2e0b9722a27354530b6; expires=Tue, 03 Oct 2017 14:54:01 GMT +Content-Length: 0 + + + + + + + + + + + + + +
Your file have been uploaded!

+ File #1: /uploads/vuoto.txt
+
+
+ Go Back
+ + + + + + + + + + + + + + +
Your file have been uploaded!

+ File #1: /uploads/operazione.xml
+
+
+ Go Back
+ + +HTTP/1.1 505 HTTP Version Not Supported +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Length: 0 + +HTTP/1.1 501 Not Implemented +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 256 + + + +501 Not Implemented + +

Not Implemented

+

Sorry, the method you requested is not implemented

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 411 Length Required +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Length: 0 + +HTTP/1.1 413 Request Entity Too Large +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Length: 0 + +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT, COPY, MOVE, LOCK, UNLOCK, MKCOL, PROPFIND, PATCH, PURGE, MERGE, REPORT, CHECKOUT, MKACTIVITY, NOTIFY, MSEARCH, SUBSCRIBE, UNSUBSCRIBE +Content-Length: 0 + +HTTP/1.1 401 Authorization Required +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +WWW-Authenticate: Basic realm="Protected Area" +Content-Length: 444 + + + +401 Authorization Required + +

Authorization Required

+

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 257 + +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 344 + + + +404 Not Found + +

Not Found

+

Your requested URL "/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 403 Forbidden +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 304 + + + +403 Forbidden + +

Forbidden

+

You don't have permission to access "/../../../../linux/include/generated/uapi/linux/version.h" on this server

+
+
ULib Server
+ +HTTP/1.1 500 Internal Server Error +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 548 + + + +500 Internal Server Error + +

Internal Server Error

+

The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 21 + +pippo pluto paperino +HTTP/1.1 401 Authorization Required +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +WWW-Authenticate: Basic realm="Protected Area" +Content-Length: 444 + + + +401 Authorization Required + +

Authorization Required

+

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Expires: Tue, 02 Oct 2018 14:54:04 GMT +Last-Modified: Fri, 20 Feb 2009 14:50:49 GMT +Content-Length: 63 + +this is the web_server testsuite inp/http/data/index.html file +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Range: bytes 0-63/64 +Content-Type: application/octet-stream; charset=binary +Expires: Tue, 02 Oct 2018 14:54:05 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 64 + +123456781234567 +345678903456789 +34567892345678 +012345670123456 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Range: bytes 0-31/64 +Content-Type: application/octet-stream; charset=binary +Expires: Tue, 02 Oct 2018 14:54:05 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 32 + +123456781234567 +345678903456789 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Range: bytes 32-63/64 +Content-Type: application/octet-stream; charset=binary +Expires: Tue, 02 Oct 2018 14:54:05 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 32 + +34567892345678 +012345670123456 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Range: bytes 32-63/64 +Content-Type: text/plain; charset=us-ascii +Expires: Tue, 02 Oct 2018 14:54:05 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 32 + +234567892345678 +012345670123456 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Length: 230 +Content-Type: multipart/byteranges; boundary="=_18086554854644428620" + + +--=_18086554854644428620 +Content-Range: bytes 0-0/64 +Content-Type: text/html; charset=UTF-8 + +1 +--=_18086554854644428620 +Content-Range: bytes 63-63/64 +Content-Type: text/html; charset=UTF-8 + + + +--=_18086554854644428620--HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Range: bytes 50-63/64 +Content-Type: text/plain; charset=us-ascii +Expires: Tue, 02 Oct 2018 14:54:05 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 14 + +2345670123456 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Length: 250 +Content-Type: multipart/byteranges; boundary="=_18086554854644428621" + + +--=_18086554854644428621 +Content-Range: bytes 10-19/64 +Content-Type: text/html; charset=UTF-8 + +34567 +3456 +--=_18086554854644428621 +Content-Range: bytes 50-59/64 +Content-Type: text/html; charset=UTF-8 + +2345670123 +--=_18086554854644428621--HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/plain; charset=us-ascii +Expires: Tue, 02 Oct 2018 14:54:05 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 64 + +123456781234567 +345678903456789 +234567892345678 +012345670123456 +HTTP/1.1 204 No Content +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Length: 0 + +HTTP/1.1 204 No Content +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Length: 0 + +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Encoding: gzip +Content-Type: text/html; charset=UTF-8 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 292 + +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 558 + +Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes02/10/2017 14:52:22

ULib Server
HTTP/1.1 304 Not Modified +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Length: 0 + +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 1669 + + + + Welcome to ULib Web Server! + + + + +
+

Welcome to ULib Web Server!

+
+ + +
+ + + + + + +
+ + +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 1898 + +
+ssi_begin
+This page last updated: Friday, 30-Oct-2015 15:20:57 GMT
+
+ +1: ok + + +2: ok + + +3: ok + + +4: ok + + +
+SSI_BEGIN
+Name of user: nobody
+
+Document name: ssi1.shtml
+
+Document URI: /SSI/ssi1.shtml
+
+It's now: Monday, 02-Oct-2017 14:54:05 GMT
+
+It's now: Monday, 02-Oct-2017 16:54:05 CEST
+
+This page is:     179 Bytes
+
+This file last modified: August 12, 2015
+
+You're using: 
+
+$HTTP_X_SENDFILE: 
+
+
+start PRINTENV
+--------------
+QUERY_STRING=
+REQUEST_URI=/SSI/ssi1.shtml
+CONTENT_LENGTH=0
+REQUEST_METHOD=GET
+SCRIPT_NAME=/SSI/ssi1.shtml
+SERVER_NAME=stefano
+SERVER_PORT=8080
+HTTP_HOST=10.30.1.131
+SERVER_PROTOCOL=HTTP/1.1
+SERVER_ADDR=192.168.42.12
+DOCUMENT_ROOT=/usr/src/ULib-1.4.2/tests/examples/docroot
+SERVER_SOFTWARE=ULib/1.4.2
+REMOTE_PORT=44870
+REMOTE_ADDR=127.0.0.1
+SESSION_ID=127.0.0.1:0
+REQUEST_ID=127.0.0.1:44870:0
+PWD=/usr/src/ULib-1.4.2/tests/examples/docroot
+PATH=/usr/local/bin:/usr/bin:/bin
+HTTP_X_SENDFILE=puppamelo
+--------------
+end   PRINTENV
+ 
+
+start LS
+--------------
+total 392
+drwxr-xr-x 3 nobody nobody   4096 Oct 30  2015 .
+drwxr-xr-x 8 nobody nobody 368640 Oct  2 16:54 ..
+drwxr-xr-x 3 nobody nobody   4096 Aug 25  2014 earth
+-rw-r--r-- 1 nobody nobody    179 Aug 12  2015 embed.c
+-rw-r--r-- 3 nobody nobody    160 Mar 28  2011 index.shtml
+-rw-r--r-- 1 nobody nobody    352 Nov  8  2011 menu.shtml
+-rw-r--r-- 1 nobody nobody    917 Oct 30  2015 ssi1.shtml
+-rw-r--r-- 1 nobody nobody   1190 Aug 25  2014 ssi2.shtml
+--------------
+end   LS
+
+start CGI
+--------------
+Content-Type: text/html
+
+You're not using Microsoft® Internet Explorer® 5.0
+--------------
+end   CGI
+SSI include failed!
+SSI include failed!
+/*int main(void) {
+  struct mg_context* ctx;
+  const char *options[] = {"listening_ports", LISTENING_PORT, NULL};
+
+  ctx = mg_start(callback, options);
+  pause();
+  return 0;
+}*/
+
+SSI_END
+
+ + +
+ssi_end
+
+HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Length: 115 +X-Real-IP: 10.30.1.131 +Set-Cookie: ulib.s1=; expires=Sun, 01 Oct 2017 14:54:05 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303730343234343526f2b9987f7ff16cd3319bd9cebdc4697c; expires=Tue, 03 Oct 2017 14:54:05 GMT +Set-Cookie: TestCookie=pippo +Content-Type: text/html; charset=iso-8859-1 + +UID = Steve Johnson +HTTP_COOKIE = name1=value1, name2=value2; name3=value3, name4=value4 +ULIB_SESSION = +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Encoding: gzip +Content-Type: text/html; charset=UTF-8 +Content-Length: 718 + +UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Encoding: gzip +Content-Length: 186 +Content-Type: text/html + +MK @mz+]mW)X4_ܴ;s>ڹf~z !~aL}@ XTBY  VM d';r%7^vPJpRQbJu [ 8Y'/GV.kي)bZ 7 _ Y'HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Length: 72 +Content-Type: application/jsonrequest + +{"user":"doctoravatar@penzance.com","t":"vlIj","forecast":7,"zip":94089}HTTP/1.1 302 Moved Temporarily +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Location: http://10.30.1.131/?ticket=U2FsdGVkX1+/AYaicDGB1EReb1+EErzD/ar1Wrv8wrXpYEj9RoN3RlzFWK5ykUyRMg4AicmBMNQsUQDWZENgiQ +X-Powered-By: PHP/5.2.6-pl7-gentoo +X-Powered-By: PHP/5.2.6-pl7-gentoo +Content-Length: 365 + + + +302 Moved Temporarily + +

Moved Temporarily

+

The document has moved here

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/uploader" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:05 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/uploader" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/uploader" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/info" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:54:09 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 272 + + + +400 Bad Request + +

Bad Request

+

Your requested URL "/" was a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/test" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: image/x-icon; charset=binary +Expires: Tue, 15 Apr 2050 14:40:40 GMT +Last-Modified: Mon, 15 Apr 2017 14:36:13 GMT +Content-Length: 318 + +(( Fi " " " " " 33333HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/dumbfuck" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 273 + + + +404 Not Found + +

Not Found

+

Your requested URL "/get_no_headers_no_body/world" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 267 + + + +404 Not Found + +

Not Found

+

Your requested URL "/get_one_header_no_body" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 280 + + + +404 Not Found + +

Not Found

+

Your requested URL "/get_funky_content_length_body_hello" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 269 + + + +404 Not Found + +

Not Found

+

Your requested URL "/post_identity_body_world" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 271 + + + +404 Not Found + +

Not Found

+

Your requested URL "/post_chunked_all_your_base" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 269 + + + +404 Not Found + +

Not Found

+

Your requested URL "/two_chunks_mult_zero_end" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 271 + + + +404 Not Found + +

Not Found

+

Your requested URL "/chunked_w_trailing_headers" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 276 + + + +404 Not Found + +

Not Found

+

Your requested URL "/chunked_w_bullshit_after_length" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/test" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/test.cgi" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/test" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 101 Switching Protocols +Upgrade: websocket +Connection: Upgrade +Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= + +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/demo" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 245 + + + +404 Not Found + +

Not Found

+

Your requested URL "*" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Expires: Tue, 02 Oct 2018 14:54:04 GMT +Last-Modified: Wed, 06 Jul 2011 16:28:46 GMT +Content-Length: 1669 + + + + Welcome to ULib Web Server! + + + + +
+

Welcome to ULib Web Server!

+
+ + +
+ + + + + + +
+ + +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:13 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/file.txt" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:17 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 252 + + + +404 Not Found + +

Not Found

+

Your requested URL "/bag.xml" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:17 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 254 + + + +404 Not Found + +

Not Found

+

Your requested URL "/help.html" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:21 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 13 + +Hello, World!HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:21 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 13 + +Hello, World!HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:21 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 13 + +Hello, World!HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:21 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 13 + +Hello, World!HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:21 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 13 + +Hello, World!HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:54:21 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 255 + + + +404 Not Found + +

Not Found

+

Your requested URL "/plaintext1" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:54:21 GMT +Server: ULib +Connection: close +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303730343234363126beca0933eac06255b668e7ac325376e7; expires=Tue, 03 Oct 2017 14:54:21 GMT Content-Length: 0 diff --git a/tests/examples/ok/web_server_ssl.ok b/tests/examples/ok/web_server_ssl.ok index 59c5d829..d61f4b96 100644 --- a/tests/examples/ok/web_server_ssl.ok +++ b/tests/examples/ok/web_server_ssl.ok @@ -1,11 +1,11 @@ HTTP/1.1 505 HTTP Version Not Supported -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 501 Not Implemented -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -21,7 +21,7 @@ Content-Length: 256
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -37,7 +37,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -53,7 +53,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -69,19 +69,19 @@ Content-Length: 263
ULib Server
HTTP/1.1 411 Length Required -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 413 Request Entity Too Large -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -97,7 +97,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -113,7 +113,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -129,7 +129,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -145,7 +145,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -161,7 +161,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -177,14 +177,14 @@ Content-Length: 263
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT, COPY, MOVE, LOCK, UNLOCK, MKCOL, PROPFIND, PATCH, PURGE, MERGE, REPORT, CHECKOUT, MKACTIVITY, NOTIFY, MSEARCH, SUBSCRIBE, UNSUBSCRIBE Content-Length: 0 HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -201,13 +201,13 @@ Content-Length: 444
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 257 HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 344 @@ -222,7 +222,7 @@ Content-Length: 344
ULib Server
HTTP/1.1 403 Forbidden -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 304 @@ -237,7 +237,7 @@ Content-Length: 304
ULib Server
HTTP/1.1 500 Internal Server Error -Date: Sun, 24 Sep 2017 17:11:24 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 548 @@ -252,14 +252,14 @@ Content-Length: 548
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 21 pippo pluto paperino HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 WWW-Authenticate: Basic realm="Protected Area" @@ -275,21 +275,21 @@ Content-Length: 444
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 -Expires: Mon, 24 Sep 2018 17:11:23 GMT +Expires: Tue, 02 Oct 2018 14:55:13 GMT Last-Modified: Fri, 20 Feb 2009 14:50:49 GMT Content-Length: 63 this is the web_server testsuite inp/http/data/index.html file HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Range: bytes 0-63/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:11:25 GMT -Last-Modified: Sun, 24 Sep 2017 17:08:29 GMT +Expires: Tue, 02 Oct 2018 14:55:14 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 64 123456781234567 @@ -297,90 +297,90 @@ Content-Length: 64 34567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Range: bytes 0-31/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:11:25 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:24 GMT +Expires: Tue, 02 Oct 2018 14:55:14 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 123456781234567 345678903456789 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Range: bytes 32-63/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:11:25 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:24 GMT +Expires: Tue, 02 Oct 2018 14:55:14 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 34567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Range: bytes 32-63/64 Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:11:25 GMT -Last-Modified: Sun, 24 Sep 2017 17:08:29 GMT +Expires: Tue, 02 Oct 2018 14:55:14 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 234567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Length: 230 -Content-Type: multipart/byteranges; boundary="=_12177832076713044456" +Content-Type: multipart/byteranges; boundary="=_10160219511320341082" ---=_12177832076713044456 +--=_10160219511320341082 Content-Range: bytes 0-0/64 Content-Type: text/html; charset=UTF-8 1 ---=_12177832076713044456 +--=_10160219511320341082 Content-Range: bytes 63-63/64 Content-Type: text/html; charset=UTF-8 ---=_12177832076713044456--HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:25 GMT +--=_10160219511320341082--HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Range: bytes 50-63/64 Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:11:25 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:25 GMT +Expires: Tue, 02 Oct 2018 14:55:14 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 14 2345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Length: 250 -Content-Type: multipart/byteranges; boundary="=_12177832076713044457" +Content-Type: multipart/byteranges; boundary="=_10160219511320341083" ---=_12177832076713044457 +--=_10160219511320341083 Content-Range: bytes 10-19/64 Content-Type: text/html; charset=UTF-8 34567 3456 ---=_12177832076713044457 +--=_10160219511320341083 Content-Range: bytes 50-59/64 Content-Type: text/html; charset=UTF-8 2345670123 ---=_12177832076713044457--HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +--=_10160219511320341083--HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:11:25 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:25 GMT +Expires: Tue, 02 Oct 2018 14:55:14 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 64 123456781234567 @@ -388,37 +388,37 @@ Content-Length: 64 234567892345678 012345670123456 HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Length: 0 HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Length: 0 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 294 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 293 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 561 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 558 -Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes24/09/2017 17:11:23

ULib Server
HTTP/1.1 304 Not Modified -Date: Sun, 24 Sep 2017 17:11:25 GMT +Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes02/10/2017 14:55:13

ULib Server
HTTP/1.1 304 Not Modified +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Length: 0 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 1669 @@ -465,7 +465,7 @@ Content-Length: 1669 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 1907 @@ -495,9 +495,9 @@ Document name: ssi1.shtml Document URI: /SSI/ssi1.shtml -It's now: Sunday, 24-Sep-2017 17:11:25 GMT +It's now: Monday, 02-Oct-2017 14:55:14 GMT -It's now: Sunday, 24-Sep-2017 19:11:25 CEST +It's now: Monday, 02-Oct-2017 16:55:14 CEST This page is: 179 Bytes @@ -520,13 +520,13 @@ SERVER_PORT=4443 HTTP_HOST=10.30.1.131 HTTPS=on SERVER_PROTOCOL=HTTP/1.1 -SERVER_ADDR=192.168.42.60 +SERVER_ADDR=192.168.42.12 DOCUMENT_ROOT=/usr/src/ULib-1.4.2/tests/examples/docroot SERVER_SOFTWARE=ULib/1.4.2 -REMOTE_PORT=57984 +REMOTE_PORT=33268 REMOTE_ADDR=127.0.0.1 SESSION_ID=127.0.0.1:0 -REQUEST_ID=127.0.0.1:57984:0 +REQUEST_ID=127.0.0.1:33268:0 PWD=/usr/src/ULib-1.4.2/tests/examples/docroot PATH=/usr/local/bin:/usr/bin:/bin HTTP_X_SENDFILE=puppamelo @@ -538,7 +538,7 @@ start LS -------------- total 392 drwxr-xr-x 3 nobody nobody 4096 Oct 30 2015 . -drwxr-xr-x 8 nobody nobody 368640 Sep 24 19:11 .. +drwxr-xr-x 8 nobody nobody 368640 Oct 2 16:55 .. drwxr-xr-x 3 nobody nobody 4096 Aug 25 2014 earth -rw-r--r-- 1 nobody nobody 179 Aug 12 2015 embed.c -rw-r--r-- 3 nobody nobody 160 Mar 28 2011 index.shtml @@ -574,12 +574,12 @@ SSI_END ssi_end HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Length: 115 X-Real-IP: 10.30.1.131 -Set-Cookie: ulib.s1=; expires=Sat, 23 Sep 2017 17:11:25 GMT -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353934383526ecab9d2d460c26573e520501aa3dde30; expires=Mon, 25 Sep 2017 17:11:25 GMT +Set-Cookie: ulib.s1=; expires=Sun, 01 Oct 2017 14:55:14 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353037303432353134266ecb202d9845dcfc4fe83dbdc7c716fa; expires=Tue, 03 Oct 2017 14:55:14 GMT Set-Cookie: TestCookie=pippo Content-Type: text/html; charset=iso-8859-1 @@ -587,26 +587,27 @@ UID = Steve Johnson HTTP_COOKIE = name1=value1, name2=value2; name3=value3, name4=value4 ULIB_SESSION = HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 Content-Length: 718 -UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib -Content-Length: 211 +Content-Encoding: gzip +Content-Length: 186 Content-Type: text/html -

Esempio di CGI

scritto in linguaggio rubyHTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +MK @mz+]mW)X4_ܴ;s>ڹf~z !~aL}@ XTBY  VM d';r%7^vPJpRQbJu [ 8Y'/GV.kي)bZ 7 _ Y'HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Length: 72 Content-Type: application/jsonrequest {"user":"doctoravatar@penzance.com","t":"vlIj","forecast":7,"zip":94089}HTTP/1.1 302 Moved Temporarily -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -625,7 +626,7 @@ Content-Length: 365
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -640,15 +641,15 @@ Content-Length: 249
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib -Content-Type: image/x-icon -Expires: Mon, 24 Sep 2018 17:11:23 GMT -Last-Modified: Fri, 24 Jul 2009 16:01:29 GMT +Content-Type: image/x-icon; charset=binary +Expires: Tue, 15 Apr 2050 14:40:40 GMT +Last-Modified: Mon, 15 Apr 2017 14:36:13 GMT Content-Length: 318 (( Fi " " " " " 33333HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -663,7 +664,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 273 @@ -678,7 +679,7 @@ Content-Length: 273
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 267 @@ -693,7 +694,7 @@ Content-Length: 267
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 280 @@ -708,7 +709,7 @@ Content-Length: 280
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 269 @@ -723,7 +724,7 @@ Content-Length: 269
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 271 @@ -738,7 +739,7 @@ Content-Length: 271
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 269 @@ -753,7 +754,7 @@ Content-Length: 269
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 271 @@ -768,7 +769,7 @@ Content-Length: 271
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 276 @@ -783,7 +784,7 @@ Content-Length: 276
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -798,7 +799,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -813,7 +814,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -833,7 +834,7 @@ Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -848,7 +849,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 245 @@ -863,10 +864,10 @@ Content-Length: 245
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib -Content-Type: text/html; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:11:25 GMT +Content-Type: text/html; charset=UTF-8 +Expires: Tue, 02 Oct 2018 14:55:13 GMT Last-Modified: Wed, 06 Jul 2011 16:28:46 GMT Content-Length: 1669 @@ -912,7 +913,7 @@ Content-Length: 1669 HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:25 GMT +Date: Mon, 02 Oct 2017 14:55:14 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -927,10 +928,10 @@ Content-Length: 253
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:30 GMT +Date: Mon, 02 Oct 2017 14:55:19 GMT Server: ULib Connection: close -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353934393026c6513e4efe7347a9722cdd2c4d0f56b0; expires=Mon, 25 Sep 2017 17:11:30 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353037303432353139268909e09f3591d95619597277dfbbb70e; expires=Tue, 03 Oct 2017 14:55:19 GMT Content-Length: 0 @@ -972,13 +973,13 @@ Content-Length: 0 HTTP/1.1 505 HTTP Version Not Supported -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 501 Not Implemented -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -994,7 +995,7 @@ Content-Length: 256
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -1010,7 +1011,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -1026,7 +1027,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -1042,19 +1043,19 @@ Content-Length: 263
ULib Server
HTTP/1.1 411 Length Required -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 413 Request Entity Too Large -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Length: 0 HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -1070,7 +1071,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -1086,7 +1087,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -1102,7 +1103,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -1118,7 +1119,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -1134,7 +1135,7 @@ Content-Length: 263
ULib Server
HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -1150,14 +1151,14 @@ Content-Length: 263
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT, COPY, MOVE, LOCK, UNLOCK, MKCOL, PROPFIND, PATCH, PURGE, MERGE, REPORT, CHECKOUT, MKACTIVITY, NOTIFY, MSEARCH, SUBSCRIBE, UNSUBSCRIBE Content-Length: 0 HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -1174,13 +1175,13 @@ Content-Length: 444
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 257 HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 344 @@ -1195,7 +1196,7 @@ Content-Length: 344
ULib Server
HTTP/1.1 403 Forbidden -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 304 @@ -1210,7 +1211,7 @@ Content-Length: 304
ULib Server
HTTP/1.1 500 Internal Server Error -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 548 @@ -1225,14 +1226,14 @@ Content-Length: 548
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Content-Type: text/plain; charset=UTF-8 Content-Length: 21 pippo pluto paperino HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 WWW-Authenticate: Basic realm="Protected Area" @@ -1248,21 +1249,21 @@ Content-Length: 444
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Content-Type: text/html; charset=UTF-8 -Expires: Mon, 24 Sep 2018 17:11:32 GMT +Expires: Tue, 02 Oct 2018 14:55:22 GMT Last-Modified: Fri, 20 Feb 2009 14:50:49 GMT Content-Length: 63 this is the web_server testsuite inp/http/data/index.html file HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Content-Range: bytes 0-63/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:11:33 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:24 GMT +Expires: Tue, 02 Oct 2018 14:55:23 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 64 123456781234567 @@ -1270,90 +1271,1064 @@ Content-Length: 64 34567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Content-Range: bytes 0-31/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:11:33 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:33 GMT +Expires: Tue, 02 Oct 2018 14:55:23 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 123456781234567 345678903456789 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Content-Range: bytes 32-63/64 Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:11:33 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:33 GMT +Expires: Tue, 02 Oct 2018 14:55:23 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 34567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT Server: ULib Content-Range: bytes 32-63/64 Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:11:33 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:25 GMT +Expires: Tue, 02 Oct 2018 14:55:23 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 32 234567892345678 012345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Length: 230 +Content-Type: multipart/byteranges; boundary="=_17510094104364145976" + + +--=_17510094104364145976 +Content-Range: bytes 0-0/64 +Content-Type: text/html; charset=UTF-8 + +1 +--=_17510094104364145976 +Content-Range: bytes 63-63/64 +Content-Type: text/html; charset=UTF-8 + + + +--=_17510094104364145976--HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Range: bytes 50-63/64 +Content-Type: text/plain; charset=us-ascii +Expires: Tue, 02 Oct 2018 14:55:23 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 14 + +2345670123456 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Length: 250 +Content-Type: multipart/byteranges; boundary="=_17510094104364145977" + + +--=_17510094104364145977 +Content-Range: bytes 10-19/64 +Content-Type: text/html; charset=UTF-8 + +34567 +3456 +--=_17510094104364145977 +Content-Range: bytes 50-59/64 +Content-Type: text/html; charset=UTF-8 + +2345670123 +--=_17510094104364145977--HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/plain; charset=us-ascii +Expires: Tue, 02 Oct 2018 14:55:23 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 64 + +123456781234567 +345678903456789 +234567892345678 +012345670123456 +HTTP/1.1 204 No Content +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Length: 0 + +HTTP/1.1 204 No Content +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Length: 0 + +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Encoding: gzip +Content-Type: text/html; charset=UTF-8 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 293 + +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 558 + +Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes02/10/2017 14:55:13

ULib Server
HTTP/1.1 304 Not Modified +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Length: 0 + +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 1669 + + + + Welcome to ULib Web Server! + + + + +
+

Welcome to ULib Web Server!

+
+ + +
+ + + + + + +
+ + +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 1907 + +
+ssi_begin
+This page last updated: Friday, 30-Oct-2015 15:20:57 GMT
+
+ +1: ok + + +2: ok + + +3: ok + + +4: ok + + +
+SSI_BEGIN
+Name of user: nobody
+
+Document name: ssi1.shtml
+
+Document URI: /SSI/ssi1.shtml
+
+It's now: Monday, 02-Oct-2017 14:55:23 GMT
+
+It's now: Monday, 02-Oct-2017 16:55:23 CEST
+
+This page is:     179 Bytes
+
+This file last modified: August 12, 2015
+
+You're using: 
+
+$HTTP_X_SENDFILE: 
+
+
+start PRINTENV
+--------------
+QUERY_STRING=
+REQUEST_URI=/SSI/ssi1.shtml
+CONTENT_LENGTH=0
+REQUEST_METHOD=GET
+SCRIPT_NAME=/SSI/ssi1.shtml
+SERVER_NAME=stefano
+SERVER_PORT=4443
+HTTP_HOST=10.30.1.131
+HTTPS=on
+SERVER_PROTOCOL=HTTP/1.1
+SERVER_ADDR=192.168.42.12
+DOCUMENT_ROOT=/usr/src/ULib-1.4.2/tests/examples/docroot
+SERVER_SOFTWARE=ULib/1.4.2
+REMOTE_PORT=33476
+REMOTE_ADDR=127.0.0.1
+SESSION_ID=127.0.0.1:0
+REQUEST_ID=127.0.0.1:33476:0
+PWD=/usr/src/ULib-1.4.2/tests/examples/docroot
+PATH=/usr/local/bin:/usr/bin:/bin
+HTTP_X_SENDFILE=puppamelo
+--------------
+end   PRINTENV
+ 
+
+start LS
+--------------
+total 392
+drwxr-xr-x 3 nobody nobody   4096 Oct 30  2015 .
+drwxr-xr-x 8 nobody nobody 368640 Oct  2 16:55 ..
+drwxr-xr-x 3 nobody nobody   4096 Aug 25  2014 earth
+-rw-r--r-- 1 nobody nobody    179 Aug 12  2015 embed.c
+-rw-r--r-- 3 nobody nobody    160 Mar 28  2011 index.shtml
+-rw-r--r-- 1 nobody nobody    352 Nov  8  2011 menu.shtml
+-rw-r--r-- 1 nobody nobody    917 Oct 30  2015 ssi1.shtml
+-rw-r--r-- 1 nobody nobody   1190 Aug 25  2014 ssi2.shtml
+--------------
+end   LS
+
+start CGI
+--------------
+Content-Type: text/html
+
+You're not using Microsoft® Internet Explorer® 5.0
+--------------
+end   CGI
+SSI include failed!
+SSI include failed!
+/*int main(void) {
+  struct mg_context* ctx;
+  const char *options[] = {"listening_ports", LISTENING_PORT, NULL};
+
+  ctx = mg_start(callback, options);
+  pause();
+  return 0;
+}*/
+
+SSI_END
+
+ + +
+ssi_end
+
+HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Length: 115 +X-Real-IP: 10.30.1.131 +Set-Cookie: ulib.s1=; expires=Sun, 01 Oct 2017 14:55:23 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353037303432353233267047b3a665f71e8ca0e68eac95377d78; expires=Tue, 03 Oct 2017 14:55:23 GMT +Set-Cookie: TestCookie=pippo +Content-Type: text/html; charset=iso-8859-1 + +UID = Steve Johnson +HTTP_COOKIE = name1=value1, name2=value2; name3=value3, name4=value4 +ULIB_SESSION = +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Encoding: gzip +Content-Type: text/html; charset=UTF-8 +Content-Length: 718 + +UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Encoding: gzip +Content-Length: 186 +Content-Type: text/html + +MK @mz+]mW)X4_ܴ;s>ڹf~z !~aL}@ XTBY  VM d';r%7^vPJpRQbJu [ 8Y'/GV.kي)bZ 7 _ Y'HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Length: 72 +Content-Type: application/jsonrequest + +{"user":"doctoravatar@penzance.com","t":"vlIj","forecast":7,"zip":94089}HTTP/1.1 302 Moved Temporarily +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Location: http://10.30.1.131/?ticket=U2FsdGVkX1+/AYaicDGB1EReb1+EErzD/ar1Wrv8wrXpYEj9RoN3RlzFWK5ykUyRMg4AicmBMNQsUQDWZENgiQ +X-Powered-By: PHP/5.2.6-pl7-gentoo +X-Powered-By: PHP/5.2.6-pl7-gentoo +Content-Length: 365 + + + +302 Moved Temporarily + +

Moved Temporarily

+

The document has moved here

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/test" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: image/x-icon; charset=binary +Expires: Tue, 15 Apr 2050 14:40:40 GMT +Last-Modified: Mon, 15 Apr 2017 14:36:13 GMT +Content-Length: 318 + +(( Fi " " " " " 33333HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/dumbfuck" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 273 + + + +404 Not Found + +

Not Found

+

Your requested URL "/get_no_headers_no_body/world" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 267 + + + +404 Not Found + +

Not Found

+

Your requested URL "/get_one_header_no_body" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 280 + + + +404 Not Found + +

Not Found

+

Your requested URL "/get_funky_content_length_body_hello" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 269 + + + +404 Not Found + +

Not Found

+

Your requested URL "/post_identity_body_world" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 271 + + + +404 Not Found + +

Not Found

+

Your requested URL "/post_chunked_all_your_base" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 269 + + + +404 Not Found + +

Not Found

+

Your requested URL "/two_chunks_mult_zero_end" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 271 + + + +404 Not Found + +

Not Found

+

Your requested URL "/chunked_w_trailing_headers" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 276 + + + +404 Not Found + +

Not Found

+

Your requested URL "/chunked_w_bullshit_after_length" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/test" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/test.cgi" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/test" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 101 Switching Protocols +Upgrade: websocket +Connection: Upgrade +Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= + +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 249 + + + +404 Not Found + +

Not Found

+

Your requested URL "/demo" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 245 + + + +404 Not Found + +

Not Found

+

Your requested URL "*" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Expires: Tue, 02 Oct 2018 14:55:22 GMT +Last-Modified: Wed, 06 Jul 2011 16:28:46 GMT +Content-Length: 1669 + + + + Welcome to ULib Web Server! + + + + +
+

Welcome to ULib Web Server!

+
+ + +
+ + + + + + +
+ + +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:23 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 253 + + + +404 Not Found + +

Not Found

+

Your requested URL "/file.txt" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:28 GMT +Server: ULib +Connection: close +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353037303432353238267f85919eeebc85e8abc34becf942d8b2; expires=Tue, 03 Oct 2017 14:55:28 GMT +Content-Length: 0 + + + + + + + + + + + + + +
Your file have been uploaded!

+ File #1: /uploads/vuoto.txt
+
+
+ Go Back
+ + + + + + + + + + + + + + +
Your file have been uploaded!

+ File #1: /uploads/operazione.xml
+
+
+ Go Back
+ + +HTTP/1.1 505 HTTP Version Not Supported +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Length: 0 + +HTTP/1.1 501 Not Implemented +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 256 + + + +501 Not Implemented + +

Not Implemented

+

Sorry, the method you requested is not implemented

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 411 Length Required +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Length: 0 + +HTTP/1.1 413 Request Entity Too Large +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Length: 0 + +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 400 Bad Request +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: 263 + + + +400 Bad Request + +

Bad Request

+

Your browser sent a request that this server could not understand

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT, COPY, MOVE, LOCK, UNLOCK, MKCOL, PROPFIND, PATCH, PURGE, MERGE, REPORT, CHECKOUT, MKACTIVITY, NOTIFY, MSEARCH, SUBSCRIBE, UNSUBSCRIBE +Content-Length: 0 + +HTTP/1.1 401 Authorization Required +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Connection: close +Content-Type: text/html; charset=UTF-8 +WWW-Authenticate: Basic realm="Protected Area" +Content-Length: 444 + + + +401 Authorization Required + +

Authorization Required

+

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required

+
+
ULib Server
+ +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 257 + +HTTP/1.1 404 Not Found +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 344 + + + +404 Not Found + +

Not Found

+

Your requested URL "/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" was not found on this server

+
+
ULib Server
+ +HTTP/1.1 403 Forbidden +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 304 + + + +403 Forbidden + +

Forbidden

+

You don't have permission to access "/../../../../linux/include/generated/uapi/linux/version.h" on this server

+
+
ULib Server
+ +HTTP/1.1 500 Internal Server Error +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Content-Length: 548 + + + +500 Internal Server Error + +

Internal Server Error

+

The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Content-Type: text/plain; charset=UTF-8 +Content-Length: 21 + +pippo pluto paperino +HTTP/1.1 401 Authorization Required +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +WWW-Authenticate: Basic realm="Protected Area" +Content-Length: 444 + + + +401 Authorization Required + +

Authorization Required

+

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required

+
+
ULib Server
+ +HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Content-Type: text/html; charset=UTF-8 +Expires: Tue, 02 Oct 2018 14:55:30 GMT +Last-Modified: Fri, 20 Feb 2009 14:50:49 GMT +Content-Length: 63 + +this is the web_server testsuite inp/http/data/index.html file +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Content-Range: bytes 0-63/64 +Content-Type: application/octet-stream; charset=binary +Expires: Tue, 02 Oct 2018 14:55:31 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 64 + +123456781234567 +345678903456789 +34567892345678 +012345670123456 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Content-Range: bytes 0-31/64 +Content-Type: application/octet-stream; charset=binary +Expires: Tue, 02 Oct 2018 14:55:31 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 32 + +123456781234567 +345678903456789 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Content-Range: bytes 32-63/64 +Content-Type: application/octet-stream; charset=binary +Expires: Tue, 02 Oct 2018 14:55:31 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 32 + +34567892345678 +012345670123456 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:55:31 GMT +Server: ULib +Content-Range: bytes 32-63/64 +Content-Type: text/plain; charset=us-ascii +Expires: Tue, 02 Oct 2018 14:55:31 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT +Content-Length: 32 + +234567892345678 +012345670123456 +HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Length: 227 -Content-Type: multipart/byteranges; boundary="=_2666229661809114154" +Content-Type: multipart/byteranges; boundary="=_6557339807429518226" ---=_2666229661809114154 +--=_6557339807429518226 Content-Range: bytes 0-0/64 Content-Type: text/html; charset=UTF-8 1 ---=_2666229661809114154 +--=_6557339807429518226 Content-Range: bytes 63-63/64 Content-Type: text/html; charset=UTF-8 ---=_2666229661809114154--HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:33 GMT +--=_6557339807429518226--HTTP/1.1 206 Partial Content +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Range: bytes 50-63/64 Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:11:33 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:33 GMT +Expires: Tue, 02 Oct 2018 14:55:31 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 14 2345670123456 HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Length: 247 -Content-Type: multipart/byteranges; boundary="=_2666229661809114155" +Content-Type: multipart/byteranges; boundary="=_6557339807429518227" ---=_2666229661809114155 +--=_6557339807429518227 Content-Range: bytes 10-19/64 Content-Type: text/html; charset=UTF-8 34567 3456 ---=_2666229661809114155 +--=_6557339807429518227 Content-Range: bytes 50-59/64 Content-Type: text/html; charset=UTF-8 2345670123 ---=_2666229661809114155--HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +--=_6557339807429518227--HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:11:33 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:33 GMT +Expires: Tue, 02 Oct 2018 14:55:31 GMT +Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT Content-Length: 64 123456781234567 @@ -1361,37 +2336,37 @@ Content-Length: 64 234567892345678 012345670123456 HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Length: 0 HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Length: 0 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 294 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 293 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 561 +Last-Modified: Thu, 28 Sep 2017 16:18:14 GMT +Content-Length: 558 -Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes24/09/2017 17:11:23

ULib Server
HTTP/1.1 304 Not Modified -Date: Sun, 24 Sep 2017 17:11:33 GMT +Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes02/10/2017 14:55:13

ULib Server
HTTP/1.1 304 Not Modified +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Length: 0 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 1669 @@ -1438,7 +2413,7 @@ Content-Length: 1669 HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 1907 @@ -1468,9 +2443,9 @@ Document name: ssi1.shtml Document URI: /SSI/ssi1.shtml -It's now: Sunday, 24-Sep-2017 17:11:33 GMT +It's now: Monday, 02-Oct-2017 14:55:31 GMT -It's now: Sunday, 24-Sep-2017 19:11:33 CEST +It's now: Monday, 02-Oct-2017 16:55:31 CEST This page is: 179 Bytes @@ -1493,13 +2468,13 @@ SERVER_PORT=4443 HTTP_HOST=10.30.1.131 HTTPS=on SERVER_PROTOCOL=HTTP/1.1 -SERVER_ADDR=192.168.42.60 +SERVER_ADDR=192.168.42.12 DOCUMENT_ROOT=/usr/src/ULib-1.4.2/tests/examples/docroot SERVER_SOFTWARE=ULib/1.4.2 -REMOTE_PORT=58326 +REMOTE_PORT=33720 REMOTE_ADDR=127.0.0.1 SESSION_ID=127.0.0.1:0 -REQUEST_ID=127.0.0.1:58326:0 +REQUEST_ID=127.0.0.1:33720:0 PWD=/usr/src/ULib-1.4.2/tests/examples/docroot PATH=/usr/local/bin:/usr/bin:/bin HTTP_X_SENDFILE=puppamelo @@ -1511,7 +2486,7 @@ start LS -------------- total 392 drwxr-xr-x 3 nobody nobody 4096 Oct 30 2015 . -drwxr-xr-x 8 nobody nobody 368640 Sep 24 19:11 .. +drwxr-xr-x 8 nobody nobody 368640 Oct 2 16:55 .. drwxr-xr-x 3 nobody nobody 4096 Aug 25 2014 earth -rw-r--r-- 1 nobody nobody 179 Aug 12 2015 embed.c -rw-r--r-- 3 nobody nobody 160 Mar 28 2011 index.shtml @@ -1547,12 +2522,12 @@ SSI_END ssi_end HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Length: 115 X-Real-IP: 10.30.1.131 -Set-Cookie: ulib.s1=; expires=Sat, 23 Sep 2017 17:11:33 GMT -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353934393326f5900d5f0a08eb724e6e6f443f9afa19; expires=Mon, 25 Sep 2017 17:11:33 GMT +Set-Cookie: ulib.s1=; expires=Sun, 01 Oct 2017 14:55:31 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303730343235333126351b8434fbaf9106cd95510372ade66c; expires=Tue, 03 Oct 2017 14:55:31 GMT Set-Cookie: TestCookie=pippo Content-Type: text/html; charset=iso-8859-1 @@ -1560,26 +2535,27 @@ UID = Steve Johnson HTTP_COOKIE = name1=value1, name2=value2; name3=value3, name4=value4 ULIB_SESSION = HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 Content-Length: 718 -UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib -Content-Length: 211 +Content-Encoding: gzip +Content-Length: 186 Content-Type: text/html -

Esempio di CGI

scritto in linguaggio rubyHTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +MK @mz+]mW)X4_ܴ;s>ڹf~z !~aL}@ XTBY  VM d';r%7^vPJpRQbJu [ 8Y'/GV.kي)bZ 7 _ Y'HTTP/1.1 200 OK +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Length: 72 Content-Type: application/jsonrequest {"user":"doctoravatar@penzance.com","t":"vlIj","forecast":7,"zip":94089}HTTP/1.1 302 Moved Temporarily -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Connection: close Content-Type: text/html; charset=UTF-8 @@ -1598,7 +2574,7 @@ Content-Length: 365
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -1613,15 +2589,15 @@ Content-Length: 249
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib -Content-Type: image/x-icon -Expires: Mon, 24 Sep 2018 17:11:32 GMT -Last-Modified: Fri, 24 Jul 2009 16:01:29 GMT +Content-Type: image/x-icon; charset=binary +Expires: Tue, 15 Apr 2050 14:40:40 GMT +Last-Modified: Mon, 15 Apr 2017 14:36:13 GMT Content-Length: 318 (( Fi " " " " " 33333HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -1636,7 +2612,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 273 @@ -1651,7 +2627,7 @@ Content-Length: 273
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 267 @@ -1666,7 +2642,7 @@ Content-Length: 267
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 280 @@ -1681,7 +2657,7 @@ Content-Length: 280
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 269 @@ -1696,7 +2672,7 @@ Content-Length: 269
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 271 @@ -1711,7 +2687,7 @@ Content-Length: 271
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 269 @@ -1726,7 +2702,7 @@ Content-Length: 269
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 271 @@ -1741,7 +2717,7 @@ Content-Length: 271
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 276 @@ -1756,7 +2732,7 @@ Content-Length: 276
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -1771,7 +2747,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -1786,7 +2762,7 @@ Content-Length: 253
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -1806,7 +2782,7 @@ Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 249 @@ -1821,7 +2797,7 @@ Content-Length: 249
ULib Server
HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 245 @@ -1836,10 +2812,10 @@ Content-Length: 245
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib -Content-Type: text/html; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:11:33 GMT +Content-Type: text/html; charset=UTF-8 +Expires: Tue, 02 Oct 2018 14:55:30 GMT Last-Modified: Wed, 06 Jul 2011 16:28:46 GMT Content-Length: 1669 @@ -1885,7 +2861,7 @@ Content-Length: 1669 HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:33 GMT +Date: Mon, 02 Oct 2017 14:55:31 GMT Server: ULib Content-Type: text/html; charset=UTF-8 Content-Length: 253 @@ -1900,983 +2876,10 @@ Content-Length: 253
ULib Server
HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:38 GMT +Date: Mon, 02 Oct 2017 14:55:36 GMT Server: ULib Connection: close -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353036333539343938261686b9d862814b5b4f7fc53ce64244ef; expires=Mon, 25 Sep 2017 17:11:38 GMT -Content-Length: 0 - - - - - - - - - - - - - -
Your file have been uploaded!

- File #1: /uploads/vuoto.txt
-
-
- Go Back
- - - - - - - - - - - - - - -
Your file have been uploaded!

- File #1: /uploads/operazione.xml
-
-
- Go Back
- - -HTTP/1.1 505 HTTP Version Not Supported -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Length: 0 - -HTTP/1.1 501 Not Implemented -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 256 - - - -501 Not Implemented - -

Not Implemented

-

Sorry, the method you requested is not implemented

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 411 Length Required -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Length: 0 - -HTTP/1.1 413 Request Entity Too Large -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Length: 0 - -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 400 Bad Request -Date: Sun, 24 Sep 2017 17:11:41 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Content-Length: 263 - - - -400 Bad Request - -

Bad Request

-

Your browser sent a request that this server could not understand

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Connection: close -Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, CONNECT, COPY, MOVE, LOCK, UNLOCK, MKCOL, PROPFIND, PATCH, PURGE, MERGE, REPORT, CHECKOUT, MKACTIVITY, NOTIFY, MSEARCH, SUBSCRIBE, UNSUBSCRIBE -Content-Length: 0 - -HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -WWW-Authenticate: Basic realm="Protected Area" -Content-Length: 444 - - - -401 Authorization Required - -

Authorization Required

-

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 257 - -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 344 - - - -404 Not Found - -

Not Found

-

Your requested URL "/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" was not found on this server

-
-
ULib Server
- -HTTP/1.1 403 Forbidden -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 304 - - - -403 Forbidden - -

Forbidden

-

You don't have permission to access "/../../../../linux/include/generated/uapi/linux/version.h" on this server

-
-
ULib Server
- -HTTP/1.1 500 Internal Server Error -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 548 - - - -500 Internal Server Error - -

Internal Server Error

-

The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/plain; charset=UTF-8 -Content-Length: 21 - -pippo pluto paperino -HTTP/1.1 401 Authorization Required -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -WWW-Authenticate: Basic realm="Protected Area" -Content-Length: 444 - - - -401 Authorization Required - -

Authorization Required

-

This server could not verify that you are authorized to access the document requested. Either you supplied the wrong credentials (e.g., bad password), or your browser doesn't understand how to supply the credentials required

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Expires: Mon, 24 Sep 2018 17:11:40 GMT -Last-Modified: Fri, 20 Feb 2009 14:50:49 GMT -Content-Length: 63 - -this is the web_server testsuite inp/http/data/index.html file -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Range: bytes 0-63/64 -Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:11:42 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:33 GMT -Content-Length: 64 - -123456781234567 -345678903456789 -34567892345678 -012345670123456 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Range: bytes 0-31/64 -Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:11:42 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT -Content-Length: 32 - -123456781234567 -345678903456789 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Range: bytes 32-63/64 -Content-Type: application/octet-stream; charset=binary -Expires: Mon, 24 Sep 2018 17:11:42 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT -Content-Length: 32 - -34567892345678 -012345670123456 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Range: bytes 32-63/64 -Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:11:42 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:33 GMT -Content-Length: 32 - -234567892345678 -012345670123456 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Length: 230 -Content-Type: multipart/byteranges; boundary="=_10520507412835370322" - - ---=_10520507412835370322 -Content-Range: bytes 0-0/64 -Content-Type: text/html; charset=UTF-8 - -1 ---=_10520507412835370322 -Content-Range: bytes 63-63/64 -Content-Type: text/html; charset=UTF-8 - - - ---=_10520507412835370322--HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Range: bytes 50-63/64 -Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:11:42 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT -Content-Length: 14 - -2345670123456 -HTTP/1.1 206 Partial Content -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Length: 250 -Content-Type: multipart/byteranges; boundary="=_10520507412835370323" - - ---=_10520507412835370323 -Content-Range: bytes 10-19/64 -Content-Type: text/html; charset=UTF-8 - -34567 -3456 ---=_10520507412835370323 -Content-Range: bytes 50-59/64 -Content-Type: text/html; charset=UTF-8 - -2345670123 ---=_10520507412835370323--HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/plain; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:11:42 GMT -Last-Modified: Sun, 24 Sep 2017 17:11:42 GMT -Content-Length: 64 - -123456781234567 -345678903456789 -234567892345678 -012345670123456 -HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Length: 0 - -HTTP/1.1 204 No Content -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Length: 0 - -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Encoding: gzip -Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 294 - -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Last-Modified: Thu, 21 Sep 2017 17:44:14 GMT -Content-Length: 561 - -Index of tmp

Index of directory: tmp


Up one level
c 4 Bytes24/09/2017 17:11:23

ULib Server
HTTP/1.1 304 Not Modified -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Length: 0 - -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 1669 - - - - Welcome to ULib Web Server! - - - - -
-

Welcome to ULib Web Server!

-
- - -
- - - - - - -
- - -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 1907 - -
-ssi_begin
-This page last updated: Friday, 30-Oct-2015 15:20:57 GMT
-
- -1: ok - - -2: ok - - -3: ok - - -4: ok - - -
-SSI_BEGIN
-Name of user: nobody
-
-Document name: ssi1.shtml
-
-Document URI: /SSI/ssi1.shtml
-
-It's now: Sunday, 24-Sep-2017 17:11:42 GMT
-
-It's now: Sunday, 24-Sep-2017 19:11:42 CEST
-
-This page is:     179 Bytes
-
-This file last modified: August 12, 2015
-
-You're using: 
-
-$HTTP_X_SENDFILE: 
-
-
-start PRINTENV
---------------
-QUERY_STRING=
-REQUEST_URI=/SSI/ssi1.shtml
-CONTENT_LENGTH=0
-REQUEST_METHOD=GET
-SCRIPT_NAME=/SSI/ssi1.shtml
-SERVER_NAME=stefano
-SERVER_PORT=4443
-HTTP_HOST=10.30.1.131
-HTTPS=on
-SERVER_PROTOCOL=HTTP/1.1
-SERVER_ADDR=192.168.42.60
-DOCUMENT_ROOT=/usr/src/ULib-1.4.2/tests/examples/docroot
-SERVER_SOFTWARE=ULib/1.4.2
-REMOTE_PORT=58630
-REMOTE_ADDR=127.0.0.1
-SESSION_ID=127.0.0.1:0
-REQUEST_ID=127.0.0.1:58630:0
-PWD=/usr/src/ULib-1.4.2/tests/examples/docroot
-PATH=/usr/local/bin:/usr/bin:/bin
-HTTP_X_SENDFILE=puppamelo
---------------
-end   PRINTENV
- 
-
-start LS
---------------
-total 392
-drwxr-xr-x 3 nobody nobody   4096 Oct 30  2015 .
-drwxr-xr-x 8 nobody nobody 368640 Sep 24 19:11 ..
-drwxr-xr-x 3 nobody nobody   4096 Aug 25  2014 earth
--rw-r--r-- 1 nobody nobody    179 Aug 12  2015 embed.c
--rw-r--r-- 3 nobody nobody    160 Mar 28  2011 index.shtml
--rw-r--r-- 1 nobody nobody    352 Nov  8  2011 menu.shtml
--rw-r--r-- 1 nobody nobody    917 Oct 30  2015 ssi1.shtml
--rw-r--r-- 1 nobody nobody   1190 Aug 25  2014 ssi2.shtml
---------------
-end   LS
-
-start CGI
---------------
-Content-Type: text/html
-
-You're not using Microsoft® Internet Explorer® 5.0
---------------
-end   CGI
-SSI include failed!
-SSI include failed!
-/*int main(void) {
-  struct mg_context* ctx;
-  const char *options[] = {"listening_ports", LISTENING_PORT, NULL};
-
-  ctx = mg_start(callback, options);
-  pause();
-  return 0;
-}*/
-
-SSI_END
-
- - -
-ssi_end
-
-HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Length: 115 -X-Real-IP: 10.30.1.131 -Set-Cookie: ulib.s1=; expires=Sat, 23 Sep 2017 17:11:42 GMT -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353935303226e4aa6018c87a79897d57464cdda15d28; expires=Mon, 25 Sep 2017 17:11:42 GMT -Set-Cookie: TestCookie=pippo -Content-Type: text/html; charset=iso-8859-1 - -UID = Steve Johnson -HTTP_COOKIE = name1=value1, name2=value2; name3=value3, name4=value4 -ULIB_SESSION = -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Encoding: gzip -Content-Type: text/html; charset=UTF-8 -Content-Length: 718 - -UQO0~8Im%40^Si  \''m;'iڲD%*cw\L,EJpJ j}'cxhXBl2RYXP<_V|5o7=(2XlUr΂v5 Iy:J27tU.h /=.`Br!w t6+٧ 9דHQ<|OEZ n[:i |O{DH[z3c5?_L&LVibl!&&֩H֐)+.C дް4|tb]PS]Xhonyb)'̃F;2N"JSZʼnɼ,䴎2yB" ,L.uJ3&PdKuӹI“`YɿGQe\ז!9*NIvekRNIVHw9YuP>̎:vtzWf"X R?IRc:LmUEcO>?tt=OuBaiS-ELi..ek=wjm1 p_N/CrBէùVJ -B>prYI𾧫svNIIKltw?mMc{ *HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Length: 211 -Content-Type: text/html - -

Esempio di CGI

scritto in linguaggio rubyHTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Length: 72 -Content-Type: application/jsonrequest - -{"user":"doctoravatar@penzance.com","t":"vlIj","forecast":7,"zip":94089}HTTP/1.1 302 Moved Temporarily -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Connection: close -Content-Type: text/html; charset=UTF-8 -Location: http://10.30.1.131/?ticket=U2FsdGVkX1+/AYaicDGB1EReb1+EErzD/ar1Wrv8wrXpYEj9RoN3RlzFWK5ykUyRMg4AicmBMNQsUQDWZENgiQ -X-Powered-By: PHP/5.2.6-pl7-gentoo -X-Powered-By: PHP/5.2.6-pl7-gentoo -Content-Length: 365 - - - -302 Moved Temporarily - -

Moved Temporarily

-

The document has moved here

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/test" was not found on this server

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: image/x-icon -Expires: Mon, 24 Sep 2018 17:11:40 GMT -Last-Modified: Fri, 24 Jul 2009 16:01:29 GMT -Content-Length: 318 - -(( Fi " " " " " 33333HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/dumbfuck" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 273 - - - -404 Not Found - -

Not Found

-

Your requested URL "/get_no_headers_no_body/world" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 267 - - - -404 Not Found - -

Not Found

-

Your requested URL "/get_one_header_no_body" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 280 - - - -404 Not Found - -

Not Found

-

Your requested URL "/get_funky_content_length_body_hello" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 269 - - - -404 Not Found - -

Not Found

-

Your requested URL "/post_identity_body_world" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 271 - - - -404 Not Found - -

Not Found

-

Your requested URL "/post_chunked_all_your_base" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 269 - - - -404 Not Found - -

Not Found

-

Your requested URL "/two_chunks_mult_zero_end" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 271 - - - -404 Not Found - -

Not Found

-

Your requested URL "/chunked_w_trailing_headers" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 276 - - - -404 Not Found - -

Not Found

-

Your requested URL "/chunked_w_bullshit_after_length" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/test" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/test.cgi" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/test" was not found on this server

-
-
ULib Server
- -HTTP/1.1 101 Switching Protocols -Upgrade: websocket -Connection: Upgrade -Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= - -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 249 - - - -404 Not Found - -

Not Found

-

Your requested URL "/demo" was not found on this server

-
-
ULib Server
- -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 245 - - - -404 Not Found - -

Not Found

-

Your requested URL "*" was not found on this server

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=us-ascii -Expires: Mon, 24 Sep 2018 17:11:42 GMT -Last-Modified: Wed, 06 Jul 2011 16:28:46 GMT -Content-Length: 1669 - - - - Welcome to ULib Web Server! - - - - -
-

Welcome to ULib Web Server!

-
- - -
- - - - - - -
- - -HTTP/1.1 404 Not Found -Date: Sun, 24 Sep 2017 17:11:42 GMT -Server: ULib -Content-Type: text/html; charset=UTF-8 -Content-Length: 253 - - - -404 Not Found - -

Not Found

-

Your requested URL "/file.txt" was not found on this server

-
-
ULib Server
- -HTTP/1.1 200 OK -Date: Sun, 24 Sep 2017 17:11:47 GMT -Server: ULib -Connection: close -Set-Cookie: ulib.s0=5374657665204a6f686e736f6e263135303633353935303726e993d4f188c11141860855bcfb4b9f8c; expires=Mon, 25 Sep 2017 17:11:47 GMT +Set-Cookie: ulib.s0=5374657665204a6f686e736f6e2631353037303432353336262cab0f39094c8fb5766e9f81a82e30d6; expires=Tue, 03 Oct 2017 14:55:36 GMT Content-Length: 0 diff --git a/tests/examples/tsa_http.test b/tests/examples/tsa_http.test index cefc6891..dda7737c 100755 --- a/tests/examples/tsa_http.test +++ b/tests/examples/tsa_http.test @@ -6,7 +6,7 @@ start_msg tsa_http - UTRACE="0 75M 0" +#UTRACE="0 75M 0" #UOBJDUMP="0 10M 10" #USIMERR="error.sim" export UTRACE UOBJDUMP USIMERR @@ -79,6 +79,8 @@ kill_server userver_tcp mv err/userver_tcp.err err/tsa_http.err +#exit + if [ -s out/TSA_response.out ]; then tail -c +155 out/TSA_response.out > TSA/response/response.tsr diff --git a/tests/examples/uclient.test b/tests/examples/uclient.test index b207dfa3..ee8bc786 100755 --- a/tests/examples/uclient.test +++ b/tests/examples/uclient.test @@ -6,7 +6,7 @@ start_msg uclient DOC_ROOT=docroot -rm -f uclient.log $DOC_ROOT//webserver_uclient.log \ +rm -f uclient.log $DOC_ROOT/webserver_uclient.log \ out/uclient.out err/uclient.err out/userver_tcp.out err/userver_tcp.err \ trace.*uclient*.[0-9]* object.*uclient*.[0-9]* stack.*uclient*.[0-9]* mempool.*uclient*.[0-9]* \ trace.*userver_*.[0-9]* object.*userver_*.[0-9]* stack.*userver_*.[0-9]* mempool.*userver_*.[0-9]* \ diff --git a/tests/examples/udp_server.sh b/tests/examples/udp_server.sh new file mode 100755 index 00000000..654299ce --- /dev/null +++ b/tests/examples/udp_server.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +. ../.function + +DOC_ROOT=benchmark/docroot + +rm -f tmp/usp_compile.sh.err /tmp/*.hpack.* \ + /tmp/*userver_udp* \ + out/userver_*.out err/userver_*.err \ + trace.*userver_*.[0-9]* object.*userver_*.[0-9]* stack.*userver_*.[0-9]* mempool.*userver_*.[0-9]* \ + $DOC_ROOT/trace.*userver_*.[0-9]* $DOC_ROOT/object.*userver_*.[0-9]* $DOC_ROOT/stack.*userver_*.[0-9]* $DOC_ROOT/mempool.*userver_*.[0-9]* + + UTRACE="0 50M 0" + UTRACE_SIGNAL="0 50M 0" + UTRACE_FOLDER=/tmp +#UOBJDUMP="0 10M 100" +#USIMERR="error.sim" + UMEMUSAGE=yes +export UTRACE UOBJDUMP USIMERR UTRACE_SIGNAL UMEMUSAGE UTRACE_FOLDER + +cat <inp/webserver.cfg +userver { + PORT 8080 + RUN_AS_USER nobody + LOG_FILE /tmp/userver_udp.log + LOG_FILE_SZ 10M + PID_FILE /var/run/userver_udp.pid + PREFORK_CHILD 0 +} +EOF + +DIR_CMD="../../examples/userver" + +#STRACE=$TRUSS +start_prg_background userver_udp -c inp/webserver.cfg + +$SLEEP +sync +echo "PID = `cat /var/run/userver_udp.pid`" + +#$SLEEP +#$SLEEP +#killall userver_udp + +#nc -u -w 5 192.168.42.12 8080 < /tmp/audacious-temp-* diff --git a/tests/ulib/plugin/product1.cpp b/tests/ulib/plugin/product1.cpp index 22399c3e..63f855cb 100644 --- a/tests/ulib/plugin/product1.cpp +++ b/tests/ulib/plugin/product1.cpp @@ -7,7 +7,7 @@ public: Product1() {} virtual ~Product1() { (void) write(1, U_CONSTANT_TO_PARAM("distruttore Product1\n")); } - virtual void print(ostream& os) const { os << "I am Product1" << endl; } + virtual void print(ostream& os) const { os.write(U_CONSTANT_TO_PARAM("I am Product1\n")); } }; U_CREAT_FUNC(product1, Product1) diff --git a/tests/ulib/plugin/product2.cpp b/tests/ulib/plugin/product2.cpp index 3fa6d6c6..d1b04464 100644 --- a/tests/ulib/plugin/product2.cpp +++ b/tests/ulib/plugin/product2.cpp @@ -7,7 +7,7 @@ public: Product2() {} virtual ~Product2() { (void) write(1, U_CONSTANT_TO_PARAM("distruttore Product2\n")); } - virtual void print(ostream& os) const { os << "I am Product2" << endl; } + virtual void print(ostream& os) const { os.write(U_CONSTANT_TO_PARAM("I am Product2\n")); } }; U_CREAT_FUNC(product2, Product2) diff --git a/tests/ulib/test_string.cpp b/tests/ulib/test_string.cpp index c781040d..6fdde6b0 100644 --- a/tests/ulib/test_string.cpp +++ b/tests/ulib/test_string.cpp @@ -2068,47 +2068,17 @@ U_EXPORT main(int argc, char* argv[]) */ #ifdef USE_LIBZ - #define TEXT3 \ - "Apr 12 10:03:22 www sm-mta[2031]: l3C834YF002031: from=, size=2426, class=0, nrcpts=1, msgid=, proto=SMTP, daemon=MTA, relay=adsl-d36.87-197-150.t-com.sk [87.197.150.36]\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: to=, delay=00:00:13, xdelay=00:00:00, mailer=cyrusv2, pri=122426, relay=localhost, dsn=5.1.1, stat=User unknown\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: l3C83MYF002034: DSN: User unknown" \ - "Apr 12 10:03:22 www sm-mta[2031]: l3C834YF002031: from=, size=2426, class=0, nrcpts=1, msgid=, proto=SMTP, daemon=MTA, relay=adsl-d36.87-197-150.t-com.sk [87.197.150.36]\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: to=, delay=00:00:13, xdelay=00:00:00, mailer=cyrusv2, pri=122426, relay=localhost, dsn=5.1.1, stat=User unknown\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: l3C83MYF002034: DSN: User unknown" \ - "Apr 12 10:03:22 www sm-mta[2031]: l3C834YF002031: from=, size=2426, class=0, nrcpts=1, msgid=, proto=SMTP, daemon=MTA, relay=adsl-d36.87-197-150.t-com.sk [87.197.150.36]\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: to=, delay=00:00:13, xdelay=00:00:00, mailer=cyrusv2, pri=122426, relay=localhost, dsn=5.1.1, stat=User unknown\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: l3C83MYF002034: DSN: User unknown" \ - "Apr 12 10:03:22 www sm-mta[2031]: l3C834YF002031: from=, size=2426, class=0, nrcpts=1, msgid=, proto=SMTP, daemon=MTA, relay=adsl-d36.87-197-150.t-com.sk [87.197.150.36]\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: to=, delay=00:00:13, xdelay=00:00:00, mailer=cyrusv2, pri=122426, relay=localhost, dsn=5.1.1, stat=User unknown\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: l3C83MYF002034: DSN: User unknown" \ - "Apr 12 10:03:22 www sm-mta[2031]: l3C834YF002031: from=, size=2426, class=0, nrcpts=1, msgid=, proto=SMTP, daemon=MTA, relay=adsl-d36.87-197-150.t-com.sk [87.197.150.36]\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: to=, delay=00:00:13, xdelay=00:00:00, mailer=cyrusv2, pri=122426, relay=localhost, dsn=5.1.1, stat=User unknown\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: l3C83MYF002034: DSN: User unknown" \ - "Apr 12 10:03:22 www sm-mta[2031]: l3C834YF002031: from=, size=2426, class=0, nrcpts=1, msgid=, proto=SMTP, daemon=MTA, relay=adsl-d36.87-197-150.t-com.sk [87.197.150.36]\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: to=, delay=00:00:13, xdelay=00:00:00, mailer=cyrusv2, pri=122426, relay=localhost, dsn=5.1.1, stat=User unknown\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: l3C83MYF002034: DSN: User unknown" \ - "Apr 12 10:03:22 www sm-mta[2031]: l3C834YF002031: from=, size=2426, class=0, nrcpts=1, msgid=, proto=SMTP, daemon=MTA, relay=adsl-d36.87-197-150.t-com.sk [87.197.150.36]\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: to=, delay=00:00:13, xdelay=00:00:00, mailer=cyrusv2, pri=122426, relay=localhost, dsn=5.1.1, stat=User unknown\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: l3C83MYF002034: DSN: User unknown" \ - "Apr 12 10:03:22 www sm-mta[2031]: l3C834YF002031: from=, size=2426, class=0, nrcpts=1, msgid=, proto=SMTP, daemon=MTA, relay=adsl-d36.87-197-150.t-com.sk [87.197.150.36]\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: to=, delay=00:00:13, xdelay=00:00:00, mailer=cyrusv2, pri=122426, relay=localhost, dsn=5.1.1, stat=User unknown\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: l3C83MYF002034: DSN: User unknown" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: l3C83MYF002034: DSN: User unknown" \ - "Apr 12 10:03:22 www sm-mta[2031]: l3C834YF002031: from=, size=2426, class=0, nrcpts=1, msgid=, proto=SMTP, daemon=MTA, relay=adsl-d36.87-197-150.t-com.sk [87.197.150.36]\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: to=, delay=00:00:13, xdelay=00:00:00, mailer=cyrusv2, pri=122426, relay=localhost, dsn=5.1.1, stat=User unknown\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: l3C83MYF002034: DSN: User unknown" \ - "Apr 12 10:03:22 www sm-mta[2031]: l3C834YF002031: from=, size=2426, class=0, nrcpts=1, msgid=, proto=SMTP, daemon=MTA, relay=adsl-d36.87-197-150.t-com.sk [87.197.150.36]\n" \ - "Apr 12 10:03:22 www sm-mta[2034]: l3C834YF002031: to=, delay=00:00:13, xdelay=00:00:00, mailer=cyrusv2, pri=122426, relay=localhost, dsn=5.1.1, stat=User unknown\n" + z = U_STRING_FROM_CONSTANT("########################################################################################################################" + "########################################################################################################################" + "########################################################################################################################"); - z = U_STRING_FROM_CONSTANT(TEXT3); - - x = UStringExt::deflate(z, 1); + x = UStringExt::deflate(z); y = UStringExt::gunzip(x); U_ASSERT( z == y ) - x = UStringExt::deflate(z, 2); + x = UStringExt::deflate(z, Z_BEST_COMPRESSION); y = UStringExt::gunzip(x); diff --git a/tests/ulib/test_unixsocket_server.cpp b/tests/ulib/test_unixsocket_server.cpp index 42fc40f0..8a046472 100644 --- a/tests/ulib/test_unixsocket_server.cpp +++ b/tests/ulib/test_unixsocket_server.cpp @@ -54,12 +54,15 @@ U_EXPORT main (int argc, char* argv[], char* env[]) U_TRACE(5,"main(%d)",argc) UFileConfig fcg; - UUnixServer s(0); - UUnixSocket::setPath(argv[1]); + UUnixServer s(U_NULLPTR); UString plugin_dir(argv[2]), plugin_list(argv[3]); UServer_Base::bipc = true; + (void) s.name_sock->assign(argv[1]); + + UUnixSocket::setPath(s.name_sock->data()); + if (argv[4]) { UString x(argv[4]);