X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-config.h;h=89b1f78edf4bcefe7e25b74776591e3d7dfe8f33;hb=af06c82a63166d0d3fbdc26ae50607a6231d42eb;hp=87691af0f9f69003a471b08f489798932b2cfa6f;hpb=68a8eaafe5f43480f29308bfd2ec12ad54da43f1;p=src%2Fapp-framework-binder.git diff --git a/src/afb-config.h b/src/afb-config.h index 87691af0..89b1f78e 100644 --- a/src/afb-config.h +++ b/src/afb-config.h @@ -1,63 +1,84 @@ /* - local-def.h -- provide a REST/HTTP interface + * 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. + */ - 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. +#pragma once - 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. +struct json_object; - 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. +/* + * other definitions --------------------------------------------------- + */ -*/ -#ifndef LOCAL_DEF_H -#define LOCAL_DEF_H +struct afb_config_list { + struct afb_config_list *next; + char *value; +}; -#pragma once +// 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 */ -/* other definitions --------------------------------------------------- */ + 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; -// Note: because of a bug in libmagic MAGIC_DB NULL should not be used for default -#define MAX_ALIAS 10 // max number of aliases + char **exec; -#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 + /* integers */ + int httpdPort; + int cacheTimeout; + int apiTimeout; + int cntxTimeout; // Client Session Context timeout + int nbSessionMax; // max count of sessions -#define CTX_NBCLIENTS 10 // allow a default of 10 authenticated clients + /* enums */ + int mode; // mode of listening + int tracereq; + int traceditf; + int tracesvc; + int traceevt; + int traceses; -// 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,... + /* booleans */ + unsigned no_ldpaths: 1; /* disable default ldpaths */ + unsigned noHttpd: 1; + unsigned background: 1; /* run in backround mode */ +#if defined(WITH_MONITORING_OPTION) + unsigned monitoring: 1; /* activates monitoring */ +#endif + unsigned random_token: 1; /* expects a random token */ }; -#endif /* LOCAL_DEF_H */ +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); +