mirror of
https://github.com/irssi/irssi.git
synced 2024-06-23 06:35:36 +00:00
Compare commits
11 Commits
8c5b624ab6
...
d3bb968311
Author | SHA1 | Date | |
---|---|---|---|
|
d3bb968311 | ||
|
5c15937554 | ||
|
19e7d3f6b8 | ||
|
822fd50132 | ||
|
4b48cdce65 | ||
|
c906b769fd | ||
|
9d0787fc10 | ||
|
89f3e1acf5 | ||
|
455dcb18ec | ||
|
215be29035 | ||
|
e295caa866 |
2
.github/workflows/clangformat.yml
vendored
2
.github/workflows/clangformat.yml
vendored
|
@ -26,4 +26,4 @@ jobs:
|
|||
if: failure()
|
||||
with:
|
||||
name: git-clang-format.diff
|
||||
path: git-clang-format.diff
|
||||
path: git-clang-format.diff
|
||||
|
|
2
.github/workflows/trigger-pages.yml
vendored
2
.github/workflows/trigger-pages.yml
vendored
|
@ -17,4 +17,4 @@ jobs:
|
|||
repo: 'irssi.github.io',
|
||||
workflow_id: 'pages.yml',
|
||||
ref: 'main'
|
||||
})
|
||||
})
|
||||
|
|
|
@ -162,4 +162,4 @@ server reconnections and irc network splits</li>
|
|||
<li>placing channels and queries in windows</li>
|
||||
<li>nick completion</li>
|
||||
<li>printing infomation of some events</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
|
|
@ -78,4 +78,4 @@
|
|||
|
||||
<h3 id="q-how-to-pronounce-irssi">Q: How to pronounce Irssi?</h3>
|
||||
|
||||
<p>A: Check <a href="/assets/irssi.wav">here</a></p>
|
||||
<p>A: Check <a href="/assets/irssi.wav">here</a></p>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#define IRSSI_GLOBAL_CONFIG "irssi.conf" /* config file name in /etc/ */
|
||||
#define IRSSI_HOME_CONFIG "config" /* config file name in ~/.irssi/ */
|
||||
|
||||
#define IRSSI_ABI_VERSION 53
|
||||
#define IRSSI_ABI_VERSION 54
|
||||
|
||||
#define DEFAULT_SERVER_ADD_PORT 6667
|
||||
#define DEFAULT_SERVER_ADD_TLS_PORT 6697
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include <irssi/src/core/servers-setup.h>
|
||||
#include <irssi/src/core/servers-reconnect.h>
|
||||
#include <irssi/src/core/channels.h>
|
||||
#include <irssi/src/core/chatnets.h>
|
||||
#include <irssi/src/core/queries.h>
|
||||
#include <irssi/src/core/window-item-def.h>
|
||||
#include <irssi/src/core/rawlog.h>
|
||||
|
@ -91,7 +92,7 @@ static SERVER_CONNECT_REC *get_server_connect(const char *data, int *plus_addr,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
if (strchr(addr, '/') != NULL)
|
||||
if (strchr(addr, '/') != NULL && chatnet_find(addr) == NULL)
|
||||
conn->unix_socket = TRUE;
|
||||
|
||||
/* TLS options are handled in server_create_conn_opt ... -> server_setup_fill_optlist */
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include <irssi/src/core/tls.h>
|
||||
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/objects.h>
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/x509v3.h>
|
||||
#include <openssl/pem.h>
|
||||
|
@ -751,44 +752,49 @@ static void set_server_temporary_key_info(TLS_REC *tls, SSL *ssl)
|
|||
#ifdef SSL_get_server_tmp_key
|
||||
/* Show ephemeral key information. */
|
||||
EVP_PKEY *ephemeral_key = NULL;
|
||||
|
||||
/* OPENSSL_NO_EC is for solaris 11.3 (2016), github ticket #598 */
|
||||
#ifndef OPENSSL_NO_EC
|
||||
EC_KEY *ec_key = NULL;
|
||||
#endif
|
||||
char *ephemeral_key_algorithm = NULL;
|
||||
char *cname = NULL;
|
||||
int nid;
|
||||
|
||||
g_return_if_fail(tls != NULL);
|
||||
g_return_if_fail(ssl != NULL);
|
||||
|
||||
if (SSL_get_server_tmp_key(ssl, &ephemeral_key)) {
|
||||
switch (EVP_PKEY_id(ephemeral_key)) {
|
||||
case EVP_PKEY_DH:
|
||||
tls_rec_set_ephemeral_key_algorithm(tls, "DH");
|
||||
tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key));
|
||||
break;
|
||||
int keytype = EVP_PKEY_id(ephemeral_key);
|
||||
switch (keytype) {
|
||||
case EVP_PKEY_DH:
|
||||
tls_rec_set_ephemeral_key_algorithm(tls, "DH");
|
||||
tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key));
|
||||
break;
|
||||
|
||||
/* OPENSSL_NO_EC is for solaris 11.3 (2016), github ticket #598 */
|
||||
#ifndef OPENSSL_NO_EC
|
||||
case EVP_PKEY_EC:
|
||||
ec_key = EVP_PKEY_get1_EC_KEY(ephemeral_key);
|
||||
nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(ec_key));
|
||||
EC_KEY_free(ec_key);
|
||||
cname = (char *)OBJ_nid2sn(nid);
|
||||
ephemeral_key_algorithm = g_strdup_printf("ECDH: %s", cname);
|
||||
case EVP_PKEY_EC: {
|
||||
#if (OPENSSL_VERSION_NUMBER >= 0x30000000L)
|
||||
char cname[50];
|
||||
EVP_PKEY_get_group_name(ephemeral_key, cname, sizeof(cname), NULL);
|
||||
#else
|
||||
EC_KEY *ec_key = NULL;
|
||||
char *cname = NULL;
|
||||
int nid;
|
||||
|
||||
tls_rec_set_ephemeral_key_algorithm(tls, ephemeral_key_algorithm);
|
||||
tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key));
|
||||
ec_key = EVP_PKEY_get1_EC_KEY(ephemeral_key);
|
||||
nid = EC_GROUP_get_curve_name(EC_KEY_get0_group(ec_key));
|
||||
EC_KEY_free(ec_key);
|
||||
cname = (char *) OBJ_nid2sn(nid);
|
||||
#endif
|
||||
ephemeral_key_algorithm = g_strdup_printf("ECDH: %s", cname);
|
||||
|
||||
g_free_and_null(ephemeral_key_algorithm);
|
||||
break;
|
||||
tls_rec_set_ephemeral_key_algorithm(tls, ephemeral_key_algorithm);
|
||||
tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key));
|
||||
|
||||
g_free_and_null(ephemeral_key_algorithm);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
default:
|
||||
tls_rec_set_ephemeral_key_algorithm(tls, "Unknown");
|
||||
tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key));
|
||||
break;
|
||||
default:
|
||||
tls_rec_set_ephemeral_key_algorithm(tls, OBJ_nid2ln(keytype));
|
||||
tls_rec_set_ephemeral_key_size(tls, EVP_PKEY_bits(ephemeral_key));
|
||||
break;
|
||||
}
|
||||
|
||||
EVP_PKEY_free(ephemeral_key);
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <irssi/src/fe-common/core/printtext.h>
|
||||
#include <irssi/src/fe-common/core/fe-channels.h>
|
||||
#include <irssi/src/fe-common/irc/fe-irc-server.h>
|
||||
#include <irssi/src/fe-common/irc/fe-irc-channels.h>
|
||||
|
||||
static void print_event_received(IRC_SERVER_REC *server, const char *data,
|
||||
const char *nick, int target_param);
|
||||
|
@ -138,38 +139,6 @@ static void event_end_of_who(IRC_SERVER_REC *server, const char *data)
|
|||
g_free(params);
|
||||
}
|
||||
|
||||
/* Get time elapsed since an event */
|
||||
static char *time_ago(time_t seconds)
|
||||
{
|
||||
static char ret[128];
|
||||
long unsigned years, weeks, days, hours, minutes;
|
||||
|
||||
seconds = time(NULL) - seconds;
|
||||
|
||||
years = seconds / (86400 * 365);
|
||||
seconds %= (86400 * 365);
|
||||
weeks = seconds / 604800;
|
||||
days = (seconds / 86400) % 7;
|
||||
hours = (seconds / 3600) % 24;
|
||||
minutes = (seconds / 60) % 60;
|
||||
seconds %= 60;
|
||||
|
||||
if (years)
|
||||
snprintf(ret, sizeof(ret), "%luy %luw %lud", years, weeks, days);
|
||||
else if (weeks)
|
||||
snprintf(ret, sizeof(ret), "%luw %lud %luh", weeks, days, hours);
|
||||
else if (days)
|
||||
snprintf(ret, sizeof(ret), "%lud %luh %lum", days, hours, minutes);
|
||||
else if (hours)
|
||||
snprintf(ret, sizeof(ret), "%luh %lum", hours, minutes);
|
||||
else if (minutes)
|
||||
snprintf(ret, sizeof(ret), "%lum %lus", minutes, (long unsigned) seconds);
|
||||
else
|
||||
snprintf(ret, sizeof(ret), "%lus", (long unsigned) seconds);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void event_ban_list(IRC_SERVER_REC *server, const char *data)
|
||||
{
|
||||
IRC_CHANNEL_REC *chanrec;
|
||||
|
|
|
@ -73,6 +73,38 @@ const char *fe_channel_skip_prefix(IRC_SERVER_REC *server, const char *target)
|
|||
return target;
|
||||
}
|
||||
|
||||
/* Get time elapsed since an event */
|
||||
char *time_ago(time_t seconds)
|
||||
{
|
||||
static char ret[128];
|
||||
long unsigned years, weeks, days, hours, minutes;
|
||||
|
||||
seconds = time(NULL) - seconds;
|
||||
|
||||
years = seconds / (86400 * 365);
|
||||
seconds %= (86400 * 365);
|
||||
weeks = seconds / 604800;
|
||||
days = (seconds / 86400) % 7;
|
||||
hours = (seconds / 3600) % 24;
|
||||
minutes = (seconds / 60) % 60;
|
||||
seconds %= 60;
|
||||
|
||||
if (years)
|
||||
snprintf(ret, sizeof(ret), "%luy %luw %lud", years, weeks, days);
|
||||
else if (weeks)
|
||||
snprintf(ret, sizeof(ret), "%luw %lud %luh", weeks, days, hours);
|
||||
else if (days)
|
||||
snprintf(ret, sizeof(ret), "%lud %luh %lum", days, hours, minutes);
|
||||
else if (hours)
|
||||
snprintf(ret, sizeof(ret), "%luh %lum", hours, minutes);
|
||||
else if (minutes)
|
||||
snprintf(ret, sizeof(ret), "%lum %lus", minutes, (long unsigned) seconds);
|
||||
else
|
||||
snprintf(ret, sizeof(ret), "%lus", (long unsigned) seconds);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void sig_channel_rejoin(SERVER_REC *server, REJOIN_REC *rec)
|
||||
{
|
||||
g_return_if_fail(rec != NULL);
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
int fe_channel_is_opchannel(IRC_SERVER_REC *server, const char *target);
|
||||
const char *fe_channel_skip_prefix(IRC_SERVER_REC *server, const char *target);
|
||||
char *time_ago(time_t seconds);
|
||||
|
||||
void fe_irc_channels_init(void);
|
||||
void fe_irc_channels_deinit(void);
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include <irssi/src/fe-common/core/window-items.h>
|
||||
#include <irssi/src/fe-common/core/printtext.h>
|
||||
#include <irssi/src/fe-common/core/keyboard.h>
|
||||
#include <irssi/src/fe-common/irc/fe-irc-channels.h>
|
||||
|
||||
/* SYNTAX: ME <message> */
|
||||
static void cmd_me(const char *data, IRC_SERVER_REC *server, WI_ITEM_REC *item)
|
||||
|
@ -224,15 +225,16 @@ static void bans_show_channel(IRC_CHANNEL_REC *channel, IRC_SERVER_REC *server)
|
|||
/* show bans.. */
|
||||
counter = 1;
|
||||
for (tmp = channel->banlist; tmp != NULL; tmp = tmp->next) {
|
||||
char *timestr, *ago;
|
||||
BAN_REC *rec = tmp->data;
|
||||
timestr = my_asctime(rec->time);
|
||||
ago = time_ago(rec->time);
|
||||
|
||||
printformat(server, channel->visible_name, MSGLEVEL_CRAP,
|
||||
(rec->setby == NULL || *rec->setby == '\0') ?
|
||||
IRCTXT_BANLIST : IRCTXT_BANLIST_LONG,
|
||||
counter, channel->visible_name,
|
||||
rec->ban, rec->setby,
|
||||
(int) (time(NULL)-rec->time));
|
||||
counter++;
|
||||
(rec->setby == NULL || *rec->setby == '\0') ? IRCTXT_BANLIST :
|
||||
IRCTXT_BANLIST_LONG,
|
||||
counter, channel->visible_name, rec->ban, rec->setby, ago, timestr);
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -24,4 +24,4 @@ void scram_session_free(SCRAM_SESSION_REC *session);
|
|||
scram_status scram_process(SCRAM_SESSION_REC *session, const char *input, char **output,
|
||||
size_t *output_len);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue
Block a user