1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-02-23 14:40:43 +00:00

(libT) uncrustify

This commit is contained in:
Charles Kerr 2008-09-26 15:40:24 +00:00
parent ecd5ea21fe
commit b8cff462a7

View file

@ -49,6 +49,25 @@ struct tr_rpc_server
#define dbgmsg( fmt... ) tr_deepLog( __FILE__, __LINE__, MY_NAME, ## fmt ) #define dbgmsg( fmt... ) tr_deepLog( __FILE__, __LINE__, MY_NAME, ## fmt )
/**
***
**/
static void
send_simple_response( struct evhttp_request * req,
int code,
const char * text )
{
const char * code_text = tr_webGetResponseStr( code );
struct evbuffer * body = evbuffer_new( );
evbuffer_add_printf( body, "<h1>%s</h1>", code_text );
if( text )
evbuffer_add_printf( body, "<h2>%s</h2>", text );
evhttp_send_reply( req, code, code_text, body );
evbuffer_free( body );
}
static const char* static const char*
tr_memmem( const char * s1, tr_memmem( const char * s1,
size_t l1, size_t l1,
@ -67,52 +86,9 @@ tr_memmem( const char * s1,
return NULL; return NULL;
} }
/****
***** ACL UTILITIES
****/
static int
isAddressAllowed( const tr_rpc_server * server,
const char * address )
{
const char * acl;
for( acl=server->acl; acl && *acl; )
{
const char * delimiter = strchr( acl, ',' );
const int len = delimiter ? delimiter-acl : (int)strlen( acl );
char * token = tr_strndup( acl, len );
const int match = tr_wildmat( address, token+1 );
tr_free( token );
if( match )
return *acl == '+';
if( !delimiter )
break;
acl = delimiter + 1;
}
return 0;
}
/**
***
**/
static void static void
send_simple_response( struct evhttp_request * req, int code, const char * text ) handle_upload( struct evhttp_request * req,
{ struct tr_rpc_server * server )
const char * code_text = tr_webGetResponseStr( code );
struct evbuffer * body = evbuffer_new( );
evbuffer_add_printf( body, "<h1>%s</h1>", code_text );
if( text )
evbuffer_add_printf( body, "<h2>%s</h2>", text );
evhttp_send_reply( req, code, code_text, body );
evbuffer_free( body );
}
static void
handle_upload( struct evhttp_request * req, struct tr_rpc_server * server )
{ {
if( req->type != EVHTTP_REQ_POST ) if( req->type != EVHTTP_REQ_POST )
{ {
@ -120,18 +96,21 @@ handle_upload( struct evhttp_request * req, struct tr_rpc_server * server )
} }
else else
{ {
const char * content_type = evhttp_find_header( req->input_headers,
const char * content_type = evhttp_find_header( req->input_headers, "Content-Type" ); "Content-Type" );
const char * query = strchr( req->uri, '?' ); const char * query = strchr( req->uri, '?' );
const int paused = query && strstr( query+1, "paused=true" ); const int paused = query && strstr( query + 1, "paused=true" );
const char * in = (const char *) EVBUFFER_DATA( req->input_buffer ); const char * in = (const char *) EVBUFFER_DATA( req->input_buffer );
size_t inlen = EVBUFFER_LENGTH( req->input_buffer ); size_t inlen = EVBUFFER_LENGTH( req->input_buffer );
const char * boundary_key = "boundary="; const char * boundary_key = "boundary=";
const char * boundary_key_begin = strstr( content_type, boundary_key ); const char * boundary_key_begin = strstr( content_type,
const char * boundary_val = boundary_key_begin ? boundary_key_begin + strlen( boundary_key ) : "arglebargle"; boundary_key );
const char * boundary_val =
boundary_key_begin ? boundary_key_begin +
strlen( boundary_key ) : "arglebargle";
char * boundary = tr_strdup_printf( "--%s", boundary_val ); char * boundary = tr_strdup_printf( "--%s", boundary_val );
const size_t boundary_len = strlen( boundary ); const size_t boundary_len = strlen( boundary );
@ -190,7 +169,8 @@ handle_upload( struct evhttp_request * req, struct tr_rpc_server * server )
/* use xml here because json responses to file uploads is trouble. /* use xml here because json responses to file uploads is trouble.
* see http://www.malsup.com/jquery/form/#sample7 for details */ * see http://www.malsup.com/jquery/form/#sample7 for details */
evhttp_add_header(req->output_headers, "Content-Type", "text/xml; charset=UTF-8" ); evhttp_add_header( req->output_headers, "Content-Type",
"text/xml; charset=UTF-8" );
send_simple_response( req, HTTP_OK, NULL ); send_simple_response( req, HTTP_OK, NULL );
} }
} }
@ -199,7 +179,9 @@ static const char*
mimetype_guess( const char * path ) mimetype_guess( const char * path )
{ {
unsigned int i; unsigned int i;
const struct {
const struct
{
const char * suffix; const char * suffix;
const char * mime_type; const char * mime_type;
} types[] = { } types[] = {
@ -213,19 +195,20 @@ mimetype_guess( const char * path )
}; };
const char * dot = strrchr( path, '.' ); const char * dot = strrchr( path, '.' );
for( i=0; dot && i<TR_N_ELEMENTS(types); ++i ) for( i = 0; dot && i < TR_N_ELEMENTS( types ); ++i )
if( !strcmp( dot+1, types[i].suffix ) ) if( !strcmp( dot + 1, types[i].suffix ) )
return types[i].mime_type; return types[i].mime_type;
return "application/octet-stream"; return "application/octet-stream";
} }
static void static void
serve_file( struct evhttp_request * req, const char * path ) serve_file( struct evhttp_request * req,
const char * path )
{ {
if( req->type != EVHTTP_REQ_GET ) if( req->type != EVHTTP_REQ_GET )
{ {
evhttp_add_header(req->output_headers, "Allow", "GET"); evhttp_add_header( req->output_headers, "Allow", "GET" );
send_simple_response( req, 405, NULL ); send_simple_response( req, 405, NULL );
} }
else else
@ -238,31 +221,37 @@ serve_file( struct evhttp_request * req, const char * path )
else else
{ {
struct evbuffer * buf = evbuffer_new( ); struct evbuffer * buf = evbuffer_new( );
evbuffer_read(buf, fd, INT_MAX ); evbuffer_read( buf, fd, INT_MAX );
evhttp_add_header(req->output_headers, "Content-Type", mimetype_guess( path ) ); evhttp_add_header( req->output_headers, "Content-Type",
mimetype_guess(
path ) );
evhttp_send_reply( req, HTTP_OK, "OK", buf ); evhttp_send_reply( req, HTTP_OK, "OK", buf );
evbuffer_free(buf); evbuffer_free( buf );
close( fd ); close( fd );
} }
} }
} }
static void static void
handle_clutch( struct evhttp_request * req, struct tr_rpc_server * server ) handle_clutch( struct evhttp_request * req,
struct tr_rpc_server * server )
{ {
const char * uri; const char * uri;
struct evbuffer * buf = evbuffer_new( ); struct evbuffer * buf = evbuffer_new( );
assert( !strncmp( req->uri, "/transmission/web/", 18 ) ); assert( !strncmp( req->uri, "/transmission/web/", 18 ) );
evbuffer_add_printf( buf, "%s%s", tr_getClutchDir( server->session ), TR_PATH_DELIMITER_STR ); evbuffer_add_printf( buf, "%s%s", tr_getClutchDir(
server->session ), TR_PATH_DELIMITER_STR );
uri = req->uri + 18; uri = req->uri + 18;
if( (*uri=='?') || (*uri=='\0') ) if( ( *uri == '?' ) || ( *uri == '\0' ) )
evbuffer_add_printf( buf, "index.html" ); evbuffer_add_printf( buf, "index.html" );
else { else
{
const char * pch = strchr( uri, '?' ); const char * pch = strchr( uri, '?' );
if( pch ) if( pch )
evbuffer_add_printf( buf, "%*.*s", (int)(pch-uri), (int)(pch-uri), uri ); evbuffer_add_printf( buf, "%*.*s", (int)( pch - uri ),
(int)( pch - uri ), uri );
else else
evbuffer_add_printf( buf, "%s", uri ); evbuffer_add_printf( buf, "%s", uri );
} }
@ -276,16 +265,17 @@ handle_clutch( struct evhttp_request * req, struct tr_rpc_server * server )
} }
static void static void
handle_rpc( struct evhttp_request * req, struct tr_rpc_server * server ) handle_rpc( struct evhttp_request * req,
struct tr_rpc_server * server )
{ {
int len = 0; int len = 0;
char * response; char * response = NULL;
struct evbuffer * buf; struct evbuffer * buf;
if( req->type == EVHTTP_REQ_GET ) if( req->type == EVHTTP_REQ_GET )
{ {
const char * q; const char * q;
if(( q = strchr( req->uri, '?' ))) if( ( q = strchr( req->uri, '?' ) ) )
response = tr_rpc_request_exec_uri( server->session, response = tr_rpc_request_exec_uri( server->session,
q + 1, q + 1,
strlen( q + 1 ), strlen( q + 1 ),
@ -294,24 +284,51 @@ handle_rpc( struct evhttp_request * req, struct tr_rpc_server * server )
else if( req->type == EVHTTP_REQ_POST ) else if( req->type == EVHTTP_REQ_POST )
{ {
response = tr_rpc_request_exec_json( server->session, response = tr_rpc_request_exec_json( server->session,
EVBUFFER_DATA( req->input_buffer ), EVBUFFER_DATA( req->
EVBUFFER_LENGTH( req->input_buffer ), input_buffer ),
EVBUFFER_LENGTH( req->
input_buffer ),
&len ); &len );
} }
buf = evbuffer_new( ); buf = evbuffer_new( );
evbuffer_add( buf, response, len ); evbuffer_add( buf, response, len );
evhttp_add_header( req->output_headers, "Content-Type", "application/json; charset=UTF-8" ); evhttp_add_header( req->output_headers, "Content-Type",
"application/json; charset=UTF-8" );
evhttp_send_reply( req, HTTP_OK, "OK", buf ); evhttp_send_reply( req, HTTP_OK, "OK", buf );
evbuffer_free( buf ); evbuffer_free( buf );
} }
static int
isAddressAllowed( const tr_rpc_server * server,
const char * address )
{
const char * acl;
for( acl = server->acl; acl && *acl; )
{
const char * delimiter = strchr( acl, ',' );
const int len = delimiter ? delimiter - acl : (int)strlen( acl );
char * token = tr_strndup( acl, len );
const int match = tr_wildmat( address, token + 1 );
tr_free( token );
if( match )
return *acl == '+';
if( !delimiter )
break;
acl = delimiter + 1;
}
return 0;
}
static void static void
handle_request( struct evhttp_request * req, void * arg ) handle_request( struct evhttp_request * req,
void * arg )
{ {
struct tr_rpc_server * server = arg; struct tr_rpc_server * server = arg;
if (req && req->evcon ) if( req && req->evcon )
{ {
const char * auth; const char * auth;
char * user = NULL; char * user = NULL;
@ -325,7 +342,8 @@ handle_request( struct evhttp_request * req, void * arg )
{ {
int plen; int plen;
char * p = tr_base64_decode( auth + 6, 0, &plen ); char * p = tr_base64_decode( auth + 6, 0, &plen );
if( p && plen && (( pass = strchr( p, ':' )))) { if( p && plen && ( ( pass = strchr( p, ':' ) ) ) )
{
user = p; user = p;
*pass++ = '\0'; *pass++ = '\0';
} }
@ -337,18 +355,22 @@ handle_request( struct evhttp_request * req, void * arg )
} }
else if( server->isPasswordEnabled && ( !pass else if( server->isPasswordEnabled && ( !pass
|| !user || !user
|| strcmp( server->username, user ) || strcmp( server->username,
|| strcmp( server->password, pass ) ) ) user )
|| strcmp( server->password,
pass ) ) )
{ {
evhttp_add_header( req->output_headers, evhttp_add_header( req->output_headers,
"WWW-Authenticate", "Basic realm=\"" MY_REALM "\"" ); "WWW-Authenticate",
"Basic realm=\"" MY_REALM "\"" );
send_simple_response( req, 401, "Unauthorized User" ); send_simple_response( req, 401, "Unauthorized User" );
} }
else if( !strcmp( req->uri, "/transmission/web" ) || else if( !strcmp( req->uri, "/transmission/web" )
!strcmp( req->uri, "/transmission/clutch" ) || || !strcmp( req->uri, "/transmission/clutch" )
!strcmp( req->uri, "/" ) ) || !strcmp( req->uri, "/" ) )
{ {
evhttp_add_header( req->output_headers, "Location", "/transmission/web/" ); evhttp_add_header( req->output_headers, "Location",
"/transmission/web/" );
send_simple_response( req, HTTP_MOVEPERM, NULL ); send_simple_response( req, HTTP_MOVEPERM, NULL );
} }
else if( !strncmp( req->uri, "/transmission/web/", 18 ) ) else if( !strncmp( req->uri, "/transmission/web/", 18 ) )
@ -536,3 +558,4 @@ tr_rpcInit( tr_handle * session,
startServer( s ); startServer( s );
return s; return s;
} }