Rework Max Clients

This commit is contained in:
René Linder 2020-11-30 10:04:29 +01:00
parent 5d85e13e50
commit d20b7ddd55
5 changed files with 41 additions and 31 deletions

View File

@ -12,7 +12,8 @@ WritePreferenceString("HTTPS_enable","0")
WritePreferenceString("Defaultfile","/index.html")
WritePreferenceString("Basedirectory","/home/renlin/testweb/")
WritePreferenceString("Error400_Handling","integrated")
WritePreferenceString("MaxClients","100")
WritePreferenceString("Max_HTTP_Clients","10")
WritePreferenceString("Max_HTTPS_Clients","100")
WritePreferenceString("Filememorycache","0")
ClosePreferences()
End

View File

@ -12,5 +12,6 @@ HTTPS_enable=1
Defaultfile=/index.html
Basedirectory=/home/renlin/testweb/
Error400_Handling=integrated
MaxClients=100
Max_HTTP_Clients=10
Max_HTTPS_Clients=100
Filememorycache=0

View File

@ -21,8 +21,8 @@ OpenConsole("Test")
If OpenPreferences("lhttpd.ini", #PB_Preference_GroupSeparator)
If PreferenceGroup("lhttpd")
lhs_web::set_config(lhs_web::#conf_port, ReadPreferenceString("HTTP_Port","8081"))
lhs_web::set_config(lhs_web::#conf_binding, ReadPreferenceString("HTTP_Binding","0.0.0.0"))
lhs_web::set_config(lhs_web::#conf_HTTP_port, ReadPreferenceString("HTTP_Port","8081"))
lhs_web::set_config(lhs_web::#conf_HTTP_binding, ReadPreferenceString("HTTP_Binding","0.0.0.0"))
lhs_web::set_config(lhs_web::#conf_HTTPS_CA, ReadPreferenceString("HTTPS_CA","/home/renlin/dev/libressl/sample/test_ca.pem"))
lhs_web::set_config(lhs_web::#conf_HTTPS_Cert, ReadPreferenceString("HTTPS_Cert","/home/renlin/dev/libressl/sample/test_server_cert.pem"))
lhs_web::set_config(lhs_web::#conf_HTTPS_Key, ReadPreferenceString("HTTPS_Key","/home/renlin/dev/libressl/sample/test_server_key.pem"))
@ -33,7 +33,8 @@ If OpenPreferences("lhttpd.ini", #PB_Preference_GroupSeparator)
lhs_web::set_config(lhs_web::#conf_defaultfile, ReadPreferenceString("Defaultfile","/index.html"))
lhs_web::set_config(lhs_web::#conf_basedir, ReadPreferenceString("Basedirectory","/home/renlin/testweb/"))
lhs_web::set_config(lhs_web::#conf_error400, ReadPreferenceString("Error400_Handling","integrated"))
lhs_web::set_config(lhs_web::#conf_max_clients, ReadPreferenceString("MaxClients","100"))
lhs_web::set_config(lhs_web::#conf_max_HTTP_clients, ReadPreferenceString("Max_HTTP_Clients","10"))
lhs_web::set_config(lhs_web::#conf_max_HTTPS_clients, ReadPreferenceString("Max_HTTPS_Clients","100"))
lhs_web::set_config(lhs_web::#conf_cache_enable, ReadPreferenceString("Filememorycache","0"))
ClosePreferences()
Else

View File

@ -31,11 +31,11 @@ Module lhs_web
Global.s conf_defaultfile = "index.html"
Global.s conf_basedir = "/srv/lweb-srv/"
Global.s conf_error400 = "integrated" ; Kann "integrated" sein wass die integrierte Standard Fehlermeldung hervorruft.
Global.i conf_max_clients = 100 ; Max gleichzeitige HTTP Verbindungen. Dieser Wert ist anzupassen an das jeweilige System
; Pro Thread werden mindestens 384KBytes benötigt (3 * (64 KByte Standard Buffer + 64 KByte Overhead Buffer))
Global.i conf_max_HTTP_clients = 10 ; Max sametime HTTP connections.
Global.i conf_max_HTTPS_clients = 100 ; Max sametime HTTPS connections.
Global.i conf_server_type = 0
Global.i conf_port = 8080
Global.s conf_binding = "127.0.0.1"
Global.i conf_HTTP_port = 8080
Global.s conf_HTTP_binding = "127.0.0.1"
Global.i conf_cache_time = 120 ;120Sekunden
Global.i conf_cache_maxsize = 1 ;1 Mbyte
Global.i conf_cache_current = 0
@ -166,22 +166,22 @@ Module lhs_web
Procedure set_config(parameter.i=#conf_defaultfile, setting.s="index.html")
Select parameter
Case #conf_port
conf_port = Val(setting)
Case #conf_HTTP_port
conf_HTTP_port = Val(setting)
Case #conf_HTTPS_Port
conf_HTTPS_Port = Val(setting)
Case #conf_binding
Case #conf_HTTP_binding
If IsIPStringValid(setting)
conf_binding = setting
conf_HTTP_binding = setting
Else
conf_binding = "127.0.0.1"
conf_HTTP_binding = "127.0.0.1"
ProcedureReturn #False
EndIf
Case #conf_HTTPS_Binding
If IsIPStringValid(setting)
conf_binding = setting
conf_HTTP_binding = setting
Else
conf_binding = "127.0.0.1"
conf_HTTP_binding = "127.0.0.1"
ProcedureReturn #False
EndIf
Case #conf_HTTPS_CA
@ -200,13 +200,20 @@ Module lhs_web
conf_basedir = setting
Case #conf_error400
conf_error400 = setting ; Kann "integrated" sein wass die integrierte Standard Fehlermeldung hervorruft.
Case #conf_max_clients
Case #conf_max_HTTP_clients
If MemoryStatus(#PB_System_FreePhysical) > (Val(setting)*(1024*384))
conf_max_clients = Val(setting)
conf_max_HTTP_clients = Val(setting)
Else
conf_max_clients = 100
conf_max_HTTP_clients = 10
ProcedureReturn #False
EndIf
Case #conf_max_HTTPS_clients
If MemoryStatus(#PB_System_FreePhysical) > (Val(setting)*(1024*384))
conf_max_HTTPS_clients = Val(setting)
Else
conf_max_HTTPS_clients = 10
ProcedureReturn #False
EndIf
Case #conf_server_type
conf_server_type = Val(setting)
Case #conf_cache_enable
@ -225,12 +232,12 @@ Module lhs_web
ProcedureReturn conf_basedir
Case #conf_error400
ProcedureReturn conf_error400
Case #conf_max_clients
ProcedureReturn Str(conf_max_clients)
Case #conf_max_HTTP_clients
ProcedureReturn Str(conf_max_HTTP_clients)
Case #conf_server_type
ProcedureReturn Str(conf_server_type)
Case #conf_port
ProcedureReturn Str(conf_port)
Case #conf_HTTP_port
ProcedureReturn Str(conf_HTTP_port)
Case #conf_HTTPS_Port
ProcedureReturn Str(conf_HTTPS_Port)
Default
@ -239,11 +246,11 @@ Module lhs_web
EndProcedure
Procedure start_server()
Global NewMap m_clients.s_clients(conf_max_clients)
Global NewMap m_clients.s_clients(conf_max_HTTP_clients+conf_max_HTTPS_clients)
Protected tlsresponse.i
;Init HTTP Socket
server_HTTP_id = lsocket::CreateSocket(conf_port, conf_max_clients, lsocket::#SOCK_STREAM, lsocket::#AF_INET, conf_binding)
server_HTTP_id = lsocket::CreateSocket(conf_HTTP_port, conf_max_clients, lsocket::#SOCK_STREAM, lsocket::#AF_INET, conf_HTTP_binding)
If conf_HTTPS_enable = 1
server_HTTPS_id = lsocket::CreateSocket(conf_HTTPS_Port, conf_max_clients, lsocket::#SOCK_STREAM, lsocket::#AF_INET, conf_HTTPS_binding)
If server_HTTPS_id
@ -282,7 +289,7 @@ Module lhs_web
client_id = ltls::WaitTLSSocket(network_server_id)
Debug "New HTTPS Client:"+Str(client_id)
If client_id > 0
If count_HTTPS_client < conf_max_clients
If count_HTTPS_client < conf_max_HTTPS_clients
m_clients(Str(client_id))\client_id = client_id
m_clients(Str(client_id))\client_do_cli = #CLI_DO_WaitDataReceive
m_clients(Str(client_id))\client_do_srv = #SRV_DO_DataReceive
@ -315,7 +322,7 @@ Module lhs_web
client_id = lsocket::WaitSocket(network_server_id)
Debug "New HTTP Client:"+Str(client_id)
If client_id > 0
If count_HTTP_client < conf_max_clients
If count_HTTP_client < conf_max_HTTP_clients
m_clients(Str(client_id))\client_id = client_id
m_clients(Str(client_id))\client_do_cli = #CLI_DO_WaitDataReceive
m_clients(Str(client_id))\client_do_srv = #SRV_DO_DataReceive
@ -331,7 +338,6 @@ Module lhs_web
Break
EndIf
ForEver
ltls::CloseTLS(network_server_id)
EndProcedure
Procedure IsIPStringValid(Adress.s)

View File

@ -21,12 +21,13 @@ DeclareModule lhs_web
;*
Enumeration e_conf
#conf_port
#conf_binding
#conf_HTTP_port
#conf_HTTP_binding
#conf_defaultfile
#conf_basedir
#conf_error400
#conf_max_clients
#conf_max_HTTP_clients
#conf_max_HTTPS_clients
#conf_server_type
#conf_cache_enable
#conf_HTTPS_CA