Skip to content

Commit

Permalink
Added redirect_url option to websns_deny function
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeroen Nijhof committed Sep 7, 2011
1 parent 9e089b3 commit a204156
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 16 deletions.
4 changes: 2 additions & 2 deletions blacklist.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ int blacklist_backend(char *blacklist, char url[URL], int debug) {
syslog(LOG_WARNING, "blacklist: syntax error, line %d.", linenum);
continue;
}
if (debug > 1)
syslog(LOG_INFO, "blacklist: url (%s).", blacklist_url);
if (debug > 2)
syslog(LOG_INFO, "blacklist: checking if url contains (%s).", blacklist_url);
if ((strstr(url, blacklist_url)) != NULL) {
if (debug > 0)
syslog(LOG_INFO, "blacklist: url blocked.");
Expand Down
13 changes: 5 additions & 8 deletions n2h2.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,23 +47,20 @@ void n2h2_deny(int fd, struct sockaddr_in cli_addr, char req_id[REQID], char *re
mesg_denied[1] = 2;
for(i = 0; i < 4; i++)
mesg_denied[2+i] = req_id[i];
for(i = 0; i < 4; i++)
mesg_denied[6+i] = 0;

// send custom redirect url if defined
if (redirect_url != NULL) {
redirect_url_len = strlen(redirect_url) + 1;
if (redirect_url_len > URL) {
redirect_url_len = 0;
for(i = 0; i < 4; i++)
mesg_denied[6+i] = 0;
} else {
if (redirect_url_len <= URL) {
mesg_denied[6] = redirect_url_len / 768;
mesg_denied[7] = (redirect_url_len % 768) / 512;
mesg_denied[8] = ((redirect_url_len % 768) % 512) / 256;
mesg_denied[9] = ((redirect_url_len % 768) % 512) % 256;
for(i = 0; i < redirect_url_len; i++)
mesg_denied[N2H2RES+i] = redirect_url[i];
}
} else {
for(i = 0; i < 4; i++)
mesg_denied[6+i] = 0;
}

// send denied response
Expand Down
2 changes: 1 addition & 1 deletion openufp.c
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ int main(int argc, char**argv) {
if (frontend == N2H2) {
n2h2_deny(cli_fd, cli_addr, request.id, redirect_url);
} else {
websns_deny(cli_fd, cli_addr, request.id);
websns_deny(cli_fd, cli_addr, request.id, redirect_url);
}
if (debug > 0)
syslog(LOG_INFO, "url denied: srcip %s, dstip %s, url %s.", request.srcip, request.dstip, request.url);
Expand Down
24 changes: 20 additions & 4 deletions websense.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
void websns_accept(int fd, struct sockaddr_in cli_addr, char req_id[REQID]) {
// reqsize(2),reqid(10),code(2),desc(2),category(2),cache?(4),cachecmd(2),cachetype(2),null(8)
char mesg_accept[WEBSNSRES];
int i;
int i = 0;

mesg_accept[0] = 0;
mesg_accept[1] = WEBSNSRES;
Expand All @@ -30,10 +30,11 @@ void websns_accept(int fd, struct sockaddr_in cli_addr, char req_id[REQID]) {
sendto(fd, mesg_accept, WEBSNSRES, 0, (struct sockaddr *)&cli_addr, sizeof(cli_addr));
}

void websns_deny(int fd, struct sockaddr_in cli_addr, char req_id[REQID]) {
void websns_deny(int fd, struct sockaddr_in cli_addr, char req_id[REQID], char *redirect_url) {
// reqsize(2),reqid(10),code(2),desc(2),category(2),cache?(4),cachecmd(2),cachetype(2),null(8)
char mesg_denied[WEBSNSRES];
int i;
char mesg_denied[WEBSNSRES+URL];
int redirect_url_len = 0;
int i = 0;

mesg_denied[0] = 0;
mesg_denied[1] = WEBSNSRES;
Expand All @@ -48,6 +49,21 @@ void websns_deny(int fd, struct sockaddr_in cli_addr, char req_id[REQID]) {
for(i = 0; i < 16; i++)
mesg_denied[18+i] = 0;

// send custom redirect url if defined
// not working yet so disabled
redirect_url = NULL;
if (redirect_url != NULL) {
redirect_url_len = strlen(redirect_url) + 1;
if (redirect_url_len <= URL) {
mesg_denied[30] = redirect_url_len / 768;
mesg_denied[31] = (redirect_url_len % 768) / 512;
mesg_denied[32] = ((redirect_url_len % 768) % 512) / 256;
mesg_denied[33] = ((redirect_url_len % 768) % 512) % 256;
for(i = 0; i < redirect_url_len; i++)
mesg_denied[N2H2RES+i] = redirect_url[i];
}
}

// send denied response
sendto(fd, mesg_denied, WEBSNSRES, 0, (struct sockaddr *)&cli_addr, sizeof(cli_addr));
}
Expand Down
2 changes: 1 addition & 1 deletion websense.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@
#define WEBSNSRES 34

extern void websns_accept(int fd, struct sockaddr_in cli_addr, char req_id[REQID]);
extern void websns_deny(int fd, struct sockaddr_in cli_addr, char req_id[REQID]);
extern void websns_deny(int fd, struct sockaddr_in cli_addr, char req_id[REQID], char *redirect_url);
extern struct uf_request websns_request(char mesg[REQ]);

0 comments on commit a204156

Please sign in to comment.