diff --git a/CHANGELOG.md b/CHANGELOG.md index c46731d..e183957 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,4 @@ # Change Log -All notable changes to the "objectscript-error-wizard" extension will be documented in this file. -Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. - -## [Unreleased] -- Initial release \ No newline at end of file +## 1.0.0 (28-May-2022) +* Initial release. Entered into the [InterSystems Grand Prix 2022](https://openexchange.intersystems.com/contest/23) programming contest. diff --git a/README.md b/README.md index c1093ac..7201fc3 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,44 @@ # Launch WebTerminals from InterSystems Server Manager -This extension adds a command button to each entry in the [InterSystems Server Manager](https://marketplace.visualstudio.com/items?itemName=intersystems-community.servermanager) tree. With this button you can launch a [WebTerminal](https://openexchange.intersystems.com/package/WebTerminal) onto the chosen server. +This extension adds a command button to each entry in the [InterSystems Server Manager](https://marketplace.visualstudio.com/items?itemName=intersystems-community.servermanager) tree. Clicking the button creates a VS Code tab containing a [WebTerminal](https://openexchange.intersystems.com/package/WebTerminal) connected to the chosen server. -The button is also available in the Namespaces tree of each server. Use it there to start your WebTerminal in a specific namespace. This action also adds the namespace name to the label of the WebTerminal tab. +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. -The launch button creates a WebTerminal in a tab in VS Code. If you prefer to open WebTerminal in your default web browser, use the context menu of the server row or namespace row. + If you prefer to open a WebTerminal externally in your default web browser, use the context menu of the server row or namespace row. -## Requirements + ![Server Manager tree](images/README/demo1.gif) -This extension requires the InterSystems Server Manager extension to be installed, and will install it automatically if it is not. +## Installation -WebTerminal must already be installed on the target servers. +This extension depends on the InterSystems Server Manager, and will install it automatically if necessary. -## Release Notes +WebTerminal must already be installed on the target InterSystems servers. See [here](https://intersystems-community.github.io/webterminal/#downloads) for instructions. The current WebTerminal version (4.9.3) 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: -### 0.0.1 +1. In Portal's System Administration > Security > Applications > Web Applications page, create a new entry copied from `/terminal`. Name the copy `/terminal-vscode`. + +On InterSystems IRIS 2020.1.1 and later the following additional steps are necessary as a consequence of [SGM031 (Support SameSite for CSP session and user cookies)](https://docs.intersystems.com/iris20201/csp/docbook/relnotes/index.html#Changes_2020.1.1_UpgradeChecklist_SGM031): + +2. Set the `Session Cookie Scope` of the new `/terminal-vscode` application to the value `Strict`. +3. Configure a web server to use [InterSystems Web Gateway](https://docs.intersystems.com/iris20212/csp/docbook/DocBook.UI.Page.cls?KEY=GCGI_intro) 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-beta.2](https://github.com/intersystems-community/intersystems-servermanager/releases/download/v2.0.10-beta.2/servermanager-2.0.10-beta.2.vsix) 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 this line and recompiling the class after saving it: +``` + Parameter HandleCorsRequest = 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 -First build. +See the [CHANGELOG](https://marketplace.visualstudio.com/items/georgejames.webterminal-vscode/changelog) for changes in each release. diff --git a/images/README/demo1.gif b/images/README/demo1.gif new file mode 100644 index 0000000..0b7a180 Binary files /dev/null and b/images/README/demo1.gif differ diff --git a/package.json b/package.json index a234378..fc3b3e1 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "webterminal-vscode", "displayName": "Launch WebTerminals from InterSystems Server Manager", "description": "Adds WebTerminal launch buttons to the InterSystems Server Manager tree", - "version": "0.0.2", + "version": "1.0.0", "publisher": "georgejames", "license": "MIT", "keywords": [ diff --git a/src/webTerminalPanel.ts b/src/webTerminalPanel.ts index 1283077..8baf803 100644 --- a/src/webTerminalPanel.ts +++ b/src/webTerminalPanel.ts @@ -122,7 +122,7 @@ export class WebTerminalPanel {
  • Connection specifies a hostname which matches the target server's certificate.
  • Web application /terminal-vscode was added as a copy of WebTerminal's /terminal application but with Session Cookie Scope set to None.
  • The Parameter HandleCorsRequest=1 patch was added to WebTerminal.Router.cls and the class was recompiled.
  • -
  • The account use by the Web Gateway (typically CSPSystem) has at least READ privilege on the security resource which protects WebTerminal's code database. +
  • The account used by the Web Gateway (typically CSPSystem) has at least READ privilege on the security resource which protects WebTerminal's code database. Use the WebTerminal in External Browser option from the context menu of the server's row in the Server Manager tree to verify some of these factors.