mirror of
https://github.com/EnergyMech/energymech.git
synced 2025-12-17 15:36:50 +00:00
march27
This commit is contained in:
parent
c44d8598c6
commit
d7121a6b1f
29
VERSIONS
29
VERSIONS
@ -1,27 +1,30 @@
|
|||||||
3.0.99p4 -- WORK IN PROGRESS (~March, 2018)
|
3.0.99p4 -- WORK IN PROGRESS (~March, 2018)
|
||||||
|
|
||||||
* Added: New toybox command: ASCII, load an ascii file and line
|
* Added: Experimental code to suppress certain commands to run on only one bot even
|
||||||
buffer it to target
|
if command is issued in public.
|
||||||
|
* Added: Some example ascii art: bbw, camel, goatse, mech, phooler
|
||||||
|
* Added: New command: CQ (Clear sendQueue), removes all previously buffered output.
|
||||||
|
* Added: New toybox command: ASCII, load an ascii file and line buffer it to target.
|
||||||
* Fixed: Crash bug in BIGSAY
|
* Fixed: Crash bug in BIGSAY
|
||||||
* Added: Signal handlers for SIGILL and SIGABRT ifdef DEBUG
|
* Added: Signal handlers for SIGILL and SIGABRT ifdef DEBUG
|
||||||
* Added: New command: CRASH, for debugging/development...
|
* Added: New command: CRASH, for debugging/development...
|
||||||
* Changed: configure now defaults to optimizing for code size.
|
* Changed: configure now defaults to optimizing for code size (--optimize=size).
|
||||||
* Added: configuration option --optimize=speed or --optimize=size
|
* Added: configuration option --optimize=speed or --optimize=size
|
||||||
* Added: STABLE/BETA/ALPHA status to individual features in configure.
|
* Added: ALPHA/BETA/STABLE status to individual features in configure.
|
||||||
* Fixed: If bot guid is changed or deleted in the config, and the bot
|
* Fixed: If bot guid is changed or deleted in the config, and the bot is reset, the
|
||||||
is reset, the connection associated with the removed guid
|
connection associated with the removed guid will be cleaned up and closed
|
||||||
will be cleaned up and closed instead of lingering.
|
instead of lingering.
|
||||||
* Added: Support for read only userfiles. If you prefix the filename
|
* Added: Support for read only userfiles. If you prefix the filename with < the file
|
||||||
with < the file wil never be written to, only ever read.
|
will never be written to, only ever read.
|
||||||
* Added: Bots now recover Ontime after a reset.
|
* Added: Bots now recover Ontime after a reset.
|
||||||
* Added: URL capturing with command to display recent URLs seen
|
* Added: URL capturing with command to display recent URLs seen by the bot. Also spy
|
||||||
by the bot. Also spy source "URL" for spy channels.
|
source "URL" for spy channels.
|
||||||
* Fixed: Rewrite of is_safepath() to conform with standard C
|
* Fixed: Rewrite of is_safepath() to conform with standard C
|
||||||
* Fixed: Potential crash bug in send_uptime()
|
* Fixed: Potential crash bug in send_uptime()
|
||||||
* Fixed: Potential crash bug in debug()
|
* Fixed: Potential crash bug in debug()
|
||||||
* Added: New host information commands: HOSTINFO, MEMINFO, CPUINFO.
|
* Added: New host information commands: HOSTINFO, MEMINFO, CPUINFO.
|
||||||
* Added: New configuration option: hostinfo
|
* Added: New configuration option: hostinfo
|
||||||
* Fixed: Custom ld script fintuning the core order.
|
* Fixed: Custom ld script finetuning the code order.
|
||||||
* Changed: Rewrite of ALIAS aliasing routine, adding features.
|
* Changed: Rewrite of ALIAS aliasing routine, adding features.
|
||||||
* Fixed: RawDNS, again...
|
* Fixed: RawDNS, again...
|
||||||
* Fixed: Save procvars only once in session file.
|
* Fixed: Save procvars only once in session file.
|
||||||
@ -32,7 +35,7 @@
|
|||||||
* Added: CORE & INFO (statistics) can now be output redirected.
|
* Added: CORE & INFO (statistics) can now be output redirected.
|
||||||
* Added: SPY to files saved in sessions.
|
* Added: SPY to files saved in sessions.
|
||||||
* Fixed: HELP command should now be working properly again.
|
* Fixed: HELP command should now be working properly again.
|
||||||
* Fixed: Strlen/Strlen2 code cleanup.
|
* Fixed: StrlenX/Strlen2 code cleanup.
|
||||||
* Fixed: Various compiler warnings.
|
* Fixed: Various compiler warnings.
|
||||||
|
|
||||||
3.0.99p3 -- July 24th, 2009.
|
3.0.99p3 -- July 24th, 2009.
|
||||||
|
|||||||
24
ascii/bbw
Normal file
24
ascii/bbw
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
_.--._
|
||||||
|
,' `.
|
||||||
|
/ __) __` \
|
||||||
|
( (`-`(-') )
|
||||||
|
/) \ _ / (
|
||||||
|
/' )-._.' . \ ___
|
||||||
|
( ,--' `-)___( )
|
||||||
|
)( `-.,--' _ \ /`
|
||||||
|
'/ .' ( )\
|
||||||
|
/ `/,-' )
|
||||||
|
| ' )`._.'
|
||||||
|
\ .-. ( .-. |
|
||||||
|
". " /\ ~ /
|
||||||
|
/"---' "._.-'|
|
||||||
|
/ \
|
||||||
|
( ."-.
|
||||||
|
/(` -) / \
|
||||||
|
( \`-.__ -'_." |
|
||||||
|
| \`-.__.--"v" |
|
||||||
|
`.' \ |, |
|
||||||
|
/ `._/ :
|
||||||
|
/ | '
|
||||||
|
/ /| /
|
||||||
|
: / / /
|
||||||
18
ascii/camel
Normal file
18
ascii/camel
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
,.
|
||||||
|
. :%%%. .%%%.
|
||||||
|
__%%%(\ `%%%%% .%%%%%
|
||||||
|
/a ^ '% %%%% %: ,% %%"`
|
||||||
|
'__.. ,'% .-%: %-' %
|
||||||
|
~~""%:. ` % ' . `.
|
||||||
|
%% % ` %% .%: . \.
|
||||||
|
%%:. `-' ` .%% . %: :\
|
||||||
|
%(%,%..." `%, %%' %% ) )
|
||||||
|
%)%%)%%' )%%%.....- ' "/ (
|
||||||
|
%a:f%%\ % / \`% "%%% ` / \))
|
||||||
|
%(%' % /-. \ ' \ |-. '.
|
||||||
|
`' |% `() \| `()
|
||||||
|
|| / () /
|
||||||
|
() 0 | o
|
||||||
|
\ /\ o /
|
||||||
|
o ` /-|
|
||||||
|
,-/ ` ,-/
|
||||||
22
ascii/goatse
Normal file
22
ascii/goatse
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/ \ \ / \
|
||||||
|
| | \ | |
|
||||||
|
| `. | | :
|
||||||
|
` | | \| |
|
||||||
|
\ | / / \\\ --__ \\ :
|
||||||
|
\ \/ _--~~ ~--__| \ |
|
||||||
|
\ \_-~ ~-_\ |
|
||||||
|
\_ \ _.--------.______\| |
|
||||||
|
\ \______// _ ___ _ (_(__> \ |
|
||||||
|
\ . C ___) ______ (_(____> | /
|
||||||
|
/\ | C ____)/ \ (_____> |_/
|
||||||
|
/ /\| C_____) | (___> / \
|
||||||
|
| ( _C_____)\______/ // _/ / \
|
||||||
|
| \ |__ \\_________// (__/ |
|
||||||
|
| \ \____) `---- --' |
|
||||||
|
| \_ ___\ /_ _/ |
|
||||||
|
| / | | \ |
|
||||||
|
| | / \ \ |
|
||||||
|
| / / | | \ |
|
||||||
|
| / / \__/\___/ | |
|
||||||
|
| / | | | |
|
||||||
|
| | | | | |
|
||||||
20
ascii/phooler
Normal file
20
ascii/phooler
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
( .-,
|
||||||
|
/ ) .' ( ___
|
||||||
|
//(.-"""-/ /\ ) .-" "-.
|
||||||
|
|.' _`.\// .-' `..--.
|
||||||
|
..--/-. .'_` `'-' ___ ( C\ \
|
||||||
|
/ /O\ / O\ | .' ```--`-|_/
|
||||||
|
/ \_/| \__/ | (
|
||||||
|
| _\-' _ __ / `.
|
||||||
|
\ ,--7 `.(_)_.| .' `.
|
||||||
|
| C._) `.___/' .---._ \ __
|
||||||
|
\ | `. / `-. \ ,' `.
|
||||||
|
`--' Y \ | ) `-._.--.__
|
||||||
|
| \ | _.' .--.___.-'`--.\
|
||||||
|
| | |\ / / `
|
||||||
|
_ \ | / `v |
|
||||||
|
.'`-' `--._) /::___.' \ /
|
||||||
|
/ .---. / `-. \ |
|
||||||
|
_.' _.-' `._ `-. / `. /
|
||||||
|
/.--' `-. `. \ `-.__.'
|
||||||
|
`.'_/
|
||||||
16
configure
vendored
16
configure
vendored
@ -80,6 +80,7 @@ do
|
|||||||
session ) ft_session=$yesno ;;
|
session ) ft_session=$yesno ;;
|
||||||
sha ) ft_sha=$yesno ;;
|
sha ) ft_sha=$yesno ;;
|
||||||
stats ) ft_stats=$yesno ;;
|
stats ) ft_stats=$yesno ;;
|
||||||
|
suppress ) ft_suppress=$yesno ;;
|
||||||
tcl ) ft_tcl=$yesno ;;
|
tcl ) ft_tcl=$yesno ;;
|
||||||
telnet ) ft_telnet=$yesno ;;
|
telnet ) ft_telnet=$yesno ;;
|
||||||
toybox ) ft_toybox=$yesno ;;
|
toybox ) ft_toybox=$yesno ;;
|
||||||
@ -116,7 +117,7 @@ do
|
|||||||
case "$feature" in
|
case "$feature" in
|
||||||
debug | botnet | telnet | alias | seen | session | dyncmd | newbie | wingate | md5 | sha \
|
debug | botnet | telnet | alias | seen | session | dyncmd | newbie | wingate | md5 | sha \
|
||||||
| ctcp | dccfile | uptime | redirect | greet | perl | profiling | tcl | dynamode | web | hostinfo \
|
| ctcp | dccfile | uptime | redirect | greet | perl | profiling | tcl | dynamode | web | hostinfo \
|
||||||
| note | notify | trivia | toybox | bounce | stats | rawdns | ircd_ext | idwrap | chanban | python | urlcapture )
|
| note | notify | trivia | toybox | bounce | stats | suppress | rawdns | ircd_ext | idwrap | chanban | python | urlcapture )
|
||||||
case _"$optarg"_ in
|
case _"$optarg"_ in
|
||||||
_yes_ | _no_ | __ )
|
_yes_ | _no_ | __ )
|
||||||
;;
|
;;
|
||||||
@ -190,6 +191,8 @@ do
|
|||||||
sha_no ) ft_sha=no ;;
|
sha_no ) ft_sha=no ;;
|
||||||
stats_yes | stats_ ) ft_stats=yes ;;
|
stats_yes | stats_ ) ft_stats=yes ;;
|
||||||
stats_no ) ft_stats=no ;;
|
stats_no ) ft_stats=no ;;
|
||||||
|
suppress_yes | suppress_ ) ft_suppress=yes ;;
|
||||||
|
suppress_no ) ft_suppress=no ;;
|
||||||
tcl_yes | tcl_ ) ft_tcl=yes ;;
|
tcl_yes | tcl_ ) ft_tcl=yes ;;
|
||||||
tcl_no ) ft_tcl=no ;;
|
tcl_no ) ft_tcl=no ;;
|
||||||
telnet_yes | telnet_ ) ft_telnet=yes ;;
|
telnet_yes | telnet_ ) ft_telnet=yes ;;
|
||||||
@ -238,6 +241,7 @@ do
|
|||||||
session ) ft_session=no ;;
|
session ) ft_session=no ;;
|
||||||
sha ) ft_sha=yes ;;
|
sha ) ft_sha=yes ;;
|
||||||
stats ) ft_stats=no ;;
|
stats ) ft_stats=no ;;
|
||||||
|
suppress ) ft_suppress=no ;;
|
||||||
tcl ) ft_tcl=no ;;
|
tcl ) ft_tcl=no ;;
|
||||||
telnet ) ft_telnet=no ;;
|
telnet ) ft_telnet=no ;;
|
||||||
toybox ) ft_toybox=no ;;
|
toybox ) ft_toybox=no ;;
|
||||||
@ -290,6 +294,7 @@ do
|
|||||||
ft_session=yes
|
ft_session=yes
|
||||||
ft_sha=yes
|
ft_sha=yes
|
||||||
ft_stats=yes
|
ft_stats=yes
|
||||||
|
ft_suppress=yes
|
||||||
ft_tcl=yes
|
ft_tcl=yes
|
||||||
ft_telnet=yes
|
ft_telnet=yes
|
||||||
ft_toybox=yes
|
ft_toybox=yes
|
||||||
@ -325,6 +330,7 @@ Features and packages:
|
|||||||
--with-profiling Profiling (gcc+gprof)
|
--with-profiling Profiling (gcc+gprof)
|
||||||
--with-seen SEEN support
|
--with-seen SEEN support
|
||||||
--with-session Session support
|
--with-session Session support
|
||||||
|
--with-suppress Command duplication suppression
|
||||||
--with-tcl Tcl support
|
--with-tcl Tcl support
|
||||||
--with-telnet Telnet support
|
--with-telnet Telnet support
|
||||||
--with-uptime Include code that sends uptime reports to the IRC bot uptime contest server
|
--with-uptime Include code that sends uptime reports to the IRC bot uptime contest server
|
||||||
@ -1003,6 +1009,13 @@ test "$ft_chanban" && $out "$ft_chanban" && ans=$ft_chanban
|
|||||||
test -z "$ft_chanban" && read ans
|
test -z "$ft_chanban" && read ans
|
||||||
test -z "$ans" -o "$ans" = y -o "$ans" = Y -o "$ans" = yes -o "$ans" = YES -o "$ans" = Yes && def_chanban='#define CHANBAN'
|
test -z "$ans" -o "$ans" = y -o "$ans" = Y -o "$ans" = yes -o "$ans" = YES -o "$ans" = Yes && def_chanban='#define CHANBAN'
|
||||||
|
|
||||||
|
def_suppress='#undef SUPPRESS'
|
||||||
|
unset ans
|
||||||
|
$out $ac_n "[ ALPHA] Command duplication suppression? ............ [Y/n] "$ac_c
|
||||||
|
test "$ft_suppress" && $out "$ft_suppress" && ans=$ft_suppress
|
||||||
|
test -z "$ft_suppress" && read ans
|
||||||
|
test -z "$ans" -o "$ans" = y -o "$ans" = Y -o "$ans" = yes -o "$ans" = YES -o "$ans" = Yes && def_suppress='#define SUPPRESS'
|
||||||
|
|
||||||
def_redirect='#undef REDIRECT'
|
def_redirect='#undef REDIRECT'
|
||||||
unset ans
|
unset ans
|
||||||
$out $ac_n "[STABLE] Command output redirect? ................... [Y/n] "$ac_c
|
$out $ac_n "[STABLE] Command output redirect? ................... [Y/n] "$ac_c
|
||||||
@ -1297,6 +1310,7 @@ s|@DEF_REDIRECT@|$def_redirect|;
|
|||||||
s|@DEF_SEEN@|$def_seen|;
|
s|@DEF_SEEN@|$def_seen|;
|
||||||
s|@DEF_SESSION@|$def_session|;
|
s|@DEF_SESSION@|$def_session|;
|
||||||
s|@DEF_STATS@|$def_stats|;
|
s|@DEF_STATS@|$def_stats|;
|
||||||
|
s|@DEF_SUPPRESS@|$def_suppress|;
|
||||||
s|@DEF_TCL@|$def_tcl|;
|
s|@DEF_TCL@|$def_tcl|;
|
||||||
s|@DEF_TELNET@|$def_telnet|;
|
s|@DEF_TELNET@|$def_telnet|;
|
||||||
s|@DEF_TOYBOX@|$def_toybox|;
|
s|@DEF_TOYBOX@|$def_toybox|;
|
||||||
|
|||||||
@ -40,7 +40,7 @@ MV = mv -f
|
|||||||
RM = rm -f
|
RM = rm -f
|
||||||
CHMOD = chmod
|
CHMOD = chmod
|
||||||
|
|
||||||
INCS = config.h mcmd.h defines.h global.h h.h structs.h text.h
|
INCS = config.h defines.h global.h h.h mcmd.h structs.h text.h usercombo.h
|
||||||
|
|
||||||
TESTFILES = aliastest safepathtest
|
TESTFILES = aliastest safepathtest
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
EnergyMech, IRC bot software
|
EnergyMech, IRC bot software
|
||||||
Parts Copyright (c) 1997-2004 proton
|
Parts Copyright (c) 1997-2018 proton
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -197,6 +197,11 @@
|
|||||||
*/
|
*/
|
||||||
@DEF_URLCAPTURE@
|
@DEF_URLCAPTURE@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SUPPRESS: suppress duplication of certain commands
|
||||||
|
*/
|
||||||
|
@DEF_SUPPRESS@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FASTNICK: faster nick regain if the nick is seen when released
|
* FASTNICK: faster nick regain if the nick is seen when released
|
||||||
* Enables code that is potentially dangerous if an attacker aquires
|
* Enables code that is potentially dangerous if an attacker aquires
|
||||||
@ -368,20 +373,20 @@
|
|||||||
* Defines for commandlist parsing
|
* Defines for commandlist parsing
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define DCC 0x00100 /* requires DCC */
|
#define CLEVEL 0x0000ff
|
||||||
#define CC 0x00200 /* requires commandchar */
|
#define DCC 0x000100 /* requires DCC */
|
||||||
#define PASS 0x00400 /* requires password / authentication */
|
#define CC 0x000200 /* requires commandchar */
|
||||||
#define CARGS 0x00800 /* requires args */
|
#define PASS 0x000400 /* requires password / authentication */
|
||||||
#define NOPUB 0x01000 /* ignore in channel (for password commands) */
|
#define CARGS 0x000800 /* requires args */
|
||||||
#define NOCMD 0x02000 /* not allowed to be executed thru CMD */
|
#define NOPUB 0x001000 /* ignore in channel (for password commands) */
|
||||||
#define GAXS 0x04000 /* check global access */
|
#define NOCMD 0x002000 /* not allowed to be executed thru CMD */
|
||||||
#define CAXS 0x08000 /* check channel access */
|
#define GAXS 0x004000 /* check global access */
|
||||||
#define REDIR 0x10000 /* may be redirected */
|
#define CAXS 0x008000 /* check channel access */
|
||||||
#define LBUF 0x20000 /* should be linebuffered to server */
|
#define REDIR 0x010000 /* may be redirected */
|
||||||
#define CBANG 0x40000 /* command may be prefixed with a bang (!) */
|
#define LBUF 0x020000 /* should be linebuffered to server */
|
||||||
#define ACCHAN 0x80000 /* needs an active channel */
|
#define CBANG 0x040000 /* command may be prefixed with a bang (!) */
|
||||||
|
#define ACCHAN 0x080000 /* needs an active channel */
|
||||||
#define CLEVEL 0x000ff
|
#define SUPRES 0x100000 /* command is not suitable to run on many bots at once, try to suppress it */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* integer only version of RANDOM()
|
* integer only version of RANDOM()
|
||||||
|
|||||||
@ -214,13 +214,6 @@ void dupe_strp(Strp *sp, Strp **pp)
|
|||||||
make_strp(pp,sp->p);
|
make_strp(pp,sp->p);
|
||||||
pp = &((*pp)->next);
|
pp = &((*pp)->next);
|
||||||
sp = sp->next;
|
sp = sp->next;
|
||||||
/*
|
|
||||||
set_mallocdoer(dupe_strp);
|
|
||||||
*pp = (Strp*)Calloc(sizeof(Strp) + strlen(sp->p));
|
|
||||||
Strcpy((*pp)->p,sp->p);
|
|
||||||
pp = &((*pp)->next);
|
|
||||||
sp = sp->next;
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
44
src/gencmd.c
44
src/gencmd.c
@ -30,18 +30,19 @@ char gsockdata[MAXLEN];
|
|||||||
|
|
||||||
These are defined in config.h
|
These are defined in config.h
|
||||||
|
|
||||||
DCC 0x00100 requires DCC
|
DCC 0x000100 requires DCC
|
||||||
CC 0x00200 requires commandchar
|
CC 0x000200 requires commandchar
|
||||||
PASS 0x00400 requires password / authentication
|
PASS 0x000400 requires password / authentication
|
||||||
CARGS 0x00800 requires args
|
CARGS 0x000800 requires args
|
||||||
NOPUB 0x01000 ignore in channel (for password commands)
|
NOPUB 0x001000 ignore in channel (for password commands)
|
||||||
NOCMD 0x02000 not allowed to be executed thru CMD
|
NOCMD 0x002000 not allowed to be executed thru CMD
|
||||||
GAXS 0x04000 check global access
|
GAXS 0x004000 check global access
|
||||||
CAXS 0x08000 check channel access
|
CAXS 0x008000 check channel access
|
||||||
REDIR 0x10000 may be redirected
|
REDIR 0x010000 may be redirected
|
||||||
LBUF 0x20000 can be linebuffered to server
|
LBUF 0x020000 can be linebuffered to server
|
||||||
CBANG 0x40000 command may be prefixed with a bang (!)
|
CBANG 0x040000 command may be prefixed with a bang (!)
|
||||||
ACCHAN 0x80000 needs an active channel
|
ACCHAN 0x080000 needs an active channel
|
||||||
|
SUPRES 0x100000 command is not suitable to run on many bots at once, try to suppress it
|
||||||
|
|
||||||
CLEVEL 0x000ff
|
CLEVEL 0x000ff
|
||||||
|
|
||||||
@ -65,7 +66,7 @@ struct
|
|||||||
{ 0, "AUTH", "do_auth", 0 | NOPUB | CBANG }, // double up on AUTH/VERIFY to better
|
{ 0, "AUTH", "do_auth", 0 | NOPUB | CBANG }, // double up on AUTH/VERIFY to better
|
||||||
{ 0, "VERIFY", "do_auth", 0 | NOPUB | CBANG }, // catch login attempts
|
{ 0, "VERIFY", "do_auth", 0 | NOPUB | CBANG }, // catch login attempts
|
||||||
#ifdef TOYBOX
|
#ifdef TOYBOX
|
||||||
{ 0, "8BALL", "do_8ball", 0 | CBANG },
|
{ 0, "8BALL", "do_8ball", 0 | CBANG | SUPRES },
|
||||||
#endif /* TOYBOX */
|
#endif /* TOYBOX */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -75,11 +76,11 @@ struct
|
|||||||
{ 0, "BYE", "do_bye", 10 | CC },
|
{ 0, "BYE", "do_bye", 10 | CC },
|
||||||
{ 0, "CHAT", "do_chat", 10 | CCPW | NOCMD },
|
{ 0, "CHAT", "do_chat", 10 | CCPW | NOCMD },
|
||||||
#ifdef RAWDNS
|
#ifdef RAWDNS
|
||||||
{ 0, "DNS", "do_dns", 10 | CCPW | GAXS | CARGS },
|
{ 0, "DNS", "do_dns", 10 | CCPW | GAXS | CARGS | SUPRES },
|
||||||
#endif /* RAWDNS */
|
#endif /* RAWDNS */
|
||||||
{ 0, "DOWN", "do_opdeopme", 10 | CC | CAXS },
|
{ 0, "DOWN", "do_opdeopme", 10 | CC | CAXS },
|
||||||
{ 0, "ECHO", "do_echo", 10 | CCPW | CARGS },
|
{ 0, "ECHO", "do_echo", 10 | CCPW | CARGS },
|
||||||
{ 0, "HELP", "do_help", 10 | CCPW | REDIR | LBUF },
|
{ 0, "HELP", "do_help", 10 | CCPW | REDIR | LBUF | SUPRES },
|
||||||
{ 0, "PASSWD", "do_passwd", 10 | PASS | NOPUB | CARGS },
|
{ 0, "PASSWD", "do_passwd", 10 | PASS | NOPUB | CARGS },
|
||||||
#ifdef DCC_FILE
|
#ifdef DCC_FILE
|
||||||
{ 0, "SEND", "do_send", 10 | CC | NOCMD | CBANG | CARGS },
|
{ 0, "SEND", "do_send", 10 | CC | NOCMD | CBANG | CARGS },
|
||||||
@ -125,7 +126,7 @@ struct
|
|||||||
{ 0, "SITEBAN", "do_kickban", 40 | CCPW | CAXS | CARGS | ACCHAN , "\\x01siteban\\0sitebann" },
|
{ 0, "SITEBAN", "do_kickban", 40 | CCPW | CAXS | CARGS | ACCHAN , "\\x01siteban\\0sitebann" },
|
||||||
{ 0, "SITEKB", "do_kickban", 40 | CCPW | CAXS | CARGS | ACCHAN , "\\x05sitekickban\\0sitekickbann" },
|
{ 0, "SITEKB", "do_kickban", 40 | CCPW | CAXS | CARGS | ACCHAN , "\\x05sitekickban\\0sitekickbann" },
|
||||||
{ 0, "TIME", "do_time", 40 | CCPW },
|
{ 0, "TIME", "do_time", 40 | CCPW },
|
||||||
{ 0, "TOPIC", "do_topic", 40 | CCPW | CAXS | CARGS | ACCHAN },
|
{ 0, "TOPIC", "do_topic", 40 | CCPW | CAXS | CARGS | ACCHAN | SUPRES },
|
||||||
{ 0, "UNBAN", "do_unban", 40 | CCPW | CAXS },
|
{ 0, "UNBAN", "do_unban", 40 | CCPW | CAXS },
|
||||||
{ 0, "UNVOICE", "do_opvoice", 40 | CCPW | CAXS | CARGS , "v-" },
|
{ 0, "UNVOICE", "do_opvoice", 40 | CCPW | CAXS | CARGS , "v-" },
|
||||||
{ 0, "UP", "do_opdeopme", 40 | CCPW | CAXS },
|
{ 0, "UP", "do_opdeopme", 40 | CCPW | CAXS },
|
||||||
@ -158,7 +159,7 @@ struct
|
|||||||
{ 0, "PICKUP", "do_random_msg", 50 | CCPW , RANDPICKUPFILE },
|
{ 0, "PICKUP", "do_random_msg", 50 | CCPW , RANDPICKUPFILE },
|
||||||
{ 0, "RSAY", "do_random_msg", 50 | CCPW , RANDSAYFILE },
|
{ 0, "RSAY", "do_random_msg", 50 | CCPW , RANDSAYFILE },
|
||||||
{ 0, "RT", "do_randtopic", 50 | CCPW | CAXS | ACCHAN },
|
{ 0, "RT", "do_randtopic", 50 | CCPW | CAXS | ACCHAN },
|
||||||
{ 0, "ASCII", "do_ascii", 50 | CCPW | CAXS | CARGS },
|
{ 0, "ASCII", "do_ascii", 50 | CCPW | CAXS | CARGS | SUPRES },
|
||||||
#endif /* TOYBOX */
|
#endif /* TOYBOX */
|
||||||
#ifdef TRIVIA
|
#ifdef TRIVIA
|
||||||
{ 0, "TRIVIA", "do_trivia", 50 | CCPW | CAXS | CARGS | CBANG },
|
{ 0, "TRIVIA", "do_trivia", 50 | CCPW | CAXS | CARGS | CBANG },
|
||||||
@ -195,6 +196,7 @@ struct
|
|||||||
#if defined(BOTNET) && defined(REDIRECT)
|
#if defined(BOTNET) && defined(REDIRECT)
|
||||||
{ 0, "CMD", "do_cmd", 80 | CCPW | CARGS },
|
{ 0, "CMD", "do_cmd", 80 | CCPW | CARGS },
|
||||||
#endif /* BOTNET && REDIRECT */
|
#endif /* BOTNET && REDIRECT */
|
||||||
|
{ 0, "CQ", "do_clearqueue", 80 | CCPW | GAXS },
|
||||||
{ 0, "LAST", "do_last", 80 | CCPW | DCC },
|
{ 0, "LAST", "do_last", 80 | CCPW | DCC },
|
||||||
{ 0, "LOAD", "do_load", 80 | CCPW | GAXS },
|
{ 0, "LOAD", "do_load", 80 | CCPW | GAXS },
|
||||||
{ 0, "MSG", "do_msg", 80 | CCPW | CARGS },
|
{ 0, "MSG", "do_msg", 80 | CCPW | CARGS },
|
||||||
@ -208,7 +210,7 @@ struct
|
|||||||
{ 0, "UNALIAS", "do_unalias", 80 | CCPW | GAXS | CARGS },
|
{ 0, "UNALIAS", "do_unalias", 80 | CCPW | GAXS | CARGS },
|
||||||
#endif /* ALIAS */
|
#endif /* ALIAS */
|
||||||
#ifdef TOYBOX
|
#ifdef TOYBOX
|
||||||
{ 0, "BIGSAY", "do_bigsay", 80 | CCPW | CAXS | CARGS },
|
{ 0, "BIGSAY", "do_bigsay", 80 | CCPW | CAXS | CARGS | SUPRES },
|
||||||
#endif /* TOYBOX */
|
#endif /* TOYBOX */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -351,8 +353,9 @@ void make_mcmd(void)
|
|||||||
v.lbuf = (pre_mcmd[wh].flags & LBUF) ? 1 : 0;
|
v.lbuf = (pre_mcmd[wh].flags & LBUF) ? 1 : 0;
|
||||||
v.cbang = (pre_mcmd[wh].flags & CBANG) ? 1 : 0;
|
v.cbang = (pre_mcmd[wh].flags & CBANG) ? 1 : 0;
|
||||||
v.acchan = (pre_mcmd[wh].flags & ACCHAN) ? 1 : 0;
|
v.acchan = (pre_mcmd[wh].flags & ACCHAN) ? 1 : 0;
|
||||||
|
v.supres = (pre_mcmd[wh].flags & SUPRES) ? 1 : 0;
|
||||||
|
|
||||||
sprintf(tmp,"%3i,%2i,%2i,%2i,%2i,%2i,%2i,%2i,%2i,%2i,%2i,%2i,%2i",
|
sprintf(tmp,"%3i,%2i,%2i,%2i,%2i,%2i,%2i,%2i,%2i,%2i,%2i,%2i,%2i,%2i",
|
||||||
v.defaultaccess,
|
v.defaultaccess,
|
||||||
v.dcc,
|
v.dcc,
|
||||||
v.cc,
|
v.cc,
|
||||||
@ -365,7 +368,8 @@ void make_mcmd(void)
|
|||||||
v.redir,
|
v.redir,
|
||||||
v.lbuf,
|
v.lbuf,
|
||||||
v.cbang,
|
v.cbang,
|
||||||
v.acchan
|
v.acchan,
|
||||||
|
v.supres
|
||||||
);
|
);
|
||||||
|
|
||||||
sl = strlen(pre_mcmd[wh].func) + 1;
|
sl = strlen(pre_mcmd[wh].func) + 1;
|
||||||
|
|||||||
5
src/h.h
5
src/h.h
@ -182,8 +182,8 @@ LS void sig_suicide() __attr(RARE_SEG, __noreturn__); /* rare */
|
|||||||
/* net_chan.c */
|
/* net_chan.c */
|
||||||
|
|
||||||
LS int makecrc(const char *) __page(CORE_SEG);
|
LS int makecrc(const char *) __page(CORE_SEG);
|
||||||
LS void send_supress(const char *, const char *) __page(CORE_SEG);
|
LS void send_suppress(const char *, const char *) __page(CORE_SEG);
|
||||||
LS void netchanSupress(BotNet *, char *) __page(CORE_SEG);
|
LS void netchanSuppress(BotNet *, char *) __page(CORE_SEG);
|
||||||
|
|
||||||
/* note.c */
|
/* note.c */
|
||||||
/* notify.c */
|
/* notify.c */
|
||||||
@ -204,6 +204,7 @@ LS int SockConnect(char *, int, int) __page(CORE_SEG);
|
|||||||
LS void SockFlags(int) __page(CORE_SEG);
|
LS void SockFlags(int) __page(CORE_SEG);
|
||||||
LS int SockListener(int) __page(CORE_SEG);
|
LS int SockListener(int) __page(CORE_SEG);
|
||||||
LS int SockOpts(void) __page(CORE_SEG);
|
LS int SockOpts(void) __page(CORE_SEG);
|
||||||
|
LS void do_clearqueue(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
|
|
||||||
/* spy.c */
|
/* spy.c */
|
||||||
/* stats.c */
|
/* stats.c */
|
||||||
|
|||||||
@ -134,12 +134,80 @@ void do_meminfo(COMMAND_ARGS)
|
|||||||
vmsize,vmpeak,vmrss,vmexe,vmdata,vmlib,vmstk);
|
vmsize,vmpeak,vmrss,vmexe,vmdata,vmlib,vmstk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *cpufrom,cpuline[MSGLEN];
|
||||||
|
int sentmodel;
|
||||||
|
int cpus;
|
||||||
|
int cores;
|
||||||
|
|
||||||
|
int parse_proc_cpuinfo(char *line)
|
||||||
|
{
|
||||||
|
char *src,*dst;
|
||||||
|
|
||||||
|
if (strncmp(line,"model name\t:",12) == 0)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
proton@endemic:~/energymech/src> cat /proc/loadavg
|
||||||
|
0.00 0.00 0.00 1/178 6759
|
||||||
|
processor : 0
|
||||||
|
vendor_id : GenuineIntel
|
||||||
|
cpu family : 6
|
||||||
|
model : 23
|
||||||
|
model name : Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz
|
||||||
|
stepping : 7
|
||||||
|
microcode : 0x705
|
||||||
|
cpu MHz : 2024.267
|
||||||
|
cache size : 2048 KB
|
||||||
|
physical id : 0
|
||||||
|
siblings : 4
|
||||||
|
core id : 0
|
||||||
|
cpu cores : 4
|
||||||
|
*/
|
||||||
|
|
||||||
/*---Help:CPUINFO:(no arguments)
|
/*---Help:CPUINFO:(no arguments)
|
||||||
|
|
||||||
See also: hostinfo, meminfo
|
See also: hostinfo, meminfo
|
||||||
*/
|
*/
|
||||||
void do_cpuinfo(COMMAND_ARGS)
|
void do_cpuinfo(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
|
char *a1,*a2,*a3;
|
||||||
|
int fd,n;
|
||||||
|
|
||||||
|
if ((fd = open("/proc/loadavg",O_RDONLY)) < 0)
|
||||||
|
#ifdef DEBUG
|
||||||
|
{
|
||||||
|
debug("(do_cpuinfo) /proc/loadavg: %s\n",strerror(errno));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
n = read(fd,gsockdata,MSGLEN-2);
|
||||||
|
gsockdata[n] = 0;
|
||||||
|
close(fd);
|
||||||
|
|
||||||
|
rest = gsockdata;
|
||||||
|
a1 = chop(&rest);
|
||||||
|
a2 = chop(&rest);
|
||||||
|
a3 = chop(&rest);
|
||||||
|
|
||||||
|
if (!a3 || !*a3)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ((fd = open("/proc/cpuinfo",O_RDONLY)) < 0)
|
||||||
|
#ifdef DEBUG
|
||||||
|
{
|
||||||
|
debug("(do_cpuinfo) /proc/cpuinfo: %s\n",strerror(errno));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
cpufrom = from;
|
||||||
|
sentmodel = 0;
|
||||||
|
readline(fd,&parse_proc_cpuinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* HOSTINFO */
|
#endif /* HOSTINFO */
|
||||||
|
|||||||
@ -78,7 +78,9 @@ LS const LinkCmd basicProto[] =
|
|||||||
{ 'B', 'L', basicLink },
|
{ 'B', 'L', basicLink },
|
||||||
{ 'B', 'Q', basicQuit },
|
{ 'B', 'Q', basicQuit },
|
||||||
{ 'C', 'O', netchanNeedop },
|
{ 'C', 'O', netchanNeedop },
|
||||||
{ 'C', 'S', netchanSupress }, // experimental command supression
|
#ifdef SUPPRESS
|
||||||
|
{ 'C', 'S', netchanSuppress }, // experimental command supression
|
||||||
|
#endif /* SUPPRESS */
|
||||||
{ 'P', 'A', partyAuth },
|
{ 'P', 'A', partyAuth },
|
||||||
#ifdef REDIRECT
|
#ifdef REDIRECT
|
||||||
{ 'P', 'C', partyCommand },
|
{ 'P', 'C', partyCommand },
|
||||||
|
|||||||
@ -30,6 +30,8 @@
|
|||||||
#include "text.h"
|
#include "text.h"
|
||||||
#include "mcmd.h"
|
#include "mcmd.h"
|
||||||
|
|
||||||
|
#ifdef SUPPRESS
|
||||||
|
|
||||||
int makecrc(const char *args)
|
int makecrc(const char *args)
|
||||||
{
|
{
|
||||||
int crc = 0;
|
int crc = 0;
|
||||||
@ -43,7 +45,7 @@ int makecrc(const char *args)
|
|||||||
return(crc);
|
return(crc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void send_supress(const char *command, const char *args)
|
void send_suppress(const char *command, const char *args)
|
||||||
{
|
{
|
||||||
Mech *backup;
|
Mech *backup;
|
||||||
int crc;
|
int crc;
|
||||||
@ -60,6 +62,8 @@ void send_supress(const char *command, const char *args)
|
|||||||
botnet_relay(NULL,"CS%s %i\n",command,crc);
|
botnet_relay(NULL,"CS%s %i\n",command,crc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* SUPPRESS */
|
||||||
|
|
||||||
ChanUser *find_chanbot(Chan *chan, char *nick)
|
ChanUser *find_chanbot(Chan *chan, char *nick)
|
||||||
{
|
{
|
||||||
ChanUser *cu;
|
ChanUser *cu;
|
||||||
@ -171,7 +175,9 @@ void netchanNeedop(BotNet *source, char *rest)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void netchanSupress(BotNet *source, char *rest)
|
#ifdef SUPPRESS
|
||||||
|
|
||||||
|
void netchanSuppress(BotNet *source, char *rest)
|
||||||
{
|
{
|
||||||
Mech *backup;
|
Mech *backup;
|
||||||
const char *cmd;
|
const char *cmd;
|
||||||
@ -206,4 +212,6 @@ void netchanSupress(BotNet *source, char *rest)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* SUPPRESS */
|
||||||
|
|
||||||
#endif /* BOTNET */
|
#endif /* BOTNET */
|
||||||
|
|||||||
@ -521,6 +521,7 @@ recheck_alias:
|
|||||||
|
|
||||||
CurrentCmd = &mcmd[i];
|
CurrentCmd = &mcmd[i];
|
||||||
|
|
||||||
|
#ifdef SUPPRESS
|
||||||
#ifdef BOTNET
|
#ifdef BOTNET
|
||||||
// experimental command supression
|
// experimental command supression
|
||||||
if (CurrentCmd->name == current->supres_cmd)
|
if (CurrentCmd->name == current->supres_cmd)
|
||||||
@ -540,12 +541,12 @@ recheck_alias:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//if command should be supressed ...
|
//if command should be supressed ...
|
||||||
if (CurrentChan)
|
if (mcmd[i].supres && CurrentChan)
|
||||||
{
|
{
|
||||||
send_supress(CurrentCmd->name,rest);
|
send_suppress(CurrentCmd->name,rest);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif /* SUPPRESS */
|
||||||
/*
|
/*
|
||||||
* convert the command to uppercase
|
* convert the command to uppercase
|
||||||
*/
|
*/
|
||||||
|
|||||||
11
src/socket.c
11
src/socket.c
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
EnergyMech, IRC bot software
|
EnergyMech, IRC bot software
|
||||||
Parts Copyright (c) 1997-2009 proton
|
Parts Copyright (c) 1997-2018 proton
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -678,4 +678,13 @@ int killsock(int sock)
|
|||||||
return(TRUE);
|
return(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void do_clearqueue(COMMAND_ARGS)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
debug("(do_clearqueue) purging sendq...\n");
|
||||||
|
#endif
|
||||||
|
purge_strplist(current->sendq);
|
||||||
|
current->sendq = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* GENCMD_C */
|
#endif /* GENCMD_C */
|
||||||
|
|||||||
@ -785,7 +785,8 @@ typedef struct OnMsg
|
|||||||
redir:1,
|
redir:1,
|
||||||
lbuf:1,
|
lbuf:1,
|
||||||
cbang:1,
|
cbang:1,
|
||||||
acchan:1; // -- 20 bits
|
acchan:1,
|
||||||
|
supres:1; // -- 21 bits
|
||||||
char *cmdarg;
|
char *cmdarg;
|
||||||
|
|
||||||
} OnMsg;
|
} OnMsg;
|
||||||
|
|||||||
31
src/toybox.c
31
src/toybox.c
@ -356,14 +356,39 @@ void do_ascii(COMMAND_ARGS)
|
|||||||
char fname[MSGLEN];
|
char fname[MSGLEN];
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
Strcat(Strcpy(fname,"ascii/"),rest);
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
if (STRCHR(rest,'/'))
|
||||||
|
{
|
||||||
|
debug("(do_ascii) '/' not permitted in filename\n");
|
||||||
|
ascii_badfile:
|
||||||
|
to_user_q(from,"%s","Bad filename or file does not exist");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Strcat(Strcpy(fname,"ascii/"),rest);
|
||||||
debug("(do_ascii) file = \"%s\"\n",fname);
|
debug("(do_ascii) file = \"%s\"\n",fname);
|
||||||
#endif
|
|
||||||
if (is_safepath(fname,FILE_MUST_EXIST) != FILE_IS_SAFE)
|
if (is_safepath(fname,FILE_MUST_EXIST) != FILE_IS_SAFE)
|
||||||
return;
|
{
|
||||||
|
debug("(do_ascii) is_safepath() not safe\n");
|
||||||
|
goto ascii_badfile;
|
||||||
|
}
|
||||||
if ((fd = open(fname,O_RDONLY)) < 0)
|
if ((fd = open(fname,O_RDONLY)) < 0)
|
||||||
|
{
|
||||||
|
debug("(do_ascii) open(%s): %s\n",fname,strerror(errno));
|
||||||
|
goto ascii_badfile;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if (STRCHR(rest,'/'))
|
||||||
|
{
|
||||||
|
ascii_badfile:
|
||||||
|
to_user_q(from,"%s","Bad filename or file does not exist");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
Strcat(Strcpy(fname,"ascii/"),rest);
|
||||||
|
if (is_safepath(fname,FILE_MUST_EXIST) != FILE_IS_SAFE)
|
||||||
|
goto ascii_badfile;
|
||||||
|
if ((fd = open(fname,O_RDONLY)) < 0)
|
||||||
|
goto ascii_badfile;
|
||||||
|
#endif
|
||||||
|
|
||||||
ascii_from = from;
|
ascii_from = from;
|
||||||
readline(fd,&read_ascii); /* readline closes fd */
|
readline(fd,&read_ascii); /* readline closes fd */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user