gjsjohnmurray / webterminal-vscode

Launch WebTerminals from InterSystems Server Manager
MIT License
2 stars 0 forks source link

Launch WebTerminals from InterSystems Server Manager

This extension adds a command button to each entry in the InterSystems Server Manager tree. Clicking the button creates a VS Code tab containing a WebTerminal connected to the chosen server.

The button is also available under the Namespaces tree of each server. Use it there to start your WebTerminal in the chosen namespace. This action also adds the namespace name to the label of the WebTerminal tab.

If you prefer to open a WebTerminal externally in your default web browser, use the context menu of the server row or namespace row. Alternatively hold the Alt key down when clicking the button.

Server Manager tree

The extension competed in the InterSystems Grand Prix 2022 programming contest. Thanks to those who voted for it.

Installation

The extension is published on Marketplace. Either install it from there, or search for its identifier georgejames.webterminal-vscode in the Extensions view of VS Code.

This extension depends on the InterSystems Server Manager extension, and will install it automatically if necessary.

WebTerminal must already be installed on the target InterSystems servers. See here for instructions. The current WebTerminal version (4.9.4) is documented as working on versions from 2014.1 upward.

If you only want to open WebTerminals in your browser using the context menu (see above), no further setup is required.

To launch them in VS Code tabs do the following:

This procedure has been verified with:

  • IRIS 2020.1.1 and IIS 10.0 web server
  • IRIS 2021.1.2 and Apache 2.4.29

Correct operation on other products and versions remains unproven.

  1. In Portal's System Administration > Security > Applications > Web Applications page, create a new entry copied from /terminal. Name the copy /terminal-vscode. Suggested description is Copy of /terminal for use by georgejames.webterminal-vscode extension

  2. Set the Session Cookie Scope of the new /terminal-vscode application to the value None.

  3. Configure a web server to use InterSystems Web Gateway so it can serve your web applications securely over https. As a minimum it needs to serve the following applications:

    • /api/atelier
    • /terminal
    • /terminal-vscode
    • /terminalsocket
  4. Configure your Server Manager connection to use this web server. Use a hostname for which the web server's certificate is valid. If the certificate is self-signed or is issued by a CA that your workstation doesn't automatically trust you will also need to do the following sub-steps, otherwise the connection is likely to fail:

    • Be using Server Manager 2.0.10 or later.
    • Have the setting "http.proxyStrictSSL": false at Workspace or User level.
  5. Patch WebTerminal.Router.cls in the namespace where you installed WebTerminal, adding these lines and recompiling the class after saving it:

    Parameter HandleCorsRequest = 1;
    Parameter UseSession As BOOLEAN = 1;
  6. Make sure that the account used by the secure web server's InterSystems Web Gateway (typically CSPSystem) has at least READ privilege on the security resource which protects WebTerminal's code database.

Release Notes

See the CHANGELOG for changes in each release.