int main(int argc, char **argv) { int cf_index; Octstr *type; gwlib_init(); cf_index = get_and_set_debugs(argc, argv, check_args); if (argv[cf_index] == NULL) { debug("",0,"Usage: %s <store-file>", argv[0]); goto error; } type = octstr_create("file"); /* init store subsystem */ store_init(type, octstr_imm(argv[cf_index]), -1, msg_pack, msg_unpack_wrapper); /* pass every entry in the store to callback print_msg() */ store_load(print_msg); info(0, "Store file contains %d msg entries", counter); info(0, "Shutting down."); error: gwlib_shutdown(); return 1; }
static PyObject* w_store_init(PyObject *dummy, PyObject *args) { int f_index, f_data; store_t *store; store_error_t err; (void)dummy; /* silence warning */ if (!PyArg_ParseTuple(args, "ii", &f_index, &f_data)) { PyErr_SetString(StoreExtError, "usage store_init(f_index, f_data)" ); return NULL; } store = (store_t*) calloc(1, sizeof(store_t)); if (store == NULL) { PyErr_SetString(StoreExtError, "memory allocation failed."); return NULL; } err = store_init(f_index, f_data, store); if (SUCCESS != err) { PyErr_SetString(StoreExtError, store_error_names[err]); store_deinit(store); free(store); return NULL; } #ifdef HAVE_CAPSULE return Py_BuildValue("N", PyCapsule_New((void*)store, NULL, w_store_delete)); #else return Py_BuildValue("N", PyCObject_FromVoidPtr((void*)store, w_store_delete)); #endif }
int core_run(void) { int s_server = 0, s_listener = 0; bool running = true; struct pollfd fds[MAX_SOCKETS]; store_init(); net_init(); state_init(); if((s_server = srv_init()) < 0) return EXIT_FAILURE; if(srv_connect() == -1){ ERR("srv_connect() failed. Exiting..."); return EXIT_FAILURE; } if((s_listener = clt_init()) == -1){ ERR("clt_init() failed. Exiting..."); return EXIT_FAILURE; } memset(fds, 0 , sizeof(fds)); net_poll_add(s_server, POLLIN); net_poll_add_listener(s_listener, POLLIN); while(running){ net_poll(POLLTIMEOUT); proc_tick(); for(int i = 0; i < net_nfds(); i++){ while(net_socket_avail(i)){ char msg[513] = ""; net_socket_msg(i, msg, sizeof msg); proc_proc(i, msg); } } while(proc_wqueue_length()){ wqueue_entry_t ent = proc_wqueue_head(); net_socket_write(ENT_GET(ent, target), ENT_GET(ent, data), ENT_GET(ent, datasz)); proc_wqueue_next(); } } return EXIT_SUCCESS; }
//Function to initialize all the devices void init_devices() { cli(); //Clears the global interrupt port_init(); //Initializes all the ports left_position_encoder_interrupt_init(); right_position_encoder_interrupt_init(); timer4_init(); adc_init(); timer5_init(); store_init(); uart2_init(); TIMSK4 = 0x01; sei(); // Enables the global interrupt }
static Cfg *init_bearerbox(Cfg *cfg) { CfgGroup *grp; Octstr *log, *val; long loglevel, store_dump_freq, value; int lf, m; #ifdef HAVE_LIBSSL Octstr *ssl_server_cert_file; Octstr *ssl_server_key_file; int ssl_enabled = 0; #endif /* HAVE_LIBSSL */ Octstr *http_proxy_host = NULL; long http_proxy_port = -1; int http_proxy_ssl = 0; List *http_proxy_exceptions = NULL; Octstr *http_proxy_username = NULL; Octstr *http_proxy_password = NULL; Octstr *http_proxy_exceptions_regex = NULL; /* defaults: use localtime and markers for access-log */ lf = m = 1; grp = cfg_get_single_group(cfg, octstr_imm("core")); log = cfg_get(grp, octstr_imm("log-file")); if (log != NULL) { if (cfg_get_integer(&loglevel, grp, octstr_imm("log-level")) == -1) loglevel = 0; log_open(octstr_get_cstr(log), loglevel, GW_NON_EXCL); octstr_destroy(log); } if ((val = cfg_get(grp, octstr_imm("syslog-level"))) != NULL) { long level; Octstr *facility; if ((facility = cfg_get(grp, octstr_imm("syslog-facility"))) != NULL) { log_set_syslog_facility(octstr_get_cstr(facility)); octstr_destroy(facility); } if (octstr_compare(val, octstr_imm("none")) == 0) { log_set_syslog(NULL, 0); } else if (octstr_parse_long(&level, val, 0, 10) > 0) { log_set_syslog("bearerbox", level); } octstr_destroy(val); } else { log_set_syslog(NULL, 0); } if (check_config(cfg) == -1) panic(0, "Cannot start with corrupted configuration"); /* determine which timezone we use for access logging */ if ((log = cfg_get(grp, octstr_imm("access-log-time"))) != NULL) { lf = (octstr_case_compare(log, octstr_imm("gmt")) == 0) ? 0 : 1; octstr_destroy(log); } /* should predefined markers be used, ie. prefixing timestamp */ cfg_get_bool(&m, grp, octstr_imm("access-log-clean")); /* custom access-log format */ if ((log = cfg_get(grp, octstr_imm("access-log-format"))) != NULL) { bb_alog_init(log); octstr_destroy(log); } /* open access-log file */ if ((log = cfg_get(grp, octstr_imm("access-log"))) != NULL) { alog_open(octstr_get_cstr(log), lf, m ? 0 : 1); octstr_destroy(log); } if (cfg_get_integer(&store_dump_freq, grp, octstr_imm("store-dump-freq")) == -1) store_dump_freq = -1; log = cfg_get(grp, octstr_imm("store-file")); /* initialize the store file */ if (log != NULL) { warning(0, "'store-file' option deprecated, please use 'store-location' and 'store-type' instead."); val = octstr_create("file"); } else { log = cfg_get(grp, octstr_imm("store-location")); val = cfg_get(grp, octstr_imm("store-type")); } if (store_init(val, log, store_dump_freq, msg_pack, msg_unpack_wrapper) == -1) panic(0, "Could not start with store init failed."); octstr_destroy(val); octstr_destroy(log); cfg_get_integer(&http_proxy_port, grp, octstr_imm("http-proxy-port")); #ifdef HAVE_LIBSSL cfg_get_bool(&http_proxy_ssl, grp, octstr_imm("http-proxy-ssl")); #endif /* HAVE_LIBSSL */ http_proxy_host = cfg_get(grp, octstr_imm("http-proxy-host")); http_proxy_username = cfg_get(grp, octstr_imm("http-proxy-username")); http_proxy_password = cfg_get(grp, octstr_imm("http-proxy-password")); http_proxy_exceptions = cfg_get_list(grp, octstr_imm("http-proxy-exceptions")); http_proxy_exceptions_regex = cfg_get(grp, octstr_imm("http-proxy-exceptions-regex")); conn_config_ssl (grp); /* * Make sure we have "ssl-server-cert-file" and "ssl-server-key-file" specified * in the core group since we need it to run SSL-enabled internal box * connections configured via "smsbox-port-ssl = yes" and "wapbox-port-ssl = yes". * Check only these, because for "admin-port-ssl" and "sendsms-port-ssl" for the * SSL-enabled HTTP servers are probed within gw/bb_http.c:httpadmin_start() */ #ifdef HAVE_LIBSSL ssl_server_cert_file = cfg_get(grp, octstr_imm("ssl-server-cert-file")); ssl_server_key_file = cfg_get(grp, octstr_imm("ssl-server-key-file")); if (ssl_server_cert_file != NULL && ssl_server_key_file != NULL) { /* we are fine, at least files are specified in the configuration */ } else { cfg_get_bool(&ssl_enabled, grp, octstr_imm("smsbox-port-ssl")); cfg_get_bool(&ssl_enabled, grp, octstr_imm("wapbox-port-ssl")); if (ssl_enabled) { panic(0, "You MUST specify cert and key files within core group for SSL-enabled inter-box connections!"); } } octstr_destroy(ssl_server_cert_file); octstr_destroy(ssl_server_key_file); #endif /* HAVE_LIBSSL */ /* if all seems to be OK by the first glimpse, real start-up */ outgoing_sms = gwlist_create(); incoming_sms = gwlist_create(); outgoing_wdp = gwlist_create(); incoming_wdp = gwlist_create(); outgoing_sms_counter = counter_create(); incoming_sms_counter = counter_create(); incoming_dlr_counter = counter_create(); outgoing_dlr_counter = counter_create(); outgoing_wdp_counter = counter_create(); incoming_wdp_counter = counter_create(); status_mutex = mutex_create(); outgoing_sms_load = load_create(); /* add 60,300,-1 entries */ load_add_interval(outgoing_sms_load, 60); load_add_interval(outgoing_sms_load, 300); load_add_interval(outgoing_sms_load, -1); incoming_sms_load = load_create(); /* add 60,300,-1 entries */ load_add_interval(incoming_sms_load, 60); load_add_interval(incoming_sms_load, 300); load_add_interval(incoming_sms_load, -1); incoming_dlr_load = load_create(); /* add 60,300,-1 entries to dlr */ load_add_interval(incoming_dlr_load, 60); load_add_interval(incoming_dlr_load, 300); load_add_interval(incoming_dlr_load, -1); outgoing_dlr_load = load_create(); /* add 60,300,-1 entries to dlr */ load_add_interval(outgoing_dlr_load, 60); load_add_interval(outgoing_dlr_load, 300); load_add_interval(outgoing_dlr_load, -1); setup_signal_handlers(); /* http-admin is REQUIRED */ httpadmin_start(cfg); if (cfg_get_integer(&max_incoming_sms_qlength, grp, octstr_imm("maximum-queue-length")) == -1) max_incoming_sms_qlength = -1; else { warning(0, "Option 'maximum-queue-length' is deprecated! Please use" " 'sms-incoming-queue-limit' instead!"); } if (max_incoming_sms_qlength == -1 && cfg_get_integer(&max_incoming_sms_qlength, grp, octstr_imm("sms-incoming-queue-limit")) == -1) max_incoming_sms_qlength = -1; if (cfg_get_integer(&max_outgoing_sms_qlength, grp, octstr_imm("sms-outgoing-queue-limit")) == -1) max_outgoing_sms_qlength = -1; if (max_outgoing_sms_qlength < 0) max_outgoing_sms_qlength = DEFAULT_OUTGOING_SMS_QLENGTH; if (cfg_get_integer(&value, grp, octstr_imm("http-timeout")) == 0) http_set_client_timeout(value); #ifndef NO_SMS { List *list; list = cfg_get_multi_group(cfg, octstr_imm("smsc")); if (list != NULL) { gwlist_destroy(list, NULL); if (start_smsc(cfg) == -1) { panic(0, "Unable to start SMSCs."); return NULL; } } } #endif #ifndef NO_WAP grp = cfg_get_single_group(cfg, octstr_imm("core")); val = cfg_get(grp, octstr_imm("wdp-interface-name")); if (val != NULL && octstr_len(val) > 0) start_udp(cfg); octstr_destroy(val); if (cfg_get_single_group(cfg, octstr_imm("wapbox")) != NULL) start_wap(cfg); #endif if (http_proxy_host != NULL && http_proxy_port > 0) { http_use_proxy(http_proxy_host, http_proxy_port, http_proxy_ssl, http_proxy_exceptions, http_proxy_username, http_proxy_password, http_proxy_exceptions_regex); } octstr_destroy(http_proxy_host); octstr_destroy(http_proxy_username); octstr_destroy(http_proxy_password); octstr_destroy(http_proxy_exceptions_regex); gwlist_destroy(http_proxy_exceptions, octstr_destroy_item); return cfg; }
int optimus_storage_init(int toErase) { int ret = 0; char* cmd = NULL; if(_disk_intialed_ok){//To assert only actual disk intialed once DWN_MSG("Disk inited again.\n"); return 0; } if(OPTIMUS_WORK_MODE_USB_PRODUCE != optimus_work_mode_get())//Already inited in other work mode { DWN_MSG("Exit before re-init\n"); store_exit(); } switch(toErase) { case 0://NO erase ret = store_init(1); break; case 3://erase all(with key) { cmd = "store disprotect key"; DWN_MSG("run cmd [%s]\n", cmd); ret = run_command(cmd, 0); if(ret){ DWN_ERR("Fail when run cmd[%s], ret %d\n", cmd, ret); break; } } case 1://normal erase, store init 3 ret = store_init(3); break; case 4://force erase all { cmd = "store disprotect key; store disprotect fbbt; store disprotect hynix"; DWN_MSG("run cmd [%s]\n", cmd); ret = run_command(cmd, 0); if(ret){ DWN_ERR("Fail when run cmd[%s], ret %d\n", cmd, ret); break; } } case 2: ret = store_init(4); break; default: DWN_ERR("Unsupported erase flag %d\n", toErase); ret = -__LINE__; break; } if(!ret) { _disk_intialed_ok = 1; if(OPTIMUS_WORK_MODE_USB_PRODUCE == optimus_work_mode_get())//env not relocated in this case { DWN_MSG("usb producing env_relocate\n"); env_relocate(); } } return ret; }
int mvc_init(int debug, store_type store, int ro, int su, backend_stack stk) { int first = 0; logger_settings *log_settings = (struct logger_settings *) GDKmalloc(sizeof(struct logger_settings)); /* Set the default WAL directory. "sql_logs" by default */ log_settings->logdir = "sql_logs"; /* Get and pass on the WAL directory location, if set */ if (GDKgetenv("gdk_logdir") != NULL) { log_settings->logdir = GDKgetenv("gdk_logdir"); } /* Get and pass on the shared WAL directory location, if set */ log_settings->shared_logdir = GDKgetenv("gdk_shared_logdir"); /* Get and pass on the shared WAL drift threshold, if set. * -1 by default, meaning it should be ignored, since it is not set */ log_settings->shared_drift_threshold = GDKgetenv_int("gdk_shared_drift_threshold", -1); /* Get and pass on the flag how many WAL files should be preserved. * 0 by default - keeps only the current WAL file. */ log_settings->keep_persisted_log_files = GDKgetenv_int("gdk_keep_persisted_log_files", 0); mvc_debug = debug&4; if (mvc_debug) { fprintf(stderr, "#mvc_init logdir %s\n", log_settings->logdir); fprintf(stderr, "#mvc_init keep_persisted_log_files %d\n", log_settings->keep_persisted_log_files); if (log_settings->shared_logdir != NULL) { fprintf(stderr, "#mvc_init shared_logdir %s\n", log_settings->shared_logdir); } fprintf(stderr, "#mvc_init shared_drift_threshold %d\n", log_settings->shared_drift_threshold); } keyword_init(); scanner_init_keywords(); if ((first = store_init(debug, store, ro, su, log_settings, stk)) < 0) { fprintf(stderr, "!mvc_init: unable to create system tables\n"); return -1; } if (first || catalog_version) { sql_schema *s; sql_table *t; mvc *m = mvc_create(0, stk, 0, NULL, NULL); m->sa = sa_create(); /* disable caching */ m->caching = 0; /* disable history */ m->history = 0; /* disable size header */ m->sizeheader = 0; mvc_trans(m); s = m->session->schema = mvc_bind_schema(m, "sys"); assert(m->session->schema != NULL); if (!first) { t = mvc_bind_table(m, s, "tables"); mvc_drop_table(m, s, t, 0); t = mvc_bind_table(m, s, "columns"); mvc_drop_table(m, s, t, 0); } t = mvc_create_view(m, s, "tables", SQL_PERSIST, "SELECT \"id\", \"name\", \"schema_id\", \"query\", CAST(CASE WHEN \"system\" THEN \"type\" + 10 /* system table/view */ ELSE (CASE WHEN \"commit_action\" = 0 THEN \"type\" /* table/view */ ELSE \"type\" + 20 /* global temp table */ END) END AS SMALLINT) AS \"type\", \"system\", \"commit_action\", \"access\", CASE WHEN (NOT \"system\" AND \"commit_action\" > 0) THEN 1 ELSE 0 END AS \"temporary\" FROM \"sys\".\"_tables\" WHERE \"type\" <> 2 UNION ALL SELECT \"id\", \"name\", \"schema_id\", \"query\", CAST(\"type\" + 30 /* local temp table */ AS SMALLINT) AS \"type\", \"system\", \"commit_action\", \"access\", 1 AS \"temporary\" FROM \"tmp\".\"_tables\";", 1); mvc_create_column_(m, t, "id", "int", 32); mvc_create_column_(m, t, "name", "varchar", 1024); mvc_create_column_(m, t, "schema_id", "int", 32); mvc_create_column_(m, t, "query", "varchar", 2048); mvc_create_column_(m, t, "type", "smallint", 16); mvc_create_column_(m, t, "system", "boolean", 1); mvc_create_column_(m, t, "commit_action", "smallint", 16); mvc_create_column_(m, t, "access", "smallint", 16); mvc_create_column_(m, t, "temporary", "smallint", 16); if (!first) { int pub = ROLE_PUBLIC; int p = PRIV_SELECT; int zero = 0; sql_table *privs = find_sql_table(s, "privileges"); table_funcs.table_insert(m->session->tr, privs, &t->base.id, &pub, &p, &zero, &zero); } t = mvc_create_view(m, s, "columns", SQL_PERSIST, "SELECT * FROM (SELECT p.* FROM \"sys\".\"_columns\" AS p UNION ALL SELECT t.* FROM \"tmp\".\"_columns\" AS t) AS columns;", 1); mvc_create_column_(m, t, "id", "int", 32); mvc_create_column_(m, t, "name", "varchar", 1024); mvc_create_column_(m, t, "type", "varchar", 1024); mvc_create_column_(m, t, "type_digits", "int", 32); mvc_create_column_(m, t, "type_scale", "int", 32); mvc_create_column_(m, t, "table_id", "int", 32); mvc_create_column_(m, t, "default", "varchar", 2048); mvc_create_column_(m, t, "null", "boolean", 1); mvc_create_column_(m, t, "number", "int", 32); mvc_create_column_(m, t, "storage", "varchar", 2048); if (!first) { int pub = ROLE_PUBLIC; int p = PRIV_SELECT; int zero = 0; sql_table *privs = find_sql_table(s, "privileges"); table_funcs.table_insert(m->session->tr, privs, &t->base.id, &pub, &p, &zero, &zero); } else { sql_create_env(m, s); sql_create_privileges(m, s); } s = m->session->schema = mvc_bind_schema(m, "tmp"); assert(m->session->schema != NULL); if (mvc_commit(m, 0, NULL) < 0) { fprintf(stderr, "!mvc_init: unable to commit system tables\n"); return -1; } mvc_destroy(m); } return first; }
int main(int argc, char **argv) { char id[UUID_STR_LEN + 1]; int cf_index, ret, type; Octstr *os, *store_type, *store_location, *status; Msg *msg; CfgGroup *grp; conf_file = NULL; gwlib_init(); //This can be overwritten with the -v flag at runtime log_set_output_level(DEFAULT_LOG_LEVEL); cf_index = get_and_set_debugs(argc, argv, check_args); if (argv[cf_index] == NULL) { print_usage(argv[0]); goto error; } if (conf_file == NULL) conf_file = octstr_create("kannel.conf"); cfg = cfg_create(conf_file); if (cfg_read(cfg) == -1) panic(0, "Couldn't read configuration from `%s'.", octstr_get_cstr(conf_file)); info(0, "1"); grp = cfg_get_single_group(cfg, octstr_imm("core")); if (grp == NULL) { printf("FATAL: Could not load Kannel's core group. Exiting.\n"); return 2; } store_location = cfg_get(grp, octstr_imm("store-location")); store_type = cfg_get(grp, octstr_imm("store-type")); store_init(store_type, store_location, -1, msg_pack, msg_unpack_wrapper); switch (command) { case COMMAND_LIST: printf("Listing records %d -> %d\n", list_from+1, list_limit); print_header(); store_load(print_msg); if (counter == 0) { printf("|%60s%14s%60s|\n", "", "Store is Empty", ""); } print_sep(); break; case COMMAND_DELETE: store_load(msg_count); msg = msg_create(ack); msg->ack.nack = ack_failed; msg->ack.time = time(NULL); uuid_parse(octstr_get_cstr(param_1), msg->ack.id); ret = store_save(msg); if (ret == 0) { printf("Deleted message %s\n", octstr_get_cstr(param_1)); counter--; } else { printf("Could not delete message %s\n", octstr_get_cstr(param_1)); } msg_destroy(msg); break; case COMMAND_EXPORT: counter = 0; type = 0; list = gwlist_create(); store_load(msg_push); printf("Exporting %ld messages...\n", gwlist_len(list)); if ((octstr_compare(param_1, octstr_imm("file")) == 0) || (octstr_compare(param_1, octstr_imm("spool")) == 0)) { store_shutdown(); store_init(param_1, param_2, -1, msg_pack, msg_unpack_wrapper); store_load(msg_count); while ((os = gwlist_extract_first(list)) != NULL) { msg = msg_unpack_wrapper(os); if (msg != NULL) { ret = store_save(msg); if (ret == 0) { counter++; } else { printf("Error saving message\n"); } } else { printf("Error extracting message\n"); } msg_destroy(msg); } status = NULL; } else if (octstr_compare(param_1, octstr_imm("text")) == 0) { status = store_status(BBSTATUS_TEXT); } else if (octstr_compare(param_1, octstr_imm("html")) == 0) { status = store_status(BBSTATUS_HTML); } else if (octstr_compare(param_1, octstr_imm("xml")) == 0) { status = store_status(BBSTATUS_XML); } else { status = NULL; } if (status != NULL) { file = fopen(octstr_get_cstr(param_2), "w"); if (file == NULL) { error(errno, "Failed to open '%s' for writing, cannot create output file", octstr_get_cstr(param_2)); return -1; } octstr_print(file, status); fflush(file); if (file != NULL) fclose(file); //printf("%s", octstr_get_cstr(status)); } gwlist_destroy(list, octstr_destroy_item); break; default: break; } octstr_destroy(store_type); octstr_destroy(store_location); cfg_destroy(cfg); store_shutdown(); error: gwlib_shutdown(); return 1; }
int mvc_init(int debug, store_type store, backend_stack stk) { int first = 0; char *logdir = "sql_logs"; mvc_debug = debug; if (mvc_debug) fprintf(stderr, "#mvc_init logdir %s\n", logdir); keyword_init(); scanner_init_keywords(); if ((first = store_init(debug, store, logdir, stk)) < 0) { fprintf(stderr, "!mvc_init: unable to create system tables\n"); return -1; } if (first || catalog_version) { sql_schema *s; sql_table *t; mvc *m = mvc_create(0, stk, 0, NULL, NULL); /* disable caching */ m->caching = 0; /* disable history */ m->history = 0; /* disable size header */ m->sizeheader = 0; mvc_trans(m); s = m->session->schema = mvc_bind_schema(m, "sys"); assert(m->session->schema != NULL); if (catalog_version) { t = mvc_bind_table(m, s, "tables"); mvc_drop_table(m, s, t, 0); t = mvc_bind_table(m, s, "columns"); mvc_drop_table(m, s, t, 0); } t = mvc_create_view(m, s, "tables", SQL_PERSIST, "SELECT * FROM (SELECT p.*, 0 AS \"temporary\" FROM \"sys\".\"_tables\" AS p UNION ALL SELECT t.*, 1 AS \"temporary\" FROM \"tmp\".\"_tables\" AS t) AS tables where tables.type <> 2;", 1); mvc_create_column_(m, t, "id", "int", 32); mvc_create_column_(m, t, "name", "varchar", 1024); mvc_create_column_(m, t, "schema_id", "int", 32); mvc_create_column_(m, t, "query", "varchar", 2048); mvc_create_column_(m, t, "type", "smallint", 16); mvc_create_column_(m, t, "system", "boolean", 1); mvc_create_column_(m, t, "commit_action", "smallint", 16); mvc_create_column_(m, t, "readonly", "boolean", 1); mvc_create_column_(m, t, "temporary", "smallint", 16); if (catalog_version) { int pub = ROLE_PUBLIC; int p = PRIV_SELECT; int zero = 0; sql_table *privs = find_sql_table(s, "privileges"); table_funcs.table_insert(m->session->tr, privs, &t->base.id, &pub, &p, &zero, &zero); } t = mvc_create_view(m, s, "columns", SQL_PERSIST, "SELECT * FROM (SELECT p.* FROM \"sys\".\"_columns\" AS p UNION ALL SELECT t.* FROM \"tmp\".\"_columns\" AS t) AS columns;", 1); mvc_create_column_(m, t, "id", "int", 32); mvc_create_column_(m, t, "name", "varchar", 1024); mvc_create_column_(m, t, "type", "varchar", 1024); mvc_create_column_(m, t, "type_digits", "int", 32); mvc_create_column_(m, t, "type_scale", "int", 32); mvc_create_column_(m, t, "table_id", "int", 32); mvc_create_column_(m, t, "default", "varchar", 2048); mvc_create_column_(m, t, "null", "boolean", 1); mvc_create_column_(m, t, "number", "int", 32); /* TODO: the code below is out-of-date. Should be changed into the * following with the next major catalogue change: * mvc_create_column(m, t, "storage", "varchar", 2048); */ mvc_create_column_(m, t, "storage_type", "int", 32); if (catalog_version) { int pub = ROLE_PUBLIC; int p = PRIV_SELECT; int zero = 0; sql_table *privs = find_sql_table(s, "privileges"); table_funcs.table_insert(m->session->tr, privs, &t->base.id, &pub, &p, &zero, &zero); } if (!catalog_version) { sql_create_env(m, s); sql_create_privileges(m, s); } s = m->session->schema = mvc_bind_schema(m, "tmp"); assert(m->session->schema != NULL); if (mvc_commit(m, 0, NULL) < 0) { fprintf(stderr, "!mvc_init: unable to commit system tables\n"); return -1; } mvc_destroy(m); } return first; }
gint tracker_control_status_run (void) { TrackerMinerManager *manager; /* --follow implies --status */ if (follow) { status = TRUE; } if (list_common_statuses) { gint i; g_print ("%s:\n", _("Common statuses include")); for (i = 0; i < G_N_ELEMENTS (statuses); i++) { g_print (" %s\n", _(statuses[i])); } return EXIT_SUCCESS; } if (status) { GError *error = NULL; GSList *miners_available; GSList *miners_running; GSList *l; /* Don't auto-start the miners here */ manager = tracker_miner_manager_new_full (FALSE, &error); if (!manager) { g_printerr (_("Could not get status, manager could not be created, %s"), error ? error->message : "unknown error"); g_printerr ("\n"); g_clear_error (&error); return EXIT_FAILURE; } miners_available = tracker_miner_manager_get_available (manager); miners_running = tracker_miner_manager_get_running (manager); /* Work out lengths for output spacing */ paused_length = strlen (_("PAUSED")); for (l = miners_available; l; l = l->next) { const gchar *name; name = tracker_miner_manager_get_display_name (manager, l->data); longest_miner_name_length = MAX (longest_miner_name_length, strlen (name)); } /* Display states */ g_print ("%s:\n", _("Store")); store_init (); store_get_and_print_state (); g_print ("\n"); g_print ("%s:\n", _("Miners")); for (l = miners_available; l; l = l->next) { const gchar *name; gboolean is_running; name = tracker_miner_manager_get_display_name (manager, l->data); if (!name) { g_critical ("Could not get name for '%s'", (gchar *) l->data); continue; } is_running = tracker_string_in_gslist (l->data, miners_running); if (is_running) { GStrv pause_applications, pause_reasons; gchar *status = NULL; gdouble progress; gint remaining_time; gboolean is_paused; if (!miner_get_details (manager, l->data, &status, &progress, &remaining_time, &pause_applications, &pause_reasons)) { continue; } is_paused = *pause_applications || *pause_reasons; miner_print_state (manager, l->data, status, progress, remaining_time, TRUE, is_paused); g_strfreev (pause_applications); g_strfreev (pause_reasons); g_free (status); } else { miner_print_state (manager, l->data, NULL, 0.0, -1, FALSE, FALSE); } } g_slist_foreach (miners_available, (GFunc) g_free, NULL); g_slist_free (miners_available); g_slist_foreach (miners_running, (GFunc) g_free, NULL); g_slist_free (miners_running); if (!follow) { /* Do nothing further */ if (proxy) { g_object_unref (proxy); } g_print ("\n"); return EXIT_SUCCESS; } g_print ("Press Ctrl+C to end follow of Tracker state\n"); g_signal_connect (manager, "miner-progress", G_CALLBACK (manager_miner_progress_cb), NULL); g_signal_connect (manager, "miner-paused", G_CALLBACK (manager_miner_paused_cb), NULL); g_signal_connect (manager, "miner-resumed", G_CALLBACK (manager_miner_resumed_cb), NULL); initialize_signal_handler (); miners_progress = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) miners_progress_destroy_notify); miners_status = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) g_free); main_loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (main_loop); g_main_loop_unref (main_loop); g_hash_table_unref (miners_progress); g_hash_table_unref (miners_status); if (proxy) { g_object_unref (proxy); } if (manager) { g_object_unref (manager); } return EXIT_SUCCESS; } /* All known options have their own exit points */ g_warn_if_reached (); return EXIT_FAILURE; }
static Cfg *init_bearerbox(Cfg *cfg) { CfgGroup *grp; Octstr *log, *val; long loglevel; int lf, m; #ifdef HAVE_LIBSSL Octstr *ssl_server_cert_file; Octstr *ssl_server_key_file; int ssl_enabled = 0; #endif /* HAVE_LIBSSL */ /* defaults: use localtime and markers for access-log */ lf = m = 1; grp = cfg_get_single_group(cfg, octstr_imm("core")); log = cfg_get(grp, octstr_imm("log-file")); if (log != NULL) { if (cfg_get_integer(&loglevel, grp, octstr_imm("log-level")) == -1) loglevel = 0; log_open(octstr_get_cstr(log), loglevel, GW_NON_EXCL); octstr_destroy(log); } if (check_config(cfg) == -1) panic(0, "Cannot start with corrupted configuration"); /* determine which timezone we use for access logging */ if ((log = cfg_get(grp, octstr_imm("access-log-time"))) != NULL) { lf = (octstr_case_compare(log, octstr_imm("gmt")) == 0) ? 0 : 1; octstr_destroy(log); } /* should predefined markers be used, ie. prefixing timestamp */ cfg_get_bool(&m, grp, octstr_imm("access-log-clean")); /* custom access-log format */ if ((log = cfg_get(grp, octstr_imm("access-log-format"))) != NULL) { bb_alog_init(log); octstr_destroy(log); } /* open access-log file */ if ((log = cfg_get(grp, octstr_imm("access-log"))) != NULL) { alog_open(octstr_get_cstr(log), lf, m ? 0 : 1); octstr_destroy(log); } log = cfg_get(grp, octstr_imm("store-file")); /* initialize the store file */ if (log != NULL) { store_init(log); octstr_destroy(log); } conn_config_ssl (grp); /* * Make sure we have "ssl-server-cert-file" and "ssl-server-key-file" specified * in the core group since we need it to run SSL-enabled internal box * connections configured via "smsbox-port-ssl = yes" and "wapbox-port-ssl = yes". * Check only these, because for "admin-port-ssl" and "sendsms-port-ssl" for the * SSL-enabled HTTP servers are probed within gw/bb_http.c:httpadmin_start() */ #ifdef HAVE_LIBSSL ssl_server_cert_file = cfg_get(grp, octstr_imm("ssl-server-cert-file")); ssl_server_key_file = cfg_get(grp, octstr_imm("ssl-server-key-file")); if (ssl_server_cert_file != NULL && ssl_server_key_file != NULL) { /* we are fine, at least files are specified in the configuration */ } else { cfg_get_bool(&ssl_enabled, grp, octstr_imm("smsbox-port-ssl")); cfg_get_bool(&ssl_enabled, grp, octstr_imm("wapbox-port-ssl")); if (ssl_enabled) { panic(0, "You MUST specify cert and key files within core group for SSL-enabled inter-box connections!"); } } octstr_destroy(ssl_server_cert_file); octstr_destroy(ssl_server_key_file); #endif /* HAVE_LIBSSL */ /* if all seems to be OK by the first glimpse, real start-up */ outgoing_sms = list_create(); incoming_sms = list_create(); outgoing_wdp = list_create(); incoming_wdp = list_create(); outgoing_sms_counter = counter_create(); incoming_sms_counter = counter_create(); outgoing_wdp_counter = counter_create(); incoming_wdp_counter = counter_create(); status_mutex = mutex_create(); setup_signal_handlers(); /* http-admin is REQUIRED */ httpadmin_start(cfg); if (cfg_get_integer(&max_incoming_sms_qlength, grp, octstr_imm("maximum-queue-length")) == -1) max_incoming_sms_qlength = -1; else { warning(0, "Option 'maximum-queue-length' is deprecated! Please use" " 'sms-incoming-queue-limit' instead!"); } if (max_incoming_sms_qlength == -1 && cfg_get_integer(&max_incoming_sms_qlength, grp, octstr_imm("sms-incoming-queue-limit")) == -1) max_incoming_sms_qlength = -1; #ifndef NO_SMS { List *list; list = cfg_get_multi_group(cfg, octstr_imm("smsc")); if (list != NULL) { start_smsc(cfg); list_destroy(list, NULL); } } #endif #ifndef NO_WAP grp = cfg_get_single_group(cfg, octstr_imm("core")); val = cfg_get(grp, octstr_imm("wdp-interface-name")); if (val != NULL && octstr_len(val) > 0) start_udp(cfg); octstr_destroy(val); if (cfg_get_single_group(cfg, octstr_imm("wapbox")) != NULL) start_wap(cfg); #endif return cfg; }