123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #define XS_IMPLEMENTATION
- #include "xs.h"
- #include "xs_io.h"
- #include "xs_encdec.h"
- #include "xs_json.h"
- #include "xs_curl.h"
- #include "xs_openssl.h"
- #include "xs_socket.h"
- #include "xs_httpd.h"
- #include "snac.h"
- d_char *srv_basedir = NULL;
- d_char *srv_config = NULL;
- d_char *srv_baseurl = NULL;
- int dbglevel = 0;
- d_char *xs_time(char *fmt, int local)
- {
- time_t t = time(NULL);
- struct tm tm;
- char tmp[64];
- if (local)
- localtime_r(&t, &tm);
- else
- gmtime_r(&t, &tm);
- strftime(tmp, sizeof(tmp), fmt, &tm);
- return xs_str_new(tmp);
- }
- void srv_debug(int level, d_char *str)
- {
- xs *msg = str;
- if (dbglevel >= level) {
- xs *tm = xs_local_time("%H:%M:%S");
- fprintf(stderr, "%s %s\n", tm, msg);
- }
- }
- int srv_open(char *basedir)
- {
- int ret = 0;
- xs *cfg_file = NULL;
- FILE *f;
- srv_basedir = xs_str_new(basedir);
- cfg_file = xs_fmt("%s/server.json", basedir);
- if ((f = fopen(cfg_file, "r")) == NULL)
- srv_log(xs_fmt("cannot open %s", cfg_file));
- else {
- xs *cfg_data;
-
- cfg_data = xs_readall(f);
-
- srv_config = xs_json_loads(cfg_data);
- if (srv_config == NULL)
- srv_log(xs_fmt("cannot parse %s", cfg_file));
- else {
- char *host;
- char *prefix;
- char *dbglvl;
- host = xs_dict_get(srv_config, "host");
- prefix = xs_dict_get(srv_config, "prefix");
- dbglvl = xs_dict_get(srv_config, "dbglevel");
- if (host == NULL || prefix == NULL)
- srv_log(xs_str_new("cannot get server data"));
- else {
- srv_baseurl = xs_fmt("https://%s%s", host, prefix);
- dbglevel = (int) xs_number_get(dbglvl);
- if ((dbglvl = getenv("DEBUG")) != NULL) {
- dbglevel = atoi(dbglvl);
- srv_log(xs_fmt("DEBUG level set to %d from environment", dbglevel));
- }
- ret = 1;
- }
- }
- }
- return ret;
- }
- int main(int argc, char *argv[])
- {
- srv_open("/home/angel/lib/snac/comam.es");
- return 0;
- }
|