Comment supprimer les mots de passe et les noms d'utilisateur de mon fichier emacs .init?

9

Exemple :

  • J'ai un nom d'utilisateur et un mot de passe IRC dans mon fichier emins .init
  • Je partage mon fichier .init sur tous les appareils à l'aide d'un dépôt github public
  • Je crypte cette rubrique dans mon .init pour éviter d'afficher
  • org-encrypt-entry ne crypte pas toujours lors de l'enregistrement du fichier
  • donc je dois toujours vérifier avant git push
  • Parfois aussi, je partage des extraits de mon .init avec des personnes dans IRC pour aider au dépannage. Aujourd'hui, j'ai posté mes pw IRC et j'ai dû réinitialiser immédiatement.

Au lieu de coder en dur un / pw dans mon fichier .init, puis-je utiliser un elisp pour référencer un répertoire / fichier .gpg ailleurs?

SeaDude
la source
1
Avez-vous envisagé d'utiliser authinfo/netrcet de stocker les paramètres de votre machine dans un emplacement différent sur votre disque dur? Si votre irccontenu n'est pas configuré pour cela, jetez un œil à celui get-auth-infoqui utilise la auth-sourcebibliothèque intégrée : emacs.stackexchange.com/a/5844/2287 Ce lien est destiné à un usage différent, mais le concept est le même - c'est-à-dire, comment extraire les informations d'identification d'autorisation du authinfo/netrcfichier.
lawlist
1
J'ai vu un autre exemple pertinent l'autre jour sur github.com/jwiegley/dot-emacs/blob/… et github.com/jwiegley/dot-emacs/blob/…
phils
Merci de votre contribution. Cela m'a amené dans la direction où je devais aller.
SeaDude

Réponses:

7

A pris pas mal d'essais et d'erreurs, mais voici la solution finale:

  • Créez un fichier .authinfo.gpg dans un répertoire de votre choix
  • Ajoutez ce qui suit au fichier .authinfo.gpg (pour la connexion IRC)

machine irc.freenode.net login <your-irc-nick> port nickserv password <your-irc-pw>

  • Ajoutez ce qui suit à votre fichier emacs .init

Définissez le répertoire où existe .authinfo.gpg

(setq auth-sources 
      '((:source "~/.emacs.d/.authinfo.gpg"
       auth-source-debug t)))

Je ne sais pas exactement ce que cela fait, mais c'était nécessaire pour que les choses fonctionnent: https://www.emacswiki.org/emacs/rcircAutoAuthentication

(defadvice rcirc (before rcirc-read-from-authinfo activate)
  (unless arg
  (dolist (p (auth-source-search :port '("nickserv")
                 :require '(:port :user :secret)))
(let ((secret (plist-get p :secret))
      (method (intern (plist-get p :port))))
  (add-to-list 'rcirc-authinfo
           (list (plist-get p :host)
             method
             (plist-get p :user)
             (if (functionp secret)
             (funcall secret)
               secret)))))))

Il s'agit, plus ou moins, d'une configuration générale de rcirc qui peut également vous aider :)

(setq rcirc-default-nick "<your-nick>"
  rcirc-default-user-name "<your-nick>"
  rcirc-auto-authenticate-flag t
  rcirc-log-flag t
  rcirc-log-directory "</path/to/irc-logs>"
  rcirc-track-minor-mode 1
  rcirc-server-alist
  '(("irc.freenode.net" :channels ("#your" "#favorite" "#irc-channels"))))
SeaDude
la source