Update date of copyright notices
[src/app-framework-binder.git] / src / afb-config.h
1 /*
2  * Copyright (C) 2015-2018 "IoT.bzh"
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #pragma once
18
19 struct json_object;
20
21 /*
22  * other definitions ---------------------------------------------------
23  */
24
25 struct afb_config_list {
26         struct afb_config_list *next;
27         char *value;
28 };
29
30 // main config structure
31 struct afb_config {
32         char *console;          // console device name (can be a file or a tty)
33         char *rootdir;          // base dir for files
34         char *roothttp;         // directory for http files
35         char *rootbase;         // Angular HTML5 base URL
36         char *rootapi;          // Base URL for REST APIs
37         char *workdir;          // where to run the program
38         char *uploaddir;        // where to store transient files
39         char *token;            // initial authentication token [default NULL no session]
40         char *name;             /* name to set to the daemon */
41
42         struct afb_config_list *aliases;
43         struct afb_config_list *dbus_clients;
44         struct afb_config_list *dbus_servers;
45         struct afb_config_list *ws_clients;
46         struct afb_config_list *ws_servers;
47         struct afb_config_list *so_bindings;
48         struct afb_config_list *ldpaths;
49         struct afb_config_list *weak_ldpaths;
50         struct afb_config_list *calls;
51
52         char **exec;
53
54         /* integers */
55         int httpdPort;
56         int cacheTimeout;
57         int apiTimeout;
58         int cntxTimeout;        // Client Session Context timeout
59         int nbSessionMax;       // max count of sessions
60
61         /* enums */
62         int mode;               // mode of listening
63         int tracereq;
64         int traceditf;
65         int tracesvc;
66         int traceevt;
67         int traceses;
68
69         /* booleans */
70         unsigned no_ldpaths: 1;         /* disable default ldpaths */
71         unsigned noHttpd: 1;
72         unsigned background: 1;         /* run in backround mode */
73         unsigned monitoring: 1;         /* activates monitoring */
74         unsigned random_token: 1;       /* expects a random token */
75 };
76
77 extern struct afb_config *afb_config_parse_arguments(int argc, char **argv);
78 extern void afb_config_dump(struct afb_config *config);
79 extern struct json_object *afb_config_json(struct afb_config *config);
80