by using {}  your Jsonobj is already a  %Library.DynamicObject
USER> ZWRITE Jsonobj
Jsonobj=<OBJECT REFERENCE>[1@%Library.DynamicObject]

no need for 
Set Dynjsonobj=##class(%Library.DynamicObject).%FromJSON(Jsonobj)

I found an acceptable workaround.

  • installed telnetd into the container and started it
  • mapped some external port to port 23
  • set this external port  in my cube
  • started the IRIS Terminal
  • BINGO !

You may raise all concerns on Security and Container Isolation.  Accepted! And ignored!
Since THIS solves my issues on optical verification of the user interface.

$system.Util.InstallDirectory()

classmethod InstallDirectory() as %String

Returns the location of the installation directory, i.e. that which is displayed by ccontrol on Unix and VMS, where the .cpf configuration file is kept.

If you are not afraid of using basic COS functionality:
your reload method raises a LOCK ^myRELOAD  
and drops it with completion LOCK -^myRELOAD

Your check utility does the same but with a timeout LOCK ^myRELOAD:0
if it fails - signaled by $TEST=0  you loop and hang around and retry
for success $TEST=1 you go on but release your successful LOCK immediately
not to block anyone else.
 

  • if you have access to the CSP or ZEN page you may just check the user name in method OnPreHTTP or similar, and redirect him to the moon.
  • if can't touch the page then rename it and create a filter page that does a server-side redirect for everyone except the banned user. .

in iris.script for NSP %SYS add

set par("AutheEnabled")=64
set tSC=##class(Security.Applications).Modify("/csp/sys",.par)

the disadvantage:
You are UnknowUser and might need to add the required Roles as well.

set role="%All"
set tSC=##class(Security.Users).AddRoles("UnknownUser",.role,1)

----------------------
my personal approach is to have a fixed port for SMP
and save my   _SYSTEM / SYS in browser with autofill.
 

In IRIS you have in SMP the option to run your Query in background and bypass the timeout.