コード例 #1
0
static int process_request(request_rec* r) {

    char message[MESSAGE_LEN];
    sprintf(message, "Starting Tractis auth module process for url %s\n", r->uri);
    log_debug(message);

    char *enabled = is_enabled(r);
    //Not enabled
    if (enabled == NULL || strcmp(enabled,"true") !=0) {
        char buff[MESSAGE_LEN];
        sprintf(buff,"Module not enabled for given url");
        log_debug(buff);
        return DECLINED;
    } else {
        char buff[MESSAGE_LEN];
        sprintf(buff,"Module enabled for given url");
        log_debug(buff);
    }

    //Recover credentials
    char *user = get_username(r);
    char *password = get_password(r);
    char *api_key = get_api_key(r);


    if (is_debug_enabled()) {
        char debug_message[MESSAGE_LEN];
        sprintf(debug_message, "Credentials are %s:%s and api key is %s", user,password,api_key);
        log_debug(debug_message);
    }

    char* certificate = (char*)apr_table_get(r->subprocess_env, "SSL_CLIENT_CERT");

    //The certificate is not present so the client is not allowed to use the service
    if (!certificate) {
        char error_message[MESSAGE_LEN];
        log_error(401, "No certificate has been provided");
        return 401; //HTTP unauthorized
    } else {
        if (is_debug_enabled()) {
            char message[MESSAGE_LEN + strlen(certificate)];
            sprintf(message, "User provided certificate \n->%s<-",certificate);
            log_debug(message);
        }
    }

    int certificate_status = validate_certificate(r,certificate, user, password, api_key);

    if (certificate_status == VALID) return OK;
    else {
        if(is_info_enabled()) {
            char validation_result[MESSAGE_LEN];
            sprintf(validation_result, "The provided certificate reported unsuccessful validation, result code is %d", certificate_status);
            log_info(validation_result);
        }
        //Non valid auth
        return 401;
    }
}
コード例 #2
0
void
procman_debug_real(const char *file, int line, const char *func,
                   const char *format, ...)
{
    va_list args;
    char *msg;

    if (G_LIKELY(!is_debug_enabled()))
        return;

    va_start(args, format);
    msg = g_strdup_vprintf(format, args);
    va_end(args);

    g_debug("[%.3f %s:%d %s] %s", get_relative_time(), file, line, func, msg);

    g_free(msg);
}
コード例 #3
0
ファイル: mhproto_client.cpp プロジェクト: albertopires/mhftp
// Public Methods
MhProtoClient::MhProtoClient(int *sd ,
        int numClient,
        int64_t chunk_size,
        bool verbose) {
    // Constructor
    sem_ = new Semaphore(1);
    CreateSharedMemory();
    client_sd_ = sd;
    numClient_ = numClient;
    *kill_proc_ = 0;
    main_proc_ = true;
    verbose_   = verbose;
    if (is_debug_enabled()) verbose_ = false;
    if (chunk_size == 0)
        chunk_size_ = CHUNK_SIZE;
    else
        chunk_size_ = chunk_size;
}
コード例 #4
0
ファイル: databuffer.c プロジェクト: Alibaba-boonya/mile
void print_data_buffer(struct data_buffer* data_buf) {
	if (!is_debug_enabled())
		return;
	uint32_t data_len = data_buf->data_len;
	uint32_t i;
	int offset = 0;
	int size = 1000;
	char buffer[1000];

	offset += snprintf_buffer(buffer + offset, size - offset, "buffer长度: %d\n",
			data_len);

	for (i = 0; i < data_len && offset < size - 1; i++) {
		offset += snprintf_buffer(buffer + offset, size - offset, "%02x ",
				data_buf->data[i]);
	}

	buffer[size - 1] = '\0';

	log_debug("%s", buffer);
}