# Partage Facile

Un petit programme pour partager les dossiers de ton ordinateur avec d'autres
personnes, à travers leur navigateur (ordinateur, téléphone, tablette).
Un seul fichier, rien à installer : il marche sur Windows 10 et 11.

## Démarrer

1. Mets `PartageFacile.exe` dans un dossier à lui (ex : `C:\PartageFacile`).
   Il y créera ses réglages (`partage-config.json`) et son journal (`journal.txt`).
2. Double-clique dessus. Il s'ouvre dans sa propre fenêtre (si Edge ou Chrome est présent, sinon dans ton navigateur).
3. La première fois, crée ton compte administrateur.
4. Dans **Administration → Dossiers partagés**, clique sur **Ajouter des dossiers**,
   coche tous ceux que tu veux, choisis qui peut voir, envoyer ou supprimer, puis **Enregistrer**.

Le programme se range ensuite **près de l'horloge de Windows** (icône bleue avec un dossier). Clique dessus pour rouvrir la page. Clic droit pour le menu : copier une adresse, **démarrer avec Windows**, ouvrir le dossier du programme, ou **quitter** (ce qui arrête le partage).

> Windows peut afficher deux messages la première fois :
> - « Windows a protégé votre ordinateur » : clique sur *Informations complémentaires* → *Exécuter quand même*
>   (normal pour un programme qui n'est pas signé).
> - Le pare-feu demande l'autorisation : coche **Réseaux privés** pour que les autres puissent se connecter.

## Ce que ça fait

- Parcourir les dossiers, trier, filtrer, chercher (même dans les sous-dossiers, sans tenir compte des accents)
- Regarder les vidéos, écouter la musique, voir les images, les PDF et les fichiers texte directement dans la page
- Lire presque tous les formats (MKV, AVI, WMV, FLV, MPG, WMA, AC3…) : dans *Administration → Réglages*,
  clique sur **Installer ffmpeg automatiquement**. Le programme convertit alors en direct ce que le navigateur
  ne sait pas lire (il recopie l'image sans la recalculer quand c'est possible, c'est alors très léger)
- Le lecteur : choix de la langue et des sous-titres (ceux du fichier, ou un `.srt`/`.vtt` à côté et commençant par le même nom),
  reprise là où tu t'étais arrêté (fichiers de plus de 10 minutes), vitesse, plein écran, image dans l'image.
  Pour la musique : pochette, liste des morceaux, lecture aléatoire et répétition.
  Au clavier : espace (pause), ← → (5 s), J L (10 s), ↑ ↓ (volume), M (muet), F (plein écran), N P (suivant, précédent), 0 à 9 (aller à 0 %, 10 %…)
- Télécharger un fichier, ou un dossier entier en `.zip`
- Envoyer des fichiers (bouton ou glisser-déposer), créer des dossiers
- Supprimer : les fichiers vont dans la **corbeille** de Windows, on peut donc les récupérer
- Comptes avec mot de passe, et pour chaque dossier : qui peut voir, envoyer, supprimer
- Ranger les dossiers par catégorie sur la page d'accueil (Films, Musique…)
- Protection contre ceux qui essaient de deviner les mots de passe
- Un onglet **Activité** : chaque adresse IP qui se connecte, avec son pays, sa ville, son fournisseur, son type de connexion (maison, centre de données, VPN), les pages demandées, les mots de passe essayés, et une détection des robots. Tout est gardé dans `activite.json`. Les robots sûrs sont **bloqués automatiquement** (jamais ton réseau, ni une adresse qui s'est déjà connectée à un compte) ; ça se désactive dans l'onglet, et **Débloquer** est définitif pour cette adresse. Le pays est trouvé grâce au service gratuit ip-api.com (qui reçoit seulement l'adresse IP) : ça se désactive dans l'onglet.
- Marche aussi sur téléphone
- Une **messagerie** avec emoji, images et GIF (bouton 💬 en haut). Les personnes sans compte écrivent avec un
  pseudo, marqué « invité ». L'administrateur choisit qui peut lire et écrire, et peut supprimer les messages.
  Plus de 1 500 emoji et 600 GIF animés sont rangés dans le programme, avec une recherche en français,
  anglais et espagnol : ils marchent tout de suite, sans Internet ni clé (animations Noto Emoji de Google,
  licence CC BY 4.0 ; refaites avec `ressources\creer-gifs.ps1`). Pour chercher en plus parmi les millions de
  GIF de Giphy, colle une clé Giphy gratuite dans *Administration → Réglages → Messagerie*. Les messages sont gardés dans
  `messagerie.json` et les images dans le dossier `messagerie-images`.
- En français, anglais ou espagnol (menu en haut de la page), en clair, en sombre ou automatique (bouton 🌓)

## Les droits

Pour chaque dossier partagé, il y a trois questions : qui peut **voir et télécharger**,
qui peut **envoyer**, qui peut **supprimer**. Les réponses possibles :

| Choix | Veut dire |
|---|---|
| Tout le monde | n'importe qui, même sans compte |
| Les gens connectés | toute personne qui a un compte |
| Personne (sauf admin) | seulement les administrateurs |
| Seulement certains comptes | ceux que tu coches |

Un administrateur peut toujours tout faire.

## Donner l'adresse aux autres

- **Même réseau (même Wi-Fi)** : l'adresse est dans le menu de l'icône près de l'horloge (Copier une adresse) et dans
  *Administration → Internet* (ex : `http://192.168.0.12:8080`).
- **Par Internet** : dans *Administration → Internet*, coche **Accessible par Internet**.
  Le programme ouvre lui-même le port sur ton routeur (UPnP) et affiche l'adresse à donner,
  par exemple `http://203.0.113.5:8080`. Il le refait à chaque démarrage.
  Si ton routeur refuse, fais une *redirection de port* à la main dans ses réglages :
  le port du programme (TCP) vers l'adresse locale de ton ordinateur.
  Un service comme No-IP peut te donner une adresse fixe facile à retenir
  (`http://monnom.ddns.net:8080`).
  Pour vérifier, essaie l'adresse sur ton téléphone avec le Wi-Fi coupé.

- **Connexion chiffrée (https)** : dans *Administration → Internet*, une fois ton nom indiqué, accepte les conditions de
  Let's Encrypt et clique sur **Activer le https**. Le certificat est gratuit et se renouvelle tout seul.
  Le port 80 s'ouvre sur ton routeur le temps de la vérification, puis se referme. Si ton fournisseur Internet le bloque,
  ou si ton routeur refuse, le certificat ne peut pas être obtenu et le programme reste en http.
  Une fois le certificat prêt, le programme ouvre aussi le port 443 : `https://monnom.ddns.net` marche sans le port, et
  l'adresse avec le port reste bonne. Si un autre logiciel utilise déjà ce port sur ton routeur, sa règle n'est pas touchée.
  Quand tu décoches **Accessible par Internet**, les deux ports se referment.

> Sans le https, la connexion n'est pas chiffrée. Sur Internet, mets des mots de passe
> différents de ceux de tes autres comptes, et ne partage pas de documents sensibles.

## Bon à savoir

- **Nouvelle version** : le programme regarde sur partage-facile.logicsielsyannick.ca au démarrage, puis toutes les
  5 minutes. S'il y a mieux, le bouton de l'*Administration* devient **Mise à jour disponible**. Rien ne
  s'installe sans ton clic. Quand tu cliques, il télécharge la nouvelle version, vérifie son empreinte, la met
  à la place de l'ancienne et redémarre tout seul. Tes réglages et tes comptes sont gardés.
  (Le programme doit être dans un dossier où il a le droit d'écrire, ex : `C:\PartageFacile`.)
- Les fichiers ne sont jamais copiés : le programme lit directement tes dossiers.
- Les fichiers cachés et les dossiers système de Windows ne sont pas montrés.
- Après un redémarrage ou une mise à jour du programme, chacun reste connecté.
- Si le port 8080 est déjà pris par un autre logiciel, le programme prend tout seul le
  suivant (8081, 8082…) et le garde pour les fois suivantes.
- Pour changer de port : *Administration → Internet*, puis redémarre le programme.
- Mot de passe admin oublié : ferme le programme, supprime `partage-config.json`
  et relance-le (il faudra tout reconfigurer).

## Pour les curieux : le code

Tout le code est dans ce dossier, écrit en français pour être facile à lire.

| Fichier | Rôle |
|---|---|
| `src/Program.cs` | Démarrage : lit la configuration, lance le serveur, ouvre le navigateur |
| `src/Http/` | Le petit serveur web (lire les demandes du navigateur, envoyer les réponses) |
| `src/Application.cs` | L'aiguillage : quelle adresse fait quoi, connexion |
| `src/ApplicationFichiers.cs` | Parcourir, chercher, télécharger, envoyer, supprimer |
| `src/ApplicationAdmin.cs` | Le panneau d'administration |
| `src/Config.cs` | Les réglages, les comptes et les droits |
| `src/Securite.cs` | Mots de passe, sessions, protection anti-devinette |
| `src/Outils.cs` | Journal, adresses réseau, corbeille, types de fichiers |
| `src/MiseAJour.cs` | Le bouton « Mise à jour » : lit `version.json` sur le site, télécharge, vérifie, remplace, redémarre |
| `web/` | La page web : `index.html`, `app.js` (le fonctionnement), `style.css` (l'apparence), `langues.js` (traductions et thème) |

Pour refabriquer `dist\PartageFacile.exe` après une modification : double-clique sur
`compiler.bat`. Il utilise le compilateur C# déjà présent dans Windows.
Il refait aussi `site-netlify\telechargements\PartageFacile.zip` et `site-netlify\version.json`
(la version vient de `src\Version.cs`, les nouveautés de `ressources\nouveautes.txt`) :
c'est ce fichier que lit le bouton « Mise à jour » des programmes déjà installés.
