Skip to content

Commit 2cdc782

Browse files
author
vsilent
committed
shell commands
1 parent 6820bd2 commit 2cdc782

File tree

12 files changed

+159
-47
lines changed

12 files changed

+159
-47
lines changed

Cargo.toml

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,33 +5,34 @@ authors = ["Vasili Pascal <info@try.direct>"]
55
edition = "2021"
66

77
#[package.metadata.docs.rs]
8-
features = ["openssl", "rustls", "compress", "secure-cookies"]
8+
#features = ["openssl", "rustls", "compress", "secure-cookies"]
99

1010
[dependencies]
11-
#actix-web = { version = "3.0.0-beta.3", features=["rustls"] }
12-
actix-web = { version = "3.3.3", features=["rustls"] }
11+
actix-web = { version = "3.0.0-beta.3", features=["rustls"] }
1312
actix-rt = "1.1.1"
1413
actix-service = "1.0.6"
1514
actix-cors = "0.3.0"
1615
actix-http = "2.1.0"
17-
log = "0.4.11"
18-
env_logger = "0.9.0"
19-
serde = "1.0.116"
20-
bigdecimal = "0.3.0"
16+
actix-tls = "3.0.0"
17+
log = "0.4.22"
18+
env_logger = "0.11.3"
19+
serde = "1.0.204"
20+
bigdecimal = "0.4.5"
2121
diesel_migrations = "1.4.0"
22-
serde_derive = "1.0.116"
23-
serde_json = "1.0.59"
22+
serde_derive = "1.0.204"
23+
serde_json = "1.0.120"
2424
dotenv = "0.15.0"
25-
futures = "0.3.5"
25+
futures = "0.3.30"
2626
failure = "0.1.8"
27-
derive_more = "0.99.10"
28-
jsonwebtoken = "7.2.0"
29-
bcrypt = "0.10.0"
30-
actix-tls = "3.0.0"
31-
bollard = "0.11.1"
32-
awc = { version = "2.0.0", default-features = false }
27+
derive_more = "0.99.17"
28+
jsonwebtoken = "9.3.0"
29+
bcrypt = "0.15.1"
30+
bollard = "0.16.1"
31+
awc = { version = "2.0.3", default-features = false }
3332
open-ssl = { package = "openssl", version = "0.10", optional = true }
3433
rust-tls = { package = "rustls", version = "0.18.0", optional = true }
34+
tracing = "0.1.40"
35+
tracing-subscriber = "0.3.18"
3536

3637
[features]
3738
# openssl
@@ -47,11 +48,11 @@ default = ["compress"]
4748

4849

4950
[dependencies.chrono]
50-
version = "0.4.15"
51+
version = "0.4.38"
5152
features = ["serde"]
5253

5354
[dependencies.uuid]
54-
version = "0.8.1"
55+
version = "1.10.0"
5556
features = ["v4"]
5657

5758
[dependencies.diesel]
@@ -60,5 +61,4 @@ features = ["sqlite", "r2d2", "chrono", "numeric"]
6061

6162
[dev-dependencies.diesel]
6263
version = "1.4.6"
63-
features = ["r2d2", "chrono"]
64-
64+
features = ["r2d2", "chrono"]

docker/local/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ RUN apt-get update; \
3939
apt-get install --no-install-recommends -y libpq-dev sqlite3 libsqlite3-dev; \
4040
rm -rf /var/lib/apt/lists/*
4141

42+
from rustscan/rustscan:latest as rustscan
43+
COPY --from=rustscan /app/rustscan/target/release/rustscan /usr/local/bin/rustscan
44+
4245
# copy binary and configuration files
4346
COPY --from=build /app/target/release/stackdog .
4447
COPY --from=build /app/.env .

src/api/docker_controller.rs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
use crate::{
22
constants, models::response::ResponseBody, services::docker_service,
33
};
4-
use actix_web::{HttpResponse, Result};
4+
use actix_web::{web, HttpResponse, Result};
5+
// use crate::{
6+
// models::{
7+
// docker::{DockerTDO},
8+
// }
9+
// };
510

611
pub async fn find_all() -> Result<HttpResponse> {
712
match docker_service::find_all().await {
@@ -11,6 +16,25 @@ pub async fn find_all() -> Result<HttpResponse> {
1116
}
1217
}
1318

19+
pub async fn find_one(id: String) -> Result<HttpResponse> {
20+
debug!("Get container by id ... {:?}", id);
21+
match docker_service::find_one(id).await {
22+
Ok(message) => Ok(HttpResponse::Ok().json(
23+
ResponseBody::new(constants::EMPTY, &message))),
24+
Err(err) => Ok(err.response()),
25+
}
26+
}
27+
28+
pub async fn get_logs(container_name: String) -> Result<HttpResponse> {
29+
debug!("Get container logs by id ... {:?}", container_name);
30+
match docker_service::get_logs(container_name.as_str()).await {
31+
Ok(message) => Ok(HttpResponse::Ok().json(
32+
ResponseBody::new(constants::EMPTY, &message))),
33+
Err(err) => Ok(err.response()),
34+
}
35+
}
36+
37+
1438
#[cfg(test)]
1539
mod tests {
1640
use crate::{App, config};

src/api/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
pub mod ping_controller;
22
pub mod account_controller;
33
pub(crate) mod docker_controller;
4+
pub(crate) mod scan_controller;

src/config/app.rs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ pub fn config_services(cfg: &mut web::ServiceConfig) {
66
cfg.service(
77
web::scope("/api")
88
.service(ping_controller::ping)
9+
.service(
10+
web::resource("/scan/online")
11+
.route(web::post().to(scan_controller::scan_online))
12+
)
13+
.service(
14+
web::resource("/scan/ssl")
15+
.route(web::post().to(scan_controller::scan_ssl))
16+
)
917
.service(
1018
web::scope("/auth")
1119
.service(
@@ -23,14 +31,14 @@ pub fn config_services(cfg: &mut web::ServiceConfig) {
2331
web::resource("/")
2432
.route(web::get().to(docker_controller::find_all))
2533
)
26-
// .service(
27-
// web::resource("/{id}")
28-
// .route(web::get().to(docker_controller::service_view))
29-
// )
30-
// .service(
31-
// web::resource("/{id}/logs")
32-
// .route(web::get().to(docker_controller::service_logs))
33-
// )
34+
.service(
35+
web::resource("/{id}")
36+
.route(web::get().to(docker_controller::find_one))
37+
)
38+
.service(
39+
web::resource("/{id}/logs")
40+
.route(web::get().to(docker_controller::get_logs))
41+
)
3442
// .service(
3543
// web::resource("/{id}/restart")
3644
// .route(web::get().to(docker_controller::service_restart))

src/config/db.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ use diesel::{
66
dsl
77
};
88

9-
10-
119
embed_migrations!();
1210

1311
// #[cfg(not(test))]

src/constants.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ pub const AUTHORIZATION: &str = "Authorization";
1717
pub const EMPTY: &str = "";
1818

1919
// ignore routes
20-
pub const IGNORE_ROUTES: [&str; 2] = ["/api/ping", "/api/auth/login"];
20+
pub const IGNORE_ROUTES: [&str; 3] = ["/api/ping", "/api/auth/login", "/api/scan"];

src/main.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,26 @@ use futures::FutureExt;
4040
use std::{io, env};
4141
use std::default::Default;
4242
use actix_cors::Cors;
43+
use tracing;
44+
use tracing::{info, Level};
45+
use tracing_subscriber::FmtSubscriber;
4346

4447
#[actix_rt::main]
4548
async fn main() -> io::Result<()> {
4649
dotenv::dotenv().expect("Could not read .env file");
4750
env::set_var("RUST_LOG", "actix_web=debug");
4851
env_logger::init();
52+
// a builder for `FmtSubscriber`.
53+
let subscriber = FmtSubscriber::builder()
54+
// all spans/events with a level higher than TRACE (e.g, debug, info, warn, etc.)
55+
// will be written to stdout.
56+
.with_max_level(Level::TRACE)
57+
// completes the builder.
58+
.finish();
59+
60+
tracing::subscriber::set_global_default(subscriber)
61+
.expect("setting default subscriber failed");
62+
4963

5064
let app_host = env::var("APP_HOST").expect("APP_HOST not found.");
5165
let app_port = env::var("APP_PORT").expect("APP_PORT not found.");

src/models/docker.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
use crate::{
2+
config::db::Connection,
3+
models::{user_token::UserToken},
4+
schema::users::{self, dsl::*},
5+
};
6+
use bcrypt::{hash, verify, DEFAULT_COST};
7+
use diesel::prelude::*;
8+
use uuid::Uuid;
9+
10+
// #[derive(Serialize, Deserialize)]
11+
// pub struct DockerTDO {
12+
// pub id: String,
13+
// }

src/models/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
pub mod response;
22
pub mod user;
33
pub mod user_token;
4+
pub mod docker;

0 commit comments

Comments
 (0)