From 01f991c00a3ebe72ff5ec12894a543aee2f4f262 Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (Pragmatismo)" Date: Sun, 22 Jun 2025 19:55:36 -0300 Subject: [PATCH] feat: integrate JMAP client and refactor file handling - Added `jmap-client` dependency to Cargo.toml for JMAP email functionality. - Created a new `email` service to handle email listing via JMAP. - Refactored file upload and listing functionality into a dedicated `file` service. - Introduced `AppState` struct to manage shared application state, including MinIO client and configuration. - Updated main application to initialize and use the new services. --- src/scripts/install-libreoffice-online.sh | 65 +++++++++++++++ .../tenants/default/doc-editor/doc-editor.sh | 80 +++---------------- 2 files changed, 74 insertions(+), 71 deletions(-) create mode 100644 src/scripts/install-libreoffice-online.sh diff --git a/src/scripts/install-libreoffice-online.sh b/src/scripts/install-libreoffice-online.sh new file mode 100644 index 0000000..30b953d --- /dev/null +++ b/src/scripts/install-libreoffice-online.sh @@ -0,0 +1,65 @@ +sudo apt install -y cloud-guest-utils e2fsprogs + +apt install -y make g++ build-essential +apt install -y openjdk-17-jdk ant +apt install -y sudo systemd wget zip procps ccache +apt install -y automake bison flex git gperf graphviz junit4 libtool m4 nasm +apt install -y libcairo2-dev libjpeg-dev libegl1-mesa-dev libfontconfig1-dev \ + libgl1-mesa-dev libgif-dev libgtk-3-dev librsvg2-dev libpango1.0-dev +apt install -y libcap-dev libcap2-bin libkrb5-dev libpcap0.8-dev openssl libssl-dev +apt install -y libxcb-dev libx11-xcb-dev libxkbcommon-x11-dev libxtst-dev \ + libxrender-dev libxslt1-dev libxt-dev xsltproc +apt install -y libcunit1-dev libcppunit-dev libpam0g-dev libcups2-dev libzstd-dev uuid-runtime +apt install -y python3-dev python3-lxml python3-pip python3-polib +apt install -y nodejs npm +apt install -y libpoco-dev libpococrypto80 +apt install -y libreoffice-dev + + +mkdir -p /opt/lo && cd /opt/lo +wget https://github.com/CollaboraOnline/online/releases/download/for-code-assets/core-co-24.04-assets.tar.gz +tar xf core-co-24.04-assets.tar.gz && rm core-co-24.04-assets.tar.gz + +useradd cool -G sudo +mkdir -p /opt/cool && chown cool:cool /opt/cool +cd /opt/cool +sudo -Hu cool git clone https://github.com/CollaboraOnline/online.git +cd online && sudo -Hu cool ./autogen.sh + +export CPPFLAGS=-I/opt/lo/include +export LDFLAGS=-L/opt/lo/instdir/program +./configure --with-lokit-path=/opt/lo --with-lo-path=/opt/lo/instdir --with-poco-includes=/usr/local/include --with-poco-libs=/usr/local/lib + +sudo -Hu cool make -j$(nproc) + +make install +mkdir -p /etc/coolwsd /usr/local/var/cache/coolwsd + +chown cool:cool /usr/local/var/cache/coolwsd +admin_pwd=$(openssl rand -hex 6) + +cat < /lib/systemd/system/coolwsd.service +[Unit] +Description=Collabora Online WebSocket Daemon +After=network.target + +[Service] +ExecStart=/opt/cool/online/coolwsd --o:sys_template_path=/opt/cool/online/systemplate \ +--o:lo_template_path=/opt/lo/instdir --o:child_root_path=/opt/cool/online/jails \ +--o:admin_console.username=admin --o:admin_console.password=$DOC_EDITOR_ADMIN_PWD \ +--o:ssl.enable=false +User=cool + +[Install] +WantedBy=multi-user.target +EOT + +systemctl daemon-reload +systemctl enable coolwsd.service +systemctl start coolwsd.service +" + +echo "Installation complete!" +echo "Admin password: $admin_pwd" +echo "Access at: https://localhost:9980" + diff --git a/src/templates/opt/gbo/tenants/default/doc-editor/doc-editor.sh b/src/templates/opt/gbo/tenants/default/doc-editor/doc-editor.sh index 44319a0..1d1514b 100644 --- a/src/templates/opt/gbo/tenants/default/doc-editor/doc-editor.sh +++ b/src/templates/opt/gbo/tenants/default/doc-editor/doc-editor.sh @@ -1,12 +1,6 @@ #!/bin/bash HOST_BASE="/opt/gbo/tenants/$PARAM_TENANT/doc-editor" -HOST_DATA="$HOST_BASE/data" -HOST_CONF="$HOST_BASE/conf" -HOST_LOGS="$HOST_BASE/logs" - -sudo mkdir -p "$HOST_DATA" "$HOST_CONF" "$HOST_LOGS" -sudo chmod -R 750 "$HOST_BASE" lxc launch images:debian/12 "${PARAM_TENANT}-doc-editor" \ -c security.privileged=true \ @@ -15,77 +9,21 @@ lxc launch images:debian/12 "${PARAM_TENANT}-doc-editor" \ sleep 10 -lxc config device add "$PARAM_TENANT"-doc-editor doceditordata disk source="$HOST_DATA" path=/opt/gbo/data -lxc config device add "$PARAM_TENANT"-doc-editor doceditorconf disk source="$HOST_CONF" path=/opt/gbo/conf -lxc config device add "$PARAM_TENANT"-doc-editor doceditorlogs disk source="$HOST_LOGS" path=/opt/gbo/logs - - lxc exec "$PARAM_TENANT"-doc-editor -- bash -c " -sudo apt install -y cloud-guest-utils e2fsprogs -apt install -y make g++ build-essential -apt install -y openjdk-17-jdk ant -apt install -y sudo systemd wget zip procps ccache -apt install -y automake bison flex git gperf graphviz junit4 libtool m4 nasm -apt install -y libcairo2-dev libjpeg-dev libegl1-mesa-dev libfontconfig1-dev \ - libgl1-mesa-dev libgif-dev libgtk-3-dev librsvg2-dev libpango1.0-dev -apt install -y libcap-dev libcap2-bin libkrb5-dev libpcap0.8-dev openssl libssl-dev -apt install -y libxcb-dev libx11-xcb-dev libxkbcommon-x11-dev libxtst-dev \ - libxrender-dev libxslt1-dev libxt-dev xsltproc -apt install -y libcunit1-dev libcppunit-dev libpam0g-dev libcups2-dev libzstd-dev uuid-runtime -apt install -y python3-dev python3-lxml python3-pip python3-polib -apt install -y nodejs npm -apt install -y libpoco-dev libpococrypto80 -apt install -y libreoffice-dev +cd /usr/share/keyrings +wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg +cat << EOF > /etc/apt/sources.list.d/collaboraonline.sources +Types: deb +URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/24.04/customer-deb-$customer_hash +Suites: ./ +Signed-By: /usr/share/keyrings/collaboraonline-release-keyring.gpg +EOF -mkdir -p /opt/lo && cd /opt/lo -wget https://github.com/CollaboraOnline/online/releases/download/for-code-assets/core-co-24.04-assets.tar.gz -tar xf core-co-24.04-assets.tar.gz && rm core-co-24.04-assets.tar.gz - -useradd cool -G sudo -mkdir -p /opt/cool && chown cool:cool /opt/cool -cd /opt/cool -sudo -Hu cool git clone https://github.com/CollaboraOnline/online.git -cd online && sudo -Hu cool ./autogen.sh - -export CPPFLAGS=-I/opt/lo/include -export LDFLAGS=-L/opt/lo/instdir/program -./configure --with-lokit-path=/opt/lo --with-lo-path=/opt/lo/instdir --with-poco-includes=/usr/local/include --with-poco-libs=/usr/local/lib - -sudo -Hu cool make -j$(nproc) - -make install -mkdir -p /etc/coolwsd /usr/local/var/cache/coolwsd -chown cool:cool /usr/local/var/cache/coolwsd -admin_pwd=$(openssl rand -hex 6) - -cat < /lib/systemd/system/coolwsd.service -[Unit] -Description=Collabora Online WebSocket Daemon -After=network.target - -[Service] -ExecStart=/opt/cool/online/coolwsd --o:sys_template_path=/opt/cool/online/systemplate \ ---o:lo_template_path=/opt/lo/instdir --o:child_root_path=/opt/cool/online/jails \ ---o:admin_console.username=admin --o:admin_console.password=$DOC_EDITOR_ADMIN_PWD \ ---o:ssl.enable=false -User=cool - -[Install] -WantedBy=multi-user.target -EOT - -systemctl daemon-reload -systemctl enable coolwsd.service -systemctl start coolwsd.service +apt update && apt install coolwsd collabora-online-brand " -echo "Installation complete!" -echo "Admin password: $admin_pwd" -echo "Access at: https://localhost:9980" - - lxc config device remove "$PARAM_TENANT"-doc-editor doc-proxy 2>/dev/null || true lxc config device add "$PARAM_TENANT"-doc-editor doc-proxy proxy \ listen=tcp:0.0.0.0:"$PARAM_DOC_PORT" \