1
0

更新目录结构,用厂商区分一下包

This commit is contained in:
Sense T
2025-03-01 09:47:34 +08:00
parent 75a466fbd2
commit 1cc5ff724f
4 changed files with 22 additions and 11 deletions

View File

@@ -0,0 +1,41 @@
{
lib,
config,
pkgs-chuang,
...
}:
let
cfg = config.services.h3c-inode-client;
in
{
options.services.h3c-inode-client = {
enable = lib.mkEnableOption "H3C iNodeClient - ssl vpn client.";
package = lib.mkPackageOption pkgs-chuang "h3c.inode-client" {
pkgsText = "pkgs-chuang";
default = [
"h3c"
"inode-client"
];
};
};
config = lib.mkIf cfg.enable {
environment.etc."iNode/inodesys.conf".source = "${cfg.package}/etc/iNode/inodesys.conf";
environment.systemPackages = [ cfg.package ];
systemd.services.h3c-inode-client = {
#wantedBy = [
# "network-online.target"
# "graphical.target"
#];
after = [ "network-online.target" ];
serviceConfig = {
Type = "simple";
RemainAfterExit = "yes";
ExecStartPre = "${cfg.package}/bin/setup";
ExecStart = "${cfg.package}/bin/AuthenMngService";
ExecStop = "${cfg.package}/bin/AuthenMngService -k";
};
};
};
}

View File

@@ -0,0 +1,143 @@
{
stdenv,
makeWrapper,
autoPatchelfHook,
# denpendencies
libgcc,
libxcrypt-legacy,
libuuid,
libpng12,
libjpeg,
libudev0-shim,
libz,
atk,
bash,
coreutils,
ell,
glib,
cairo,
ncurses5,
pango,
gtk2,
gdk-pixbuf,
freetype,
fontconfig,
xorg, # libSM, libX11, libXxf86vm
...
}:
let
install_dir = "/opt/iNodeClient";
libraries = [
libgcc
libxcrypt-legacy
libuuid
libpng12
libjpeg
libudev0-shim
libz
atk
ell
bash
coreutils
glib
cairo
ncurses5
pango
gtk2
gdk-pixbuf
freetype
fontconfig
xorg.libSM
xorg.libX11
xorg.libXxf86vm
];
in
stdenv.mkDerivation rec {
pname = "inode-client";
version = "7.3.0";
src = fetchTarball {
url = "https://download.h3c.com/app/cn/download.do?id=7684846";
sha256 = "0y92bia0xcm6d8al3vzkgglcqd63z09lkssvi9ihsz6m1kabwxyl";
};
nativeBuildInputs = [
autoPatchelfHook
makeWrapper
];
buildInputs = libraries;
installPhase = ''
#
mkdir -p $out${install_dir}
for i in $(ls -a $src); do
if [ $i == "$src/clientfiles" ]; then
continue
fi
cp -r $i $out${install_dir}
done
for i in $(ls $out${install_dir}/*.ps); do
sed -i 's|#!/bin/sh|#!/usr/bin/env sh|' $i
chmod +x $i
done
# enablecards.ps
head -n1 $out${install_dir}/enablecards.ps | tee $out${install_dir}/enablecards.ps
#
rm -rf $out${install_dir}/clientfiles
ln -sf /var/lib/inode/clientfiles $out${install_dir}/
ln -sf /var/lib/inode/Data $out${install_dir}/
mkdir -p $out/var/lib/inode/conf
mv $out${install_dir}/conf/iNode.conf $out/var/lib/inode/conf
rm $out${install_dir}/conf -rf
ln -sf /var/lib/inode/conf $out${install_dir}/
#
rm -rf $out${install_dir}/log
ln -sf /var/log/inode $out${install_dir}/log
#
mkdir -p $out/share/applications
cat $out${install_dir}/iNodeClient.desktop | sed "/^Exec=/s#@INSTALL_PATH/iNodeClient.sh#$out${install_dir}/.iNode/iNodeClient#" | sed "/^Icon=/s#@INSTALL_PATH#$out${install_dir}#" > $out/share/applications/iNodeClient.desktop
# /etc
mkdir -p $out/etc/iNode
echo INSTALL_DIR=$out${install_dir} > $out/etc/iNode/inodesys.conf
#
mkdir -p $out/bin
cat > $out/bin/${pname} <<EOF
#!/usr/bin/env bash
$out${install_dir}/.iNode/iNodeClient
EOF
chmod +x $out/bin/${pname}
cat > $out/bin/setup <<EOF
#!/usr/bin/env bash
[ -d /var/lib/inode/clientfiles/7000 ] || mkdir -p /var/lib/inode/clientfiles/7000
[ -d /var/lib/inode/Data ] || mkdir -p /var/lib/inode/Data
[ -d /var/lib/inode/conf ] || mkdir -p /var/lib/inode/conf
[ -e /var/lib/inode/conf/iNode.conf ] || cp $out/var/lib/inode/conf/iNode.conf /var/lib/inode/conf
chmod 777 -R /var/lib/inode/*
[ -d /var/log/inode/cmd ] || mkdir -p /var/log/inode/cmd
chmod 777 -R /var/log/inode
EOF
chmod +x $out/bin/setup
cat > $out/bin/AuthenMngService <<EOF
#!/usr/bin/env bash
$out${install_dir}/iNodeMon \$@
$out${install_dir}/AuthenMngService \$@
EOF
chmod +x $out/bin/AuthenMngService
'';
}