¿Cómo elimino las contraseñas y los nombres de usuario de mi archivo .init de emacs?

9

Ejemplo :

  • Tengo nombre de usuario y contraseña de IRC en mi archivo .init de emacs
  • Comparto mi archivo .init entre dispositivos usando un repositorio público de github
  • Encripto este encabezado en mi .init para evitar mostrar
  • org-encrypt-entry NO siempre se cifra al guardar el archivo
  • por lo tanto, siempre tengo que verificar antes de git push
  • También a veces comparto fragmentos de mi .init con personas en IRC para ayudar a solucionar problemas. Hoy publiqué mi IRC pw y tuve que reiniciar inmediatamente.

En lugar de codificar un / pw en mi archivo .init, ¿puedo usar algo de elisp para hacer referencia a un archivo / directorio .gpg en otro lugar?

SeaDude
fuente
1
¿Ha buscado usar authinfo/netrcy almacenar la configuración de su máquina en una ubicación diferente en su disco duro? Si su ircmaterial no está configurado para eso, eche un vistazo a get-auth-infoqué usa la auth-sourcebiblioteca incorporada : emacs.stackexchange.com/a/5844/2287 Ese enlace es para un uso diferente, pero el concepto es el mismo: es decir, cómo extraer credenciales de autorización del authinfo/netrcarchivo.
ley
1
Vi otro ejemplo relevante el otro día en github.com/jwiegley/dot-emacs/blob/... y github.com/jwiegley/dot-emacs/blob/...
PHILS
Gracias por la aportación. Esto me llevó en la dirección que necesitaba ir.
SeaDude

Respuestas:

7

Tomó bastante prueba y error, pero aquí estaba la solución final:

  • Cree el archivo .authinfo.gpg en el directorio que elija
  • Agregue lo siguiente al archivo .authinfo.gpg (para iniciar sesión en IRC)

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

  • Agregue lo siguiente a su archivo emacs .init

Establecer el directorio donde existe .authinfo.gpg

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

No estoy seguro de lo que hace exactamente, pero era necesario para que todo funcionara: 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)))))))

Esto es, más o menos, solo una configuración general de rcirc que también puede ayudarlo :)

(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
fuente