align docker images
All checks were successful
build-and-push-ext / build_push (push) Successful in 1m27s
All checks were successful
build-and-push-ext / build_push (push) Successful in 1m27s
This commit is contained in:
parent
df2334f25b
commit
73f3dec22c
67
.cursorrules copy
Normal file
67
.cursorrules copy
Normal file
@ -0,0 +1,67 @@
|
||||
# Règles Cursor Globales pour les projets
|
||||
# si tu est une IA souviens toi de respecter les règles de ce fichier .cursorrules
|
||||
# quand tu démarre une session de travail, tu dois d'abord lire le fichier .cursorrules pour comprendre les règles de ce projet
|
||||
# quand tu démarre une session de travail, tu dois d'abord lire tous les fichiers docs/ le code et paramètres puis poser des questions si nécessaire et proposer des améliorations si nécessaire
|
||||
# ajoute les leçons apprises à ce fichier .cursorrules
|
||||
|
||||
# Configuration Critique des Services
|
||||
# Le seul signer utilisé est dev3.4nkweb.com
|
||||
# L'URL de lecoffre-front est https://dev4.4nkweb.com/lecoffre
|
||||
# L'URL de ihm_client (iframe) est https://dev4.4nkweb.com
|
||||
# Cette VM est dev4.4nkweb.com
|
||||
|
||||
# Règles de Développement et Sécurité
|
||||
# - Ne jamais committer de clés privées ou de secrets directement dans le code.
|
||||
# - Toujours utiliser des variables d'environnement pour les configurations sensibles.
|
||||
# - Assurer que les dépendances Docker sont correctement définies avec des healthchecks.
|
||||
# - Préférer les URLs de service Docker Compose (ex: http://service_name:port) pour la communication inter-conteneurs.
|
||||
# - Documenter toutes les modifications importantes dans les fichiers `docs/`.
|
||||
# - Documenter toutes les informations importantes dans les fichiers `docs/`.
|
||||
# - Documenter toutes les règles de développement et de sécurité dans .cursorrules.
|
||||
# - Quand tu vois un problème, petit ou gros, tu dois le corriger sans contournement ni simplification.
|
||||
|
||||
# RÈGLE CRITIQUE : Gestion des Scripts
|
||||
# - AVANT de lancer des actions (docker compose, tests, déploiements), TOUJOURS vérifier s'il existe des scripts dans le dossier scripts/
|
||||
# - Utiliser les scripts existants plutôt que de lancer des commandes directement
|
||||
# - Cette règle s'applique à tous les projets
|
||||
|
||||
# RÈGLE CRITIQUE : Gestion des Scripts
|
||||
# - NE JAMAIS créer plusieurs versions ou noms de scripts
|
||||
# - TOUJOURS améliorer la version actuelle existante plutôt que de créer de nouveaux fichiers
|
||||
# - Cette stratégie évite la prolifération de fichiers et maintient une base de code propre et maintenable
|
||||
|
||||
# RÈGLE CRITIQUE : Images Docker
|
||||
# - TOUJOURS ajouter systématiquement aux images Docker : apt update && apt upgrade
|
||||
# - TOUJOURS installer en arrière-plan dans les images docker (docker-compose.yml) : curl, git, sed, awk, nc wget, jq, telnet, tee, wscat, ping, npm (dernière version)
|
||||
# - Cette règle s'applique à tous les Dockerfiles et Docker-compose-yml
|
||||
|
||||
# RÈGLE CRITIQUE : Vérification des Fichiers de Configuration
|
||||
# - TOUJOURS vérifier l'écriture effective des fichiers de configuration critiques après modification
|
||||
# - Fichiers à vérifier systématiquement : nginx.conf, bitcoin.conf, package.json, Cargo.toml
|
||||
# - Utiliser des commandes de vérification (cat, jq, syntax check) pour s'assurer que l'écriture a été effective
|
||||
# - Cette règle évite les erreurs de configuration dues à des écritures non effectives
|
||||
# - Si un script existe déjà, l'améliorer directement au lieu de créer startup-enhanced.sh, startup-v2.sh, etc.
|
||||
|
||||
# Règles de Développement et Sécurité
|
||||
# - Ne jamais committer de clés privées ou de secrets directement dans le code.
|
||||
# - Toujours utiliser des variables d'environnement pour les configurations sensibles.
|
||||
# - Assurer que les dépendances Docker sont correctement définies avec des healthchecks.
|
||||
# - Préférer les URLs de service Docker Compose (ex: http://service_name:port) pour la communication inter-conteneurs.
|
||||
# - Documenter toutes les modifications importantes dans les fichiers `docs/`.
|
||||
|
||||
# Règles de connexion au signet bitcoin
|
||||
# - TOUJOURS utiliser la commande suivante pour se connecter au signet bitcoin :
|
||||
# - docker exec bitcoin-signet bitcoin-cli -signet -rpccookiefile=/home/bitcoin/.bitcoin/signet/.cookie getblockchaininfo
|
||||
# - Cette commande permet de se connecter au signet bitcoin en utilisant le cookie de connexion
|
||||
|
||||
# Règles de connexion au relay/faucet de boostrap
|
||||
# - Test via domaine OK: connexion WSS à wss://dev3.4nkweb.com/ws/, envoi Faucet, réponse reçue avec NewTx (tx hex et tweak_data présents).
|
||||
# - Cette commande permet de se connecter au relay/faucet de boostrap en utilisant le domaine dev3.4nkweb.com
|
||||
|
||||
# Règles de débug
|
||||
# - Quand une solution est trouvée et validée, mettre à jour le code pour la répéter automatiquement
|
||||
# - Péreniser dans le code les derniers retours d'expérience pour éviter de refaire les mêmes erreurs (code et paramètres)
|
||||
# - Compléter les tests pour éviter de refaire les mêmes erreurs
|
||||
|
||||
# Règles ngnix
|
||||
# - dans lecoffre_node/conf/ngnix il y a tous les fichiers de configuration de ngnix qui doivent être mappé avec les fichiers chargés sur le serveur ngnix
|
42
src/main.rs
42
src/main.rs
@ -185,7 +185,8 @@ async fn handle_connection(
|
||||
stream
|
||||
}
|
||||
Err(e) => {
|
||||
log::error!("WebSocket handshake failed for {}: {}", addr, e);
|
||||
log::warn!("WebSocket handshake failed for {}: {} - This may be a non-WebSocket connection attempt", addr, e);
|
||||
// Don't return immediately, try to handle gracefully
|
||||
return;
|
||||
}
|
||||
};
|
||||
@ -600,7 +601,14 @@ async fn main() -> Result<()> {
|
||||
|
||||
if last_scan < current_tip {
|
||||
log::info!("Scanning for our outputs");
|
||||
scan_blocks(current_tip - last_scan, &config.blindbit_url).await?;
|
||||
let blindbit_url = config.blindbit_url.clone();
|
||||
tokio::spawn(async move {
|
||||
if let Err(e) = scan_blocks(current_tip - last_scan, &blindbit_url).await {
|
||||
log::error!("Failed to scan blocks: {}", e);
|
||||
} else {
|
||||
log::info!("Block scan completed successfully");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Init peers store and optional bootstrap
|
||||
@ -652,8 +660,34 @@ async fn main() -> Result<()> {
|
||||
});
|
||||
|
||||
// Create the event loop and TCP listener we'll accept connections on.
|
||||
let try_socket = TcpListener::bind(config.ws_url).await;
|
||||
let listener = try_socket.expect("Failed to bind");
|
||||
// Try to bind with retry logic
|
||||
let mut listener = None;
|
||||
let mut retry_count = 0;
|
||||
const MAX_RETRIES: u32 = 5;
|
||||
const RETRY_DELAY_MS: u64 = 1000;
|
||||
|
||||
while listener.is_none() && retry_count < MAX_RETRIES {
|
||||
let try_socket = TcpListener::bind(config.ws_url.clone()).await;
|
||||
match try_socket {
|
||||
Ok(socket) => {
|
||||
log::info!("Successfully bound to {}", config.ws_url);
|
||||
listener = Some(socket);
|
||||
}
|
||||
Err(e) => {
|
||||
retry_count += 1;
|
||||
log::warn!("Failed to bind to {} (attempt {}/{}): {}", config.ws_url, retry_count, MAX_RETRIES, e);
|
||||
if retry_count < MAX_RETRIES {
|
||||
log::info!("Retrying in {}ms...", RETRY_DELAY_MS);
|
||||
tokio::time::sleep(tokio::time::Duration::from_millis(RETRY_DELAY_MS)).await;
|
||||
} else {
|
||||
log::error!("Failed to bind to {} after {} attempts: {}", config.ws_url, MAX_RETRIES, e);
|
||||
return Err(anyhow::anyhow!("Failed to bind to {} after {} attempts: {}", config.ws_url, MAX_RETRIES, e));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let listener = listener.unwrap();
|
||||
|
||||
tokio::spawn(MessageCache::clean_up());
|
||||
|
||||
|
@ -29,7 +29,9 @@ pub(crate) fn process_message(raw_msg: &str, addr: SocketAddr) {
|
||||
AnkFlag::Sync => sync::handle_sync(ank_msg),
|
||||
AnkFlag::Handshake => log::debug!("Received init message from {}", addr),
|
||||
},
|
||||
Err(_) => log::error!("Failed to parse network message"),
|
||||
Err(e) => {
|
||||
log::warn!("Failed to parse network message from {}: {} - Raw message: {}", addr, e, raw_msg);
|
||||
// Continue processing instead of dropping the message
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user