From 12b6b640867e94398c601f4e28a0407a17807020 Mon Sep 17 00:00:00 2001 From: Chance Callahan Date: Mon, 13 Sep 2021 15:59:45 -0400 Subject: [PATCH] Adding RPM specfile. (#103) * Adding RPM specfile. * Added systemd service and some scripting to make things nicer * Updated systemd service. * Updated for 1.5.0 and fixed mistake with license. --- rpm/ptero-wings.spec | 114 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 rpm/ptero-wings.spec diff --git a/rpm/ptero-wings.spec b/rpm/ptero-wings.spec new file mode 100644 index 0000000..402c4b3 --- /dev/null +++ b/rpm/ptero-wings.spec @@ -0,0 +1,114 @@ +Name: ptero-wings +Version: 1.5.0 +Release: 1%{?dist} +Summary: The server control plane for Pterodactyl Panel. Written from the ground-up with security, speed, and stability in mind. +BuildArch: x86_64 +License: MIT +URL: https://github.com/pterodactyl/wings +Source0: https://github.com/pterodactyl/wings/releases/download/v%{version}/wings_linux_amd64 + +%if 0%{?rhel} && 0%{?rhel} <= 8 +BuildRequires: systemd +%else +BuildRequires: systemd-rpm-macros +%endif + + +%description +Wings is Pterodactyl's server control plane, built for the rapidly +changing gaming industry and designed to be highly performant and +secure. Wings provides an HTTP API allowing you to interface directly +with running server instances, fetch server logs, generate backups, +and control all aspects of the server lifecycle. + +In addition, Wings ships with a built-in SFTP server allowing your +system to remain free of Pterodactyl specific dependencies, and +allowing users to authenticate with the same credentials they would +normally use to access the Panel. + +%prep + +%build +#nothing required + +%install +mkdir -p %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{_unitdir} +cp %{_sourcedir}/wings_linux_amd64 %{buildroot}%{_bindir}/wings + +cat > %{buildroot}%{_unitdir}/wings.service << EOF +[Unit] +Description=Pterodactyl Wings Daemon +After=docker.service +Requires=docker.service +PartOf=docker.service +StartLimitIntervalSec=600 + +[Service] +WorkingDirectory=/etc/pterodactyl +ExecStart=/usr/bin/wings +ExecReload=/bin/kill -HUP $MAINPID +Restart=on-failure +StartLimitInterval=180 +StartLimitBurst=30 +RestartSec=5s + +[Install] +WantedBy=multi-user.target +EOF + +%files +%attr(0755, root, root) %{_prefix}/bin/wings +%attr(0644, root, root) %{_unitdir}/wings.service + +%post + +# Reload systemd +systemctl daemon-reload + +# Create the required directory structure +mkdir -p /etc/pterodactyl +mkdir -p /var/lib/pterodactyl/{archives,backups,volumes} +mkdir -p /var/log/pterodactyl/install + +%preun + +systemctl is-active %{name} >/dev/null 2>&1 +if [ $? -eq 0 ]; then + systemctl stop %{name} +fi + +systemctl is-enabled %{name} >/dev/null 2>&1 +if [ $? -eq 0 ]; then + systemctl disable %{name} +fi + +%postun +rm -rf /var/log/pterodactyl + +%verifyscript + +wings --version + +%changelog +* Sun Sep 12 2021 Capitol Hosting Solutions Systems Engineering - 1.5.0-1 +- specfile by Capitol Hosting Solutions, Upstream by Pterodactyl +- Rebased for https://github.com/pterodactyl/wings/releases/tag/v1.5.0 +- Fixes a race condition when setting the application name in the console output for a server. +- Fixes a server being reinstalled causing the file_denylist parameter for an Egg to be ignored until Wings is restarted. +- Fixes YAML file parser not correctly setting boolean values. +- Fixes potential issue where the underlying websocket connection is closed but the parent request context is not yet canceled causing a write over a closed connection. +- Fixes race condition when closing all active websocket connections when a server is deleted. +- Fixes logic to determine if a server's context is closed out and send a websocket close message to connected clients. Previously this fired off whenever the request itself was closed, and not when the server context was closed. +- Exposes 8080 in the wings Dockerfile to better support reverse proxy tools. +- Releases are now built using Go 1.17 — the minimum version required to build Wings remains Go 1.16. +- Simplifed the logic powering server updates to only pull information from the Panel rather than trying to accept updated values. All parts of Wings needing the most up-to-date server details should call Server#Sync() to fetch the latest stored build information. +- Installer#New() no longer requires passing all of the server data as a byte slice, rather a new Installer#ServerDetails struct is exposed which can be passed and accepts a UUID and if the server should be started after the installer finishes. +- Removes complicated (and unused) logic during the server installation process that was a hold-over from legacy Wings architectures. +- Removes the PATCH /api/servers/:server endpoint — if you were previously using this API call it should be replaced with POST /api/servers/:server/sync. + +* Wed Aug 25 2021 Capitol Hosting Solutions Systems Engineering - 1.4.7-1 +- specfile by Capitol Hosting Solutions, Upstream by Pterodactyl +- Rebased for https://github.com/pterodactyl/wings/releases/tag/v1.4.7 +- SFTP access is now properly denied if a server is suspended. +- Correctly uses start_on_completion and crash_detection_enabled for servers.