Compare commits

..

47 commits

Author SHA1 Message Date
8f766ae883 Merge pull request 'chore(deps): update rust crate base64 to 0.22.0' (#16) from renovate/base64-0.x into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #16
2024-06-10 23:52:47 +05:30
a49b6eda71 Merge pull request 'fix(deps): update rust crate futures-util to v0.3.30' (#11) from renovate/rust-futures-monorepo into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #11
2024-06-10 20:53:14 +05:30
61e1a04a74 Merge pull request 'fix(deps): update rust crate log to v0.4.21' (#12) from renovate/log-0.x-lockfile into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #12
2024-06-10 20:53:07 +05:30
Renovate Bot
2951e6108b chore(deps): update rust crate base64 to 0.22.0
Some checks failed
renovate/artifacts Artifact file update failure
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 14:00:47 +00:00
Renovate Bot
5be1af71f1 fix(deps): update rust crate log to v0.4.21
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 14:00:42 +00:00
Renovate Bot
496a1015bd fix(deps): update rust crate futures-util to v0.3.30
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 14:00:36 +00:00
97714408bc Merge pull request 'fix(deps): update rust crate rust-embed to v8' (#29) from renovate/rust-embed-8.x into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #29
2024-06-10 19:05:03 +05:30
845d7b623b Merge pull request 'chore(deps): update debian docker tag to v12' (#28) from renovate/debian-12.x into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #28
2024-06-10 19:04:58 +05:30
44bb60b819 Merge pull request 'fix(deps): update rust crate url to v2.5.1' (#27) from renovate/url-2.x-lockfile into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #27
2024-06-10 19:04:56 +05:30
6fd98159f8 Merge pull request 'fix(deps): update rust crate derive_builder to 0.20.0' (#24) from renovate/derive_builder-0.x into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #24
2024-06-10 19:04:49 +05:30
Renovate Bot
e9f1c04040 fix(deps): update rust crate rust-embed to v8
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 09:30:47 +00:00
Renovate Bot
86e6b37baa chore(deps): update debian docker tag to v12
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 09:30:44 +00:00
Renovate Bot
449f946c1a fix(deps): update rust crate url to v2.5.0
Some checks failed
ci/woodpecker/pr/woodpecker Pipeline was successful
renovate/artifacts Artifact file update failure
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 09:30:41 +00:00
Renovate Bot
12326f8b22 fix(deps): update rust crate derive_builder to 0.20.0
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 09:30:34 +00:00
dcf93427a7 Merge pull request 'fix(deps): update rust crate rust-embed to v6.8.1' (#26) from renovate/rust-embed-6.x-lockfile into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #26
2024-06-10 14:46:27 +05:30
8770086354 Merge pull request 'fix(deps): update rust crate pretty_env_logger to 0.5.0' (#25) from renovate/pretty_env_logger-0.x into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #25
2024-06-10 14:46:23 +05:30
43827923d8 Merge pull request 'fix(deps): update rust crate config to 0.14' (#23) from renovate/config-0.x into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #23
2024-06-10 14:46:12 +05:30
372fcd6688 Merge pull request 'chore(deps): update rust crate tokio to v1.38.0' (#18) from renovate/tokio-1.x-lockfile into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #18
2024-06-10 14:35:55 +05:30
867375673e Merge pull request 'fix(deps): update rust crate async-trait to v0.1.80' (#10) from renovate/async-trait-0.x-lockfile into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #10
2024-06-10 14:35:38 +05:30
Renovate Bot
374cec6eb5 fix(deps): update rust crate rust-embed to v6.8.1
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 09:01:04 +00:00
Renovate Bot
200df429b8 fix(deps): update rust crate pretty_env_logger to 0.5.0
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 09:00:56 +00:00
Renovate Bot
8c75edaec6 fix(deps): update rust crate config to 0.14
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 09:00:48 +00:00
Renovate Bot
e6fafdd9f1 chore(deps): update rust crate tokio to v1.38.0
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 09:00:40 +00:00
Renovate Bot
00d1b90538 fix(deps): update rust crate async-trait to v0.1.80
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 09:00:29 +00:00
43b0226746 Merge pull request 'fix(deps): update rust crate actix-web-prom to 0.8.0' (#22) from renovate/actix-web-prom-0.x into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #22
2024-06-10 14:17:35 +05:30
859c947db3 Merge pull request 'fix(deps): update rust crate serde_json to v1.0.117' (#14) from renovate/serde_json-1.x-lockfile into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #14
2024-06-10 14:17:31 +05:30
f580c49a97 Merge pull request 'fix(deps): update rust crate serde to v1.0.203' (#13) from renovate/serde-monorepo into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #13
2024-06-10 14:17:28 +05:30
b1d3c3e4a1 Merge pull request 'fix(deps): update rust crate actix-web-httpauth to v0.8.1' (#9) from renovate/actix-web-httpauth-0.x-lockfile into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #9
2024-06-10 14:17:24 +05:30
Renovate Bot
9748936a72 fix(deps): update rust crate actix-web-prom to 0.8.0
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 07:30:49 +00:00
Renovate Bot
3f05a42fa6 fix(deps): update rust crate serde_json to v1.0.117
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 07:30:41 +00:00
Renovate Bot
09756b6301 fix(deps): update rust crate serde to v1.0.203
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 07:30:37 +00:00
Renovate Bot
7c038bae36 fix(deps): update rust crate actix-web-httpauth to v0.8.1
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-10 07:30:31 +00:00
6aa3c4ffba Merge pull request 'fix(deps): update rust crate actix-web to v4.7.0' (#21) from renovate/actix-web-4.x-lockfile into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #21
2024-06-10 12:51:00 +05:30
Renovate Bot
6377333b84 fix(deps): update rust crate actix-web to v4.7.0
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-09 20:00:47 +00:00
a63d251f59 Merge pull request 'chore(deps): update rust crate actix-rt to v2.10.0' (#15) from renovate/actix-rt-2.x-lockfile into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #15
2024-06-10 01:07:40 +05:30
Renovate Bot
4ac2b04efd chore(deps): update rust crate actix-rt to v2.10.0
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-09 18:00:50 +00:00
5932a3e96d Merge pull request 'fix: CI: publish only on master' (#20) from fix-ci-deploy into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #20
2024-06-08 02:19:24 +05:30
fdc7b10a6e
fix: CI: publish only on master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-06-07 23:20:53 +05:30
d25a4e9808 Merge pull request 'chore: Configure Renovate' (#8) from renovate/configure into master
Reviewed-on: #8
2024-06-04 10:15:06 +05:30
Renovate Bot
15b58dab9f Add renovate.json 2024-06-03 03:00:15 +00:00
b0d94f91dc
feat: run conductor as root
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-12-30 05:18:43 +05:30
d40e8642de
feat: publish systemd service file
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-12-30 04:44:39 +05:30
5851b686b4
feat: read config from /etc/librepages/conductor/ 2022-12-30 04:44:30 +05:30
db9115b90b
feat: read token from env var
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-12-29 18:34:39 +05:30
b15c72ef30
feat: read token from env var
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-12-29 17:48:30 +05:30
cd0589fb2e
feat: replace http auth with bearer auth
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2022-12-29 17:29:07 +05:30
58eef6b3fa
feat: add prometheus instrumentation
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2022-12-25 13:14:00 +05:30
14 changed files with 704 additions and 320 deletions

View file

@ -1,5 +1,5 @@
pipeline:
backend:
steps:
test:
image: rust
# environment:
# - DATABASE_URL=postgres://postgres:password@database:5432/postgres
@ -11,7 +11,9 @@ pipeline:
publish_bins:
image: rust
when:
event: [push, tag, deployment]
branch: master
commands:
- apt update
- apt-get -y --no-install-recommends install gpg tar curl wget
@ -21,6 +23,9 @@ pipeline:
publish:
image: plugins/docker
when:
event: [push, tag, deployment]
branch: master
settings:
username: realaravinth
password:

663
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -12,22 +12,23 @@ build = "build.rs"
[dependencies]
actix-web = "4"
actix-web-prom = "0.8.0"
futures-util = { version = "0.3.17", default-features = false, features = ["std"] }
lazy_static = "1.4.0"
log = "0.4.17"
pretty_env_logger = "0.4.0"
pretty_env_logger = "0.5.0"
serde = { version = "1", features=["derive"]}
actix-web-codegen-const-routes = { version = "0.1.0", tag = "0.1.0", git = "https://github.com/realaravinth/actix-web-codegen-const-routes" }
libconfig = { version = "0.1.0", git = "https://git.batsense.net/librepages/libconfig" }
derive_builder = "0.11.2"
config = "0.13"
derive_builder = "0.20.0"
config = "0.14"
derive_more = "0.99.17"
url = { version = "2.2.2", features = ["serde"]}
serde_json = { version ="1", features = ["raw_value"]}
clap = { vesrion = "3.2.20", features = ["derive"]}
actix-web-httpauth = "0.8.0"
mime_guess = "2.0.4"
rust-embed = "6.4.2"
rust-embed = "8.0.0"
[dependencies.libconductor]
path = "./env/libconductor"
@ -41,4 +42,4 @@ sqlx = { version = "0.6.1", features = [ "runtime-actix-rustls", "postgres", "ti
[dev-dependencies]
actix-rt = "2.7.0"
base64 = "0.13.0"
base64 = "0.22.0"

View file

@ -19,7 +19,7 @@ RUN cargo --version
#RUN make cache-bust
RUN cargo build --release
FROM debian:bullseye as conductor
FROM debian:bookworm as conductor
LABEL org.opencontainers.image.source https://git.batsense.net/librepages/conductor
RUN apt-get update && apt-get install -y ca-certificates
RUN useradd -ms /bin/bash -u 1001 conductor

View file

@ -3,8 +3,7 @@ source_code = "https://git.batsense.net/librepages/conductor"
conductor = "dummy"
[creds]
username = "librepages_api"
password="longrandomlygeneratedpassword"
token="longrandomlygeneratedpassword"
[server]
# Please set a unique value, your mCaptcha instance's security depends on this being

View file

@ -0,0 +1,24 @@
[Unit]
Description=LibrePages Conductor: Easiest way to deploy websites. Conductor component
[Service]
Type=simple
User=root
ExecStart=/usr/bin/conductor serve
Restart=on-failure
RestartSec=1
SuccessExitStatus=3 4
RestartForceExitStatus=3 4
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true
Environment="RUST_LOG=info"
[Unit]
Wants=network-online.target
Wants=network-online.target
Requires=postgresql.service
After=syslog.target
[Install]
WantedBy=multi-user.target

205
env/dummy_conductor/Cargo.lock generated vendored
View file

@ -3,21 +3,57 @@
version = 3
[[package]]
name = "async-trait"
version = "0.1.57"
name = "addr2line"
version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f"
checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678"
dependencies = [
"proc-macro2",
"quote",
"syn",
"gimli",
]
[[package]]
name = "autocfg"
version = "1.1.0"
name = "adler"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "async-trait"
version = "0.1.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.66",
]
[[package]]
name = "backtrace"
version = "0.3.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11"
dependencies = [
"addr2line",
"cc",
"cfg-if",
"libc",
"miniz_oxide",
"object",
"rustc-demangle",
]
[[package]]
name = "cc"
version = "1.0.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695"
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "dummy_conductor"
@ -30,6 +66,12 @@ dependencies = [
"tokio",
]
[[package]]
name = "gimli"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"
[[package]]
name = "hermit-abi"
version = "0.1.19"
@ -47,9 +89,9 @@ checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"
[[package]]
name = "libc"
version = "0.2.138"
version = "0.2.155"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
[[package]]
name = "libconductor"
@ -69,6 +111,21 @@ dependencies = [
"serde",
]
[[package]]
name = "memchr"
version = "2.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
[[package]]
name = "miniz_oxide"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae"
dependencies = [
"adler",
]
[[package]]
name = "num_cpus"
version = "1.14.0"
@ -80,29 +137,44 @@ dependencies = [
]
[[package]]
name = "pin-project-lite"
version = "0.2.9"
name = "object"
version = "0.35.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e"
dependencies = [
"memchr",
]
[[package]]
name = "pin-project-lite"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
[[package]]
name = "proc-macro2"
version = "1.0.46"
version = "1.0.85"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.21"
version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rustc-demangle"
version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
[[package]]
name = "ryu"
version = "1.0.11"
@ -111,29 +183,29 @@ checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
[[package]]
name = "serde"
version = "1.0.145"
version = "1.0.203"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.145"
version = "1.0.203"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
dependencies = [
"proc-macro2",
"quote",
"syn",
"syn 2.0.66",
]
[[package]]
name = "serde_json"
version = "1.0.85"
version = "1.0.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44"
checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
dependencies = [
"itoa",
"ryu",
@ -152,27 +224,37 @@ dependencies = [
]
[[package]]
name = "tokio"
version = "1.23.0"
name = "syn"
version = "2.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46"
checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
dependencies = [
"autocfg",
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "tokio"
version = "1.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a"
dependencies = [
"backtrace",
"num_cpus",
"pin-project-lite",
"tokio-macros",
"windows-sys",
]
[[package]]
name = "tokio-macros"
version = "1.8.2"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8"
checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a"
dependencies = [
"proc-macro2",
"quote",
"syn",
"syn 2.0.66",
]
[[package]]
@ -180,60 +262,3 @@ name = "unicode-ident"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd"
[[package]]
name = "windows-sys"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
dependencies = [
"windows_aarch64_gnullvm",
"windows_aarch64_msvc",
"windows_i686_gnu",
"windows_i686_msvc",
"windows_x86_64_gnu",
"windows_x86_64_gnullvm",
"windows_x86_64_msvc",
]
[[package]]
name = "windows_aarch64_gnullvm"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"
[[package]]
name = "windows_aarch64_msvc"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"
[[package]]
name = "windows_i686_gnu"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"
[[package]]
name = "windows_i686_msvc"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"
[[package]]
name = "windows_x86_64_gnu"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"
[[package]]
name = "windows_x86_64_msvc"
version = "0.42.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"

28
env/libconductor/Cargo.lock generated vendored
View file

@ -4,9 +4,9 @@ version = 3
[[package]]
name = "async-trait"
version = "0.1.57"
version = "0.1.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f"
checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
dependencies = [
"proc-macro2",
"quote",
@ -39,18 +39,18 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.46"
version = "1.0.85"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.21"
version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
dependencies = [
"proc-macro2",
]
@ -63,18 +63,18 @@ checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
[[package]]
name = "serde"
version = "1.0.145"
version = "1.0.203"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.145"
version = "1.0.203"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
dependencies = [
"proc-macro2",
"quote",
@ -83,9 +83,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.85"
version = "1.0.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44"
checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
dependencies = [
"itoa",
"ryu",
@ -94,9 +94,9 @@ dependencies = [
[[package]]
name = "syn"
version = "1.0.101"
version = "2.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e90cde112c4b9690b8cbe810cba9ddd8bc1d7472e2cae317b69e9438c1cba7d2"
checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
dependencies = [
"proc-macro2",
"quote",

21
renovate.json Normal file
View file

@ -0,0 +1,21 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended",
":dependencyDashboard"
],
"labels": [
"renovate-bot"
],
"prHourlyLimit": 0,
"timezone": "Asia/kolkata",
"prCreation": "immediate",
"vulnerabilityAlerts": {
"enabled": true,
"labels": [
"renovate-bot",
"renovate-security",
"security"
]
}
}

View file

@ -38,6 +38,8 @@ DOCKER_IMG="realaravinth/$NAME:$3"
get_bin(){
cp target/release/conductor $TARGET_DIR
cp -r config/ $TARGET_DIR
cp -r contrib/ $TARGET_DIR
}
copy() {

View file

@ -17,7 +17,7 @@
use actix_web::dev::ServiceRequest;
use actix_web::web;
use actix_web::Error;
use actix_web_httpauth::extractors::basic::BasicAuth;
use actix_web_httpauth::extractors::bearer::BearerAuth;
use crate::errors::*;
use crate::AppCtx;
@ -26,14 +26,13 @@ use crate::SETTINGS;
pub mod meta;
pub mod webhook;
pub async fn httpauth(
pub async fn bearerauth(
req: ServiceRequest,
credentials: BasicAuth,
credentials: BearerAuth,
) -> Result<ServiceRequest, (Error, ServiceRequest)> {
let _ctx: &AppCtx = req.app_data().unwrap();
let username = credentials.user_id();
let password = credentials.password().unwrap();
if SETTINGS.authenticate(username, password) {
let token = credentials.token();
if SETTINGS.authenticate(token) {
Ok(req)
} else {
let e = Error::from(ServiceError::Unauthorized);

View file

@ -24,7 +24,7 @@ use crate::errors::*;
use crate::AppCtx;
use crate::*;
use super::httpauth;
use super::bearerauth;
pub mod routes {
use super::*;
@ -47,7 +47,7 @@ pub fn services(cfg: &mut web::ServiceConfig) {
#[actix_web_codegen_const_routes::post(
path = "API_V1_ROUTES.webhook.post_event",
wrap = "HttpAuthentication::basic(httpauth)"
wrap = "HttpAuthentication::bearer(bearerauth)"
)]
async fn post_event(ctx: AppCtx, payload: web::Json<EventType>) -> ServiceResult<impl Responder> {
ctx.conductor.process(payload.into_inner()).await;
@ -71,10 +71,7 @@ pub mod tests {
.await;
let creds = settings.creds.clone();
let auth = format!(
"Basic {}",
base64::encode(format!("{}:{}", creds.username.clone(), creds.password))
);
let auth = format!("Bearer {}", creds.token,);
let msg = EventType::NewSite {
hostname: "demo.librepages.org".into(),

View file

@ -19,6 +19,7 @@ use std::env;
use actix_web::http::StatusCode;
use actix_web::web::JsonConfig;
use actix_web::{error::InternalError, middleware, App, HttpServer};
use actix_web_prom::PrometheusMetricsBuilder;
use clap::{Parser, Subcommand};
use log::info;
@ -112,6 +113,11 @@ async fn serve(settings: Settings, ctx: AppCtx) -> std::io::Result<()> {
let ip = settings.server.get_ip();
println!("Starting server on: http://{ip}");
let prometheus = PrometheusMetricsBuilder::new("api")
.endpoint("/metrics")
.build()
.unwrap();
HttpServer::new(move || {
App::new()
.wrap(middleware::Logger::default())
@ -124,6 +130,7 @@ async fn serve(settings: Settings, ctx: AppCtx) -> std::io::Result<()> {
middleware::TrailingSlash::Trim,
))
.app_data(get_json_err())
.wrap(prometheus.clone())
.configure(routes::services)
})
.bind(ip)?

View file

@ -54,8 +54,7 @@ pub enum ConductorType {
#[derive(Debug, Clone, Deserialize)]
pub struct Creds {
pub username: String,
pub password: String,
pub token: String,
}
#[derive(Debug, Clone, Deserialize)]
@ -69,15 +68,15 @@ pub struct Settings {
#[cfg(not(tarpaulin_include))]
impl Settings {
pub fn authenticate(&self, username: &str, password: &str) -> bool {
self.creds.username == username && self.creds.password == password
pub fn authenticate(&self, token: &str) -> bool {
self.creds.token == token
}
pub fn new() -> Result<Self, ConfigError> {
let mut s = Config::builder();
const CURRENT_DIR: &str = "./config/config.toml";
const ETC: &str = "/etc/lpconductor/config.toml";
const ETC: &str = "/etc/librepages/conductor/config.toml";
if let Ok(path) = env::var("LPCONDUCTOR_CONFIG") {
s = s.add_source(File::with_name(&path));
@ -138,6 +137,13 @@ fn set_separator_field(mut s: ConfigBuilder<DefaultState>) -> ConfigBuilder<Defa
&format!("{PREFIX}{SEPARATOR}SERVER{SEPARATOR}PROXY_HAS_TLS"),
"server.proxy_has_tls",
);
s = from_env(
s,
&format!("{PREFIX}{SEPARATOR}CREDS{SEPARATOR}TOKEN"),
"creds.token",
);
s
}
@ -148,16 +154,13 @@ mod tests {
#[test]
fn creds_works() {
let settings = Settings::new().unwrap();
let mut creds = settings.creds.clone();
let creds = settings.creds.clone();
assert!(settings.authenticate(&creds.username, &creds.password));
creds.username = "noexist".into();
assert!(!settings.authenticate(&creds.username, &creds.password));
assert!(settings.authenticate(&creds.token));
let mut creds = settings.creds.clone();
creds.password = "noexist".into();
assert!(!settings.authenticate(&creds.username, &creds.password));
creds.token = "noexist".into();
assert!(!settings.authenticate(&creds.token))
}
}