From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Vibhav Pant Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] Add option to ERC to make all connections use SSL. Date: Sat, 2 Aug 2014 23:17:13 +0530 Message-ID: References: <87zjfqiokt.fsf@lifelogs.com> <87mwbnu6kf.fsf@lifelogs.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=047d7bd760028e074404ffa91813 X-Trace: ger.gmane.org 1407001649 16673 80.91.229.3 (2 Aug 2014 17:47:29 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 2 Aug 2014 17:47:29 +0000 (UTC) To: "emacs-devel@gnu.org" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Aug 02 19:47:24 2014 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1XDdOr-0005Ra-MH for ged-emacs-devel@m.gmane.org; Sat, 02 Aug 2014 19:47:21 +0200 Original-Received: from localhost ([::1]:45430 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XDdOr-00017r-B8 for ged-emacs-devel@m.gmane.org; Sat, 02 Aug 2014 13:47:21 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:58088) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XDdOm-00017i-S4 for emacs-devel@gnu.org; Sat, 02 Aug 2014 13:47:18 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XDdOl-0005P1-8F for emacs-devel@gnu.org; Sat, 02 Aug 2014 13:47:16 -0400 Original-Received: from mail-pd0-x236.google.com ([2607:f8b0:400e:c02::236]:38650) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XDdOk-0005ML-Su for emacs-devel@gnu.org; Sat, 02 Aug 2014 13:47:15 -0400 Original-Received: by mail-pd0-f182.google.com with SMTP id fp1so7346587pdb.27 for ; Sat, 02 Aug 2014 10:47:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=YTEesJHPZi5PiGaQeMnXgmG1Tenwe5X9OIxNoP96VJs=; b=Mxl66FenHaR3utsg3eWY7ad78UQtBKTWsAmrFU9RyCkVdX0yy737S6bnr3EmH9qtEm osXn88jcqTKPVZGk6qO8sOsXR/qkdhnPc1q99FiJTHKkZnRfvUPBdkgZIn/acBFOlInI o96+w4Mtg9fJN1XZ03x8PCg4ym3YofS6PxCLfOKh5pYeE6hNYYBICmQxwHZVKjY4SdXW xZ6U1ny6BlYykf4LWyP9kF1IkzQ5MuI1p8wEsYJEoyey58UOtnobnU9H/9m7K2srB3L2 6iRRSALm0NBvrAyEV63jB9k+YLdObUFZzPFQgGsZkeUU+mi0bubTsl/zZNSCjYaLrCE3 zVDg== X-Received: by 10.70.16.196 with SMTP id i4mr13954715pdd.93.1407001633351; Sat, 02 Aug 2014 10:47:13 -0700 (PDT) Original-Received: by 10.70.34.230 with HTTP; Sat, 2 Aug 2014 10:47:13 -0700 (PDT) In-Reply-To: <87mwbnu6kf.fsf@lifelogs.com> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400e:c02::236 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:173391 Archived-At: --047d7bd760028e074404ffa91813 Content-Type: text/plain; charset=ISO-8859-1 > Is there a way to specify it per server? Agreed. I have redone the patch and added some more features: 1. erc-ssl-servers: Alist of servers (ADDRESS PORT) for which ERC will always connect to using SSL. 2. erc-use-ssl: If non-nill, all connections will be made using SSL. 3. erc-ssl-blacklist: Alist of server ERC will connect to without SSL. Only useful when erc-use-ssl is non-nil. erc-ssl-servers is also used to compute the initial port number displayed on the minibuffer during user input when ERC is run interactively. Here's an example (non-interactive): (setq erc-ssl-servers '(("irc.freenode.net" 7000))) (erc :server "irc.freenode.net" :nick "foo") #creates a SSL connection (setq erc-use-ssl t) (erc :server "":port ) # will use a SSL connection (setq erc-ssl-blacklist '(("irc.example.org"))) #assuming 1234 accepts SSL connections (erc :server "irc.example.org" :nick "foo") #connection does not use SSL I have attached the patch, do tell me something else needs to be added/fixed. diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 3bd9ff3..151482c 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -809,6 +809,27 @@ If nil, ERC will call `system-name' to get this information." :type '(choice (const :tag "Default system name" nil) string)) +(defcustom erc-ssl-servers nil + "Alist of networks to which ERC will connect to using SSL. +(ADDRESS PORT) where ADDRESS is the address of the IRC network +and PORT is the port on which the network accepts SSL connections." + :group 'erc + :type '(repeat + (list :tag "Network" + (string :tag "Network address") + (integer :tag "SSL Port")))) + +(defcustom erc-use-ssl nil + "If non-nil, all connections made by ERC will use SSL." + :group 'erc + :type 'boolean) + +(defcustom erc-ssl-blacklist nil + "List of server ERC will connect to without SSL. +Only useful when `erc-use-ssl' is non-nil" + :group 'erc + :type '(repeat (list string))) + (defcustom erc-ignore-list nil "List of regexps matching user identifiers to ignore. @@ -2094,18 +2115,23 @@ functions in here get called with the parameters SERVER and NICK." ;;;###autoload (defun erc-select-read-args () "Prompt the user for values of nick, server, port, and password." - (let (user-input server port nick passwd) + (let (user-input server port nick passwd ssl-port) (setq user-input (read-from-minibuffer "IRC server: " (erc-compute-server) nil nil 'erc-server-history-list)) + (setq ssl-port (if (not (assoc-string user-input erc-ssl-blacklist t)) + (nth 1 (assoc-string user-input erc-ssl-servers t)) + nil)) (if (string-match "\\(.*\\):\\(.*\\)\\'" user-input) (setq port (erc-string-to-port (match-string 2 user-input)) user-input (match-string 1 user-input)) (setq port (erc-string-to-port (read-from-minibuffer - "IRC port: " (erc-port-to-string - (erc-compute-port)))))) + "IRC port: " (if ssl-port + (number-to-string ssl-port) + (erc-port-to-string + (erc-compute-port))))))) (if (string-match "\\`\\(.*\\)@\\(.*\\)" user-input) (setq nick (match-string 1 user-input) @@ -2145,7 +2171,7 @@ functions in here get called with the parameters SERVER and NICK." ;;;###autoload (cl-defun erc (&key (server (erc-compute-server)) - (port (erc-compute-port)) + (port nil) (nick (erc-compute-nick)) password (full-name (erc-compute-full-name))) @@ -2156,7 +2182,7 @@ It permits you to select connection parameters, and then starts ERC. Non-interactively, it takes the keyword arguments (server (erc-compute-server)) - (port (erc-compute-port)) + (port nil) (nick (erc-compute-nick)) password (full-name (erc-compute-full-name))) @@ -2166,10 +2192,23 @@ That is, if called with (erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\") then the server and full-name will be set to those values, whereas -`erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will -be invoked for the values of the other parameters." + `erc-compute-nick' and `erc-compute-full-name' will be invoked + for the values of the other parameters. If the server address is found in + `erc-ssl-servers', the port corresponding to the server will be used, or + `erc-compute-port' will be invoked for its value." (interactive (erc-select-read-args)) - (erc-open server port nick full-name t password)) + (let* ((use-ssl (equal nil (assoc-string server erc-ssl-blacklist t))) + (erc-server-connect-function + (if (or (and erc-use-ssl use-ssl) + (assoc-string server erc-ssl-servers t)) + 'erc-open-tls-stream + 'open-network-stream)) + (ssl-port (nth 1 (assoc-string server erc-ssl-servers t)))) + + (if (and (numberp port) (numberp ssl-port) use-ssl) + (setq port ssl-port) + (setq port (erc-compute-port))) + (erc-open server port nick full-name t password))) ;;;###autoload (defalias 'erc-select 'erc) -- Vibhav Pant vibhavp@gmail.com --047d7bd760028e074404ffa91813 Content-Type: text/x-patch; charset=US-ASCII; name="erc-ssl-option.patch" Content-Disposition: attachment; filename="erc-ssl-option.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hydk5v6p0 ZGlmZiAtLWdpdCBhL2xpc3AvZXJjL2VyYy5lbCBiL2xpc3AvZXJjL2VyYy5lbAppbmRleCAzYmQ5 ZmYzLi4xNTE0ODJjIDEwMDY0NAotLS0gYS9saXNwL2VyYy9lcmMuZWwKKysrIGIvbGlzcC9lcmMv ZXJjLmVsCkBAIC04MDksNiArODA5LDI3IEBAIElmIG5pbCwgRVJDIHdpbGwgY2FsbCBgc3lzdGVt LW5hbWUnIHRvIGdldCB0aGlzIGluZm9ybWF0aW9uLiIKICAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0 IDp0YWcgIkRlZmF1bHQgc3lzdGVtIG5hbWUiIG5pbCkKICAgICAgICAgICAgICAgICAgc3RyaW5n KSkKIAorKGRlZmN1c3RvbSBlcmMtc3NsLXNlcnZlcnMgbmlsCisgICJBbGlzdCBvZiBuZXR3b3Jr cyB0byB3aGljaCBFUkMgd2lsbCBjb25uZWN0IHRvIHVzaW5nIFNTTC4KKyhBRERSRVNTIFBPUlQp IHdoZXJlIEFERFJFU1MgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIElSQyBuZXR3b3JrCithbmQgUE9S VCBpcyB0aGUgcG9ydCBvbiB3aGljaCB0aGUgbmV0d29yayBhY2NlcHRzIFNTTCBjb25uZWN0aW9u cy4iCisgIDpncm91cCAnZXJjCisgIDp0eXBlICcocmVwZWF0CisJICAobGlzdCA6dGFnICJOZXR3 b3JrIgorCQkoc3RyaW5nIDp0YWcgIk5ldHdvcmsgYWRkcmVzcyIpCisJCShpbnRlZ2VyIDp0YWcg IlNTTCBQb3J0IikpKSkKKworKGRlZmN1c3RvbSBlcmMtdXNlLXNzbCBuaWwKKyAgIklmIG5vbi1u aWwsIGFsbCBjb25uZWN0aW9ucyBtYWRlIGJ5IEVSQyB3aWxsIHVzZSBTU0wuIgorICA6Z3JvdXAg J2VyYworICA6dHlwZSAnYm9vbGVhbikKKworKGRlZmN1c3RvbSBlcmMtc3NsLWJsYWNrbGlzdCBu aWwKKyAgIkxpc3Qgb2Ygc2VydmVyIEVSQyB3aWxsIGNvbm5lY3QgdG8gd2l0aG91dCBTU0wuCitP bmx5IHVzZWZ1bCB3aGVuIGBlcmMtdXNlLXNzbCcgaXMgbm9uLW5pbCIKKyAgOmdyb3VwICdlcmMK KyAgOnR5cGUgJyhyZXBlYXQgKGxpc3Qgc3RyaW5nKSkpCisKIChkZWZjdXN0b20gZXJjLWlnbm9y ZS1saXN0IG5pbAogICAiTGlzdCBvZiByZWdleHBzIG1hdGNoaW5nIHVzZXIgaWRlbnRpZmllcnMg dG8gaWdub3JlLgogCkBAIC0yMDk0LDE4ICsyMTE1LDIzIEBAIGZ1bmN0aW9ucyBpbiBoZXJlIGdl dCBjYWxsZWQgd2l0aCB0aGUgcGFyYW1ldGVycyBTRVJWRVIgYW5kIE5JQ0suIgogOzs7IyMjYXV0 b2xvYWQKIChkZWZ1biBlcmMtc2VsZWN0LXJlYWQtYXJncyAoKQogICAiUHJvbXB0IHRoZSB1c2Vy IGZvciB2YWx1ZXMgb2Ygbmljaywgc2VydmVyLCBwb3J0LCBhbmQgcGFzc3dvcmQuIgotICAobGV0 ICh1c2VyLWlucHV0IHNlcnZlciBwb3J0IG5pY2sgcGFzc3dkKQorICAobGV0ICh1c2VyLWlucHV0 IHNlcnZlciBwb3J0IG5pY2sgcGFzc3dkIHNzbC1wb3J0KQogICAgIChzZXRxIHVzZXItaW5wdXQg KHJlYWQtZnJvbS1taW5pYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgIklSQyBzZXJ2ZXI6 ICIKICAgICAgICAgICAgICAgICAgICAgICAoZXJjLWNvbXB1dGUtc2VydmVyKSBuaWwgbmlsICdl cmMtc2VydmVyLWhpc3RvcnktbGlzdCkpCisgICAgKHNldHEgc3NsLXBvcnQgKGlmIChub3QgKGFz c29jLXN0cmluZyB1c2VyLWlucHV0IGVyYy1zc2wtYmxhY2tsaXN0IHQpKQorCQkgICAgICAgKG50 aCAxIChhc3NvYy1zdHJpbmcgdXNlci1pbnB1dCBlcmMtc3NsLXNlcnZlcnMgdCkpCisJCSAgICAg bmlsKSkKIAogICAgIChpZiAoc3RyaW5nLW1hdGNoICJcXCguKlxcKTpcXCguKlxcKVxcJyIgdXNl ci1pbnB1dCkKICAgICAgICAgKHNldHEgcG9ydCAoZXJjLXN0cmluZy10by1wb3J0IChtYXRjaC1z dHJpbmcgMiB1c2VyLWlucHV0KSkKICAgICAgICAgICAgICAgdXNlci1pbnB1dCAobWF0Y2gtc3Ry aW5nIDEgdXNlci1pbnB1dCkpCiAgICAgICAoc2V0cSBwb3J0CiAgICAgICAgICAgICAoZXJjLXN0 cmluZy10by1wb3J0IChyZWFkLWZyb20tbWluaWJ1ZmZlcgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIklSQyBwb3J0OiAiIChlcmMtcG9ydC10by1zdHJpbmcKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVyYy1jb21wdXRlLXBvcnQpKSkp KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJUkMgcG9ydDogIiAoaWYgc3Ns LXBvcnQKKwkJCQkJCSAgKG51bWJlci10by1zdHJpbmcgc3NsLXBvcnQpCisJCQkJCQkoZXJjLXBv cnQtdG8tc3RyaW5nCisJCQkJCQkgKGVyYy1jb21wdXRlLXBvcnQpKSkpKSkpCiAKICAgICAoaWYg KHN0cmluZy1tYXRjaCAiXFxgXFwoLipcXClAXFwoLipcXCkiIHVzZXItaW5wdXQpCiAgICAgICAg IChzZXRxIG5pY2sgKG1hdGNoLXN0cmluZyAxIHVzZXItaW5wdXQpCkBAIC0yMTQ1LDcgKzIxNzEs NyBAQCBmdW5jdGlvbnMgaW4gaGVyZSBnZXQgY2FsbGVkIHdpdGggdGhlIHBhcmFtZXRlcnMgU0VS VkVSIGFuZCBOSUNLLiIKIAogOzs7IyMjYXV0b2xvYWQKIChjbC1kZWZ1biBlcmMgKCZrZXkgKHNl cnZlciAoZXJjLWNvbXB1dGUtc2VydmVyKSkKLSAgICAgICAgICAgICAgICAgICAgKHBvcnQgICAo ZXJjLWNvbXB1dGUtcG9ydCkpCisgICAgICAgICAgICAgICAgICAgIChwb3J0ICAgIG5pbCkKICAg ICAgICAgICAgICAgICAgICAgKG5pY2sgICAoZXJjLWNvbXB1dGUtbmljaykpCiAgICAgICAgICAg ICAgICAgICAgIHBhc3N3b3JkCiAgICAgICAgICAgICAgICAgICAgIChmdWxsLW5hbWUgKGVyYy1j b21wdXRlLWZ1bGwtbmFtZSkpKQpAQCAtMjE1Niw3ICsyMTgyLDcgQEAgSXQgcGVybWl0cyB5b3Ug dG8gc2VsZWN0IGNvbm5lY3Rpb24gcGFyYW1ldGVycywgYW5kIHRoZW4gc3RhcnRzIEVSQy4KIAog Tm9uLWludGVyYWN0aXZlbHksIGl0IHRha2VzIHRoZSBrZXl3b3JkIGFyZ3VtZW50cwogICAgKHNl cnZlciAoZXJjLWNvbXB1dGUtc2VydmVyKSkKLSAgIChwb3J0ICAgKGVyYy1jb21wdXRlLXBvcnQp KQorICAgKHBvcnQgICBuaWwpCiAgICAobmljayAgIChlcmMtY29tcHV0ZS1uaWNrKSkKICAgIHBh c3N3b3JkCiAgICAoZnVsbC1uYW1lIChlcmMtY29tcHV0ZS1mdWxsLW5hbWUpKSkKQEAgLTIxNjYs MTAgKzIxOTIsMjMgQEAgVGhhdCBpcywgaWYgY2FsbGVkIHdpdGgKICAgIChlcmMgOnNlcnZlciBc ImlyYy5mcmVlbm9kZS5uZXRcIiA6ZnVsbC1uYW1lIFwiSGFycnkgUyBUcnVtYW5cIikKIAogdGhl biB0aGUgc2VydmVyIGFuZCBmdWxsLW5hbWUgd2lsbCBiZSBzZXQgdG8gdGhvc2UgdmFsdWVzLCB3 aGVyZWFzCi1gZXJjLWNvbXB1dGUtcG9ydCcsIGBlcmMtY29tcHV0ZS1uaWNrJyBhbmQgYGVyYy1j b21wdXRlLWZ1bGwtbmFtZScgd2lsbAotYmUgaW52b2tlZCBmb3IgdGhlIHZhbHVlcyBvZiB0aGUg b3RoZXIgcGFyYW1ldGVycy4iCisgYGVyYy1jb21wdXRlLW5pY2snIGFuZCBgZXJjLWNvbXB1dGUt ZnVsbC1uYW1lJyB3aWxsIGJlIGludm9rZWQKKyBmb3IgdGhlIHZhbHVlcyBvZiB0aGUgb3RoZXIg cGFyYW1ldGVycy4gSWYgdGhlIHNlcnZlciBhZGRyZXNzIGlzIGZvdW5kIGluCisgYGVyYy1zc2wt c2VydmVycycsIHRoZSBwb3J0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNlcnZlciB3aWxsIGJlIHVz ZWQsIG9yCisgYGVyYy1jb21wdXRlLXBvcnQnIHdpbGwgYmUgaW52b2tlZCBmb3IgaXRzIHZhbHVl LiIKICAgKGludGVyYWN0aXZlIChlcmMtc2VsZWN0LXJlYWQtYXJncykpCi0gIChlcmMtb3BlbiBz ZXJ2ZXIgcG9ydCBuaWNrIGZ1bGwtbmFtZSB0IHBhc3N3b3JkKSkKKyAgKGxldCogKCh1c2Utc3Ns IChlcXVhbCBuaWwgKGFzc29jLXN0cmluZyBzZXJ2ZXIgZXJjLXNzbC1ibGFja2xpc3QgdCkpKQor CSAoZXJjLXNlcnZlci1jb25uZWN0LWZ1bmN0aW9uCisJICAoaWYgKG9yIChhbmQgZXJjLXVzZS1z c2wgdXNlLXNzbCkKKwkJICAgKGFzc29jLXN0cmluZyBzZXJ2ZXIgZXJjLXNzbC1zZXJ2ZXJzIHQp KQorCSAgICAgICdlcmMtb3Blbi10bHMtc3RyZWFtCisJICAgICdvcGVuLW5ldHdvcmstc3RyZWFt KSkKKwkgKHNzbC1wb3J0IChudGggMSAoYXNzb2Mtc3RyaW5nIHNlcnZlciBlcmMtc3NsLXNlcnZl cnMgdCkpKSkKKyAgICAKKyAgICAoaWYgKGFuZCAobnVtYmVycCBwb3J0KSAobnVtYmVycCBzc2wt cG9ydCkgdXNlLXNzbCkKKwkoc2V0cSBwb3J0IHNzbC1wb3J0KQorICAgICAgKHNldHEgcG9ydCAg KGVyYy1jb21wdXRlLXBvcnQpKSkKKyAgICAoZXJjLW9wZW4gc2VydmVyIHBvcnQgbmljayBmdWxs LW5hbWUgdCBwYXNzd29yZCkpKQogCiA7OzsjIyNhdXRvbG9hZAogKGRlZmFsaWFzICdlcmMtc2Vs ZWN0ICdlcmMpCg== --047d7bd760028e074404ffa91813--