You are not logged in.
Thanks
this issue has been solved,
but this mormot.net.acme has found a new issue here, I have submitted a new topic
An error occurred while calling the completedomainregistero function:
EXC EJwsHttp {Message:"Error 400 [Error parsing certificate request: asn1: structure error: tags don't match (16 vs {class:0 tag:13 length:45 isCompound:true}) {optional:false explicit:false application:false private:false defaultValue:<nil> tag:<nil> stringType:0 timeType:0 set:false omitEmpty:false} certificateRequest @2] while querying https://acme-v02.api.letsencrypt.org/acme/finalize/1349321746/213579860876"} [CheckCertificates] at 4c4526
I trace that in asm code, the comparison of the first 4 bytes is already inconsistent
The received data url:
/.well-known/acme-challenge/Fx3W3J_cIlgHswjpA_NMDES4GPJ0acGEBHtXaCgTlsM
In line 1264 of the mormot.net.acme unit, CompareMem(P, @_ACME_CHALLENGE_PATH, ACME_CHALLENGE_PATH_LEN) executes incorrectly and returns false all the time.
My environment is lazarus 3.99, FPC3.3.1(i386), windows 10
Thank you for your quick response.
The program is running normally.
Thank you again for your contributions to the world of pascal
this is my code:
registerOpenSsl;
gAcmeLetsEncryptServer:=TAcmeLetsEncryptServer.create(TsynLog, TacmeDaemonSettings(settings).keyStoreFolder,
ACME_LETSENCRYPT_URL,'','abcdefg',-1,'8084');
gAcmeLetsEncryptServer.LoadFromKeyStoreFolder;
gAcmeLetsEncryptServer.Redirect('xxxx.com','https://www.xxxx.com');
gAcmeLetsEncryptServer.Redirect('www.xxxx.com','https://www.xxxx.com');
the “AcmeLetsEncryptServer.Redirect ” has an error at runtime:
Project acmeDaemon raised exception class 'External:ACCESS VIOLATION' with message:Access violation reading from address $7331322D.
in file 'mormot.core.base.pas' at line 4819:if PStrLen(p1-_STRLEN)^=len then
This error is in the execution TAcmeLetsEncrypt. GetClient statements,
Error is in the call:
AcmeLetsEncryptServer. Redirect (' xxxx.com ', 'https://www.xxxx.com');
After introducing the mormot.crypt.openssl unit and calling registerOpenSsl, the issue of x509-es256 not being supported was resolved. But a memory conflict occurred again. When I traced the call to the getClient part of the getClientLocked method in mormot.net.acme, the value of the servername parameter passed changed to an invalid string, causing an error when the FindPropName method was called.
I'm testing this because I got a run-time error when I was using mormot.net.acme saying that X509-es256 is not supported, and acme relies on openssl, so I'm testing to see if openssl has errors
Is my problem, add compile parameter -dUSE_OPENSSL; FORCE_OPENSSL, needs to be recompiled, I am running directly.
mormot2tests project, when setting the compilation option USE_OPENSSL; FORCE_OPENSSL, the project could not compile, indicating that many open_SSL-related variables could not be found.
FPC 3.2.2 ,lazarus 2.2.6
FPC 3.3.1,lazarus 3.99
I've tested the above versions and they don't work.
Also, I found that lazarus.lpk does not contain the file mormot.crypt.x509
Thank you. Yes, you're right. It's up and running.
I want to sort the elements of IKeyValue by Key, and I don't know any good way to do that.
FPC 3.2.2 lazarus2.2.6
Use the class IkeyValue in mormot.core.collections
The following code keeps getting errors: Fatal: Syntax error, ";" expected but "," found.
vparams:specialize IkeyValue<RawUtf8,variant>;
vParams:=Collections.NewPlainKeyValue<RawUtf8, variant>(); //There are errors in this line
Thank you. I'll test it later
The encoded URI is transmitted, but a signature field is added, and the signature field is based on this encoded URI. The result is definitely different if the string contains ~ and %7E
api calls from ali,tencent, or other services will sign the encoded url. If the encoding results are inconsistent, the signature verification will fail
or You can add an argument to the urlencode(urlEncodeName) function, and it is up to the user to decide whether ~ is encoded or not
RFC3986 rules will not encode ~, PHP rawUrlEncode from version 5.3 support RFC3986, the previous version will encode ~, Ali, Tencent api coding is to follow this rule.
In RFC3986, should '+'(43) be converted to %43?
Thanks for your quick response, but shouldn't the space2plus argument for calling _UrlEncode_ComputeLen in urlencodeName be 48('0')? Should it be 43('+').
url encoding in RFC3986 is different from urlEncode in mormot.core.buffers. Spaces cannot be replaced with +
My English is poor, most of these contents are written with the help of translation software, some descriptions may not be accurate, which will cause trouble to you.
At your prompt, I read the source code TrestServerUriContext in detail, and it is indeed possible to override ServiceResultStart and ServiceResultEnd requirements through inherited classes.
Thanks again for the tip.
Thank you for your reply.
This is done using method-based services, which do not take advantage of the convenience of interface-based services. Or, in an interface-based service, how do you get the output parameters to be written in such a format?
In mormot, when the interface-based method returns a value via TrestServerUriContext, can it be wrapped in json format like :
{
code:errcode,
msg:'errmsg',
data/(result):{... } or [... ]
},
Most Rest servers currently communicate with js clients in a format similar to this
Thank you for your reply.
That may be so.
I just have an old project that needs to add some functionality, and I want to use a small part of mormot2's functionality, the wrong part should be left alone. Now delphi7 is rarely used, now using fpc.
I am using Windows 7 32-bit +delphi7 on an old machine
Thank you for your reply.
I have downloaded and installed fastmm4, but an error occurred while running the test program.
In the unit “test. core. Data " line 820, in TTestCoreProcess. MustacheRenderer procedure, an error occurred when calling httpGet, prompt:winhttp. DLL error 2EE7 .
An error message was displayed for the mormot2Tests project. The test program could not be executed.
Does mormot2 not support delphi7?
Thank you, that's what I hope, I don't have to check again if it's an empty string
function CsvToIntegerDynArray(Csv: PUtf8Char; var List: TIntegerDynArray)
If csv is empty string , list will contain a [0].
Is this a bug? or That should be it
Thanks for your reply
TRestServer must be created in the DLL?
it should be: TJsonSerializer.registerObjArrayForJson(T,Tweek) or Rtti.registerObjArray(T,Tweek)
Yes, the service description can now be displayed in Chinese normally.
thank you @ab
I used FPC3.2.4, lazarus 2.2.4 .
TsdExtDaemonSetting to set displayName in Chinese. The service can be installed normally, but in the service manager, the ServiceDescription of the service will display garbled characters.
i m reading/learning the source code of mormot2,
in mormot.net.client
constructor THttpRequestCached.Create
error:
line 3236:fClient := fClient.Create(aOnlyUseClientSocket);
The file path for item96--item98 in file mormot2.lpk is incorrect. Mormot.db.rad.ui.* is in folder src/ui
TSynDBdataset is not yet available in mormot 2。
I don't know if you can understand,my english is too poor.
in mormot.db.rad.ui.sql.pas ,
the parameter:ResultSet is not used in TSqlDataSet.PSExecuteStatement