Compare commits
3 Commits
f1214dbfb5
...
fa4ed1f006
Author | SHA1 | Date |
---|---|---|
Loïc Gomez | fa4ed1f006 | |
Loïc Gomez | 07084a5902 | |
Pierre-Louis Bonicoli | 0db4305311 |
|
@ -58,7 +58,8 @@ src/lex.c
|
|||
|
||||
# Binaries
|
||||
src/*.o
|
||||
src/b64/*.o
|
||||
src/utils/*.o
|
||||
src/utils/*/*.o
|
||||
src/*.a
|
||||
src/bip
|
||||
src/bipmkpw
|
||||
|
|
|
@ -146,7 +146,7 @@ Defines the delay between each logfiles sync to the disk. Must be a non null
|
|||
positive integer.
|
||||
|
||||
.TP
|
||||
\fBreconn_timer\fP (default: \fB30\fP)
|
||||
\fBreconn_timer\fP (default: \fB120\fP)
|
||||
Defines the initial delay (in seconds) before a reconnection attempt.
|
||||
The delay increases with the number of attempts:
|
||||
delay = reconn_timer * number of attempts
|
||||
|
@ -227,7 +227,7 @@ This option should of course not be enabled if \fBbacklog_lines\fP is 0 !
|
|||
If you still want to do so, don't forget to \fB/BIP BLRESET\fP sometimes.
|
||||
|
||||
.TP
|
||||
\fBbacklog_lines\fP (default: \fB0\fP)
|
||||
\fBbacklog_lines\fP (default: \fB10\fP)
|
||||
If set to 0, BIP will replay all the logs since last client disconnect. Else,
|
||||
it'll replay exactly \fBbacklog_lines\fP lines on each channel and privates.
|
||||
Be aware that BIP will replay \fBbacklog_lines\fP lines of all privates, even
|
||||
|
|
|
@ -86,7 +86,7 @@
|
|||
# Sets the initial delay (in seconds) before a reconnection attempt.
|
||||
# The delay increases with the number of attempts:
|
||||
# delay = reconn_timer * number of attempts
|
||||
#reconn_timer = 30;
|
||||
#reconn_timer = 120;
|
||||
|
||||
# Network definition, a name and server info
|
||||
#network {
|
||||
|
|
|
@ -119,7 +119,7 @@ my %optdesc = (
|
|||
'optional' => 1,
|
||||
'depends' => 'log', 'depval' => 'true',
|
||||
'desc' => 'Do you want to activate backlog {play back logs} system ?' },
|
||||
'backlog_lines' => { 'type' => 'i', 'adv' => 0, 'default' => '0',
|
||||
'backlog_lines' => { 'type' => 'i', 'adv' => 0, 'default' => '10',
|
||||
'optional' => 1,
|
||||
'depends' => 'backlog', 'depval' => 'true',
|
||||
'desc' => 'How much line do you want bip to play back upon client connect' .
|
||||
|
|
|
@ -19,7 +19,7 @@ libbip_a_SOURCES = \
|
|||
path_util.c path_util.h \
|
||||
tuple.h \
|
||||
util.c util.h \
|
||||
b64/base64.c b64/base64.h
|
||||
utils/b64/base64.c utils/b64/base64.h
|
||||
|
||||
libbip_a_CFLAGS = ${OPENSSL_CFLAGS} $(AM_CFLAGS)
|
||||
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
Last sync for base64 lib:
|
||||
- by: Kyoshiro on 2024-02-19
|
||||
- url: http://w1.fi/cgit/hostap/commit/src/utils/base64.c
|
||||
- commit-id: c7e6dbdad8ee043a9d7f856502196dbeb65cb4ac
|
||||
- commit-date: Mon Jun 15 20:18:12 2020 +0300
|
||||
- base64.h: d545b2931ca2206a265226049d90882a527236f0
|
||||
- base64.c: 0d121c1989cac9349949b2cd3611f49a1ef2820f
|
91
src/bip.c
91
src/bip.c
|
@ -67,7 +67,6 @@ void conf_die(bip_t *bip, char *fmt, ...);
|
|||
static char *get_tuple_pvalue(list_t *tuple_l, int lex);
|
||||
void bip_notify(struct link_client *ic, char *fmt, ...);
|
||||
void adm_list_connections(struct link_client *ic, struct bipuser *bu);
|
||||
struct link *find_link(const char *link_name, struct bipuser *bu);
|
||||
void free_conf(list_t *l);
|
||||
|
||||
|
||||
|
@ -374,45 +373,6 @@ static int add_network(bip_t *bip, list_t *data)
|
|||
return 1;
|
||||
}
|
||||
|
||||
void adm_bip_jump(struct link_client *ic, const char *conn_name,
|
||||
int reset_timer)
|
||||
{
|
||||
struct link *lnk;
|
||||
if (conn_name) {
|
||||
lnk = find_link(conn_name, LINK(ic)->user);
|
||||
if (!lnk) {
|
||||
bip_notify(ic, "-- Cannot find connection named %s",
|
||||
conn_name);
|
||||
return;
|
||||
}
|
||||
goto do_the_jump;
|
||||
} else {
|
||||
lnk = LINK(ic);
|
||||
}
|
||||
|
||||
do_the_jump:
|
||||
if (!lnk->l_server) {
|
||||
if (reset_timer) {
|
||||
lnk->recon_timer = 0;
|
||||
bip_notify(ic,
|
||||
"-- %s is not connected, "
|
||||
"timer has been reset, please wait",
|
||||
conn_name);
|
||||
return;
|
||||
}
|
||||
int timer = (lnk->recon_timer ? lnk->recon_timer : 0);
|
||||
bip_notify(ic,
|
||||
"-- %s is not connected, "
|
||||
"please wait for reconnect (%ds)",
|
||||
conn_name, timer);
|
||||
return;
|
||||
}
|
||||
|
||||
WRITE_LINE1(CONN(lnk->l_server), NULL, "QUIT", "jumpin' jumpin'");
|
||||
connection_close(CONN(lnk->l_server));
|
||||
bip_notify(ic, "-- Jumping to next server on %s", conn_name);
|
||||
}
|
||||
|
||||
void adm_bip_delconn(bip_t *bip, struct link_client *ic, const char *conn_name)
|
||||
{
|
||||
struct bipuser *user = LINK(ic)->user;
|
||||
|
@ -704,31 +664,6 @@ static int add_connection(bip_t *bip, struct bipuser *user, list_t *data)
|
|||
return 1;
|
||||
}
|
||||
|
||||
struct link *find_link(const char *link_name, struct bipuser *bu)
|
||||
{
|
||||
list_iterator_t it;
|
||||
|
||||
// Immediately return NULL when bip user (bu) is NULL
|
||||
if (!bu) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (list_it_init(&_bip->link_list, &it); list_it_item(&it);
|
||||
list_it_next(&it)) {
|
||||
struct link *lnk = list_it_item(&it);
|
||||
if (!lnk)
|
||||
continue;
|
||||
// Only lookup in optionally specified user links
|
||||
if (bu != lnk->user)
|
||||
continue;
|
||||
|
||||
if (strcmp(link_name, lnk->name) == 0)
|
||||
return lnk;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static char *get_tuple_pvalue(list_t *tuple_l, int lex)
|
||||
{
|
||||
struct tuple *t;
|
||||
|
@ -2057,8 +1992,8 @@ void adm_bip_help(struct link_client *ic, int admin, const char *subhelp)
|
|||
bip_notify(ic, "/BIP LIST networks|connections");
|
||||
}
|
||||
bip_notify(ic,
|
||||
"/BIP JUMP [-f] [conn_name] # jump to next "
|
||||
"server (defaults to current network)");
|
||||
"/BIP JUMP # jump to next server (in same "
|
||||
"network)");
|
||||
bip_notify(ic,
|
||||
"/BIP BLRESET [channel|query]# reset backlog "
|
||||
"(this connection only). Add -q flag and the "
|
||||
|
@ -2111,14 +2046,8 @@ void adm_bip_help(struct link_client *ic, int admin, const char *subhelp)
|
|||
" Removing a connection will cause "
|
||||
"its disconnection.");
|
||||
} else if (strcasecmp(subhelp, "JUMP") == 0) {
|
||||
bip_notify(ic, "/BIP JUMP [-f] [conn_name]:");
|
||||
bip_notify(ic, "/BIP JUMP :");
|
||||
bip_notify(ic, " Jump to next server in current network.");
|
||||
bip_notify(ic,
|
||||
" If [conn_name] is set, jump to next server in "
|
||||
"[conn_name] network instead.");
|
||||
bip_notify(ic,
|
||||
" If [-f] flag is used, also resets reconnect "
|
||||
"timer.");
|
||||
} else if (strcasecmp(subhelp, "BLRESET") == 0) {
|
||||
bip_notify(ic, "/BIP BLRESET :");
|
||||
bip_notify(ic, " Reset backlog on this network.");
|
||||
|
@ -2298,16 +2227,12 @@ int adm_bip(bip_t *bip, struct link_client *ic, struct line *line, int privmsg)
|
|||
bip_notify(ic, "-- Invalid INFO request");
|
||||
}
|
||||
} else if (irc_line_elem_case_equals(line, privmsg + 1, "JUMP")) {
|
||||
if (irc_line_count(line) == privmsg + 2) {
|
||||
adm_bip_jump(ic, NULL, 0);
|
||||
} else if (irc_line_count(line) == privmsg + 3) {
|
||||
adm_bip_jump(ic, irc_line_elem(line, privmsg + 2), 0);
|
||||
} else if (irc_line_count(line) == privmsg + 4
|
||||
&& irc_line_elem_equals(line, privmsg + 2, "-f")) {
|
||||
adm_bip_jump(ic, irc_line_elem(line, privmsg + 3), 1);
|
||||
} else {
|
||||
bip_notify(ic, "-- Invalid usage (/BIP HELP JUMP)");
|
||||
if (LINK(ic)->l_server) {
|
||||
WRITE_LINE1(CONN(LINK(ic)->l_server), NULL, "QUIT",
|
||||
"jumpin' jumpin'");
|
||||
connection_close(CONN(LINK(ic)->l_server));
|
||||
}
|
||||
bip_notify(ic, "-- Jumping to next server");
|
||||
} else if (irc_line_elem_case_equals(line, privmsg + 1, "BLRESET")) {
|
||||
if (irc_line_includes(line, privmsg + 2)) {
|
||||
if (irc_line_elem_equals(line, privmsg + 2, "-q")) {
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#define DEFAULT_BACKLOG 1
|
||||
#define DEFAULT_ALWAYS_BACKLOG 0
|
||||
#define DEFAULT_BL_MSG_ONLY 0
|
||||
#define DEFAULT_BACKLOG_LINES 0
|
||||
#define DEFAULT_BACKLOG_LINES 10
|
||||
#define DEFAULT_BACKLOG_TIMESTAMP BLTSTime
|
||||
#define DEFAULT_BLRESET_ON_TALK 0
|
||||
#define DEFAULT_BLRESET_CONNECTION 0
|
||||
|
@ -29,6 +29,6 @@
|
|||
#define DEFAULT_LOG_LEVEL LOG_INFO
|
||||
#define DEFAULT_LOG_FORMAT "%u/%n/%Y-%m/%c.%d.log"
|
||||
#define DEFAULT_BIP_USE_NOTICE 0
|
||||
#define DEFAULT_RECONN_TIMER 30
|
||||
#define DEFAULT_RECONN_TIMER 120
|
||||
|
||||
#endif /* DEFAULTS_H */
|
||||
|
|
18
src/irc.c
18
src/irc.c
|
@ -22,7 +22,7 @@
|
|||
#include "log.h"
|
||||
#include "connection.h"
|
||||
#include "md5.h"
|
||||
#include "b64/base64.h"
|
||||
#include "utils/b64/base64.h"
|
||||
|
||||
// TODO resolve assuming signed overflow does not occur when changing X +- C1
|
||||
// cmp C2 to X cmp C2 -+ C1
|
||||
|
@ -33,7 +33,6 @@
|
|||
extern int sighup;
|
||||
extern bip_t *_bip;
|
||||
|
||||
static int irc_generic_error(struct link_server *server, struct line *line);
|
||||
static int irc_join(struct link_server *server, struct line *line);
|
||||
static int irc_part(struct link_server *server, struct line *line);
|
||||
static int irc_mode(struct link_server *server, struct line *line);
|
||||
|
@ -626,10 +625,6 @@ int irc_dispatch_server(bip_t *bip, struct link_server *server,
|
|||
ret = irc_quit(server, line);
|
||||
} else if (irc_line_elem_equals(line, 0, "NICK")) {
|
||||
ret = irc_nick(server, line);
|
||||
} else if (irc_line_is_error(line)) {
|
||||
// IRC errors catchall (for unhandled ones)
|
||||
// logs error to bip.log
|
||||
ret = irc_generic_error(server, line);
|
||||
}
|
||||
|
||||
if (ret == OK_COPY) {
|
||||
|
@ -1453,17 +1448,6 @@ static int origin_is_me(struct line *l, struct link_server *server)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int irc_generic_error(struct link_server *server, struct line *line)
|
||||
{
|
||||
if (irc_line_count(line) == 4)
|
||||
mylog(LOG_INFO, "[%s] IRC error: %s", LINK(server)->name,
|
||||
irc_line_elem(line, 3));
|
||||
else
|
||||
mylog(LOG_INFO, "[%s] IRC error: %s", LINK(server)->name,
|
||||
irc_line_to_string(line));
|
||||
return OK_COPY;
|
||||
}
|
||||
|
||||
static int irc_join(struct link_server *server, struct line *line)
|
||||
{
|
||||
char *s_nick;
|
||||
|
|
|
@ -143,12 +143,6 @@ void irc_line_drop(struct line *line, int elem)
|
|||
bip_cfree(array_drop(&line->words, elem));
|
||||
}
|
||||
|
||||
int irc_line_is_error(struct line *line)
|
||||
{
|
||||
const char *irc_code = irc_line_elem(line, 0);
|
||||
return (irc_code[0] == '4');
|
||||
}
|
||||
|
||||
int irc_line_elem_equals(struct line *line, int elem, const char *cmp)
|
||||
{
|
||||
return !strcmp(irc_line_elem(line, elem), cmp);
|
||||
|
|
|
@ -98,7 +98,6 @@ int irc_line_includes(struct line *line, int elem);
|
|||
const char *irc_line_elem(struct line *line, int elem);
|
||||
int irc_line_count(struct line *line);
|
||||
char *irc_line_pop(struct line *l);
|
||||
int irc_line_is_error(struct line *line);
|
||||
int irc_line_elem_equals(struct line *line, int elem, const char *cmp);
|
||||
int irc_line_elem_case_equals(struct line *line, int elem, const char *cmp);
|
||||
void irc_line_drop(struct line *line, int elem);
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include "includes.h"
|
||||
#include <stdint.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "utils/common.h"
|
||||
#include "os.h"
|
||||
#include "base64.h"
|
||||
|
||||
|
@ -100,3 +100,5 @@ char * base64_encode_no_lf(const void *src, size_t len, size_t *out_len)
|
|||
{
|
||||
return base64_gen_encode(src, len, out_len, base64_table, BASE64_PAD);
|
||||
}
|
||||
|
||||
|
|
@ -12,3 +12,4 @@
|
|||
char * base64_encode_no_lf(const void *src, size_t len, size_t *out_len);
|
||||
|
||||
#endif /* BASE64_H */
|
||||
|
Loading…
Reference in New Issue