You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Audit module is the most important module, it provides user management, licensing and auditing services to the other modules. It automatically recognizes other modules, that are running on the same machine or on different servers - either using multicast or IP white list. Audit module is the main communication channel for the BellaDati IoT console too.

Running module

Sender can be started using the provided starting script, automatically when installed using the installer or manually, by executing following command:

java -Dapplication.name=audit-1 -Dvertx.hazelcast.config=cluster.xml -Dfile.encoding=UTF8 -jar iot-collector-generic-sender-x.y.z.jar -conf config.json

Runtime parameters explained

Parameter nameDescriptionExample
-Dapplication.name
Mandatory JVM parameter. Defines the name of the sender.
-Dapplication.name=sender-1
-Dvertx.hazelcast.config
Mandatory JVM parameter. Specifies the file containing the cluster configuration.
-Dvertx.hazelcast.config=cluster.xml
-Dfile.encoding
Optional JVM parameter. Specifies the encoding used when working with byte streams or reading messages and files.
-Dfile.encoding=UTF8
-jar
Specifies the collector JAR file to be started.
-jar iot-collector-generic-sender-x.y.z.jar
-conf
Specifies the module configuration file
-conf config.json

 

Configuration

Configuration is provided in config.json, which is passed to the application as -conf parameter

Options are listed in dot notation - dot is refering to nested enttiy (e.g. senders[].license means { "senders" :  [ { "license"  : "abcdefgh" } ] }

It is possible to run multiple senders using single JAR - by defining multiple receivers in senders array. See below.

Common options

Option/EntityTypeDefaultDescription
senders
Array of objects Array of senders configuration.
senders[].license
StringemptyLicense provided by BellaDati
senders[].name
StringemptyName of the module
senders[].host
StringlocalhostHTTP host on which HTTP endpoints are running
senders[].port
Integer8101HTTP port on which HTTP endpoints are running
senders[].source
Object 

Contains source receiver configuration.

senders[].source.receiver
String Identification of associated receiver
senders[].source.inputMode
StringSINGLE

Data input mode:

  • SINGLE - message payload contains only single record
  • BULK - message payload contains multiple records

Must correspond to the receiver's configuration.

senders[].source.auth
Object Contains authentication configuration
senders[].source.auth.enabled
BooleantrueFlag indicating if Basic authentication is configured on receiver
senders[].source.auth.username
String Username (as defined in receiver's configuration)
senders[].source.auth.password
String Plain text password (as defined in receiver's configuration)
senders[].bodyLimit
Integer2097152Maximum allowed request body size (in bytes)
senders[].period
Integer60Delay (in seconds) after which the timer will fire new send event
senders[].startId
Integer-1Start ID that is used as a filter to obtain data from receiver (HSQL iterates from 0)
senders[].limit
Integer1000Page size that is used as a filter to obtain data from receiver
senders[].deleteProcessed
BooleantrueFlag indicating if processed data should be deleted from receiver database
senders[].actions
Array of strings 

Specifies the automated action type. Available options are:

  • BELLADATI_REST - sends data to BellaDati backend
  • HTTP_REQUST - creates HTTP request
  • MQTT_PUBLISH - publish message to MQTT server
  • EMAIL - sends email
  • SAVE_TO_FILE - saves data to file
senders[].actionRules
Object Contains action rules configuration
senders[].actionRules.filterRules
Array of objects Contains filter rules configuration objects
senders[].actionRules.filterRules.field
String Name of the field within the normalized message.
senders[].actionRules.filterRules.operation
String 

Compare operation type. Available operations:

  • BETWEEN
  • EQ
  • GT
  • GTE
  • IN
  • LT
  • LTE
  • NEQ
  • NOT_IN
  • NOT_NULL
  • NULL
senders[].actionRules.filterRules.values
Array of strings Array of values to filter.
senders[].db
Object Contains database configuration. You can keep the default values unless you use some specific database.
senders[].db.url
Stringjdbc:hsqldb:file:hsql/instance-db;shutdown=trueDatabase connection string
senders[].db.user
StringSADatabase username
senders[].db.password
StringemptyDatabase password
senders[].db.driverclass
Stringorg.hsqldb.jdbcDriverDatabase JDBC driver class
senders[].db.max_pool_size
Integer100Database maximum pool size
senders[].db.drop
BooleanfalseFlag indicating if database should be dropped during module startup
senders[].auth
Object Configuration of administrators common for all modules
senders[].auth.enabled
BooleantrueFlag indicating if administrator authentication is enabled
senders[].auth.drop
BooleanfalseFlag indicating if administrators should be dropped during module startup
senders[].auth.merge
BooleantrueFlag indicating if administrators should be merged during module startup
senders[].auth.users
Array Array of administrators to merge (insert new or update existing)
senders[].auth.users.username
StringadminUnique username
senders[].auth.users.password
String Hashed password if 'salt' is defined, otherwise plain text password
senders[].auth.users.salt
String Salt used to hash password
senders[].auth.users.roles
String array[ "VIEWER" ]Array of user roles

Configuration sample

{
  "senders": [                                                  -> JSON array containing configuration of multiple receivers
    {
      "license": "n5NkzaEOALzvGs7LOExyAulYdqo8X+5==",           -> License key
      "name": "Sender 01",                                      -> Sender identification
      "source": {                                               -> Source receiver definition
        "receiver": "Receiver 01",                              -> Identification of associated receiver
        "inputMode": "SINGLE",                                  -> Data input mode (see Enumerations below)
        "httpClientConfig": {                                   -> Optional Vert.x HttpClientOptions for HttpClient (see receiver's configuration)
          "keepAlive": true,                                    -> Set whether keep alive is enabled
          "pipelining": false,                                  -> Set whether pipe-lining is enabled
          "ssl": true,                                          -> Set whether SSL/TLS is enabled
          "trustAll": true,                                     -> Set whether all server certificates should be trusted
          "maxPoolSize": 25,                                    -> Set the maximum pool size for connections
          "idleTimeout": 3,                                     -> Set the idle timeout, in seconds (zero means don't timeout)
          "connectTimeout": 5000,                               -> Set the connect timeout, in milliseconds
          "maxWaitQueueSize": -1                                -> Set the maximum requests allowed in the wait queue (-1 means unbounded)
          ...                                                   -> Other: http://vertx.io/docs/apidocs/io/vertx/core/http/HttpClientOptions.html
        },
        "auth": {
          "enabled": true,                                      -> Flag indicating if Basic authentication is configured on receiver
          "username": "editor",                                 -> Username (see receiver's configuration)
          "password": "BellaDati01",                            -> Plain text password (see receiver's configuration)
        }
      },
      "host": "localhost",                                      -> HTTP host on which HTTP endpoints are running
      "port": 8101,                                             -> HTTP port on which HTTP endpoints are running
      "bodyLimit": 2097152,                                     -> Maximum allowed request body size (in bytes, default: 2 MB)
      "period": 60,                                             -> Delay (in seconds) after which the timer will fire new send event
      "startId": -1,                                            -> Start ID that is used as a filter to obtain data from receiver (HSQL iterates from 0)
      "limit": 1000,                                            -> Page size that is used as a filter to obtain data from receiver
      "saveToFile": true,                                       -> Deprecated - use actions instead. Flag indicating if transformed data should be saved to local file
      "sendToBellaDati": true,                                  -> Deprecated - use actions instead. Flag indicating if transformed data should be send to BellaDati
      "deleteProcessed": true,                                  -> Flag indicating if processed data should be deleted from receiver database
      "actions" : [ "BELLADATI_REST", "EMAIL" ],                -> Specifies the sender type. Available types: BELLADATI_REST, HTTP_REQUEST, MQTT_PUBLISH, EMAIL, SAVE_TO_FILE;
      "belladati": {                                            -> BellaDati configuration
        "url": "http://localhost:8081/",                        -> BellaDati URL
        "useSsl": false,                                        -> Flag indicating if BellaDati is running on SSL port
        "consumerKey": "apiKey",                                -> OAuth consumer key
        "consumerSecret": "apiSecret",                          -> OAuth consumer secret
        "username": "dadmin01",                                 -> BellaDati username
        "password": "BellaDati01",                              -> BellaDati password
        "dataSet": {                                            -> DataSet configuration
          "id": "123",                                          -> DataSet identification
          "columnId": "M_ID",                                   -> Code of attribute/indicator that contains record identification
          "columnReceiver": "L_RECEIVER",                       -> Code of attribute/indicator that contains receiver identification
          "columnJson": "L_JSON",                               -> Code of attribute/indicator that contains JSON data
          "columnTimestamp": "L_TIMESTAMP",                     -> Code of attribute/indicator that contains timestamp
          "jsonMapping": "M_IND1=ind1_json,L_ATTR1=attr1_json", -> List of mappings between BellaDati indicator/attribute code and JSON key
          "templateId": 12345,                                  -> Identification of import template
          "splitByColumn": 4                                    -> Index of column used to split data
        },
        "continueOnError" : false
      },
      "httpRequest" : {
        "url" : "http://host",
        "method" : "POST"|"GET"|"DELETE"|"PUT",
        "headers" : "header1=value1,header2=value2",
        "auth" : {
          "type" : "BASIC",                                     -> Auth type: BASIC, DIGEST, OAUTH
          "useSsl": false,                                      -> Flag indicating if BellaDati is running on SSL port
          "consumerKey": "apiKey",                              -> OAuth consumer key
          "consumerSecret": "apiSecret",                        -> OAuth consumer secret
          "username": "dadmin01",                               -> BellaDati username
          "password": "BellaDati01"                             -> BellaDati password
        },
        "continueOnError" : false,
        "content" : "Message content with variables"            -> It's possible to reference any of fields received from receiver
      },
      "mqttPublish" : {
        "host" : "host",
        "port" : 1833,
        "topic" : "topic/to/publish/to",
        "qos" : "AT_LEAST_ONCE",                                -> Quality of service AT_LEAST_ONCE, AT_MOST_ONCE, EXACTLY_ONCE, FAILURE
        "auth" : {
          "type" : "BASIC",                                     -> Auth type: BASIC, DIGEST, CLIENT_CERT
          "useSsl": false,                                      -> Flag indicating if BellaDati is running on SSL port
          "keystorePath": "/path/to/server-keystore.jks",       -> Absolute path to Java keystore file (JKS)
          "keystorePassword": "wibble",                         -> Password of Java keystore
          "clientCert": "certName",                             -> OAuth consumer key
          "username": "dadmin01",                               -> BellaDati username
          "password": "BellaDati01"                             -> BellaDati password
        },        
        "content" : "Message content with variables",           -> It's possible to reference any of fields received from receiver
        "continueOnError" : false,
        "options" : {
          "receiveBufferSize" : 123456,                         -> Set the TCP receive buffer size
          "timeoutOnConnect" : 120,                             -> Set the timeout on CONNECT packet
          "maxMessageSize" : -1,                                -> Set max MQTT message size
          "autoClientId" :  false,                              -> Set if clientid should be auto-generated when it's "zero-bytes"
          "tcpNoDelay" : false,                                 -> Set whether TCP no delay is enabled
          "tcpKeepAlive" : false,                              	-> Set whether TCP keep alive is enabled
          "soLinger" : false,
          "tcpQuickAck" : false,
          "tcpFastOpen" : false,
          "tcpCork" : false,
          "acceptBacklog" : false,
          "useAlpn" : false,
          "clientAuth" : false,
          "logActivity" : false,
          "trafficClass" : -1,
          "idleTimeout" : -1,
          "sendBufferSize" :  -1,
          "usePooledBuffers" : false,
          "clientAuthRequired" :  false, 
          "enabledSecureTransportProtocols" :  false
        }
      },
      "email" : {
        "host" : "smtp_host",
        "port" : 25,
        "auth" : {
          "useSsl": false,                                      -> Flag indicating if SMTP is running on SSL port
          "username": "dadmin01",                               -> SMTP username
          "password": "BellaDati01"                             -> SMTP password
        },
        "sender"  : "sender@email.com",
        "subject" : "Subject of the email",                     -> It's possible to reference any of fields received from receiver
        "content" : "Message content with variables",            -> It's possible to reference any of fields received from receiver
        "continueOnError" : false
      },
      "actionRules" : {
          "field1": {
              "op": "EQ",
              "value": "Slovakia"
          },
          "field2": {
              "op": "IN",
              "values": [ "Type 1", "Type 2", "Type 3" ]
          },
          "field3": {
              "op": "NOT_NULL"
          },
          "field4": {
              "op": "GT",
              "value" : 1200
          }
      }
      "db": {                                                             -> Database configuration
        "url": "jdbc:hsqldb:file:/path/to/my-sender01-db;shutdown=true",  -> Database connection string
        "user": "SA",                                                     -> Database username
        "password": "",                                                   -> Database password
        "driverclass": "org.hsqldb.jdbcDriver",                           -> Database JDBC driver class (see dependencies in pom.xml)
        "max_pool_size": 100,                                             -> Database maximum pool size
        "drop": true                                                      -> Flag indicating if database should be dropped during module startup
      },
      "auth": {
        "enabled": true,                                        -> Flag indicating if authentication is enabled
        "drop": false,                                          -> Flag indicating if users should be dropped during module startup
        "merge": true,                                          -> Flag indicating if users should be merged during module startup
        "users": [                                              -> Array of users to merge (insert new or update existing)
          {
            "username": "viewer",                               -> Unique username
            "password": "DAAF8173380C604B392A1EF8D7559AA0",     -> Hashed password if 'salt' is defined, otherwise plain text password
            "salt": "BA1170DE9ADE8D29D2C18FD789EAB3BD",         -> Salt used to hash password
            "roles": [ "VIEWER" ]                               -> Array of user roles (see Enumerations below)
          }
        ]
      },
      "ssl": {
        "enabled": true,                                        -> Flag indicating if HTTP server should run with enabled SSL/TLS
        "keystorePath": "/path/to/server-keystore.jks",         -> Absolute path to Java keystore file (JKS)
        "keystorePassword": "wibble"                            -> Password of Java keystore
      }
    },
    {
      "name": "sender02",
      ...
    }
  ]
}

On this page

  • No labels