用node.js制作DNS解释网站

来源:互联网 发布:买手机哪几个淘宝网好 编辑:程序博客网 时间:2024/05/24 02:00

1.制作入口模块(index.js)

//加载原生模块var http = require('http'),    url = require('url');//加载文件模块var router = require('./router.js');//创建Http服务器http.createServer(function(req,res){var pathname = url.parse(req.url).pathname; //pathname http请求路径req.setEncoding("utf8"); //设置http返回字符串编码res.writeHead(200,{'Content-Type':'text/html'});router.router(res,req,pathname); //调用router对象的方法}).listen(3000,"127.0.0.1"); //监听本地接口3000

2.路由处理模块(router.js)

//加载文件模块var ParseDns = require('./parse_dns.js'),    MainIndex = require('./main_index.js');//将router方法暴露给外部调用对象exports.router = function(res,req,pathname){switch(pathname){ //根据pathname来路由调用处理逻辑case"/parse":    ParseDns.parseDns(res,req)//执行DNS解析    break;    default:    MainIndex.goIndex(res,req)//响应HTML客户端}}

3.DNS解析模块(parse_dns.js)

//加载文件模块var querystring = require("querystring"),    dns = require('dns');//exports.parseDns = function(res,req){var postData = ""; //postDate为客户端提交的表单数据req.addListener("data",function(postDataChunk){postData += postDataChunk;});//HTTP响应http页面信息req.addListener("end",function(){var retData = getDns(postData,function(domain,addresses){res.writeHead(200,{'Content-Type':'text/html'});//结束返回html页面res.end("<html><head><meta http-equiv='content-type' content='text/html;charset=utf8'></head><div style='text-align:center'>Domain:<span style='color:red'>" + domain + "</span>IP:<span style='color:red'>"+addresses.join(',') + "</span></div></html>");});return;});function getDns(postData,callback){var domain = querystring.parse(postData).search_dns;//异步解析域名dns.resolve(domain,function(err,addresses){if(!addresses){addresses=['不存在域名']}callback(domain,addresses);});}}

4.首页展示模块(main_index.js)

//加载原生模块var fs = require('fs'),    url = require('url');//暴露方法exports.goIndex = function(res,req){var readPath = __dirname + '/' + url.parse('index.html').pathname;var indexPage = fs.readFileSync(readPath); //同步读取index.html页面数据res.end(indexPage); //响应返回一个index.html页面到客户端

5.html页面(index.html)

<!DOCTYPE html><html><head><meta charset="utf-8" /><title>DNS查询</title></head><body><h1 style="text-align: center">DNS查询工具</h1><div style="text-align: center"><form action="/parse" method="post">     查询DNS:<input type="text" name='search_dns' />     <input type='submit' value="查询"/></form></div></body></html>


0 0
原创粉丝点击