Rebuild For MSVSphere #2

Merged
tigro merged 16 commits from :i9 into i9 3 months ago

6
.gitignore vendored

@ -0,0 +1,6 @@
SOURCES/openlitespeed-1.8.2.tar.gz
SOURCES/third-party.tar.xz
SOURCES/admin_php.tar.xz
SOURCES/ls-hpack-2.3.3.tar.gz
SOURCES/ls-qpack-2.5.4.tar.gz
SOURCES/lsquic-4.0.12.tar.gz

@ -0,0 +1,6 @@
b737416510aafc37fc2e1cf0f64b57b66f1db854 SOURCES/admin_php.tar.xz
343f961c9b93d36b4a8874f9fbf9e3087b0e7e00 SOURCES/ls-hpack-2.3.3.tar.gz
8ad5b9c2da97e40a0efc1927def334957ea14c58 SOURCES/ls-qpack-2.5.4.tar.gz
ea49cda7da4b07fe1cfd14d3c29f2232616c461c SOURCES/lsquic-4.0.12.tar.gz
068b78e67475debd2321fed6195989dad28dad43 SOURCES/openlitespeed-1.8.2.tar.gz
63ea80ec5e804e3b06cbe1d88ee300d08208719b SOURCES/third-party.tar.xz

@ -0,0 +1,467 @@
diff --git a/build.sh b/build.sh
index 949dda5..398f906 100755
--- a/build.sh
+++ b/build.sh
@@ -50,21 +50,21 @@ else
exit 1
fi
-APP_MGR_CMD=
-for APP_MGR in ${APP_MGRS}; do
- APP_MGR_CHECK=`which ${APP_MGR} &>/dev/null`
- if [ $? -eq 0 ] ; then
- APP_MGR_CMD="${APP_MGR}"
- FULL_APP_MGR_CMD=$APP_MGR_CMD
- break
- fi
-done
-
-echo OS is ${OS}, APP_MGR_CMD is ${APP_MGR_CMD}.
-if [ "x${APP_MGR_CMD}" = "x" ] ; then
- echo 'Can not find package installation command, quit.'
- exit 1
-fi
+#APP_MGR_CMD=
+#for APP_MGR in ${APP_MGRS}; do
+# APP_MGR_CHECK=`which ${APP_MGR} &>/dev/null`
+# if [ $? -eq 0 ] ; then
+# APP_MGR_CMD="${APP_MGR}"
+# FULL_APP_MGR_CMD=$APP_MGR_CMD
+# break
+# fi
+#done
+#
+#echo OS is ${OS}, APP_MGR_CMD is ${APP_MGR_CMD}.
+#if [ "x${APP_MGR_CMD}" = "x" ] ; then
+# echo 'Can not find package installation command, quit.'
+# exit 1
+#fi
# getVersionNumber0()
@@ -229,27 +229,6 @@ installgo()
fi
}
-
-preparelibquic()
-{
- if [ -e lsquic ] ; then
- ls src/ | grep liblsquic
- if [ $? -eq 0 ] ; then
- echo Need to git download the submodule ...
- rm -rf lsquic
- git clone https://github.com/litespeedtech/lsquic.git
- cd lsquic
-
- LIBQUICVER=`cat ../LSQUICCOMMIT`
- echo "LIBQUICVER is ${LIBQUICVER}"
- git checkout ${LIBQUICVER}
- git submodule update --init --recursive
- cd ..
-
- fi
- fi
-}
-
prepareLinux()
{
OSTYPE=unknownlinux
@@ -490,14 +469,14 @@ cpModuleSoFiles()
mkdir dist/modules/
fi
- for module in build/src/modules/*; do
- cp -f ${module}/*.so dist/modules/
- done
+ #for module in build/src/modules/*; do
+ # cp -f ${module}/*.so dist/modules/
+ #done
if [ -e build/src/modules/modsecurity-ls/mod_security.so ] ; then
cp -f build/src/modules/modsecurity-ls/mod_security.so dist/modules/
fi
-
+
if [ -e build/src/modules/lua/mod_lua.so ] ; then
cp -f build/src/modules/lua/mod_lua.so dist/modules/
fi
@@ -514,9 +493,6 @@ fixshmdir()
mkdir /tmp/shm
chmod 777 /tmp/shm
sed -i -e "s/\/dev\/shm/\/tmp\/shm/g" dist/conf/httpd_config.conf.in
- if [ "${OS}" = "FreeBSD" ] ; then
- echo 'link /tmp/shm shm' >> /etc/devfs.conf
- fi
fi
}
@@ -574,7 +550,7 @@ if [ "${OS}" = "FreeBSD" ] ; then
prepareBsd
elif [ "${OS}" = "Linux" ] ; then
ISLINUX=yes
- prepareLinux
+# prepareLinux
elif [ "${OS}" = "Darwin" ] ; then
prepareMac
fi
@@ -582,32 +558,26 @@ fi
cd ..
-if [ ! -d third-party ]; then
-
- git clone https://github.com/litespeedtech/third-party.git
- mkdir third-party/lib64
- cd third-party/script/
-
- #Remove unittest-cpp and add bcrypt
- sed -i -e "s/unittest-cpp/bcrypt/g" ./build_ols.sh
- if [ "$MOD_SECURITY" != "ON" ]; then
- sed -i -e "s/libmodsec/ /g" ./build_ols.sh
- fi
- if [ "$MOD_PAGESPEED" != "ON" ]; then
- sed -i -e "s/psol/ /g" ./build_ols.sh
- fi
- if [ "$MOD_LUA" != "ON" ]; then
- sed -i -e "s/luajit/ /g" ./build_ols.sh
- fi
-
- ./build_ols.sh
+mkdir third-party/lib64
+cd third-party/script/
+#Remove unittest-cpp and add bcrypt
+sed -i -e "s/unittest-cpp/bcrypt/g" ./build_ols.sh
+if [ "$MOD_SECURITY" != "ON" ]; then
+ sed -i -e "s/libmodsec/ /g" ./build_ols.sh
+fi
+if [ "$MOD_PAGESPEED" != "ON" ]; then
+ sed -i -e "s/psol/ /g" ./build_ols.sh
fi
+if [ "$MOD_LUA" != "ON" ]; then
+ sed -i -e "s/luajit/ /g" ./build_ols.sh
+fi
+
+./build_ols.sh
cd ${CURDIR}
updateSrcCMakelistfile
-preparelibquic
if [ "$MOD_PAGESPEED" = "ON" ]; then
@@ -625,7 +595,7 @@ fi
cd src/modules/lsrecaptcha
export GOPATH=$CUR_PATH/src/modules/lsrecaptcha
export GO111MODULE=off
-go build lsrecaptcha
+./build_lsrecaptcha.sh
cp lsrecaptcha ../../../dist/lsrecaptcha/_recaptcha
cd ../../../
@@ -660,9 +630,9 @@ jobs=$(nproc)
make -j${jobs}
cd ..
-cp build/src/openlitespeed dist/bin/
+mv build/src/openlitespeed dist/bin/
if [ -e build/support/unmount_ns/unmount_ns ] ; then
- cp build/support/unmount_ns/unmount_ns dist/bin/
+ mv build/support/unmount_ns/unmount_ns dist/bin/
fi
cpModuleSoFiles
@@ -672,11 +642,11 @@ if [ -e src/liblsquic ] ; then
freebsdFix
fi
-cat > ./ols.conf <<END
+cat > ./dist/ols.conf <<END
#If you want to change the default values, please update this file.
#
-SERVERROOT=/usr/local/lsws
+SERVERROOT=/usr/lsws
OPENLSWS_USER=nobody
OPENLSWS_GROUP=nobody
OPENLSWS_ADMIN=admin
@@ -697,10 +667,10 @@ END
echo Start to pack files.
mv dist/install.sh dist/_in.sh
-cat > ./install.sh <<END
+cat > ./dist/install.sh <<END
#!/bin/sh
-SERVERROOT=/usr/local/lsws
+SERVERROOT=/usr/lsws
OPENLSWS_USER=nobody
OPENLSWS_GROUP=nobody
OPENLSWS_ADMIN=admin
@@ -715,14 +685,13 @@ OPENLSWS_EXAMPLEPORT=8088
CONFFILE=./ols.conf
#script start here
-cd `dirname "\$0"`
+cd $(pwd)
+cd dist/
if [ -f \${CONFFILE} ] ; then
. \${CONFFILE}
fi
-cd dist
-
mkdir -p \${SERVERROOT} >/dev/null 2>&1
@@ -796,7 +765,7 @@ fi
END
-chmod 777 ./install.sh
+chmod 777 ./dist/install.sh
echo -e "\033[38;5;71mBuilding finished, please run ./install.sh for installation.\033[39m"
echo -e "\033[38;5;71mYou may want to update the ols.conf to change the settings before installation.\033[39m"
diff --git a/dist/admin/misc/lscmctl b/dist/admin/misc/lscmctl
index ee0f595..e2372e8 100755
--- a/dist/admin/misc/lscmctl
+++ b/dist/admin/misc/lscmctl
@@ -92,14 +92,7 @@ printHelp()
updateMinAPIVerFile()
{
- MIN_VER=$(wget -q https://www.litespeed.sh/sub/shared/MIN_VER -O -)
- RET=$?
-
- if [ "${RET}" = "127" ] ; then
- errorExit "Required command 'wget' not found with exit code 127."
- elif [ "$RET" != "0" ] ; then
- errorExit "Failed to download latest MIN_VER file with wget exit status ${RET}."
- fi
+ MIN_VER=1.17.1.1
echo "${MIN_VER}" > "${SHARED_API_MIN_VER_FILE}"
}
diff --git a/dist/functions.sh b/dist/functions.sh
index fb7a33c..9ef9038 100755
--- a/dist/functions.sh
+++ b/dist/functions.sh
@@ -398,11 +398,11 @@ EOF
DIR_OWN=$WS_USER:$WS_GROUP
CONF_OWN=$WS_USER:$WS_GROUP
- if [ $INST_USER = "root" ]; then
- if [ $SUCC -eq "1" ]; then
- chown -R "$DIR_OWN" "$LSWS_HOME"
- fi
- fi
+# if [ $INST_USER = "root" ]; then
+# if [ $SUCC -eq "1" ]; then
+ # chown -R "$DIR_OWN" "$LSWS_HOME"
+ # fi
+ # fi
}
stopLshttpd()
@@ -650,7 +650,7 @@ util_mkdir()
if [ ! -d "$LSWS_HOME/$arg" ]; then
mkdir "$LSWS_HOME/$arg"
fi
- chown "$OWNER" "$LSWS_HOME/$arg"
+ #chown "$OWNER" "$LSWS_HOME/$arg"
chmod $PERM "$LSWS_HOME/$arg"
done
@@ -667,7 +667,7 @@ util_cpfile()
do
if [ -f "$LSINSTALL_DIR/$arg" ]; then
cp -f "$LSINSTALL_DIR/$arg" "$LSWS_HOME/$arg"
- chown "$OWNER" "$LSWS_HOME/$arg"
+ #chown "$OWNER" "$LSWS_HOME/$arg"
chmod $PERM "$LSWS_HOME/$arg"
fi
done
@@ -686,7 +686,7 @@ util_ccpfile()
cp "$LSINSTALL_DIR/$arg" "$LSWS_HOME/$arg"
fi
if [ -f "$LSWS_HOME/$arg" ]; then
- chown "$OWNER" "$LSWS_HOME/$arg"
+ #chown "$OWNER" "$LSWS_HOME/$arg"
chmod $PERM "$LSWS_HOME/$arg"
fi
done
@@ -702,7 +702,7 @@ util_cpdir()
for arg
do
cp -R "$LSINSTALL_DIR/$arg/"* "$LSWS_HOME/$arg/"
- chown -R "$OWNER" "$LSWS_HOME/$arg/"*
+ #chown -R "$OWNER" "$LSWS_HOME/$arg/"*
#chmod -R $PERM $LSWS_HOME/$arg/*
done
}
@@ -713,7 +713,7 @@ util_cp_htaccess()
PERM=$2
arg=$3
cp -R "$LSINSTALL_DIR/$arg/".htaccess "$LSWS_HOME/$arg/"
- chown -R "$OWNER" "$LSWS_HOME/$arg/".htaccess
+ #chown -R "$OWNER" "$LSWS_HOME/$arg/".htaccess
}
@@ -729,7 +729,7 @@ util_cpdirv()
for arg
do
cp -R "$LSINSTALL_DIR/$arg/"* "$LSWS_HOME/$arg.$VERSION/"
- chown -R "$OWNER" "$LSWS_HOME/$arg.$VERSION"
+ #chown -R "$OWNER" "$LSWS_HOME/$arg.$VERSION"
$TEST_BIN -L "$LSWS_HOME/$arg"
if [ $? -eq 0 ]; then
rm -f "$LSWS_HOME/$arg"
@@ -751,7 +751,7 @@ util_cpfilev()
for arg
do
cp -f "$LSINSTALL_DIR/$arg" "$LSWS_HOME/$arg.$VERSION"
- chown "$OWNER" "$LSWS_HOME/$arg.$VERSION"
+ #chown "$OWNER" "$LSWS_HOME/$arg.$VERSION"
chmod $PERM "$LSWS_HOME/$arg.$VERSION"
$TEST_BIN -L "$LSWS_HOME/$arg"
if [ $? -eq 0 ]; then
@@ -768,7 +768,7 @@ installation1()
umask 022
if [ $INST_USER = "root" ]; then
SDIR_OWN="root:$ROOTGROUP"
- chown $SDIR_OWN $LSWS_HOME
+ #chown $SDIR_OWN $LSWS_HOME
else
SDIR_OWN=$DIR_OWN
fi
@@ -783,7 +783,7 @@ installation1()
if [ ! -f "$LSWS_HOME/$arg" ]; then
cp "$LSINSTALL_DIR/$arg" "$LSWS_HOME/$arg"
fi
- chown "$OWNER" "$LSWS_HOME/$arg"
+ #chown "$OWNER" "$LSWS_HOME/$arg"
chmod $PERM "$LSWS_HOME/$arg"
done
}
@@ -798,7 +798,7 @@ util_cpdir()
for arg
do
cp -R "$LSINSTALL_DIR/$arg/"* "$LSWS_HOME/$arg/"
- chown -R "$OWNER" "$LSWS_HOME/$arg/"*
+ #chown -R "$OWNER" "$LSWS_HOME/$arg/"*
#chmod -R $PERM $LSWS_HOME/$arg/*
done
}
@@ -817,7 +817,7 @@ util_cpdirv()
do
if [ -d "$LSINSTALL_DIR/$arg" ]; then
cp -R "$LSINSTALL_DIR/$arg/"* "$LSWS_HOME/$arg.$VERSION/"
- chown -R "$OWNER" "$LSWS_HOME/$arg.$VERSION"
+ #chown -R "$OWNER" "$LSWS_HOME/$arg.$VERSION"
$TEST_BIN -L "$LSWS_HOME/$arg"
if [ $? -eq 0 ]; then
rm -f "$LSWS_HOME/$arg"
@@ -842,7 +842,7 @@ util_cpfilev()
if [ -f "$LSINSTALL_DIR/$arg" ]; then
cp -f "$LSINSTALL_DIR/$arg" "$LSWS_HOME/$arg.$VERSION"
- chown "$OWNER" "$LSWS_HOME/$arg.$VERSION"
+ #chown "$OWNER" "$LSWS_HOME/$arg.$VERSION"
chmod $PERM "$LSWS_HOME/$arg.$VERSION"
$TEST_BIN -L "$LSWS_HOME/$arg"
if [ $? -eq 0 ]; then
@@ -914,7 +914,7 @@ installation_lscpd()
fi
SDIR_OWN="root:$ROOTGROUP"
LOGDIR_OWN="root:$WS_GROUP"
- chown $SDIR_OWN $LSWS_HOME
+ #chown $SDIR_OWN $LSWS_HOME
else
SDIR_OWN=$DIR_OWN
LOGDIR_OWN=$DIR_OWN
@@ -974,7 +974,7 @@ installation()
fi
SDIR_OWN="root:$ROOTGROUP"
LOGDIR_OWN="root:$WS_GROUP"
- chown $SDIR_OWN $LSWS_HOME
+ #chown $SDIR_OWN $LSWS_HOME
else
SDIR_OWN=$DIR_OWN
LOGDIR_OWN=$DIR_OWN
@@ -991,12 +991,12 @@ installation()
util_mkdir "$CONF_OWN" $SDIR_MOD conf conf/cert conf/templates conf/vhosts conf/vhosts/Example admin/conf admin/tmp phpbuild
util_mkdir "$SDIR_OWN" $SDIR_MOD cgid admin/cgid admin/cgid/secret
util_mkdir "$DIR_OWN" $SDIR_MOD tmp/ocspcache
- chgrp $WS_GROUP $LSWS_HOME/admin/tmp $LSWS_HOME/admin/cgid $LSWS_HOME/cgid
+ #chgrp $WS_GROUP $LSWS_HOME/admin/tmp $LSWS_HOME/admin/cgid $LSWS_HOME/cgid
chmod g+x $LSWS_HOME/admin/tmp $LSWS_HOME/admin/cgid $LSWS_HOME/cgid
- chown $CONF_OWN $LSWS_HOME/admin/tmp/sess_* 1>/dev/null 2>&1
- chown $DIR_OWN $LSWS_HOME/cachedata
- chown $DIR_OWN $LSWS_HOME/autoupdate
- chown $DIR_OWN $LSWS_HOME/tmp
+ #chown $CONF_OWN $LSWS_HOME/admin/tmp/sess_* 1>/dev/null 2>&1
+ #chown $DIR_OWN $LSWS_HOME/cachedata
+ #chown $DIR_OWN $LSWS_HOME/autoupdate
+ #chown $DIR_OWN $LSWS_HOME/tmp
util_mkdir "$SDIR_OWN" $DIR_MOD Example
find "$LSWS_HOME/admin/tmp" -type s -atime +1 -delete 2>/dev/null
@@ -1076,7 +1076,7 @@ installation()
fi
#change conf own as lsadm:nobody permission 750
- chown -R lsadm:$WS_GROUP "$LSWS_HOME/conf/"
+ #chown -R lsadm:$WS_GROUP "$LSWS_HOME/conf/"
chmod -R 0750 "$LSWS_HOME/conf/"
chmod 0600 "$LSWS_HOME/conf/httpd_config.conf"
diff --git a/dist/install.sh b/dist/install.sh
index d38d958..acd4a94 100755
--- a/dist/install.sh
+++ b/dist/install.sh
@@ -33,7 +33,7 @@ inst_admin_php()
if [ "x$OS" = "xLinux" ] ; then
if [ "x$ARCH" = "xx86_64" ] ; then
- $DLCMD $LSWS_HOME/admin/fcgi-bin/admin_php http://www.litespeedtech.com/packages/lsphp5_bin/x86_64/lsphp5
+ mv $TEMPDIR/admin/fcgi-bin/admin_php $LSWS_HOME/admin/fcgi-bin/
elif [ "x$ARCH" = "xaarch64" ] ; then
$DLCMD $LSWS_HOME/admin/fcgi-bin/admin_php http://www.litespeedtech.com/packages/lsphp7_bin/aarch64/lsphp
else
@@ -183,6 +183,7 @@ inst_lsphp7()
#script start here
cd `dirname "$0"`
+TEMPDIR=$(pwd)
. ./functions.sh
if [ $? != 0 ] ; then
echo "[ERROR] Can not include 'functions.sh'."
@@ -404,10 +405,9 @@ if [ "x$IS_LSCPD" != "xyes" ] ; then
$LSWS_HOME/admin/misc/create_admin_keypair.sh
fi
- chown "$CONF_OWN" "$LSWS_HOME/admin/conf/jcryption_keypair"
+
chmod 0600 "$LSWS_HOME/admin/conf/jcryption_keypair"
- chown "$CONF_OWN" "$LSWS_HOME/admin/conf/htpasswd"
chmod 0600 "$LSWS_HOME/admin/conf/htpasswd"
diff --git a/src/modules/modsecurity-ls/CMakeLists.txt b/src/modules/modsecurity-ls/CMakeLists.txt
index c091ad9..f110452 100644
--- a/src/modules/modsecurity-ls/CMakeLists.txt
+++ b/src/modules/modsecurity-ls/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.0)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17 -Wall")
include_directories(${PROJECT_SOURCE_DIR}/../third-party/ModSecurity/headers/)

@ -0,0 +1,260 @@
%global _lsws_dir %{_prefix}/lsws
Name: openlitespeed
Version: 1.8.2
Release: 1%{?dist}
tigro commented 3 months ago
Review

Тут правильное значение GPLv3+

Тут правильное значение GPLv3+
Summary: Open source HTTP server developed and copyrighted by LiteSpeed Technologies.
tigro commented 3 months ago
Review

Это URL должен быть в поле Source0, чтобы его можно было скачать при помощи spectool -g. И использовать нужно тот тарбол, что скачается из git'а

Это URL должен быть в поле Source0, чтобы его можно было скачать при помощи spectool -g. И использовать нужно тот тарбол, что скачается из git'а
License: GPLv3+
Url: https://github.com/litespeedtech/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
tigro commented 3 months ago
Review

Заменить на URL выше и тарбол с гита залить в s3

Заменить на URL выше и тарбол с гита залить в s3
Source0: https://github.com/litespeedtech/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
Source1: third-party.tar.xz
Source2: https://github.com/litespeedtech/lsquic/archive/refs/tags/v4.0.12.tar.gz#/lsquic-4.0.12.tar.gz
Source3: https://github.com/litespeedtech/ls-hpack/archive/refs/tags/v2.3.3.tar.gz#/ls-hpack-2.3.3.tar.gz
Source4: admin_php.tar.xz
Source5: https://github.com/litespeedtech/ls-qpack/archive/refs/tags/v2.5.4.tar.gz#/ls-qpack-2.5.4.tar.gz
Patch0: fix-tarball-for-local-build.patch
BuildRequires: gcc
BuildRequires: g++
BuildRequires: make
BuildRequires: cmake
BuildRequires: clang
BuildRequires: expat-devel
BuildRequires: libcap-devel
BuildRequires: libtool
BuildRequires: autoconf
BuildRequires: go
tigro commented 3 months ago
Review

Вот в таких случаях используется %package lua - это означает дописать lua к %{name} пакета. А -n используется, когда пакет не содержит %{name} что и было раньше. В %description ниже всё тоже самое. И для других пакетов. в %files тоже самое.

Вот в таких случаях используется %package lua - это означает дописать lua к %{name} пакета. А -n используется, когда пакет не содержит %{name} что и было раньше. В %description ниже всё тоже самое. И для других пакетов. в %files тоже самое.
BuildRequires: libaio-devel
BuildRequires: doxygen
tigro commented 3 months ago
Review

тут правильно будет

Requires: %{name} = %{version}-%{release}

Ну и ниже также.

тут правильно будет ``` Requires: %{name} = %{version}-%{release} ``` Ну и ниже также.
BuildRequires: docbook2X
%if 0%{?systemd_requires}
Requires: systemd
%endif
%description
OpenLiteSpeed is a high-performance, lightweight, open source HTTP server developed and copyrighted by LiteSpeed Technologies.
%package lua
Summary: Lua
Requires: %{name} = %{version}-%{release}
%description lua
Mod Lua module for openlitespeed webserver.
%package pagespeed
Summary: Pagespeed
Requires: %{name} = %{version}-%{release}
tigro commented 3 months ago
Review

Проверить путь в архиве относительн тарбола из git'а. Кажется, что -n %{name} будет не нужно.

Проверить путь в архиве относительн тарбола из git'а. Кажется, что -n %{name} будет не нужно.
%description pagespeed
Pagespeed module for openlitespeed webserver.
%package modsecurity
Summary: Mod Security
Requires: %{name} = %{version}-%{release}
%description modsecurity
Mod Security for openlitespeed webserver.
%prep
%autosetup -p1 -b1
tar -xpaf %{SOURCE2}
tar -xpaf %{SOURCE3}
mkdir %{_builddir}/%{name}-%{version}/dist/admin/fcgi-bin
tar -xpaf %{SOURCE4} -C %{_builddir}/%{name}-%{version}/dist/admin/fcgi-bin/
tar -xpaf %{SOURCE5}
%build
rm -rf lsquic
tigro commented 3 months ago
Review

Я нашёл в пакете сервис для системд: /usr/lsws/admin/misc/lshttpd.service

Давай его как раз скопируем в правильное место, а init-скрипт удалим.

Нужны будут ещё макросы для systemd. Можешь посмотреть, как сделано в пакете nginx допустим.

Я нашёл в пакете сервис для системд: /usr/lsws/admin/misc/lshttpd.service Давай его как раз скопируем в правильное место, а init-скрипт удалим. Нужны будут ещё макросы для systemd. Можешь посмотреть, как сделано в пакете nginx допустим.
mv lsquic-4.0.12/ lsquic
rm -rf lsquic/src/lshpack
mv ls-hpack-2.3.3/ lsquic/src/lshpack
rm -rf lsquic/src/liblsquic/ls-qpack
mv ls-qpack-2.5.4/ lsquic/src/liblsquic/ls-qpack
sh -e build.sh
%install
install -dm 755 %{buildroot}%{_lsws_dir}
rm -f dist/ols.conf
buildroot_path=$(rpm --eval "%{buildroot}")
sed -i -e 's:USE_LSPHP7=yes:USE_LSPHP7=no:g' dist/install.sh
tigro commented 3 months ago
Review

Давай всегда использовать rm -f. Часто бывает, что файла почему-то нет и стопорится сборка.

Давай всегда использовать rm -f. Часто бывает, что файла почему-то нет и стопорится сборка.
sed -i -e "s:SERVERROOT=/usr/lsws:SERVERROOT=$buildroot_path/usr/lsws:g" dist/install.sh
sed -i -e 's:OPENLSWS_ADMINSSL=yes:OPENLSWS_ADMINSSL=no:g' dist/install.sh
sed -i -e 's:ln -sf "$LSWS_HOME/fcgi-bin/lsphp5" "$LSWS_HOME/fcgi-bin/lphp":cd $LSWS_HOME/fcgi-bin/; ln -sf lsphp5 ./lsphp; cd -:g' dist/_in.sh
sed -i -e 's:mkdir $SERVERROOT:mkdir -p $SERVERROOT:g' dist/install.sh
sed -i -e 's|s:%LSWS_CTRL%:$LSWS_HOME/bin/lswsctrl:|s:%LSWS_CTRL%:/usr/lsws/bin/lswsctrl:|g' dist/functions.sh
dist/install.sh
rm -f %{buildroot}%{_lsws_dir}/admin/conf/admin_config.conf
cp -pr dist/admin/conf/admin_config_ssl.conf.in %{buildroot}%{_lsws_dir}/admin/conf/admin_config.conf
sed -i -e "s:%ADMIN_PORT%:7080:g" %{buildroot}%{_lsws_dir}/admin/conf/admin_config.conf
sed -i -e "s:%SSL_HOSTNAME%:webadmin:g" %{buildroot}%{_lsws_dir}/admin/conf/admin_config.conf
install -m 755 -d %{buildroot}%{_unitdir}
tigro commented 3 months ago
Review

Давай всё-таки %postun. И ещё добавь остановку сервиса.

Давай всё-таки %postun. И ещё добавь остановку сервиса.
cp %{buildroot}%{_lsws_dir}/admin/misc/lshttpd.service %{buildroot}%{_unitdir}
tigro commented 3 months ago
Review

А вот это лучше инсталлировать в /usr/lib/systemd/system и макрос у неё %{_unitdir}

А вот это лучше инсталлировать в /usr/lib/systemd/system и макрос у неё %{_unitdir}
chmod u+w %{buildroot}%{_lsws_dir}/admin/misc/lsws.rc
sed "s:%LSWS_CTRL%:/usr/lsws/bin/lswsctrl:" dist/admin/misc/lsws.rc.in > %{buildroot}%{_lsws_dir}/admin/misc/lsws.rc
sed -i -e 's:fcgi-bin/lsphp:$SERVER_ROOT/lsphp73/bin/lsphp:g' %{buildroot}%{_lsws_dir}/conf/httpd_config.conf
echo 'RPM' > %{buildroot}%{_lsws_dir}/PLAT
chmod 755 %{buildroot}%{_lsws_dir}/bin/unmount_ns
chmod 755 %{buildroot}%{_lsws_dir}/lsrecaptcha/_recaptcha
chmod 755 %{buildroot}%{_lsws_dir}/admin/fcgi-bin/admin_php
chmod 755 %{buildroot}%{_lsws_dir}/fcgi-bin/lsphp5
chmod 755 %{buildroot}%{_lsws_dir}/admin/fcgi-bin/admin_php
rm -f %{buildroot}%{_lsws_dir}/fcgi-bin/lsphp
rm -f %{buildroot}%{_lsws_dir}/admin/misc/lsws.rc.gentoo
%pre
getent group lsadm > /dev/null || groupadd -r lsadm
lsadm_gid=`grep ^lsadm: /etc/group | awk -F : '{ print $3; }'` >/dev/null 2>&1
getent passwd lsadm > /dev/null || useradd -g $lsadm_gid -d / -r -s /sbin/nologin -c "lsadm" lsadm >/dev/null 2>&1
usermod -G lsadm,nobody lsadm >/dev/null 2>&1
exit 0
%preun
%systemd_preun lsws
%postun
userdel lsadm
%systemd_postun lsws
%post
DEFAULT_USER="nobody"
DEFAULT_GROUP="nobody"
WS_USER=$DEFAULT_USER
WS_GROUP=$DEFAULT_GROUP
ADMIN_USER="lsadm"
LSWS_HOME="/usr/lsws"
OLD_USER=$DEFAULT_USER
OLD_GROUP=$DEFAULT_GROUP
grep -q nobody: "/etc/group"
if [ $? != 0 ] ; then
DEFAULT_GROUP="nogroup"
fi
if [ "$WS_GROUP" = "nobody" ] ; then
WS_GROUP=$DEFAULT_GROUP
fi
if [ -f "$LSWS_HOME/conf/httpd_config.xml" ] ; then
OLD_USER_CONF=`grep "<user>" "$LSWS_HOME/conf/httpd_config.xml"`
OLD_GROUP_CONF=`grep "<group>" "$LSWS_HOME/conf/httpd_config.xml"`
OLD_USER=`expr "$OLD_USER_CONF" : '.*<user>\(.*\)</user>.*'`
OLD_GROUP=`expr "$OLD_GROUP_CONF" : '.*<group>\(.*\)</group>.*'`
fi
if [ -f "$LSWS_HOME/conf/httpd_config.conf" ] ; then
#Now check if the user and group match with the conf file
OLD_USER_CONF=`grep "user" "$LSWS_HOME/conf/httpd_config.conf"`
OLD_GROUP_CONF=`grep "group" "$LSWS_HOME/conf/httpd_config.conf"`
OLD_USER=`expr "$OLD_USER_CONF" : '\s*user\s*\(\S*\)'`
OLD_GROUP=`expr "$OLD_GROUP_CONF" : '\s*group\s*\(\S*\)'`
fi
WS_USER=$OLD_USER
WS_GROUP=$OLD_GROUP
DIR_OWN=$WS_USER:$WS_GROUP
CONF_OWN=$WS_USER:$WS_GROUP
LOGDIR_OWN="root:$WS_GROUP"
grep "^lsadm:" /etc/passwd 1>/dev/null 2>&1
if [ $? -eq 0 ]; then
CONF_OWN="lsadm:lsadm"
fi
SDIR_OWN="root:root"
chown $SDIR_OWN $LSWS_HOME >/dev/null 2>&1
chown "$CONF_OWN" -R %{_lsws_dir}/conf >/dev/null 2>&1
chown "$CONF_OWN" -R %{_lsws_dir}/phpbuild >/dev/null 2>&1
if [ -d "/usr/lsws/autoupdate" ]; then
chown "$CONF_OWN" -R %{_lsws_dir}/autoupdate >/dev/null 2>&1
fi
if [ -d "/usr/lsws/DEFAULT/conf" ]; then
chown "$CONF_OWN" -R %{_lsws_dir}/DEFAULT/conf >/dev/null 2>&1
fi
if [ -d "/usr/lsws/Example/conf" ]; then
chown "$CONF_OWN" -R %{_lsws_dir}/Example/conf >/dev/null 2>&1
fi
chown "$CONF_OWN" -R %{_lsws_dir}/admin/conf >/dev/null 2>&1
chown "$CONF_OWN" -R %{_lsws_dir}/admin/tmp >/dev/null 2>&1
chgrp $WS_GROUP %{_lsws_dir}/admin/cgid >/dev/null 2>&1
tigro commented 3 months ago
Review

Интересно, а почему тут два раза SSL_STATE и SSL_COUNTRY. Ошиблись что ли.

Интересно, а почему тут два раза SSL_STATE и SSL_COUNTRY. Ошиблись что ли.
chgrp $WS_GROUP %{_lsws_dir}/admin/tmp >/dev/null 2>&1
chown "$CONF_OWN" $LSWS_HOME/admin/tmp/sess_* 1>/dev/null 2>&1
chown "$DIR_OWN" $LSWS_HOME/cachedata >/dev/null 2>&1
chown "$SDIR_OWN" "$LSWS_HOME/fcgi-bin/lsphp" >/dev/null 2>&1
chmod "$EXEC_MOD" "$LSWS_HOME/fcgi-bin/lsphp" >/dev/null 2>&1
chown "$CONF_OWN" "$LSWS_HOME/admin/conf/jcryption_keypair" >/dev/null 2>&1
chmod 0600 "$LSWS_HOME/admin/conf/jcryption_keypair" >/dev/null 2>&1
chown "$CONF_OWN" "$LSWS_HOME/admin/conf/htpasswd" >/dev/null 2>&1
chmod 0600 "$LSWS_HOME/admin/conf/htpasswd" >/dev/null 2>&1
chown "nobody:nobody" "$LSWS_HOME/tmp" >/dev/null 2>&1
chmod 0700 "$LSWS_HOME/tmp" >/dev/null 2>&1
chmod 0755 "$LSWS_HOME/autoupdate" >/dev/null 2>&1
chown "$LOGDIR_OWN" "$LSWS_HOME/logs" "$LSWS_HOME/admin/logs" >/dev/null 2>&1
chmod 0750 "$LSWS_HOME/logs" "$LSWS_HOME/admin/logs" >/dev/null 2>&1
#########this is the end of script to fix rpm build related file group and permission problem.
SSL_COUNTRY='RU'
SSL_STATE="Moscow"
tigro commented 3 months ago
Review

Надо поискать, что писать тут для RU/Moscow. Может и вообще пустое поле или не должно существовать. Но не NJ точно.

Надо поискать, что писать тут для RU/Moscow. Может и вообще пустое поле или не должно существовать. Но не NJ точно.
SSL_LOCALITY='Virtual'
SSL_ORG='LiteSpeedCommunity'
SSL_ORGUNIT='Testing'
SSL_HOSTNAME='webadmin'
COMMNAME='openlitespeed.host'
csr="${SSL_HOSTNAME}.csr"
key="${SSL_HOSTNAME}.key"
cert="${SSL_HOSTNAME}.crt"
%define sslcert %{_lsws_dir}/admin/conf/${cert}
%define sslkey %{_lsws_dir}/admin/conf/${key}
cat << EOF > ${csr}
[req]
tigro commented 3 months ago
Review

Это от initscripts. Не нужное.

Это от initscripts. Не нужное.
prompt=no
distinguished_name=openlitespeed
[openlitespeed]
commonName = ${COMMNAME}
countryName = ${SSL_COUNTRY}
tigro commented 3 months ago
Review

Добавь тут (только тут):

%license LICENSE
%doc README.md
Добавь тут (только тут): ``` %license LICENSE %doc README.md ```
localityName = Virtual
tigro commented 3 months ago
Review

Это будет не нужно, так как будем использовать systemd.

Это будет не нужно, так как будем использовать systemd.
organizationName = LiteSpeedCommunity
tigro commented 3 months ago
Review

Как же этот /usr/lsws глаза режет. Давай вот что сделаем

В самом начале файла определим

%global _lsws_dir %{_prefix}/lsws

И будем использовать %{_lsws_dir} вместо /usr/lsws

И вообще хорошо бы во всём spec это заменить. Ну хотя бы где просто пути, без sed'ов и if'ов.

Как же этот /usr/lsws глаза режет. Давай вот что сделаем В самом начале файла определим ``` %global _lsws_dir %{_prefix}/lsws ``` И будем использовать %{_lsws_dir} вместо /usr/lsws И вообще хорошо бы во всём spec это заменить. Ну хотя бы где просто пути, без sed'ов и if'ов.
organizationalUnitName = Testing
stateOrProvinceName = RU
emailAddress = mail@${COMMNAME}
name = openlitespeed
initials = CP
dnQualifier = openlitespeed
[server_exts]
extendedKeyUsage=1.3.6.1.5.5.7.3.1
EOF
openssl req -x509 -config $csr -extensions 'server_exts' -nodes -days 820 -newkey rsa:2048 -keyout %{sslkey} -out %{sslcert}
chown lsadm.lsadm %{sslcert}; chmod 400 %{sslcert};
chown lsadm.lsadm %{sslkey}; chmod 400 %{sslkey};
ln -s %{_lsws_dir}/fcgi-bin/lsphp5 %{_lsws_dir}/fcgi-bin/lsphp
%systemd_post lsws
echo "To change admin password run /usr/lsws/admin/misc/admpass.sh script"
echo "To start the openlitespeed server, run the command: systemctl start lsws"
%files
%{_unitdir}/lshttpd.service
%doc README.md
%dir %{_lsws_dir}
tigro commented 3 months ago
Review

Тут будет %{_unitdir}/lshttpd.service

Тут будет %{_unitdir}/lshttpd.service
%{_lsws_dir}/*
%config(noreplace) %{_lsws_dir}/conf/*
%config(noreplace) %{_lsws_dir}/admin/conf/*
%config(noreplace) %{_lsws_dir}/fcgi-bin/*
%config(noreplace) %{_lsws_dir}/PLAT
%files pagespeed
%{_lsws_dir}/modules/modpagespeed.so
%files modsecurity
%{_lsws_dir}/modules/mod_security.so
%files lua
%{_lsws_dir}/modules/mod_lua.so
%changelog
* Wed Sep 18 2024 Eduard Basov <ebasov@msvsphere-os.ru> - 1.8.2-1
- Rebuild for MSVSphere 9.4
tigro commented 3 months ago
Review

Забыл релиз - должно быть 1.8.2-1 а не 1.8.2.

Забыл релиз - должно быть 1.8.2-1 а не 1.8.2.
Loading…
Cancel
Save