Skip to content

D-Modem/go3270: Go servers for 3270 terminals

go3270

A Go library for writing TN3270 servers: build 3270 data streams from fields and read back the attention key and the values the user typed.

This is the D-Modem suite's fork of racingmars/go3270 by Matthew R. Wilson, kept API-compatible with it. bbs uses it for its TN3270 callers.

  • Screens from fields, with ShowScreenOpts(), HandleScreen() and RunTransactions()
  • Telnet negotiation, terminal size detection and larger-than-24x80 screens
  • 31 EBCDIC code pages, detected from the client, plus graphic escape (code page 310)
  • In this fork: every query reply kept, programmed symbols, native 3270 vector graphics and images
  • In this fork: IND$FILE file transfer (DFT), the host's side
  • cmd/gfxtest, a TN3270 server for trying graphics on an emulator

Quick start

go get github.com/D-Modem/go3270
import "github.com/D-Modem/go3270"

then see example1 to example5; example4 shows the recommended RunTransactions() structure. Code that imported github.com/racingmars/go3270 changes only its import path.

Documentation

The documentation is also a website, d-modem.github.io/go3270, with reference pages made from the code.

The D-Modem suite

Repository What it is
D-Modem The open V.92 softmodem: dmodemd, libdmodem and the Asterisk, FreeSWITCH and ARI modules
app The D-Modem app for Android and iOS: a dial-up modem on a SIP call
hardware pico-serial: RP2040 serial adapters and phone-line USB sticks
menu modemmenu: the login and menu dial-up callers reach
bbs A bulletin board for telnet, SSH, TN3270 and modem callers
go3270 A Go library for 3270 terminal servers, used by bbs
brand Logos, colours, type and the naming guide

Licence

AGPL-3.0-only (LICENSE), or a commercial licence from the D-Modem Authors (COMMERCIAL-LICENSE.md). The code from upstream stays under its MIT licence (LICENSE-MIT) as well; each file's SPDX-License-Identifier line says which it holds. Contributions come with a contributor agreement (CONTRIBUTING.md).