source: ogServer-Git/src/main.c @ d89d6c6

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

#1004 set default path to repository

This is /opt/opengnsys/images if not specified.

  • Property mode set to 100644
File size: 2.3 KB
RevLine 
[48de515]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"
[866b6c5]18#include "cfg.h"
[48de515]19#include <syslog.h>
[7500700]20#include <getopt.h>
21
22static struct option og_server_opts[] = {
23        { "config-file", 1, 0, 'f' },
24        { NULL },
25};
[48de515]26
[96090fd]27#define OG_SERVER_CFG_JSON      "/opt/opengnsys/cfg/ogserver.json"
[d89d6c6]28#define OG_SERVER_REPO_PATH     "/opt/opengnsys/images"
[866b6c5]29
[d89d6c6]30struct og_server_cfg cfg = {
31        .repo   = {
32                .dir    = OG_SERVER_REPO_PATH,
33        },
34};
[f068a79]35
[48de515]36int main(int argc, char *argv[])
37{
[7500700]38        char config_file[PATH_MAX + 1] = OG_SERVER_CFG_JSON;
[48de515]39        struct ev_io ev_io_server_rest, ev_io_agent_rest;
[7500700]40        int val;
[48de515]41
42        og_loop = ev_default_loop(0);
43
44        if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
45                exit(EXIT_FAILURE);
46
[1a406b2]47        openlog("ogserver", LOG_PID, LOG_DAEMON);
[48de515]48
[7500700]49        while (1) {
50                val = getopt_long(argc, argv, "f:l:d:", og_server_opts, NULL);
51                if (val < 0)
52                        break;
53
54                switch (val) {
55                case 'f':
56                        snprintf(config_file, sizeof(config_file), "%s", optarg);
57                        break;
58                case 'l':
59                case 'd':
60                        /* ignore, legacy options */
61                        break;
62                case '?':
63                        return EXIT_FAILURE;
64                default:
65                        break;
66                }
[48de515]67        }
68
[7500700]69        if (parse_json_config(config_file, &cfg) < 0)
70                return EXIT_FAILURE;
71
72        from_json_to_legacy(&cfg);
73
74        socket_rest = og_socket_server_init(cfg.rest.port);
[f6f1f18]75        if (socket_rest < 0) {
76                syslog(LOG_ERR, "Cannot open REST API server socket\n");
[48de515]77                exit(EXIT_FAILURE);
[f6f1f18]78        }
[48de515]79
80        ev_io_init(&ev_io_server_rest, og_server_accept_cb, socket_rest, EV_READ);
81        ev_io_start(og_loop, &ev_io_server_rest);
82
83        socket_agent_rest = og_socket_server_init("8889");
[f6f1f18]84        if (socket_agent_rest < 0) {
85                syslog(LOG_ERR, "Cannot open ogClient server socket\n");
[48de515]86                exit(EXIT_FAILURE);
[f6f1f18]87        }
[48de515]88
89        ev_io_init(&ev_io_agent_rest, og_server_accept_cb, socket_agent_rest, EV_READ);
90        ev_io_start(og_loop, &ev_io_agent_rest);
91
[f6f1f18]92        if (og_dbi_schedule_get() < 0) {
93                syslog(LOG_ERR, "Cannot connect to database\n");
[48de515]94                exit(EXIT_FAILURE);
[f6f1f18]95        }
[48de515]96
97        og_schedule_next(og_loop);
98
99        syslog(LOG_INFO, "Waiting for connections\n");
100
101        while (1)
102                ev_loop(og_loop, 0);
103
104        exit(EXIT_SUCCESS);
105}
Note: See TracBrowser for help on using the repository browser.