Ejemplo n.º 1
0
int
server_session_prepare (CcnetSession *session)
{
    CcnetServerSession *server_session = (CcnetServerSession *)session;
    char *service_url = NULL;

    service_url = ccnet_key_file_get_string (session->keyf, "General", "SERVICE_URL");
    session->base.service_url = service_url;

    if (load_database_config (session) < 0) {
        ccnet_warning ("Failed to load database config.\n");
        return -1;
    }

    /*  */
    char *enc;
    enc = ccnet_key_file_get_string (session->keyf, "NETWORK", "ENCRYPT_CHANNEL");
    if (enc && g_ascii_strncasecmp(enc, "false", 5) == 0)
        session->encrypt_channel = 0;
    else
        /* encrypt channel on default */
        session->encrypt_channel = 1;

    if (ccnet_user_manager_prepare (server_session->user_mgr) < 0)
        return -1;

    if (ccnet_group_manager_prepare (server_session->group_mgr) < 0)
        return -1;

    if (ccnet_org_manager_prepare (server_session->org_mgr) < 0)
        return -1;

    return 0;
}
Ejemplo n.º 2
0
static int init_pgsql_database (CcnetSession *session)
{
    char *host, *user, *passwd, *db, *unix_socket;

    host = ccnet_key_file_get_string (session->keyf, "Database", "HOST");
    user = ccnet_key_file_get_string (session->keyf, "Database", "USER");
    passwd = ccnet_key_file_get_string (session->keyf, "Database", "PASSWD");
    db = ccnet_key_file_get_string (session->keyf, "Database", "DB");

    if (!host) {
        g_warning ("DB host not set in config.\n");
        return -1;
    }
    if (!user) {
        g_warning ("DB user not set in config.\n");
        return -1;
    }
    if (!passwd) {
        g_warning ("DB passwd not set in config.\n");
        return -1;
    }
    if (!db) {
        g_warning ("DB name not set in config.\n");
        return -1;
    }
    unix_socket = ccnet_key_file_get_string (session->keyf,
                                             "Database", "UNIX_SOCKET");

    session->db = ccnet_db_new_pgsql (host, user, passwd, db, unix_socket);
    if (!session->db) {
        g_warning ("Failed to open database.\n");
        return -1;
    }

   return 0;
}
Ejemplo n.º 3
0
static int
load_database_config (CcnetSession *session)
{
    int ret;
    char *engine;

    engine = ccnet_key_file_get_string (session->keyf, "Database", "ENGINE");
    if (!engine || strncasecmp (engine, DB_SQLITE, sizeof(DB_SQLITE)) == 0) {
        ccnet_debug ("Use database sqlite\n");
        ret = init_sqlite_database (session);
    } else if (strncasecmp (engine, DB_MYSQL, sizeof(DB_MYSQL)) == 0) {
        ccnet_debug ("Use database Mysql\n");
        ret = init_mysql_database (session);
    }
    return ret;
}
Ejemplo n.º 4
0
static int init_mysql_database (CcnetSession *session)
{
    char *host, *port, *user, *passwd, *db, *unix_socket;
    gboolean use_ssl = FALSE;

    host = ccnet_key_file_get_string (session->keyf, "Database", "HOST");
    port = ccnet_key_file_get_string (session->keyf, "Database", "PORT");
    user = ccnet_key_file_get_string (session->keyf, "Database", "USER");
    passwd = ccnet_key_file_get_string (session->keyf, "Database", "PASSWD");
    db = ccnet_key_file_get_string (session->keyf, "Database", "DB");

    if (!host) {
        g_warning ("DB host not set in config.\n");
        return -1;
    }
    if (!port) {
        port = g_strdup (MYSQL_DEFAULT_PORT);
    }
    if (!user) {
        g_warning ("DB user not set in config.\n");
        return -1;
    }
    if (!passwd) {
        g_warning ("DB passwd not set in config.\n");
        return -1;
    }
    if (!db) {
        g_warning ("DB name not set in config.\n");
        return -1;
    }
    unix_socket = ccnet_key_file_get_string (session->keyf,
                                             "Database", "UNIX_SOCKET");
    use_ssl = g_key_file_get_boolean (session->keyf, "Database", "USE_SSL", NULL);

    session->db = ccnet_db_new_mysql (host, port, user, passwd, db, unix_socket, use_ssl);
    if (!session->db) {
        g_warning ("Failed to open database.\n");
        return -1;
    }

    g_free (host);
    g_free (port);
    g_free (user);
    g_free (passwd);
    g_free (db);
    g_free (unix_socket);

   return 0;
}
Ejemplo n.º 5
0
int
ccnet_session_load_config (CcnetSession *session, const char *config_dir_r)
{
    int ret = 0;
    char *config_file, *config_dir;
    char *id = 0, *name = 0, *port_str = 0, *lport_str,
        *user_name = 0;
#ifdef CCNET_SERVER
    char *service_url;
#endif
    int port, local_port = 0;
    unsigned char sha1[20];
    GKeyFile *key_file;

    config_dir = ccnet_expand_path (config_dir_r);

    if (checkdir(config_dir) < 0) {
        ccnet_error ("Config dir %s does not exist or is not "
                     "a directory.\n", config_dir);
        return -1;
    }

    config_file = g_build_filename (config_dir, SESSION_CONFIG_FILENAME, NULL);
    key_file = g_key_file_new ();
    g_key_file_set_list_separator (key_file, ',');
    if (!g_key_file_load_from_file (key_file, config_file,
                                    G_KEY_FILE_KEEP_COMMENTS, NULL))
    {
        ccnet_warning ("Can't load config file %s.\n", config_file);
        return -1;
    }

    id = ccnet_key_file_get_string (key_file, "General", "ID");
    user_name = ccnet_key_file_get_string (key_file, "General", "USER_NAME");
    name = ccnet_key_file_get_string (key_file, "General", "NAME");
#ifdef CCNET_SERVER
    service_url = ccnet_key_file_get_string (key_file, "General", "SERVICE_URL");
#endif
    port_str = ccnet_key_file_get_string (key_file, "Network", "PORT");
    lport_str = ccnet_key_file_get_string (key_file, "Client", "PORT");
    
    if (port_str == NULL)
        port = DEFAULT_PORT;
    else
        port = atoi (port_str);

    if (lport_str != NULL)
        local_port = atoi (lport_str);

    if ( (id == NULL) || (strlen (id) != SESSION_ID_LENGTH) 
         || (hex_to_sha1 (id, sha1) < 0) ) {
        ccnet_error ("Wrong ID\n");
        ret = -1;
        goto onerror;
    }

    memcpy (session->base.id, id, 40);
    session->base.id[40] = '\0';
    session->base.name = g_strdup(name);
    session->base.user_name = g_strdup(user_name);
    session->base.public_port = port;
#ifdef CCNET_SERVER
    session->base.service_url = g_strdup(service_url);
#endif
    session->config_file = config_file;
    session->config_dir = config_dir;
    session->local_port = local_port;
    session->keyf = key_file;

    load_rsakey(session);

    ret = 0;

onerror:
    g_free (id);
    g_free (name);
    g_free (user_name);
    g_free (port_str);
#ifdef CCNET_SERVER
    g_free (service_url);
#endif
    return ret;
}