56 lines
1.5 KiB
C
56 lines
1.5 KiB
C
|
#ifndef _HTTPDNS_
|
||
|
#define _HTTPDNS_
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <sys/socket.h>
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/stat.h>
|
||
|
#include <netinet/in.h>
|
||
|
#include <string.h>
|
||
|
#include <fcntl.h>
|
||
|
#include <arpa/inet.h>
|
||
|
#include <unistd.h>
|
||
|
#include <sys/epoll.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <netdb.h>
|
||
|
#include <pthread.h>
|
||
|
#include <signal.h>
|
||
|
#include <errno.h>
|
||
|
|
||
|
#define DEFAULT_UPPER_IP "114.114.114.114"
|
||
|
#define MAX_FD 1024
|
||
|
#define DNS_REQUEST_SIZE 512
|
||
|
#define BUFF_SIZE 1024
|
||
|
|
||
|
typedef struct dns_request {
|
||
|
char dns_req[DNS_REQUEST_SIZE + 1];
|
||
|
char *http_rsp;
|
||
|
unsigned int http_rsp_len, sent_len, dns_req_len;
|
||
|
int fd;
|
||
|
} dns_t;
|
||
|
|
||
|
struct dns_hosts {
|
||
|
char *host;
|
||
|
char *ip;
|
||
|
struct dns_hosts *next;
|
||
|
};
|
||
|
|
||
|
#define VERSION "0.3"
|
||
|
#define ERROR_MSG "HTTP/1.0 404 Not Found\r\nConnection: close\r\nVia: Mmmdbybyd(HTTP-DNS Server "VERSION")\r\nContent-type: charset=utf-8\r\n\r\n<html><head><title>HTTP DNS Server</title></head><body>查询域名失败<br/><br/>By: 萌萌萌得不要不要哒<br/>E-mail: 915445800@qq.com</body></html>"
|
||
|
#define SUCCESS_HEADER "HTTP/1.0 200 OK\r\nConnection: close\r\nVia: Mmmdbybyd(HTTP-DNS Server "VERSION")\r\n\r\n"
|
||
|
|
||
|
dns_t dns_list[MAX_FD - 2]; //监听客户端FD DNS服务端fd
|
||
|
struct epoll_event evs[MAX_FD - 1], ev;
|
||
|
|
||
|
int listenFd, dstFd, eFd;
|
||
|
socklen_t addr_len;
|
||
|
void recv_dns_rsp();
|
||
|
void query_dns();
|
||
|
void read_client(dns_t * in);
|
||
|
void response_client(dns_t * out);
|
||
|
void httpdns_accept_client();
|
||
|
int httpdns_initialize();
|
||
|
void *httpdns_start_server();
|
||
|
|
||
|
#endif
|