Merci de votre intérêt pour contribuer à oldsite-scanner!
config.py: Configuration globale (timeouts, concurrence, seuils)db.py: Couche d'accès à la base de données SQLite avec aiosqlitescan_ch_sites.py: Scanner asynchrone avec système de scoringapi.py: API REST FastAPI avec endpoints pour consulter les résultats
index.html: Interface web moderne en HTML/CSS/JavaScript vanilla- Utilise l'API REST pour afficher les résultats
- Design responsive avec modal pour les détails
deployment/: Fichiers de configuration systemd, Nginx, scripts d'installation
- Python 3.8+
- pip
- Git
# Cloner le projet
git clone https://github.com/VOTRECOMPTE/oldsite-scanner.git
cd oldsite-scanner
# Créer l'environnement virtuel
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Installer les dépendances
pip install -r backend/requirements.txt
# Installer les outils de développement
pip install black flake8 pytest pytest-asyncio# Utiliser le script de test
chmod +x test_local.sh
./test_local.sh
# Ou manuellement
python -m backend.scan_ch_sites --generate-sample
python -m backend.scan_ch_sites --limit 5
python -m backend.api- Suivre PEP 8
- Utiliser
blackpour le formatage:black backend/
- Vérifier avec
flake8:flake8 backend/ --max-line-length=100
- Docstrings pour toutes les fonctions publiques
- Type hints recommandés
- Utiliser
constetlet, pasvar - Noms de variables en camelCase
- Fonctions async/await pour les appels API
- Commentaires pour la logique complexe
Format des messages de commit:
type(scope): description courte
Description détaillée si nécessaire
Types:
feat: Nouvelle fonctionnalitéfix: Correction de bugdocs: Documentationstyle: Formatage, pas de changement de coderefactor: Refactoringtest: Ajout de testschore: Maintenance
Exemples:
feat(scanner): ajout détection WordPress ancien
fix(api): correction timeout sur /api/stats
docs(readme): mise à jour instructions déploiement
Ouvrir une issue avec:
- Description claire du problème
- Étapes pour reproduire
- Comportement attendu vs observé
- Version de Python, OS
- Logs pertinents
Ouvrir une issue avec:
- Description de la fonctionnalité
- Cas d'usage
- Proposition d'implémentation (optionnel)
- Fork le projet
- Créer une branche pour votre fonctionnalité:
git checkout -b feat/ma-fonctionnalite
- Développer votre fonctionnalité
- Tester localement:
./test_local.sh
- Commiter vos changements:
git commit -m "feat(scanner): ajout détection Joomla" - Pousser vers votre fork:
git push origin feat/ma-fonctionnalite
- Ouvrir une Pull Request sur GitHub
- Le code suit les conventions du projet
- Les tests passent localement
- La documentation est à jour
- Le commit message suit le format
- Pas de fichiers inutiles (
.pyc,.db, etc.)
# Scanner quelques domaines
python -m backend.scan_ch_sites --limit 5
# Vérifier l'API
python -m backend.api &
curl http://127.0.0.1:8000/api/stats
curl http://127.0.0.1:8000/api/scans?limit=10pytest tests/- Ajout de nouveaux critères de détection (CMS, frameworks, etc.)
- Export des résultats en CSV/JSON
- Graphiques et statistiques avancées
- Système de notifications (email, Slack, etc.)
- API pour déclencher des scans à la demande
- Support de plusieurs pays (pas seulement .ch)
- Détection de technologies modernes (React, Vue, etc.)
- Historique des scans pour suivre l'évolution
- Tests unitaires et d'intégration
- CI/CD avec GitHub Actions
- Support Docker
- Optimisation des performances
- Cache pour les résultats
- Rate limiting sur l'API
- Pagination améliorée
- Tutoriels vidéo
- Exemples d'utilisation avancée
- Guide de troubleshooting
- Documentation API (OpenAPI/Swagger)
- Filtres avancés (par date, par critère, etc.)
- Graphiques interactifs
- Dark mode
- Recherche en temps réel
- Export des résultats
- Comparaison de scans
| Colonne | Type | Description |
|---|---|---|
| id | INTEGER | Clé primaire |
| domain | TEXT | Nom de domaine (unique) |
| created_at | INTEGER | Timestamp de création |
| Colonne | Type | Description |
|---|---|---|
| id | INTEGER | Clé primaire |
| domain_id | INTEGER | Référence vers domains.id |
| scan_time | INTEGER | Timestamp du scan |
| http_code | INTEGER | Code HTTP retourné |
| headers | TEXT | Headers HTTP complets |
| sample_head | TEXT | Échantillon du HTML |
| score | INTEGER | Score d'obsolescence |
| reasons | TEXT | Raisons de la détection |
| latency_ms | INTEGER | Latence en millisecondes |
Pour toute question:
- Ouvrir une issue sur GitHub
- Email: contact@votredomaine.ch
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Merci de contribuer à oldsite-scanner! 🎉