diff --git a/lweb_auth.pb b/lweb_auth.pb new file mode 100644 index 0000000..bd8f34b --- /dev/null +++ b/lweb_auth.pb @@ -0,0 +1,132 @@ +;************************ +;* lweb_auth.pb +;* +;* Authentication Library. +;* +;* Created and develobed by Linder Hard- und Software +;* +;* + +XIncludeFile "lhs_lib/NET/lhs_web_helper.pbi" + +Structure DB_Config + Type.i ;0=csv, 1=txt ,2=SQLite, 3=mar, 4=psq + File_Name.s + DB_Connection.s + DB_User.s + DB_Password.s +EndStructure + +Structure Config + DB_User.DB_Config + DB_Session.DB_Config +EndStructure + +Global.s ZumSenden +Global.s State +Global.s DB_Cfg +Global.s DB_Session + +ProcedureCDLL init(Config_XML.s) + +EndProcedure + +ProcedureCDLL Database_User(DB_Cfg.s) + Select Left(DB_Cfg, 3) + Case "csv" + ;csv:/path/to/file.csv + Case "txt" + ;txt:/path/to/file.txt + Case "sli" + ;sli:/path/to/sqliteDB.sqlite + Case "mar" + ;mar:host=localhost port=3306 dbname=test user=|USERNAME| password=|PASSWORD| + Case "psq" + ;psq:host=localhost port=5432 dbname=test user=|USERNAME| password=|PASSWORD| + Default + State = "Failed" + ProcedureReturn @State + EndSelect +EndProcedure + +ProcedureCDLL Database_Session(DB_Cfg.s) + Select Left(DB_Cfg, 3) + Case "csv" + ;csv:/path/to/file.csv + Case "txt" + ;txt:/path/to/file.txt + Case "sli" + ;sli:/path/to/sqliteDB.sqlite + Case "mar" + ;mar:host=localhost port=3306 dbname=test user=|USERNAME| password=|PASSWORD| + Case "psq" + ;psq:host=localhost port=5432 dbname=test user=|USERNAME| password=|PASSWORD| + Default + State = "Failed" + ProcedureReturn @Failed + EndSelect +EndProcedure + +Procedure.s GetUserFromDBCFG(DB_Cfg.s) + Protected Pos_Start, Pos_End, User_Name.s + Pos_Start = FindString(DB_Cfg, "user=|", 0) + Len("user=|") + Pos_End = FindString(DB_Cfg, "|", Pos_Start) + User_Name.s = Mid(DB_Cfg, Pos_Start, Pos_End-Pos_Start) + ProcedureReturn User_Name +EndProcedure + +Procedure.s GetPassworfFromDBCFG(DB_Cfg.s) + Protected Pos_Start, Pos_End, User_Password.s + Pos_Start = FindString(DB_Cfg, "password=|", 0) + Len("password=|") + Pos_End = FindString(DB_Cfg, "|", Pos_Start) + User_Password.s = Mid(DB_Cfg, Pos_Start, Pos_End-Pos_Start) + ProcedureReturn User_Password +EndProcedure + +ProcedureCDLL post_test(handler_Map_JSON.s, ContentData.s) + Define *Text + Define.s Encoded, TBD, Text, JSONStringToMap + Define MyThreadJSON, File + NewMap Header.s() + File = CreateFile(#PB_Any, "test.log") + WriteStringN(File, "handler_Map_JSON:") + WriteStringN(File, handler_Map_JSON) + WriteStringN(File, "Content Data:") + WriteStringN(File, ContentData) + + JSONStringToMap = handler_Map_JSON + If JSONStringToMap <> lhs_web_helper::#error_string + MyThreadJSON = ParseJSON(#PB_Any, JSONStringToMap) + If MyThreadJSON + ClearMap(Header()) + ExtractJSONMap(JSONValue(MyThreadJSON), Header()) + FreeJSON(MyThreadJSON) + EndIf + EndIf + + NewMap Response.s() + TBD="

FormularPost


"+#CRLF$ + ResetMap(Header()) + While NextMapElement(Header()) + TBD = TBD+"
"+MapKey(Header())+" : "+Header()+"

"+#CRLF$ + Wend + ContentData = URLDecoder(ContentData, #PB_UTF8) + Text = ~"" + + "" + + ~"" + + "Alle Client Headers"+TBD+"

ConentJSON


"+ContentData+"" + *Text = AllocateMemory(StringByteLength(Text, #PB_UTF8)) + PokeS(*Text, Text, -1, #PB_UTF8) + Encoded = Base64Encoder(*Text, MemorySize(*Text)) + Response(lhs_web_helper::#cha_R_ResponseContentType) = lhs_web_helper::#response_string + Response(lhs_web_helper::#cha_R_StringBase64) = Encoded + Response(lhs_web_helper::#cha_R_ResponseType) = lhs_web_helper::mimetype("html") + Response(lhs_web_helper::#cha_R_http_head_status) = "200 Ok" + + ZumSenden = lhs_web_helper::MapToJSONString(Response()) + WriteStringN(File, "ZumSenden:") + WriteStringN(File, ZumSenden) + CloseFile(File) + ProcedureReturn @ZumSenden + +EndProcedure \ No newline at end of file