source: ogServer-Git/sources/main.c @ 866b6c5

Last change on this file since 866b6c5 was 866b6c5, checked in by OpenGnSys Support Team <soporte-og@…>, 4 years ago

#988 add json configuration file

New configuration file at /opt/opengnsys/cfg/ogserver.json

  • Property mode set to 100644
File size: 2.0 KB
Line 
1/*
2 * Copyright (C) 2020 Soleta Networks <info@soleta.eu>
3 *
4 * This program is free software: you can redistribute it and/or modify it under
5 * the terms of the GNU Affero General Public License as published by the
6 * Free Software Foundation, version 3.
7 */
8
9#include "ogAdmServer.h"
10#include "dbi.h"
11#include "utils.h"
12#include "list.h"
13#include "rest.h"
14#include "client.h"
15#include "json.h"
16#include "schedule.h"
17#include "core.h"
18#include "cfg.h"
19#include <syslog.h>
20
21#define OG_SERVER_CFG_DATABASE  "/opt/opengnsys/cfg/ogserver.json"
22
23int main(int argc, char *argv[])
24{
25        struct ev_io ev_io_server_rest, ev_io_agent_rest;
26        struct og_server_cfg cfg = {};
27        int i;
28
29        og_loop = ev_default_loop(0);
30
31        if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
32                exit(EXIT_FAILURE);
33
34        openlog("ogserver", LOG_PID, LOG_DAEMON);
35
36        if (!validacionParametros(argc, argv, 1)) // Valida parámetros de ejecución
37                exit(EXIT_FAILURE);
38
39        if (!tomaConfiguracion(szPathFileCfg)) {
40                syslog(LOG_INFO, "falling back to %s\n", OG_SERVER_CFG_DATABASE);
41                if (parse_json_config(OG_SERVER_CFG_DATABASE, &cfg) < 0)
42                        exit(EXIT_FAILURE);
43
44                from_json_to_legacy(&cfg);
45        }
46
47        for (i = 0; i < MAXIMOS_CLIENTES; i++) {
48                tbsockets[i].ip[0] = '\0';
49                tbsockets[i].cli = NULL;
50        }
51
52        socket_rest = og_socket_server_init("8888");
53        if (socket_rest < 0) {
54                syslog(LOG_ERR, "Cannot open REST API server socket\n");
55                exit(EXIT_FAILURE);
56        }
57
58        ev_io_init(&ev_io_server_rest, og_server_accept_cb, socket_rest, EV_READ);
59        ev_io_start(og_loop, &ev_io_server_rest);
60
61        socket_agent_rest = og_socket_server_init("8889");
62        if (socket_agent_rest < 0) {
63                syslog(LOG_ERR, "Cannot open ogClient server socket\n");
64                exit(EXIT_FAILURE);
65        }
66
67        ev_io_init(&ev_io_agent_rest, og_server_accept_cb, socket_agent_rest, EV_READ);
68        ev_io_start(og_loop, &ev_io_agent_rest);
69
70        if (og_dbi_schedule_get() < 0) {
71                syslog(LOG_ERR, "Cannot connect to database\n");
72                exit(EXIT_FAILURE);
73        }
74
75        og_schedule_next(og_loop);
76
77        syslog(LOG_INFO, "Waiting for connections\n");
78
79        while (1)
80                ev_loop(og_loop, 0);
81
82        exit(EXIT_SUCCESS);
83}
Note: See TracBrowser for help on using the repository browser.