mirror of
https://github.com/deunix-educ/Fail2banMqttActionBanishment.git
synced 2026-08-24 03:11:58 +02:00
First commit
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
"""Émet un jeton d'auto-inscription à usage unique pour un nouveau noeud
|
||||
(flux "kubeadm join", voir ROADMAP.md et banevents/views.py::join_node).
|
||||
À lancer sur le MASTER uniquement — le jeton n'a de sens que contre
|
||||
l'endpoint /api/join/ de cette même instance.
|
||||
|
||||
Usage :
|
||||
manage.py create_join_token <nom_du_noeud> [--ttl-minutes 60]
|
||||
|
||||
Le jeton n'est affiché QU'UNE SEULE FOIS ici, en clair — seul son hash est
|
||||
persisté (JoinToken.token_hash). Impossible de le retrouver après coup :
|
||||
en cas de perte, en émettre un nouveau (le précédent reste valide jusqu'à
|
||||
son expiration ou son utilisation, aucun conflit).
|
||||
"""
|
||||
from typing import Any
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
|
||||
from banevents.enrollment import DEFAULT_TTL_MINUTES, issue_join_token, join_command
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Émet un jeton d'auto-inscription à usage unique pour un nouveau noeud."
|
||||
|
||||
def add_arguments(self, parser: Any) -> None:
|
||||
parser.add_argument('node_name')
|
||||
parser.add_argument('--ttl-minutes', type=int, default=DEFAULT_TTL_MINUTES)
|
||||
|
||||
def handle(self, *args: Any, **options: Any) -> None:
|
||||
node_name = options['node_name']
|
||||
ttl_minutes = options['ttl_minutes']
|
||||
|
||||
token, _ = issue_join_token(node_name, ttl_minutes)
|
||||
|
||||
self.stdout.write(self.style.SUCCESS(
|
||||
f"Jeton émis pour '{node_name}' (expire dans {ttl_minutes} min, usage unique) :"
|
||||
))
|
||||
self.stdout.write('')
|
||||
self.stdout.write(f' {join_command(node_name, token)}')
|
||||
self.stdout.write('')
|
||||
self.stdout.write('À lancer sur le nouveau noeud, puis "sudo make install" comme d\'habitude.')
|
||||
Reference in New Issue
Block a user