From 003062a217b188403fc23cbc60fb9cd9a6263d80 Mon Sep 17 00:00:00 2001 From: Daniel Berteaud Date: Mon, 27 Mar 2023 13:08:40 +0200 Subject: [PATCH] Fork GLPI Agent from fusioninventory agent --- .gitattributes | 1 + GLPI-Agent-1.4-x64.msi | 3 ++ GLPI-Agent-1.4-x86.msi | 3 ++ WAPT/control | 29 +++++----- fusioninventory-agent_windows-x64_2.6.exe | 3 -- fusioninventory-agent_windows-x86_2.6.exe | 3 -- setup.py | 65 ++++++++++++++--------- 7 files changed, 61 insertions(+), 46 deletions(-) create mode 100644 GLPI-Agent-1.4-x64.msi create mode 100644 GLPI-Agent-1.4-x86.msi delete mode 100644 fusioninventory-agent_windows-x64_2.6.exe delete mode 100644 fusioninventory-agent_windows-x86_2.6.exe diff --git a/.gitattributes b/.gitattributes index 5135af0..4ee61b8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ *.exe filter=lfs diff=lfs merge=lfs -text +*.msi filter=lfs diff=lfs merge=lfs -text \ No newline at end of file diff --git a/GLPI-Agent-1.4-x64.msi b/GLPI-Agent-1.4-x64.msi new file mode 100644 index 0000000..31a6c86 --- /dev/null +++ b/GLPI-Agent-1.4-x64.msi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95c3e417bf7fcc7674b033c1abb89e108f7677bc01a2628ec5a00a6bc289a7e5 +size 15056896 diff --git a/GLPI-Agent-1.4-x86.msi b/GLPI-Agent-1.4-x86.msi new file mode 100644 index 0000000..6d73845 --- /dev/null +++ b/GLPI-Agent-1.4-x86.msi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:987c4874eae6291d9adcf50b70509b57fa5df2c205624b1cf0975f8a3e59c02e +size 15024128 diff --git a/WAPT/control b/WAPT/control index 79cf5ff..282365e 100644 --- a/WAPT/control +++ b/WAPT/control @@ -1,24 +1,22 @@ -package : fws-fusioninventory -version : 2.6-2 +package : eht-glpi-agent +version : 1.4-3 architecture : all section : base priority : optional name : categories : -maintainer : Daniel Berteaud -description : FusionInventory is a computer inventory agent +maintainer : Daniel Berteaud +description : GLPI Agent is a computer inventory agent depends : conflicts : maturity : PROD locale : all target_os : windows -min_os_version : 5.0 -max_os_version : min_wapt_version : 1.3.12 sources : installed_size : impacted_process : -description_fr : FusionInventory est un agent d'inventaire d'ordinateurs +description_fr : L'agent GLPI est un agent d'inventaire d'ordinateurs description_pl : description_de : description_es : @@ -30,14 +28,17 @@ audit_schedule : 2d editor : keywords : inventory licence : GPLv2+ -homepage : http://fusioninventory.org/ -package_uuid : 1d2c53d4-ce75-4fb7-9f5c-3c4865f4512a +homepage : http://glpi-project.org/ +package_uuid : 6248be43-0eca-41e8-8669-715b2a11a891 valid_from : valid_until : forced_install_on : changelog : -signer : Daniel Berteaud -signer_fingerprint: 3c9415559e2dedbc4390e3faa2c28d3b67265baa5b35902d2764d9e41c3b3f0a -signature : YUUCx8FJCS3xFabY6/YQll7w2tvKQ98QypnlTskLk2axmoNYpOgdnaqg2ZfDqVd9N0zfnHcPOv3tecF4KormYT4/wrRnV9m6sj5e85eOHaeao2vU+28xROoQnCrG25NI55aecVL1cPc3FMYsT2yh84zJrKedcRHEefglFhSS3aaOrYmDDJOkFPH+DMZAf3PAGc0nqmfhU2NF8Oqj+z2rIfAlUalDGxhzBhaV0Ox3KDVCu22ppL7fBsy2w7mxJqJyS1Rttxk8WouQyZYB7M2uo8GPmR2LiQZhb93vF1K+91wFJmTsB1Rpl7PaDPE3lqAbGzPNkC7kwzGEqPq5DCEzaQ== -signature_date : 2020-11-26T18:38:06.089000 -signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_os_version,max_os_version,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,signer,signer_fingerprint,signature_date,signed_attributes \ No newline at end of file +min_os_version : 5.0 +max_os_version : +icon_sha256sum : fba3af4f79be43de12a5f9438a98831edc7a08c5761e5f216eb9d9ca5d98b3ff +signer : dbd +signer_fingerprint: e9156ec73f1ea6b50f33e0d9f580e8ae56db147100894bb5d2d4648a46f07ed1 +signature : tFm2L6g17bG0buZW6ZeKFk0tJrBbx5R+rPNoxyEip1QTtbaV3ulI3OLyoOZdeK16f+9W4w2hDYNghV4Hd5KnEXL7DpW/JELwaomyoJr2Jq8j4mIKVmEok48rApssOm/iwtPs+kseRtv3Yi6sEHlYg7yqzndIgIWxtQq48GkYwephCsdZEV/RH0uixE1XDf36d6Z4PlxHILZ68o1JOxbCE/rKa6S1kunxnLNsV3eg3YF1ALVj65Wovr3raJsLFOoqRp87a6uxnHViNtIjscR5DlhXGCQqqEpMWcGY6KNBsU86aOG3GqnlcNjvKKvwOgyYNLxZvO4fiNVNXmqR5tLVKg== +signature_date : 2023-03-27T12:54:25.342941 +signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes \ No newline at end of file diff --git a/fusioninventory-agent_windows-x64_2.6.exe b/fusioninventory-agent_windows-x64_2.6.exe deleted file mode 100644 index 93e1beb..0000000 --- a/fusioninventory-agent_windows-x64_2.6.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:26dcef9bb2141febb37eb3087b32dc9e89c36889fd53db024b9663d542846c69 -size 10189784 diff --git a/fusioninventory-agent_windows-x86_2.6.exe b/fusioninventory-agent_windows-x86_2.6.exe deleted file mode 100644 index 9bce7e0..0000000 --- a/fusioninventory-agent_windows-x86_2.6.exe +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86caaccfcc321aa27f5fc830befda790342380f0da43674192b951456e62e2f7 -size 10144216 diff --git a/setup.py b/setup.py index 3d66577..556f623 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ from setuphelpers import * uninstallkey = [] variables = { - 'fusinv_servers': [ 'https://glpi.lan.local/plugins/fusioninventory' ] + 'glpi_inv_servers': [ 'https://glpi.lan.local/front/inventory.php' ] } # Read local variables file if available @@ -12,40 +12,53 @@ if isfile(makepath(programfiles32,'wapt','private','symetric.txt')) and isfile(m print('Reading local encrypted variables file') from cryptography.fernet import Fernet import yaml - f = Fernet(open(makepath(programfiles32,'wapt','private','symetric.txt'),'r').read()) - variables.update(yaml.safe_load(f.decrypt(open(makepath(programfiles32,'wapt','private','variables.txt'),'r').read()))) + f = Fernet(bytes(open(makepath(programfiles32,'wapt','private','symetric.txt'),'r').read(), 'utf-8')) + variables.update(yaml.safe_load(f.decrypt(bytes(open(makepath(programfiles32,'wapt','private','variables.txt'),'r').read(), 'utf-8')))) def install(): - parameters = '/S /acceptlicense /server="%s" /execmode=service /runnow' % (','.join(variables['fusinv_servers'])) - if 'fusinv_user' in variables and 'fusinv_pass' in variables: - parameters = parameters + ' /user="%s" /password="%s"' % (variables['fusinv_user'],variables['fusinv_pass']) + props = { + 'ADDLOCAL': 'feat_AGENT', + 'HTTPD_IP': '127.0.0.1', + 'NO_P2P': '1', + 'RUNNOW': '1' + } + if 'glpi_inv_servers' in variables: + print('Found servers %s in settings' % (','.join(variables['glpi_inv_servers'])) + props['SERVER'] = ','.join(variables['glpi_inv_servers']) - print('Installing FusionInventory Agent') - versionpaquet = control['version'].split('-',1)[0] + if 'glpi_inv_user' in variables and 'glpi_inv_pass' in variables: + print('Found user % in settings' % variables['glpi_inv_user']) + props['USER'] = variables['glpi_inv_user'] + props['PASSWORD'] = variables['glpi_inv_pass'] + + print('Installing GLPI Agent') + version = control['version'].split('-',1)[0] if iswin64(): - install_exe_if_needed("fusioninventory-agent_windows-x64_%s.exe" % versionpaquet,parameters,key='FusionInventory-Agent',min_version=versionpaquet) + msi = 'GLPI-Agent-1.4-x64.msi' else: - install_exe_if_needed("fusioninventory-agent_windows-x86_%s.exe" % versionpaquet,parameters,key='FusionInventory-Agent',min_version=versionpaquet) + msi = 'GLPI-Agent-1.4-x86.msi' + + install_msi_if_needed(msi,min_version=version,properties=props) def update_package(): - print('Updating FusionInventory Agent package') + print('Updating GLPI Agent package') import requests,json - latest = json.loads(requests.get('https://api.github.com/repos/fusioninventory/fusioninventory-agent/releases/latest').text.encode('utf-8')) + latest = json.loads(requests.get('https://api.github.com/repos/glpi-project/glpi-agent/releases/latest').text.encode('utf-8')) version = latest['tag_name'] pe = PackageEntry(); control = pe.load_control_from_wapt('.') bin_found = [] for arch in ['86','64']: for asset in latest['assets']: - if asset['name'] == 'fusioninventory-agent_windows-x%s_%s.exe' % (arch, version) and not isfile('fusioninventory-agent_windows-x%s_%s.exe' % (arch, version)): + if asset['name'] == 'GLPI-Agent-x%s-%s.msi' % (version, arch) and not isfile('GLPI-Agent-x%s-%s.msi' % (version, arch)): url = asset['browser_download_url'] - print('Downloading FusionInventory Agent %s for x%s from %s' % (version,arch,url)) - wget(url,'fusioninventory-agent_windows-x%s_%s.exe' % (arch, version)) + print('Downloading GLPI Agent %s for x%s from %s' % (version, arch ,url)) + wget(url,'GLPI-Agent-x%s-%s.msi' % (version, arch)) bin_found.append(arch) - for file in glob.glob('fusioninventory-agent_windows-%s_*.exe' % arch): - if file != 'fusioninventory-agent_windows-x%s_%s.exe' % (arch, version): + for file in glob.glob('GLPI-Agent-x*-%s.msi' % arch): + if file != 'GLPI-Agent-x%s-%s.msi' % (version, arch): print('Removing %s' % file) remove_file(file) if Version(version) > Version(control['version'].split('-',1)[0]) and '86' in bin_found and '64' in bin_found: @@ -56,25 +69,25 @@ def update_package(): def audit(): - if not registry_readstring(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','FusionInventory-Agent'),'server'): - print(r"key HKEY_LOCAL_MACHINE\SOFTWARE\FusionInventory-Agent\server doesn't exist") + if not registry_readstring(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','GLPI-Agent'),'server'): + print(r"key HKEY_LOCAL_MACHINE\SOFTWARE\GLPI-Agent\server doesn't exist") return "ERROR" - val_server = registry_readstring(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','FusionInventory-Agent'),'server') + val_server = registry_readstring(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','GLPI-Agent'),'server') if val_server != ','.join(variables['fusinv_servers']) : print("server config is not %, it's % instead" % (','.join(variables['fusinv_servers']), val_server) ) return "WARNING" if 'fusinv_user' in variables and 'fusinv_pass' in variables: - if not registry_readstring(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','FusionInventory-Agent'),'user'): - print(r"key HKEY_LOCAL_MACHINE\SOFTWARE\FusionInventory-Agent\user doesn't exist") + if not registry_readstring(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','GLPI-Agent'),'user'): + print(r"key HKEY_LOCAL_MACHINE\SOFTWARE\GLPI-Agent\user doesn't exist") return "ERROR" - val_user = registry_readstring(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','FusionInventory-Agent'),'user') + val_user = registry_readstring(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','GLPI-Agent'),'user') if val_user != variables['fusinv_user'] : print("user config is not %s, it's %s instead" % (variables['fusinv_user'],val_user) ) return "WARNING" - if not registry_readstring(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','FusionInventory-Agent'),'password'): - print(r"key HKEY_LOCAL_MACHINE\SOFTWARE\FusionInventory-Agent\password doesn't exist") + if not registry_readstring(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','GLPI-Agent'),'password'): + print(r"key HKEY_LOCAL_MACHINE\SOFTWARE\GLPI-Agent\password doesn't exist") return "ERROR" - val_pass = registry_readstring(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','FusionInventory-Agent'),'password') + val_pass = registry_readstring(HKEY_LOCAL_MACHINE,makepath('SOFTWARE','GLPI-Agent'),'password') if val_pass != variables['fusinv_pass'] : print("password doesn't match what's set") return "WARNING"