feat(licensing): add WebUI license import modal, remove lic step from setup, default unlicensed to 0 seats
CI Test Suite / Run Component Tests & Pipeline Verification (push) Failing after 1m4s
Release Binaries & Packages / Build & Release Standalone Binaries (Linux & Windows Cross-Compilation) (push) Successful in 4m38s

This commit is contained in:
2026-09-26 20:50:57 +02:00
parent f1e5e8f986
commit 37f959e402
4 changed files with 149 additions and 119 deletions
+1 -17
View File
@@ -3,7 +3,6 @@ set -euo pipefail
INSTALL_DIR="/opt/logar-server"
CONFIG_DIR="/etc/logar"
LIC_FILE=""
# Parse command line options
while [[ $# -gt 0 ]]; do
@@ -12,10 +11,6 @@ while [[ $# -gt 0 ]]; do
CONFIG_DIR="$2"
shift 2
;;
--lic|--license|--import-lic)
LIC_FILE="$2"
shift 2
;;
*)
shift
;;
@@ -27,16 +22,11 @@ echo " LOGAR Server Enterprise Linux Installer"
echo "============================================================"
# Interactive configuration if running in a terminal without CLI arguments
if [ -t 0 ] && [ -z "${LIC_FILE}" ]; then
if [ -t 0 ]; then
read -r -p "Enter Data and Configuration Directory [${CONFIG_DIR}]: " USER_CFG
if [ -n "${USER_CFG}" ]; then
CONFIG_DIR="${USER_CFG}"
fi
read -r -p "Enter path to .lic license file (press Enter to skip): " USER_LIC
if [ -n "${USER_LIC}" ]; then
LIC_FILE="${USER_LIC}"
fi
fi
mkdir -p "${INSTALL_DIR}" "${CONFIG_DIR}" "/var/log/logar"
@@ -55,12 +45,6 @@ if [ -f "${INSTALL_DIR}/Server" ]; then
chmod +x "${INSTALL_DIR}/Server"
fi
# If license file provided, import it during setup
if [ -n "${LIC_FILE}" ] && [ -f "${LIC_FILE}" ]; then
echo "[*] Importing license file: ${LIC_FILE}..."
"${INSTALL_DIR}/Server" --config "${CONFIG_DIR}/server_config.json" --import-lic "${LIC_FILE}" || echo "[!] License import returned warning. Continuing."
fi
cat <<EOF > /etc/systemd/system/logar-server.service
[Unit]
Description=LOGAR Hub and Aggregator Engine
-31
View File
@@ -51,7 +51,6 @@ Type: filesandordirs; Name: "{commonappdata}\LOGAR-Server"
[Code]
var
DataDirPage: TInputDirWizardPage;
LicFilePage: TInputFileWizardPage;
procedure InitializeWizard;
begin
@@ -66,15 +65,6 @@ begin
);
DataDirPage.Add('Data Directory:');
DataDirPage.Values[0] := ExpandConstant('{commonappdata}\LOGAR-Server');
LicFilePage := CreateInputFilePage(
DataDirPage.ID,
'Enterprise License Activation (Optional)',
'Do you have an activated .lic license file to import during installation?',
'Select your signed .lic file to activate the server immediately.'#13#10#13#10 +
'You can also leave this blank to initialize with a default evaluation license and activate later via the web dashboard.'
);
LicFilePage.Add('License File (.lic):', 'License Files (*.lic)|*.lic|All Files (*.*)|*.*', '.lic');
end;
function GetDataDir(Param: String): String;
@@ -84,32 +74,11 @@ begin
Result := ExpandConstant('{commonappdata}\LOGAR-Server');
end;
function GetLicFile(Param: String): String;
begin
Result := LicFilePage.Values[0];
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
LicPath: String;
ResultCode: Integer;
begin
if CurStep = ssPostInstall then
begin
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\LOGAR\LOGAR-Server', 'DataDir', GetDataDir(''));
LicPath := GetLicFile('');
if (LicPath <> '') and FileExists(LicPath) then
begin
Exec(
ExpandConstant('{app}\Server.exe'),
'--config "' + GetDataDir('') + '\server_config.json" --import-lic "' + LicPath + '"',
ExpandConstant('{app}'),
SW_HIDE,
ewWaitUntilTerminated,
ResultCode
);
end;
end;
end;
-49
View File
@@ -17,10 +17,6 @@ VIAddVersionKey "FileVersion" "0.3.1.0"
VIAddVersionKey "ProductVersion" "0.3.1.0"
Var DATADIR
Var LICFILE
Var LicDialog
Var LicFileInput
Var LicBrowseBtn
# --- UI Pages ---
!define MUI_ABORTWARNING
@@ -44,9 +40,6 @@ Var LicBrowseBtn
!define MUI_DIRECTORYPAGE_VARIABLE $DATADIR
!insertmacro MUI_PAGE_DIRECTORY
# Custom Page: License File Selection
Page custom LicensePageCreate LicensePageLeave
# Instfiles Page
!insertmacro MUI_PAGE_INSTFILES
@@ -64,44 +57,8 @@ Page custom LicensePageCreate LicensePageLeave
Function .onInit
SetShellVarContext all
StrCpy $DATADIR "$APPDATA\LOGAR-Server"
StrCpy $LICFILE ""
FunctionEnd
Function LicensePageCreate
nsDialogs::Create 1018
Pop $LicDialog
${If} $LicDialog == error
Abort
${EndIf}
!insertmacro MUI_HEADER_TEXT "Enterprise License Activation (Optional)" "Choose a .lic license file to activate your server during installation."
${NSD_CreateLabel} 0 0 100% 30u "If you have received an activated .lic license file, select it below to activate the server immediately.$\r$\n$\r$\nLeave this field blank to use the default evaluation license."
Pop $0
${NSD_CreateText} 0 38u 75% 12u "$LICFILE"
Pop $LicFileInput
${NSD_CreateButton} 78% 37u 22% 14u "Browse..."
Pop $LicBrowseBtn
${NSD_OnClick} $LicBrowseBtn OnBrowseLic
nsDialogs::Show
Function
Function OnBrowseLic
nsDialogs::SelectFileDialog open "" "LOGAR License Files (*.lic)|*.lic|All Files (*.*)|*.*"
Pop $0
${If} $0 != ""
StrCpy $LICFILE $0
${NSD_SetText} $LicFileInput $LICFILE
${EndIf}
Function
Function LicensePageLeave
${NSD_GetText} $LicFileInput $LICFILE
Function
Section "Install"
SetShellVarContext all
SetOutPath "$INSTDIR"
@@ -112,12 +69,6 @@ Section "Install"
CreateDirectory "$DATADIR"
ExecWait 'icacls "$DATADIR" /grant "*S-1-5-32-545:(OI)(CI)M" /T /Q'
# If license file was selected, import before starting service
${If} $LICFILE != ""
${AndIf} ${FileExists} "$LICFILE"
ExecWait '"$INSTDIR\Server.exe" --config "$DATADIR\server_config.json" --import-lic "$LICFILE"'
${EndIf}
# Install and configure service via NSSM
ExecWait '"$INSTDIR\nssm.exe" install LOGAR_Server "$INSTDIR\Server.exe"'
ExecWait '"$INSTDIR\nssm.exe" set LOGAR_Server AppDirectory "$INSTDIR"'