Browse Source

new package

master
parent
commit
ed2e8fb036
  1. 66
      sftpgo/rc.sftpgo
  2. 1
      sftpgo/sftpgo.passwd
  3. 157
      sftpgo/sftpgo.spec
  4. 100
      sftpgo/sftpgo.yaml

66
sftpgo/rc.sftpgo

@ -0,0 +1,66 @@
#!@l_prefix@/bin/openpkg rc
##
## rc.sftpgo -- Run-Commands
##
%config
sftpgo_enable="$openpkg_rc_def"
sftpgo_flags=""
sftpgo_log_prolog="true"
sftpgo_log_epilog="true"
sftpgo_log_numfiles="10"
sftpgo_log_minsize="1M"
sftpgo_log_complevel="9"
%common
sftpgo_etcdir="@l_prefix@/etc/sftpgo/"
sftpgo_pidfile="@l_prefix@/var/sftpgo/run/sftpgo.pid"
sftpgo_logfile="@l_prefix@/var/sftpgo/log/sftpgo.log"
sftpgo_signal () {
[ -f $sftpgo_pidfile ] && kill -$1 `cat $sftpgo_pidfile`
}
%status -u @l_rusr@ -o
sftpgo_usable="unknown"
sftpgo_active="no"
rcService sftpgo enable yes && \
sftpgo_signal 0 && sftpgo_active="yes"
echo "sftpgo_enable=\"$sftpgo_enable\""
echo "sftpgo_usable=\"$sftpgo_usable\""
echo "sftpgo_active=\"$sftpgo_active\""
%start -u @l_rusr@
rcService sftpgo enable yes || exit 0
rcService sftpgo active yes && exit 0
( GOMAXPROCS=32
export GOMAXPROCS
nohup @l_prefix@/sbin/sftpgo serve \
--config-dir "$sftpgo_etcdir" \
--config-file "sftpgo" \
--log-file-path "" \
$sftpgo_flags \
</dev/null >>$sftpgo_logfile 2>&1 &
echo $! >$sftpgo_pidfile
) >/dev/null 2>&1
%stop -u @l_rusr@
rcService sftpgo enable yes || exit 0
rcService sftpgo active no && exit 0
sftpgo_signal TERM
sleep 2
rm -f $sftpgo_pidfile >/dev/null 2>&1 || true
%restart -u @l_rusr@
rcService sftpgo enable yes || exit 0
rcService sftpgo active no && exit 0
rc sftpgo stop start
%daily -u @l_rusr@
rcService sftpgo enable yes || exit 0
shtool rotate -f \
-n ${sftpgo_log_numfiles} -s ${sftpgo_log_minsize} -d \
-z ${sftpgo_log_complevel} -m 664 -o @l_rusr@ -g @l_rgrp@ \
-P "${sftpgo_log_prolog}" \
-E "${sftpgo_log_epilog}; rc sftpgo restart" \
$sftpgo_logfile

1
sftpgo/sftpgo.passwd

@ -0,0 +1 @@
admin:$apr1$zMesi4FP$mqfykPcjXzhMpJ3fYiebq1

157
sftpgo/sftpgo.spec

@ -0,0 +1,157 @@
##
## sftpgo.spec -- OpenPKG RPM Package Specification
## Copyright (c) 2000-2020 OpenPKG Project <http://openpkg.org/>
##
## Permission to use, copy, modify, and distribute this software for
## any purpose with or without fee is hereby granted, provided that
## the above copyright notice and this permission notice appear in all
## copies.
##
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
## SUCH DAMAGE.
##
# package version
%define V_opkg 3.1.1
%define V_dist 20200927
# package information
Name: sftpgo
Summary: SFTP/WebDAV Server
URL: https://github.com/drakkan/sftpgo
Vendor: Nicola Murino
Packager: OpenPKG Project
Distribution: OpenPKG Community
Class: EVAL
Group: Networking
License: GPL
Version: %{V_opkg}.%{V_dist}
Release: 20200927
# list of sources
Source0: http://download.openpkg.org/components/versioned/sftpgo/sftpgo-%{V_dist}.tar.xz
Source1: rc.sftpgo
Source2: sftpgo.yaml
Source3: sftpgo.passwd
# build information
BuildPreReq: OpenPKG, openpkg >= 20160101, go
PreReq: OpenPKG, openpkg >= 20160101, openssh
%description
SFTPgo is a SFTP/WebDAV server.
%track
prog sftpgo:release = {
version = %{V_opkg}
url = https://github.com/drakkan/sftpgo/releases
regex = v(__VER__)\.tar\.gz
}
prog sftpgo:snapshot = {
version = %{V_dist}
url = http://download.openpkg.org/components/versioned/sftpgo/
regex = sftpgo-(__VER__)\.tar\.xz
}
%prep
%setup -q -n sftpgo
%build
# build program
export GOPATH=`pwd`
cd src/github.com/drakkan/sftpgo/
go build -v \
-ldflags "-X github.com/drakkan/sftpgo/version.commit=000000 -X github.com/drakkan/sftpgo/version.date=`date -u '+%FT%TZ'`" \
-o sftpgo
%install
# install program
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/sbin \
$RPM_BUILD_ROOT%{l_prefix}/share/sftpgo
%{l_shtool} install -c -s -m 755 \
src/github.com/drakkan/sftpgo/sftpgo \
$RPM_BUILD_ROOT%{l_prefix}/sbin/
cp -rp src/github.com/drakkan/sftpgo/templates \
$RPM_BUILD_ROOT%{l_prefix}/share/sftpgo/
cp -rp src/github.com/drakkan/sftpgo/static \
$RPM_BUILD_ROOT%{l_prefix}/share/sftpgo/
# install default configuration
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/etc/sftpgo \
$RPM_BUILD_ROOT%{l_prefix}/etc/sftpgo/credentials
%{l_shtool} install -c -m 644 %{l_value -s -a} \
%{SOURCE sftpgo.yaml} $RPM_BUILD_ROOT%{l_prefix}/etc/sftpgo/
%{l_shtool} install -c -m 644 \
%{SOURCE sftpgo.passwd} $RPM_BUILD_ROOT%{l_prefix}/etc/sftpgo/
# install run-command script
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
%{l_shtool} install -c -m 755 %{l_value -s -a} \
%{SOURCE rc.sftpgo} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
# create run-time directories
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/var/sftpgo/run \
$RPM_BUILD_ROOT%{l_prefix}/var/sftpgo/log \
$RPM_BUILD_ROOT%{l_prefix}/var/sftpgo/data \
$RPM_BUILD_ROOT%{l_prefix}/var/sftpgo/backup
# provide sample data
%{l_shtool} mkdir -f -p -m 755 \
$RPM_BUILD_ROOT%{l_prefix}/var/sftpgo/data/example
echo "Example" \
>$RPM_BUILD_ROOT%{l_prefix}/var/sftpgo/data/example/example.txt
# determine installation files
%{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
%{l_files_std} \
'%dir %attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/etc/sftpgo' \
'%config %attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/etc/sftpgo/*' \
'%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/sftpgo/*' \
'%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/sftpgo/*/*' \
'%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/sftpgo/*/*/*'
%files -f files
%clean
%post
if [ $1 -eq 1 ]; then
# initialize database and host keys
su - %{l_rusr} -c "$RPM_INSTALL_PREFIX/sbin/sftpgo initprovider \
--config-dir $RPM_INSTALL_PREFIX/etc/sftpgo --config-file sftpgo >/dev/null 2>&1"
su - %{l_rusr} -c "$RPM_INSTALL_PREFIX/bin/ssh-keygen -t rsa -b 2048 \
-f $RPM_INSTALL_PREFIX/etc/sftpgo/sftpgo.id_rsa -N '' -C `hostname` >/dev/null 2>&1"
su - %{l_rusr} -c "$RPM_INSTALL_PREFIX/bin/ssh-keygen -t ecdsa -b 521 \
-f $RPM_INSTALL_PREFIX/etc/sftpgo/sftpgo.id_ecdsa -N '' -C `hostname` >/dev/null 2>&1"
elif [ $1 -eq 2 ]; then
# after upgrade, restart service
eval `%{l_rc} sftpgo status 2>/dev/null`
[ ".$sftpgo_active" = .yes ] && %{l_rc} sftpgo restart
fi
exit 0
%preun
if [ $1 -eq 0 ]; then
# before erase, stop service and remove log files
%{l_rc} sftpgo stop 2>/dev/null
rm -rf $RPM_INSTALL_PREFIX/var/sftpgo/log/* >/dev/null 2>&1 || true
rm -rf $RPM_INSTALL_PREFIX/var/sftpgo/run/* >/dev/null 2>&1 || true
rm -rf $RPM_INSTALL_PREFIX/var/sftpgo/data/* >/dev/null 2>&1 || true
rm -f $RPM_INSTALL_PREFIX/var/sftpgo/etc/id_* >/dev/null 2>&1 || true
fi
exit 0

100
sftpgo/sftpgo.yaml

@ -0,0 +1,100 @@
##
## sftpgo.yaml -- SFTPgo Server Configuration
##
# common configuration
common:
idle_timeout: 15
upload_mode: 1
setstat_mode: 0
proxy_protocol: 0
proxy_allowed: []
post_connect_hook: ""
actions:
execute_on: []
hook: ""
# data storage provider
data_provider:
driver: "sqlite"
name: "@l_prefix@/var/sftpgo/run/sftpgo.db"
host: ""
port: 0
username: ""
password: ""
sslmode: 0
connection_string: ""
sql_tables_prefix: ""
manage_users: 1
track_quota: 2
pool_size: 0
users_base_dir: "@l_prefix@/var/sftpgo/data"
external_auth_hook: ""
external_auth_scope: 0
credentials_path: "@l_prefix@/etc/sftpgo/credentials"
pre_login_hook: ""
post_login_hook: ""
post_login_scope: 0
check_password_hook: ""
check_password_scope: 0
password_hashing:
argon2_options:
memory: 65536
iterations: 1
parallelism: 2
actions:
execute_on: []
hook: ""
# SSH/SFTP service
sftpd:
bind_address: "127.0.0.1"
bind_port: 2022
max_auth_tries: 0
banner: ""
host_keys: [ "sftpgo.id_rsa", "sftpgo.id_ecdsa" ]
kex_algorithms: []
ciphers: []
macs: []
trusted_user_ca_keys: []
login_banner_file: ""
enabled_ssh_commands: [ "md5sum", "sha1sum", "cd", "pwd", "scp" ]
keyboard_interactive_auth_hook: ""
password_authentication: true
# HTTP/WebDAV service
webdavd:
bind_address: "127.0.0.1"
bind_port: 8081
certificate_file: ""
certificate_key_file: ""
cors:
enabled: false
allowed_origins: []
allowed_methods: []
allowed_headers: []
exposed_headers: []
allow_credentials: false
max_age: 0
cache:
enabled: false
expiration_time: 0
max_size: 50
# HTTP/plain service
httpd:
bind_address: "127.0.0.1"
bind_port: 8080
templates_path: "@l_prefix@/share/sftpgo/templates"
static_files_path: "@l_prefix@/share/sftpgo/static"
backups_path: "@l_prefix@/var/sftpgo/backup"
auth_user_file: "sftpgo.passwd"
certificate_file: ""
certificate_key_file: ""
# HTTP client
http:
timeout: 20
ca_certificates: []
skip_tls_verify: true
Loading…
Cancel
Save