NetTalk Central

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Wolfgang Orth

Pages: 1 [2] 3 4 ... 17
16
Hello all,

since Nettalk 11 requires the latest Visual C++ Redistributables installed on the target machine (because of the most recent OpenSSL), I added a check for these DLLs to make sure, that my server does not return "ERROR: -73 Unable to Listen on TCP Port".

It is probably recommended to add the VC++ Redistributables as an option to the SetupBuilder installation script. If this option is set under "Core Prerequisites", then the installer will look upfront for the existance of those VC++ Redistributables on the target machin. If not at present, the SB-installer will "fix that for you" <g> by simply installing the VC++ version 27702. It took we a while to get the script to accept my desire. But I won!

The SB-installer is now about 30 MB bigger than without those VC++ Redistributables. I tested it by removing the already installed pack from the compüter and then called the installer. Indeed, right after its self-check the installer pops up a message, telling that VC++ Redistributables are missing, offering to install them upfront, before continuing. 
If you want to test yourself, remove the pack by doing a right mouse-click on "Windows Start", select Settings -> Apps and scroll down to "Microsoft Visual C++ 2015-2019 Redistributable" and remove it. (Probably use a test-machine for this - don't blame me later if something gets screwed up!).

So, _IF_ the user has accepted to install that pack, your secure NT 11 should be good.

But what, if the user does _NOT_ accept that pack or the install goes well, but months later the user decides to simply copy the entire folder to another machine... which of course does not have any VC++ redistributables installed. I am pretty sure, it will take quite a long time to find that culprit. I would never ever think of missing that VC++ stuff!

Thats why I added some little check to my server administration program. At start up, it looks for a certain node in the Windows Registry. If not present or not being the version I need to rely on, then I display a message, urging to install that VC++ stuff and then quit.

The variables I use:


Bld             ULONG
Installed       ULONG
Major           ULONG
Minor           ULONG
Rbld            ULONG
Version         CSTRING(201)


The entries in the registry are using DWORD and SZ, so I choosed to use ULONG and CSTRING. It worked with LONG and STRING though.

During INIT of my program, I call a window procedure which is hidden.
Here I fill the variables mentioned above by reading the registry at
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X86
like this:


    Bld         = GETREG(REG_LOCAL_MACHINE, 'SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X86','Bld')
    Installed   = GETREG(REG_LOCAL_MACHINE, 'SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X86','Installed')
    Major       = GETREG(REG_LOCAL_MACHINE, 'SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X86','Major')
    Minor       = GETREG(REG_LOCAL_MACHINE, 'SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X86','Minor')
    Rbld        = GETREG(REG_LOCAL_MACHINE, 'SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X86','Rbld')
    Version     = GETREG(REG_LOCAL_MACHINE, 'SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\X86','Version')


If nothing is installed at all, those numeric values are all 0 (zero).


    IF Installed = 1 AND Bld >= 27702  ! Version 27702 gets installed by SB as of today
        dbgView('All is fine!')
        POST(EVENT:CloseWindow)
    ELSE
        ! Either this or probably CHOOSE()
        IF Installed = 0
            ?STRINGx{PROP:Text} = 'The VC++ Redistributable is not installed.'
        ELSE
            ?STRINGx{PROP:Text} = 'The VC++ Redistributable is not up-to-date! Installed is ' & Version
        END
        0{PROP:Hide} = FALSE
    END


If the user moves the server to a machine without VC++ Redistributables, he / she will get a notice either in the Admin-program now or will find a hint in some logfile.

With HyperActive then I provide a download-link directly to the Microsoft page

https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

for retrieving the VC++ stuff x86: vc_redist.x86.exe manually.

Wolfgang Orth

17
Hello all,

since Nettalk 11 uses OpenSSL 1.1.1 now, it is necessary to have the most recent VC++ Redistributables. They can be found via

https://www.capesoft.com/docs/NetTalk11/NetTalk11Upgrade.htm#ChangesRequired and there "Visual Studio 2017 (x86) runtime":

https://support.microsoft.com/en-za/help/2977003/the-latest-supported-visual-c-downloads

My Question: Which installer to pick?

Is the installer depending on the Windows version (32-/64-bit), that runs on the target machine?

Thank you for a hint
Wolfgang

18
Hi Wolfgang,

>> is it possible to communicate with another software in HL7, using Nettalk?

So HL7 is not a "communication method" - it is a "file layout", so you can rephrase your question as

>> is it possible to communicate with another software in (HL7 / CSV / XML / JSON), using Nettalk?

In other words, from a nettalk point of view, you are passing some data backwards and forwards and the format of that data is irrelevant. NetTalk doesn't care if the data is XML or CSV or JSON or HL7 or EDI or ICS or any of a bunch of other formats.

so, let's change your question a bit;

"Can you create and consume HL7 files in Clarion".

And the short answer is - yes - and it's not hard to do at all.


Thanks for setting things straight, Bruce!

It is as I expected and had hoped. The requesting side will send something ugly to my server, I ripp apart everything and send send back some beauty.

Cool! LOL

19
Your ability to interopt with other systems via Nettalk is likely very true, NT can do pretty much anything.

Hope so! ;-)

But, just like sharing xml or json with other parties, where the data needs to be secure, some methodology to ensure security would be required. This doesn't appear to be part of the HL7 messaging standards. Not unsurprising given its pitched at the ISO-7 level.

Security seems to be the red-headed stepchild of this industry.

20
I guess the bottom line is not really the HL7, but with whom you're trying to connect and what kind of connections they support.

Yes, seems like that.

Right now I have only the request from doctors, who would like our program (checking infusion-drugs of a regime against each other for chemical incompatibilities) be integrated into their everyday-software (Patient-Data-Management-System). No software vendor involved by now,so I have no information. I want to learn about the mechanism before, so when (if ever....) we get in contact, I do not ask stupid questions.

I prefer to ask my stupid questions here in the family! :-)

Thanks
Wolfgang

21
Hello all,

is it possible to communicate with another software in HL7, using Nettalk?

From what I read, HL7 is located on layer 7 (hence its name?) of the OSI-model.

Is anyone able and willing to share, how such a, Example Request / Response looks like.

Does such a HL7-Request look similar? I mean, without that XML-stuff of course, but with their own brew of ||^yadda||whatever||^yadda||more yadda||.

Maybe something like that?

Code: [Select]
HTTP/1.1 200 OK
Date: Fri, 03 Jul 2020 11:28:19 GMT
Expires: Thu, 04 Jul 2019 11:28:19 GMT
Content-Length: 796
Content-Encoding: gzip
Content-Type: text/xml
....

MSH|^~\&|KIS|ADT|LAB|ADT|200510141345||BAR^P12^BAR_P12|ADT03|P|2.5^DEU&&HL70399|||AL|NE||8859/1|||2.16.840.1.113883.2.6.9.66^^2.16.840.1.113883.2.6^ISO
EVN||200510141345
PID|||943246^^^KIS^PI||Nissing^Walter^^^^^L||19480403|M|||Finkengasse 4&Finkengasse&4^^München^XA-DE-BY^89654^DEU^H
PV1||I|CHI^202^2^CH^^N||||||||||||||||654325^^^KIS^VN||||||||||||||||000000|||||||||200510091820
ZBE|234345^KIS|200510121230||REFERENCE
DG1|1||K35.-^Akute Appendizitis^I10-2005||200510141345|ED|||||||||1.1|432113^^^^^^^^^^^^DN||||23543^KIS|A
DG1|2||K35.-^Akute Appendizitis^I10-2005||200510141345|AD|||||||||1.2|432113^^^^^^^^^^^^DN||||23544^KIS|A
DG1|3||K35.0^Akute Appendizitis mit diffuser Peritonitis^I10-2005||200510141345|BD|||||||||1.2|432113^^^^^^^^^^^^DN||||23545^KIS|A


Is HL7 able to communicate with a Nettalk Webserver or maybe Simpleserver?

That yadda-parsing have to be done manually with StringTheory then. But it would be neat, if Nettalk could be used basically.

Thanks for any input,
Wolfgang

22
Hello Bruce,

> I'm curious why you would want the site to be _insecure_?

its this wicked Client-Server-Combo with a self-inflicted certificate on a LAN... <g>

While the Nettalk-Webclient can thankfully be advised to ignore the errors (or actually warnings) caused by that certificate, I have two occasions where I need to display
a) a PDF or
b) a static HTML, which gets generated on-the-fly by the server form the DB. A simple product fact-sheet. It gets displayed by a procedure made with File Explorer. It will soon be replaced by the Chrome Explorer. But both the underlying IE and likely Chromium (not tested yet, but I am fairly confident that it will fail) spit into my beer. And the PDF is displayed at the moment by any webbrowser that is present.

So for these two occasions I need a reliable way to display the data. And that wil be an insecure webserver.

In the future I likely can display those PDF in my own procedure, based on Chrome Explorer. I look forward for this!

It will be interesting to see, how to overcome these obstacles when I enhance my Nettalk-Webclient-EXE with Anyscreen. Yeah, I am scared by nuthing!


> Yes you could just run the exe twice, with different settings,and different service names.

Different service names - can the service names be assigned at runtime? I have not looked for that.

I folloewed Janes advice, to have a separate EXE. Actually I took the existing one, stripped out all methods except the PDF / fact-sheet disply thingie, gave it a new unique name in the SelfService template dialog and it runs well. Usually not my favourite approach, as I have to maintain two different EXE now. But in this case this new, reduced server will undergo minimal changes in the future, if any. So the risk of additional work is bearable.


You could also have 2 webserver procedures in the same app - but that is probably more complicated for you to create.

Well, in Nettalk 9 it was easy. <g>

But its okay the way it is now.

Thanks
Wolfgang

23
Hello Bruce and all others,

coming from Nettalk 9 to Nettalk 11, I have one problem to solve now.
In the past I used to have two objects, one for the insecure, the other for the secure port.
https://capesoft.com/docs/NetTalk11/NetTalk10Upgrade.htm#ListeningOn2Ports

I still have the need to serve both server under one address.
As far as I understand now, I need to have two different server-EXE simultaniously, one listening on the insecure port, the other on the secure port with the self-issued certificate.

The insecure servre will serve some static pages, but probably also the API-dokumentation.

I want to avoid the warnings when I call those static URLs on the secure port, so I am willing for those  manouvers.

For installing / starting / stopping / removing the recent server (NT9) I have an Admin.EXE. Since there will be two EXE now, I look to keep the UX still the same. So only one set of buttons to administer the background service. Having two servers individually to start will lead to a mess.

My idea: Once one server is started (reading the port number from an INI like before), it will then check, whether the other server (same EXE, but different port) runs. If NOT running, then it will start the same EXE with RUN(), passing the other purpose as a parameter. Because the calling program is a background service, the called server with the other port runs with the same credentials, IOW it will be invisible like the service. Which is a desired behaviour.

Now on the buttons to stop / remove the background service, I prepend that service-calls with a NetWebClient method to shutdown the other server. Just issueing a POST(CloseDown) in the service method.

When in the Admin.EXE the service is now restarted, it will perform a check and RUN() for the other server. Probably repeatedly in the TIMER.event. like a kind of watchdog. So the can keep each other running.

To me it sounds reasonable.

Any other opinion?

Thank you in advance!

bye
Wolfgang

24
Web Server - Ask For Help / Re: API field override
« on: March 22, 2020, 07:19:09 AM »
Casey,

I am not in my office righr now, so I have to guess a little.

Do I understand you correct, that you have a table and you want to return this as a view, but this view ought not to ave all fields of the original table, just a limited subset?

Ic ghis is the case, then have a look at the template dialogue, where you arm the VIEW. in my poor memory there is a tab, where you fan pick fields. If none is selected (default), then all fields will be sent. Select /deselect here for a try.

hth
Wolfgang

25
Web Server - Ask For Help / Re: example 79 in 11.21
« on: February 23, 2020, 08:47:32 AM »
Has anyone been able to use this successfully? https://fecipur.org/barcode

thanks..

I got an "error in javascript", but the page was immediatly changed to another page, so I can't tell more.


26
the duplicate warning has been fixed for 11.30 -

I worked around that for now by changing pKey to pPrivateKey, works well.

but isn't causing the GPF.

True!

First thing you need to do with the GPF is post a complete GPF report. See
https://clarionhub.com/t/how-to-improve-the-call-stack-when-your-program-gpfs/188

I did not know that. This hint was very helpful. The GPF happened so early, even GPFreporter did not kick in. But now I found the culprit.

It was INSTRING()!

The source in my APP worked well for several years with Clarion 9 & 10, but now, after converting to Clarion 11, the EXE crashes. The difficult part was to find the error, since I did not suspect INSTRING() to tilt. But once found, I fixed my code now. Conversion is always a kind of improvement. So all is fine now.

Looking forward to 11.30 though.

Thanks all
Wolfgang

27
Hello Bruce and all others,

while converting a Client from Nettalk 9.30 to 11.29 (on Clarion 11.0.13401), I ran into this warning:

Label duplicated, second used: PKEY - D:\Projekte\KiK_5\KiKAdmin\KiKAdmin012.clw:1744,51

which is pointing to

WebClient.CreateAuthorizationStringVapid PROCEDURE(String pAudience,String pSub,Long pExp,String pKey,String pPublicKey)

ReturnValue          ANY

  CODE
  ReturnValue = PARENT.CreateAuthorizationStringVapid(pAudience,pSub,pExp,pKey,pPublicKey)
  RETURN ReturnValue

Does this have anything to do with what Don Ridley mentioned here?
http://www.nettalkcentral.com/forum/index.php?topic=8327.msg33914#msg33914

In case this is relevant, this program is not using ABC, but Clarion-chain templates. (man, that sucks!)

The good news is, that the EXE compiles ... but crashes, when run:

Index out of range
Error point: 00441B12
Process PID=3704  Image: D:\Projekte\KiK_5\KiKAdmin\KiKAdmin.exe
Thread 1  Handle=00000284  TID=8424

Stack frame: 0019F928

Call Stack:
00441B12
00449C43
00469C1B
00497B9F
0049D335
00469877
00468FAC
010CD8F7
010CD3E1

Clarion modules:
01000000  11.00:13401 D:\Projekte\KiK_5\KiKAdmin\ClaRUN.dll
001D0000  11.00:13401 D:\Projekte\KiK_5\KiKAdmin\ClaASC.dll
007C0000  11.00:13401 D:\Projekte\KiK_5\KiKAdmin\ClaDOS.dll
02330000  11.00:13244 D:\Projekte\KiK_5\KiKAdmin\ClaMEM.dll
13000000  11.00:13147 D:\Projekte\KiK_5\KiKAdmin\CLAnet.dll
00790000  11.00:13401 D:\Projekte\KiK_5\KiKAdmin\ClaTPS.dll
00400000  11.00:13401 D:\Projekte\KiK_5\KiKAdmin\KiKAdmin.exe

Thread stack:
0019F920: 97 1F 0C 01  00 00 00 00  60 F9 19 00  12 1B 44 00
0019F930: 00 00 00 00  E8 5B FF 01  00 00 00 00  00 00 00 00
...
...
...

Thanks
Wolfgang

28
Alberto and Bruce both pointed me to change the IDEs language from german (default) to english.

That fixed it! Thank you, guys!

I don't want to be the dramaqueen here, but I was really close to a nervous breakdown.

29

For example, if I want to put a toolbar on a window, and then a Close control template on the toolbar... I'll first put the toolbar on the window.  Then exit and save the window.  Then go back and put the Close button on it. 


We are all conditioned the "Clarion-way". (I know, its SharpDevelop, but hey, it was SV who picked that IDE!)

My problem now is, that I cannot pick ANY control template! Nothing, nada, nix!

I tried a new, very simple one-window APP, to put a ?Close-Button on it. Closing the APP, closing the IDE, rebooting the PC - nothing helped.

And I am sure I am not the only one using Clarion 11.13401.

What a start into the week....

30
Seems as if I found the possible culprit.

This APP is converted from a Clarion 10 / Nettalk 9 APP. However, since Clarion 10 there is a new Control Template, which holds the settings for the certificate. These settigns are not at presence in my converted APP right now.

Now I ran into another problem.... In Clarion 11 134?? I cannot add any Control Template to any window!

Not even a simple ?Close-button.

Weird.

As long as I can't add any Control Template, I can't prove whether those NT-settings would fix my problem.

I suspect I have a much bigger problem right now.

<expletive>

Something in this IDE seems top bei serious broken......

Pages: 1 [2] 3 4 ... 17