aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--GIDs2
-rw-r--r--UIDs2
-rw-r--r--sysutils/Makefile1
-rw-r--r--sysutils/rest-server/Makefile31
-rw-r--r--sysutils/rest-server/distinfo3
-rw-r--r--sysutils/rest-server/files/restserver.in89
-rw-r--r--sysutils/rest-server/pkg-descr5
7 files changed, 131 insertions, 2 deletions
diff --git a/GIDs b/GIDs
index e7ad3664374a..2e809ccc48fd 100644
--- a/GIDs
+++ b/GIDs
@@ -179,7 +179,7 @@ openhab:*:235:
rspamd:*:236:
paperless:*:237:
sonic:*:238:
-# free: 239
+restserver:*:239:
aprsd:*:240:
tnc:*:241:
prosody:*:242:
diff --git a/UIDs b/UIDs
index a3240f13b1c6..b31aa3c550f6 100644
--- a/UIDs
+++ b/UIDs
@@ -184,7 +184,7 @@ openhab:*:235:235::0:0:openHAB user:/var/db/openhab2/home:/usr/sbin/nologin
rspamd:*:236:236::0:0:rspamd pseudo-user:/nonexistent:/usr/sbin/nologin
paperless:*:237:237::0:0:paperless user:/var/db/paperless:/bin/sh
sonic:*:238:238::0:0:sonic user:/var/db/sonic:/usr/sbin/nologin
-# free: 239
+restserver:*:239:239::0:0:restic rest-server Daemon:/var/db/restserver:/usr/sbin/nologin
aprsd:*:240:240::0:0:aprsd:/nonexistent:/bin/sh
tnc:*:241:241::0:0:aprsd:/nonexistent:/bin/sh
prosody:*:242:242::0:0:Prosody Jabber Server:/nonexistent:/usr/sbin/nologin
diff --git a/sysutils/Makefile b/sysutils/Makefile
index b2ad725f3e70..8c0cd5840ead 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -1099,6 +1099,7 @@
SUBDIR += reoback
SUBDIR += reptyr
SUBDIR += respond
+ SUBDIR += rest-server
SUBDIR += restic
SUBDIR += retail
SUBDIR += rex
diff --git a/sysutils/rest-server/Makefile b/sysutils/rest-server/Makefile
new file mode 100644
index 000000000000..071d0b12796c
--- /dev/null
+++ b/sysutils/rest-server/Makefile
@@ -0,0 +1,31 @@
+# $FreeBSD$
+
+PORTNAME= rest-server
+DISTVERSIONPREFIX= v
+DISTVERSION= 0.9.8
+CATEGORIES= sysutils
+
+MAINTAINER= dch@FreeBSD.org
+COMMENT= Performant HTTP server for sysutils/restic backend API
+
+LICENSE= BSD2CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES= go
+USE_GITHUB= yes
+GH_ACCOUNT= restic
+
+GO_PKGNAME= github.com/${GH_ACCOUNT}/${PORTNAME}
+GO_TARGET= ${GO_PKGNAME}/cmd/${PORTNAME}
+
+USE_RC_SUBR= restserver
+
+USERS= restserver
+GROUPS= restserver
+
+PLIST_FILES= bin/${PORTNAME}
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKDIR}/bin/${PORTNAME} ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/sysutils/rest-server/distinfo b/sysutils/rest-server/distinfo
new file mode 100644
index 000000000000..77b464ef0203
--- /dev/null
+++ b/sysutils/rest-server/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1563196957
+SHA256 (restic-rest-server-v0.9.8_GH0.tar.gz) = 2080012981c81b788f0aea302f5126b0b2ed89f0bdc9104166289ca167c38c75
+SIZE (restic-rest-server-v0.9.8_GH0.tar.gz) = 2398333
diff --git a/sysutils/rest-server/files/restserver.in b/sysutils/rest-server/files/restserver.in
new file mode 100644
index 000000000000..8216e966d996
--- /dev/null
+++ b/sysutils/rest-server/files/restserver.in
@@ -0,0 +1,89 @@
+#!/bin/sh
+
+# $FreeBSD$
+#
+# PROVIDE: restserver
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# restserver_enable (bool): Set it to YES to enable restserver.
+# Default is "NO".
+# restserver_user (user): Set user to run restserver.
+# Default is "restserver".
+# restserver_group (group): Set group to run restserver.
+# Default is "restserver".
+# restserver_store (dir): Set restserver config file.
+# Default is "/var/db/restserver".
+# restserver_syslog_output_enable (bool): Set to enable syslog output.
+# Default is "NO". See daemon(8).
+# restserver_syslog_output_priority (str): Set syslog priority if syslog enabled.
+# Default is "info". See daemon(8).
+# restserver_syslog_output_facility (str): Set syslog facility if syslog enabled.
+# Default is "daemon". See daemon(8).
+
+. /etc/rc.subr
+
+name=restserver
+rcvar=restserver_enable
+desc="network API server for sysutils/restic backup software"
+
+load_rc_config $name
+
+: ${restserver_enable:="NO"}
+: ${restserver_user:="restserver"}
+: ${restserver_group:="restserver"}
+: ${restserver_store:="/var/db/restserver"}
+: ${restserver_options:="--listen 127.0.0.1:8000 --no-auth"}
+
+DAEMON=$(/usr/sbin/daemon 2>&1 | grep -q syslog ; echo $?)
+if [ ${DAEMON} -eq 0 ]; then
+ : ${restserver_syslog_output_enable:="NO"}
+ : ${restserver_syslog_output_priority:="info"}
+ : ${restserver_syslog_output_facility:="daemon"}
+ if checkyesno restserver_syslog_output_enable; then
+ restserver_syslog_output_flags="-t ${name} -T ${name}"
+
+ if [ -n "${restserver_syslog_output_priority}" ]; then
+ restserver_syslog_output_flags="${restserver_syslog_output_flags} -s ${restserver_syslog_output_priority}"
+ fi
+
+ if [ -n "${restserver_syslog_output_facility}" ]; then
+ restserver_syslog_output_flags="${restserver_syslog_output_flags} -l ${restserver_syslog_output_facility}"
+ fi
+ fi
+else
+ restserver_syslog_output_enable="NO"
+ restserver_syslog_output_flags=""
+fi
+
+pidfile=/var/run/restserver.pid
+procname="%%PREFIX%%/bin/rest-server"
+command="/usr/sbin/daemon"
+command_args="-f ${restserver_syslog_output_flags} -p ${pidfile} -t ${name} /usr/bin/env ${restserver_env} ${procname} --path ${restserver_store} ${restserver_options}"
+
+extra_commands="reload monitor"
+monitor_cmd=restserver_monitor
+start_precmd=restserver_startprecmd
+required_files="$restserver_config"
+
+restserver_monitor()
+{
+ sig_reload=USR1
+ run_rc_command "reload"
+}
+
+restserver_startprecmd()
+{
+ if [ ! -e ${pidfile} ]; then
+ install -o ${restserver_user} -g ${restserver_group} /dev/null ${pidfile};
+ fi
+
+ if [ ! -d ${restserver_dir} ]; then
+ install -d -o ${restserver_user} -g ${restserver_group} ${restserver_dir}
+ fi
+}
+
+run_rc_command "$1"
diff --git a/sysutils/rest-server/pkg-descr b/sysutils/rest-server/pkg-descr
new file mode 100644
index 000000000000..4ea1a939daf6
--- /dev/null
+++ b/sysutils/rest-server/pkg-descr
@@ -0,0 +1,5 @@
+Rest Server is a high performance HTTP server that implements restic's
+REST backend API. It provides secure and efficient way to backup data
+remotely, using restic backup client via the rest: URI over the network.
+
+WWW: https://github.com/restic/rest-server