Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ctype.h>
- #include <signal.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <sys/socket.h>
- #include <unistd.h>
- volatile int i0;
- const struct sockaddr ssa0 = { AF_INET, { 74, 84, 127, 0, 0, 1 } };
- const struct timeval stv0 = { 0, 500000 };
- void f0(int i1) {
- printf("\nClosing socket...\n");
- close(i0);
- exit(EXIT_SUCCESS);
- }
- int main(int i1, char *cP_0[]) {
- char *cP0, *cP1, *cP2;
- int i2, i3, i4;
- socklen_t slt0;
- struct sockaddr ssa1;
- cP0 = malloc(8192);
- cP1 = malloc(8);
- cP2 = malloc(32);
- signal(SIGINT, f0);
- printf("Opening socket...\n");
- i0 = socket(AF_INET, SOCK_STREAM, 0);
- printf("Binding socket...\n");
- bind(i0, &ssa0, sizeof(struct sockaddr));
- printf("Preparing socket for listening...\n");
- listen(i0, 4);
- printf("Listening on 127.0.0.1:19028...\n");
- for (;;) {
- slt0 = sizeof(struct sockaddr);
- i2 = accept(i0, &ssa1, &slt0);
- printf("Connection received, reading data...\n");
- setsockopt(i2, SOL_SOCKET, SO_RCVTIMEO, &stv0, sizeof(struct timeval));
- i3 = 0;
- do {
- i3 += i4 = read(i2, &cP0[i3], 1);
- cP0[i3] = 0;
- }
- while (i3 < 8192 && i4 && !strstr(cP0, "\r\n\r\n"));
- if (!i3)
- goto l0;
- if (i3 == 8192) {
- printf("Invalid request, must be a haxxor! Retaliating...\n");
- write(i2, "HTTP/1.1 413 Request Entity Too Large\r\nConnection: cl\
- ose\r\nContent-Length: 21\r\nContent-Type: text/plain; charset=utf-8\r\nAccess\
- -Control-Allow-Origin: *\r\n\r\nNot this time, Vader.", 174);
- goto l0;
- }
- if (cP0[0] != 'P' || cP0[1] != 'O' || cP0[2] != 'S' || cP0[3] != 'T') {
- printf("Invalid request, must be a haxxor! Retaliating...\n");
- write(i2, "HTTP/1.1 405 Method Not Allowed\r\nConnection: close\r\
- \nAllow: POST\r\nContent-Length: 21\r\nContent-Type: text/plain; charset=utf-8\
- \r\nAccess-Control-Allow-Origin: *\r\n\r\nNot this time, Vader.", 181);
- goto l0;
- }
- i3 = read(i2, cP1, 7);
- cP1[7] = 0;
- if (i3 != 7 || cP1[0] != 'A' || !isdigit(cP1[1]) || !isdigit(cP1[2])
- || !isdigit(cP1[3]) || !isdigit(cP1[4]) || !isdigit(cP1[5])
- || !isdigit(cP1[6])) {
- printf("Invalid request, must be a haxxor! Retaliating...\n");
- write(i2, "HTTP/1.1 403 Forbidden\r\nConnection: close\r\nContent-\
- Length: 21\r\nContent-Type: text/plain; charset=utf-8\r\nAccess-Control-Allow-\
- Origin: *\r\n\r\nNot this time, Vader.", 159);
- goto l0;
- }
- printf("Leia, is %s a tarp?\n", cP1);
- cP1[0] = 'b';
- strcpy(cP2, "/home/lm978/B-files/");
- strcat(cP2, cP1);
- strcat(cP2, ".txt");
- i3 = access(cP2, F_OK) != -1;
- printf(i3 ? "Luke, it's a tarp!\n" : "No tarps here...\n");
- if (i3)
- write(i2, "HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Length:\
- 4\r\nContent-Type: application/json; charset=utf-8\r\nAccess-Control-Allow-Or\
- igin: *\r\n\r\ntrue", 140);
- else
- write(i2, "HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Length:\
- 5\r\nContent-Type: application/json; charset=utf-8\r\nAccess-Control-Allow-Or\
- igin: *\r\n\r\nfalse", 141);
- l0:
- printf("Closing connection...\n");
- close(i2);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement