Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/AstroHQ/astro-dnssd
Simple Rust wrapper around DNS-SD
https://github.com/AstroHQ/astro-dnssd
dns-sd rust rust-wrapper
Last synced: about 2 months ago
JSON representation
Simple Rust wrapper around DNS-SD
- Host: GitHub
- URL: https://github.com/AstroHQ/astro-dnssd
- Owner: AstroHQ
- License: apache-2.0
- Created: 2018-12-25T14:55:54.000Z (almost 6 years ago)
- Default Branch: develop
- Last Pushed: 2024-03-28T16:33:31.000Z (6 months ago)
- Last Synced: 2024-05-07T02:21:24.747Z (5 months ago)
- Topics: dns-sd, rust, rust-wrapper
- Language: Rust
- Size: 134 KB
- Stars: 22
- Watchers: 8
- Forks: 3
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# Astro DNS-SD
[![Build Status](https://dev.azure.com/AstroHQ/astro-dnssd/_apis/build/status/AstroHQ.astro-dnssd?branchName=master)](https://dev.azure.com/AstroHQ/astro-dnssd/_build/latest?definitionId=1&branchName=master)
[![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg)](https://github.com/AstroHQ/astro-dnssd)
[![Cargo](https://img.shields.io/crates/v/astro-dnssd.svg)](https://crates.io/crates/astro-dnssd)
[![Documentation](https://docs.rs/astro-dnssd/badge.svg)](https://docs.rs/astro-dnssd)Minimal but friendly safe wrapper around dns-sd(Bonjour, mDNS, Zeroconf DNS) APIs.
[Documentation](https://crates.io/crates/astro-dnssd)
## Features
### Complete
- Service registration
- TXTRecord support for service registration via HashMap
- Service browsing### Todo
- Record creation
- Name resolution
- Port map
- Tests
- Documentation## Build Requirements
`astro-dnssd` requires the Bonjour SDK (as of 0.3 on windows, it's optional, see win-bonjour feature flag)- **Windows:** Download the SDK [here]( https://developer.apple.com/bonjour/)
- **Linux:** Install `avahi-compat-libdns_sd` for your distro of choice.## Technical Background
This [website](http://www.dns-sd.org/) provides a good overview of the DNS-SD protocol.## Example
```rust
use astro_dnssd::DNSServiceBuilder;
use env_logger::Env;
use std::thread::sleep;
use std::time::Duration;fn main() {
env_logger::from_env(Env::default().default_filter_or("trace")).init();
println!("Registering service...");
let service = DNSServiceBuilder::new("_http._tcp", 8080)
.with_key_value("status".into(), "open".into())
.register();{
match service {
Ok(service) => {
println!("Registered... waiting 20s");
sleep(Duration::from_secs(20));
println!("Dropping... {:?}", service);
}
Err(e) => {
println!("Error registering: {:?}", e);
}
}
}
log::info!("Drop should have happened");
sleep(Duration::from_secs(5));
}```
## License
Licensed under either of
- Apache License, Version 2.0
([LICENSE-APACHE](LICENSE-APACHE) or [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0))
- MIT license
([LICENSE-MIT](LICENSE-MIT) or [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT))at your option.
## Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.