int qldap_ctrl_generic(void) { /* set defaults, so that a reread works */ ldap_timeout = QLDAP_TIMEOUT; /* default timeout is 30 secs */ rebind = 0; /* default off */ default_uid = 0; default_gid = 0; quotasize = 0; quotacount = 0; if (control_readfile(&ldap_server, "control/ldapserver", 0) != 1) return -1; /* ... the errno should be set by control_* */ if (ldap_server.len) byte_repl(ldap_server.s, ldap_server.len - 1, '\0', ' '); else if (!stralloc_0(&ldap_server)) return -1; logit(64, "init_ldap: control/ldapserver: '%s'\n", ldap_server.s); if (control_rldef(&basedn, "control/ldapbasedn", 0, "") == -1) return -1; if (!stralloc_0(&basedn)) return -1; logit(64, "init_ldap: control/ldapbasedn: %s\n", basedn.s); if (control_rldef(&objectclass, "control/ldapobjectclass", 0, "") == -1) return -1; logit(64, "init_ldap: control/ldapobjectclass: %S\n", &objectclass); if (control_readint(&ldap_timeout, "control/ldaptimeout") == -1) return -1; logit(64, "init_ldap: control/ldaptimeout: %i\n", ldap_timeout); if (control_readint(&rebind, "control/ldaprebind") == -1) return -1; logit(64, "init_ldap: control/ldaprebind: %i\n", rebind); /* defaults */ if (control_readint(&default_uid, "control/ldapuid") == -1) return -1; if (default_uid != 0) logit(64, "init_ldap: control/ldapuid: %i\n", default_uid); if (control_readint(&default_gid, "control/ldapgid") == -1) return -1; if (default_gid != 0) logit(64, "init_ldap: control/ldapgid: %i\n", default_gid); if (control_rldef(&default_messagestore, "control/ldapmessagestore", 0, "") == -1) return -1; if (default_messagestore.len > 1) { if (default_messagestore.s[default_messagestore.len-1] != '/') if (!stralloc_append(&default_messagestore, "/")) return -1; logit(64, "init_ldap: control/ldapmessagestore: %S\n", &default_messagestore); } else if (!stralloc_copys(&default_messagestore, "")) return -1; if (control_rldef(&dotmode, "control/ldapdefaultdotmode", 0, "ldaponly") == -1) return -1; if (!stralloc_0(&dotmode)) return -1; logit(64, "init_ldap: control/ldapdefaultdotmode: %s\n", dotmode.s); if (control_readulong("asize, "control/defaultquotasize") == -1) return -1; if (control_readulong("acount, "control/defaultquotacount") == -1) return -1; logit(64, "init_ldap: control/defaultquotasize: %u\n", quotasize); logit(64, "init_ldap: control/defaultquotacount: %u\n", quotacount); #ifdef DOMAIN_ALIAS if (control_readfile(&domain_map_file, "control/aliasdomains", 0) == -1) return -1; #endif return 0; }
int main (int argc, char *argv[]) { int err; int res; sigset_t set; BIO *acc; SSL_CTX *sslctx; struct freeq_ctx *freeqctx; struct freeqd_state fst; pthread_t t_monitor; pthread_t t_status_logger; pthread_t t_sqlserver; pthread_t t_cliserver; static stralloc clients = {0}; err = freeq_new(&freeqctx, "appname", "identity", FREEQ_SERVER); if (err < 0) exit(EXIT_FAILURE); freeq_set_log_priority(freeqctx, 10); sigemptyset(&set); sigaddset(&set, SIGHUP); sigaddset(&set, SIGINT); sigaddset(&set, SIGUSR1); sigaddset(&set, SIGUSR2); sigaddset(&set, SIGALRM); pthread_sigmask(SIG_BLOCK, &set, NULL); dbg(freeqctx, "starting monitor thread\n"); pthread_create(&t_monitor, 0, &monitor, pDb); init_freeqd_state(freeqctx, &fst); dbg(freeqctx, "reading clients file\n"); if (control_readfile(&clients,(char *)"control/clients",1)) { dbg(freeqctx, "clients present, setting up agg database\n"); //pthread_create(&t_aggregator, 0, &aggregator, (void *)&ri); //res = sqlite4_open(0, ":memory:", &pDb, 0); res = sqlite4_open(0, "ondisk.db", &pDb, SQLITE4_OPEN_READWRITE | SQLITE4_OPEN_CREATE,NULL); if (res != SQLITE4_OK) { err(freeqctx, "failed to open in-memory db\n"); exit(res); } } else { dbg(freeqctx, "failed to read clients file, database not initialized\n"); } struct srv_ctx status_ctx; status_ctx.pDb = pDb; status_ctx.fst = &fst; status_ctx.freeqctx = freeqctx; struct srv_ctx *sctx = &status_ctx; pthread_create(&t_status_logger, 0, &status_logger, (void *)sctx); //if (control_readfile(&clients,"",1) != 1) // pthread_create(&t_receiver, 0, &receiver, (void *)&ri); // pthread_create(&t_recvinvite, 0, &recvinvite, (void *)recvinvite_nnuri); //} res = sqlite4_exec(pDb, "create table if not exists freeq_stats(int last);", NULL, NULL); if (res != SQLITE4_OK) { printf("creating freeq_stats failed: %d %s\n", res, sqlite4_errmsg(pDb)); } pthread_create(&t_sqlserver, 0, &sqlserver, (void *)sctx); pthread_create(&t_cliserver, 0, &cliserver, (void *)sctx); while (1) { sleep(1); } SSL_CTX_free(sslctx); BIO_free(acc); freeq_unref(freeqctx); return 0; }