1
0
mirror of https://github.com/stefanocasazza/ULib.git synced 2025-09-28 19:05:55 +08:00
This commit is contained in:
stefanocasazza 2019-01-02 19:37:08 +01:00
parent a642027039
commit 65517dc8b7
10 changed files with 95 additions and 42 deletions

View File

@ -972,33 +972,24 @@ static void GET_acceptTermsOfConditions()
{
U_TRACE_NO_PARAM(5, "::GET_acceptTermsOfConditions()")
// $1 -> ap (with localization => '@')
// $2 -> mac
// $1 -> mac
if (UHTTP::processForm() == 2*2)
if (UHTTP::processForm() == 2)
{
ap->clear();
mac->clear();
UHTTP::getFormValue(*mac, U_CONSTANT_TO_PARAM("mac"), 0, 1, 2);
UHTTP::getFormValue(*ap, U_CONSTANT_TO_PARAM("ap"), 0, 1, 4);
if (setAccessPoint())
if (mac->isMacAddr())
{
UHTTP::getFormValue(*mac, U_CONSTANT_TO_PARAM("mac"), 0, 3, 4);
char buffer[16];
if (mac->isMacAddr())
{
char buffer[16];
u_getXMAC(mac->data(), buffer);
u_getXMAC(mac->data(), buffer);
(void) mac->replace(buffer, 12);
}
U_ASSERT(mac->isXMacAddr())
(void) rc->hmset(U_CONSTANT_TO_PARAM("DEVICE:id:%v ExpirePrivacy %u"), mac->rep, u_now->tv_sec + duration_privacy_policy);
(void) mac->replace(buffer, 12);
}
U_ASSERT(mac->isXMacAddr())
(void) rc->hmset(U_CONSTANT_TO_PARAM("DEVICE:id:%v ExpirePrivacy %u"), mac->rep, u_now->tv_sec + duration_privacy_policy);
}
}

View File

@ -257,6 +257,7 @@ http {
# CGI_TIMEOUT 60
# VIRTUAL_HOST yes
# WEBSOCKET_TIMEOUT -1
# DIGEST_AUTHENTICATION yes
# URI_PROTECTED_MASK /RA/admin/cgi-bin/*
@ -686,6 +687,34 @@ http {
# CHECK_EXPIRE_INTERVAL 360
# }
# -----------------------------------------------------------------------------------------------------------------------------------
# nodog - plugin parameters
# -----------------------------------------------------------------------------------------------------------------------------------
# FW_CMD shell script to manage the firewall
# FW_ENV environment for shell script to execute
# DECRYPT_KEY DES3 password stuff
# ALLOWED_MEMBERS file with list of allowed MAC/IP pairs or NETWORKS (default: /etc/nodog.allowed)
# LOCAL_NETWORK_LABEL access point localization tag to be used from portal
# CHECK_EXPIRE_INTERVAL Number of seconds to send client info to portal
# -----------------------------------------------------------------------------------------------------------------------------------
# nodog {
# shell script to manage the firewall
# FW_CMD firewall/nodog.fw
# FW_ENV "FW_CONF=/etc/nodog_fw.conf \
# AuthServiceAddr=http://www.auth-firenze.com/login"
# DES3 password stuff
# DECRYPT_KEY PASSWORD
# access point localization tag to be used from portal
# LOCAL_NETWORK_LABEL "radio1 radio2"
# Number of seconds to check if some client has terminate their connection
# CHECK_EXPIRE_INTERVAL 360
# }
# ----------------------------------------------------------------------------------------------------------------------------------------------------
# U S P P A G E S P A R A M E T E R S
# ----------------------------------------------------------------------------------------------------------------------------------------------------

View File

@ -19,9 +19,15 @@
#include <ulib/internal/config.h>
#include <ulib/base/replace/replace.h>
#ifndef U_PREFIXDIR
#define U_PREFIXDIR "/usr/local"
#endif
#ifndef U_LIBEXECDIR
#define U_LIBEXECDIR "/usr/local/libexec/ulib"
#endif
#ifndef U_SYSCONFDIR
#define U_SYSCONFDIR "/usr/local/etc"
#endif
/*
#ifndef HAVE_CONFIG_H

View File

@ -16,7 +16,7 @@
#include <ulib/event/event_fd.h>
#define U_QUERY_INFO_SZ 1024
#define U_QUERY_INFO_SZ 168
class UServer_Base;
class UClientImage_Base;
@ -27,6 +27,10 @@ public:
// Check for memory error
U_MEMORY_TEST
// Allocator e Deallocator
U_MEMORY_ALLOCATOR
U_MEMORY_DEALLOCATOR
UEventDB();
~UEventDB();

View File

@ -41,7 +41,7 @@ UEventDB::UEventDB()
pthis = (void*)U_CHECK_MEMORY_SENTINEL;
#endif
// U_WARNING("UEventDB::UEventDB(): sizeof(UEventDB) = %u sizeof(query_info) = %u", sizeof(UEventDB), sizeof(query_info)); // sizeof(UEventDB) = 4072|4088 sizeof(query_info) = 24
U_DEBUG("UEventDB::UEventDB(): sizeof(UEventDB) = %u sizeof(query_info) = %u", sizeof(UEventDB), sizeof(query_info)); // sizeof(UEventDB) = 4072|4088 sizeof(query_info) = 24
}
UEventDB::~UEventDB()
@ -151,9 +151,11 @@ void UEventDB::handlerQuery(vPFpvu handler, uint32_t num_query)
U_INTERNAL_ASSERT_MINOR(num_result, 4096)
#ifndef U_SERVER_CAPTIVE_PORTAL
if (num_query > 20 ||
(num_result >= 2048 ||
num_handler == U_QUERY_INFO_SZ))
#endif
{
U_DEBUG("UEventDB::handlerQuery(%u): num_result(%u), num_handler(%u)", num_query, num_result, num_handler);

View File

@ -475,6 +475,9 @@ int UHttpPlugIn::handlerInit()
{
U_TRACE_NO_PARAM(0, "UHttpPlugIn::handlerInit()")
UServer_Base::update_date =
UServer_Base::update_date3 = true;
U_MEMCPY(ULog::date.header1, "HTTP/1.1 200 OK\r\n",
U_CONSTANT_SIZE("HTTP/1.1 200 OK\r\n")); // 17
@ -549,13 +552,12 @@ int UHttpPlugIn::handlerRun() // NB: we use this method instead of handlerInit()
#endif
if (UServer_Base::handler_inotify) UHTTP::initDbNotFound();
UServer_Base::update_date =
UServer_Base::update_date3 = true;
#if defined(U_LINUX) && defined(ENABLE_THREAD) && !defined(U_SERVER_CAPTIVE_PORTAL)
#if defined(U_LINUX) && defined(ENABLE_THREAD)
U_INTERNAL_ASSERT_POINTER(UServer_Base::ptr_shared_data)
# if !defined(U_SERVER_CAPTIVE_PORTAL)
UClientImage_Base::callerHandlerCache = UHTTP::handlerCache;
# endif
UClientImage_Base::iov_vec[1].iov_base = (caddr_t)UServer_Base::ptr_shared_data->log_date_shared.header1;
#endif

View File

@ -1112,7 +1112,7 @@ private:
U_DISALLOW_COPY_AND_ASSIGN(UClientThread)
};
# if defined(U_LINUX) && !defined(U_SERVER_CAPTIVE_PORTAL)
# ifdef U_LINUX
class UTimeThread : public UThread {
public:
@ -1261,15 +1261,19 @@ public:
sec = u_now->tv_sec;
# ifndef U_SERVER_CAPTIVE_PORTAL
if (daylight &&
(sec % U_ONE_HOUR_IN_SECOND) == 0)
{
(void) UTimeDate::checkForDaylightSavingTime(sec);
}
# endif
if (UServer_Base::update_date)
{
# ifndef U_SERVER_CAPTIVE_PORTAL
(void) U_SYSCALL(pthread_rwlock_wrlock, "%p", ULog::prwlock);
# endif
if ((sec % U_ONE_HOUR_IN_SECOND) != 0)
{
@ -1286,7 +1290,9 @@ public:
if (UServer_Base::update_date3) (void) u_strftime2(ULog::ptr_shared_date->date3+6, 29-4, U_CONSTANT_TO_PARAM("%a, %d %b %Y %T"), sec);
}
# ifndef U_SERVER_CAPTIVE_PORTAL
(void) U_SYSCALL(pthread_rwlock_unlock, "%p", ULog::prwlock);
# endif
}
}
}
@ -1797,14 +1803,12 @@ UServer_Base::~UServer_Base()
# endif
# if defined(U_LINUX)
# if !defined(U_SERVER_CAPTIVE_PORTAL)
if (u_pthread_time)
{
U_DELETE((UTimeThread*)u_pthread_time)
(void) pthread_rwlock_destroy(ULog::prwlock);
}
# endif
# if defined(USE_LIBSSL) && !defined(OPENSSL_NO_OCSP) && defined(SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB)
if (bssl)
@ -2208,7 +2212,7 @@ void UServer_Base::loadConfigParam()
port = _port;
}
U_INTERNAL_DUMP("SOMAXCONN = %d FD_SETSIZE = %d", SOMAXCONN, FD_SETSIZE)
U_INTERNAL_DUMP("SOMAXCONN = %d FD_SETSIZE = %d timeoutMS = %d", SOMAXCONN, FD_SETSIZE, timeoutMS)
set_tcp_keep_alive = pcfg->readBoolean(U_CONSTANT_TO_PARAM("TCP_KEEP_ALIVE"));
set_realtime_priority = pcfg->readBoolean(U_CONSTANT_TO_PARAM("SET_REALTIME_PRIORITY"), false);
@ -3036,9 +3040,7 @@ void UServer_Base::suspendThread()
U_TRACE_NO_PARAM(0, "UServer_Base::suspendThread()")
#if defined(U_LINUX) && defined(ENABLE_THREAD)
# if !defined(U_SERVER_CAPTIVE_PORTAL)
if (u_pthread_time) ((UTimeThread*)u_pthread_time)->suspend();
# endif
# if defined(USE_LIBSSL) && !defined(OPENSSL_NO_OCSP) && defined(SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB)
if (pthread_ocsp) pthread_ocsp->suspend();
@ -3359,7 +3361,6 @@ next:
if (budp == false)
# endif
{
# if !defined(U_SERVER_CAPTIVE_PORTAL)
if (UServer_Base::update_date)
{
U_NEW_WITHOUT_CHECK_MEMORY(UTimeThread, u_pthread_time, UTimeThread);
@ -3368,7 +3369,6 @@ next:
((UTimeThread*)u_pthread_time)->start(50);
}
# endif
}
#endif
@ -3632,9 +3632,7 @@ void UServer_Base::sendSignalToAllChildren(int signo, sighandler_t handler)
#endif
#if defined(U_LINUX) && defined(ENABLE_THREAD)
# if !defined(U_SERVER_CAPTIVE_PORTAL)
if (u_pthread_time) ((UTimeThread*)u_pthread_time)->resume();
# endif
# if defined(USE_LIBSSL) && !defined(OPENSSL_NO_OCSP) && defined(SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB)
if (pthread_ocsp) pthread_ocsp->resume();
@ -4483,6 +4481,7 @@ void UServer_Base::runLoop(const char* user)
if (budp == false)
#endif
{
# ifndef U_SERVER_CAPTIVE_PORTAL
if (handler_db1)
{
UNotifier::min_connection++;
@ -4498,6 +4497,7 @@ void UServer_Base::runLoop(const char* user)
handler_db2->UEventFd::op_mask |= EPOLLET;
handler_db2->UEventFd::op_mask &= ~EPOLLRDHUP;
}
# endif
if (handler_other)
{
@ -4532,7 +4532,9 @@ void UServer_Base::runLoop(const char* user)
handler_db1->pbusy = U_SRV_DB1_BUSY+rkids;
# endif
# ifndef U_SERVER_CAPTIVE_PORTAL
UNotifier::insert(handler_db1, EPOLLEXCLUSIVE | EPOLLROUNDROBIN); // NB: we ask to be notified for response from db
# endif
}
if (handler_db2)
@ -4543,7 +4545,9 @@ void UServer_Base::runLoop(const char* user)
handler_db2->pbusy = U_SRV_DB2_BUSY+rkids;
# endif
# ifndef U_SERVER_CAPTIVE_PORTAL
UNotifier::insert(handler_db2, EPOLLEXCLUSIVE | EPOLLROUNDROBIN); // NB: we ask to be notified for response from db
# endif
}
if (handler_other) // NB: we ask to be notified for request from generic system

View File

@ -11743,12 +11743,27 @@ U_NO_EXPORT bool UHTTP::compileUSP(const char* path, uint32_t len)
U_TRACE(0, "UHTTP::compileUSP(%.*S,%u)", len, path, len)
static int fd_stderr;
static UString* usp_compile_path;
UString command(200U);
if (usp_compile_path == U_NULLPTR)
{
struct stat st;
if (U_SYSCALL(stat, "%S,%p", U_PREFIXDIR "/bin/usp_compile.sh", &st) == 0)
{
U_NEW_ULIB_STRING(usp_compile_path, U_STRING_FROM_CONSTANT(U_PREFIXDIR "/bin/usp_compile.sh"));
}
else
{
U_NEW_ULIB_STRING(usp_compile_path, U_STRING_FROM_CONSTANT("usp_compile.sh"));
}
}
UString command(usp_compile_path->size());
// Ex: usp_compile.sh -i /home/user/project/include -o /home/user/project/build <file.usp> so
command.snprintf(U_CONSTANT_TO_PARAM("usp_compile.sh %.*s %s"), len, path, U_LIB_SUFFIX);
command.snprintf(U_CONSTANT_TO_PARAM("%v %.*s %s"), usp_compile_path->rep, len, path, U_LIB_SUFFIX);
UCommand cmd(command);
@ -12019,8 +12034,6 @@ loop: while (u__isalpha(*++ptr1)) {}
{
old_sz = sz;
ULog::updateDate3(U_NULLPTR);
U_http_info.nResponseCode = HTTP_OK;
UClientImage_Base::body->clear();

View File

@ -171,8 +171,10 @@ int UWebSocket::handleDataFraming(USocket* socket)
int framing_state = U_WS_DATA_FRAMING_START, payload_length_bytes_remaining = 0, mask_index = 0, masking = 0;
loop:
U_INTERNAL_DUMP("timeoutMS = %d", timeoutMS)
if (rbuffer->empty() &&
USocketExt::read(socket, *rbuffer, U_SINGLE_READ, UWebSocket::timeoutMS) == false)
USocketExt::read(socket, *rbuffer, U_SINGLE_READ, timeoutMS) == false)
{
status_code = U_WS_STATUS_CODE_INTERNAL_ERROR;

View File

@ -1 +1 @@
0454
0469