Hi.

You could do that with the following way

1. Define your own custom event class (inherit from %CSp.SessionEvents)  then you may interact with the session creation/deletion:
2. In OnStartSession() callback in the event class, you may store the sessionId in your own global/table.
3. In OnEndSession() callback in the event class you may delete/kill your own data.
4. Pass the SessionId from the parrent window to the child (if you do not have it there already)
5. Have a timeout JS code to call the server using #server or #call every x sec. with a check of your own global/table for this SessionId.
If not exist - preform a "windowsClose" or a in-window message...

Here is more documentation abourt it :

https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCSP_sessions

Hello,

As I understand, you want to have Cache as a client, doing a post toward a secure web page.
For this you need to define an SSL "Client".

1. Go to "System Administration" --> "Security" --> "SSL/TLS configuration" --> "Create new configuration"

2. Give any name you want in "Configuration name" for example : SSL

3. Default values for "Type" = "client" and "Enabled"

4. Clisk "Test" button (before save) enter a web site (google.com) click "ok" then enter port = 443. You should get the following:

"SSL connection succeeded" 

5. Save the configuration.

Using that SSL with %Net.Httprequest - https://irisdocs.intersystems.com/iris20191/csp/documatic/%25CSP.Documatic.cls?APP=1&LIBRARY=%25SYS&CLASSNAME=%25Net.HttpRequest

The trick is to use the "SSLConfiguration" property of %Net.HttpRequest class to store the name of the SSL configuration you have devfined earlier.

Here is a sample code :

Req = ##class(%Net.HttpRequest).%New()
Req.Server = "www.server.com"
Req.SSLConfiguration = "SSL"
Req.InsertFormData("name","value")
Req.Post("/location/path")
Res Req.HttpResponse
$IsObject(Req) Res.OutputToDevice()

Hi,

To get information about a namespace, You may use this code :

(run it only in %sys" namespace) 

Properties variable is passed by ref (i.e. it has a point at the beginning)

%SYS>S Status=##Class(Config.Namespaces).Get("user", .Properties)

%SYS>zw Properties
Properties("Globals")="USER"
Properties("Library")="CACHELIB"
Properties("Routines")="USER"
Properties("SysGlobals")="CACHESYS"
Properties("SysRoutines")="CACHESYS"
Properties("TempGlobals")="CACHETEMP"