1
0
mirror of https://github.com/vbrandl/bind9-api.git synced 2025-07-30 19:06:41 +02:00

6 Commits

Author SHA1 Message Date
6688ffebbc Update dependencies
Applyed `cargo update`
2023-12-27 13:18:29 +01:00
Valentin Brandl
bee19e4c78 Document building the project 2020-11-30 16:40:07 +01:00
Valentin Brandl
be5c8c6e62 Fix deprecation 2020-11-30 16:35:31 +01:00
Valentin Brandl
55aa95a41c Fix breaking change in ToHex crate 2020-11-30 16:35:19 +01:00
Valentin Brandl
a31c30a3b0 Merge pull request #72 from vbrandl/dependabot/cargo/reqwest-0.9.24
Bump reqwest from 0.9.22 to 0.9.24
2020-04-04 13:41:26 +02:00
dependabot-preview[bot]
27cba3d460 Bump reqwest from 0.9.22 to 0.9.24
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.9.22 to 0.9.24.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/v0.9.24/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.9.22...v0.9.24)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-04 11:35:01 +00:00
7 changed files with 1672 additions and 1238 deletions

2880
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,6 +7,19 @@
This is an attempt to implement an API to create, update or delete DNS records
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
The server will wait for incoming requests and uses the `nsupdate` command to

View File

@@ -14,7 +14,7 @@ hyper = "0.12.35"
log = "0.4.8"
openssl-probe = "0.1.2"
pretty_env_logger = "0.4.0"
reqwest = "0.9.22"
reqwest = "0.9.24"
serde = "1.0.104"
serde_derive = "1.0.104"
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)?;
info!("body: {}", data_s);
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 url = format!("{}/record", config.host);
Ok(if method == Method::POST {

View File

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

View File

@@ -11,7 +11,7 @@ clap = "2.33.0"
crypto = { path = "../crypto" }
data = { path = "../data" }
failure = "0.1.7"
futures = "0.3.4"
futures = "0.1.29"
log = "0.4.8"
pretty_env_logger = "0.4.0"
serde = "1.0.104"

View File

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