Vinculum

From NURDspace
Revision as of 10:04, 25 August 2014 by Zarya (talk | contribs) (Text replacement - "ProjectPurpose=" to "Purpose=")
Vinculum
Vinculum-sketch-0.png
Participants
Skills
Status Active
Niche Software
Purpose Infrastructure
Tool
Location
Cost
Tool category

Vinculum

vinculum-sketch-0.png {{#if:{{{Tool}}} | [[Tool Owner::{{{ProjectParticipants}}} | }} {{#if:{{{Tool}}} | [[Tool Cost::{{{Cost}}} | }}

Description

Tool to consolidate data like sensor data, spaceapi data and mpd. https://github.com/Petraea/vinculum

Concept

Vinculum is a stateless, language-agnostic multidirectional message translating and redirecting engine built with the idea of using the minimal possible user-defined input to allow for maximum benefit. This translates into the Vinculum process opening arbitrary ports or making arbitrary connections on vinculum.nurdspace.lan as requested of it by any user capable of writing lines into its rules file.

The Rules File

The rule file is the core of vinculum and is read, top-to-bottom, on receipt of each line of data. Each line defines:

  • A regex that is run against the body of the message
  • The origin of the message (e.g. TCP:slab.nurdspace.lan:2003, meaning that vinculum will open a TCP connection to slab.nurdspace.lan on port 2003, then match INCOMING messages from this source. Local source sockets e.g. TCP-LISTEN:0.0.0.0:5555 can be defined, both opening said socket, and subsequently matching messages against the regex)
  • The destination of the message (Same rules as above, may be sent to anyone connected to a socket with e.g. TCP-LISTEN, or sent through a connection to a destination)
  • A regex to match for substitutions in the message
  • A regex to substitute (see https://docs.python.org/2/library/re.html#re.sub for format)
  • A continue flag (True or False) that decrees whether the engine should continue to perform matches in subsequent lines or halt here.

Each piece of data is on one line, comma separated (commas can be \'d out if needed in actual lines) and is executed in the order of the vinculum.rules file. The file itself is checked regularly, and upon update the process will attempt to restart itself according to the new configuration (although this is currently a touch buggy).

Protocols available:

  • TCP SEND and LISTEN
  • UDP LISTEN (SEND is a bit more complex...)
  • SSL SEND and LISTEN
  • UNIX file socket SEND and LISTEN

Where does it run?

It is running on a VM with the name vinculum.nurdspace.lan. Code in /opt/vinculum