From 5221b0b4d044d214539a1932a7a2eefbe88e4a66 Mon Sep 17 00:00:00 2001 From: Shane Synan Date: Wed, 13 Jul 2016 19:17:30 -0400 Subject: [PATCH] Optionally verify SSL connection to IRC servers Add SSL verify flag. > In database, add 'sslverify' to 'server' table, defaulting to false so upgrades won't break existing setups. This modifies schema, requiring a version bump, changes to migration scripts, etc. > In protocol, add 'sslVerify' to Network::Server, configuring if SSL errors should be ignored or result in disconnect. Add 'VerifyServerSSL' feature flag so the client can tell users about needing to upgrade their core to get this feature. If SSL verification fails and... > SSL verify enabled: disconnect and trigger a retry, logging the error message in the status buffer > SSL verify disabled: log the error message at Info level and continue connecting anyways Add "Verify connection security" checkbox to network add/edit dialogs with an explanatory tooltip. Tooltip is modified and checkbox disabled if the core does not support the feature. Connections are verified by default when "Use encrypted connection" is checked. Change "Use SSL" and "Use secure connection" to "Use encrypted connection" to better reflect what the option does. Fix tooltips and other strings in network editing dialogs. Testing: > Database schema handling SQLite new install - works SQLite upgrade - works SQLite migrate to Postgres - works Postgres new install - works Postgres upgrade - works > Client/core connections New client, new core - works New client, old core - works, verify SSL grayed out Old client, new core - works, verify SSL reset to false on edit (Unfortunately there's no way to use a boolean and tell if the client is old, or actually setting verify SSL to false. Would need the work-in-progress ClientFeature system 'esainane' designed) (Not using '@mention' since that notifies on EVERY commit push) --- src/common/network.cpp | 6 +- src/common/network.h | 16 +- src/common/presetnetworks.cpp | 3 +- src/common/quassel.h | 3 +- .../{17 => 18}/delete_backlog_by_uid.sql | 0 .../{17 => 18}/delete_backlog_for_buffer.sql | 0 .../{17 => 18}/delete_backlog_for_network.sql | 0 .../{17 => 18}/delete_buffer_for_bufferid.sql | 0 .../{17 => 18}/delete_buffers_by_uid.sql | 0 .../{17 => 18}/delete_buffers_for_network.sql | 0 .../PostgreSQL/{17 => 18}/delete_identity.sql | 0 .../delete_ircservers_for_network.sql | 0 .../PostgreSQL/{17 => 18}/delete_network.sql | 0 .../{17 => 18}/delete_networks_by_uid.sql | 0 .../PostgreSQL/{17 => 18}/delete_nicks.sql | 0 .../{17 => 18}/delete_quasseluser.sql | 0 .../PostgreSQL/{17 => 18}/insert_buffer.sql | 0 .../PostgreSQL/{17 => 18}/insert_identity.sql | 0 .../PostgreSQL/{17 => 18}/insert_message.sql | 0 .../PostgreSQL/{17 => 18}/insert_network.sql | 0 .../SQL/PostgreSQL/{17 => 18}/insert_nick.sql | 0 .../{17 => 18}/insert_quasseluser.sql | 0 .../PostgreSQL/{17 => 18}/insert_sender.sql | 0 .../PostgreSQL/{17 => 18}/insert_server.sql | 4 +- .../{17 => 18}/insert_user_setting.sql | 0 .../{17 => 18}/migrate_write_backlog.sql | 0 .../{17 => 18}/migrate_write_buffer.sql | 0 .../{17 => 18}/migrate_write_identity.sql | 0 .../migrate_write_identity_nick.sql | 0 .../{17 => 18}/migrate_write_ircserver.sql | 4 +- .../{17 => 18}/migrate_write_network.sql | 0 .../{17 => 18}/migrate_write_quasseluser.sql | 0 .../{17 => 18}/migrate_write_sender.sql | 0 .../{17 => 18}/migrate_write_usersetting.sql | 0 .../PostgreSQL/{17 => 18}/select_authuser.sql | 0 .../{17 => 18}/select_bufferByName.sql | 0 .../{17 => 18}/select_bufferExists.sql | 0 .../{17 => 18}/select_buffer_by_id.sql | 0 .../select_buffer_lastseen_messages.sql | 0 .../select_buffer_markerlinemsgids.sql | 0 .../PostgreSQL/{17 => 18}/select_buffers.sql | 0 .../{17 => 18}/select_buffers_for_network.sql | 0 .../{17 => 18}/select_checkidentity.sql | 0 .../{17 => 18}/select_connected_networks.sql | 0 .../{17 => 18}/select_identities.sql | 0 .../{17 => 18}/select_internaluser.sql | 0 .../PostgreSQL/{17 => 18}/select_messages.sql | 0 .../{17 => 18}/select_messagesAll.sql | 0 .../{17 => 18}/select_messagesAllNew.sql | 0 .../{17 => 18}/select_messagesNewerThan.sql | 0 .../{17 => 18}/select_messagesRange.sql | 0 .../{17 => 18}/select_networkExists.sql | 0 .../{17 => 18}/select_network_awaymsg.sql | 0 .../{17 => 18}/select_network_usermode.sql | 0 .../{17 => 18}/select_networks_for_user.sql | 0 .../PostgreSQL/{17 => 18}/select_nicks.sql | 0 .../{17 => 18}/select_persistent_channels.sql | 0 .../PostgreSQL/{17 => 18}/select_senderid.sql | 0 .../{17 => 18}/select_servers_for_network.sql | 2 +- .../{17 => 18}/select_user_setting.sql | 0 .../PostgreSQL/{17 => 18}/select_userid.sql | 0 .../{17 => 18}/setup_000_quasseluser.sql | 0 .../{17 => 18}/setup_010_sender.sql | 0 .../{17 => 18}/setup_020_identity.sql | 0 .../{17 => 18}/setup_030_identity_nick.sql | 0 .../{17 => 18}/setup_040_network.sql | 0 .../{17 => 18}/setup_050_buffer.sql | 0 .../{17 => 18}/setup_060_backlog.sql | 0 .../{17 => 18}/setup_070_coreinfo.sql | 0 .../{17 => 18}/setup_080_ircservers.sql | 3 +- .../{17 => 18}/setup_090_backlog_idx.sql | 0 .../{17 => 18}/setup_100_user_setting.sql | 0 .../{17 => 18}/setup_110_alter_sender_seq.sql | 0 .../setup_120_alter_messageid_seq.sql | 0 .../{17 => 18}/update_backlog_bufferid.sql | 0 .../{17 => 18}/update_buffer_lastseen.sql | 0 .../update_buffer_markerlinemsgid.sql | 0 .../{17 => 18}/update_buffer_name.sql | 0 .../update_buffer_persistent_channel.sql | 0 .../update_buffer_set_channel_key.sql | 0 .../PostgreSQL/{17 => 18}/update_identity.sql | 0 .../PostgreSQL/{17 => 18}/update_network.sql | 0 .../{17 => 18}/update_network_connected.sql | 0 .../{17 => 18}/update_network_set_awaymsg.sql | 0 .../update_network_set_usermode.sql | 0 .../{17 => 18}/update_user_setting.sql | 0 .../PostgreSQL/{17 => 18}/update_username.sql | 0 .../{17 => 18}/update_userpassword.sql | 0 ...rade_000_alter_ircserver_add_sslverify.sql | 2 + .../{18 => 19}/delete_backlog_by_uid.sql | 0 .../{18 => 19}/delete_backlog_for_buffer.sql | 0 .../{18 => 19}/delete_backlog_for_network.sql | 0 .../{18 => 19}/delete_buffer_for_bufferid.sql | 0 .../{18 => 19}/delete_buffers_by_uid.sql | 0 .../{18 => 19}/delete_buffers_for_network.sql | 0 .../SQL/SQLite/{18 => 19}/delete_identity.sql | 0 .../delete_ircservers_for_network.sql | 0 .../SQL/SQLite/{18 => 19}/delete_network.sql | 0 .../{18 => 19}/delete_networks_by_uid.sql | 0 .../SQL/SQLite/{18 => 19}/delete_nicks.sql | 0 .../SQLite/{18 => 19}/delete_quasseluser.sql | 0 .../SQL/SQLite/{18 => 19}/insert_buffer.sql | 0 .../SQL/SQLite/{18 => 19}/insert_identity.sql | 0 .../SQL/SQLite/{18 => 19}/insert_message.sql | 0 .../SQL/SQLite/{18 => 19}/insert_network.sql | 0 .../SQL/SQLite/{18 => 19}/insert_nick.sql | 0 .../SQLite/{18 => 19}/insert_quasseluser.sql | 0 .../SQL/SQLite/{18 => 19}/insert_sender.sql | 0 .../SQL/SQLite/{18 => 19}/insert_server.sql | 4 +- .../SQLite/{18 => 19}/insert_user_setting.sql | 0 .../{18 => 19}/migrate_read_backlog.sql | 0 .../SQLite/{18 => 19}/migrate_read_buffer.sql | 0 .../{18 => 19}/migrate_read_identity.sql | 0 .../{18 => 19}/migrate_read_identity_nick.sql | 0 .../{18 => 19}/migrate_read_ircserver.sql | 2 +- .../{18 => 19}/migrate_read_network.sql | 0 .../{18 => 19}/migrate_read_quasseluser.sql | 0 .../SQLite/{18 => 19}/migrate_read_sender.sql | 0 .../{18 => 19}/migrate_read_usersetting.sql | 0 .../SQL/SQLite/{18 => 19}/select_authuser.sql | 0 .../SQLite/{18 => 19}/select_bufferByName.sql | 0 .../SQLite/{18 => 19}/select_bufferExists.sql | 0 .../SQLite/{18 => 19}/select_buffer_by_id.sql | 0 .../select_buffer_lastseen_messages.sql | 0 .../select_buffer_markerlinemsgids.sql | 0 .../SQL/SQLite/{18 => 19}/select_buffers.sql | 0 .../{18 => 19}/select_buffers_for_merge.sql | 0 .../{18 => 19}/select_buffers_for_network.sql | 0 .../{18 => 19}/select_checkidentity.sql | 0 .../{18 => 19}/select_connected_networks.sql | 0 .../SQLite/{18 => 19}/select_identities.sql | 0 .../SQLite/{18 => 19}/select_internaluser.sql | 0 .../SQL/SQLite/{18 => 19}/select_messages.sql | 0 .../SQLite/{18 => 19}/select_messagesAll.sql | 0 .../{18 => 19}/select_messagesAllNew.sql | 0 .../{18 => 19}/select_messagesNewerThan.sql | 0 .../{18 => 19}/select_messagesNewestK.sql | 0 .../{18 => 19}/select_networkExists.sql | 0 .../{18 => 19}/select_network_awaymsg.sql | 0 .../{18 => 19}/select_network_usermode.sql | 0 .../{18 => 19}/select_networks_for_user.sql | 0 .../SQL/SQLite/{18 => 19}/select_nicks.sql | 0 .../{18 => 19}/select_persistent_channels.sql | 0 .../{18 => 19}/select_servers_for_network.sql | 2 +- .../SQLite/{18 => 19}/select_user_setting.sql | 0 .../SQL/SQLite/{18 => 19}/select_userid.sql | 0 .../{18 => 19}/setup_000_quasseluser.sql | 0 .../SQLite/{18 => 19}/setup_010_sender.sql | 0 .../SQLite/{18 => 19}/setup_020_network.sql | 0 .../SQLite/{18 => 19}/setup_030_buffer.sql | 0 .../{18 => 19}/setup_040_buffer_idx.sql | 0 .../{18 => 19}/setup_050_buffer_cname_idx.sql | 0 .../SQLite/{18 => 19}/setup_060_backlog.sql | 0 .../SQLite/{18 => 19}/setup_070_coreinfo.sql | 0 .../{18 => 19}/setup_080_ircservers.sql | 3 +- .../{18 => 19}/setup_090_backlog_idx.sql | 0 .../{18 => 19}/setup_100_backlog_idx2.sql | 0 .../{18 => 19}/setup_110_buffer_user_idx.sql | 0 .../{18 => 19}/setup_120_user_setting.sql | 0 .../SQLite/{18 => 19}/setup_130_identity.sql | 0 .../{18 => 19}/setup_140_identity_nick.sql | 0 .../{18 => 19}/update_backlog_bufferid.sql | 0 .../{18 => 19}/update_buffer_lastseen.sql | 0 .../update_buffer_markerlinemsgid.sql | 0 .../SQLite/{18 => 19}/update_buffer_name.sql | 0 .../update_buffer_persistent_channel.sql | 0 .../update_buffer_set_channel_key.sql | 0 .../SQL/SQLite/{18 => 19}/update_identity.sql | 0 .../SQL/SQLite/{18 => 19}/update_network.sql | 0 .../{18 => 19}/update_network_connected.sql | 0 .../{18 => 19}/update_network_set_awaymsg.sql | 0 .../update_network_set_usermode.sql | 0 .../SQLite/{18 => 19}/update_user_setting.sql | 0 .../SQL/SQLite/{18 => 19}/update_username.sql | 0 .../SQLite/{18 => 19}/update_userpassword.sql | 0 ...rade_000_alter_ircserver_add_sslverify.sql | 2 + src/core/abstractsqlstorage.h | 1 + src/core/corenetwork.cpp | 30 +- src/core/postgresqlstorage.cpp | 3 + src/core/sql.qrc | 462 +++++++++--------- src/core/sqlitestorage.cpp | 3 + src/qtui/settingspages/networkadddlg.ui | 24 +- .../settingspages/networkssettingspage.cpp | 46 +- src/qtui/settingspages/servereditdlg.ui | 24 +- 184 files changed, 392 insertions(+), 257 deletions(-) rename src/core/SQL/PostgreSQL/{17 => 18}/delete_backlog_by_uid.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/delete_backlog_for_buffer.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/delete_backlog_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/delete_buffer_for_bufferid.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/delete_buffers_by_uid.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/delete_buffers_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/delete_identity.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/delete_ircservers_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/delete_network.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/delete_networks_by_uid.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/delete_nicks.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/delete_quasseluser.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/insert_buffer.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/insert_identity.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/insert_message.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/insert_network.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/insert_nick.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/insert_quasseluser.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/insert_sender.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/insert_server.sql (79%) rename src/core/SQL/PostgreSQL/{17 => 18}/insert_user_setting.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/migrate_write_backlog.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/migrate_write_buffer.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/migrate_write_identity.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/migrate_write_identity_nick.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/migrate_write_ircserver.sql (57%) rename src/core/SQL/PostgreSQL/{17 => 18}/migrate_write_network.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/migrate_write_quasseluser.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/migrate_write_sender.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/migrate_write_usersetting.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_authuser.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_bufferByName.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_bufferExists.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_buffer_by_id.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_buffer_lastseen_messages.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_buffer_markerlinemsgids.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_buffers.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_buffers_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_checkidentity.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_connected_networks.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_identities.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_internaluser.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_messages.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_messagesAll.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_messagesAllNew.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_messagesNewerThan.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_messagesRange.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_networkExists.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_network_awaymsg.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_network_usermode.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_networks_for_user.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_nicks.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_persistent_channels.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_senderid.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_servers_for_network.sql (63%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_user_setting.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/select_userid.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_000_quasseluser.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_010_sender.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_020_identity.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_030_identity_nick.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_040_network.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_050_buffer.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_060_backlog.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_070_coreinfo.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_080_ircservers.sql (86%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_090_backlog_idx.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_100_user_setting.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_110_alter_sender_seq.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/setup_120_alter_messageid_seq.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_backlog_bufferid.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_buffer_lastseen.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_buffer_markerlinemsgid.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_buffer_name.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_buffer_persistent_channel.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_buffer_set_channel_key.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_identity.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_network.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_network_connected.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_network_set_awaymsg.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_network_set_usermode.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_user_setting.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_username.sql (100%) rename src/core/SQL/PostgreSQL/{17 => 18}/update_userpassword.sql (100%) create mode 100644 src/core/SQL/PostgreSQL/18/upgrade_000_alter_ircserver_add_sslverify.sql rename src/core/SQL/SQLite/{18 => 19}/delete_backlog_by_uid.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/delete_backlog_for_buffer.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/delete_backlog_for_network.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/delete_buffer_for_bufferid.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/delete_buffers_by_uid.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/delete_buffers_for_network.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/delete_identity.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/delete_ircservers_for_network.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/delete_network.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/delete_networks_by_uid.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/delete_nicks.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/delete_quasseluser.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/insert_buffer.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/insert_identity.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/insert_message.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/insert_network.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/insert_nick.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/insert_quasseluser.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/insert_sender.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/insert_server.sql (79%) rename src/core/SQL/SQLite/{18 => 19}/insert_user_setting.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/migrate_read_backlog.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/migrate_read_buffer.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/migrate_read_identity.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/migrate_read_identity_nick.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/migrate_read_ircserver.sql (84%) rename src/core/SQL/SQLite/{18 => 19}/migrate_read_network.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/migrate_read_quasseluser.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/migrate_read_sender.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/migrate_read_usersetting.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_authuser.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_bufferByName.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_bufferExists.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_buffer_by_id.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_buffer_lastseen_messages.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_buffer_markerlinemsgids.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_buffers.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_buffers_for_merge.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_buffers_for_network.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_checkidentity.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_connected_networks.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_identities.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_internaluser.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_messages.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_messagesAll.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_messagesAllNew.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_messagesNewerThan.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_messagesNewestK.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_networkExists.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_network_awaymsg.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_network_usermode.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_networks_for_user.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_nicks.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_persistent_channels.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_servers_for_network.sql (63%) rename src/core/SQL/SQLite/{18 => 19}/select_user_setting.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/select_userid.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_000_quasseluser.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_010_sender.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_020_network.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_030_buffer.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_040_buffer_idx.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_050_buffer_cname_idx.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_060_backlog.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_070_coreinfo.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_080_ircservers.sql (85%) rename src/core/SQL/SQLite/{18 => 19}/setup_090_backlog_idx.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_100_backlog_idx2.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_110_buffer_user_idx.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_120_user_setting.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_130_identity.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/setup_140_identity_nick.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_backlog_bufferid.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_buffer_lastseen.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_buffer_markerlinemsgid.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_buffer_name.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_buffer_persistent_channel.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_buffer_set_channel_key.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_identity.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_network.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_network_connected.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_network_set_awaymsg.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_network_set_usermode.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_user_setting.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_username.sql (100%) rename src/core/SQL/SQLite/{18 => 19}/update_userpassword.sql (100%) create mode 100644 src/core/SQL/SQLite/19/upgrade_000_alter_ircserver_add_sslverify.sql diff --git a/src/common/network.cpp b/src/common/network.cpp index ef24220a..cde2af76 100644 --- a/src/common/network.cpp +++ b/src/common/network.cpp @@ -1111,6 +1111,7 @@ QDataStream &operator<<(QDataStream &out, const Network::Server &server) serverMap["Port"] = server.port; serverMap["Password"] = server.password; serverMap["UseSSL"] = server.useSsl; + serverMap["sslVerify"] = server.sslVerify; serverMap["sslVersion"] = server.sslVersion; serverMap["UseProxy"] = server.useProxy; serverMap["ProxyType"] = server.proxyType; @@ -1131,6 +1132,7 @@ QDataStream &operator>>(QDataStream &in, Network::Server &server) server.port = serverMap["Port"].toUInt(); server.password = serverMap["Password"].toString(); server.useSsl = serverMap["UseSSL"].toBool(); + server.sslVerify = serverMap["sslVerify"].toBool(); server.sslVersion = serverMap["sslVersion"].toInt(); server.useProxy = serverMap["UseProxy"].toBool(); server.proxyType = serverMap["ProxyType"].toInt(); @@ -1148,6 +1150,7 @@ bool Network::Server::operator==(const Server &other) const if (port != other.port) return false; if (password != other.password) return false; if (useSsl != other.useSsl) return false; + if (sslVerify != other.sslVerify) return false; if (sslVersion != other.sslVersion) return false; if (useProxy != other.useProxy) return false; if (proxyType != other.proxyType) return false; @@ -1167,6 +1170,7 @@ bool Network::Server::operator!=(const Server &other) const QDebug operator<<(QDebug dbg, const Network::Server &server) { - dbg.nospace() << "Server(host = " << server.host << ":" << server.port << ", useSsl = " << server.useSsl << ")"; + dbg.nospace() << "Server(host = " << server.host << ":" << server.port << ", useSsl = " << + server.useSsl << ", sslVerify = " << server.sslVerify << ")"; return dbg.space(); } diff --git a/src/common/network.h b/src/common/network.h index 09310fd7..99732d91 100644 --- a/src/common/network.h +++ b/src/common/network.h @@ -101,6 +101,7 @@ public : uint port; QString password; bool useSsl; + bool sslVerify; /// If true, validate SSL certificates int sslVersion; bool useProxy; @@ -110,10 +111,17 @@ public : QString proxyUser; QString proxyPass; - Server() : port(6667), useSsl(false), sslVersion(0), useProxy(false), proxyType(QNetworkProxy::Socks5Proxy), proxyHost("localhost"), proxyPort(8080) {} - Server(const QString &host, uint port, const QString &password, bool useSsl) - : host(host), port(port), password(password), useSsl(useSsl), sslVersion(0), - useProxy(false), proxyType(QNetworkProxy::Socks5Proxy), proxyHost("localhost"), proxyPort(8080) {} + // sslVerify only applies when useSsl is true. sslVerify should be enabled by default, + // so enabling useSsl offers a more secure default. + Server() : port(6667), useSsl(false), sslVerify(true), sslVersion(0), useProxy(false), + proxyType(QNetworkProxy::Socks5Proxy), proxyHost("localhost"), proxyPort(8080) {} + + Server(const QString &host, uint port, const QString &password, bool useSsl, + bool sslVerify) + : host(host), port(port), password(password), useSsl(useSsl), sslVerify(sslVerify), + sslVersion(0), useProxy(false), proxyType(QNetworkProxy::Socks5Proxy), + proxyHost("localhost"), proxyPort(8080) {} + bool operator==(const Server &other) const; bool operator!=(const Server &other) const; }; diff --git a/src/common/presetnetworks.cpp b/src/common/presetnetworks.cpp index d4a582fe..64e1094c 100644 --- a/src/common/presetnetworks.cpp +++ b/src/common/presetnetworks.cpp @@ -86,7 +86,8 @@ NetworkInfo PresetNetworks::networkInfo(const QString &networkName) qWarning() << "Invalid port entry in networks.conf:" << server; continue; } - info.serverList << Network::Server(splitserver[0].trimmed(), port, QString(), ssl); + // TODO Should networks.conf be modified to allow requiring SSL? + info.serverList << Network::Server(splitserver[0].trimmed(), port, QString(), ssl, false); } } return info; diff --git a/src/common/quassel.h b/src/common/quassel.h index 09a5d847..a2a573cc 100644 --- a/src/common/quassel.h +++ b/src/common/quassel.h @@ -72,8 +72,9 @@ public: HideInactiveNetworks = 0x0008, PasswordChange = 0x0010, CapNegotiation = 0x0020, /// IRCv3 capability negotiation, account tracking + VerifyServerSSL = 0x0040, /// IRC server SSL validation - NumFeatures = 0x0020 + NumFeatures = 0x0040 }; Q_DECLARE_FLAGS(Features, Feature) diff --git a/src/core/SQL/PostgreSQL/17/delete_backlog_by_uid.sql b/src/core/SQL/PostgreSQL/18/delete_backlog_by_uid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/delete_backlog_by_uid.sql rename to src/core/SQL/PostgreSQL/18/delete_backlog_by_uid.sql diff --git a/src/core/SQL/PostgreSQL/17/delete_backlog_for_buffer.sql b/src/core/SQL/PostgreSQL/18/delete_backlog_for_buffer.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/delete_backlog_for_buffer.sql rename to src/core/SQL/PostgreSQL/18/delete_backlog_for_buffer.sql diff --git a/src/core/SQL/PostgreSQL/17/delete_backlog_for_network.sql b/src/core/SQL/PostgreSQL/18/delete_backlog_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/delete_backlog_for_network.sql rename to src/core/SQL/PostgreSQL/18/delete_backlog_for_network.sql diff --git a/src/core/SQL/PostgreSQL/17/delete_buffer_for_bufferid.sql b/src/core/SQL/PostgreSQL/18/delete_buffer_for_bufferid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/delete_buffer_for_bufferid.sql rename to src/core/SQL/PostgreSQL/18/delete_buffer_for_bufferid.sql diff --git a/src/core/SQL/PostgreSQL/17/delete_buffers_by_uid.sql b/src/core/SQL/PostgreSQL/18/delete_buffers_by_uid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/delete_buffers_by_uid.sql rename to src/core/SQL/PostgreSQL/18/delete_buffers_by_uid.sql diff --git a/src/core/SQL/PostgreSQL/17/delete_buffers_for_network.sql b/src/core/SQL/PostgreSQL/18/delete_buffers_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/delete_buffers_for_network.sql rename to src/core/SQL/PostgreSQL/18/delete_buffers_for_network.sql diff --git a/src/core/SQL/PostgreSQL/17/delete_identity.sql b/src/core/SQL/PostgreSQL/18/delete_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/delete_identity.sql rename to src/core/SQL/PostgreSQL/18/delete_identity.sql diff --git a/src/core/SQL/PostgreSQL/17/delete_ircservers_for_network.sql b/src/core/SQL/PostgreSQL/18/delete_ircservers_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/delete_ircservers_for_network.sql rename to src/core/SQL/PostgreSQL/18/delete_ircservers_for_network.sql diff --git a/src/core/SQL/PostgreSQL/17/delete_network.sql b/src/core/SQL/PostgreSQL/18/delete_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/delete_network.sql rename to src/core/SQL/PostgreSQL/18/delete_network.sql diff --git a/src/core/SQL/PostgreSQL/17/delete_networks_by_uid.sql b/src/core/SQL/PostgreSQL/18/delete_networks_by_uid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/delete_networks_by_uid.sql rename to src/core/SQL/PostgreSQL/18/delete_networks_by_uid.sql diff --git a/src/core/SQL/PostgreSQL/17/delete_nicks.sql b/src/core/SQL/PostgreSQL/18/delete_nicks.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/delete_nicks.sql rename to src/core/SQL/PostgreSQL/18/delete_nicks.sql diff --git a/src/core/SQL/PostgreSQL/17/delete_quasseluser.sql b/src/core/SQL/PostgreSQL/18/delete_quasseluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/delete_quasseluser.sql rename to src/core/SQL/PostgreSQL/18/delete_quasseluser.sql diff --git a/src/core/SQL/PostgreSQL/17/insert_buffer.sql b/src/core/SQL/PostgreSQL/18/insert_buffer.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/insert_buffer.sql rename to src/core/SQL/PostgreSQL/18/insert_buffer.sql diff --git a/src/core/SQL/PostgreSQL/17/insert_identity.sql b/src/core/SQL/PostgreSQL/18/insert_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/insert_identity.sql rename to src/core/SQL/PostgreSQL/18/insert_identity.sql diff --git a/src/core/SQL/PostgreSQL/17/insert_message.sql b/src/core/SQL/PostgreSQL/18/insert_message.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/insert_message.sql rename to src/core/SQL/PostgreSQL/18/insert_message.sql diff --git a/src/core/SQL/PostgreSQL/17/insert_network.sql b/src/core/SQL/PostgreSQL/18/insert_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/insert_network.sql rename to src/core/SQL/PostgreSQL/18/insert_network.sql diff --git a/src/core/SQL/PostgreSQL/17/insert_nick.sql b/src/core/SQL/PostgreSQL/18/insert_nick.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/insert_nick.sql rename to src/core/SQL/PostgreSQL/18/insert_nick.sql diff --git a/src/core/SQL/PostgreSQL/17/insert_quasseluser.sql b/src/core/SQL/PostgreSQL/18/insert_quasseluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/insert_quasseluser.sql rename to src/core/SQL/PostgreSQL/18/insert_quasseluser.sql diff --git a/src/core/SQL/PostgreSQL/17/insert_sender.sql b/src/core/SQL/PostgreSQL/18/insert_sender.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/insert_sender.sql rename to src/core/SQL/PostgreSQL/18/insert_sender.sql diff --git a/src/core/SQL/PostgreSQL/17/insert_server.sql b/src/core/SQL/PostgreSQL/18/insert_server.sql similarity index 79% rename from src/core/SQL/PostgreSQL/17/insert_server.sql rename to src/core/SQL/PostgreSQL/18/insert_server.sql index d9605ebd..e7750885 100644 --- a/src/core/SQL/PostgreSQL/17/insert_server.sql +++ b/src/core/SQL/PostgreSQL/18/insert_server.sql @@ -1,2 +1,2 @@ -INSERT INTO ircserver (userid, networkid, hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass) -VALUES (:userid, :networkid, :hostname, :port, :password, :ssl, :sslversion, :useproxy, :proxytype, :proxyhost, :proxyport, :proxyuser, :proxypass) +INSERT INTO ircserver (userid, networkid, hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass, sslverify) +VALUES (:userid, :networkid, :hostname, :port, :password, :ssl, :sslversion, :useproxy, :proxytype, :proxyhost, :proxyport, :proxyuser, :proxypass, :sslverify) diff --git a/src/core/SQL/PostgreSQL/17/insert_user_setting.sql b/src/core/SQL/PostgreSQL/18/insert_user_setting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/insert_user_setting.sql rename to src/core/SQL/PostgreSQL/18/insert_user_setting.sql diff --git a/src/core/SQL/PostgreSQL/17/migrate_write_backlog.sql b/src/core/SQL/PostgreSQL/18/migrate_write_backlog.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/migrate_write_backlog.sql rename to src/core/SQL/PostgreSQL/18/migrate_write_backlog.sql diff --git a/src/core/SQL/PostgreSQL/17/migrate_write_buffer.sql b/src/core/SQL/PostgreSQL/18/migrate_write_buffer.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/migrate_write_buffer.sql rename to src/core/SQL/PostgreSQL/18/migrate_write_buffer.sql diff --git a/src/core/SQL/PostgreSQL/17/migrate_write_identity.sql b/src/core/SQL/PostgreSQL/18/migrate_write_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/migrate_write_identity.sql rename to src/core/SQL/PostgreSQL/18/migrate_write_identity.sql diff --git a/src/core/SQL/PostgreSQL/17/migrate_write_identity_nick.sql b/src/core/SQL/PostgreSQL/18/migrate_write_identity_nick.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/migrate_write_identity_nick.sql rename to src/core/SQL/PostgreSQL/18/migrate_write_identity_nick.sql diff --git a/src/core/SQL/PostgreSQL/17/migrate_write_ircserver.sql b/src/core/SQL/PostgreSQL/18/migrate_write_ircserver.sql similarity index 57% rename from src/core/SQL/PostgreSQL/17/migrate_write_ircserver.sql rename to src/core/SQL/PostgreSQL/18/migrate_write_ircserver.sql index e4d45dae..c0432dfd 100644 --- a/src/core/SQL/PostgreSQL/17/migrate_write_ircserver.sql +++ b/src/core/SQL/PostgreSQL/18/migrate_write_ircserver.sql @@ -1,2 +1,2 @@ -INSERT INTO ircserver (serverid, userid, networkid, hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass) -VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) +INSERT INTO ircserver (serverid, userid, networkid, hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass, sslverify) +VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) diff --git a/src/core/SQL/PostgreSQL/17/migrate_write_network.sql b/src/core/SQL/PostgreSQL/18/migrate_write_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/migrate_write_network.sql rename to src/core/SQL/PostgreSQL/18/migrate_write_network.sql diff --git a/src/core/SQL/PostgreSQL/17/migrate_write_quasseluser.sql b/src/core/SQL/PostgreSQL/18/migrate_write_quasseluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/migrate_write_quasseluser.sql rename to src/core/SQL/PostgreSQL/18/migrate_write_quasseluser.sql diff --git a/src/core/SQL/PostgreSQL/17/migrate_write_sender.sql b/src/core/SQL/PostgreSQL/18/migrate_write_sender.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/migrate_write_sender.sql rename to src/core/SQL/PostgreSQL/18/migrate_write_sender.sql diff --git a/src/core/SQL/PostgreSQL/17/migrate_write_usersetting.sql b/src/core/SQL/PostgreSQL/18/migrate_write_usersetting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/migrate_write_usersetting.sql rename to src/core/SQL/PostgreSQL/18/migrate_write_usersetting.sql diff --git a/src/core/SQL/PostgreSQL/17/select_authuser.sql b/src/core/SQL/PostgreSQL/18/select_authuser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_authuser.sql rename to src/core/SQL/PostgreSQL/18/select_authuser.sql diff --git a/src/core/SQL/PostgreSQL/17/select_bufferByName.sql b/src/core/SQL/PostgreSQL/18/select_bufferByName.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_bufferByName.sql rename to src/core/SQL/PostgreSQL/18/select_bufferByName.sql diff --git a/src/core/SQL/PostgreSQL/17/select_bufferExists.sql b/src/core/SQL/PostgreSQL/18/select_bufferExists.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_bufferExists.sql rename to src/core/SQL/PostgreSQL/18/select_bufferExists.sql diff --git a/src/core/SQL/PostgreSQL/17/select_buffer_by_id.sql b/src/core/SQL/PostgreSQL/18/select_buffer_by_id.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_buffer_by_id.sql rename to src/core/SQL/PostgreSQL/18/select_buffer_by_id.sql diff --git a/src/core/SQL/PostgreSQL/17/select_buffer_lastseen_messages.sql b/src/core/SQL/PostgreSQL/18/select_buffer_lastseen_messages.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_buffer_lastseen_messages.sql rename to src/core/SQL/PostgreSQL/18/select_buffer_lastseen_messages.sql diff --git a/src/core/SQL/PostgreSQL/17/select_buffer_markerlinemsgids.sql b/src/core/SQL/PostgreSQL/18/select_buffer_markerlinemsgids.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_buffer_markerlinemsgids.sql rename to src/core/SQL/PostgreSQL/18/select_buffer_markerlinemsgids.sql diff --git a/src/core/SQL/PostgreSQL/17/select_buffers.sql b/src/core/SQL/PostgreSQL/18/select_buffers.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_buffers.sql rename to src/core/SQL/PostgreSQL/18/select_buffers.sql diff --git a/src/core/SQL/PostgreSQL/17/select_buffers_for_network.sql b/src/core/SQL/PostgreSQL/18/select_buffers_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_buffers_for_network.sql rename to src/core/SQL/PostgreSQL/18/select_buffers_for_network.sql diff --git a/src/core/SQL/PostgreSQL/17/select_checkidentity.sql b/src/core/SQL/PostgreSQL/18/select_checkidentity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_checkidentity.sql rename to src/core/SQL/PostgreSQL/18/select_checkidentity.sql diff --git a/src/core/SQL/PostgreSQL/17/select_connected_networks.sql b/src/core/SQL/PostgreSQL/18/select_connected_networks.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_connected_networks.sql rename to src/core/SQL/PostgreSQL/18/select_connected_networks.sql diff --git a/src/core/SQL/PostgreSQL/17/select_identities.sql b/src/core/SQL/PostgreSQL/18/select_identities.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_identities.sql rename to src/core/SQL/PostgreSQL/18/select_identities.sql diff --git a/src/core/SQL/PostgreSQL/17/select_internaluser.sql b/src/core/SQL/PostgreSQL/18/select_internaluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_internaluser.sql rename to src/core/SQL/PostgreSQL/18/select_internaluser.sql diff --git a/src/core/SQL/PostgreSQL/17/select_messages.sql b/src/core/SQL/PostgreSQL/18/select_messages.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_messages.sql rename to src/core/SQL/PostgreSQL/18/select_messages.sql diff --git a/src/core/SQL/PostgreSQL/17/select_messagesAll.sql b/src/core/SQL/PostgreSQL/18/select_messagesAll.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_messagesAll.sql rename to src/core/SQL/PostgreSQL/18/select_messagesAll.sql diff --git a/src/core/SQL/PostgreSQL/17/select_messagesAllNew.sql b/src/core/SQL/PostgreSQL/18/select_messagesAllNew.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_messagesAllNew.sql rename to src/core/SQL/PostgreSQL/18/select_messagesAllNew.sql diff --git a/src/core/SQL/PostgreSQL/17/select_messagesNewerThan.sql b/src/core/SQL/PostgreSQL/18/select_messagesNewerThan.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_messagesNewerThan.sql rename to src/core/SQL/PostgreSQL/18/select_messagesNewerThan.sql diff --git a/src/core/SQL/PostgreSQL/17/select_messagesRange.sql b/src/core/SQL/PostgreSQL/18/select_messagesRange.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_messagesRange.sql rename to src/core/SQL/PostgreSQL/18/select_messagesRange.sql diff --git a/src/core/SQL/PostgreSQL/17/select_networkExists.sql b/src/core/SQL/PostgreSQL/18/select_networkExists.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_networkExists.sql rename to src/core/SQL/PostgreSQL/18/select_networkExists.sql diff --git a/src/core/SQL/PostgreSQL/17/select_network_awaymsg.sql b/src/core/SQL/PostgreSQL/18/select_network_awaymsg.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_network_awaymsg.sql rename to src/core/SQL/PostgreSQL/18/select_network_awaymsg.sql diff --git a/src/core/SQL/PostgreSQL/17/select_network_usermode.sql b/src/core/SQL/PostgreSQL/18/select_network_usermode.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_network_usermode.sql rename to src/core/SQL/PostgreSQL/18/select_network_usermode.sql diff --git a/src/core/SQL/PostgreSQL/17/select_networks_for_user.sql b/src/core/SQL/PostgreSQL/18/select_networks_for_user.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_networks_for_user.sql rename to src/core/SQL/PostgreSQL/18/select_networks_for_user.sql diff --git a/src/core/SQL/PostgreSQL/17/select_nicks.sql b/src/core/SQL/PostgreSQL/18/select_nicks.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_nicks.sql rename to src/core/SQL/PostgreSQL/18/select_nicks.sql diff --git a/src/core/SQL/PostgreSQL/17/select_persistent_channels.sql b/src/core/SQL/PostgreSQL/18/select_persistent_channels.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_persistent_channels.sql rename to src/core/SQL/PostgreSQL/18/select_persistent_channels.sql diff --git a/src/core/SQL/PostgreSQL/17/select_senderid.sql b/src/core/SQL/PostgreSQL/18/select_senderid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_senderid.sql rename to src/core/SQL/PostgreSQL/18/select_senderid.sql diff --git a/src/core/SQL/PostgreSQL/17/select_servers_for_network.sql b/src/core/SQL/PostgreSQL/18/select_servers_for_network.sql similarity index 63% rename from src/core/SQL/PostgreSQL/17/select_servers_for_network.sql rename to src/core/SQL/PostgreSQL/18/select_servers_for_network.sql index d6b5cf46..835f20a4 100644 --- a/src/core/SQL/PostgreSQL/17/select_servers_for_network.sql +++ b/src/core/SQL/PostgreSQL/18/select_servers_for_network.sql @@ -1,3 +1,3 @@ -SELECT hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass +SELECT hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass, sslverify FROM ircserver WHERE networkid = :networkid diff --git a/src/core/SQL/PostgreSQL/17/select_user_setting.sql b/src/core/SQL/PostgreSQL/18/select_user_setting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_user_setting.sql rename to src/core/SQL/PostgreSQL/18/select_user_setting.sql diff --git a/src/core/SQL/PostgreSQL/17/select_userid.sql b/src/core/SQL/PostgreSQL/18/select_userid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/select_userid.sql rename to src/core/SQL/PostgreSQL/18/select_userid.sql diff --git a/src/core/SQL/PostgreSQL/17/setup_000_quasseluser.sql b/src/core/SQL/PostgreSQL/18/setup_000_quasseluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/setup_000_quasseluser.sql rename to src/core/SQL/PostgreSQL/18/setup_000_quasseluser.sql diff --git a/src/core/SQL/PostgreSQL/17/setup_010_sender.sql b/src/core/SQL/PostgreSQL/18/setup_010_sender.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/setup_010_sender.sql rename to src/core/SQL/PostgreSQL/18/setup_010_sender.sql diff --git a/src/core/SQL/PostgreSQL/17/setup_020_identity.sql b/src/core/SQL/PostgreSQL/18/setup_020_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/setup_020_identity.sql rename to src/core/SQL/PostgreSQL/18/setup_020_identity.sql diff --git a/src/core/SQL/PostgreSQL/17/setup_030_identity_nick.sql b/src/core/SQL/PostgreSQL/18/setup_030_identity_nick.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/setup_030_identity_nick.sql rename to src/core/SQL/PostgreSQL/18/setup_030_identity_nick.sql diff --git a/src/core/SQL/PostgreSQL/17/setup_040_network.sql b/src/core/SQL/PostgreSQL/18/setup_040_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/setup_040_network.sql rename to src/core/SQL/PostgreSQL/18/setup_040_network.sql diff --git a/src/core/SQL/PostgreSQL/17/setup_050_buffer.sql b/src/core/SQL/PostgreSQL/18/setup_050_buffer.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/setup_050_buffer.sql rename to src/core/SQL/PostgreSQL/18/setup_050_buffer.sql diff --git a/src/core/SQL/PostgreSQL/17/setup_060_backlog.sql b/src/core/SQL/PostgreSQL/18/setup_060_backlog.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/setup_060_backlog.sql rename to src/core/SQL/PostgreSQL/18/setup_060_backlog.sql diff --git a/src/core/SQL/PostgreSQL/17/setup_070_coreinfo.sql b/src/core/SQL/PostgreSQL/18/setup_070_coreinfo.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/setup_070_coreinfo.sql rename to src/core/SQL/PostgreSQL/18/setup_070_coreinfo.sql diff --git a/src/core/SQL/PostgreSQL/17/setup_080_ircservers.sql b/src/core/SQL/PostgreSQL/18/setup_080_ircservers.sql similarity index 86% rename from src/core/SQL/PostgreSQL/17/setup_080_ircservers.sql rename to src/core/SQL/PostgreSQL/18/setup_080_ircservers.sql index c7784409..98609d5f 100644 --- a/src/core/SQL/PostgreSQL/17/setup_080_ircservers.sql +++ b/src/core/SQL/PostgreSQL/18/setup_080_ircservers.sql @@ -12,5 +12,6 @@ CREATE TABLE ircserver ( proxyhost varchar(128) NOT NULL DEFAULT 'localhost', proxyport integer NOT NULL DEFAULT 8080, proxyuser varchar(64), - proxypass varchar(64) + proxypass varchar(64), + sslverify boolean NOT NULL DEFAULT FALSE -- bool, validate SSL cert ) diff --git a/src/core/SQL/PostgreSQL/17/setup_090_backlog_idx.sql b/src/core/SQL/PostgreSQL/18/setup_090_backlog_idx.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/setup_090_backlog_idx.sql rename to src/core/SQL/PostgreSQL/18/setup_090_backlog_idx.sql diff --git a/src/core/SQL/PostgreSQL/17/setup_100_user_setting.sql b/src/core/SQL/PostgreSQL/18/setup_100_user_setting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/setup_100_user_setting.sql rename to src/core/SQL/PostgreSQL/18/setup_100_user_setting.sql diff --git a/src/core/SQL/PostgreSQL/17/setup_110_alter_sender_seq.sql b/src/core/SQL/PostgreSQL/18/setup_110_alter_sender_seq.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/setup_110_alter_sender_seq.sql rename to src/core/SQL/PostgreSQL/18/setup_110_alter_sender_seq.sql diff --git a/src/core/SQL/PostgreSQL/17/setup_120_alter_messageid_seq.sql b/src/core/SQL/PostgreSQL/18/setup_120_alter_messageid_seq.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/setup_120_alter_messageid_seq.sql rename to src/core/SQL/PostgreSQL/18/setup_120_alter_messageid_seq.sql diff --git a/src/core/SQL/PostgreSQL/17/update_backlog_bufferid.sql b/src/core/SQL/PostgreSQL/18/update_backlog_bufferid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_backlog_bufferid.sql rename to src/core/SQL/PostgreSQL/18/update_backlog_bufferid.sql diff --git a/src/core/SQL/PostgreSQL/17/update_buffer_lastseen.sql b/src/core/SQL/PostgreSQL/18/update_buffer_lastseen.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_buffer_lastseen.sql rename to src/core/SQL/PostgreSQL/18/update_buffer_lastseen.sql diff --git a/src/core/SQL/PostgreSQL/17/update_buffer_markerlinemsgid.sql b/src/core/SQL/PostgreSQL/18/update_buffer_markerlinemsgid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_buffer_markerlinemsgid.sql rename to src/core/SQL/PostgreSQL/18/update_buffer_markerlinemsgid.sql diff --git a/src/core/SQL/PostgreSQL/17/update_buffer_name.sql b/src/core/SQL/PostgreSQL/18/update_buffer_name.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_buffer_name.sql rename to src/core/SQL/PostgreSQL/18/update_buffer_name.sql diff --git a/src/core/SQL/PostgreSQL/17/update_buffer_persistent_channel.sql b/src/core/SQL/PostgreSQL/18/update_buffer_persistent_channel.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_buffer_persistent_channel.sql rename to src/core/SQL/PostgreSQL/18/update_buffer_persistent_channel.sql diff --git a/src/core/SQL/PostgreSQL/17/update_buffer_set_channel_key.sql b/src/core/SQL/PostgreSQL/18/update_buffer_set_channel_key.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_buffer_set_channel_key.sql rename to src/core/SQL/PostgreSQL/18/update_buffer_set_channel_key.sql diff --git a/src/core/SQL/PostgreSQL/17/update_identity.sql b/src/core/SQL/PostgreSQL/18/update_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_identity.sql rename to src/core/SQL/PostgreSQL/18/update_identity.sql diff --git a/src/core/SQL/PostgreSQL/17/update_network.sql b/src/core/SQL/PostgreSQL/18/update_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_network.sql rename to src/core/SQL/PostgreSQL/18/update_network.sql diff --git a/src/core/SQL/PostgreSQL/17/update_network_connected.sql b/src/core/SQL/PostgreSQL/18/update_network_connected.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_network_connected.sql rename to src/core/SQL/PostgreSQL/18/update_network_connected.sql diff --git a/src/core/SQL/PostgreSQL/17/update_network_set_awaymsg.sql b/src/core/SQL/PostgreSQL/18/update_network_set_awaymsg.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_network_set_awaymsg.sql rename to src/core/SQL/PostgreSQL/18/update_network_set_awaymsg.sql diff --git a/src/core/SQL/PostgreSQL/17/update_network_set_usermode.sql b/src/core/SQL/PostgreSQL/18/update_network_set_usermode.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_network_set_usermode.sql rename to src/core/SQL/PostgreSQL/18/update_network_set_usermode.sql diff --git a/src/core/SQL/PostgreSQL/17/update_user_setting.sql b/src/core/SQL/PostgreSQL/18/update_user_setting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_user_setting.sql rename to src/core/SQL/PostgreSQL/18/update_user_setting.sql diff --git a/src/core/SQL/PostgreSQL/17/update_username.sql b/src/core/SQL/PostgreSQL/18/update_username.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_username.sql rename to src/core/SQL/PostgreSQL/18/update_username.sql diff --git a/src/core/SQL/PostgreSQL/17/update_userpassword.sql b/src/core/SQL/PostgreSQL/18/update_userpassword.sql similarity index 100% rename from src/core/SQL/PostgreSQL/17/update_userpassword.sql rename to src/core/SQL/PostgreSQL/18/update_userpassword.sql diff --git a/src/core/SQL/PostgreSQL/18/upgrade_000_alter_ircserver_add_sslverify.sql b/src/core/SQL/PostgreSQL/18/upgrade_000_alter_ircserver_add_sslverify.sql new file mode 100644 index 00000000..851c87e9 --- /dev/null +++ b/src/core/SQL/PostgreSQL/18/upgrade_000_alter_ircserver_add_sslverify.sql @@ -0,0 +1,2 @@ +ALTER TABLE ircserver +ADD COLUMN sslverify boolean NOT NULL DEFAULT FALSE diff --git a/src/core/SQL/SQLite/18/delete_backlog_by_uid.sql b/src/core/SQL/SQLite/19/delete_backlog_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/18/delete_backlog_by_uid.sql rename to src/core/SQL/SQLite/19/delete_backlog_by_uid.sql diff --git a/src/core/SQL/SQLite/18/delete_backlog_for_buffer.sql b/src/core/SQL/SQLite/19/delete_backlog_for_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/18/delete_backlog_for_buffer.sql rename to src/core/SQL/SQLite/19/delete_backlog_for_buffer.sql diff --git a/src/core/SQL/SQLite/18/delete_backlog_for_network.sql b/src/core/SQL/SQLite/19/delete_backlog_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/18/delete_backlog_for_network.sql rename to src/core/SQL/SQLite/19/delete_backlog_for_network.sql diff --git a/src/core/SQL/SQLite/18/delete_buffer_for_bufferid.sql b/src/core/SQL/SQLite/19/delete_buffer_for_bufferid.sql similarity index 100% rename from src/core/SQL/SQLite/18/delete_buffer_for_bufferid.sql rename to src/core/SQL/SQLite/19/delete_buffer_for_bufferid.sql diff --git a/src/core/SQL/SQLite/18/delete_buffers_by_uid.sql b/src/core/SQL/SQLite/19/delete_buffers_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/18/delete_buffers_by_uid.sql rename to src/core/SQL/SQLite/19/delete_buffers_by_uid.sql diff --git a/src/core/SQL/SQLite/18/delete_buffers_for_network.sql b/src/core/SQL/SQLite/19/delete_buffers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/18/delete_buffers_for_network.sql rename to src/core/SQL/SQLite/19/delete_buffers_for_network.sql diff --git a/src/core/SQL/SQLite/18/delete_identity.sql b/src/core/SQL/SQLite/19/delete_identity.sql similarity index 100% rename from src/core/SQL/SQLite/18/delete_identity.sql rename to src/core/SQL/SQLite/19/delete_identity.sql diff --git a/src/core/SQL/SQLite/18/delete_ircservers_for_network.sql b/src/core/SQL/SQLite/19/delete_ircservers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/18/delete_ircservers_for_network.sql rename to src/core/SQL/SQLite/19/delete_ircservers_for_network.sql diff --git a/src/core/SQL/SQLite/18/delete_network.sql b/src/core/SQL/SQLite/19/delete_network.sql similarity index 100% rename from src/core/SQL/SQLite/18/delete_network.sql rename to src/core/SQL/SQLite/19/delete_network.sql diff --git a/src/core/SQL/SQLite/18/delete_networks_by_uid.sql b/src/core/SQL/SQLite/19/delete_networks_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/18/delete_networks_by_uid.sql rename to src/core/SQL/SQLite/19/delete_networks_by_uid.sql diff --git a/src/core/SQL/SQLite/18/delete_nicks.sql b/src/core/SQL/SQLite/19/delete_nicks.sql similarity index 100% rename from src/core/SQL/SQLite/18/delete_nicks.sql rename to src/core/SQL/SQLite/19/delete_nicks.sql diff --git a/src/core/SQL/SQLite/18/delete_quasseluser.sql b/src/core/SQL/SQLite/19/delete_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/18/delete_quasseluser.sql rename to src/core/SQL/SQLite/19/delete_quasseluser.sql diff --git a/src/core/SQL/SQLite/18/insert_buffer.sql b/src/core/SQL/SQLite/19/insert_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/18/insert_buffer.sql rename to src/core/SQL/SQLite/19/insert_buffer.sql diff --git a/src/core/SQL/SQLite/18/insert_identity.sql b/src/core/SQL/SQLite/19/insert_identity.sql similarity index 100% rename from src/core/SQL/SQLite/18/insert_identity.sql rename to src/core/SQL/SQLite/19/insert_identity.sql diff --git a/src/core/SQL/SQLite/18/insert_message.sql b/src/core/SQL/SQLite/19/insert_message.sql similarity index 100% rename from src/core/SQL/SQLite/18/insert_message.sql rename to src/core/SQL/SQLite/19/insert_message.sql diff --git a/src/core/SQL/SQLite/18/insert_network.sql b/src/core/SQL/SQLite/19/insert_network.sql similarity index 100% rename from src/core/SQL/SQLite/18/insert_network.sql rename to src/core/SQL/SQLite/19/insert_network.sql diff --git a/src/core/SQL/SQLite/18/insert_nick.sql b/src/core/SQL/SQLite/19/insert_nick.sql similarity index 100% rename from src/core/SQL/SQLite/18/insert_nick.sql rename to src/core/SQL/SQLite/19/insert_nick.sql diff --git a/src/core/SQL/SQLite/18/insert_quasseluser.sql b/src/core/SQL/SQLite/19/insert_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/18/insert_quasseluser.sql rename to src/core/SQL/SQLite/19/insert_quasseluser.sql diff --git a/src/core/SQL/SQLite/18/insert_sender.sql b/src/core/SQL/SQLite/19/insert_sender.sql similarity index 100% rename from src/core/SQL/SQLite/18/insert_sender.sql rename to src/core/SQL/SQLite/19/insert_sender.sql diff --git a/src/core/SQL/SQLite/18/insert_server.sql b/src/core/SQL/SQLite/19/insert_server.sql similarity index 79% rename from src/core/SQL/SQLite/18/insert_server.sql rename to src/core/SQL/SQLite/19/insert_server.sql index d9605ebd..e7750885 100644 --- a/src/core/SQL/SQLite/18/insert_server.sql +++ b/src/core/SQL/SQLite/19/insert_server.sql @@ -1,2 +1,2 @@ -INSERT INTO ircserver (userid, networkid, hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass) -VALUES (:userid, :networkid, :hostname, :port, :password, :ssl, :sslversion, :useproxy, :proxytype, :proxyhost, :proxyport, :proxyuser, :proxypass) +INSERT INTO ircserver (userid, networkid, hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass, sslverify) +VALUES (:userid, :networkid, :hostname, :port, :password, :ssl, :sslversion, :useproxy, :proxytype, :proxyhost, :proxyport, :proxyuser, :proxypass, :sslverify) diff --git a/src/core/SQL/SQLite/18/insert_user_setting.sql b/src/core/SQL/SQLite/19/insert_user_setting.sql similarity index 100% rename from src/core/SQL/SQLite/18/insert_user_setting.sql rename to src/core/SQL/SQLite/19/insert_user_setting.sql diff --git a/src/core/SQL/SQLite/18/migrate_read_backlog.sql b/src/core/SQL/SQLite/19/migrate_read_backlog.sql similarity index 100% rename from src/core/SQL/SQLite/18/migrate_read_backlog.sql rename to src/core/SQL/SQLite/19/migrate_read_backlog.sql diff --git a/src/core/SQL/SQLite/18/migrate_read_buffer.sql b/src/core/SQL/SQLite/19/migrate_read_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/18/migrate_read_buffer.sql rename to src/core/SQL/SQLite/19/migrate_read_buffer.sql diff --git a/src/core/SQL/SQLite/18/migrate_read_identity.sql b/src/core/SQL/SQLite/19/migrate_read_identity.sql similarity index 100% rename from src/core/SQL/SQLite/18/migrate_read_identity.sql rename to src/core/SQL/SQLite/19/migrate_read_identity.sql diff --git a/src/core/SQL/SQLite/18/migrate_read_identity_nick.sql b/src/core/SQL/SQLite/19/migrate_read_identity_nick.sql similarity index 100% rename from src/core/SQL/SQLite/18/migrate_read_identity_nick.sql rename to src/core/SQL/SQLite/19/migrate_read_identity_nick.sql diff --git a/src/core/SQL/SQLite/18/migrate_read_ircserver.sql b/src/core/SQL/SQLite/19/migrate_read_ircserver.sql similarity index 84% rename from src/core/SQL/SQLite/18/migrate_read_ircserver.sql rename to src/core/SQL/SQLite/19/migrate_read_ircserver.sql index 2c0114c1..380f844d 100644 --- a/src/core/SQL/SQLite/18/migrate_read_ircserver.sql +++ b/src/core/SQL/SQLite/19/migrate_read_ircserver.sql @@ -1,2 +1,2 @@ -SELECT serverid, userid, networkid, hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass +SELECT serverid, userid, networkid, hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass, sslverify FROM ircserver diff --git a/src/core/SQL/SQLite/18/migrate_read_network.sql b/src/core/SQL/SQLite/19/migrate_read_network.sql similarity index 100% rename from src/core/SQL/SQLite/18/migrate_read_network.sql rename to src/core/SQL/SQLite/19/migrate_read_network.sql diff --git a/src/core/SQL/SQLite/18/migrate_read_quasseluser.sql b/src/core/SQL/SQLite/19/migrate_read_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/18/migrate_read_quasseluser.sql rename to src/core/SQL/SQLite/19/migrate_read_quasseluser.sql diff --git a/src/core/SQL/SQLite/18/migrate_read_sender.sql b/src/core/SQL/SQLite/19/migrate_read_sender.sql similarity index 100% rename from src/core/SQL/SQLite/18/migrate_read_sender.sql rename to src/core/SQL/SQLite/19/migrate_read_sender.sql diff --git a/src/core/SQL/SQLite/18/migrate_read_usersetting.sql b/src/core/SQL/SQLite/19/migrate_read_usersetting.sql similarity index 100% rename from src/core/SQL/SQLite/18/migrate_read_usersetting.sql rename to src/core/SQL/SQLite/19/migrate_read_usersetting.sql diff --git a/src/core/SQL/SQLite/18/select_authuser.sql b/src/core/SQL/SQLite/19/select_authuser.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_authuser.sql rename to src/core/SQL/SQLite/19/select_authuser.sql diff --git a/src/core/SQL/SQLite/18/select_bufferByName.sql b/src/core/SQL/SQLite/19/select_bufferByName.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_bufferByName.sql rename to src/core/SQL/SQLite/19/select_bufferByName.sql diff --git a/src/core/SQL/SQLite/18/select_bufferExists.sql b/src/core/SQL/SQLite/19/select_bufferExists.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_bufferExists.sql rename to src/core/SQL/SQLite/19/select_bufferExists.sql diff --git a/src/core/SQL/SQLite/18/select_buffer_by_id.sql b/src/core/SQL/SQLite/19/select_buffer_by_id.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_buffer_by_id.sql rename to src/core/SQL/SQLite/19/select_buffer_by_id.sql diff --git a/src/core/SQL/SQLite/18/select_buffer_lastseen_messages.sql b/src/core/SQL/SQLite/19/select_buffer_lastseen_messages.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_buffer_lastseen_messages.sql rename to src/core/SQL/SQLite/19/select_buffer_lastseen_messages.sql diff --git a/src/core/SQL/SQLite/18/select_buffer_markerlinemsgids.sql b/src/core/SQL/SQLite/19/select_buffer_markerlinemsgids.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_buffer_markerlinemsgids.sql rename to src/core/SQL/SQLite/19/select_buffer_markerlinemsgids.sql diff --git a/src/core/SQL/SQLite/18/select_buffers.sql b/src/core/SQL/SQLite/19/select_buffers.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_buffers.sql rename to src/core/SQL/SQLite/19/select_buffers.sql diff --git a/src/core/SQL/SQLite/18/select_buffers_for_merge.sql b/src/core/SQL/SQLite/19/select_buffers_for_merge.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_buffers_for_merge.sql rename to src/core/SQL/SQLite/19/select_buffers_for_merge.sql diff --git a/src/core/SQL/SQLite/18/select_buffers_for_network.sql b/src/core/SQL/SQLite/19/select_buffers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_buffers_for_network.sql rename to src/core/SQL/SQLite/19/select_buffers_for_network.sql diff --git a/src/core/SQL/SQLite/18/select_checkidentity.sql b/src/core/SQL/SQLite/19/select_checkidentity.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_checkidentity.sql rename to src/core/SQL/SQLite/19/select_checkidentity.sql diff --git a/src/core/SQL/SQLite/18/select_connected_networks.sql b/src/core/SQL/SQLite/19/select_connected_networks.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_connected_networks.sql rename to src/core/SQL/SQLite/19/select_connected_networks.sql diff --git a/src/core/SQL/SQLite/18/select_identities.sql b/src/core/SQL/SQLite/19/select_identities.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_identities.sql rename to src/core/SQL/SQLite/19/select_identities.sql diff --git a/src/core/SQL/SQLite/18/select_internaluser.sql b/src/core/SQL/SQLite/19/select_internaluser.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_internaluser.sql rename to src/core/SQL/SQLite/19/select_internaluser.sql diff --git a/src/core/SQL/SQLite/18/select_messages.sql b/src/core/SQL/SQLite/19/select_messages.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_messages.sql rename to src/core/SQL/SQLite/19/select_messages.sql diff --git a/src/core/SQL/SQLite/18/select_messagesAll.sql b/src/core/SQL/SQLite/19/select_messagesAll.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_messagesAll.sql rename to src/core/SQL/SQLite/19/select_messagesAll.sql diff --git a/src/core/SQL/SQLite/18/select_messagesAllNew.sql b/src/core/SQL/SQLite/19/select_messagesAllNew.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_messagesAllNew.sql rename to src/core/SQL/SQLite/19/select_messagesAllNew.sql diff --git a/src/core/SQL/SQLite/18/select_messagesNewerThan.sql b/src/core/SQL/SQLite/19/select_messagesNewerThan.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_messagesNewerThan.sql rename to src/core/SQL/SQLite/19/select_messagesNewerThan.sql diff --git a/src/core/SQL/SQLite/18/select_messagesNewestK.sql b/src/core/SQL/SQLite/19/select_messagesNewestK.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_messagesNewestK.sql rename to src/core/SQL/SQLite/19/select_messagesNewestK.sql diff --git a/src/core/SQL/SQLite/18/select_networkExists.sql b/src/core/SQL/SQLite/19/select_networkExists.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_networkExists.sql rename to src/core/SQL/SQLite/19/select_networkExists.sql diff --git a/src/core/SQL/SQLite/18/select_network_awaymsg.sql b/src/core/SQL/SQLite/19/select_network_awaymsg.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_network_awaymsg.sql rename to src/core/SQL/SQLite/19/select_network_awaymsg.sql diff --git a/src/core/SQL/SQLite/18/select_network_usermode.sql b/src/core/SQL/SQLite/19/select_network_usermode.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_network_usermode.sql rename to src/core/SQL/SQLite/19/select_network_usermode.sql diff --git a/src/core/SQL/SQLite/18/select_networks_for_user.sql b/src/core/SQL/SQLite/19/select_networks_for_user.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_networks_for_user.sql rename to src/core/SQL/SQLite/19/select_networks_for_user.sql diff --git a/src/core/SQL/SQLite/18/select_nicks.sql b/src/core/SQL/SQLite/19/select_nicks.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_nicks.sql rename to src/core/SQL/SQLite/19/select_nicks.sql diff --git a/src/core/SQL/SQLite/18/select_persistent_channels.sql b/src/core/SQL/SQLite/19/select_persistent_channels.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_persistent_channels.sql rename to src/core/SQL/SQLite/19/select_persistent_channels.sql diff --git a/src/core/SQL/SQLite/18/select_servers_for_network.sql b/src/core/SQL/SQLite/19/select_servers_for_network.sql similarity index 63% rename from src/core/SQL/SQLite/18/select_servers_for_network.sql rename to src/core/SQL/SQLite/19/select_servers_for_network.sql index d6b5cf46..835f20a4 100644 --- a/src/core/SQL/SQLite/18/select_servers_for_network.sql +++ b/src/core/SQL/SQLite/19/select_servers_for_network.sql @@ -1,3 +1,3 @@ -SELECT hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass +SELECT hostname, port, password, ssl, sslversion, useproxy, proxytype, proxyhost, proxyport, proxyuser, proxypass, sslverify FROM ircserver WHERE networkid = :networkid diff --git a/src/core/SQL/SQLite/18/select_user_setting.sql b/src/core/SQL/SQLite/19/select_user_setting.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_user_setting.sql rename to src/core/SQL/SQLite/19/select_user_setting.sql diff --git a/src/core/SQL/SQLite/18/select_userid.sql b/src/core/SQL/SQLite/19/select_userid.sql similarity index 100% rename from src/core/SQL/SQLite/18/select_userid.sql rename to src/core/SQL/SQLite/19/select_userid.sql diff --git a/src/core/SQL/SQLite/18/setup_000_quasseluser.sql b/src/core/SQL/SQLite/19/setup_000_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_000_quasseluser.sql rename to src/core/SQL/SQLite/19/setup_000_quasseluser.sql diff --git a/src/core/SQL/SQLite/18/setup_010_sender.sql b/src/core/SQL/SQLite/19/setup_010_sender.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_010_sender.sql rename to src/core/SQL/SQLite/19/setup_010_sender.sql diff --git a/src/core/SQL/SQLite/18/setup_020_network.sql b/src/core/SQL/SQLite/19/setup_020_network.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_020_network.sql rename to src/core/SQL/SQLite/19/setup_020_network.sql diff --git a/src/core/SQL/SQLite/18/setup_030_buffer.sql b/src/core/SQL/SQLite/19/setup_030_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_030_buffer.sql rename to src/core/SQL/SQLite/19/setup_030_buffer.sql diff --git a/src/core/SQL/SQLite/18/setup_040_buffer_idx.sql b/src/core/SQL/SQLite/19/setup_040_buffer_idx.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_040_buffer_idx.sql rename to src/core/SQL/SQLite/19/setup_040_buffer_idx.sql diff --git a/src/core/SQL/SQLite/18/setup_050_buffer_cname_idx.sql b/src/core/SQL/SQLite/19/setup_050_buffer_cname_idx.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_050_buffer_cname_idx.sql rename to src/core/SQL/SQLite/19/setup_050_buffer_cname_idx.sql diff --git a/src/core/SQL/SQLite/18/setup_060_backlog.sql b/src/core/SQL/SQLite/19/setup_060_backlog.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_060_backlog.sql rename to src/core/SQL/SQLite/19/setup_060_backlog.sql diff --git a/src/core/SQL/SQLite/18/setup_070_coreinfo.sql b/src/core/SQL/SQLite/19/setup_070_coreinfo.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_070_coreinfo.sql rename to src/core/SQL/SQLite/19/setup_070_coreinfo.sql diff --git a/src/core/SQL/SQLite/18/setup_080_ircservers.sql b/src/core/SQL/SQLite/19/setup_080_ircservers.sql similarity index 85% rename from src/core/SQL/SQLite/18/setup_080_ircservers.sql rename to src/core/SQL/SQLite/19/setup_080_ircservers.sql index 3c8239e3..64f33b48 100644 --- a/src/core/SQL/SQLite/18/setup_080_ircservers.sql +++ b/src/core/SQL/SQLite/19/setup_080_ircservers.sql @@ -12,5 +12,6 @@ CREATE TABLE ircserver ( proxyhost TEXT NOT NULL DEFAULT 'localhost', proxyport INTEGER NOT NULL DEFAULT 8080, proxyuser TEXT, - proxypass TEXT + proxypass TEXT, + sslverify INTEGER NOT NULL DEFAULT 0 -- bool, validate SSL cert ) diff --git a/src/core/SQL/SQLite/18/setup_090_backlog_idx.sql b/src/core/SQL/SQLite/19/setup_090_backlog_idx.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_090_backlog_idx.sql rename to src/core/SQL/SQLite/19/setup_090_backlog_idx.sql diff --git a/src/core/SQL/SQLite/18/setup_100_backlog_idx2.sql b/src/core/SQL/SQLite/19/setup_100_backlog_idx2.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_100_backlog_idx2.sql rename to src/core/SQL/SQLite/19/setup_100_backlog_idx2.sql diff --git a/src/core/SQL/SQLite/18/setup_110_buffer_user_idx.sql b/src/core/SQL/SQLite/19/setup_110_buffer_user_idx.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_110_buffer_user_idx.sql rename to src/core/SQL/SQLite/19/setup_110_buffer_user_idx.sql diff --git a/src/core/SQL/SQLite/18/setup_120_user_setting.sql b/src/core/SQL/SQLite/19/setup_120_user_setting.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_120_user_setting.sql rename to src/core/SQL/SQLite/19/setup_120_user_setting.sql diff --git a/src/core/SQL/SQLite/18/setup_130_identity.sql b/src/core/SQL/SQLite/19/setup_130_identity.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_130_identity.sql rename to src/core/SQL/SQLite/19/setup_130_identity.sql diff --git a/src/core/SQL/SQLite/18/setup_140_identity_nick.sql b/src/core/SQL/SQLite/19/setup_140_identity_nick.sql similarity index 100% rename from src/core/SQL/SQLite/18/setup_140_identity_nick.sql rename to src/core/SQL/SQLite/19/setup_140_identity_nick.sql diff --git a/src/core/SQL/SQLite/18/update_backlog_bufferid.sql b/src/core/SQL/SQLite/19/update_backlog_bufferid.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_backlog_bufferid.sql rename to src/core/SQL/SQLite/19/update_backlog_bufferid.sql diff --git a/src/core/SQL/SQLite/18/update_buffer_lastseen.sql b/src/core/SQL/SQLite/19/update_buffer_lastseen.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_buffer_lastseen.sql rename to src/core/SQL/SQLite/19/update_buffer_lastseen.sql diff --git a/src/core/SQL/SQLite/18/update_buffer_markerlinemsgid.sql b/src/core/SQL/SQLite/19/update_buffer_markerlinemsgid.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_buffer_markerlinemsgid.sql rename to src/core/SQL/SQLite/19/update_buffer_markerlinemsgid.sql diff --git a/src/core/SQL/SQLite/18/update_buffer_name.sql b/src/core/SQL/SQLite/19/update_buffer_name.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_buffer_name.sql rename to src/core/SQL/SQLite/19/update_buffer_name.sql diff --git a/src/core/SQL/SQLite/18/update_buffer_persistent_channel.sql b/src/core/SQL/SQLite/19/update_buffer_persistent_channel.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_buffer_persistent_channel.sql rename to src/core/SQL/SQLite/19/update_buffer_persistent_channel.sql diff --git a/src/core/SQL/SQLite/18/update_buffer_set_channel_key.sql b/src/core/SQL/SQLite/19/update_buffer_set_channel_key.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_buffer_set_channel_key.sql rename to src/core/SQL/SQLite/19/update_buffer_set_channel_key.sql diff --git a/src/core/SQL/SQLite/18/update_identity.sql b/src/core/SQL/SQLite/19/update_identity.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_identity.sql rename to src/core/SQL/SQLite/19/update_identity.sql diff --git a/src/core/SQL/SQLite/18/update_network.sql b/src/core/SQL/SQLite/19/update_network.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_network.sql rename to src/core/SQL/SQLite/19/update_network.sql diff --git a/src/core/SQL/SQLite/18/update_network_connected.sql b/src/core/SQL/SQLite/19/update_network_connected.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_network_connected.sql rename to src/core/SQL/SQLite/19/update_network_connected.sql diff --git a/src/core/SQL/SQLite/18/update_network_set_awaymsg.sql b/src/core/SQL/SQLite/19/update_network_set_awaymsg.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_network_set_awaymsg.sql rename to src/core/SQL/SQLite/19/update_network_set_awaymsg.sql diff --git a/src/core/SQL/SQLite/18/update_network_set_usermode.sql b/src/core/SQL/SQLite/19/update_network_set_usermode.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_network_set_usermode.sql rename to src/core/SQL/SQLite/19/update_network_set_usermode.sql diff --git a/src/core/SQL/SQLite/18/update_user_setting.sql b/src/core/SQL/SQLite/19/update_user_setting.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_user_setting.sql rename to src/core/SQL/SQLite/19/update_user_setting.sql diff --git a/src/core/SQL/SQLite/18/update_username.sql b/src/core/SQL/SQLite/19/update_username.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_username.sql rename to src/core/SQL/SQLite/19/update_username.sql diff --git a/src/core/SQL/SQLite/18/update_userpassword.sql b/src/core/SQL/SQLite/19/update_userpassword.sql similarity index 100% rename from src/core/SQL/SQLite/18/update_userpassword.sql rename to src/core/SQL/SQLite/19/update_userpassword.sql diff --git a/src/core/SQL/SQLite/19/upgrade_000_alter_ircserver_add_sslverify.sql b/src/core/SQL/SQLite/19/upgrade_000_alter_ircserver_add_sslverify.sql new file mode 100644 index 00000000..77227562 --- /dev/null +++ b/src/core/SQL/SQLite/19/upgrade_000_alter_ircserver_add_sslverify.sql @@ -0,0 +1,2 @@ +ALTER TABLE ircserver +ADD COLUMN sslverify INTEGER NOT NULL DEFAULT 0 diff --git a/src/core/abstractsqlstorage.h b/src/core/abstractsqlstorage.h index a3e4f0e3..06d19b71 100644 --- a/src/core/abstractsqlstorage.h +++ b/src/core/abstractsqlstorage.h @@ -230,6 +230,7 @@ public: int port; QString password; bool ssl; + bool sslverify; /// If true, validate SSL certificates int sslversion; bool useproxy; int proxytype; diff --git a/src/core/corenetwork.cpp b/src/core/corenetwork.cpp index d8cb2bf4..93d5b6a4 100644 --- a/src/core/corenetwork.cpp +++ b/src/core/corenetwork.cpp @@ -1114,9 +1114,33 @@ void CoreNetwork::sendAutoWho() #ifdef HAVE_SSL void CoreNetwork::sslErrors(const QList &sslErrors) { - Q_UNUSED(sslErrors) - socket.ignoreSslErrors(); - // TODO errorhandling + Server server = usedServer(); + if (server.sslVerify) { + // Treat the SSL error as a hard error + QString sslErrorMessage = tr("Encrypted connection couldn't be verified, disconnecting " + "since verification is required"); + if (!sslErrors.empty()) { + // Add the error reason if known + sslErrorMessage.append(tr(" (Reason: %1)").arg(sslErrors.first().errorString())); + } + displayMsg(Message::Error, BufferInfo::StatusBuffer, "", sslErrorMessage); + + // Disconnect, triggering a reconnect in case it's a temporary issue with certificate + // validity, network trouble, etc. + disconnectFromIrc(false, QString("Encrypted connection not verified"), true /* withReconnect */); + } else { + // Treat the SSL error as a warning, continue to connect anyways + QString sslErrorMessage = tr("Encrypted connection couldn't be verified, continuing " + "since verification is not required"); + if (!sslErrors.empty()) { + // Add the error reason if known + sslErrorMessage.append(tr(" (Reason: %1)").arg(sslErrors.first().errorString())); + } + displayMsg(Message::Info, BufferInfo::StatusBuffer, "", sslErrorMessage); + + // Proceed with the connection + socket.ignoreSslErrors(); + } } diff --git a/src/core/postgresqlstorage.cpp b/src/core/postgresqlstorage.cpp index 8438e623..57904787 100644 --- a/src/core/postgresqlstorage.cpp +++ b/src/core/postgresqlstorage.cpp @@ -715,6 +715,7 @@ void PostgreSqlStorage::bindServerInfo(QSqlQuery &query, const Network::Server & query.bindValue(":proxyport", server.proxyPort); query.bindValue(":proxyuser", server.proxyUser); query.bindValue(":proxypass", server.proxyPass); + query.bindValue(":sslverify", server.sslVerify); } @@ -864,6 +865,7 @@ QList PostgreSqlStorage::networks(UserId user) server.proxyPort = serversQuery.value(8).toUInt(); server.proxyUser = serversQuery.value(9).toString(); server.proxyPass = serversQuery.value(10).toString(); + server.sslVerify = serversQuery.value(11).toBool(); servers << server; } net.serverList = servers; @@ -1978,6 +1980,7 @@ bool PostgreSqlMigrationWriter::writeMo(const IrcServerMO &ircserver) bindValue(11, ircserver.proxyport); bindValue(12, ircserver.proxyuser); bindValue(13, ircserver.proxypass); + bindValue(14, ircserver.sslverify); return exec(); } diff --git a/src/core/sql.qrc b/src/core/sql.qrc index c72d14f6..01b45559 100644 --- a/src/core/sql.qrc +++ b/src/core/sql.qrc @@ -1,250 +1,252 @@ - ./SQL/SQLite/16/upgrade_000_alter_buffer_add_markerlinemsgid.sql - ./SQL/SQLite/17/upgrade_001_alter_network_add_sasl.sql - ./SQL/SQLite/17/upgrade_000_alter_network_add_sasl.sql - ./SQL/SQLite/17/upgrade_002_alter_network_add_sasl.sql - ./SQL/SQLite/18/update_buffer_persistent_channel.sql - ./SQL/SQLite/18/insert_network.sql - ./SQL/SQLite/18/insert_identity.sql - ./SQL/SQLite/18/select_checkidentity.sql - ./SQL/SQLite/18/migrate_read_identity.sql - ./SQL/SQLite/18/update_identity.sql - ./SQL/SQLite/18/delete_buffer_for_bufferid.sql - ./SQL/SQLite/18/setup_120_user_setting.sql - ./SQL/SQLite/18/select_networks_for_user.sql - ./SQL/SQLite/18/select_networkExists.sql - ./SQL/SQLite/18/migrate_read_network.sql - ./SQL/SQLite/18/setup_130_identity.sql - ./SQL/SQLite/18/select_messagesNewestK.sql - ./SQL/SQLite/18/setup_100_backlog_idx2.sql - ./SQL/SQLite/18/select_messagesAllNew.sql - ./SQL/SQLite/18/select_buffers_for_merge.sql - ./SQL/SQLite/18/delete_ircservers_for_network.sql - ./SQL/SQLite/18/select_persistent_channels.sql - ./SQL/SQLite/18/update_buffer_set_channel_key.sql - ./SQL/SQLite/18/setup_040_buffer_idx.sql - ./SQL/SQLite/18/select_messagesNewerThan.sql - ./SQL/SQLite/18/setup_070_coreinfo.sql - ./SQL/SQLite/18/insert_nick.sql - ./SQL/SQLite/18/select_messagesAll.sql - ./SQL/SQLite/18/delete_identity.sql - ./SQL/SQLite/18/select_buffer_markerlinemsgids.sql - ./SQL/SQLite/18/migrate_read_identity_nick.sql - ./SQL/SQLite/18/select_buffer_lastseen_messages.sql - ./SQL/SQLite/18/insert_sender.sql - ./SQL/SQLite/18/select_nicks.sql - ./SQL/SQLite/18/setup_030_buffer.sql - ./SQL/SQLite/18/migrate_read_sender.sql - ./SQL/SQLite/18/insert_user_setting.sql - ./SQL/SQLite/18/delete_buffers_for_network.sql - ./SQL/SQLite/18/select_messages.sql - ./SQL/SQLite/18/select_buffers.sql - ./SQL/SQLite/18/select_userid.sql - ./SQL/SQLite/18/update_network.sql - ./SQL/SQLite/18/migrate_read_usersetting.sql - ./SQL/SQLite/18/migrate_read_quasseluser.sql - ./SQL/SQLite/18/setup_010_sender.sql - ./SQL/SQLite/18/delete_quasseluser.sql - ./SQL/SQLite/18/select_network_usermode.sql - ./SQL/SQLite/18/update_userpassword.sql - ./SQL/SQLite/18/select_identities.sql - ./SQL/SQLite/18/setup_000_quasseluser.sql - ./SQL/SQLite/18/setup_080_ircservers.sql - ./SQL/SQLite/18/delete_nicks.sql - ./SQL/SQLite/18/delete_network.sql - ./SQL/SQLite/18/select_servers_for_network.sql - ./SQL/SQLite/18/migrate_read_buffer.sql - ./SQL/SQLite/18/select_connected_networks.sql - ./SQL/SQLite/18/update_network_connected.sql - ./SQL/SQLite/18/delete_backlog_for_network.sql - ./SQL/SQLite/18/setup_060_backlog.sql - ./SQL/SQLite/18/update_username.sql - ./SQL/SQLite/18/insert_message.sql - ./SQL/SQLite/18/select_buffer_by_id.sql - ./SQL/SQLite/18/update_user_setting.sql - ./SQL/SQLite/18/update_buffer_name.sql - ./SQL/SQLite/18/select_bufferExists.sql - ./SQL/SQLite/18/setup_110_buffer_user_idx.sql - ./SQL/SQLite/18/select_buffers_for_network.sql - ./SQL/SQLite/18/delete_backlog_by_uid.sql - ./SQL/SQLite/18/select_internaluser.sql - ./SQL/SQLite/18/select_network_awaymsg.sql - ./SQL/SQLite/18/setup_090_backlog_idx.sql - ./SQL/SQLite/18/insert_quasseluser.sql - ./SQL/SQLite/18/update_network_set_usermode.sql - ./SQL/SQLite/18/migrate_read_ircserver.sql - ./SQL/SQLite/18/delete_backlog_for_buffer.sql - ./SQL/SQLite/18/update_network_set_awaymsg.sql - ./SQL/SQLite/18/upgrade_000_alter_quasseluser_add_passwordversion.sql - ./SQL/SQLite/18/update_backlog_bufferid.sql - ./SQL/SQLite/18/update_buffer_markerlinemsgid.sql - ./SQL/SQLite/18/update_buffer_lastseen.sql - ./SQL/SQLite/18/setup_050_buffer_cname_idx.sql - ./SQL/SQLite/18/insert_buffer.sql - ./SQL/SQLite/18/select_authuser.sql - ./SQL/SQLite/18/select_user_setting.sql - ./SQL/SQLite/18/select_bufferByName.sql - ./SQL/SQLite/18/insert_server.sql - ./SQL/SQLite/18/setup_020_network.sql - ./SQL/SQLite/18/migrate_read_backlog.sql - ./SQL/SQLite/18/setup_140_identity_nick.sql - ./SQL/SQLite/18/delete_networks_by_uid.sql - ./SQL/SQLite/18/delete_buffers_by_uid.sql - ./SQL/SQLite/15/upgrade_000_fix_ircservers.sql - ./SQL/SQLite/15/upgrade_000_fix_network.sql - ./SQL/SQLite/2/upgrade_010_update_schemaversion.sql + ./SQL/SQLite/1/upgrade_000_drop_coreinfo.sql + ./SQL/SQLite/1/upgrade_010_create_coreinfo.sql + ./SQL/SQLite/1/upgrade_020_update_schemaversion.sql ./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql - ./SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql - ./SQL/SQLite/5/upgrade_020_copy_networktable.sql + ./SQL/SQLite/2/upgrade_010_update_schemaversion.sql + ./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql + ./SQL/SQLite/3/upgrade_010_update_schemaversion.sql + ./SQL/SQLite/4/upgrade_000_rename_buffertable.sql + ./SQL/SQLite/4/upgrade_010_create_buffertable.sql + ./SQL/SQLite/4/upgrade_020_copy_buffertable.sql + ./SQL/SQLite/4/upgrade_030_drop_oldbuffertable.sql + ./SQL/SQLite/4/upgrade_040_create_buffer_idx.sql + ./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql ./SQL/SQLite/5/upgrade_000_rename_networktable.sql - ./SQL/SQLite/5/upgrade_180_create_ircservers.sql ./SQL/SQLite/5/upgrade_010_create_newnetworktable.sql - ./SQL/SQLite/12/upgrade_050_drop_ircserverold.sql - ./SQL/SQLite/12/upgrade_030_create_ircserver.sql - ./SQL/SQLite/12/upgrade_010_create_identity_nick.sql - ./SQL/SQLite/12/upgrade_040_copy_ircserver.sql - ./SQL/SQLite/12/upgrade_000_create_identity.sql - ./SQL/SQLite/12/upgrade_020_rename_servertable.sql - ./SQL/SQLite/14/upgrade_000_rename_networktable.sql - ./SQL/SQLite/14/upgrade_040_drop_networkold.sql - ./SQL/SQLite/14/upgrade_010_create_networktable.sql - ./SQL/SQLite/14/upgrade_030_copy_networktable.sql - ./SQL/SQLite/13/upgrade_000_create_buffer_user_idx.sql - ./SQL/SQLite/13/upgrade_020_create_buffer_cname_idx.sql - ./SQL/SQLite/13/upgrade_010_create_buffer_cname_idx.sql - ./SQL/SQLite/11/upgrade_000_create_user_setting.sql - ./SQL/SQLite/3/upgrade_010_update_schemaversion.sql - ./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql - ./SQL/SQLite/8/upgrade_000_alter_network_add_connected.sql - ./SQL/SQLite/8/upgrade_020_alter_buffer_add_joined.sql - ./SQL/SQLite/8/upgrade_010_alter_buffer_add_key.sql - ./SQL/SQLite/8/upgrade_030_update_buffer_set_joined_for_channels.sql - ./SQL/SQLite/6/upgrade_010_set_statusbuffertype.sql - ./SQL/SQLite/6/upgrade_080_update_msgtype.sql + ./SQL/SQLite/5/upgrade_020_copy_networktable.sql + ./SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql + ./SQL/SQLite/5/upgrade_180_create_ircservers.sql ./SQL/SQLite/6/upgrade_000_alter_buffertable.sql - ./SQL/SQLite/6/upgrade_060_update_msgtype.sql - ./SQL/SQLite/6/upgrade_050_update_msgtype.sql - ./SQL/SQLite/6/upgrade_150_update_msgtype.sql - ./SQL/SQLite/6/upgrade_100_update_msgtype.sql - ./SQL/SQLite/6/upgrade_040_update_msgtype.sql - ./SQL/SQLite/6/upgrade_130_update_msgtype.sql - ./SQL/SQLite/6/upgrade_160_update_msgtype.sql + ./SQL/SQLite/6/upgrade_010_set_statusbuffertype.sql ./SQL/SQLite/6/upgrade_020_set_channelbuffertype.sql + ./SQL/SQLite/6/upgrade_030_set_querybuffertype.sql + ./SQL/SQLite/6/upgrade_040_update_msgtype.sql + ./SQL/SQLite/6/upgrade_050_update_msgtype.sql + ./SQL/SQLite/6/upgrade_060_update_msgtype.sql ./SQL/SQLite/6/upgrade_070_update_msgtype.sql + ./SQL/SQLite/6/upgrade_080_update_msgtype.sql ./SQL/SQLite/6/upgrade_090_update_msgtype.sql - ./SQL/SQLite/6/upgrade_030_set_querybuffertype.sql - ./SQL/SQLite/6/upgrade_120_update_msgtype.sql + ./SQL/SQLite/6/upgrade_100_update_msgtype.sql ./SQL/SQLite/6/upgrade_110_update_msgtype.sql + ./SQL/SQLite/6/upgrade_120_update_msgtype.sql + ./SQL/SQLite/6/upgrade_130_update_msgtype.sql ./SQL/SQLite/6/upgrade_140_update_msgtype.sql - ./SQL/SQLite/4/upgrade_010_create_buffertable.sql - ./SQL/SQLite/4/upgrade_040_create_buffer_idx.sql - ./SQL/SQLite/4/upgrade_020_copy_buffertable.sql - ./SQL/SQLite/4/upgrade_030_drop_oldbuffertable.sql - ./SQL/SQLite/4/upgrade_000_rename_buffertable.sql - ./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql - ./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql - ./SQL/SQLite/7/upgrade_020_copy_networktable.sql + ./SQL/SQLite/6/upgrade_150_update_msgtype.sql + ./SQL/SQLite/6/upgrade_160_update_msgtype.sql ./SQL/SQLite/7/upgrade_000_rename_networktable.sql ./SQL/SQLite/7/upgrade_010_create_newnetworktable.sql + ./SQL/SQLite/7/upgrade_020_copy_networktable.sql + ./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql ./SQL/SQLite/7/upgrade_040_alter_buffer_add_lastseen.sql - ./SQL/SQLite/1/upgrade_010_create_coreinfo.sql - ./SQL/SQLite/1/upgrade_020_update_schemaversion.sql - ./SQL/SQLite/1/upgrade_000_drop_coreinfo.sql - ./SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql - ./SQL/SQLite/10/upgrade_030_copy_buffer_table.sql + ./SQL/SQLite/8/upgrade_000_alter_network_add_connected.sql + ./SQL/SQLite/8/upgrade_010_alter_buffer_add_key.sql + ./SQL/SQLite/8/upgrade_020_alter_buffer_add_joined.sql + ./SQL/SQLite/8/upgrade_030_update_buffer_set_joined_for_channels.sql + ./SQL/SQLite/9/upgrade_000_create_backlog_idx.sql + ./SQL/SQLite/9/upgrade_010_create_backlog_idx2.sql + ./SQL/SQLite/9/upgrade_020_create_buffer_idx.sql ./SQL/SQLite/10/upgrade_000_switch_to_msgid.sql - ./SQL/SQLite/10/upgrade_020_create_buffer_table.sql ./SQL/SQLite/10/upgrade_010_rename_buffer_table.sql - ./SQL/SQLite/9/upgrade_020_create_buffer_idx.sql - ./SQL/SQLite/9/upgrade_010_create_backlog_idx2.sql - ./SQL/SQLite/9/upgrade_000_create_backlog_idx.sql + ./SQL/SQLite/10/upgrade_020_create_buffer_table.sql + ./SQL/SQLite/10/upgrade_030_copy_buffer_table.sql + ./SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql + ./SQL/SQLite/11/upgrade_000_create_user_setting.sql + ./SQL/SQLite/12/upgrade_000_create_identity.sql + ./SQL/SQLite/12/upgrade_010_create_identity_nick.sql + ./SQL/SQLite/12/upgrade_020_rename_servertable.sql + ./SQL/SQLite/12/upgrade_030_create_ircserver.sql + ./SQL/SQLite/12/upgrade_040_copy_ircserver.sql + ./SQL/SQLite/12/upgrade_050_drop_ircserverold.sql + ./SQL/SQLite/13/upgrade_000_create_buffer_user_idx.sql + ./SQL/SQLite/13/upgrade_010_create_buffer_cname_idx.sql + ./SQL/SQLite/13/upgrade_020_create_buffer_cname_idx.sql + ./SQL/SQLite/14/upgrade_000_rename_networktable.sql + ./SQL/SQLite/14/upgrade_010_create_networktable.sql + ./SQL/SQLite/14/upgrade_030_copy_networktable.sql + ./SQL/SQLite/14/upgrade_040_drop_networkold.sql + ./SQL/SQLite/15/upgrade_000_fix_ircservers.sql + ./SQL/SQLite/15/upgrade_000_fix_network.sql + ./SQL/SQLite/16/upgrade_000_alter_buffer_add_markerlinemsgid.sql + ./SQL/SQLite/17/upgrade_000_alter_network_add_sasl.sql + ./SQL/SQLite/17/upgrade_001_alter_network_add_sasl.sql + ./SQL/SQLite/17/upgrade_002_alter_network_add_sasl.sql + ./SQL/SQLite/18/upgrade_000_alter_quasseluser_add_passwordversion.sql + ./SQL/SQLite/19/delete_backlog_by_uid.sql + ./SQL/SQLite/19/delete_backlog_for_buffer.sql + ./SQL/SQLite/19/delete_backlog_for_network.sql + ./SQL/SQLite/19/delete_buffer_for_bufferid.sql + ./SQL/SQLite/19/delete_buffers_by_uid.sql + ./SQL/SQLite/19/delete_buffers_for_network.sql + ./SQL/SQLite/19/delete_identity.sql + ./SQL/SQLite/19/delete_ircservers_for_network.sql + ./SQL/SQLite/19/delete_networks_by_uid.sql + ./SQL/SQLite/19/delete_network.sql + ./SQL/SQLite/19/delete_nicks.sql + ./SQL/SQLite/19/delete_quasseluser.sql + ./SQL/SQLite/19/insert_buffer.sql + ./SQL/SQLite/19/insert_identity.sql + ./SQL/SQLite/19/insert_message.sql + ./SQL/SQLite/19/insert_network.sql + ./SQL/SQLite/19/insert_nick.sql + ./SQL/SQLite/19/insert_quasseluser.sql + ./SQL/SQLite/19/insert_sender.sql + ./SQL/SQLite/19/insert_server.sql + ./SQL/SQLite/19/insert_user_setting.sql + ./SQL/SQLite/19/migrate_read_backlog.sql + ./SQL/SQLite/19/migrate_read_buffer.sql + ./SQL/SQLite/19/migrate_read_identity_nick.sql + ./SQL/SQLite/19/migrate_read_identity.sql + ./SQL/SQLite/19/migrate_read_ircserver.sql + ./SQL/SQLite/19/migrate_read_network.sql + ./SQL/SQLite/19/migrate_read_quasseluser.sql + ./SQL/SQLite/19/migrate_read_sender.sql + ./SQL/SQLite/19/migrate_read_usersetting.sql + ./SQL/SQLite/19/select_authuser.sql + ./SQL/SQLite/19/select_buffer_by_id.sql + ./SQL/SQLite/19/select_bufferByName.sql + ./SQL/SQLite/19/select_bufferExists.sql + ./SQL/SQLite/19/select_buffer_lastseen_messages.sql + ./SQL/SQLite/19/select_buffer_markerlinemsgids.sql + ./SQL/SQLite/19/select_buffers_for_merge.sql + ./SQL/SQLite/19/select_buffers_for_network.sql + ./SQL/SQLite/19/select_buffers.sql + ./SQL/SQLite/19/select_checkidentity.sql + ./SQL/SQLite/19/select_connected_networks.sql + ./SQL/SQLite/19/select_identities.sql + ./SQL/SQLite/19/select_internaluser.sql + ./SQL/SQLite/19/select_messagesAllNew.sql + ./SQL/SQLite/19/select_messagesAll.sql + ./SQL/SQLite/19/select_messagesNewerThan.sql + ./SQL/SQLite/19/select_messagesNewestK.sql + ./SQL/SQLite/19/select_messages.sql + ./SQL/SQLite/19/select_network_awaymsg.sql + ./SQL/SQLite/19/select_networkExists.sql + ./SQL/SQLite/19/select_networks_for_user.sql + ./SQL/SQLite/19/select_network_usermode.sql + ./SQL/SQLite/19/select_nicks.sql + ./SQL/SQLite/19/select_persistent_channels.sql + ./SQL/SQLite/19/select_servers_for_network.sql + ./SQL/SQLite/19/select_userid.sql + ./SQL/SQLite/19/select_user_setting.sql + ./SQL/SQLite/19/setup_000_quasseluser.sql + ./SQL/SQLite/19/setup_010_sender.sql + ./SQL/SQLite/19/setup_020_network.sql + ./SQL/SQLite/19/setup_030_buffer.sql + ./SQL/SQLite/19/setup_040_buffer_idx.sql + ./SQL/SQLite/19/setup_050_buffer_cname_idx.sql + ./SQL/SQLite/19/setup_060_backlog.sql + ./SQL/SQLite/19/setup_070_coreinfo.sql + ./SQL/SQLite/19/setup_080_ircservers.sql + ./SQL/SQLite/19/setup_090_backlog_idx.sql + ./SQL/SQLite/19/setup_100_backlog_idx2.sql + ./SQL/SQLite/19/setup_110_buffer_user_idx.sql + ./SQL/SQLite/19/setup_120_user_setting.sql + ./SQL/SQLite/19/setup_130_identity.sql + ./SQL/SQLite/19/setup_140_identity_nick.sql + ./SQL/SQLite/19/update_backlog_bufferid.sql + ./SQL/SQLite/19/update_buffer_lastseen.sql + ./SQL/SQLite/19/update_buffer_markerlinemsgid.sql + ./SQL/SQLite/19/update_buffer_name.sql + ./SQL/SQLite/19/update_buffer_persistent_channel.sql + ./SQL/SQLite/19/update_buffer_set_channel_key.sql + ./SQL/SQLite/19/update_identity.sql + ./SQL/SQLite/19/update_network_connected.sql + ./SQL/SQLite/19/update_network_set_awaymsg.sql + ./SQL/SQLite/19/update_network_set_usermode.sql + ./SQL/SQLite/19/update_network.sql + ./SQL/SQLite/19/update_username.sql + ./SQL/SQLite/19/update_userpassword.sql + ./SQL/SQLite/19/update_user_setting.sql + ./SQL/SQLite/19/upgrade_000_alter_ircserver_add_sslverify.sql + ./SQL/PostgreSQL/15/upgrade_000_alter_buffer_add_markerlinemsgid.sql ./SQL/PostgreSQL/16/upgrade_000_alter_network_add_sasl.sql - ./SQL/PostgreSQL/17/setup_120_alter_messageid_seq.sql - ./SQL/PostgreSQL/17/setup_030_identity_nick.sql - ./SQL/PostgreSQL/17/update_buffer_persistent_channel.sql - ./SQL/PostgreSQL/17/insert_network.sql - ./SQL/PostgreSQL/17/insert_identity.sql - ./SQL/PostgreSQL/17/select_checkidentity.sql - ./SQL/PostgreSQL/17/update_identity.sql - ./SQL/PostgreSQL/17/delete_buffer_for_bufferid.sql - ./SQL/PostgreSQL/17/select_networks_for_user.sql - ./SQL/PostgreSQL/17/select_networkExists.sql - ./SQL/PostgreSQL/17/migrate_write_backlog.sql - ./SQL/PostgreSQL/17/migrate_write_identity_nick.sql - ./SQL/PostgreSQL/17/select_messagesAllNew.sql - ./SQL/PostgreSQL/17/delete_ircservers_for_network.sql - ./SQL/PostgreSQL/17/select_persistent_channels.sql - ./SQL/PostgreSQL/17/update_buffer_set_channel_key.sql - ./SQL/PostgreSQL/17/migrate_write_ircserver.sql - ./SQL/PostgreSQL/17/setup_040_network.sql - ./SQL/PostgreSQL/17/migrate_write_buffer.sql - ./SQL/PostgreSQL/17/migrate_write_usersetting.sql - ./SQL/PostgreSQL/17/setup_050_buffer.sql - ./SQL/PostgreSQL/17/migrate_write_identity.sql - ./SQL/PostgreSQL/17/select_messagesNewerThan.sql - ./SQL/PostgreSQL/17/setup_070_coreinfo.sql - ./SQL/PostgreSQL/17/insert_nick.sql - ./SQL/PostgreSQL/17/select_messagesAll.sql - ./SQL/PostgreSQL/17/delete_identity.sql - ./SQL/PostgreSQL/17/setup_110_alter_sender_seq.sql - ./SQL/PostgreSQL/17/select_senderid.sql - ./SQL/PostgreSQL/17/select_buffer_markerlinemsgids.sql - ./SQL/PostgreSQL/17/select_buffer_lastseen_messages.sql - ./SQL/PostgreSQL/17/insert_sender.sql - ./SQL/PostgreSQL/17/select_nicks.sql - ./SQL/PostgreSQL/17/insert_user_setting.sql - ./SQL/PostgreSQL/17/setup_020_identity.sql - ./SQL/PostgreSQL/17/delete_buffers_for_network.sql - ./SQL/PostgreSQL/17/select_messages.sql - ./SQL/PostgreSQL/17/select_buffers.sql - ./SQL/PostgreSQL/17/select_userid.sql - ./SQL/PostgreSQL/17/update_network.sql - ./SQL/PostgreSQL/17/setup_010_sender.sql - ./SQL/PostgreSQL/17/delete_quasseluser.sql - ./SQL/PostgreSQL/17/select_network_usermode.sql - ./SQL/PostgreSQL/17/update_userpassword.sql - ./SQL/PostgreSQL/17/select_identities.sql - ./SQL/PostgreSQL/17/setup_000_quasseluser.sql - ./SQL/PostgreSQL/17/setup_080_ircservers.sql - ./SQL/PostgreSQL/17/delete_nicks.sql - ./SQL/PostgreSQL/17/migrate_write_quasseluser.sql - ./SQL/PostgreSQL/17/delete_network.sql - ./SQL/PostgreSQL/17/select_servers_for_network.sql - ./SQL/PostgreSQL/17/select_connected_networks.sql - ./SQL/PostgreSQL/17/update_network_connected.sql - ./SQL/PostgreSQL/17/select_messagesRange.sql - ./SQL/PostgreSQL/17/delete_backlog_for_network.sql - ./SQL/PostgreSQL/17/setup_060_backlog.sql - ./SQL/PostgreSQL/17/update_username.sql - ./SQL/PostgreSQL/17/insert_message.sql - ./SQL/PostgreSQL/17/select_buffer_by_id.sql - ./SQL/PostgreSQL/17/update_user_setting.sql - ./SQL/PostgreSQL/17/update_buffer_name.sql - ./SQL/PostgreSQL/17/select_bufferExists.sql - ./SQL/PostgreSQL/17/select_buffers_for_network.sql - ./SQL/PostgreSQL/17/delete_backlog_by_uid.sql - ./SQL/PostgreSQL/17/select_internaluser.sql - ./SQL/PostgreSQL/17/select_network_awaymsg.sql - ./SQL/PostgreSQL/17/setup_090_backlog_idx.sql - ./SQL/PostgreSQL/17/insert_quasseluser.sql - ./SQL/PostgreSQL/17/update_network_set_usermode.sql - ./SQL/PostgreSQL/17/delete_backlog_for_buffer.sql - ./SQL/PostgreSQL/17/update_network_set_awaymsg.sql ./SQL/PostgreSQL/17/upgrade_000_alter_quasseluser_add_passwordversion.sql - ./SQL/PostgreSQL/17/update_backlog_bufferid.sql - ./SQL/PostgreSQL/17/update_buffer_markerlinemsgid.sql - ./SQL/PostgreSQL/17/update_buffer_lastseen.sql - ./SQL/PostgreSQL/17/insert_buffer.sql - ./SQL/PostgreSQL/17/select_authuser.sql - ./SQL/PostgreSQL/17/select_user_setting.sql - ./SQL/PostgreSQL/17/migrate_write_network.sql - ./SQL/PostgreSQL/17/select_bufferByName.sql - ./SQL/PostgreSQL/17/insert_server.sql - ./SQL/PostgreSQL/17/delete_networks_by_uid.sql - ./SQL/PostgreSQL/17/migrate_write_sender.sql - ./SQL/PostgreSQL/17/delete_buffers_by_uid.sql - ./SQL/PostgreSQL/17/setup_100_user_setting.sql - ./SQL/PostgreSQL/15/upgrade_000_alter_buffer_add_markerlinemsgid.sql + ./SQL/PostgreSQL/18/delete_backlog_by_uid.sql + ./SQL/PostgreSQL/18/delete_backlog_for_buffer.sql + ./SQL/PostgreSQL/18/delete_backlog_for_network.sql + ./SQL/PostgreSQL/18/delete_buffer_for_bufferid.sql + ./SQL/PostgreSQL/18/delete_buffers_by_uid.sql + ./SQL/PostgreSQL/18/delete_buffers_for_network.sql + ./SQL/PostgreSQL/18/delete_identity.sql + ./SQL/PostgreSQL/18/delete_ircservers_for_network.sql + ./SQL/PostgreSQL/18/delete_networks_by_uid.sql + ./SQL/PostgreSQL/18/delete_network.sql + ./SQL/PostgreSQL/18/delete_nicks.sql + ./SQL/PostgreSQL/18/delete_quasseluser.sql + ./SQL/PostgreSQL/18/insert_buffer.sql + ./SQL/PostgreSQL/18/insert_identity.sql + ./SQL/PostgreSQL/18/insert_message.sql + ./SQL/PostgreSQL/18/insert_network.sql + ./SQL/PostgreSQL/18/insert_nick.sql + ./SQL/PostgreSQL/18/insert_quasseluser.sql + ./SQL/PostgreSQL/18/insert_sender.sql + ./SQL/PostgreSQL/18/insert_server.sql + ./SQL/PostgreSQL/18/insert_user_setting.sql + ./SQL/PostgreSQL/18/migrate_write_backlog.sql + ./SQL/PostgreSQL/18/migrate_write_buffer.sql + ./SQL/PostgreSQL/18/migrate_write_identity_nick.sql + ./SQL/PostgreSQL/18/migrate_write_identity.sql + ./SQL/PostgreSQL/18/migrate_write_ircserver.sql + ./SQL/PostgreSQL/18/migrate_write_network.sql + ./SQL/PostgreSQL/18/migrate_write_quasseluser.sql + ./SQL/PostgreSQL/18/migrate_write_sender.sql + ./SQL/PostgreSQL/18/migrate_write_usersetting.sql + ./SQL/PostgreSQL/18/select_authuser.sql + ./SQL/PostgreSQL/18/select_buffer_by_id.sql + ./SQL/PostgreSQL/18/select_bufferByName.sql + ./SQL/PostgreSQL/18/select_bufferExists.sql + ./SQL/PostgreSQL/18/select_buffer_lastseen_messages.sql + ./SQL/PostgreSQL/18/select_buffer_markerlinemsgids.sql + ./SQL/PostgreSQL/18/select_buffers_for_network.sql + ./SQL/PostgreSQL/18/select_buffers.sql + ./SQL/PostgreSQL/18/select_checkidentity.sql + ./SQL/PostgreSQL/18/select_connected_networks.sql + ./SQL/PostgreSQL/18/select_identities.sql + ./SQL/PostgreSQL/18/select_internaluser.sql + ./SQL/PostgreSQL/18/select_messagesAllNew.sql + ./SQL/PostgreSQL/18/select_messagesAll.sql + ./SQL/PostgreSQL/18/select_messagesNewerThan.sql + ./SQL/PostgreSQL/18/select_messagesRange.sql + ./SQL/PostgreSQL/18/select_messages.sql + ./SQL/PostgreSQL/18/select_network_awaymsg.sql + ./SQL/PostgreSQL/18/select_networkExists.sql + ./SQL/PostgreSQL/18/select_networks_for_user.sql + ./SQL/PostgreSQL/18/select_network_usermode.sql + ./SQL/PostgreSQL/18/select_nicks.sql + ./SQL/PostgreSQL/18/select_persistent_channels.sql + ./SQL/PostgreSQL/18/select_senderid.sql + ./SQL/PostgreSQL/18/select_servers_for_network.sql + ./SQL/PostgreSQL/18/select_userid.sql + ./SQL/PostgreSQL/18/select_user_setting.sql + ./SQL/PostgreSQL/18/setup_000_quasseluser.sql + ./SQL/PostgreSQL/18/setup_010_sender.sql + ./SQL/PostgreSQL/18/setup_020_identity.sql + ./SQL/PostgreSQL/18/setup_030_identity_nick.sql + ./SQL/PostgreSQL/18/setup_040_network.sql + ./SQL/PostgreSQL/18/setup_050_buffer.sql + ./SQL/PostgreSQL/18/setup_060_backlog.sql + ./SQL/PostgreSQL/18/setup_070_coreinfo.sql + ./SQL/PostgreSQL/18/setup_080_ircservers.sql + ./SQL/PostgreSQL/18/setup_090_backlog_idx.sql + ./SQL/PostgreSQL/18/setup_100_user_setting.sql + ./SQL/PostgreSQL/18/setup_110_alter_sender_seq.sql + ./SQL/PostgreSQL/18/setup_120_alter_messageid_seq.sql + ./SQL/PostgreSQL/18/update_backlog_bufferid.sql + ./SQL/PostgreSQL/18/update_buffer_lastseen.sql + ./SQL/PostgreSQL/18/update_buffer_markerlinemsgid.sql + ./SQL/PostgreSQL/18/update_buffer_name.sql + ./SQL/PostgreSQL/18/update_buffer_persistent_channel.sql + ./SQL/PostgreSQL/18/update_buffer_set_channel_key.sql + ./SQL/PostgreSQL/18/update_identity.sql + ./SQL/PostgreSQL/18/update_network_connected.sql + ./SQL/PostgreSQL/18/update_network_set_awaymsg.sql + ./SQL/PostgreSQL/18/update_network_set_usermode.sql + ./SQL/PostgreSQL/18/update_network.sql + ./SQL/PostgreSQL/18/update_username.sql + ./SQL/PostgreSQL/18/update_userpassword.sql + ./SQL/PostgreSQL/18/update_user_setting.sql + ./SQL/PostgreSQL/18/upgrade_000_alter_ircserver_add_sslverify.sql diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 34859c3b..c8f57d10 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -676,6 +676,7 @@ void SqliteStorage::bindServerInfo(QSqlQuery &query, const Network::Server &serv query.bindValue(":proxyport", server.proxyPort); query.bindValue(":proxyuser", server.proxyUser); query.bindValue(":proxypass", server.proxyPass); + query.bindValue(":sslverify", server.sslVerify ? 1 : 0); } @@ -875,6 +876,7 @@ QList SqliteStorage::networks(UserId user) server.proxyPort = serversQuery.value(8).toUInt(); server.proxyUser = serversQuery.value(9).toString(); server.proxyPass = serversQuery.value(10).toString(); + server.sslVerify = serversQuery.value(11).toInt() == 1 ? true : false; servers << server; } net.serverList = servers; @@ -1977,6 +1979,7 @@ bool SqliteMigrationReader::readMo(IrcServerMO &ircserver) ircserver.proxyport = value(11).toInt(); ircserver.proxyuser = value(12).toString(); ircserver.proxypass = value(13).toString(); + ircserver.sslverify = value(14).toInt() == 1 ? true : false; return true; } diff --git a/src/qtui/settingspages/networkadddlg.ui b/src/qtui/settingspages/networkadddlg.ui index a04492e2..318c1fec 100644 --- a/src/qtui/settingspages/networkadddlg.ui +++ b/src/qtui/settingspages/networkadddlg.ui @@ -7,7 +7,7 @@ 0 0 421 - 275 + 307 @@ -127,8 +127,27 @@ + + Try to use an encrypted connection (e.g. SSL/TLS) + - Use secure connection + Use encrypted connection + + + + + + + false + + + <p>Verify the encrypted connection provides a valid certificate, increasing security.<br/>Uncheck if the IRC server uses a self-signed or invalid certificate.</p> + + + Verify connection security + + + true @@ -169,6 +188,7 @@ port serverPassword useSSL + sslVerify buttonBox diff --git a/src/qtui/settingspages/networkssettingspage.cpp b/src/qtui/settingspages/networkssettingspage.cpp index 5ba55023..cca20e74 100644 --- a/src/qtui/settingspages/networkssettingspage.cpp +++ b/src/qtui/settingspages/networkssettingspage.cpp @@ -786,6 +786,25 @@ NetworkAddDlg::NetworkAddDlg(const QStringList &exist, QWidget *parent) : QDialo ui.setupUi(this); ui.useSSL->setIcon(QIcon::fromTheme("document-encrypt")); + if (Client::coreFeatures() & Quassel::VerifyServerSSL) { + // Synchronize requiring SSL with the use SSL checkbox + ui.sslVerify->setEnabled(ui.useSSL->isChecked()); + connect(ui.useSSL, SIGNAL(toggled(bool)), ui.sslVerify, SLOT(setEnabled(bool))); + } else { + // Core isn't new enough to allow requiring SSL; disable checkbox and uncheck + ui.sslVerify->setEnabled(false); + ui.sslVerify->setChecked(false); + // Split up the message to allow re-using translations: + // [Original tool-tip] + // [Bold 'does not support feature' message] + // [Specific version needed and feature details] + ui.sslVerify->setToolTip(QString("%1
%2
%3").arg( + ui.sslVerify->toolTip(), + tr("Your Quassel core does not support this feature"), + tr("You need a Quassel core v0.13.0 or newer in order to " + "verify connection security."))); + } + // read preset networks QStringList networks = PresetNetworks::names(); foreach(QString s, existing) @@ -807,7 +826,9 @@ NetworkInfo NetworkAddDlg::networkInfo() const if (ui.useManual->isChecked()) { NetworkInfo info; info.networkName = ui.networkName->text().trimmed(); - info.serverList << Network::Server(ui.serverAddress->text().trimmed(), ui.port->value(), ui.serverPassword->text(), ui.useSSL->isChecked()); + info.serverList << Network::Server(ui.serverAddress->text().trimmed(), ui.port->value(), + ui.serverPassword->text(), ui.useSSL->isChecked(), + ui.sslVerify->isChecked()); return info; } else @@ -869,6 +890,7 @@ ServerEditDlg::ServerEditDlg(const Network::Server &server, QWidget *parent) : Q ui.port->setValue(server.port); ui.password->setText(server.password); ui.useSSL->setChecked(server.useSsl); + ui.sslVerify->setChecked(server.sslVerify); ui.sslVersion->setCurrentIndex(server.sslVersion); ui.useProxy->setChecked(server.useProxy); ui.proxyType->setCurrentIndex(server.proxyType == QNetworkProxy::Socks5Proxy ? 0 : 1); @@ -893,13 +915,33 @@ ServerEditDlg::ServerEditDlg(const Network::Server &server, QWidget *parent) : Q ui.sslVersion->hide(); } + if (Client::coreFeatures() & Quassel::VerifyServerSSL) { + // Synchronize requiring SSL with the use SSL checkbox + ui.sslVerify->setEnabled(ui.useSSL->isChecked()); + connect(ui.useSSL, SIGNAL(toggled(bool)), ui.sslVerify, SLOT(setEnabled(bool))); + } else { + // Core isn't new enough to allow requiring SSL; disable checkbox and uncheck + ui.sslVerify->setEnabled(false); + ui.sslVerify->setChecked(false); + // Split up the message to allow re-using translations: + // [Original tool-tip] + // [Bold 'does not support feature' message] + // [Specific version needed and feature details] + ui.sslVerify->setToolTip(QString("%1
%2
%3").arg( + ui.sslVerify->toolTip(), + tr("Your Quassel core does not support this feature"), + tr("You need a Quassel core v0.13.0 or newer in order to " + "verify connection security."))); + } + on_host_textChanged(); } Network::Server ServerEditDlg::serverData() const { - Network::Server server(ui.host->text().trimmed(), ui.port->value(), ui.password->text(), ui.useSSL->isChecked()); + Network::Server server(ui.host->text().trimmed(), ui.port->value(), ui.password->text(), + ui.useSSL->isChecked(), ui.sslVerify->isChecked()); server.sslVersion = ui.sslVersion->currentIndex(); server.useProxy = ui.useProxy->isChecked(); server.proxyType = ui.proxyType->currentIndex() == 0 ? QNetworkProxy::Socks5Proxy : QNetworkProxy::HttpProxy; diff --git a/src/qtui/settingspages/servereditdlg.ui b/src/qtui/settingspages/servereditdlg.ui index 2627f689..c05cee25 100644 --- a/src/qtui/settingspages/servereditdlg.ui +++ b/src/qtui/settingspages/servereditdlg.ui @@ -11,7 +11,7 @@
- Dialog + Edit Server @@ -90,8 +90,11 @@ true + + Try to use an encrypted connection (e.g. SSL/TLS) + - Use SSL + Use encrypted connection @@ -99,6 +102,22 @@ + + + + false + + + <p>Verify the encrypted connection provides a valid certificate, increasing security.<br/>Uncheck if the IRC server uses a self-signed or invalid certificate.</p> + + + Verify connection security + + + true + + + @@ -309,6 +328,7 @@ port password useSSL + sslVerify sslVersion useProxy proxyType -- 2.20.1