static void aicloud_check_direct_file(server *srv, connection *con)
{
	config_values_t cv[] = {
		{ "alias.url",		NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION },       /* 0 */
		{ NULL,             NULL, T_CONFIG_UNSET,  T_CONFIG_SCOPE_UNSET }
	};
	
	size_t i, j;
	for (i = 1; i < srv->config_context->used; i++) {
		int found = 0;
		array* alias = array_init();
		cv[0].destination = alias;
	
		if (0 != config_insert_values_global(srv, ((data_config *)srv->config_context->data[i])->value, cv)) {
			continue;
		}
		
		for (j = 0; j < alias->used; j++) {
			data_string *ds = (data_string *)alias->data[j];			
						
			if( strncmp(con->request.uri->ptr, ds->key->ptr, ds->key->used-1) == 0 ){
				con->mode = DIRECT;
				found = 1;				
				break;
			}
		}

		array_free(alias);

		if(found==1)
			break;
	}
}
static void get_aicloud_connection_auth_type(server *srv, connection *con)
{
	data_string *ds;
	int found = 0;
		
	aicloud_check_direct_file(srv, con);

	if(con->mode==DIRECT)
		return;

	if (NULL == (ds = (data_string *)array_get_element(con->request.headers, "user-Agent")))
		return;
		
	config_values_t cv[] = {
		{ "smbdav.auth_ntlm",    NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION },       /* 0 */
		{ NULL,                         NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET }
	};
	
	size_t i, j;
	for (i = 1; i < srv->config_context->used; i++) {
		int found = 0;
		array* auth_ntlm_array = array_init();
		cv[0].destination = auth_ntlm_array;
	
		if (0 != config_insert_values_global(srv, ((data_config *)srv->config_context->data[i])->value, cv)) {
			continue;
		}
		
		for (j = 0; j < auth_ntlm_array->used; j++) {
			data_string *ds2 = (data_string *)auth_ntlm_array->data[j];

			if(ds2->key->used){
				/*
				Cdbg(DBE, "ds2->key=%s, ds2->value=%s", 
					ds2->key->ptr, 
					ds2->value->ptr );
				*/
				if( strncmp(ds->value->ptr, ds2->value->ptr, ds2->value->used-1) == 0 ){
					con->mode = SMB_NTLM;
					found = 1;
					break;
				}
			}
		}

		array_free(auth_ntlm_array);

		if(found==1)
			break;
	}

}
Example #3
0
static int config_insert(server *srv) {
    size_t i;
    int ret = 0;
    buffer *stat_cache_string;

    config_values_t cv[] = {
        { "server.bind",                 NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 0 */
        { "server.errorlog",             NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 1 */
        { "server.errorfile-prefix",     NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 2 */
        { "server.chroot",               NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 3 */
        { "server.username",             NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 4 */
        { "server.groupname",            NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 5 */
        { "server.port",                 NULL, T_CONFIG_SHORT,  T_CONFIG_SCOPE_SERVER },      /* 6 */
        { "server.tag",                  NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 7 */
        { "server.use-ipv6",             NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 8 */
        { "server.modules",              NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_SERVER },       /* 9 */

        { "server.event-handler",        NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 10 */
        { "server.pid-file",             NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 11 */
        { "server.max-request-size",     NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },   /* 12 */
        { "server.max-worker",           NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_SERVER },       /* 13 */
        { "server.document-root",        NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 14 */
        { "server.force-lowercase-filenames", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },   /* 15 */
        { "debug.log-condition-handling", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },    /* 16 */
        { "server.max-keep-alive-requests", NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION }, /* 17 */
        { "server.name",                 NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 18 */
        { "server.max-keep-alive-idle",  NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },   /* 19 */

        { "server.max-read-idle",        NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },   /* 20 */
        { "server.max-write-idle",       NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },   /* 21 */
        { "server.error-handler-404",    NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 22 */
        { "server.max-fds",              NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_SERVER },       /* 23 */
#ifdef HAVE_LSTAT
        { "server.follow-symlink",       NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 24 */
#else
        {   "server.follow-symlink",
            "Your system lacks lstat(). We can not differ symlinks from files."
            "Please remove server.follow-symlinks from your config.",
            T_CONFIG_UNSUPPORTED, T_CONFIG_SCOPE_UNSET
        }, /* 24 */
#endif
        { "server.kbytes-per-second",    NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },   /* 25 */
        { "connection.kbytes-per-second", NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },  /* 26 */
        { "mimetype.use-xattr",          NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 27 */
        { "mimetype.assign",             NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION },   /* 28 */
        { "ssl.pemfile",                 NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 29 */

        { "ssl.engine",                  NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 30 */

        { "debug.log-file-not-found",    NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 31 */
        { "debug.log-request-handling",  NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 32 */
        { "debug.log-response-header",   NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 33 */
        { "debug.log-request-header",    NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 34 */
        { "debug.log-ssl-noise",         NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 35 */

        { "server.protocol-http11",      NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 36 */
        { "debug.log-request-header-on-error", NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER }, /* 37 */
        { "debug.log-state-handling",    NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 38 */
        { "ssl.ca-file",                 NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 39 */

        { "server.errorlog-use-syslog",  NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 40 */
        { "server.range-requests",       NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 41 */
        { "server.stat-cache-engine",    NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 42 */
        { "server.max-connections",      NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_SERVER },       /* 43 */
        { "server.network-backend",      NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 44 */
        { "server.upload-dirs",          NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION },   /* 45 */
        { "server.core-files",           NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 46 */
        { "ssl.cipher-list",             NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 47 */
        { "ssl.use-sslv2",               NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 48 */
        { "etag.use-inode",              NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER }, /* 49 */
        { "etag.use-mtime",              NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER }, /* 50 */
        { "etag.use-size",               NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER }, /* 51 */
        { "server.reject-expect-100-with-417",  NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER }, /* 52 */
        { "debug.log-timeouts",          NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 53 */
        { "server.defer-accept",         NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },     /* 54 */
        { "server.host",                 "use server.bind instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
        { "server.docroot",              "use server.document-root instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
        { "server.virtual-root",         "load mod_simple_vhost and use simple-vhost.server-root instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
        { "server.virtual-default-host", "load mod_simple_vhost and use simple-vhost.default-host instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
        { "server.virtual-docroot",      "load mod_simple_vhost and use simple-vhost.document-root instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
        { "server.userid",               "use server.username instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
        { "server.groupid",              "use server.groupname instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
        { "server.use-keep-alive",       "use server.max-keep-alive-requests = 0 instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },
        { "server.force-lower-case-files",       "use server.force-lowercase-filenames instead", T_CONFIG_DEPRECATED, T_CONFIG_SCOPE_UNSET },

        { NULL,                          NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET }
    };


    /* 0 */
    cv[0].destination = srv->srvconf.bindhost;
    cv[1].destination = srv->srvconf.errorlog_file;
    cv[3].destination = srv->srvconf.changeroot;
    cv[4].destination = srv->srvconf.username;
    cv[5].destination = srv->srvconf.groupname;
    cv[6].destination = &(srv->srvconf.port);

    cv[9].destination = srv->srvconf.modules;
    cv[10].destination = srv->srvconf.event_handler;
    cv[11].destination = srv->srvconf.pid_file;

    cv[13].destination = &(srv->srvconf.max_worker);
    cv[23].destination = &(srv->srvconf.max_fds);
    cv[37].destination = &(srv->srvconf.log_request_header_on_error);
    cv[38].destination = &(srv->srvconf.log_state_handling);

    cv[40].destination = &(srv->srvconf.errorlog_use_syslog);

    stat_cache_string = buffer_init();
    cv[42].destination = stat_cache_string;
    cv[44].destination = srv->srvconf.network_backend;
    cv[45].destination = srv->srvconf.upload_tempdirs;
    cv[46].destination = &(srv->srvconf.enable_cores);

    cv[43].destination = &(srv->srvconf.max_conns);
    cv[12].destination = &(srv->srvconf.max_request_size);
    cv[52].destination = &(srv->srvconf.reject_expect_100_with_417);
    srv->config_storage = calloc(1, srv->config_context->used * sizeof(specific_config *));

    assert(srv->config_storage);

    for (i = 0; i < srv->config_context->used; i++) {
        specific_config *s;

        s = calloc(1, sizeof(specific_config));
        assert(s);
        s->document_root = buffer_init();
        s->mimetypes     = array_init();
        s->server_name   = buffer_init();
        s->ssl_pemfile   = buffer_init();
        s->ssl_ca_file   = buffer_init();
        s->error_handler = buffer_init();
        s->server_tag    = buffer_init();
        s->ssl_cipher_list = buffer_init();
        s->errorfile_prefix = buffer_init();
        s->max_keep_alive_requests = 16;
        s->max_keep_alive_idle = 5;
        s->max_read_idle = 60;
        s->max_write_idle = 360;
        s->use_xattr     = 0;
        s->is_ssl        = 0;
        s->ssl_use_sslv2 = 0;
        s->use_ipv6      = 0;
        s->defer_accept  = 0;
#ifdef HAVE_LSTAT
        s->follow_symlink = 1;
#endif
        s->kbytes_per_second = 0;
        s->allow_http11  = 1;
        s->etag_use_inode = 1;
        s->etag_use_mtime = 1;
        s->etag_use_size  = 1;
        s->range_requests = 1;
        s->force_lowercase_filenames = 0;
        s->global_kbytes_per_second = 0;
        s->global_bytes_per_second_cnt = 0;
        s->global_bytes_per_second_cnt_ptr = &s->global_bytes_per_second_cnt;

        cv[2].destination = s->errorfile_prefix;

        cv[7].destination = s->server_tag;
        cv[8].destination = &(s->use_ipv6);
        cv[54].destination = &(s->defer_accept);


        /* 13 max-worker */
        cv[14].destination = s->document_root;
        cv[15].destination = &(s->force_lowercase_filenames);
        cv[16].destination = &(s->log_condition_handling);
        cv[17].destination = &(s->max_keep_alive_requests);
        cv[18].destination = s->server_name;
        cv[19].destination = &(s->max_keep_alive_idle);
        cv[20].destination = &(s->max_read_idle);
        cv[21].destination = &(s->max_write_idle);
        cv[22].destination = s->error_handler;
#ifdef HAVE_LSTAT
        cv[24].destination = &(s->follow_symlink);
#endif
        /* 23 -> max-fds */
        cv[25].destination = &(s->global_kbytes_per_second);
        cv[26].destination = &(s->kbytes_per_second);
        cv[27].destination = &(s->use_xattr);
        cv[28].destination = s->mimetypes;
        cv[29].destination = s->ssl_pemfile;
        cv[30].destination = &(s->is_ssl);

        cv[31].destination = &(s->log_file_not_found);
        cv[32].destination = &(s->log_request_handling);
        cv[33].destination = &(s->log_response_header);
        cv[34].destination = &(s->log_request_header);
        cv[35].destination = &(s->log_ssl_noise);
        cv[53].destination = &(s->log_timeouts);

        cv[36].destination = &(s->allow_http11);
        cv[39].destination = s->ssl_ca_file;
        cv[41].destination = &(s->range_requests);

        cv[47].destination = s->ssl_cipher_list;
        cv[48].destination = &(s->ssl_use_sslv2);
        cv[49].destination = &(s->etag_use_inode);
        cv[50].destination = &(s->etag_use_mtime);
        cv[51].destination = &(s->etag_use_size);

        srv->config_storage[i] = s;

        if (0 != (ret = config_insert_values_global(srv, ((data_config *)srv->config_context->data[i])->value, cv))) {
            break;
        }
    }

    if (buffer_is_empty(stat_cache_string)) {
        srv->srvconf.stat_cache_engine = STAT_CACHE_ENGINE_SIMPLE;
    } else if (buffer_is_equal_string(stat_cache_string, CONST_STR_LEN("simple"))) {
        srv->srvconf.stat_cache_engine = STAT_CACHE_ENGINE_SIMPLE;
#ifdef HAVE_FAM_H
    } else if (buffer_is_equal_string(stat_cache_string, CONST_STR_LEN("fam"))) {
        srv->srvconf.stat_cache_engine = STAT_CACHE_ENGINE_FAM;
#endif
    } else if (buffer_is_equal_string(stat_cache_string, CONST_STR_LEN("disable"))) {
        srv->srvconf.stat_cache_engine = STAT_CACHE_ENGINE_NONE;
    } else {
        log_error_write(srv, __FILE__, __LINE__, "sb",
                        "server.stat-cache-engine can be one of \"disable\", \"simple\","
#ifdef HAVE_FAM_H
                        " \"fam\","
#endif
                        " but not:", stat_cache_string);
        ret = HANDLER_ERROR;
    }

    buffer_free(stat_cache_string);

    return ret;

}
Example #4
0
static int config_insert(server *srv) {
    size_t i;
    int ret = 0;

    config_values_t cv[] = {
        { "server.bind", srv->srvconf.bindhost, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 0 */
        { "server.errorlog", srv->srvconf.errorlog_file, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 1 */
//        { "server.errorfile-prefix",     NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 2 */
//        { "server.chroot",               NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 3 */
        { "server.username", srv->srvconf.username, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 2 */
        { "server.groupname", srv->srvconf.groupname, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 3 */
        { "server.port", &srv->srvconf.port, T_CONFIG_SHORT,  T_CONFIG_SCOPE_SERVER },      /* 4 */
//        { "server.tag",                  NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 6 */
        { "server.use-ipv6",             NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 5 */
        { "server.modules", srv->srvconf.modules, T_CONFIG_ARRAY, T_CONFIG_SCOPE_SERVER },       /* 6 */

        { "server.document-root", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 7 */
        { "server.name",                 NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION },  /* 8 */

        { "server.max-fds", &srv->srvconf.max_fds, T_CONFIG_SHORT, T_CONFIG_SCOPE_SERVER },       /* 9 */
#if 0 // HAVE_LSTAT
        { "server.follow-symlink",       NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_CONNECTION }, /* 12 */
#else
        { "server.follow-symlink",
          (void *)"Unsupported for now",
          T_CONFIG_UNSUPPORTED, T_CONFIG_SCOPE_UNSET }, /* 10 */
#endif
//        { "server.kbytes-per-second",    NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },   /* 25 */
//        { "connection.kbytes-per-second", NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_CONNECTION },  /* 26 */
        { "ssl.pemfile",                 NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 11 */

        { "ssl.engine",                  NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 12 */

        { "ssl.ca-file",                 NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 13 */

        { "server.errorlog-use-syslog", &srv->srvconf.errorlog_use_syslog, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },     /* 14 */
        { "server.max-connections", &srv->srvconf.max_conns, T_CONFIG_SHORT, T_CONFIG_SCOPE_SERVER },       /* 15 */
//        { "server.upload-dirs",          NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION },   /* 44 */
        { "ssl.cipher-list",             NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },      /* 16 */
        { "sctp.protocol",               NULL, T_CONFIG_BOOLEAN, T_CONFIG_SCOPE_SERVER },
        { "sctp.max_streams",            NULL, T_CONFIG_SHORT, T_CONFIG_SCOPE_SERVER },

	// Metadata begin
#ifdef HAVE_METADATA
        { "cpd.port",                    NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },    /* 19 */
        { "cpd.db.host",                    NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },    /* 20 */
        { "cpd.db.user",                    NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },    /* 21 */
        { "cpd.db.password",                    NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },    /* 22 */
        { "cpd.db.name",                    NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_SERVER },    /* 23 */
#endif
	// Metadata end

        { "server.first_udp_port",  &srv->srvconf.first_udp_port, T_CONFIG_SHORT, T_CONFIG_SCOPE_SERVER },
        { "server.buffered_frames", &srv->srvconf.buffered_frames, T_CONFIG_SHORT, T_CONFIG_SCOPE_SERVER },
        { "server.loglevel", &srv->srvconf.loglevel, T_CONFIG_SHORT, T_CONFIG_SCOPE_SERVER },
        { NULL,                          NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET }
    };

    srv->config_storage = calloc(srv->config_context->used, sizeof(specific_config));

    assert(srv->config_storage);

    for (i = 0; i < srv->config_context->used; i++) {
        specific_config *s = &srv->config_storage[i];

        s->document_root = buffer_init();
        s->server_name   = buffer_init();
        s->ssl_pemfile   = buffer_init();
        s->ssl_ca_file   = buffer_init();
        s->ssl_cipher_list = buffer_init();
        s->use_ipv6      = 0;
        s->is_ssl        = 0;
        s->is_sctp       = 0;
        s->sctp_max_streams = 16;

	// Metadata begin
#ifdef HAVE_METADATA
        s->cpd_port = buffer_init();
        s->cpd_db_host = buffer_init();
        s->cpd_db_user = buffer_init();
        s->cpd_db_password = buffer_init();
        s->cpd_db_name = buffer_init();
#endif
	// Metadata end

#ifdef HAVE_LSTAT
        s->follow_symlink = 1;
#endif
/*        s->kbytes_per_second = 0;
        s->global_kbytes_per_second = 0;
        s->global_bytes_per_second_cnt = 0;
        s->global_bytes_per_second_cnt_ptr = &s->global_bytes_per_second_cnt;
*/
        cv[5].destination = &s->use_ipv6;

        cv[7].destination = s->document_root;
        cv[8].destination = s->server_name;
        /* 9 -> max-fds */
#ifdef HAVE_LSTAT
        cv[10].destination = &s->follow_symlink;
#endif
//        cv[25].destination = &(s->global_kbytes_per_second);
//        cv[26].destination = &(s->kbytes_per_second);
        cv[11].destination = s->ssl_pemfile;

        cv[12].destination = &s->is_ssl;
        cv[13].destination = s->ssl_ca_file;
        cv[16].destination = s->ssl_cipher_list;

        cv[17].destination = &s->is_sctp;
        cv[18].destination = &s->sctp_max_streams;

	// Metadata begin
#ifdef HAVE_METADATA
        cv[19].destination = s->cpd_port;
        cv[20].destination = s->cpd_db_host;
        cv[21].destination = s->cpd_db_user;
        cv[22].destination = s->cpd_db_password;
        cv[23].destination = s->cpd_db_name;
#endif
	// Metadata end

        if (0 != (ret = config_insert_values_global(srv, ((data_config *)srv->config_context->data[i])->value, cv))) {
            break;
        }

    }

    return ret;

}