int main(int argc, char *argv[]) { struct starter_config *cfg = NULL; struct starter_conn *new_conn = NULL; err_t perr = NULL; FILE *file = NULL; char *cPath = "./test.cfg"; //Connection *conn = [[[ConnectionsDB sharedInstance] connDB] objectAtIndex:[selConn indexOfSelectedItem]]; //file pathname /* NSString *origFileName = [conn connName]; NSString *fileName = [origFileName stringByAppendingFormat:@".conf"]; NSString *origPath = @"~/Library/Application Support/Openswan"; NSString *filePath = [origPath stringByAppendingPathComponent:fileName]; NSString *path = [filePath stringByStandardizingPath]; char cPath[100]; [path getCString:cPath maxLength:100 encoding:NSMacOSRomanStringEncoding]; */ cfg = (struct starter_config *) malloc(sizeof(struct starter_config)); if (!cfg) printf("can't allocate memory"); memset(cfg, 0, sizeof(struct starter_config)); ipsecconf_default_values(cfg); //NSString to char* //char cConnName[20]; //[[conn connName] getCString:cConnName maxLength:20 encoding:NSMacOSRomanStringEncoding]; new_conn = alloc_add_conn(cfg, "test", &perr); if(new_conn == NULL) printf("%s", perr); cfg->setup.options_set[KBF_NATTRAVERSAL] = 1; cfg->setup.options[KBF_NATTRAVERSAL] = 0; cfg->setup.strings_set[KSF_PROTOSTACK] = 1; cfg->setup.strings[KSF_PROTOSTACK] = strdup("netkey"); new_conn->connalias = strdup("anotheralias"); new_conn->left.rsakey2 = (unsigned char *)"0s23489234ba28934243"; new_conn->left.rsakey1 = (unsigned char *)"0sabcdabcdabcd"; new_conn->desired_state = STARTUP_START; new_conn->options_set[KBF_AUTO] = 1; new_conn->options[KBF_AUTO] = STARTUP_START; new_conn->left.cert = "/my/cert/file"; file = fopen(cPath,"w"); confwrite(cfg, file); fclose(file); return 0; }
int main(int argc, char *argv[]) { int opt = 0; struct starter_config *cfg = NULL; err_t err = NULL; char *confdir = NULL; char *configfile = NULL; struct starter_conn *conn = NULL; progname = argv[0]; tool_init_log(); starter_use_log(verbose, 1, verbose ? 0 : 1); cfg = (struct starter_config *)malloc(sizeof(struct starter_config)); if (!cfg) { fprintf(stderr, "can't allocate mem in %s\n", progname); exit(10); } memset(cfg, 0, sizeof(*cfg)); /** * Set default values */ ipsecconf_default_values(cfg); conn = alloc_add_conn(cfg, "mytestconn", &err); conn->connalias = xstrdup("anotheralias"); conn->options[KBF_DPDDELAY] = 60; conn->options_set[KBF_DPDDELAY] = 1; conn->policy = POLICY_ENCRYPT | POLICY_PFS | POLICY_COMPRESS; conn->left.rsakey1 = "0sabcdabcdabcd"; conn->left.rsakey2 = "0s23489234ba28934243"; conn->left.cert = "/my/cert/file"; ttoaddr("192.168.2.102", 0, AF_INET, &conn->left.sourceip); ttoaddr("192.168.1.101", 0, AF_INET, &conn->left.addr); conn->left.addr_family = AF_INET; conn->left.addrtype = KH_IPADDR; conn->right.addrtype = KH_DEFAULTROUTE; confwrite(cfg, stdout); exit(0); }
struct starter_config *confread_load(const char *file, err_t *perr, bool resolvip, const char *ctlbase, bool setuponly) { struct starter_config *cfg = NULL; struct config_parsed *cfgp; struct section_list *sconn; bool err = FALSE; bool connerr; #ifdef DNSSEC struct ub_ctx *dnsctx = ub_ctx_create(); unbound_init(dnsctx); #else struct ub_ctx *dnsctx = NULL; #endif /** * Load file */ cfgp = parser_load_conf(file, perr); if (!cfgp) return NULL; cfg = (struct starter_config *)alloc_bytes(sizeof(struct starter_config),"starter_config cfg"); /** * Set default values */ ipsecconf_default_values(cfg); if (ctlbase) { pfree(cfg->ctlbase); cfg->ctlbase = clone_str(ctlbase, "control socket"); } /** * Load setup */ err |= load_setup(cfg, cfgp); if (err) { parser_free_conf(cfgp); confread_free(cfg); return NULL; } if (!setuponly) { /** * Find %default and %oedefault conn * */ for (sconn = cfgp->sections.tqh_first; (!err) && sconn != NULL; sconn = sconn->link.tqe_next) { if (streq(sconn->name, "%default")) { starter_log(LOG_LEVEL_DEBUG, "Loading default conn"); err |= load_conn(dnsctx, &cfg->conn_default, cfgp, sconn, FALSE, /*default conn*/ TRUE, resolvip, perr); } if (streq(sconn->name, "%oedefault")) { starter_log(LOG_LEVEL_DEBUG, "Loading oedefault conn"); err |= load_conn(dnsctx, &cfg->conn_oedefault, cfgp, sconn, FALSE, /*default conn*/ TRUE, resolvip, perr); if (!err) cfg->got_oedefault = TRUE; } } /** * Load other conns */ for (sconn = cfgp->sections.tqh_first; sconn != NULL; sconn = sconn->link.tqe_next) { if (streq(sconn->name, "%default")) continue; if (streq(sconn->name, "%oedefault")) continue; connerr = init_load_conn(dnsctx, cfg, cfgp, sconn, FALSE, resolvip, perr); #if 0 /* ??? the following condition can never be true */ if (connerr == -1) { parser_free_conf(cfgp); confread_free(cfg); return NULL; } #endif err |= connerr; } /* if we have OE on, then create any missing OE conns! */ if (cfg->setup.options[KBF_OPPOENCRYPT]) { starter_log(LOG_LEVEL_DEBUG, "Enabling OE conns"); add_any_oeconns(cfg, cfgp); } } parser_free_conf(cfgp); return cfg; }
struct starter_config *confread_load(const char *file , err_t *perr , bool resolvip , char *ctlbase , bool setuponly) { struct starter_config *cfg = NULL; struct config_parsed *cfgp; struct section_list *sconn; unsigned int err = 0, connerr; /** * Load file */ cfgp = parser_load_conf(file, perr); if (!cfgp) return NULL; cfg = (struct starter_config *)alloc_bytes(sizeof(struct starter_config),"starter_config cfg"); zero(cfg); /** * Set default values */ ipsecconf_default_values(cfg); if(ctlbase) { pfree(cfg->ctlbase); cfg->ctlbase = clone_str(ctlbase, "control socket"); } starter_whack_init_cfg(cfg); /* set default sender to send to socket */ /** * Load setup */ err += load_setup(cfg, cfgp); if(err) { parser_free_conf(cfgp); confread_free(cfg); return NULL; } if(!setuponly) { /** * Find %default and %oedefault conn * */ for(sconn = cfgp->sections.tqh_first; (!err) && sconn != NULL; sconn = sconn->link.tqe_next) { if (strcmp(sconn->name,"%default")==0) { starter_log(LOG_LEVEL_DEBUG, "Loading default conn"); err += load_conn (cfg, &cfg->conn_default, cfgp, sconn, FALSE, /*default conn*/TRUE, resolvip, perr); } if (strcmp(sconn->name,"%oedefault")==0) { starter_log(LOG_LEVEL_DEBUG, "Loading oedefault conn"); err += load_conn (cfg, &cfg->conn_oedefault, cfgp, sconn, FALSE, /*default conn*/TRUE, resolvip, perr); if(err == 0) { cfg->got_oedefault=TRUE; } } } /** * Load other conns */ for(sconn = cfgp->sections.tqh_first; sconn != NULL; sconn = sconn->link.tqe_next) { if (strcmp(sconn->name,"%default")==0) continue; if (strcmp(sconn->name,"%oedefault")==0) continue; connerr = init_load_conn(cfg, cfgp, sconn, TRUE, FALSE, resolvip, perr); if(connerr == -1) { parser_free_conf(cfgp); confread_free(cfg); return NULL; } err += connerr; } /* if we have OE on, then create any missing OE conns! */ if(cfg->setup.options[KBF_OPPOENCRYPT]) { starter_log(LOG_LEVEL_DEBUG, "Enabling OE conns\n"); add_any_oeconns(cfg, cfgp); } } parser_free_conf(cfgp); return cfg; }
struct starter_config *confread_load(const char *file, err_t *perr, bool resolvip, const char *ctlbase, bool setuponly) { bool err = FALSE; /** * Load file */ struct config_parsed *cfgp = parser_load_conf(file, perr); if (cfgp == NULL) return NULL; struct starter_config *cfg = alloc_thing(struct starter_config, "starter_config cfg"); /** * Set default values */ ipsecconf_default_values(cfg); if (ctlbase != NULL) { pfree(cfg->ctlbase); cfg->ctlbase = clone_str(ctlbase, "control socket"); } /** * Load setup */ err |= load_setup(cfg, cfgp); if (err) { parser_free_conf(cfgp); confread_free(cfg); return NULL; } #ifdef DNSSEC struct ub_ctx *dnsctx = unbound_init(); if (dnsctx == NULL) return NULL; #endif if (!setuponly) { /** * Find %default * */ struct section_list *sconn; for (sconn = cfgp->sections.tqh_first; (!err) && sconn != NULL; sconn = sconn->link.tqe_next) { if (streq(sconn->name, "%default")) { starter_log(LOG_LEVEL_DEBUG, "Loading default conn"); err |= load_conn( #ifdef DNSSEC dnsctx, #endif &cfg->conn_default, cfgp, sconn, FALSE, /*default conn*/ TRUE, resolvip, perr); } } /** * Load other conns */ for (sconn = cfgp->sections.tqh_first; sconn != NULL; sconn = sconn->link.tqe_next) { if (streq(sconn->name, "%default")) continue; err |= init_load_conn( #ifdef DNSSEC dnsctx, #endif cfg, cfgp, sconn, FALSE, resolvip, perr); } } parser_free_conf(cfgp); #ifdef DNSSEC ub_ctx_delete(dnsctx); #endif return cfg; }