Como removo senhas e nomes de usuários do meu arquivo .mac do emacs?

9

Exemplo :

  • Tenho nome de usuário e senha do IRC no meu arquivo .mac do emacs
  • Compartilho meu arquivo .init entre dispositivos usando um repositório público do github
  • Eu criptografo este cabeçalho no meu .init para evitar mostrar
  • org-encrypt-entry nem sempre criptografa ao salvar o arquivo
  • então eu sempre tenho que checar antes do git push
  • às vezes, também compartilho trechos do meu .init com pessoas no IRC para ajudar a solucionar problemas. Hoje eu postei meu IRC pw's e tive que redefinir imediatamente.

Em vez de codificar un / pw's no meu arquivo .init, posso usar alguns elisp para fazer referência a um arquivo / diretório .gpg em outro lugar?

SeaDude
fonte
11
Você já pensou em usar authinfo/netrce armazenar as configurações da máquina em um local diferente no disco rígido? Se o seu ircmaterial não é set-up para isso, ter um olhar para get-auth-infoo que usa o built-in auth-sourcebiblioteca: emacs.stackexchange.com/a/5844/2287 Essa ligação é para um uso diferente, mas o conceito é o mesmo - ou seja, como extrair credenciais de autorização do authinfo/netrcarquivo.
Lawlist 26/11/17
11
Vi outro exemplo relevante outro dia em github.com/jwiegley/dot-emacs/blob/… e github.com/jwiegley/dot-emacs/blob/…
phils
Obrigado pela contribuição. Isso me levou na direção que eu precisava seguir.
SeaDude 30/11

Respostas:

7

Foram necessárias várias tentativas e erros, mas aqui estava a solução final:

  • Crie o arquivo .authinfo.gpg em um diretório de sua escolha
  • Adicione o seguinte ao arquivo .authinfo.gpg (para login no IRC)

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

  • Adicione o seguinte ao seu arquivo .mac do emacs

Defina o diretório onde .authinfo.gpg existe

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

Não sei ao certo o que isso faz exatamente, mas era necessário para que as coisas funcionassem: 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)))))))

Esta é, mais ou menos, apenas a configuração geral do rcirc, que também pode ajudá-lo :)

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