mirror of
https://github.com/gentoo-mirror/guru.git
synced 2026-10-12 17:51:11 -04:00
Say it with me: the pidfile and its parent directories should only be writable by root unless you use supervise-daemon ;) With `checkpath -o someuser:someuser $pidfile` in start_pre(), it can cause DOS attacks because the now unprivelaged process can replace the pidfile with some other pid number in it like pid 1 and cause the host machine to crash when the daemon finally stops. Supervise-daemon can supervise without the daemon creating a pidfile so don't export the variable at all. That assumes the scripts *are* using supervise-daemon, if supervise-daemon fails to start (due to maybe some incorrect config option *wink wink*) then OpenRC falls back to the older start-stop-daemon and that *does* use the $pidfile. If thats the case then the daemon will simply fail to start (yes I haven't tested if any these packages work without $pidfile which they should since they are specifying `supervisor=supervise-daemon`). IMO failing to start is better than running in a potentially vulnerable configuration. Merges: https://codeberg.org/gentoo/guru/pulls/92 Part-off: https://codeberg.org/gentoo/guru/pulls/92 Signed-off-by: zyxhere💭 <zyx@envs.net>
115 lines
3.2 KiB
Bash
115 lines
3.2 KiB
Bash
# Copyright 2022-2026 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
inherit go-module optfeature systemd
|
|
|
|
MY_PV="0.$(ver_rs 1-2 '').0"
|
|
DESCRIPTION="Matrix-Telegram puppeting bridge"
|
|
HOMEPAGE="https://github.com/mautrix/telegram"
|
|
SRC_URI="https://github.com/mautrix/telegram/archive/refs/tags/v${MY_PV}.tar.gz -> ${P}.tar.gz
|
|
https://github.com/sysrq-golang-dist/${PN}/releases/download/v${MY_PV}/${PN}-${MY_PV}-deps.tar.xz"
|
|
S="${WORKDIR}/telegram-${MY_PV}"
|
|
|
|
LICENSE="AGPL-3+"
|
|
# Go dependency licenses
|
|
LICENSE+=" Apache-2.0 BSD GPL-3+ ISC MIT MPL-2.0"
|
|
SLOT="0"
|
|
KEYWORDS="~amd64"
|
|
IUSE="+crypt"
|
|
|
|
RDEPEND="
|
|
acct-user/mautrix-telegram
|
|
dev-db/sqlite:3
|
|
media-libs/libwebp:=
|
|
crypt? ( dev-libs/olm )
|
|
"
|
|
DEPEND="${RDEPEND}"
|
|
BDEPEND="
|
|
>=dev-lang/go-1.25.0
|
|
virtual/pkgconfig
|
|
"
|
|
|
|
DOCS=( {CHANGELOG,README,ROADMAP}.md )
|
|
|
|
src_configure() {
|
|
default
|
|
|
|
# https://github.com/mattn/go-sqlite3#linux
|
|
# -tags libsqlite3: use system sqlite3 instead of bundled
|
|
GO_BUILD_TAGS="libsqlite3"
|
|
use crypt || GO_BUILD_TAGS+=",nocrypto"
|
|
}
|
|
|
|
src_prepare() {
|
|
default
|
|
|
|
# unbundle libwebp
|
|
cd "${GOMODCACHE}" || die
|
|
rm go.mau.fi/webp@v0.3.0/z_*.c || die
|
|
eapply "${FILESDIR}"/${PN}-26.07-unbundle-libwebp.patch
|
|
}
|
|
|
|
src_compile() {
|
|
local MAUTRIX_VERSION=$(awk '/maunium\.net\/go\/mautrix / { print $2 }' go.mod)
|
|
local BUILD_TIME=$(date -Iseconds)
|
|
local go_ldflags=(
|
|
-X "main.Tag=v${MY_PV}"
|
|
-X "main.Commit=unknown"
|
|
-X "main.BuildTime=${BUILD_TIME}"
|
|
-X "maunium.net/go/mautrix.GoModVersion=${MAUTRIX_VERSION}"
|
|
)
|
|
|
|
ego build -tags "${GO_BUILD_TAGS}" -ldflags "${go_ldflags[*]}" ./cmd/mautrix-telegram
|
|
}
|
|
|
|
src_test() {
|
|
ego test -tags "${GO_BUILD_TAGS}" -vet=off \
|
|
$(ego list ./... | grep -Fvx go.mau.fi/mautrix-telegram/pkg/gotd/tgerr)
|
|
}
|
|
|
|
src_install() {
|
|
dobin mautrix-telegram
|
|
einstalldocs
|
|
|
|
newinitd "${FILESDIR}"/mautrix-telegram.initd-r3 mautrix-telegram
|
|
newconfd "${FILESDIR}"/mautrix-telegram.confd mautrix-telegram
|
|
systemd_newunit "${FILESDIR}"/mautrix-telegram.service-r1 mautrix-telegram.service
|
|
|
|
local dir
|
|
for dir in /var/log/mautrix /etc/mautrix; do
|
|
keepdir "${dir}"
|
|
fowners -R root:mautrix "${dir}"
|
|
fperms 770 "${dir}"
|
|
done
|
|
|
|
keepdir /var/lib/mautrix/telegram
|
|
fowners -R mautrix-telegram:mautrix /var/lib/mautrix/telegram
|
|
}
|
|
|
|
pkg_postinst() {
|
|
einfo
|
|
elog "Before you can use mautrix-telegram, you need to configure it correctly."
|
|
elog "To generate the configuration file, use the following command:"
|
|
elog " # runuser -u mautrix-telegram -g mautrix -- mautrix-telegram -c /etc/mautrix/mautrix_telegram.yaml -e"
|
|
elog
|
|
elog "Configure the /etc/mautrix/mautrix_telegram.yaml file according to your"
|
|
elog "homeserver. When done, run the following command:"
|
|
elog " # emerge --config ${CATEGORY}/${PN}"
|
|
elog
|
|
elog "Then, you need to register the bridge with your homeserver."
|
|
elog "Refer your homeserver's documentation for instructions."
|
|
elog "The registration file is located at /var/lib/mautrix/telegram/registration.yaml"
|
|
elog
|
|
elog "Finally, you may start the mautrix-telegram daemon."
|
|
einfo
|
|
|
|
optfeature "animated sticker support" "dev-util/lottieconverter media-video/ffmpeg[vpx,webp]"
|
|
}
|
|
|
|
pkg_config() {
|
|
runuser -u mautrix-telegram -g mautrix -- \
|
|
mautrix-telegram -c /etc/mautrix/mautrix_telegram.yaml -g -r /var/lib/mautrix/telegram/registration.yaml
|
|
}
|