Track the address family of the last failed connection attempt
(either immediately or during TLS handshake), then disprefer
that address family during reconnection.
This was causing us to use the TLS settings from one server on another
which is not always appropriate. Instead, we now treat it like other
connection information and do not copy it. We get the TLS settings later
as appropriate when connecting.
Note there is still probably more that could be cleaned up here. For
example, the unix socket might be better treated as connection info too.
Fixes#1027.
This patch adds two new options to /CONNECT and /SERVER to let the user
pin either an x509 certificate and/or the public key of a given server.
It is possible to fetch the certificate outside of Irssi itself to
verify the checksum. To fetch the certificate call:
$ openssl s_client -connect chat.freenode.net:6697 < /dev/null 2>/dev/null | \
openssl x509 > freenode.cert
This will download chat.freenode.net:6697's TLS certificate and put it into the
file freenode.cert.
-tls_pinned_cert
----------------
This option allows you to specify the SHA-256 hash of the x509
certificate. When succesfully connected to the server, irssi will verify
that the given server certificate matches the pin set by the user.
The SHA-256 hash of a given certificate can be verified outside of irssi
using the OpenSSL command line tool:
$ openssl x509 -in freenode.cert -fingerprint -sha256 -noout
-tls_pinned_pubkey
------------------
This option allows you to specify the SHA-256 hash of the subject public key
information section of the server certificate. This section contains both the
cryptographic parameters for the public key, but also information about the
algorithm used together with the public key parameters.
When succesfully connected to the server, irssi will verify that the
given public key matches the pin set by the user.
The SHA-256 hash of a public key can be verified outside of irssi using
the OpenSSL command line tool:
$ openssl x509 -in freenode.cert -pubkey -noout | \
openssl pkey -pubin -outform der | \
openssl dgst -sha256 -c | \
tr a-z A-Z
It is possible to specify both -tls_pinned_cert and -tls_pinned_pubkey
together.
This patch changes the internal name of SSL to TLS. We also add -tls_*
options to /CONNECT and /SERVER, but make sure that the -ssl_* versions
of the commands continue to work like before.
Turns out it was fixing the wrong string, and trying to do
atoi("RECON-1") instead of atoi("1").
"/reconnect 1" worked, but "/reconnect RECON-1" gave that confusing
error message.
Passing this option will force Irssi to not execute the content of the
autosendcmd chatnet-setting upon connect.
Fixes: #738
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@5209 dbcabf3a-b0e7-0310-adc4-f8d773084564
Contrary to the standards, these are often transient.
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@4873 dbcabf3a-b0e7-0310-adc4-f8d773084564
reconnect_save_status() for a server that has not sent 001
yet, do not free and reallocate conn->channels twice, and do
not copy the channels if server->connrec->no_autojoin_channels
is set. It seems a special case because reconnect_save_status()
is not usually called for servers that have not sent 001
yet, but it can't really hurt.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4532 dbcabf3a-b0e7-0310-adc4-f8d773084564
fixing it properly would need to keep track of if the username/realname
came from /ircnet -username or /server add -username or what..
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3228 dbcabf3a-b0e7-0310-adc4-f8d773084564
been overridden with /server command anyway, so we most likely never want to
keep it.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3203 dbcabf3a-b0e7-0310-adc4-f8d773084564
certificate. See the -ssl_* options for /SERVER and /SERVER ADD. Patch by
Joel Eriksson <je-irssi@bitnux.com>.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3146 dbcabf3a-b0e7-0310-adc4-f8d773084564
automatic converter to these settings later. Meanwhile you CVS users can
fix your config files yourself :)
Time settings allow using "days", "hours", "minutes", "seconds" and
"milliseconds" or several of their abbreviations. For example "5d 4h
5msecs".
Size settings allow using "gbytes", "mbytes", "kbytes" and "bytes" or their
abbrevations. For example "5MB".
Level settings are currently handled pretty much the way they were before.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@3080 dbcabf3a-b0e7-0310-adc4-f8d773084564
means irssi stopped reconnecting to those servers forever if they occured
once.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2910 dbcabf3a-b0e7-0310-adc4-f8d773084564
this could lead scripts (or maybe even irssi itself) handle the partially
disconnected server wrong. Also moved the server->disconnected = TRUE before
the "server disconnected" signal is sent, this makes sure the
server_disconnect() is never called twice.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2339 dbcabf3a-b0e7-0310-adc4-f8d773084564
a lot in reconnects etc. this should make it easier to track when it's
supposed to be destroyed. Hopefully fixes a crash I assume is related to
this but couldn't find..
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1880 dbcabf3a-b0e7-0310-adc4-f8d773084564