Nikita Savchenko · Jun 1, 2017 go to post

Thanks Sean!

No. It was build over REST indeed while WebTerminal, from very first its version used WebSockets. However, the same interface can be implemented over WebSockets :) In WebTerminal, there is a simple JSON messaging, there is no need to add more tools there I think.

Nikita Savchenko · Jun 15, 2017 go to post

Evgeny already shared a thought that telnet should not be opened on any server. I agree. But what is the main difference of opened local port 23 and management portal, available through the web? Both of this two ask for login and password. What is the security risk here?

Nikita Savchenko · Jun 15, 2017 go to post

Once you configure SSL (HTTPS) and choose a strong passwords for Caché users there will be no security concerns. There are already some web applications in Caché, WebTerminal by its means is not different from them. It born to introduce some features people would like to use like Evgeny mentioned.

Nikita Savchenko · Jun 15, 2017 go to post

Windows-only? Hmm. So I am throwing the idea about telnet out. Thanks!

Maybe there are other ways to enter the terminal "programmatically" for all platforms? What else I have read from the internet is csession thing. Maybe we can run this terminal session from COS and somehow take control over its I/O... What do you think?

Nikita Savchenko · Jun 15, 2017 go to post

Via SSH (putty, etc), am I right that you need to call csession <instance> to enter the Caché terminal? If so, there is no talk about SSH at all. I think there should be a talk about of how to run csession programmatically from Caché ObjectScript. But for remote sessions, without WebTerminal's code installed on the system, it makes sense.

Nikita Savchenko · Jun 16, 2017 go to post

Sounds good. I think I need to do a little research on Caché ssh (internal ssh?) to imagine how this can work. Thank you.

Nikita Savchenko · Jun 26, 2017 go to post

Hello Yuval!

To install WebTerminal 2.0.0-beta.8 on Caché 2013.1,

1. Go to WebTerminal Downloads and download the version 2.0.0-beta.8, which is the XML file. This page also has some instructions about how to set it up.

2. Using Studio or whatever you like, import this XML file into the %SYS namespace and compile all imported classes / CSP pages. If you have the "access error" while importing classes, then you need to temporarily enable write access to CACHELIB database, see here how.

3. Open <host>:<port>/csp/sys/webterminal/index.CSP page in the browser.

The dark part of using v2 is that this version of WebTerminal is very old and have a lot of things that were improved in 2 major releases v3 and v4. Furthermore, despite of it was tested on 2013.1 (some particular version) it may not work there now, as it seems like some changes in WebSockets appeared in InterSystems WebSockets engine, and probably 2013.1 may have a minor release adding them. But anyway, you can try.

Versions 3 and 4 of WebTerminal is not compatible with 2013.1 for the only reason — they use %CSP.REST classes. You can try to port WebTerminal resources onto CSP, but this may not be trivial.

Let me know if this helps! I will add this instructions to the WebTerminal downloads page. Thanks!

Nikita Savchenko · Jun 26, 2017 go to post

You are welcome! Glad to hear that it works. I hope that functionality WebTerminal v2 has will be enough!

Nikita Savchenko · Jun 26, 2017 go to post

Thank you Stephen for your feedback. I will try my best in finding the way to make it all work together.

Nikita Savchenko · Jun 26, 2017 go to post

Joining this question.

It would also be nice if someone could describe how to catch and process I/O at this point. Ideally I am looking for something like:

set pseudocode = ##class(Any.Util).Execute("cmd") // let's say on Windows
do pseudocode.Write("ipconfig")
// loop may go here
set data = pseudocode.Read()
// loop may close here
// ... and the data is the stdout of the process!

 Thanks.

Nikita Savchenko · Nov 27, 2017 go to post

Thank you very much, Robert! Good to know about MANAGEDEXTENT, I have never heard of it.

Do you think it's okay just to copy storage definition/globals as people suggest below? (to duplicate globals data and alter storage definition to use new globals)

Nikita Savchenko · Dec 20, 2017 go to post

Hi Alexey!

This is a known issue I still didn't figure out how to solve. If you can help here in any aspect (for example, how did you figured out that the thing is in DAQ() code?), it is very welcome. Please - continue bug/feature discussions as well as this one on Github.

In short, WebTerminal had problems with mnemonics, and what I did to solve them is a bit crazy - I just copied the code from %X364 to let them work here, as that code was utility. Maybe, there is a better solution, but I didn't came to it because of my lack of experience at some point.

Alexey, any help is very welcome. Do you know where even to find ^JOBEXAM's code to investigate the problem? Thanks!

Nikita Savchenko · Dec 21, 2017 go to post

Nice! Thanks! At least I diagnosed the problem: that's because I/O redirection, there's no I/O redirection routines in a new mnespace if the routine performs any writes or reads.

We need to find a better way to intercept Caché process I/O. Any help is very welcome!

Nikita Savchenko · Jan 29, 2018 go to post

Thank you Rich for noticing this. We’ll update the links shortly. This problem is related to WebTerminal repository migration to intersystems-community organization on Github. Follow WebTerminal there!

Nikita Savchenko · Mar 6, 2018 go to post

Hello Kumar!

Did you compile the classes you’ve imported? Try importing and compiling ClassExplorer.xml once again.

Nikita Savchenko · Mar 6, 2018 go to post

Hello Alexander!

Yes, these are definitely the good points to improve the application. But most likely Class Explorer will be rewritten from scratch rather than enhanced with new features. This is because the internal framework choosed for development on the very early stages is very hard to extend.

We’ll take a note you mentioned for the future software! Thank you! Maybe you’ll also like my other projects like Caché Visual Editor, check them out.

Nikita Savchenko · Mar 6, 2018 go to post

Did you compile them in samples namespace as shown in webapp settings? Also are you sure that nothing unexpected is set up in front of Caché which can prevent normal routing (like load balancers/other routers)?

Nikita Savchenko · Mar 14, 2018 go to post

So this is strange. Try installing some of my other projects like WebTerminal or Caché Visual Editor and check whether they have the same issue. If yes, double check your Caché security settings, and especially web apps and their privileges.

Nikita Savchenko · Oct 18, 2018 go to post

Hi Mike!

When WebTerminal says “See You!”, it means that the server process normally exited. Which means that something prevents WebTerminal from running normally on the server or terminates WebSocket connection.

Try to delete WebTerminal classes and install it again into different clear namespace (like USER). Does it help?

Nikita Savchenko · Feb 19, 2019 go to post

Nice job guys, looks great!

I've noticed you multiply estimated gas by 100 - why do you need this? Gas estimations calculated by providers can be inaccurate but they're always equal or higher than the actual gas price.

Can't wait to see your next article and the example you provide. In our case, we've implement recurring billing in Ethereum blockchain. If you're curious, you are welcome to read my article about recurring billing in blockchain or even try how this works.