oports
Rust library to asynchronously retrieve open ports for a given IP address
## Install
Add `oports` as a dependency in the cargo.toml file of your project:
```toml
[dependencies]
oports = "1.0.0"
```
If you have [cargo-edit](https://github.com/killercup/cargo-edit) utility tool
installed, use:
```bash
$ cargo add oports
```
## Interface
#### is_port_open(ip: IpAddr, port: u16) -> bool
Check if the given port is open for a specified IP address.
```rust
use oports;
use std::net::IpAddr;
let localhost = IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1));
let is_open = oports::is_port_open(localhost, 4040).await;
```
#### get_open_ports(ip: IpAddr, ports: Vec, concurrency: Option) -> Vec
Retrieves a vec with open ports for a given vec of port numbers an IP addresses.
The default concurrency is `100` if the `Option` resolves to a `None` value.
```rust
use oports;
use std::net::IpAddr;
let localhost = IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1));
let ports = (8000..9090).collect::>();
let concurrency = Some(120)
let open_ports = oports::get_open_ports(localhost, ports, concurrency).await;
```
#### get_all_open_ports(ip: IpAddr, concurrency: Option) -> Vec
Retrieves a vec with all open ports for a given IP address. The default concurrency
is `100` if the `Option` resolves to a `None` value.
```rust
use oports;
use std::net::IpAddr;
let localhost = IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1));
let ports = (8080..u16::max_value()).collect::>();
let concurrency = None // Default to 100
let all_open_ports = oports::get_all_open_ports(localhost, concurrency).await;
```
## License
[MIT License](https://github.com/ndelvalle/oports/blob/master/LICENSE)