You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Splunk_Deploiement/apps/pusher_app_prem
Splunk Git Pusher 89424bd286
Update Readme
3 months ago
..
appserver/static Fix Reset boutton 3 months ago
bin HTTPS_enable + mask edit,title... 3 months ago
certs Git_pusher with file licence 3 months ago
default Git_pusher with file licence 3 months ago
local Update Readme 3 months ago
metadata HTTPS_enable + mask edit,title... 3 months ago
README.md Update Readme 3 months ago

README.md

🚀 Git Pusher for Splunk

Version 2.0 | Application Splunk pour déployer vos applications vers Git


📋 Table des matiùres


🎯 PrĂ©sentation

Git Pusher est une application Splunk Enterprise qui permet de versionner et déployer vos applications Splunk vers un repository Git en quelques clics.

Idéal pour :

  • 📩 Sauvegarder vos configurations Splunk
  • 🔄 Versionner vos dashboards et applications
  • đŸ‘„ Collaborer en Ă©quipe sur les dĂ©veloppements Splunk
  • 🚀 Mettre en place un workflow CI/CD pour Splunk

✹ FonctionnalitĂ©s

Fonctionnalité Description
Push vers Git Déployez une ou plusieurs applications Splunk vers votre repository Git
Interface moderne Dashboard intuitif avec sélection visuelle des applications
Multi-repository Support de GitHub, GitLab, Gitea, Bitbucket et tout serveur Git
Support HTTPS Communication sécurisée avec certificats SSL
SystÚme de licence Gestion par fichier .lic sécurisé
Credentials sécurisés Chiffrement des mots de passe Splunk
Logs détaillés Traçabilité complÚte des opérations

🏗 Architecture

pusher_app_prem/
├── bin/
│   ├── git_pusher.py           # Serveur HTTP/HTTPS principal (port 9999)
│   ├── license_validator.py    # Validation des licences
│   ├── license_generator.py    # GĂ©nĂ©ration des licences (vendeur)
│   ├── credentials_manager.py  # Gestion sĂ©curisĂ©e des credentials
│   └── start_git_pusher.sh     # Script de dĂ©marrage
├── appserver/static/
│   ├── git_pusher.js           # Logique JavaScript principale
│   └── license_validation.js   # Interface de gestion des licences
├── default/data/ui/views/
│   └── git_pusher_-_deploy_applications.xml  # Dashboard principal
├── local/
│   ├── license.lic             # Fichier de licence (aprùs activation)
│   ├── .credentials            # Credentials chiffrĂ©s
│   ├── .key                    # ClĂ© de chiffrement
│   └── certs/                  # Certificats SSL
│       ├── server.crt
│       └── server.key
└── README.md

Flux de données

┌─────────────────┐     ┌────────────────────┐     ┌─────────────┐
│     Splunk      │────▶│    Git Pusher      │────▶│  Git Repo   │
│    Dashboard    │     │  Server:9999       │     │  (Remote)   │
│    (HTTPS)      │     │  (HTTP/HTTPS)      │     │             │
└─────────────────┘     └────────────────────┘     └─────────────┘
                               │
                        ┌──────┮──────┐
                        │ /opt/splunk/etc/apps/ │
                        │ (Applications locales)│
                        └─────────────────────┘

đŸ“„ Installation

Prérequis

  • Splunk Enterprise 8.x ou supĂ©rieur
  • Python 3.7+
  • Git installĂ© sur le serveur (yum install git ou apt install git)
  • OpenSSL (pour la gĂ©nĂ©ration des certificats HTTPS)
  • AccĂšs rĂ©seau vers votre repository Git

Étapes d'installation

1. Extraire l'application

# Copier l'application dans Splunk
cp -r pusher_app_prem /opt/splunk/etc/apps/

# Définir les permissions
chown -R splunk:splunk /opt/splunk/etc/apps/pusher_app_prem
chmod +x /opt/splunk/etc/apps/pusher_app_prem/bin/*.sh

2. Configurer les credentials Splunk

cd /opt/splunk/etc/apps/pusher_app_prem/bin/
./start_git_pusher.sh credentials setup
==================================================
Git Pusher - Credentials Setup
==================================================

Splunk Username [admin]: admin
Splunk Password: ********
Confirm Password: ********

✓ Credentials saved securely!

3. Configurer HTTPS (si Splunk est en HTTPS)

Voir la section Configuration HTTPS.

4. Démarrer le serveur Git Pusher

./start_git_pusher.sh start

5. Ouvrir le firewall (si nécessaire)

# FirewallD
sudo firewall-cmd --add-port=9999/tcp --permanent
sudo firewall-cmd --reload

# UFW
sudo ufw allow 9999/tcp

6. Redémarrer Splunk

/opt/splunk/bin/splunk restart

7. Accéder au dashboard

Ouvrez votre navigateur et allez sur :

http://VOTRE_IP_SPLUNK:8000/app/pusher_app_prem/git_pusher_-_deploy_applications

Ou en HTTPS :

https://VOTRE_IP_SPLUNK:8000/app/pusher_app_prem/git_pusher_-_deploy_applications

⚙ Configuration

Commandes du script de gestion

# Démarrer le serveur
./start_git_pusher.sh start

# ArrĂȘter le serveur
./start_git_pusher.sh stop

# Redémarrer le serveur
./start_git_pusher.sh restart

# Voir le statut
./start_git_pusher.sh status

# Voir les logs
./start_git_pusher.sh logs
./start_git_pusher.sh logs -f  # Mode follow

# Gestion des credentials
./start_git_pusher.sh credentials setup
./start_git_pusher.sh credentials status
./start_git_pusher.sh credentials delete

Variables d'environnement (optionnel)

Si vous préférez ne pas utiliser le credentials manager :

export SPLUNK_USERNAME=admin
export SPLUNK_PASSWORD=your_password
export SPLUNK_HOME=/opt/splunk

Fichiers de configuration

Fichier Description
local/license.lic Fichier de licence
local/.credentials Credentials Splunk chiffrés
local/.key Clé de chiffrement (générée automatiquement)
local/certs/server.crt Certificat SSL
local/certs/server.key Clé privée SSL

🔒 Configuration HTTPS

Si votre Splunk est configurĂ© en HTTPS, le serveur Git Pusher doit Ă©galement ĂȘtre en HTTPS pour Ă©viter les erreurs "Mixed Content" du navigateur.

1. Générer les certificats SSL

# Créer le dossier des certificats
mkdir -p /opt/splunk/etc/apps/pusher_app_prem/local/certs

# Générer un certificat auto-signé (valide 365 jours)
openssl req -x509 -newkey rsa:4096 \
  -keyout /opt/splunk/etc/apps/pusher_app_prem/local/certs/server.key \
  -out /opt/splunk/etc/apps/pusher_app_prem/local/certs/server.crt \
  -days 365 -nodes -subj "/CN=git-pusher"

# Définir les permissions
chmod 600 /opt/splunk/etc/apps/pusher_app_prem/local/certs/server.key
chown -R splunk:splunk /opt/splunk/etc/apps/pusher_app_prem/local/certs/

2. Redémarrer le serveur

./start_git_pusher.sh restart

3. Vérifier que HTTPS fonctionne

curl -k https://127.0.0.1:9999/health

Vous devriez voir :

{"status": "ok", "service": "git_pusher", "timestamp": "..."}

4. Accepter le certificat dans le navigateur

Comme le certificat est auto-signé, le navigateur ne lui fait pas confiance par défaut.

  1. Ouvrez un nouvel onglet
  2. Allez sur : https://VOTRE_IP_SPLUNK:9999/health
  3. Cliquez sur "Avancé" puis "Accepter le risque et continuer"
  4. Retournez sur le dashboard Splunk et rafraĂźchissez (Ctrl+Shift+R)

5. (Optionnel) Désactiver HTTPS

Si vous souhaitez forcer le mode HTTP :

cd /opt/splunk/etc/apps/pusher_app_prem/bin/
python3 git_pusher.py --no-ssl

Vérification dans les logs

tail -20 /opt/splunk/var/log/splunk/git_pusher.log

Vous devriez voir :

SSL enabled using: /opt/splunk/etc/apps/pusher_app_prem/local/certs/server.crt
Git Pusher server listening on 0.0.0.0:9999 (HTTPS)

🔐 Systùme de Licence

Git Pusher utilise un systÚme de licence par fichier .lic pour activer les fonctionnalités.

Types de licences

Type Durée Apps max Pushes/jour Fonctionnalités
Trial 14 jours 3 5 Push basique
Starter 1 an 10 50 + Push programmé
Professional 1 an Illimité Illimité + Multi-repo, Support prioritaire
Enterprise 1 an Illimité Illimité + Branding personnalisé, API

Obtenir une licence

  1. Récupérer votre hostname Splunk

    • Visible dans le dashboard Git Pusher lors de l'activation
    • Ou via la commande : hostname
  2. Contacter le support avec :

    • Votre hostname Splunk
    • Votre email
    • Le type de licence souhaitĂ©
  3. Recevoir votre fichier .lic

  4. Activer la licence

    • Ouvrir le dashboard Git Pusher
    • Glisser-dĂ©poser le fichier .lic
    • Cliquer sur "Activer"

Structure du fichier de licence

# =============================================
# Git Pusher License File
# =============================================
# Customer: Acme Corp
# Email: admin@acme.com
# Type: Professional
# Hostname: splunk-prod-01
# Expires: 2026-01-30
# License ID: A1B2C3D4E5F6
# =============================================
# DO NOT MODIFY THIS FILE
# =============================================

eyJsaWNlbnNlIjogey4uLn0sICJzaWduYXR1cmUiOiAiLi4uIn0=

# =============================================
# END OF LICENSE
# =============================================

Génération de licences (Vendeur uniquement)

# Mode interactif
python3 license_generator.py

# Mode rapide
python3 license_generator.py quick "Client Name" "email@client.com" "hostname" "professional"

# Valider une licence
python3 license_generator.py validate

📖 Utilisation

Pousser des applications vers Git

  1. Ouvrir le dashboard Git Pusher

  2. Configurer Git

    • Repository URL : https://github.com/user/repo.git ou https://gitlab.com/user/repo.git
    • Branch : main, master, ou votre branche
    • Token : Personal Access Token avec droits write
  3. Sélectionner les applications

    • Cocher les applications Ă  dĂ©ployer
    • Utiliser "Select All" pour tout sĂ©lectionner
  4. Écrire le message de commit

    • DĂ©crivez les changements effectuĂ©s
  5. Cliquer sur "Deploy to Git"

Obtenir un token Git

GitHub

  1. Settings → Developer settings → Personal access tokens → Tokens (classic)
  2. Generate new token
  3. Cocher : repo (Full control)

GitLab

  1. Preferences → Access Tokens
  2. Create personal access token
  3. Scopes : write_repository

Gitea

  1. Settings → Applications → Generate New Token
  2. Permissions : repository: write

🔒 SĂ©curitĂ©

Credentials Splunk

Les credentials Splunk sont :

  • ChiffrĂ©s avec une clĂ© dĂ©rivĂ©e de l'ID machine
  • StockĂ©s dans un fichier avec permissions 600
  • Jamais visibles en clair dans les logs ou scripts
# Les credentials sont stockés ici (chiffrés)
/opt/splunk/etc/apps/pusher_app_prem/local/.credentials

# La clé de chiffrement (unique par machine)
/opt/splunk/etc/apps/pusher_app_prem/local/.key

Communication HTTPS

  • Le serveur Git Pusher supporte HTTPS avec certificats SSL
  • Les certificats auto-signĂ©s sont supportĂ©s
  • Communication chiffrĂ©e entre le navigateur et le serveur

Token Git

  • Le token Git n'est jamais stockĂ© sur le serveur
  • Il est transmis uniquement lors de l'opĂ©ration de push
  • Option "Save credentials" stocke en localStorage du navigateur (encodĂ©)

Licence

  • Signature HMAC-SHA256 anti-falsification
  • Binding au hostname Splunk
  • VĂ©rification de l'expiration

Recommandations

  1. ✅ Utiliser HTTPS pour Splunk et Git Pusher
  2. ✅ Utiliser des tokens Git avec permissions minimales
  3. ✅ Renouveler les tokens rĂ©guliĂšrement
  4. ✅ Utiliser HTTPS pour les repositories Git
  5. ✅ Restreindre l'accùs au dashboard aux administrateurs

🎹 Personnalisation du Dashboard

Masquer les boutons d'édition

Pour empĂȘcher la modification du dashboard par les utilisateurs, Ă©ditez le fichier XML :

nano /opt/splunk/etc/apps/pusher_app_prem/default/data/ui/views/git_pusher_-_deploy_applications.xml

Modifiez la premiĂšre ligne :

<dashboard version="1.1" script="license_validation.js, git_pusher.js" hideEdit="true" hideExport="true">

Options disponibles

Attribut Description
hideEdit="true" Masque le bouton "Modifier"
hideExport="true" Masque le bouton "Exporter"
hideTitle="true" Masque le titre du dashboard
hideSplunkBar="true" Masque la barre Splunk en haut
hideAppBar="true" Masque la barre de l'application
hideFooter="true" Masque le footer

Appliquer les changements

rm -rf /opt/splunk/var/run/splunk/appserver/*
/opt/splunk/bin/splunk restart

🔧 DĂ©pannage

Le serveur ne démarre pas

# Vérifier les logs
tail -f /opt/splunk/var/log/splunk/git_pusher.log

# Vérifier si le port est utilisé
ss -tlnp | grep 9999

# Vérifier les permissions
ls -la /opt/splunk/etc/apps/pusher_app_prem/bin/

Erreur "Connexion refusée"

# Vérifier que le serveur tourne
ps aux | grep git_pusher

# Vérifier le firewall
sudo firewall-cmd --list-ports

# Ouvrir le port
sudo firewall-cmd --add-port=9999/tcp --permanent
sudo firewall-cmd --reload

Erreur CORS

Les fichiers JavaScript doivent utiliser l'adresse IP du serveur automatiquement.

Vérifier :

head -10 /opt/splunk/etc/apps/pusher_app_prem/appserver/static/license_validation.js

Doit contenir :

const LICENSE_API_URL = window.location.protocol + '//' + window.location.hostname + ':9999';

Erreur CORS avec HTTPS

Si vous voyez une erreur CORS avec HTTPS et un certificat auto-signé :

  1. Ouvrez https://VOTRE_IP:9999/health dans un nouvel onglet
  2. Acceptez le certificat
  3. Retournez sur Splunk et rafraĂźchissez

Erreur SSL "wrong version number"

Le serveur n'a pas activé SSL. Vérifiez :

# Les certificats existent-ils ?
ls -la /opt/splunk/etc/apps/pusher_app_prem/local/certs/

# Les logs montrent-ils SSL enabled ?
grep -i ssl /opt/splunk/var/log/splunk/git_pusher.log

Si les certificats n'existent pas, créez-les (voir section HTTPS).

Les applications ne sont pas poussées

# Vérifier les logs
tail -50 /opt/splunk/var/log/splunk/git_pusher.log

# Tester manuellement
curl -k https://localhost:9999/health

Erreur de licence

# Vérifier le hostname
hostname

# Vérifier la licence
python3 /opt/splunk/etc/apps/pusher_app_prem/bin/license_validator.py status

Les boutons ne fonctionnent pas

Vérifiez la console du navigateur (F12). Si les fonctions ne sont pas définies, videz le cache :

rm -rf /opt/splunk/var/run/splunk/appserver/*
/opt/splunk/bin/splunk restart

Puis dans le navigateur : Ctrl+Shift+R

Vider le cache Splunk

rm -rf /opt/splunk/var/run/splunk/appserver/*
/opt/splunk/bin/splunk restart

📡 API Reference

Endpoints

Méthode Endpoint Description
GET /health Health check
GET /license Statut de la licence
GET /license/hostname Hostname Splunk
POST /license/upload Uploader une licence
POST /push Pousser les applications

Exemple : Health Check

curl -k https://localhost:9999/health
{
  "status": "ok",
  "service": "git_pusher",
  "timestamp": "2026-01-31T12:00:00.000000"
}

Exemple : Statut de licence

curl -k https://localhost:9999/license
{
  "status": "valid",
  "hostname": "splunk-server",
  "license": {
    "license_id": "A1B2C3D4E5F6",
    "type": "professional",
    "type_name": "Professional",
    "expires": "2027-01-30",
    "days_remaining": 365
  }
}

Exemple : Push

curl -k -X POST "https://localhost:9999/push?git_url=https://github.com/user/repo.git&git_branch=main&git_token=TOKEN&commit_message=Update&apps=[{\"id\":\"my_app\"}]&user=admin"
{
  "status": "success",
  "message": "Successfully pushed 1 application(s) to Git",
  "apps_pushed": 1,
  "license_type": "Professional"
}

📝 Changelog

Version 2.0.0 (Février 2026)

  • ✹ Nouveau systĂšme de licence par fichier .lic
  • 🔐 Credentials Splunk chiffrĂ©s
  • 🔒 Support HTTPS avec certificats SSL
  • 🎹 Interface utilisateur modernisĂ©e
  • 📊 Badge de licence en temps rĂ©el
  • 🔧 Script de gestion amĂ©liorĂ©
  • đŸ›Ąïž Options pour masquer les boutons d'Ă©dition du dashboard
  • 📝 Logs dĂ©taillĂ©s
  • 🐛 Correction des problĂšmes CORS

Version 1.0.0

  • 🚀 Version initiale
  • Push d'applications vers Git
  • Interface basique

📞 Support

Obtenir de l'aide

Signaler un bug

Incluez dans votre rapport :

  1. Version de Git Pusher
  2. Version de Splunk
  3. Configuration (HTTP/HTTPS)
  4. Logs (/opt/splunk/var/log/splunk/git_pusher.log)
  5. Erreurs de la console navigateur (F12)
  6. Étapes pour reproduire le problùme

📄 Licence

Git Pusher est un logiciel propriétaire. Une licence valide est requise pour son utilisation.

© 2026 Git Pusher - Tous droits réservés


Made with ❀ for Splunk administrators