Files
pyssh-client/PySSHClient.spec
snoopy b977842186 Client SSH/SFTP personnel pour Windows
Reunit en un seul outil les fonctions utiles de MobaXterm, Termius et Bitvise,
sans compte ni service tiers, avec toutes les donnees en local.

- Terminaux multi-onglets : sessions SSH et terminaux Windows locaux
  (PowerShell / cmd) via la pseudo-console native ConPTY
- Gestionnaire de fichiers SFTP facon WinSCP : double panneau, colonnes
  triables, glisser-deposer, renommage, permissions, file de transferts.
  Ouvrable sur une connexion en cours sans creer de favori
- Gestion des cles SSH : generation Ed25519/RSA, import, export
- Gestion du fichier known_hosts, avec remplacement guide d'une cle d'hote
  modifiee (cas frequent des serveurs en DHCP)
- Trois themes (clair, bleu nuit, noir), commutables a chaud
- Authentification automatique reprenant le comportement de la commande ssh
  (agent SSH et cles ~/.ssh), mot de passe demande seulement en secours

Aucun mot de passe n'est stocke sur le disque.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 06:50:10 +02:00

66 lines
1.8 KiB
Python

# -*- mode: python ; coding: utf-8 -*-
"""Recette PyInstaller : construit un dossier portable dans dist/PySSH Client/.
Choix "onedir" (dossier) plutot que "onefile" : avec PySide6, un executable unique
doit decompresser ~200 Mo a chaque lancement, ce qui ajoute plusieurs secondes
d'attente a chaque demarrage. Le dossier demarre instantanement et se copie tout
aussi bien sur une cle USB.
"""
block_cipher = None
a = Analysis(
["main.py"],
pathex=[],
binaries=[],
# la feuille de style est lue au runtime : elle doit voyager avec l'application
datas=[("resources/theme.qss", "resources")],
hiddenimports=["winpty"],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
# modules inutiles ici : les exclure allege sensiblement le resultat
excludes=[
"tkinter", "PySide6.QtQml", "PySide6.QtQuick", "PySide6.QtQuick3D",
"PySide6.QtWebEngineCore", "PySide6.QtWebEngineWidgets", "PySide6.Qt3DCore",
"PySide6.QtMultimedia", "PySide6.QtCharts", "PySide6.QtDataVisualization",
"PySide6.QtBluetooth", "PySide6.QtPositioning", "PySide6.QtSensors",
],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name="PySSH Client",
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
console=False, # application graphique : pas de fenetre de console
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon="resources/app.ico",
)
coll = COLLECT(
exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=False,
upx_exclude=[],
name="PySSH Client",
)