mirror of
https://github.com/lldap/lldap.git
synced 2024-11-25 09:06:03 +00:00
Move backend source to server/ subpackage
To clarify the organization.
This commit is contained in:
parent
3eb53ba5bf
commit
d8df47b35d
30 changed files with 93 additions and 88 deletions
|
@ -3,6 +3,7 @@
|
|||
|
||||
# Don't track cargo generated files
|
||||
target/*
|
||||
server/target/*
|
||||
app/target/*
|
||||
auth/target/*
|
||||
|
||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,6 +1,7 @@
|
|||
# Generated by Cargo
|
||||
# will have compiled files and executables
|
||||
/target/
|
||||
/target
|
||||
/serve/target/
|
||||
/app/target
|
||||
/app/pkg
|
||||
/auth/target
|
||||
|
|
80
Cargo.toml
80
Cargo.toml
|
@ -1,78 +1,6 @@
|
|||
[workspace]
|
||||
members = [".", "auth", "app"]
|
||||
|
||||
[package]
|
||||
authors = ["Valentin Tolmer <valentin@tolmer.fr>", "Steve Barrau <steve.barrau@gmail.com>", "Thomas Wickham <mackwic@gmail.com>"]
|
||||
edition = "2018"
|
||||
name = "lldap"
|
||||
version = "0.1.0"
|
||||
|
||||
[dependencies]
|
||||
actix = "0.12"
|
||||
actix-files = "0.6.0-beta.6"
|
||||
actix-http = "3.0.0-beta.9"
|
||||
actix-rt = "2.2.0"
|
||||
actix-server = "2.0.0-beta.5"
|
||||
actix-service = "2.0.0"
|
||||
actix-web = "4.0.0-beta.8"
|
||||
actix-web-httpauth = "0.6.0-beta.2"
|
||||
anyhow = "*"
|
||||
async-trait = "0.1"
|
||||
base64 = "0.13"
|
||||
bincode = "1.3"
|
||||
chrono = { version = "*", features = [ "serde" ]}
|
||||
clap = "3.0.0-beta.2"
|
||||
cron = "*"
|
||||
derive_builder = "0.10.2"
|
||||
futures = "*"
|
||||
futures-util = "*"
|
||||
hmac = "0.10"
|
||||
http = "*"
|
||||
jwt = "0.13"
|
||||
ldap3_server = "*"
|
||||
lldap_auth = { path = "auth" }
|
||||
log = "*"
|
||||
orion = "0.16"
|
||||
serde = "*"
|
||||
serde_json = "1"
|
||||
sha2 = "0.9"
|
||||
sqlx-core = "=0.5.1"
|
||||
thiserror = "*"
|
||||
time = "0.2"
|
||||
tokio = { version = "1.2.0", features = ["full"] }
|
||||
tokio-util = "0.6.3"
|
||||
tracing = "*"
|
||||
tracing-actix-web = "0.4.0-beta.7"
|
||||
tracing-log = "*"
|
||||
tracing-subscriber = "*"
|
||||
rand = { version = "0.8", features = ["small_rng", "getrandom"] }
|
||||
juniper_actix = "0.4.0"
|
||||
juniper = "0.15.6"
|
||||
|
||||
# TODO: update to 0.6 when out.
|
||||
[dependencies.opaque-ke]
|
||||
git = "https://github.com/novifinancial/opaque-ke"
|
||||
rev = "eb59676a940b15f77871aefe1e46d7b5bf85f40a"
|
||||
|
||||
[dependencies.sqlx]
|
||||
version = "0.5.1"
|
||||
features = [
|
||||
"any",
|
||||
"chrono",
|
||||
"macros",
|
||||
"mysql",
|
||||
"postgres",
|
||||
"runtime-actix-native-tls",
|
||||
"sqlite",
|
||||
members = [
|
||||
"server",
|
||||
"auth",
|
||||
"app"
|
||||
]
|
||||
|
||||
[dependencies.sea-query]
|
||||
version = "0.9.4"
|
||||
features = ["with-chrono"]
|
||||
|
||||
[dependencies.figment]
|
||||
features = ["env", "toml"]
|
||||
version = "*"
|
||||
|
||||
[dev-dependencies]
|
||||
mockall = "0.9.1"
|
||||
|
|
|
@ -12,7 +12,7 @@ RUN set -x \
|
|||
app
|
||||
RUN set -x \
|
||||
# Install required packages
|
||||
&& apk add npm openssl-dev musl-dev
|
||||
&& apk add npm openssl-dev musl-dev make perl
|
||||
USER app
|
||||
WORKDIR /app
|
||||
RUN set -x \
|
||||
|
@ -21,7 +21,7 @@ RUN set -x \
|
|||
&& npm install rollup
|
||||
# Build
|
||||
COPY --chown=app:app . /app
|
||||
RUN cargo build --release
|
||||
RUN cargo build --release -p lldap
|
||||
# TODO: release mode.
|
||||
RUN ./app/build.sh
|
||||
|
||||
|
|
12
README.md
12
README.md
|
@ -28,7 +28,8 @@ Backend:
|
|||
* Only a small, read-only subset of the LDAP protocol is supported.
|
||||
* Listens on another port for HTTP traffic.
|
||||
* The authentication API, based on JWTs, is under "/auth".
|
||||
* The user management API is under "/api" (POST requests only).
|
||||
* The user management API is a GraphQL API under "/api/graphql". The schema
|
||||
is defined in `schema.graphql`.
|
||||
* The static frontend files are served by this port too.
|
||||
|
||||
Note that secure protocols (LDAPS, HTTPS) are currently not supported. This can
|
||||
|
@ -53,9 +54,9 @@ Data storage:
|
|||
interface between front and back-end. In particular, it contains the OPAQUE
|
||||
structures and the JWT format.
|
||||
* `app/`: The frontend.
|
||||
* `src/`: The backend.
|
||||
* `domain/`: Domain-specific logic: users, groups, checking passwords...
|
||||
* `infra/`: API, both GraphQL and LDAP
|
||||
* `server/`: The backend.
|
||||
* `src/domain/`: Domain-specific logic: users, groups, checking passwords...
|
||||
* `src/infra/`: API, both GraphQL and LDAP
|
||||
|
||||
## Authentication
|
||||
|
||||
|
@ -98,8 +99,7 @@ Contributions are welcome! Just fork and open a PR. Or just file a bug.
|
|||
We don't have a code of conduct, just be respectful and remember that it's just
|
||||
normal people doing this for free on their free time.
|
||||
|
||||
Make sure that you run `cargo fmt` in each crate that you modified (top-level,
|
||||
`app/` and `auth/`) before creating the PR.
|
||||
Make sure that you run `cargo fmt` from the root before creating the PR.
|
||||
|
||||
### Setup
|
||||
|
||||
|
|
75
server/Cargo.toml
Normal file
75
server/Cargo.toml
Normal file
|
@ -0,0 +1,75 @@
|
|||
[package]
|
||||
authors = ["Valentin Tolmer <valentin@tolmer.fr>", "Steve Barrau <steve.barrau@gmail.com>", "Thomas Wickham <mackwic@gmail.com>"]
|
||||
edition = "2018"
|
||||
name = "lldap"
|
||||
version = "0.1.0"
|
||||
|
||||
[dependencies]
|
||||
actix = "0.12"
|
||||
actix-files = "0.6.0-beta.6"
|
||||
actix-http = "3.0.0-beta.9"
|
||||
actix-rt = "2.2.0"
|
||||
actix-server = "2.0.0-beta.5"
|
||||
actix-service = "2.0.0"
|
||||
actix-web = "4.0.0-beta.8"
|
||||
actix-web-httpauth = "0.6.0-beta.2"
|
||||
anyhow = "*"
|
||||
async-trait = "0.1"
|
||||
base64 = "0.13"
|
||||
bincode = "1.3"
|
||||
chrono = { version = "*", features = [ "serde" ]}
|
||||
clap = "3.0.0-beta.2"
|
||||
cron = "*"
|
||||
derive_builder = "0.10.2"
|
||||
futures = "*"
|
||||
futures-util = "*"
|
||||
hmac = "0.10"
|
||||
http = "*"
|
||||
jwt = "0.13"
|
||||
ldap3_server = "*"
|
||||
lldap_auth = { path = "../auth" }
|
||||
log = "*"
|
||||
orion = "0.16"
|
||||
serde = "*"
|
||||
serde_json = "1"
|
||||
sha2 = "0.9"
|
||||
sqlx-core = "=0.5.1"
|
||||
thiserror = "*"
|
||||
time = "0.2"
|
||||
tokio = { version = "1.2.0", features = ["full"] }
|
||||
tokio-util = "0.6.3"
|
||||
tracing = "*"
|
||||
tracing-actix-web = "0.4.0-beta.7"
|
||||
tracing-log = "*"
|
||||
tracing-subscriber = "*"
|
||||
rand = { version = "0.8", features = ["small_rng", "getrandom"] }
|
||||
juniper_actix = "0.4.0"
|
||||
juniper = "0.15.6"
|
||||
|
||||
# TODO: update to 0.6 when out.
|
||||
[dependencies.opaque-ke]
|
||||
git = "https://github.com/novifinancial/opaque-ke"
|
||||
rev = "eb59676a940b15f77871aefe1e46d7b5bf85f40a"
|
||||
|
||||
[dependencies.sqlx]
|
||||
version = "0.5.1"
|
||||
features = [
|
||||
"any",
|
||||
"chrono",
|
||||
"macros",
|
||||
"mysql",
|
||||
"postgres",
|
||||
"runtime-actix-native-tls",
|
||||
"sqlite",
|
||||
]
|
||||
|
||||
[dependencies.sea-query]
|
||||
version = "0.9.4"
|
||||
features = ["with-chrono"]
|
||||
|
||||
[dependencies.figment]
|
||||
features = ["env", "toml"]
|
||||
version = "*"
|
||||
|
||||
[dev-dependencies]
|
||||
mockall = "0.9.1"
|
|
@ -20,7 +20,7 @@ use std::sync::RwLock;
|
|||
|
||||
async fn index(req: HttpRequest) -> actix_web::Result<NamedFile> {
|
||||
let mut path = PathBuf::new();
|
||||
path.push("app");
|
||||
path.push("../app");
|
||||
let file = req.match_info().query("filename");
|
||||
path.push(if file.is_empty() { "index.html" } else { file });
|
||||
Ok(NamedFile::open(path)?)
|
||||
|
@ -120,7 +120,7 @@ mod tests {
|
|||
async fn test_index_ok() {
|
||||
let req = TestRequest::default().to_http_request();
|
||||
let resp = index(req).await.unwrap();
|
||||
assert_eq!(resp.path(), Path::new("app/index.html"));
|
||||
assert_eq!(resp.path(), Path::new("../app/index.html"));
|
||||
}
|
||||
|
||||
#[actix_rt::test]
|
||||
|
@ -129,6 +129,6 @@ mod tests {
|
|||
.param("filename", "main.js")
|
||||
.to_http_request();
|
||||
let resp = index(req).await.unwrap();
|
||||
assert_eq!(resp.path(), Path::new("app/main.js"));
|
||||
assert_eq!(resp.path(), Path::new("../app/main.js"));
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue