|
|
@ -38,6 +38,8 @@ cmd_free(struct cmd *c) {
|
|
|
|
int
|
|
|
|
int
|
|
|
|
cmd_authorized(struct conf *cfg, struct evhttp_request *rq, const char *verb, size_t verb_len) {
|
|
|
|
cmd_authorized(struct conf *cfg, struct evhttp_request *rq, const char *verb, size_t verb_len) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char *always_off[] = {"MULTI", "EXEC", "WATCH", "DISCARD", "SUBSCRIBE", "PSUBSCRIBE"};
|
|
|
|
|
|
|
|
|
|
|
|
struct disabled_command *dc;
|
|
|
|
struct disabled_command *dc;
|
|
|
|
unsigned int i;
|
|
|
|
unsigned int i;
|
|
|
|
|
|
|
|
|
|
|
@ -45,6 +47,14 @@ cmd_authorized(struct conf *cfg, struct evhttp_request *rq, const char *verb, si
|
|
|
|
u_short client_port;
|
|
|
|
u_short client_port;
|
|
|
|
in_addr_t client_addr;
|
|
|
|
in_addr_t client_addr;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* some commands are always disabled, regardless of the config file. */
|
|
|
|
|
|
|
|
for(i = 0; i < sizeof(always_off) / sizeof(always_off[0]); ++i) {
|
|
|
|
|
|
|
|
if(strncasecmp(always_off[i], verb, verb_len) == 0) {
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* find client's address */
|
|
|
|
/* find client's address */
|
|
|
|
evhttp_connection_get_peer(rq->evcon, &client_ip, &client_port);
|
|
|
|
evhttp_connection_get_peer(rq->evcon, &client_ip, &client_port);
|
|
|
|
client_addr = ntohl(inet_addr(client_ip));
|
|
|
|
client_addr = ntohl(inet_addr(client_ip));
|
|
|
|