Documentation/sysconfig: Difference between revisions

From The Kinguard Project Wiki
Jump to navigation Jump to search
m (Added example for StringList)
 
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
=System configuration file=
=System configuration file=


Runtime parameters should be saved in the file "/etc/kinguard/sysconfig.json".
The kinguard system components store all generic none security sensitive configuration in a central configuration file "/etc/kinguard/sysconfig.json".


Access to the file should be done using [https://github.com/Kinguard/libkgp libkgp (former libopi)], either directly using the shared lib, or by the wrappers for different programming languages.
This file should however never be manually edited it should always be accessed programatically using either [https://github.com/Kinguard/libkgp libkgp] or any wrapper to this library described further down.


=== File Syntax ===
=== File Syntax ===
The configuration file is a json object (note that javascript object syntax is not permitted).
For reference here is the layout of the sysconfig json file. Please read the file for reference but never ever edit it manually.
 
The complete configuration file is one json object (note that javascript object syntax is not permitted).


The file is set up using a "scope" and "key/value" pairs.
The file is set up using a "scope" and "key/value" pairs.
Line 23: Line 25:
     "hostname":"myhost",
     "hostname":"myhost",
     "domain":"example.org"
     "domain":"example.org"
  },
  "dns":
  {
    "availabledomains":["op-i.me","mykeep.net"]
   }
   }
  }
  }


=== Native access via libkgp ===
Libkgp is the main library to use when programming locally for the kinguard system it contains c++ objects for managing all kinguard functions. No official documentation exists for this yet but pointers on how it works can be found in the [https://github.com/Kinguard/libkgp/tree/master/test unit tests] and in the applications utilizing them for example [https://github.com/Kinguard/kgp-backend KGP backend] and [https://github.com/Kinguard/kgp-control KGP startup control]
To access the system configuration the [https://github.com/Kinguard/libkgp/blob/master/SysConfig.h SysConfig class]


=== Wrappers ===
=== Wrappers ===
Line 53: Line 63:
===== PHP =====
===== PHP =====
Currently no native PHP wrapper exists, but kgp-sysinfo defaults to output json (see above) that can easily be used in PHP.
Currently no native PHP wrapper exists, but kgp-sysinfo defaults to output json (see above) that can easily be used in PHP.
= Config scopes and variables =
Very few of these parameters are mandatory. However default behavior for the applications will vary if an expected parameter is missing.
- autoupdate
      |- enabled    turns on and off automatic updates
- backup
      |- backend          which storage backend to use for s3ql
      |- devicemountpath  where to mount local devices, such as usb memories
      |- enabled          turns on and off the backup service
- dns
      |- dnsauthkey    path to the private key used for lower level authentication on service provider backends
      |- dnspubkey    path to corresponding public key
      |- enabled      turns on and off dns updates
      |- provider      backend provider
- filesystem
      |- storagemount  mountpoint of storage volume
      |- luksdevice    luks-created cryptodevice (If used)
      |- lvmdevice    lvm-created storage pool (If used)
      |- lvmvg        lvm-created volume group (If used)
      |- lvmlv        lvm-created logical volume (If used)
- hostinfo
      |- unitid        system id to use as account identifier for service provider backends
      |- hostname      the 'host' part of the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name FQDN]
      |- domain        the 'domain' part of the FQDN
      |- cafile        the ca file used to verify service provider backends
      |- sysauthkey    the key used to access data on service provider backends
      |- syspubkey    corresponding public key
- mail
      |- localmail    configuration file for local mail delivery, relative to filesystem->storagemount
      |- virtualalias configuration file for virtual mail aliases, relative to filesystem->storagemount
      |- vmailbox    path to virtual mailbox mapping, relative to filesystem->storagemount
      |- vdomains    path to virtual domains file (Which domains to accept mail from), relative to filesystem->storagemount
      |- saslpasswd  path to sasl password store file, relative to filesystem->storagemount
      |- oprelayserver URL to OpenProducts smtp-relay
- setup
      |- conntesthost  host used for connectivity tests
- upnp
      |- forwardports  which ports the device shall try to forward from a UPNP gateway
 
- webapps
      |- theme        the theme used by webapps
- webcertificate
      |- backend      backend provider
      |- enabled      turns on and off generation of web certificates
      |- certpath      the location where signed certificate are stored
      |- customcert    full path to custom certificate
      |- customkey    full path to private key for the custom certificate
      |- defaultcert  full path to default (fallback) certificate
      |- defaultkey    full path to private key for the default (fallback) certificate
      |- activecert    path to symlink for the certificate being used
      |- activekey    path to symlink for key corresponding to activecert

Latest revision as of 13:26, 30 August 2018

System configuration file

The kinguard system components store all generic none security sensitive configuration in a central configuration file "/etc/kinguard/sysconfig.json".

This file should however never be manually edited it should always be accessed programatically using either libkgp or any wrapper to this library described further down.

File Syntax

For reference here is the layout of the sysconfig json file. Please read the file for reference but never ever edit it manually.

The complete configuration file is one json object (note that javascript object syntax is not permitted).

The file is set up using a "scope" and "key/value" pairs.

All scope and key identifiers shall be lowercase and written with letters and digits only, no "-" or "_".

Example:

{
  "webapps":
  {
    "theme":"kgp"
  },
  "hostinfo":
  {
    "unitid":"c79f425c-9af7-4f38-b1ba-d53277b14939",
    "hostname":"myhost",
    "domain":"example.org"
  },
  "dns":
  {
    "availabledomains":["op-i.me","mykeep.net"]
  }
}

Native access via libkgp

Libkgp is the main library to use when programming locally for the kinguard system it contains c++ objects for managing all kinguard functions. No official documentation exists for this yet but pointers on how it works can be found in the unit tests and in the applications utilizing them for example KGP backend and KGP startup control

To access the system configuration the SysConfig class

Wrappers

Most wrappers can also be used to access other information provided by libkgp, such as the current running system type, information about system storage etc.

Shell Scripts

For shell scripts, use "kgp-sysinfo". Run kgp-sysinfo --help for options.

Example:

# kgp-sysinfo -c hostinfo -k unitid -p
c79f425c-9af7-4f38-b1ba-d53277b14939

# kgp-sysinfo -c hostinfo -k unitid
{"unitid":"c79f425c-9af7-4f38-b1ba-d53277b14939"}
Python

For Python3, use the python library "pylibopi"

Example:

>>> import pylibopi
>>> pylibopi.StorageDevice()
'/dev/disk/by-path/platform-f10a8000.sata-ata-2'
C

For C programs, libkgp_wrapper can be used.

PHP

Currently no native PHP wrapper exists, but kgp-sysinfo defaults to output json (see above) that can easily be used in PHP.

Config scopes and variables

Very few of these parameters are mandatory. However default behavior for the applications will vary if an expected parameter is missing.

- autoupdate
     |- enabled     turns on and off automatic updates

- backup
     |- backend           which storage backend to use for s3ql 
     |- devicemountpath   where to mount local devices, such as usb memories
     |- enabled           turns on and off the backup service

- dns
     |- dnsauthkey    path to the private key used for lower level authentication on service provider backends
     |- dnspubkey     path to corresponding public key
     |- enabled       turns on and off dns updates
     |- provider      backend provider

- filesystem
     |- storagemount  mountpoint of storage volume
     |- luksdevice    luks-created cryptodevice (If used)
     |- lvmdevice     lvm-created storage pool (If used)
     |- lvmvg         lvm-created volume group (If used)
     |- lvmlv         lvm-created logical volume (If used)

- hostinfo
     |- unitid        system id to use as account identifier for service provider backends
     |- hostname      the 'host' part of the FQDN
     |- domain        the 'domain' part of the FQDN
     |- cafile        the ca file used to verify service provider backends
     |- sysauthkey    the key used to access data on service provider backends
     |- syspubkey     corresponding public key

- mail
     |- localmail    configuration file for local mail delivery, relative to filesystem->storagemount
     |- virtualalias configuration file for virtual mail aliases, relative to filesystem->storagemount
     |- vmailbox     path to virtual mailbox mapping, relative to filesystem->storagemount
     |- vdomains     path to virtual domains file (Which domains to accept mail from), relative to filesystem->storagemount
     |- saslpasswd   path to sasl password store file, relative to filesystem->storagemount
     |- oprelayserver URL to OpenProducts smtp-relay

- setup
     |- conntesthost  host used for connectivity tests

- upnp
     |- forwardports  which ports the device shall try to forward from a UPNP gateway
 
- webapps
     |- theme         the theme used by webapps

- webcertificate
     |- backend       backend provider
     |- enabled       turns on and off generation of web certificates
     |- certpath      the location where signed certificate are stored
     |- customcert    full path to custom certificate
     |- customkey     full path to private key for the custom certificate
     |- defaultcert   full path to default (fallback) certificate
     |- defaultkey    full path to private key for the default (fallback) certificate
     |- activecert    path to symlink for the certificate being used
     |- activekey     path to symlink for key corresponding to activecert