First Dynamic Handler release
This commit is contained in:
parent
22b40bd09e
commit
0b540f0fa7
2 changed files with 216 additions and 41 deletions
249
lweb.pbi
249
lweb.pbi
|
@ -135,6 +135,10 @@ Module lhs_web
|
||||||
call.i
|
call.i
|
||||||
type.i
|
type.i
|
||||||
routetype.i
|
routetype.i
|
||||||
|
host.s
|
||||||
|
route.s
|
||||||
|
library.s
|
||||||
|
perm.i
|
||||||
EndStructure
|
EndStructure
|
||||||
|
|
||||||
Structure s_server_runs
|
Structure s_server_runs
|
||||||
|
@ -148,6 +152,8 @@ Module lhs_web
|
||||||
Enumeration cli_handler_infos 1
|
Enumeration cli_handler_infos 1
|
||||||
#get_handler_procedure ;Funktion die Aufgerufen werden muss
|
#get_handler_procedure ;Funktion die Aufgerufen werden muss
|
||||||
#get_handler_prototype ;Welcher Prototype
|
#get_handler_prototype ;Welcher Prototype
|
||||||
|
#get_handler_library ;Library to open
|
||||||
|
#get_handler_library_perm ;Library permanent in memory?
|
||||||
EndEnumeration
|
EndEnumeration
|
||||||
|
|
||||||
Global.i count_HTTP_client
|
Global.i count_HTTP_client
|
||||||
|
@ -175,9 +181,9 @@ Module lhs_web
|
||||||
;* Handler Prototypen
|
;* Handler Prototypen
|
||||||
;*
|
;*
|
||||||
|
|
||||||
Prototype.s WebHandler_Get(Map handler_Map.s())
|
PrototypeC WebHandler_Get(handler_Map_JSON.s)
|
||||||
Prototype.s WebHandler_Post(Map handler_Map.s(), ContentString.s)
|
PrototypeC WebHandler_Post(handler_Map_JSON.s, ContentString.s)
|
||||||
Prototype.s WebHandler_Universal(Map handler_Map.s(), ContentString.s)
|
PrototypeC WebHandler_Universal(handler_Map_JSON.s, ContentString.s)
|
||||||
|
|
||||||
|
|
||||||
;********************************
|
;********************************
|
||||||
|
@ -198,8 +204,9 @@ Module lhs_web
|
||||||
Declare server_HTTPS(network_server_id.i)
|
Declare server_HTTPS(network_server_id.i)
|
||||||
Declare client(network_client_id.i)
|
Declare client(network_client_id.i)
|
||||||
Declare.s file_check(thread_requested.s, hostid.s)
|
Declare.s file_check(thread_requested.s, hostid.s)
|
||||||
|
Declare.s call_request_string(RequestString.s, Info.i=#get_handler_procedure)
|
||||||
Declare call_request(RequestString.s, Info.i=#get_handler_procedure)
|
Declare call_request(RequestString.s, Info.i=#get_handler_procedure)
|
||||||
|
Declare advanced_register_handler(RequesterString.s, Permament.i = 0, Library.s = "", Host.s = "")
|
||||||
Declare.s Work_Post_ToJSON_multipart_form_data(ContentLength.i, MemorSize.i, Memory.i)
|
Declare.s Work_Post_ToJSON_multipart_form_data(ContentLength.i, MemorSize.i, Memory.i)
|
||||||
Declare.s Work_Post_ToJSON_x_www_form_urlencoded(ContentLength.i, MemorSize.i, Memory.i)
|
Declare.s Work_Post_ToJSON_x_www_form_urlencoded(ContentLength.i, MemorSize.i, Memory.i)
|
||||||
Declare count_client(Type.i, Countchange.i)
|
Declare count_client(Type.i, Countchange.i)
|
||||||
|
@ -212,6 +219,7 @@ Module lhs_web
|
||||||
IncludeFile "lhs_lib/SYS/lhs_uuid.pbi" ;It is needed as local function.
|
IncludeFile "lhs_lib/SYS/lhs_uuid.pbi" ;It is needed as local function.
|
||||||
|
|
||||||
XIncludeFile "inc/lweb_server_cfg.pbi"
|
XIncludeFile "inc/lweb_server_cfg.pbi"
|
||||||
|
;XIncludeFile "inc/lweb_dynamic.pbi"
|
||||||
|
|
||||||
Procedure server_reload(UUID.s)
|
Procedure server_reload(UUID.s)
|
||||||
|
|
||||||
|
@ -262,6 +270,12 @@ Module lhs_web
|
||||||
Protected counter.i, id.i
|
Protected counter.i, id.i
|
||||||
Global NewMap m_clients.s_clients(configuration\global_max_cli_threads) ;configuration\http\max_clients+configuration\https\max_clients
|
Global NewMap m_clients.s_clients(configuration\global_max_cli_threads) ;configuration\http\max_clients+configuration\https\max_clients
|
||||||
Protected tlsresponse.i
|
Protected tlsresponse.i
|
||||||
|
Protected current_lib.i
|
||||||
|
Protected current_lib_function.i, current_lib_perm.i
|
||||||
|
Protected current_lib_close.i
|
||||||
|
Protected current_register_type.i
|
||||||
|
Protected current_register_react.s
|
||||||
|
Protected current_register_proto.i
|
||||||
;Initialize all Servers in configuration\hosts()
|
;Initialize all Servers in configuration\hosts()
|
||||||
ResetMap(configuration\hosts())
|
ResetMap(configuration\hosts())
|
||||||
While NextMapElement(configuration\hosts())
|
While NextMapElement(configuration\hosts())
|
||||||
|
@ -300,6 +314,85 @@ Module lhs_web
|
||||||
ldl::Register(lhs_log_ext::@Out(), configuration\hosts()\log\ErrorlogUUID)
|
ldl::Register(lhs_log_ext::@Out(), configuration\hosts()\log\ErrorlogUUID)
|
||||||
ldl::Logging("Accesslog UUID:"+configuration\hosts()\log\AccesslogUUID)
|
ldl::Logging("Accesslog UUID:"+configuration\hosts()\log\AccesslogUUID)
|
||||||
ldl::Logging("Errorlog UUID:"+configuration\hosts()\log\ErrorlogUUID)
|
ldl::Logging("Errorlog UUID:"+configuration\hosts()\log\ErrorlogUUID)
|
||||||
|
|
||||||
|
;Register Handlers
|
||||||
|
ResetMap(configuration\hosts()\dynamichandler())
|
||||||
|
While NextMapElement(configuration\hosts()\dynamichandler())
|
||||||
|
ldl::Logging("Register Handler:"+MapKey(configuration\hosts()\dynamichandler()))
|
||||||
|
ldl::Logging("Parameters library:"+configuration\hosts()\dynamichandler()\file+" Type:"+configuration\hosts()\dynamichandler()\functiontype+" uri:"+configuration\hosts()\dynamichandler()\url+" extension:"+configuration\hosts()\dynamichandler()\extension)
|
||||||
|
|
||||||
|
If FindMapElement(configuration\hosts()\usedlibs(), configuration\hosts()\dynamichandler()\file)
|
||||||
|
current_lib = configuration\hosts()\usedlibs(configuration\hosts()\dynamichandler()\file)\lib_id
|
||||||
|
Else
|
||||||
|
current_lib = OpenLibrary(#PB_Any, configuration\hosts()\dynamichandler()\file)
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
If current_lib
|
||||||
|
current_lib_function = GetFunction(current_lib, configuration\hosts()\dynamichandler()\proc)
|
||||||
|
If current_lib_function
|
||||||
|
ldl::Logging("Function "+configuration\hosts()\dynamichandler()\proc+" found")
|
||||||
|
If FindMapElement(configuration\hosts()\usedlibs(), configuration\hosts()\dynamichandler()\file)
|
||||||
|
If configuration\hosts()\usedlibs(configuration\hosts()\dynamichandler()\file)\permlib = "false" And configuration\hosts()\dynamichandler()\permlib = "false"
|
||||||
|
current_lib_close = 1
|
||||||
|
current_lib_perm = 0
|
||||||
|
ElseIf configuration\hosts()\usedlibs(configuration\hosts()\dynamichandler()\file)\permlib = "false" And configuration\hosts()\dynamichandler()\permlib = "true"
|
||||||
|
configuration\hosts()\usedlibs(configuration\hosts()\dynamichandler()\file)\permlib = configuration\hosts()\dynamichandler()\permlib
|
||||||
|
configuration\hosts()\usedlibs(configuration\hosts()\dynamichandler()\file)\lib_id = current_lib
|
||||||
|
current_lib_close = 0
|
||||||
|
current_lib_perm = 1
|
||||||
|
EndIf
|
||||||
|
Else
|
||||||
|
configuration\hosts()\usedlibs(configuration\hosts()\dynamichandler()\file)\permlib = configuration\hosts()\dynamichandler()\permlib
|
||||||
|
If configuration\hosts()\usedlibs(configuration\hosts()\dynamichandler()\file)\permlib = "false"
|
||||||
|
current_lib_close = 1
|
||||||
|
current_lib_perm = 0
|
||||||
|
Else
|
||||||
|
configuration\hosts()\usedlibs(configuration\hosts()\dynamichandler()\file)\lib_id = current_lib
|
||||||
|
current_lib_close = 0
|
||||||
|
current_lib_perm = 1
|
||||||
|
EndIf
|
||||||
|
EndIf
|
||||||
|
|
||||||
|
;Now register the function
|
||||||
|
Select configuration\hosts()\dynamichandler()\routetype
|
||||||
|
Case "handler_only"
|
||||||
|
current_register_type = #handler_only
|
||||||
|
current_register_react = configuration\hosts()\dynamichandler()\url
|
||||||
|
Case "handler_sub"
|
||||||
|
current_register_type = #handler_sub
|
||||||
|
current_register_react = configuration\hosts()\dynamichandler()\url
|
||||||
|
Case "handler_type"
|
||||||
|
current_register_type = #handler_type
|
||||||
|
current_register_react = configuration\hosts()\dynamichandler()\extension
|
||||||
|
EndSelect
|
||||||
|
|
||||||
|
Select configuration\hosts()\dynamichandler()\functiontype
|
||||||
|
Case "GET"
|
||||||
|
current_register_proto = #handler_proto_get
|
||||||
|
Case "POST"
|
||||||
|
current_register_proto = #handler_proto_post
|
||||||
|
Case "Universal"
|
||||||
|
current_register_proto = #handler_proto_universal
|
||||||
|
EndSelect
|
||||||
|
|
||||||
|
ldl::Logging("react:"+current_register_react+" file:"+configuration\hosts()\dynamichandler()\file+" Host ID:"+MapKey(configuration\hosts()))
|
||||||
|
register_client_handler(current_register_react, current_lib_function, current_register_proto, current_register_type, MapKey(configuration\hosts()))
|
||||||
|
advanced_register_handler(current_register_react, current_lib_perm, configuration\hosts()\dynamichandler()\file, MapKey(configuration\hosts()))
|
||||||
|
If current_lib_close = 1
|
||||||
|
CloseLibrary(current_lib)
|
||||||
|
EndIf
|
||||||
|
current_lib_close = 0
|
||||||
|
Else
|
||||||
|
ldl::Logging("Error: Function "+configuration\hosts()\dynamichandler()\proc+" not found")
|
||||||
|
If configuration\hosts()\dynamichandler()\permlib = "false"
|
||||||
|
CloseLibrary(current_lib)
|
||||||
|
EndIf
|
||||||
|
EndIf
|
||||||
|
Else
|
||||||
|
ldl::Logging("Error: Library "+configuration\hosts()\dynamichandler()\file+" could not be opened")
|
||||||
|
EndIf
|
||||||
|
Wend
|
||||||
|
|
||||||
Else
|
Else
|
||||||
ldl::Logging("HTTP Socket ["+configuration\hosts()\http\port+"] could Not be opened.")
|
ldl::Logging("HTTP Socket ["+configuration\hosts()\http\port+"] could Not be opened.")
|
||||||
End
|
End
|
||||||
|
@ -413,7 +506,7 @@ Module lhs_web
|
||||||
Protected MyThreadJSON, ToCall, ToCallType
|
Protected MyThreadJSON, ToCall, ToCallType
|
||||||
Protected thread_temp_cache.s, thread_temp_cache_memory, temp_receivelength, thread_temp_decode_memory
|
Protected thread_temp_cache.s, thread_temp_cache_memory, temp_receivelength, thread_temp_decode_memory
|
||||||
Protected thread_reasign, thread_oversized_file.b, thread_data_to_read.i, thread_data_readed.i
|
Protected thread_reasign, thread_oversized_file.b, thread_data_to_read.i, thread_data_readed.i
|
||||||
Protected thread_data_size, thread_file_handle
|
Protected thread_data_size, thread_file_handle, Handle_Response_Address
|
||||||
Protected.s thread_requested, thread_type, thread_date, thread_header, thread_work, JSONStringToMap, Handler_Response, response_status, PostMapString
|
Protected.s thread_requested, thread_type, thread_date, thread_header, thread_work, JSONStringToMap, Handler_Response, response_status, PostMapString
|
||||||
Protected thread_buffer, thread_buffer_offset, thread_buffer_length, buffer_sent
|
Protected thread_buffer, thread_buffer_offset, thread_buffer_length, buffer_sent
|
||||||
Protected sent_length, sent_buffer_address, sent_total
|
Protected sent_length, sent_buffer_address, sent_total
|
||||||
|
@ -423,6 +516,10 @@ Module lhs_web
|
||||||
Protected.s home_dir = configuration\hosts(m_clients(Str(thread_cli_id))\host_id)\basedir
|
Protected.s home_dir = configuration\hosts(m_clients(Str(thread_cli_id))\host_id)\basedir
|
||||||
Protected.s AccessLog = configuration\hosts(m_clients(Str(thread_cli_id))\host_id)\log\AccesslogUUID
|
Protected.s AccessLog = configuration\hosts(m_clients(Str(thread_cli_id))\host_id)\log\AccesslogUUID
|
||||||
Protected.s ErrorLog = configuration\hosts(m_clients(Str(thread_cli_id))\host_id)\log\ErrorlogUUID
|
Protected.s ErrorLog = configuration\hosts(m_clients(Str(thread_cli_id))\host_id)\log\ErrorlogUUID
|
||||||
|
Protected.s Host_ID = m_clients(Str(thread_cli_id))\host_id
|
||||||
|
Protected.s Host_call = "SpecServer:["+Host_ID+"]"
|
||||||
|
Protected.s Header_string = ""
|
||||||
|
Protected Library_ID, LibraryToCall.s
|
||||||
Define NewMap Header.s()
|
Define NewMap Header.s()
|
||||||
Define NewMap Response.s()
|
Define NewMap Response.s()
|
||||||
Define NewMap Post.s()
|
Define NewMap Post.s()
|
||||||
|
@ -567,9 +664,20 @@ Module lhs_web
|
||||||
EndIf
|
EndIf
|
||||||
|
|
||||||
ldl::Logging("Requested:"+thread_requested)
|
ldl::Logging("Requested:"+thread_requested)
|
||||||
ToCallType = call_request(thread_requested, #get_handler_prototype)
|
ToCallType = call_request(Host_call + thread_requested, #get_handler_prototype)
|
||||||
If ToCallType = #handler_proto_universal Or ToCallType = #handler_proto_get
|
If ToCallType = #handler_proto_universal Or ToCallType = #handler_proto_get
|
||||||
ToCall = call_request(thread_requested)
|
ToCall = call_request(Host_call + thread_requested)
|
||||||
|
If call_request(Host_call + thread_requested, #get_handler_library_perm) = 0
|
||||||
|
LibraryToCall = call_request_string(Host_call + thread_requested, #get_handler_library_perm)
|
||||||
|
If Len(LibraryToCall) > 0
|
||||||
|
Library_ID = OpenLibrary(#PB_Any, LibraryToCall)
|
||||||
|
If Library_ID
|
||||||
|
|
||||||
|
Else
|
||||||
|
ldl::Logging("Library could not be opened")
|
||||||
|
EndIf
|
||||||
|
EndIf
|
||||||
|
EndIf
|
||||||
Else
|
Else
|
||||||
ToCall = 0
|
ToCall = 0
|
||||||
EndIf
|
EndIf
|
||||||
|
@ -583,17 +691,21 @@ Module lhs_web
|
||||||
|
|
||||||
If ToCall > 0 ;Dann ist eine Funktion hinterlegt und zulässig aufgerufen zu werden.
|
If ToCall > 0 ;Dann ist eine Funktion hinterlegt und zulässig aufgerufen zu werden.
|
||||||
;{ Dynamischer WebHandler
|
;{ Dynamischer WebHandler
|
||||||
|
Header_string = MapToJSONString(Header())
|
||||||
Select ToCallType
|
Select ToCallType
|
||||||
Case #handler_proto_universal
|
Case #handler_proto_universal
|
||||||
Define.WebHandler_Universal ToCallProcedure = ToCall
|
Define.WebHandler_Universal ToCallProcedure = ToCall
|
||||||
Handler_Response = ToCallProcedure(Header(), "")
|
Handler_Response_Adress = ToCallProcedure(Header_string, "")
|
||||||
|
Handler_Response = PeekS(Handler_Response_Adress)
|
||||||
Case #handler_proto_get
|
Case #handler_proto_get
|
||||||
Define.WebHandler_Get ToCallProcedureGet = ToCall
|
Define.WebHandler_Get ToCallProcedureGet = ToCall
|
||||||
Handler_Response = ToCallProcedureGet(Header())
|
Handler_Response_Adress = ToCallProcedureGet(Header_string)
|
||||||
|
Handler_Response = PeekS(Handler_Response_Adress)
|
||||||
EndSelect
|
EndSelect
|
||||||
|
If call_request(Host_call + thread_requested, #get_handler_library_perm) = 0 And Library_ID <> 0
|
||||||
|
CloseLibrary(Library_ID)
|
||||||
|
EndIf
|
||||||
|
|
||||||
ldl::Logging("Main Client Response :"+Handler_Response)
|
ldl::Logging("Main Client Response :"+Handler_Response)
|
||||||
MyThreadJSON = ParseJSON(#PB_Any, Handler_Response)
|
MyThreadJSON = ParseJSON(#PB_Any, Handler_Response)
|
||||||
If MyThreadJSON
|
If MyThreadJSON
|
||||||
|
@ -735,9 +847,21 @@ Module lhs_web
|
||||||
thread_requested = Header(#http_head_request)
|
thread_requested = Header(#http_head_request)
|
||||||
EndIf
|
EndIf
|
||||||
ldl::Logging("Requested:"+thread_requested)
|
ldl::Logging("Requested:"+thread_requested)
|
||||||
ToCallType = call_request(thread_requested, #get_handler_prototype)
|
ToCallType = call_request(Host_call+thread_requested, #get_handler_prototype)
|
||||||
If ToCallType = #handler_proto_universal Or ToCallType = #handler_proto_post
|
If ToCallType = #handler_proto_universal Or ToCallType = #handler_proto_post
|
||||||
ToCall = call_request(thread_requested)
|
ToCall = call_request(Host_call + thread_requested)
|
||||||
|
ldl::Logging("A To Call is found:"+Str(ToCall))
|
||||||
|
If call_request(Host_call + thread_requested, #get_handler_library_perm) = 0
|
||||||
|
LibraryToCall = call_request_string(Host_call + thread_requested, #get_handler_library)
|
||||||
|
If Len(LibraryToCall) > 0
|
||||||
|
Library_ID = OpenLibrary(#PB_Any, LibraryToCall)
|
||||||
|
If Library_ID
|
||||||
|
|
||||||
|
Else
|
||||||
|
ldl::Logging("Library could not be opened")
|
||||||
|
EndIf
|
||||||
|
EndIf
|
||||||
|
EndIf
|
||||||
Else
|
Else
|
||||||
ToCall = 0
|
ToCall = 0
|
||||||
EndIf
|
EndIf
|
||||||
|
@ -745,16 +869,21 @@ Module lhs_web
|
||||||
If ToCall > 0 ;A dynamic webhandler is available, call.
|
If ToCall > 0 ;A dynamic webhandler is available, call.
|
||||||
;{ Dynamic webhandler.
|
;{ Dynamic webhandler.
|
||||||
|
|
||||||
|
Header_string = MapToJSONString(Header())
|
||||||
Select ToCallType
|
Select ToCallType
|
||||||
Case #handler_proto_universal
|
Case #handler_proto_universal
|
||||||
Define.WebHandler_Universal ToCallProcedure_Universal = ToCall
|
Define.WebHandler_Universal ToCallProcedure_Universal = ToCall
|
||||||
Handler_Response = ToCallProcedure_Universal(Header(), PostMapString )
|
Handler_Response_Adress = ToCallProcedure_Universal(Header_string, PostMapString )
|
||||||
|
ldl::Logging("Response Address:"+Str(Handler_Response_Adress))
|
||||||
|
Handler_Response = PeekS(Handler_Response_Adress)
|
||||||
Case #handler_proto_post
|
Case #handler_proto_post
|
||||||
Define.WebHandler_Post ToCallProcedure_Post = ToCall
|
Define.WebHandler_Post ToCallProcedure_Post = ToCall
|
||||||
Handler_Response = ToCallProcedure_Post(Header(), PostMapString)
|
Handler_Response_Adress = ToCallProcedure_Post(Header_string, PostMapString)
|
||||||
|
Handler_Response = PeekS(Handler_Response_Adress)
|
||||||
EndSelect
|
EndSelect
|
||||||
|
If call_request(Host_call + thread_requested, #get_handler_library_perm) = 0 And Library_ID <> 0
|
||||||
|
CloseLibrary(Library_ID)
|
||||||
|
EndIf
|
||||||
ldl::Logging("Main Client Response :"+Handler_Response)
|
ldl::Logging("Main Client Response :"+Handler_Response)
|
||||||
MyThreadJSON = ParseJSON(#PB_Any, Handler_Response)
|
MyThreadJSON = ParseJSON(#PB_Any, Handler_Response)
|
||||||
If MyThreadJSON
|
If MyThreadJSON
|
||||||
|
@ -1089,38 +1218,61 @@ Module lhs_web
|
||||||
|
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure call_request(RequestString.s, Info.i = #get_handler_procedure)
|
Procedure.s call_request_string(RequestString.s, Info.i = #get_handler_procedure)
|
||||||
Protected CurrPos, Count, Counter, PartString.s
|
Protected CurrPos, Count, Counter, PartString.s
|
||||||
|
;"SpecServer:["+Host_ID+"]"
|
||||||
|
Protected.s Host_ID = ""
|
||||||
|
Protected HF_Count, HF_Pos
|
||||||
|
If Left(RequestString,12) = "SpecServer:["
|
||||||
|
;Whe have host specific
|
||||||
|
HF_Pos = FindString(RequestString, "]",12)
|
||||||
|
Host_ID = Left(RequestString, HF_Pos)
|
||||||
|
EndIf
|
||||||
|
ldl::Logging("call_request: "+RequestString)
|
||||||
If m_request(GetExtensionPart(RequestString))\routetype = #handler_type
|
If m_request(GetExtensionPart(RequestString))\routetype = #handler_type
|
||||||
Select Info
|
Select Info
|
||||||
Case #get_handler_procedure
|
Case #get_handler_procedure
|
||||||
ProcedureReturn m_request(GetExtensionPart(RequestString))\call
|
ProcedureReturn Str(m_request(Host_ID+GetExtensionPart(RequestString))\call)
|
||||||
Case #get_handler_prototype
|
Case #get_handler_prototype
|
||||||
ProcedureReturn m_request(GetExtensionPart(RequestString))\type
|
ProcedureReturn Str(m_request(Host_ID+GetExtensionPart(RequestString))\type)
|
||||||
|
Case #get_handler_library
|
||||||
|
ProcedureReturn m_request(Host_ID+GetExtensionPart(RequestString))\library
|
||||||
|
Case #get_handler_library_perm
|
||||||
|
ProcedureReturn Str(m_request(Host_ID+GetExtensionPart(RequestString))\perm)
|
||||||
Default
|
Default
|
||||||
ProcedureReturn 0
|
ProcedureReturn "0"
|
||||||
EndSelect
|
EndSelect
|
||||||
EndIf
|
EndIf
|
||||||
|
|
||||||
|
ldl::Logging("call_request: "+RequestString + " Routetype :["+Str(m_request(RequestString)\routetype)+"]")
|
||||||
If m_request(RequestString)\routetype = #handler_only Or m_request(RequestString)\routetype = #handler_sub
|
If m_request(RequestString)\routetype = #handler_only Or m_request(RequestString)\routetype = #handler_sub
|
||||||
Select Info
|
Select Info
|
||||||
Case #get_handler_procedure
|
Case #get_handler_procedure
|
||||||
ProcedureReturn m_request(RequestString)\call
|
ProcedureReturn Str(m_request(RequestString)\call)
|
||||||
Case #get_handler_prototype
|
Case #get_handler_prototype
|
||||||
ProcedureReturn m_request(RequestString)\type
|
ProcedureReturn Str(m_request(RequestString)\type)
|
||||||
|
Case #get_handler_library
|
||||||
|
ProcedureReturn m_request(RequestString)\library
|
||||||
|
Case #get_handler_library_perm
|
||||||
|
ProcedureReturn Str(m_request(RequestString)\perm)
|
||||||
Default
|
Default
|
||||||
ProcedureReturn 0
|
ProcedureReturn "0"
|
||||||
EndSelect
|
EndSelect
|
||||||
ElseIf m_request(GetExtensionPart(RequestString))\routetype = #handler_sub
|
ElseIf m_request(GetExtensionPart(RequestString))\routetype = #handler_sub
|
||||||
Select Info
|
Select Info
|
||||||
Case #get_handler_procedure
|
Case #get_handler_procedure
|
||||||
ProcedureReturn m_request(GetExtensionPart(RequestString))\call
|
ProcedureReturn Str(m_request(Host_ID+GetExtensionPart(RequestString))\call)
|
||||||
Case #get_handler_prototype
|
Case #get_handler_prototype
|
||||||
ProcedureReturn m_request(GetExtensionPart(RequestString))\type
|
ProcedureReturn Str(m_request(Host_ID+GetExtensionPart(RequestString))\type)
|
||||||
|
Case #get_handler_library
|
||||||
|
ProcedureReturn m_request(Host_ID+GetExtensionPart(RequestString))\library
|
||||||
|
Case #get_handler_library_perm
|
||||||
|
ProcedureReturn Str(m_request(Host_ID+GetExtensionPart(RequestString))\perm)
|
||||||
Default
|
Default
|
||||||
ProcedureReturn 0
|
ProcedureReturn "0"
|
||||||
EndSelect
|
EndSelect
|
||||||
EndIf
|
EndIf
|
||||||
|
ldl::Logging("call_request now on sub check: "+RequestString + " Routetype :["+Str(m_request(RequestString)\routetype)+"]")
|
||||||
|
|
||||||
;Check auf Sub
|
;Check auf Sub
|
||||||
Counter = CountString(RequestString, "/")
|
Counter = CountString(RequestString, "/")
|
||||||
|
@ -1132,17 +1284,26 @@ Module lhs_web
|
||||||
If m_request(PartString)\routetype = #handler_sub
|
If m_request(PartString)\routetype = #handler_sub
|
||||||
Select Info
|
Select Info
|
||||||
Case #get_handler_procedure
|
Case #get_handler_procedure
|
||||||
ProcedureReturn m_request(PartString)\call
|
ProcedureReturn Str(m_request(PartString)\call)
|
||||||
Case #get_handler_prototype
|
Case #get_handler_prototype
|
||||||
ProcedureReturn m_request(PartString)\type
|
ProcedureReturn Str(m_request(PartString)\type)
|
||||||
|
Case #get_handler_library
|
||||||
|
ProcedureReturn m_request(PartString)\library
|
||||||
|
Case #get_handler_library_perm
|
||||||
|
ProcedureReturn Str(m_request(PartString)\type)
|
||||||
Default
|
Default
|
||||||
ProcedureReturn 0
|
ProcedureReturn "0"
|
||||||
EndSelect
|
EndSelect
|
||||||
EndIf
|
EndIf
|
||||||
Count + 1
|
Count + 1
|
||||||
Wend
|
Wend
|
||||||
|
ldl::Logging("call_request Not found !!!!!!!!! : "+RequestString + "Routetype :["+Str(m_request(RequestString)\routetype)+"]")
|
||||||
|
|
||||||
ProcedureReturn 0
|
ProcedureReturn "0"
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
|
Procedure call_request(RequestString.s, Info.i = #get_handler_procedure)
|
||||||
|
ProcedureReturn Val(call_request_string(RequestString.s, Info.i))
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure.s Work_Post_ToJSON_x_www_form_urlencoded(ContentLength.i, MemorSize.i, Memory.i)
|
Procedure.s Work_Post_ToJSON_x_www_form_urlencoded(ContentLength.i, MemorSize.i, Memory.i)
|
||||||
|
@ -1197,11 +1358,25 @@ Module lhs_web
|
||||||
ProcedureReturn "NA"
|
ProcedureReturn "NA"
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure.s register_client_handler(Route.s, Callback.i, AppPrototype.i = #handler_proto_get, RouteType.i = #handler_sub)
|
Procedure.s register_client_handler(Route.s, Callback.i, AppPrototype.i = #handler_proto_get, RouteType.i = #handler_sub, Host.s = "")
|
||||||
m_request(Route)\type = AppPrototype
|
If Len(Host) > 0
|
||||||
m_request(Route)\call = Callback
|
Host = "SpecServer:["+Host+"]"
|
||||||
m_request(Route)\routetype = RouteType
|
EndIf
|
||||||
lhs_log_ext::OutL(lhs_web::get_config(lhs_web::#conf_Debug_logUUID),lhs_log_ext::#Debugging,"Handler Registriert:"+Route)
|
|
||||||
|
m_request(Host+Route)\type = AppPrototype
|
||||||
|
m_request(Host+Route)\call = Callback
|
||||||
|
m_request(Host+Route)\routetype = RouteType
|
||||||
|
m_request(Host+Route)\route = Route
|
||||||
|
m_request(Host+Route)\host = Host
|
||||||
|
ldl::Logging("Handler Registriert:"+Route+ " at Host:["+Host+"]")
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
|
Procedure advanced_register_handler(Route.s, Permament.i = 0, Library.s = "", Host.s="")
|
||||||
|
If Len(Host) > 0
|
||||||
|
Host = "SpecServer:["+Host+"]"
|
||||||
|
EndIf
|
||||||
|
m_request(Host+Route)\perm = Permament
|
||||||
|
m_request(Host+Route)\library = Library
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure count_client(Type.i, Countchange.i)
|
Procedure count_client(Type.i, Countchange.i)
|
||||||
|
|
|
@ -113,7 +113,7 @@ DeclareModule lhs_web
|
||||||
Declare server_reload(UUID.s)
|
Declare server_reload(UUID.s)
|
||||||
Declare server_config(UUID.s, XMLStructure.s)
|
Declare server_config(UUID.s, XMLStructure.s)
|
||||||
Declare server_stop(UUID.s = "all")
|
Declare server_stop(UUID.s = "all")
|
||||||
Declare.s register_client_handler(Route.s, Callback.i, AppPrototype.i = #handler_proto_get, RouteType.i = #handler_sub)
|
Declare.s register_client_handler(Route.s, Callback.i, AppPrototype.i = #handler_proto_get, RouteType.i = #handler_sub, Host.s = "")
|
||||||
|
|
||||||
XIncludeFile "inc/lweb_IP_header.pbi"
|
XIncludeFile "inc/lweb_IP_header.pbi"
|
||||||
XIncludeFile "inc/lweb_helper_header.pbi"
|
XIncludeFile "inc/lweb_helper_header.pbi"
|
||||||
|
|
Loading…
Reference in a new issue