(defun jabber-chat-print-encrypted (xml-data who mode)
"Decrypts and prints encrypted message"
(let ((foundp nil))
(dolist (x (jabber-xml-node-children xml-data))
(when (and (listp x) (eq (jabber-xml-node-name x) 'x)
(string= (jabber-xml-get-xmlns x) "jabber:x:encrypted"))
(setq foundp t)
(when (eql mode :insert)
(let* ((enc-b64-multi (car (split-string (caddr x) "\n=")))
(enc-b64 (replace-regexp-in-string "\n" "" enc-b64-multi))
(enc (base64-decode-string enc-b64))
(context (epg-make-context epa-protocol))
(dec (epg-decrypt-string context enc)))
(insert "\n"
(jabber-propertize
"encrypted message: " 'face 'jabber-chat-prompt-system)
(format "%s" (jabber-unhex dec)))))))
foundp))
Немного переусложнённо, но блин, спасибо XEP-ам
Чтобы постоянно не спрашивал пароли — gpg-agent в помощь
(add-to-list 'jabber-chat-printers 'jabber-chat-print-encrypted)
(defun jabber-chat-print-encrypted (xml-data who mode)
"Print encrypted part of the message "
(message "detect encrypted")
(let ((foundp nil))
(dolist (x (jabber-xml-node-children xml-data))
(when (and (listp x) (eq (jabber-xml-node-name x) 'x)
(string= (jabber-xml-get-xmlns x) "jabber:x:encrypted"))
(setq foundp t)
(when (eql mode :insert)
(let ((enc (caddr x)))
(insert "\n"
(jabber-propertize
"encrypted message: " 'face 'jabber-chat-prompt-system)
(format "%s" enc))))))
foundp))
осталось декриптануть
BTW, header-line — фича емакса, а не жаберэля, со всеми вытекающими.
Да, к другим серверам (gmail.com и jabber.se) подключается нормально.
2. как сделать, чтобы сохранялись логи конфы?
стоит так и логов конференций в ~/.emacs-jabber не видно:
(setq jabber-history-enabled t)
(setq jabber-use-global-history nil)
3. какие есть готовые (или как это лучше сделать) способы нотификации о пришедшем сообщении? проигрывание звука &| popup с текстом сообщения &| мигающая иконка в трее (xfce). все что связано с X'ами должно уметь запускаться отдельно и после старта емакса, ибо daemon (и jabber.el запускается и коннектится при его старте).
4. кто какие версии юзает? app-emacs/emacs-jabber-0.8.0 из гентовых портов — это сильно старье?
Брать у меня на гитхабах.
./socat TCP4-LISTEN:31337,reuseaddr,fork PROXY:proxy.localnet:allports.jabber.ru:443,proxyport=8080
(setq (jabber-account-list (quote (("nick@jabber.ru/home" (:network-server . "localhost") (:port . 31337))))))
(setq url-proxy-services '(("no_proxy" . "local.com")
("http" . "proxy.localnet:8080")))
как-то так...
и включаем outline-minor-mode :)
теперь можно ходить по постам как по заголовкам, и, что самое главное — сворачивать-разворачивать
достаточно примитивно, но лучше чем ничего
(defun fortune-string ()
(shell-command-to-string (concat fortune-program fortune-program-options)))
(setq jabber-default-status (fortune-string))
короче, jabber-roster-ret-action-at-point (реакция на Enter) с числовым префиксом открывает чятик в другом окне (память о mcabber).
paste.lisp.org
@Kagami няшечку, которая переименовывает буферы конференций в соответствии с названиями в закладках. codepad.org теперь оно работает не только для одного аккаунта!
немножко доработал сделаную