diff --git a/mod_webgate.c b/mod_webgate.c index 24185ed..eb0a08c 100644 --- a/mod_webgate.c +++ b/mod_webgate.c @@ -25,7 +25,7 @@ static bool check_user_agent_exception(request_rec* r) { return apr_table_get(r->headers_in, "Git-Protocol"); } -static char* generate_token(apr_pool_t* pool) { +static const char* generate_token(apr_pool_t* pool) { char rnd[32]; apr_generate_random_bytes(rnd, sizeof(rnd)); char rnd_md5[APR_MD5_DIGESTSIZE]; @@ -39,9 +39,47 @@ static char* generate_token(apr_pool_t* pool) { // Generates new token and sets HTTP cookie containing it then presents client with challenge static void handle_challenge(request_rec* r) { - char* generated = generate_token(r->pool); + const char* const generated = generate_token(r->pool); ap_cookie_write(r, TOKEN_COOKIE_NAME, generated, NULL, 0, r->headers_out, NULL); - ap_rprintf(r, "Token: %s\n", generated); + + // Send challenge page beginning + ap_set_content_type(r, "text/html"); + ap_rvputs(r, "" + "" + "
" + "