Suggerimento per notepad-plus-plus

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Bloccato
elelay
Messaggi: 27
Registrazione: 20 ott 2020 - 12:39

8 luglio 2021 - 22:55

Buongiorno,

Vorrei proporre un'aggiunta al pacchetto notepad-plus-plus, in particolare alla funzione update_package.
Guardando il Notepad github, ho notato che fornivano gli hash dei file.
Perché non fare questo controllo aggiuntivo?

Per raggiungere questo obiettivo, propongo due pezzi di codice piuttosto semplici:

Codice: Seleziona tutto

import hashlib

# Obtention du hash du fichier fournit sur le Github
github_url = 'https://github.com/notepad-plus-plus/notepad-plus-plus/releases'
github_page = wgets(github_url)
checksum_regex = re.compile(r'([a-f0-9]{64})  ' + filenamex64)
checksum = checksum_regex.findall(github_page)[0]

# Obtention du hash calculé du fichier téléchargé
sha256_hash = hashlib.sha256()
    with open(filenamex64, 'rb') as f:  
        for byte_block in iter(lambda: f.read(4096),b''):
            sha256_hash.update(byte_block)
        print(sha256_hash.hexdigest())
    if sha256_hash != checksum:
        print(f'Integrity check failed. The file may have been corrupted or an error occured while downloading.')
Vorrei anche suggerire di utilizzare la libreria pkg_resources per il controllo della versione, poiché ho notato che venivano confrontati solo i nomi dei file.

Esempio utilizzando notepadplus:

Codice: Seleziona tutto

from pkg_resources import parse_version

url = 'https://api.github.com/repos/notepad-plus-plus/notepad-plus-plus/releases/latest'
    data = json.loads(wgets(url, proxies=proxies))
    assets = data['assets']
    filenamex64, url64 = [(str(p['name']), str(p['browser_download_url'])) for p in assets if 'Installer.x64.exe' in p['name']][0]

package_version = control.get_software_version()
latest_version = filenamex64.split('npp.',)[1].split('.Installer.x64.exe')[0]

for fileexe in glob.glob('npp.*.Installer.x64.exe'):
	if parse_version(package_version) < parse_version(latest_version)
	print('Delete ' + 
	remove_file(fileexe)
[...]
Lungi dall'essere un esperto di Python, vi ringrazio per la qualità dei pacchetti forniti; mi permettono davvero di migliorare :D

Sinceramente,

Stefano
Versione del server WAPT: 2.0 Enterprise
Console installata su un
server Windows Server 2019 Debian 10 Buster
Bloccato