Skip to content

Commit d1291c6

Browse files
authored
Merge pull request #299 from himmelblau-idm/stable-0.7.x_backports2
Backports to stable
2 parents 8007bf3 + b615d79 commit d1291c6

19 files changed

+842
-39
lines changed

Cargo.toml

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ members = [
1414
"src/file_permissions",
1515
"src/broker",
1616
"src/sshd-config",
17+
"src/sso",
1718
]
1819
resolver = "2"
1920

2021
[workspace.package]
21-
version = "0.7.3"
22+
version = "0.7.4"
2223
authors = [
2324
"David Mulder <[email protected]>"
2425
]

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ deb:
6969
rpm:
7070
mkdir -p ./packaging/
7171
git submodule init; git submodule update
72-
for v in rocky8 rocky9 tumbleweed; do \
72+
for v in rocky8 rocky9 sle15sp6 tumbleweed rawhide fedora41; do \
7373
echo "Building $$v RPM packages"; \
7474
$(DOCKER) build -t himmelblau-$$v-build -f images/rpm/Dockerfile.$$v .; \
7575
$(DOCKER) run --rm -it -v ./:/himmelblau himmelblau-$$v-build; \

images/rpm/Dockerfile.fedora41

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Use the official Fedora 41 image as the base
2+
FROM fedora:41
3+
4+
# Update the package list and install essential build dependencies
5+
RUN dnf -y update && \
6+
dnf -y install \
7+
wget \
8+
git \
9+
gcc \
10+
gcc-c++ \
11+
make \
12+
openssl-devel \
13+
dbus-devel \
14+
libtool \
15+
pkg-config \
16+
autoconf \
17+
pam-devel \
18+
systemd-devel \
19+
krb5-devel \
20+
pcre2-devel \
21+
clang \
22+
gettext \
23+
sqlite-devel \
24+
utf8proc-devel \
25+
cargo && \
26+
dnf clean all
27+
28+
# Set environment for Rust
29+
ENV PATH="/root/.cargo/bin:${PATH}"
30+
31+
VOLUME /himmelblau
32+
33+
# Change directory to the repository
34+
WORKDIR /himmelblau
35+
36+
# Install the cargo-deb tool
37+
RUN cargo install cargo-generate-rpm
38+
39+
# Build the project and create the RPM package
40+
CMD cargo clean && cargo build --release && strip -s target/release/*.so && strip -s target/release/aad-tool && strip -s target/release/himmelblaud && strip -s target/release/himmelblaud_tasks && strip -s target/release/broker && cargo generate-rpm -p src/daemon && cargo generate-rpm -p src/nss && cargo generate-rpm -p src/pam && cargo generate-rpm -p src/sshd-config && cargo generate-rpm -p src/sso

images/rpm/Dockerfile.rawhide

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Use the official Fedora Rawhide image as the base
2+
FROM fedora:rawhide
3+
4+
# Update the package list and install essential build dependencies
5+
RUN dnf -y update && \
6+
dnf -y install \
7+
wget \
8+
git \
9+
gcc \
10+
gcc-c++ \
11+
make \
12+
openssl-devel \
13+
dbus-devel \
14+
libtool \
15+
pkg-config \
16+
autoconf \
17+
pam-devel \
18+
systemd-devel \
19+
krb5-devel \
20+
pcre2-devel \
21+
clang \
22+
gettext \
23+
sqlite-devel \
24+
utf8proc-devel \
25+
cargo && \
26+
dnf clean all
27+
28+
# Set environment for Rust
29+
ENV PATH="/root/.cargo/bin:${PATH}"
30+
31+
VOLUME /himmelblau
32+
33+
# Change directory to the repository
34+
WORKDIR /himmelblau
35+
36+
# Install the cargo-deb tool
37+
RUN cargo install cargo-generate-rpm
38+
39+
# Build the project and create the RPM package
40+
CMD cargo clean && cargo build --release && strip -s target/release/*.so && strip -s target/release/aad-tool && strip -s target/release/himmelblaud && strip -s target/release/himmelblaud_tasks && strip -s target/release/broker && cargo generate-rpm -p src/daemon && cargo generate-rpm -p src/nss && cargo generate-rpm -p src/pam && cargo generate-rpm -p src/sshd-config && cargo generate-rpm -p src/sso

images/rpm/Dockerfile.rocky8

+10-14
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,18 @@ FROM rockylinux:8
44
# Set environment variables for non-interactive installs
55
ENV YUM_VERSION=8
66

7-
# Install epel-release (Extra Packages for Enterprise Linux) for utf8proc-devel
8-
#RUN yum update -y && yum install -y epel-release
7+
# Install utf8proc-devel, which has invalid characters in the filename,
8+
# breaking yum search.
9+
RUN yum update -y && dnf install -y 'dnf-command(config-manager)' wget \
10+
&& dnf config-manager --set-enabled powertools \
11+
&& yum update -y \
12+
&& VERSION_ID=$(grep "^VERSION_ID=" /etc/os-release | cut -d '"' -f 2) \
13+
&& URL="http://downloads.rockylinux.org/pub/rocky/${VERSION_ID}/PowerTools/x86_64/os/Packages/u/" \
14+
&& wget -r -l1 -nd -np -A "utf8proc-devel-*.x86_64.rpm" "$URL" \
15+
&& yum install -y ./utf8proc-devel-*.x86_64.rpm
916

1017
# Install essential build dependencies
1118
RUN yum update -y && yum install -y \
12-
wget \
1319
git \
1420
gcc \
1521
gcc-c++ \
@@ -29,16 +35,6 @@ RUN yum update -y && yum install -y \
2935
sqlite-devel \
3036
&& yum clean all
3137

32-
# Fetch the utf8proc sources, since EL8 doesn't package this
33-
RUN VERSION=2.6.1; \
34-
echo "Installing utf8proc version: $VERSION"; \
35-
wget https://github.com/JuliaStrings/utf8proc/archive/refs/tags/v$VERSION.tar.gz -O utf8proc-$VERSION.tar.gz; \
36-
mkdir -p utf8proc-rocky8 && \
37-
tar -xvf utf8proc-$VERSION.tar.gz -C utf8proc-rocky8 --strip-components=1 && \
38-
cd utf8proc-rocky8 && \
39-
make && \
40-
make install
41-
4238
# Install Rust (latest stable)
4339
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
4440

@@ -54,4 +50,4 @@ WORKDIR /himmelblau
5450
RUN cargo install cargo-generate-rpm
5551

5652
# Build the project and create the .deb package
57-
CMD cargo clean && cargo build --release && strip -s target/release/*.so && strip -s target/release/aad-tool && strip -s target/release/himmelblaud && strip -s target/release/himmelblaud_tasks && strip -s target/release/broker && cargo generate-rpm -p src/daemon && cargo generate-rpm -p src/nss && cargo generate-rpm -p src/pam && cargo generate-rpm -p src/sshd-config
53+
CMD cargo clean && cargo build --release && strip -s target/release/*.so && strip -s target/release/aad-tool && strip -s target/release/himmelblaud && strip -s target/release/himmelblaud_tasks && strip -s target/release/broker && cargo generate-rpm -p src/daemon && cargo generate-rpm -p src/nss && cargo generate-rpm -p src/pam && cargo generate-rpm -p src/sshd-config && cargo generate-rpm -p src/sso

images/rpm/Dockerfile.rocky9

+5-20
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ FROM rockylinux:9
44
# Set environment variables for non-interactive installs
55
ENV YUM_VERSION=8
66

7-
# Install epel-release (Extra Packages for Enterprise Linux) for utf8proc-devel
8-
#RUN yum update -y && yum install -y epel-release
7+
# Enable CRB, for utf8proc-devel
8+
RUN yum update -y && dnf install -y 'dnf-command(config-manager)' \
9+
&& dnf config-manager --set-enabled crb
910

1011
# Install essential build dependencies
1112
RUN yum update -y && yum install -y \
12-
wget \
1313
git \
1414
gcc \
1515
gcc-c++ \
@@ -27,24 +27,9 @@ RUN yum update -y && yum install -y \
2727
clang \
2828
gettext \
2929
sqlite-devel \
30-
utf8proc \
30+
utf8proc-devel \
3131
&& yum clean all
3232

33-
# Fetch the utf8proc sources, since EL9 doesn't package the headers
34-
RUN if ! rpm -q utf8proc; then \
35-
echo "utf8proc is not installed."; \
36-
exit 1; \
37-
else \
38-
VERSION=$(rpm -q --queryformat '%{VERSION}' utf8proc); \
39-
echo "Installed utf8proc version: $VERSION"; \
40-
wget https://github.com/JuliaStrings/utf8proc/archive/refs/tags/v$VERSION.tar.gz -O utf8proc-$VERSION.tar.gz; \
41-
fi && \
42-
mkdir -p utf8proc-rocky9 && \
43-
tar -xvf utf8proc-$VERSION.tar.gz -C utf8proc-rocky9 --strip-components=1 && \
44-
cd utf8proc-rocky9 && \
45-
make && \
46-
make install
47-
4833
# Install Rust (latest stable)
4934
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
5035

@@ -60,4 +45,4 @@ WORKDIR /himmelblau
6045
RUN cargo install cargo-generate-rpm
6146

6247
# Build the project and create the .deb package
63-
CMD cargo clean && cargo build --release && strip -s target/release/*.so && strip -s target/release/aad-tool && strip -s target/release/himmelblaud && strip -s target/release/himmelblaud_tasks && strip -s target/release/broker && cargo generate-rpm -p src/daemon && cargo generate-rpm -p src/nss && cargo generate-rpm -p src/pam && cargo generate-rpm -p src/sshd-config
48+
CMD cargo clean && cargo build --release && strip -s target/release/*.so && strip -s target/release/aad-tool && strip -s target/release/himmelblaud && strip -s target/release/himmelblaud_tasks && strip -s target/release/broker && cargo generate-rpm -p src/daemon && cargo generate-rpm -p src/nss && cargo generate-rpm -p src/pam && cargo generate-rpm -p src/sshd-config && cargo generate-rpm -p src/sso

images/rpm/Dockerfile.sle15sp6

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Use the official openSUSE Leap 15.6 image as the base
2+
FROM opensuse/leap:15.6
3+
4+
# Update the package list and install essential build dependencies
5+
RUN zypper --non-interactive refresh && zypper --non-interactive update && \
6+
zypper --non-interactive install --no-recommends \
7+
wget \
8+
git \
9+
gcc \
10+
gcc-c++ \
11+
make \
12+
libopenssl-3-devel \
13+
dbus-1-devel \
14+
libtool \
15+
pkg-config \
16+
autoconf \
17+
pam-devel \
18+
systemd-devel \
19+
libcap-progs \
20+
krb5-devel \
21+
pcre2-devel \
22+
clang \
23+
gettext-tools \
24+
sqlite3-devel \
25+
utf8proc-devel \
26+
cargo \
27+
&& zypper clean --all
28+
29+
# Set environment for Rust
30+
ENV PATH="/root/.cargo/bin:${PATH}"
31+
32+
VOLUME /himmelblau
33+
34+
# Change directory to the repository
35+
WORKDIR /himmelblau
36+
37+
# Install the cargo-deb tool
38+
RUN cargo install cargo-generate-rpm
39+
40+
# Build the project and create the RPM package
41+
CMD cargo clean && cargo build --release && strip -s target/release/*.so && strip -s target/release/aad-tool && strip -s target/release/himmelblaud && strip -s target/release/himmelblaud_tasks && strip -s target/release/broker && cargo generate-rpm -p src/daemon && cargo generate-rpm -p src/nss && cargo generate-rpm -p src/pam && cargo generate-rpm -p src/sshd-config && cargo generate-rpm -p src/sso

images/rpm/Dockerfile.tumbleweed

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,4 @@ WORKDIR /himmelblau
3838
RUN cargo install cargo-generate-rpm
3939

4040
# Build the project and create the RPM package
41-
CMD cargo clean && cargo build --release && strip -s target/release/*.so && strip -s target/release/aad-tool && strip -s target/release/himmelblaud && strip -s target/release/himmelblaud_tasks && strip -s target/release/broker && cargo generate-rpm -p src/daemon && cargo generate-rpm -p src/nss && cargo generate-rpm -p src/pam && cargo generate-rpm -p src/sshd-config
41+
CMD cargo clean && cargo build --release && strip -s target/release/*.so && strip -s target/release/aad-tool && strip -s target/release/himmelblaud && strip -s target/release/himmelblaud_tasks && strip -s target/release/broker && cargo generate-rpm -p src/daemon && cargo generate-rpm -p src/nss && cargo generate-rpm -p src/pam && cargo generate-rpm -p src/sshd-config && cargo generate-rpm -p src/sso

images/ubuntu/Dockerfile.22.04

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,4 @@ WORKDIR /himmelblau
4949
RUN cargo install cargo-deb
5050

5151
# Build the project and create the .deb package
52-
CMD cargo clean && cargo deb --deb-revision=ubuntu22.04 -p himmelblaud && cargo deb --deb-revision=ubuntu22.04 -p nss_himmelblau && cargo deb --deb-revision=ubuntu22.04 -p pam_himmelblau && cargo deb --deb-revision=ubuntu22.04 -p sshd-config
52+
CMD cargo clean && cargo deb --deb-revision=ubuntu22.04 -p himmelblaud && cargo deb --deb-revision=ubuntu22.04 -p nss_himmelblau && cargo deb --deb-revision=ubuntu22.04 -p pam_himmelblau && cargo deb --deb-revision=ubuntu22.04 -p sshd-config && cargo deb --deb-revision=ubuntu22.04 -p sso

images/ubuntu/Dockerfile.24.04

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,4 @@ WORKDIR /himmelblau
4949
RUN cargo install cargo-deb
5050

5151
# Build the project and create the .deb package
52-
CMD cargo clean && cargo deb --deb-revision=ubuntu24.04 -p himmelblaud && cargo deb --deb-revision=ubuntu24.04 -p nss_himmelblau && cargo deb --deb-revision=ubuntu24.04 -p pam_himmelblau && cargo deb --deb-revision=ubuntu24.04 -p sshd-config
52+
CMD cargo clean && cargo deb --deb-revision=ubuntu24.04 -p himmelblaud && cargo deb --deb-revision=ubuntu24.04 -p nss_himmelblau && cargo deb --deb-revision=ubuntu24.04 -p pam_himmelblau && cargo deb --deb-revision=ubuntu24.04 -p sshd-config && cargo deb --deb-revision=ubuntu24.04 -p sso

src/sso/Cargo.toml

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
[package]
2+
name = "sso"
3+
description = "Entra ID SSO via Himmelblau Identity Broker"
4+
version.workspace = true
5+
authors.workspace = true
6+
rust-version.workspace = true
7+
edition.workspace = true
8+
license.workspace = true
9+
homepage.workspace = true
10+
repository.workspace = true
11+
12+
[package.metadata.deb]
13+
name = "himmelblau-sso"
14+
depends = ["python3-pydbus"]
15+
assets = [
16+
["src/linux-entra-sso.py", "usr/bin/linux-entra-sso", "755"],
17+
["src/firefox/linux_entra_sso.json", "usr/lib/mozilla/native-messaging-hosts/", "644"],
18+
["src/firefox/policies.json", "etc/firefox/policies/", "644"],
19+
["src/chrome/linux_entra_sso.json", "etc/opt/chrome/native-messaging-hosts/", "644"],
20+
["src/chrome/linux_entra_sso.json", "etc/chromium/native-messaging-hosts/", "644"],
21+
["src/chrome/extension.json", "usr/share/google-chrome/extensions/jlnfnnolkbjieggibinobhkjdfbpcohn.json", "644"],
22+
["src/chrome/policies.json", "etc/opt/chrome/policies/managed/himmelblau.json", "644"],
23+
["src/chrome/policies.json", "etc/chromium/policies/managed/himmelblau.json", "644"],
24+
]
25+
26+
[package.metadata.generate-rpm]
27+
name = "himmelblau-sso"
28+
assets = [
29+
{ source = "src/linux-entra-sso.py", dest = "/usr/bin/linux-entra-sso", mode = "755" },
30+
{ source = "src/firefox/linux_entra_sso.json", dest = "/usr/lib64/mozilla/native-messaging-hosts/", mode = "644" },
31+
{ source = "src/firefox/policies.json", dest = "/etc/firefox/policies/", mode = "644" },
32+
{ source = "src/chrome/linux_entra_sso.json", dest = "/etc/opt/chrome/native-messaging-hosts/", mode = "644" },
33+
{ source = "src/chrome/linux_entra_sso.json", dest = "/etc/chromium/native-messaging-hosts/", mode = "644" },
34+
{ source = "src/chrome/extension.json", dest = "/usr/share/google-chrome/extensions/jlnfnnolkbjieggibinobhkjdfbpcohn.json", mode = "644" },
35+
{ source = "src/chrome/policies.json", dest = "/etc/opt/chrome/policies/managed/himmelblau.json", mode = "644" },
36+
{ source = "src/chrome/policies.json", dest = "/etc/chromium/policies/managed/himmelblau.json", mode = "644" },
37+
]
38+
39+
[package.metadata.generate-rpm.requires]
40+
python3-pydbus = "*"

0 commit comments

Comments
 (0)