FeConnector - Backend for the Next 1.0 logging application
Version: Proof of concept
This application is written in golang and based on the serial-json-server implementation. Most of it has been stripped away but the core connection mechanics remained mostly the same.
This application when started starts a webserver that's listening on a random open port unless specified differently. It tries to serve the html files from the public folder unless specified differently. The main purpose of the application is connecting to the connected Next 1.0 device and reading the incoming serial data from it parsing that and sending it to the connected websocket connections.
To use it as a fully fledged application you need to download a release from the Fefrontend repository. And place the extracted content into the public folder.
To use the feconnector executable there are is the standard way of just executing it but if you want more fine grain control of the port or folder it selects you can use flags to define those variables.
-port string http service address. example 8800 to run on port 8800 address (default ":8989") -allowexec Allow terminal commands to be executed (default false) -bufflowdebug string off = (default) We do not send back any debug JSON, on = We will send back a JSON response with debug info based on the configuration of the buffer flow that the user picked (default "off") -createstartupscript Create an /etc/init.d/serial-port-json-server startup script. Available only on Linux. -d string the directory of static file to host (default "./public") -disablecayenn Disable loading of Cayenn TCP/UDP server on port 8988 -gc string Type of garbage collection. std = Normal garbage collection allowing system to decide (this has been known to cause a stop the world in the middle of a CNC job which can cause lost responses from the CNC controller and thus stalled jobs. use max instead to solve.), off = let memory grow unbounded (you have to send in the gc command manually to garbage collect or you will run out of RAM eventually), max = Force garbage collection on each recv or send on a serial port (this minimizes stop the world events and thus lost serial responses, but increases CPU usage) (default "std") -hibernate start hibernated -hostname string Override the hostname we get from the OS (default "unknown-hostname") -ls Launch self 5 seconds later. This flag is used when you ask for a restart from a websocket client. -regex string Regular expression to filter serial port list, i.e. -regex usb|acm -saddr string https service address. example :8801 to run https on port 8801 (default ":8990") -scert string https certificate file (default "cert.pem") -skey string https key file (default "key.pem") -v show debug logging
- GO v10.0
- go dep
- Go path configured
To build the golang application you can run
go build or use the build.sh utility.
If you want to build and deploy you will need to use and install packr2 and build with
packr2 build this will package the assets into executable.
The build utility can build the application and also generate + upload releases
usage: ./build.sh [-c || -f || -r 0.1 \"cool release\" || -h -c | --connector : Build connector -r tag message | --release tag message : Build and upload release with tag and message -h | --help : This help message
Package classification FeConnector API.
the purpose of this application is to provide an application that is using plain go code to define an API
This should demonstrate all the possible comment annotations that are available to turn go code into a fully compliant swagger 2.0 spec
Terms Of Service:
there are no TOS at this moment, use at your own risk we take no responsibility
Schemes: http, https Host: localhost:8989 BasePath: /api/v0.1.0 Version: 0.1.0 Contact: 3Devo<email@example.com> http://3devo.com Consumes: - application/json Produces: - application/json Security: - Bearer: SecurityDefinitions: Bearer: type: apiKey name: Authorization in: header