cr-dns
所属分类:网络编程
开发工具:Crystal
文件大小:0KB
下载次数:0
上传日期:2018-11-20 02:49:51
上 传 者:
sh-1993
说明: WIP:DNS解析器和服务器的Crystal库,
(WIP: Crystal library for DNS resolvers and servers,)
文件列表:
.editorconfig (150, 2018-11-19)
.travis.yml (18, 2018-11-19)
LICENSE (1076, 2018-11-19)
REFERENCE.md (1670, 2018-11-19)
shard.yml (180, 2018-11-19)
spec/ (0, 2018-11-19)
spec/cache_spec.cr (858, 2018-11-19)
spec/dns_server_and_resolver_spec.cr (2763, 2018-11-19)
spec/dns_spec.cr (2365, 2018-11-19)
spec/iterative_resolver_spec.cr (1533, 2018-11-19)
spec/mock/ (0, 2018-11-19)
spec/mock/network_factory.cr (471, 2018-11-19)
spec/rr_spec.cr (1377, 2018-11-19)
spec/spec_helper.cr (415, 2018-11-19)
spec/zone_spec.cr (6719, 2018-11-19)
src/ (0, 2018-11-19)
src/dns.cr (144, 2018-11-19)
src/dns/ (0, 2018-11-19)
src/dns/cache.cr (1853, 2018-11-19)
src/dns/debug.cr (246, 2018-11-19)
src/dns/extra/ (0, 2018-11-19)
src/dns/extra/channel.cr (331, 2018-11-19)
src/dns/extra/io.cr (768, 2018-11-19)
src/dns/message.cr (5885, 2018-11-19)
src/dns/name.cr (1290, 2018-11-19)
src/dns/resolver.cr (136, 2018-11-19)
src/dns/resolver/ (0, 2018-11-19)
src/dns/resolver/channel.cr (135, 2018-11-19)
src/dns/resolver/factory.cr (196, 2018-11-19)
src/dns/resolver/iterative_resolver.cr (3055, 2018-11-19)
src/dns/resolver/network_factory.cr (237, 2018-11-19)
src/dns/resolver/remote.cr (1456, 2018-11-19)
src/dns/resolver/tcp_channel.cr (607, 2018-11-19)
src/dns/resolver/udp_channel.cr (455, 2018-11-19)
src/dns/rr.cr (3206, 2018-11-19)
src/dns/rr/ (0, 2018-11-19)
src/dns/rr/a.cr (899, 2018-11-19)
src/dns/rr/aaaa.cr (616, 2018-11-19)
... ...
# dns
Work In Progress - This is not yet a usable library
Features:
* Basic server and resolver functionality over TCP and UDP (not yet standards compliant)
* Zone file reader
* Currently supported Resource Records: A, CNAME, MX, NS, PTR, SOA, and TXT
* Partially supported Resource Records: AAAA, HINFO, and OPT
* Simple DNS response caching
## Installation
Add this to your application's `shard.yml`:
```yaml
dependencies:
dns:
github: teknomunk/cr-dns
```
## Usage
### Client
```crystal
require "dns"
resolv = DNS::Resolver.new( DNS::Resolver::TCPChannel.new( "127.0.0.0", 5353 ) )
resolv.send_request( DNS::Message.simple_query( "A", "example.com." ) )
msg = resolv.get_response()
if msg.answers.size > 0 && (rr=msg.answers[0]).is_a?(DNS::RR::A)
puts rr.ip_address
end
```
### Server
```crystal
require "dns"
server = DNS::Server.new()
server.listen_udp( "0.0.0.0", 5353 )
server.listen_tcp( "0.0.0.0", 5353 )
server.add_zone( DNS::Zone.new( File.open("test.zone") ) )
server.run()
```
## Contributing
1. Fork it ()
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request
## Contributors
- [teknomunk](https://github.com/teknomunk) teknomunk - creator, maintainer
近期下载者:
相关文件:
收藏者: