/api-server

JSON API for Lair

Primary LanguageGoMIT LicenseMIT

api-server

This is a JSON API for lair. It is used by drones to create, update, and delete data.

Install

Download a compiles binary for supported operating systems from here.

$ mv api-server* api-server
$ export MONGO_URL=mongodb://localhost:27017/lair
$ export API_LISTENER=ip:port
$ ./api-server

Transforms

Transforms allow you to use Go plugins to modify a project that is sent as part of an update. Go plugins are Linux only and have been available since v1.8.

Confguration

The api-server will load all plugins from a directory that is set via the TRANSFORM_DIR environment variable. Example:

$ export TRANSFORM_DIR=plugins
$ ls plugins
iis.so foo.so bar.so
$ ./api-server
2017/03/03 12:56:05 Loading transform iis.so
2017/03/03 12:56:05 Loading transform foo.so
2017/03/03 12:56:05 Loading transform bar.so

Writing Transforms

Writing a transform involves implementing a single function, Update(p *lair.Project. Here is a stub.

package main

import (
    lair "github.com/lair-framework/go-lair"
)

func Update(p *lair.Project) {
    for i := range p.Hosts {
        p[i].Host.OS = "Trash"
    }
}

This can be built by executing go build -buildmode=plugin.