Difference between revisions of "Telstar Viewdata System"

From Telstar Wiki
Jump to navigation Jump to search
 
(47 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''Please note this wiki relates to [https://en.wikipedia.org/wiki/Telstar_Viewdata Telstar 2.0 only!]''' Telstar 1.0 (https://bitbucket.org/johnnewcombe/telstar-server-1.0/wiki/Home) is no longer under development. For the main differences between this version and previous versions see [[Version Differences]].
== Introduction ==


[[File:987672554-Pages wide.png]]
[[File:987672554-Pages wide.png]]


'''Please note TELSTAR 2.0 Alpha is still under development and subject to change.'''
TELSTAR is both a a videotex system and a videotex service. The articles here relate mainly to installing and managing a standalone 'Telstar' system. Details of the current videotex service can be found at https://glasstty.com.
 
TELSTAR is both a a videotex application and a videotex service. Details of the current videotex service can be found at https://glasstty.com.
 
The TELSTAR videotex system, provides a simple viewdata/videotext platform similar to those that were prevalent during the 1980s such as Prestel (https://en.wikipedia.org/wiki/Prestel).
 


 
The TELSTAR videotex system, provides a simple viewdata/videotex platform similar to those that were prevalent during the 1980s such as Prestel (https://en.wikipedia.org/wiki/Prestel).
Content for the TELSTAR system is based on simple json files with support for the popular frame editor available at https://edit.tf. As prviously mentioned, frames can also be created programatically through the use of plug-ins.


The videotex implementation described here can be accessed over the internet using modern *internet modems* in conjunction with historic Viewdata and videotex terminals and home computers of the 1980s. In addition the Telstar Viewdata Client can be used with modern computers (MacOS, Linux, Windows).
The videotex implementation described here can be accessed over the internet using modern *internet modems* in conjunction with historic Viewdata and videotex terminals and home computers of the 1980s. In addition the Telstar Viewdata Client can be used with modern computers (MacOS, Linux, Windows).
Line 16: Line 13:
TELSTAR is is designed to run in a Docker environment and is supplied as a Docker image (see https://hub.docker.com/repository/docker/johnnewcombe/telstar). The system can be installed with a few simple Docker commands or by using Docker Compose. Telstar can also be run under a Kubernetes environment.
TELSTAR is is designed to run in a Docker environment and is supplied as a Docker image (see https://hub.docker.com/repository/docker/johnnewcombe/telstar). The system can be installed with a few simple Docker commands or by using Docker Compose. Telstar can also be run under a Kubernetes environment.


The Docker image described here is a full implementation of TELSTAR application, and whilst the system is comprehensive, it is fairly simple to set up. The system can be extended using a very simple plugin architecture and this can be used to add and update content (frames) as required.
Content for the system is based on simple json files, these are added to the system and updated using a command line utility ''telstar-util'' in conjunction with the Telstar API. Telstar includes support for the popular frame editor available at https://edit.tf.


== Installation ==
The Docker image described here is a full implementation of TELSTAR application, and whilst the system is comprehensive, it is fairly simple to set up. In addition the system can be extended using a very simple plugin architecture.


Telstar is implemented using Docker containers and can be managed using Portainer if desired (see [[Managing Telstar with Portainer]]). Details of how to install Telstar are detailed in the article [[Installing Telstar]].
For the main differences between this version and previous versions see [[Version Differences]].


== Installation ==


=== Create the Docker Network and Volumes ===
Telstar is implemented using Docker containers and is managed using Portainer. Details of how to install Telstar are detailed in the article [[Installing Telstar]].
 
The Docker network is used to allow communication between the TELSTAR application and the ''mongo'' database. The volumes provide a means to persist configuration data, plugins to be added and the ''mongo'' databse itself.
 
The following commands will create the resources required.
 
    $ docker network create telstar-network
    $ docker volume create telstar-volume
    $ docker volume create mongo-volume
 
=== Pull the Images and Run the Containers ===
 
Pull the required images as follows.
 
    $ docker pull johnnewcombe/telstar
    $ docker pull mongo
 
''Please note that the tag used with the official mongo image may need to be set to the system architecture that is to be used. Please see https://hub.docker.com/_/mongo.//
 
There are several ways to run the TELSTAR application, this ''Getting Started'' example uses simple Docker commands. See [[Orchestrating Telstar with Docker Compose]] and [[Orchestrating Telstar with Kubernetes]] sections for other examples.
 
Start the ''mongodb'' container and connect it to the previously created network using the command below.  
 
''Please note that the '--name' parameter is important as it is used as part of the database connection string from the TELSTAR container.''
 
    $ docker run --name telstar-mongo --network telstar-network -v mongo-volume:/data/db -d -e MONGO_INITDB_ROOT_USERNAME=mongoadmin -e MONGO_INITDB_ROOT_PASSWORD=secret mongo
 
The Docker ''run'' command can be used to start the Telstar container and connect it to the previously created network. Note that in the example below the internal port is specified as 6512 and that this is mapped to the same port on the host system. This is also specified at the end of the command to inform TELSTAR that this is the port to listen on.
 
    $ docker run --rm -d --name telstar-server --network telstar-network -p 6512:6512 -v telstar-volume:/opt/telstar/volume johnnewcombe/telstar server --port=6512
 
In order to add some example content to the system, the ''init'' parameter can be used as in the example below.
 
    $ docker run --rm --name telstar-server --network telstar-network  johnnewcombe/telstar --init
 
If the ''--init'' switch is used as in the example above, the service will be running with some example content (see [[Example Content]]) and can be accessed using a suitable client.
 
The simplest way to test the system from a desktop machine is to use Telnet. TELSTAR is not a Telnet application but telnet can be used to provide a ''sanity check'' e.g.
 
    $ telnet <ip-of-docker-host> <port-used-for-telstar>
 
If the system is working, a display similar to the following would be shown.
 
    Connected to glasstty.com.
    Escape character is '^]'.
    20201128T1316Z
    L            TE
    ST
    Welcome   
   
    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
            Welcome to theTELSTAR
              videotex service.
        You are connected toELIOT.
    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    ...
 
The screen looks a little garbled simply because TELSTAR is a videotex application not a Telnet application.
 
The Docker environmemnt can be managed using Portainer, see [[Managing Telstar with Portainer]].


[[File:2827664245-portainer.png]]
[[File:2827664245-portainer.png]]
Line 91: Line 27:
== Pages and Frames ==
== Pages and Frames ==


As is typical with interactive videotex systems, pages are numbered from 0 to 999999999 and consist of one or more frames with the suffix a-z, for example the first frame for page 200 would be 200a, the second 200b and so on (see [[Routing]]) for more details). These frames are stored within TELSTAR's database as ''JSON'' objects (see https://www.json.org/).
As is typical with interactive videotex systems, pages are numbered from 0 to 999999999 and consist of one or more frames with the suffix a-z, for example the first frame for page 200 would be 200a, the second 200b and so on (see [[Routing]]) for more details). These frames are stored within Telstars's database as JSON objects (see https://www.json.org/) and uploaded to Telstar using a simple command line utility.


The simplest frame that can be viewed on TELSTAR would be defined as follows. This would create a simple information frame with some default content.
The Telstar utility program simply interacts with the Telstar API which is a restful API. This can be used directly by any software making it simple to programitically manage pages and routing information. Further details of the Telstar API and the command line utility can be found in the section [[The Telstar API]].
 
The simplest frame that can be viewed on TELSTAR would be defined as follows. This would create a simple information frame with some flashing content.


     {
     {
Line 101: Line 39:
       },
       },
       "visible": true,
       "visible": true,
      "content": {
        "data": "[D]This is page[F]101a",
        "type": "markup"
      }
     }
     }




[[The Telstar API]] can be used to add this and other frames to the system.
In this example [[Markup]] has been used within the content, however, other content types can be used including edi.tf urls. See the section [[Frames]] for details.
 
Shown below is a more comple example of a JSON defined frame. With this particular frame, the actual viewdata content has been created using the editor at http://edit.tf, this can be seen in the ''content.data'' and ''content.type'' keys. The example below is a simple information page with some simple routing (see [[Routing]). Pasting the ''content.data'' value into a browser will show the page and allow it to be edited.
 
    {
      "pid": {
        "page-no": 0,
        "frame-id": "a"
      },
      "visible": true,
      "frame-type": "information",
      "content": {
        "data": "http://edit.tf/#0:QIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQMMKAbNw6dyCTuyZfCBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgKJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRAxQR4s6LSgzEEmdUi0otOogkzo0-lNg1JM-cCg8unNYgQIASBBj67OnXllWIMu7pl5dMOndty7uixBoy4dnTQsQIECBAgBIEHfLh2dNCDDuyINmnNl59POzKuQIECBAgQIECBAgQIECBAyQTotemggzoiCvFg1JEWkCnYemnfuw7EGHdkQIECBAgQIASBBp3dMvLdh6ad-7DsQbsvfmgw7siDvlw9NGXkuQIECBAgQM0EKrTkzotOmgkzo0-lNg1JM-cCh79vDDu8oMO7IgQIECAEgQYuvPTuy8-aDdl781wM6EjVKcVBMw9MvPogoctOPLzQIEDRBHn1otKdNizqiCTOjT6U2DUkz5wKlvw5OaxByw6dixAgBIEGHdkQUMPLZpw7cu7ouQIECBAgQIECBAgQIECBAgQIECBA2QR4NSLXg2UFOLSrSYcWmCnWKkWYsQVIsWNBsLEEOHMaIASBBh3ZEHTRlQQ9-zfz54diCHh7ZUGHJ2y7unXllXIECBAgQN0EifMkxINmmCqcsPbLsQYd2RBI37NOTD5QbsvfmuQIECBA4CHQc2TDpT50WogcMGCAScgoOnLTi69MqDpvQdNGnmgQIAaBBzy8u2nHlQd9PTQgqZdmXnvzdO-HllQYd2RBt38sq5AgQOQ0yfHQT40ZYgp2adSLNQSZ0aegTIKkWnUQUIMeLTQIECAokSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEiRIkSJEFeLBqSItJBGn0osODTqIBIM6EQIEFDDnyoFTJywvoECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECA",
        "type": "edit.tf"
      },
      "routing-table": [0,1,11,3,400,5,6,7,800,9,0],
      "cursor": false,
      "author-id": "editf-frame-generator",
      "navmsg-forecolour": "yellow",
      "navmsg-backcolour": "blue",
      "navmsg-highlight": "white"
    }


TELSTAR supports many different types of frame, including ''response frames'' that can capture user data and ''gateway frames'' that provide connectivity to other systems.  
There are many different frame types that can be defined including basic information frames, response frames that can capture user entered data and gateway frames that allow full duplex connections to other systems. The [[The Telstar API]] can be used to all of these frames either using the command line utility (https://glasstty.com/wp-content/uploads/2022/04/telstar-util-2.0.zip) or via custom software as required.


It is not necessary to use the http://edit.tf editor, this is just one option.  
Full details of all of the frame types and how to create them is described in the section [[Frames]].


''Full details of all of the frame types and how to create them is described in the section [[Frames]]''.
== Response Frames and Plugins ==


=== Response Frames and Plugins ===
Response frames are frames that allow a user to enter data to be processed i.e. a frame where a user enters data such as a form. The data from these frames would typically be processed using an external program or script referred to as a plugin. The plugin can be any software that can be executed e.g. a binary program or a scripts such as Python or Bash etc. All that is required is that the plugin returns a json result, this would typically be a frame or collection of frames.


Response frames are frames that allow a user to enter data to be processed i.e. a frame where a user enters data such as a form. The data from these frames wouldt typically be processed using an external program or script referred to as a plugin. The plugin can be any software that can be executed, all that is required is that the plugin can return a json result. The Telstar system https://glasstty.com weather page is handled in this way.
The Telstar system https://glasstty.com weather page is handled using a response page and plugin. The user is presented with a response frame asking for a town or city. This is passed to an external plugin written in Go (Golang) which accesses the Openweather API and returns the current weather and forcast as a collection of JSON frames. These are captured by Telstar and presented to the user.


Plugins are simple to create and deploy within a Telstar container and can be written in any language supported by the platform.
Plugins are simple to create and deploy within a Telstar container and can be written in any language supported by the platform.


''Further details of the Telstar Plugin framework and how to create them can be found in the section [[Implementing Plugins]].''
Further details of the Telstar Plugin framework and how to create them can be found in the section [[Implementing Response Frames]].
 
=== Adding Frames to the System ===
 
Frames can be added to the system using either the Telstar API or by using a plug-in (see [[Implementing Plugins]])
 
The Telstar API, in conjunction with the cross platform Telstar Util software, provides a simple method of creating and managing pages.


The API can be used to retrieve and update frames and configuring routing. The API is a restful API that uses the GET, PUT, POST and DELETE HTTP methods and as such can be used from any application.
== Navigation and Routing ==


Data is passed to and from the API in JSON format, making the system very simple to use in any programming language. The whole API could be used without any programming at all by using a command line utility such as CURL.
Routing in Telstar is handled by an asynchronous process that allows for routing to occur whilst pages are being rendered. This means that is a user of the system can navigate quickly to a desired page by simply entering the page number one character after another. Each successive key press will start the rendering of a page but as each subsequent key is pressed, the rendering is cancelled and the following page is rendered and so on until the desired page is rendered.


''Further details of the Telstar API can be found in the section [[The Telstar API]].''
For example simply pressing ''2 2 2'' from the main index page (Page 0a) of the Telstar service will result in the Guardians UK News being displayed. For this to work correctly, all intermediary pages must be present. Creating routes through the system such as the one described above, should be the aim when designing a videotex system.


== See Also ==
Users can jump directly to a known page by entering the page number using the format ''*page#'', for example, entering ''*92#'' into the current Telstar system will direct you to page 92.


* [[Routing]]
Full details of page numbering, zero page routing and how to modify routing tables can be found in the section [[Routing]]
* [[Frames]]
* [[Configuration Options]]
* [[Managing Telstar with Portainer]]
* [[Orchestrating Telstar with Docker Compose]]
* [[Orchestrating Telstar with Kubernetes]]
* [[The Telstar API]]
* [[Implementing Plugins]]


== Attributions ==
== Acknowledgements and Attributions ==


The website icon is derived from work by Dan Farrimond. This original work and the icon is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license (https://creativecommons.org/licenses/by-sa/3.0/deed.en).
The website icon is derived from work by Dan Farrimond. This original work and the icon is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license (https://creativecommons.org/licenses/by-sa/3.0/deed.en).

Latest revision as of 13:04, 5 August 2023

Please note this wiki relates to Telstar 2.0 only! Telstar 1.0 (https://bitbucket.org/johnnewcombe/telstar-server-1.0/wiki/Home) is no longer under development. For the main differences between this version and previous versions see Version Differences.

Introduction

987672554-Pages wide.png

TELSTAR is both a a videotex system and a videotex service. The articles here relate mainly to installing and managing a standalone 'Telstar' system. Details of the current videotex service can be found at https://glasstty.com.

The TELSTAR videotex system, provides a simple viewdata/videotex platform similar to those that were prevalent during the 1980s such as Prestel (https://en.wikipedia.org/wiki/Prestel).

The videotex implementation described here can be accessed over the internet using modern *internet modems* in conjunction with historic Viewdata and videotex terminals and home computers of the 1980s. In addition the Telstar Viewdata Client can be used with modern computers (MacOS, Linux, Windows).

TELSTAR is is designed to run in a Docker environment and is supplied as a Docker image (see https://hub.docker.com/repository/docker/johnnewcombe/telstar). The system can be installed with a few simple Docker commands or by using Docker Compose. Telstar can also be run under a Kubernetes environment.

Content for the system is based on simple json files, these are added to the system and updated using a command line utility telstar-util in conjunction with the Telstar API. Telstar includes support for the popular frame editor available at https://edit.tf.

The Docker image described here is a full implementation of TELSTAR application, and whilst the system is comprehensive, it is fairly simple to set up. In addition the system can be extended using a very simple plugin architecture.

For the main differences between this version and previous versions see Version Differences.

Installation

Telstar is implemented using Docker containers and is managed using Portainer. Details of how to install Telstar are detailed in the article Installing Telstar.

2827664245-portainer.png

Pages and Frames

As is typical with interactive videotex systems, pages are numbered from 0 to 999999999 and consist of one or more frames with the suffix a-z, for example the first frame for page 200 would be 200a, the second 200b and so on (see Routing) for more details). These frames are stored within Telstars's database as JSON objects (see https://www.json.org/) and uploaded to Telstar using a simple command line utility.

The Telstar utility program simply interacts with the Telstar API which is a restful API. This can be used directly by any software making it simple to programitically manage pages and routing information. Further details of the Telstar API and the command line utility can be found in the section The Telstar API.

The simplest frame that can be viewed on TELSTAR would be defined as follows. This would create a simple information frame with some flashing content.

   {
     "pid": {
       "page-no": 101,
       "frame-id": "a"
     },
     "visible": true,
     "content": {
       "data": "[D]This is page[F]101a",
        "type": "markup"
     }
   }


In this example Markup has been used within the content, however, other content types can be used including edi.tf urls. See the section Frames for details.

There are many different frame types that can be defined including basic information frames, response frames that can capture user entered data and gateway frames that allow full duplex connections to other systems. The The Telstar API can be used to all of these frames either using the command line utility (https://glasstty.com/wp-content/uploads/2022/04/telstar-util-2.0.zip) or via custom software as required.

Full details of all of the frame types and how to create them is described in the section Frames.

Response Frames and Plugins

Response frames are frames that allow a user to enter data to be processed i.e. a frame where a user enters data such as a form. The data from these frames would typically be processed using an external program or script referred to as a plugin. The plugin can be any software that can be executed e.g. a binary program or a scripts such as Python or Bash etc. All that is required is that the plugin returns a json result, this would typically be a frame or collection of frames.

The Telstar system https://glasstty.com weather page is handled using a response page and plugin. The user is presented with a response frame asking for a town or city. This is passed to an external plugin written in Go (Golang) which accesses the Openweather API and returns the current weather and forcast as a collection of JSON frames. These are captured by Telstar and presented to the user.

Plugins are simple to create and deploy within a Telstar container and can be written in any language supported by the platform.

Further details of the Telstar Plugin framework and how to create them can be found in the section Implementing Response Frames.

Navigation and Routing

Routing in Telstar is handled by an asynchronous process that allows for routing to occur whilst pages are being rendered. This means that is a user of the system can navigate quickly to a desired page by simply entering the page number one character after another. Each successive key press will start the rendering of a page but as each subsequent key is pressed, the rendering is cancelled and the following page is rendered and so on until the desired page is rendered.

For example simply pressing 2 2 2 from the main index page (Page 0a) of the Telstar service will result in the Guardians UK News being displayed. For this to work correctly, all intermediary pages must be present. Creating routes through the system such as the one described above, should be the aim when designing a videotex system.

Users can jump directly to a known page by entering the page number using the format *page#, for example, entering *92# into the current Telstar system will direct you to page 92.

Full details of page numbering, zero page routing and how to modify routing tables can be found in the section Routing

Acknowledgements and Attributions

The website icon is derived from work by Dan Farrimond. This original work and the icon is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license (https://creativecommons.org/licenses/by-sa/3.0/deed.en).