summary refs log tree commit diff
path: root/pkgs/tools/networking/pykms
diff options
context:
space:
mode:
authorPeter Hoeg <peter@hoeg.com>2017-07-25 15:04:28 +0800
committerPeter Hoeg <peter@hoeg.com>2017-10-12 08:51:11 +0800
commit62e73a75f120d1c4b28d9e32e539db1bc99d1f28 (patch)
treeb8e13b34543c2fa62bb02d481a3548abaf894962 /pkgs/tools/networking/pykms
parent829566a23dfbe8ef7fe1b3d2949f0f984c71fc98 (diff)
downloadnixlib-62e73a75f120d1c4b28d9e32e539db1bc99d1f28.tar
nixlib-62e73a75f120d1c4b28d9e32e539db1bc99d1f28.tar.gz
nixlib-62e73a75f120d1c4b28d9e32e539db1bc99d1f28.tar.bz2
nixlib-62e73a75f120d1c4b28d9e32e539db1bc99d1f28.tar.lz
nixlib-62e73a75f120d1c4b28d9e32e539db1bc99d1f28.tar.xz
nixlib-62e73a75f120d1c4b28d9e32e539db1bc99d1f28.tar.zst
nixlib-62e73a75f120d1c4b28d9e32e539db1bc99d1f28.zip
pykms: init at 20170719
Diffstat (limited to 'pkgs/tools/networking/pykms')
-rw-r--r--pkgs/tools/networking/pykms/default.nix82
1 files changed, 82 insertions, 0 deletions
diff --git a/pkgs/tools/networking/pykms/default.nix b/pkgs/tools/networking/pykms/default.nix
new file mode 100644
index 000000000000..ba9bd762124b
--- /dev/null
+++ b/pkgs/tools/networking/pykms/default.nix
@@ -0,0 +1,82 @@
+{ stdenv, fetchFromGitHub, python2Packages, writeText, writeScript
+, coreutils, sqlite }:
+
+let
+  dbSql = writeText "create_pykms_db.sql" ''
+    CREATE TABLE clients(
+      clientMachineId TEXT,
+      machineName     TEXT,
+      applicationId   TEXT,
+      skuId           TEXT,
+      licenseStatus   TEXT,
+      lastRequestTime INTEGER,
+      kmsEpid         TEXT,
+      requestCount    INTEGER
+    );
+  '';
+
+  dbScript = writeScript "create_pykms_db.sh" (with stdenv.lib; ''
+    #!${stdenv.shell} -eu
+
+    db=$1
+
+    ${getBin coreutils}/bin/install -d $(dirname $db)
+
+    if [ ! -e $db ] ; then
+      ${getBin sqlite}/bin/sqlite3 $db < ${dbSql}
+    fi
+  '');
+
+in python2Packages.buildPythonApplication rec {
+  name = "pykms-${version}";
+  version = "20170719";
+
+  src = fetchFromGitHub {
+    owner  = "ThunderEX";
+    repo   = "py-kms";
+    rev    = "27355d88affd740330174a7c2bae9f50b9efce56";
+    sha256 = "0cpywj73jmyijjc5hs3b00argjsdwpqzmhawbxkx3mc2l4sgzc88";
+  };
+
+  propagatedBuildInputs = with python2Packages; [ argparse pytz ];
+
+  prePatch = ''
+    siteDir=$out/${python2Packages.python.sitePackages}
+
+    substituteInPlace kmsBase.py \
+      --replace "'KmsDataBase.xml'" "'$siteDir/KmsDataBase.xml'"
+  '';
+
+  dontBuild = true;
+
+  # there are no tests
+  doCheck = false;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/{bin,share/doc/pykms} $siteDir
+
+    mv * $siteDir
+    for b in client server ; do
+      chmod 0755 $siteDir/$b.py
+      makeWrapper ${python2Packages.python.interpreter} $out/bin/$b.py \
+        --add-flags $siteDir/$b.py
+    done
+
+    install -m755 ${dbScript} $out/bin/create_pykms_db.sh
+
+    mv $siteDir/README.md $out/share/doc/pykms/
+
+    ${python2Packages.python.interpreter} -m compileall $siteDir
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Windows KMS (Key Management Service) server written in Python";
+    homepage    = "https://forums.mydigitallife.info/threads/50234-Emulated-KMS-Servers-on-non-Windows-platforms/page2?p=840410&viewfull=1#post840410";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}