fautoreJSON

The fautoreJSON component (otherwise known as "Guido") is the API engine. It is the "bouncer at the door" of Fautore communications.

Overview

Program that receives inbound JSON message, decrypts it, verifies the source and destination, converts data to the Fautore standard data structure then sends it to the requested function. This program runs as a child to the main Fautore program which monitors the well known port and hands inbound communications off to Guido once a communication request is acknowledged.


Any application pushing data to Fautore must first register with Fautore in a separate one time registration process that calls the fauAppreg function.


Constraints

The following constraints must be in place as sabatoge deterrents.
  1. Host definable request interval applies (flood prevention)
    1. Multiple message sends within interval from same host prohibited
    2. Multiple message sends within interval treated as suspicious
  2. Any application being registered must be installed to the Fautore Operational Domain (FOD).
  3. Transmitting application must include the AppId provided at registration.


Relevant Tribe Configuration Parameters

The below registration process parameters are configurable by the Tribe Chieftain for the entire tribe.
Request Interval
The amount of time permissable between application registration requests from the same host.
Request Lock
Number of registration tries allowed before remote host is locked out.
Tribe Domain
the FQDN of the server running the Fautore software.



Key Operations

The Guido component is essentially a source and data verification function that ensures required data is present, that the data is coming from a known source and that it is not coming from that source at too fast a rate.

Additional functionality of storing data is handled by additional functions called from the Fautore Internal libraries (fiLib).

Needs rework

Key fiLib Calls

While not the only function calls made by this component, the below listed calls are considered critical path to completing Guido's overall objective of being the guardian at the door to interacting with Fautore.

Function Lib Description
pullAppData ilibDB Pull application data from the Fautore database.
mvJsonToMsg ilibUtil Transmogrifies a flat textual JSON structure into a multidimensional data structure.


Workflows

The below information describes actions comprising the bulk of work performed by the fauQueueMsg API function.

Message Intake

The process of accepting data sent from an application.

Decrypt Data

Standard persistent encrypted connection needs to be established prior to data transfer. Encryption is necessary to protect the transferred data from sniffing and the application key from being observed for future spoofing. The persistence of the connection avoids the performance hit of reestablishing a connection every time.

Receive JSON

  1. Parse JSON into into internal data structure (mvJsonToMsg)
  2. Retrieve Application data (what if no data comes back?)
  3. Test for valid data source