Skip to content

Latest commit

 

History

334 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ISODE

The ISO Development Environment as preserved and maintained by Wildboar Software.

This project was recently updated to build and run within an Ubuntu Docker container and to support UTF8String attribute values. There may be additional changes from the original ISODE code, which will be documented in the changelog from here on out.

Wildboar Software publishes Docker containers for running Quipu from this repository, and might do so for some of the other apps in the future.

If you find any bugs, please report them to the issues page.

Versioning

The version.* files within each project folder in this repository will no longer be maintained. Eventually this will be eliminated.

Build and Install

If you plan to build or use GDBM-requiring features (or just develop them), you will need to install the headers for this. On Ubuntu, you can run

sudo apt install libgdbm-dev

after which, included <gdbm.h> headers will resolve.

Either way, on a POSIX system, such as Linux, run:

cp config/linux.h h/config.h
cp config/linux.make config/CONFIG.make
cp config/*.local support/
./make everything
sudo ./make inst-everything

Currently, only the everything and inst-everything Make targets work. I hope to change this eventually. inst-everything must be run as an administrative user.

If you are building and installing on a different platform, read the documentation in doc/isode-gen.8.md.

Source tree

ISODE is layered the way the manuals are. Volumes 1–2 of doc/volume*.pdf walk the stack top-down; Volume 3 is FTAM/VT/little services; Volume 4 is the ROSY/PEPY/PEPSY compilers; Volume 5 is Quipu.

Directory Role
config/ Per-OS Makefile and config.h skeletons used before any compile
compat/ Portability helpers, logging, ISO addresses, and isotailor parsing
dirent/ Vendored POSIX-style directory reading for historic UNIX
tsap/ OSI transport (usually TP0 over TCP / RFC 1006)
ssap/ OSI session service
psap/ Presentation elements and BER encoding, not the presentation protocol
psap2/ Connection-oriented presentation protocol
psap2-lpp/ RFC 1085 lightweight presentation over TCP/UDP
acsap/ Association Control (ACSE) — how applications bind
rosap/ Remote Operations (invoke / result / error)
rtsap/ Reliable Transfer of large APDUs
ronot/ RO-BIND / RO-UNBIND mapped onto ACSE
rosy/ Stub generator and runtime for .ry remote-operations specs
pepy/ Historic ASN.1 encoder/decoder compiler (still used by VT and some demos)
pepsy/ Table-driven ASN.1 compiler that replaced pepy/posy for Quipu and SNMP
support/ tsapd, isotailor, and the ISO aliases/entities/services databases
dsap/ X.500 DAP/DSP library, attribute syntaxes, and OID tables
quipu/ Quipu DSA (ros.quipu) and DISH DAP client
ftam/ FTAM protocol library
ftam2/ FTAM client (ftam) and server (ftamd)
ftam-ftp/ Gateway: FTAM initiator that speaks FTP
ftp-ftam/ Gateway: FTP daemon that speaks FTAM
vt/ OSI Virtual Terminal (TELNET profile)
imisc/ “Little services” ROS demo (time, finger, ping, …)
snmp/ 4BSD/ISODE SNMP agent, SMUX, and MIB compiler inputs
others/ Optional demos, MOSY, TS-bridge, and extra Quipu DUAs
paradise/ COSINE PARADISE overlay (DE/IDM DUAs and a few Quipu patches)
include/ Symlink so #include <isode/…> works against h/
patches/ Historic ISODE 8.0 Linux/compiler patches, not the live build

Headers live in h/ (including a generated config.h). Docker, Kubernetes, tests, and util/ are packaging and tooling around this tree rather than OSI protocol code.

Documentation

The five-volume User's Manual and related notes are in doc/. Start with doc/isode-gen.8.md for configuration, doc/volume5.pdf for Quipu, and the per-directory README.md files when browsing source.

Using the Docker Image for Quipu DSA

The docker image for Quipu DSA is published to ghcr.io/wildboar-software/quipu. You can run it like so below without any further configuration:

docker run --rm -it \
     -p 17003:17003/tcp \
     -v $(pwd)/docker/isotailor:/usr/local/etc/isode/isotailor \
     -v $(pwd)/docker/quiputailor:/usr/local/etc/isode/quiputailor \
     -v $(pwd)/docker/db:/usr/local/etc/isode/quipu-db \
     ghcr.io/wildboar-software/quipu:v8.2.1

In the above example, we expose TCP port 17003, which is what listens for ISO Transport Over TCP (ITOT) traffic.

The first volume is the configuration file for OSI networking services. As far as I can see, the only thing it really does it configure logging. In this configuration, all logging is turned on, since directories can involve some debugging out of the box. You can turn the logging volume down in this file; doing so is highly recommended when you're ready to deploy Quipu DSA.

The second volume is the configuration file for Quipu DSA specifically. In this file, you can tell Quipu DSA what it's AE Title, where to find superiors, control replication and caching, and more. Read the documentation in doc/volume5.pdf for more information.

The third volume mounted is the database. Note that you CANNOT start with an empty database. The EDB file MUST be present, and it MUST have an entry defined for cn=Toucan (or whatever you configure your DSA's name to be in quiputailor). Review the documentation on how the mydsaname option in quiputailor affects your startup in doc/volume5.pdf.

To Do

  • Remove pepy and posy entirely. pepsy is the replacement, per Volume 1.
    • vt is the only major project using it.
    • All subprojects in others seem to use it.
  • Unit Tests (using Unity)
    • prim2real
    • BCD code
    • str2pe
  • Fuzz Testing
  • AGENTS.md file?
  • .gitattributes file
  • .editorconfig file
  • AI Security Review
  • Clean up IFP Usage
  • Reproducible Builds
    • Quipu Packaging
      • Debian
      • RPM
      • Snap
      • Arch
      • Brew
      • OCI Container
    • Dish Packaging
      • Debian
      • RPM
      • Snap
      • Arch
      • Brew
      • OCI Container
      • Flatpak
  • End-to-End Tests
  • Doxygen Documentation
  • Clang Formatting
  • Sigstore
  • SBOM
  • Ensure that LPP works
  • Ensure that IDM works
  • New LDAP Syntaxes and TIME types

About

🍻 The ISO Development Environment (ISODE): Quipu X.500 DSA, FTAM, CMIP and more OSI applications.

Topics

Resources

Stars

9 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages