1
0
mirror of https://github.com/vbrandl/bind9-api.git synced 2025-08-19 06:35:34 +02:00

1 Commits

Author SHA1 Message Date
dependabot-preview[bot]
b9bd57d243 Bump hex from 0.4.0 to 0.4.2
Bumps [hex](https://github.com/KokaKiwi/rust-hex) from 0.4.0 to 0.4.2.
- [Release notes](https://github.com/KokaKiwi/rust-hex/releases)
- [Commits](https://github.com/KokaKiwi/rust-hex/compare/v0.4...v0.4.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-04 11:31:59 +00:00
8 changed files with 1166 additions and 1687 deletions

2819
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,19 +7,6 @@
This is an attempt to implement an API to create, update or delete DNS records This is an attempt to implement an API to create, update or delete DNS records
on a BIND9 DNS server. on a BIND9 DNS server.
## Building
To compile the code, you first need to [install Rust](https://rustup.rs/). Then
you can run
```
cargo build --release
```
in the project root. The server and client binary will be located in
`./target/release/bind9-api` and `./target/release/bind9-api-client`
respectively.
## Server ## Server
The server will wait for incoming requests and uses the `nsupdate` command to The server will wait for incoming requests and uses the `nsupdate` command to

View File

@@ -13,8 +13,8 @@ failure = "0.1.7"
hyper = "0.12.35" hyper = "0.12.35"
log = "0.4.8" log = "0.4.8"
openssl-probe = "0.1.2" openssl-probe = "0.1.2"
pretty_env_logger = "0.4.0" pretty_env_logger = "0.3.1"
reqwest = "0.9.24" reqwest = "0.9.22"
serde = "1.0.104" serde = "1.0.104"
serde_derive = "1.0.104" serde_derive = "1.0.104"
serde_json = "1.0.50" serde_json = "1.0.50"

View File

@@ -106,7 +106,7 @@ fn call_api<D: serde::Serialize>(
let data_s = serde_json::to_string(&data)?; let data_s = serde_json::to_string(&data)?;
info!("body: {}", data_s); info!("body: {}", data_s);
let signature = crypto::sign(config.secret.as_bytes(), data_s.as_bytes()); let signature = crypto::sign(config.secret.as_bytes(), data_s.as_bytes());
let signature = crypto::bytes_to_hex_str(&signature); let signature = crypto::bytes_to_hex_str(&signature)?;
let client = reqwest::Client::new(); let client = reqwest::Client::new();
let url = format!("{}/record", config.host); let url = format!("{}/record", config.host);
Ok(if method == Method::POST { Ok(if method == Method::POST {

View File

@@ -6,7 +6,7 @@ license = "MIT/Apache-2.0"
[dependencies] [dependencies]
failure = "0.1.7" failure = "0.1.7"
hex = "0.4.0" hex = "0.4.2"
ring = "0.13.5" ring = "0.13.5"
[dev-dependencies] [dev-dependencies]

View File

@@ -55,8 +55,10 @@ use ring::{digest, hmac};
type Result<T> = std::result::Result<T, Error>; type Result<T> = std::result::Result<T, Error>;
/// Converts a byte slice to a lowercase hex string. /// Converts a byte slice to a lowercase hex string.
pub fn bytes_to_hex_str(bytes: &[u8]) -> String { pub fn bytes_to_hex_str(bytes: &[u8]) -> Result<String> {
bytes.encode_hex::<String>() let mut output = String::new();
bytes.write_hex(&mut output)?;
Ok(output)
} }
/// Converts a hey string to a vec of bytes. /// Converts a hey string to a vec of bytes.

View File

@@ -13,6 +13,6 @@ data = { path = "../data" }
failure = "0.1.7" failure = "0.1.7"
futures = "0.1.29" futures = "0.1.29"
log = "0.4.8" log = "0.4.8"
pretty_env_logger = "0.4.0" pretty_env_logger = "0.3.1"
serde = "1.0.104" serde = "1.0.104"
serde_json = "1.0.50" serde_json = "1.0.50"

View File

@@ -104,7 +104,7 @@ pub struct Validated<T>(T);
impl<T: 'static + ::serde::de::DeserializeOwned> FromRequest<Arc<Config>> for Validated<T> { impl<T: 'static + ::serde::de::DeserializeOwned> FromRequest<Arc<Config>> for Validated<T> {
type Config = (); type Config = ();
type Result = Box<dyn Future<Item = Self, Error = Error>>; type Result = Box<Future<Item = Self, Error = Error>>;
fn from_request(req: &HttpRequest<Arc<Config>>, _: &Self::Config) -> Self::Result { fn from_request(req: &HttpRequest<Arc<Config>>, _: &Self::Config) -> Self::Result {
let state = req.state().clone(); let state = req.state().clone();
@@ -134,8 +134,7 @@ impl<T> Deref for Validated<T> {
} }
fn extract_signature<S>(req: &HttpRequest<S>) -> Result<Vec<u8>> { fn extract_signature<S>(req: &HttpRequest<S>) -> Result<Vec<u8>> {
Ok(req Ok(req.headers()
.headers()
.get(::data::TOKEN_HEADER) .get(::data::TOKEN_HEADER)
.as_ref() .as_ref()
.ok_or_else(|| ErrorUnauthorized(ParseError::Header))? .ok_or_else(|| ErrorUnauthorized(ParseError::Header))?