X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-config.h;h=30fd398cdac8a247dc12e73e1a5725e7f52c4fd9;hb=2e2bfa31dc97159b7630c3c2913a49147be818d2;hp=bd8d07a0deb6bf0106b21558150898670b3edb71;hpb=67966a2f96613d833f493ef3773c442d35f8ed31;p=src%2Fapp-framework-binder.git diff --git a/src/afb-config.h b/src/afb-config.h index bd8d07a0..30fd398c 100644 --- a/src/afb-config.h +++ b/src/afb-config.h @@ -1,61 +1,96 @@ /* - local-def.h -- provide a REST/HTTP interface - - Copyright (C) 2015, Fulup Ar Foll - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ -#ifndef LOCAL_DEF_H -#define LOCAL_DEF_H - -/* other definitions --------------------------------------------------- */ - -// Note: because of a bug in libmagic MAGIC_DB NULL should not be used for default -#define MAX_ALIAS 10 // max number of aliases - -#define DEFLT_CNTX_TIMEOUT 3600 // default Client Connection Timeout -#define DEFLT_API_TIMEOUT 0 // default Plugin API Timeout [0=NoLimit for Debug Only] -#define DEFLT_CACHE_TIMEOUT 100000 // default Static File Chache [Client Side Cache 100000~=1day] -#define DEFLT_AUTH_TOKEN NULL // expect for debug should == NULL -#define DEFLT_HTTP_TIMEOUT 15 // Max MibMicroHttp timeout - -#define CTX_NBCLIENTS 10 // allow a default of 10 authenticated clients - -// main config structure -struct afb_config -{ - char *console; // console device name (can be a file or a tty) - int httpdPort; - char *ldpaths; // list of plugins directories - char *rootdir; // base dir for httpd file download - char *rootbase; // Angular HTML5 base URL - char *rootapi; // Base URL for REST APIs - char *sessiondir; // where to store mixer session files - char *token; // initial authentication token [default NULL no session] - int background; // run in backround mode - int readyfd; // a #fd to signal when ready to serve - int cacheTimeout; - int apiTimeout; - int cntxTimeout; // Client Session Context timeout - int mode; // mode of listening - int aliascount; - struct { - char *url; - char *path; - } aliasdir[MAX_ALIAS]; // alias mapping for icons,apps,... + * Copyright (C) 2015-2018 "IoT.bzh" + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +struct json_object; + +/* + * other definitions --------------------------------------------------- + */ + +/** + * list of configuration values + */ +struct afb_config_list { + struct afb_config_list *next; + char *value; }; -#endif /* LOCAL_DEF_H */ +/** + * main config structure + */ +struct afb_config { + char *console; /*< console device name (can be a file or a tty) */ + char *rootdir; /*< base dir for files */ + char *roothttp; /*< directory for http files */ + char *rootbase; /*< Angular HTML5 base URL */ + char *rootapi; /*< Base URL for REST APIs */ + char *workdir; /*< where to run the program */ + char *uploaddir; /*< where to store transient files */ + char *token; /*< initial authentication token [default NULL no session] */ + char *name; /*< name to set to the daemon */ + + struct afb_config_list *aliases; +#if defined(WITH_DBUS_TRANSPARENCY) + struct afb_config_list *dbus_clients; + struct afb_config_list *dbus_servers; +#endif + struct afb_config_list *ws_clients; + struct afb_config_list *ws_servers; + struct afb_config_list *so_bindings; + struct afb_config_list *ldpaths; + struct afb_config_list *weak_ldpaths; + struct afb_config_list *calls; + struct afb_config_list *auto_ws; + struct afb_config_list *auto_link; + + char **exec; + + /* integers */ + int http_port; + int cache_timeout; + int api_timeout; + int session_timeout; /*< session timeout */ + int max_session_count; /*< max count of sessions */ + + /* enums */ +#if defined(KEEP_LEGACY_MODE) + int mode; // mode of listening +#endif + int tracereq; +#if !defined(REMOVE_LEGACY_TRACE) + int traceditf; + int tracesvc; +#endif + int traceevt; + int traceses; + int traceapi; + + /* booleans */ + unsigned no_ldpaths: 1; /**< disable default ldpaths */ + unsigned no_httpd: 1; + unsigned background: 1; /**< run in backround mode */ + unsigned random_token: 1; /**< expects a random token */ +#if defined(WITH_MONITORING_OPTION) + unsigned monitoring: 1; /**< activates monitoring */ +#endif +}; + +extern struct afb_config *afb_config_parse_arguments(int argc, char **argv); +extern void afb_config_dump(struct afb_config *config); +extern struct json_object *afb_config_json(struct afb_config *config); +