Bagaimana cara menghapus kata sandi dan nama pengguna dari file .init emacs saya?

9

Contoh :

  • Saya memiliki nama pengguna dan kata sandi IRC dalam file .init emacs saya
  • Saya membagikan file .init saya di seluruh perangkat menggunakan repo github publik
  • Saya mengenkripsi heading ini di .init saya untuk menghindari tampil
  • org-mengenkripsi-entri TIDAK selalu mengenkripsi pada saat menyimpan file
  • jadi saya selalu harus memeriksa sebelum git push
  • juga terkadang saya membagikan cuplikan .it saya dengan orang-orang di IRC untuk membantu memecahkan masalah. Hari ini saya memposting IRC pw saya dan harus segera mengatur ulang.

Alih-alih hardcoding un / pw dalam file .init saya, dapatkah saya menggunakan beberapa elisp untuk referensi dir / file gpg di tempat lain?

SeaDude
sumber
1
Sudahkah Anda melihat menggunakan authinfo/netrcdan menyimpan pengaturan mesin Anda di lokasi yang berbeda pada hard drive Anda? Jika ircbarang - barang Anda tidak diatur untuk itu, lihat di get-auth-infomana yang menggunakan auth-sourceperpustakaan bawaan : emacs.stackexchange.com/a/5844/2287 Tautan itu untuk penggunaan yang berbeda, tetapi konsepnya sama - yaitu, cara mengekstrak kredensial otorisasi dari authinfo/netrcfile.
hukum
1
Saya melihat contoh lain yang relevan di hari lain di github.com/jwiegley/dot-emacs/blob/… dan github.com/jwiegley/dot-emacs/blob/…
phils
Terima kasih atas masukannya. Ini membuat saya ke arah yang saya harus pergi.
SeaDude

Jawaban:

7

Mengambil sedikit trial and error, tetapi inilah solusi akhirnya:

  • Buat file .authinfo.gpg di direktori pilihan Anda
  • Tambahkan berikut ini ke file .authinfo.gpg (untuk login IRC)

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

  • Tambahkan berikut ini ke file emacs .init Anda

Setel dir di mana .authinfo.gpg ada

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

Tidak yakin apa yang dikerjakannya dengan tepat, tapi itu diperlukan agar semuanya berfungsi: 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)))))))

Ini, lebih atau kurang, hanya pengaturan rcirc umum yang dapat membantu Anda juga :)

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