mirror of
https://github.com/EnergyMech/energymech.git
synced 2025-12-17 15:36:50 +00:00
progress (#18)
* Added: Signal handlers for SIGILL and SIGABRT ifdef DEBUG * Added: New command: CRASH, for debugging/development... * Changed: configure now defaults to optimizing for code size. * Added: configuration option --optimize=speed or --optimize=size changes to configure #17
This commit is contained in:
parent
cf37c9b728
commit
badf9f2771
14
.gitignore
vendored
14
.gitignore
vendored
@ -1,17 +1,21 @@
|
|||||||
# emech .gitignore
|
# emech .gitignore
|
||||||
|
|
||||||
energymech
|
|
||||||
|
|
||||||
|
# autogenerated files
|
||||||
src/Makefile
|
src/Makefile
|
||||||
src/config.h
|
src/config.h
|
||||||
src/*.o
|
|
||||||
src/energymech
|
|
||||||
src/gencmd
|
|
||||||
src/mcmd.h
|
src/mcmd.h
|
||||||
src/usercombo.h
|
src/usercombo.h
|
||||||
|
|
||||||
|
# compiled files
|
||||||
|
energymech
|
||||||
|
src/energymech
|
||||||
|
src/*.o
|
||||||
|
src/gencmd
|
||||||
src/aliastest
|
src/aliastest
|
||||||
src/safepathtest
|
src/safepathtest
|
||||||
|
|
||||||
|
# mech typical user config files
|
||||||
*~
|
*~
|
||||||
*.bak
|
*.bak
|
||||||
mech.passwd
|
mech.passwd
|
||||||
@ -22,6 +26,8 @@ mech.session
|
|||||||
root.zone*
|
root.zone*
|
||||||
trick.conf
|
trick.conf
|
||||||
|
|
||||||
|
# developer files
|
||||||
|
.use_size
|
||||||
conf
|
conf
|
||||||
debug*
|
debug*
|
||||||
*.log
|
*.log
|
||||||
|
|||||||
6
TODO
6
TODO
@ -1,8 +1,10 @@
|
|||||||
/*
|
/*
|
||||||
* EnergyMech TODO (March 9th, 2018)
|
* EnergyMech TODO (March 16th, 2018)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
- URL grabber/log
|
- Toybox hangman game
|
||||||
|
|
||||||
|
- Support for MD5 and SHA enabled at the same time for compatibility/fallback
|
||||||
|
|
||||||
- SSL support for irc server/botnet
|
- SSL support for irc server/botnet
|
||||||
|
|
||||||
|
|||||||
4
VERSIONS
4
VERSIONS
@ -1,5 +1,9 @@
|
|||||||
3.0.99p4 -- WORK IN PROGRESS (~March, 2018)
|
3.0.99p4 -- WORK IN PROGRESS (~March, 2018)
|
||||||
|
|
||||||
|
* Added: Signal handlers for SIGILL and SIGABRT ifdef DEBUG
|
||||||
|
* Added: New command: CRASH, for debugging/development...
|
||||||
|
* Changed: configure now defaults to optimizing for code size.
|
||||||
|
* Added: configuration option --optimize=speed or --optimize=size
|
||||||
* Added: STABLE/BETA/ALPHA status to individual features in configure.
|
* Added: STABLE/BETA/ALPHA 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 connection associated with the removed guid
|
is reset, the connection associated with the removed guid
|
||||||
|
|||||||
22
configure
vendored
22
configure
vendored
@ -26,6 +26,9 @@ compile=no
|
|||||||
install=no
|
install=no
|
||||||
silentopt=no
|
silentopt=no
|
||||||
|
|
||||||
|
# default optimization goal, speed = -O2, size = -Os
|
||||||
|
optitype=size
|
||||||
|
|
||||||
for opt
|
for opt
|
||||||
do
|
do
|
||||||
|
|
||||||
@ -254,6 +257,8 @@ do
|
|||||||
--no-cpuflags) cc_arch_opt=no ;;
|
--no-cpuflags) cc_arch_opt=no ;;
|
||||||
--use-optimize) cc_optimize_opt=yes ;;
|
--use-optimize) cc_optimize_opt=yes ;;
|
||||||
--no-optimize) cc_optimize_opt=no ;;
|
--no-optimize) cc_optimize_opt=no ;;
|
||||||
|
--optimize=speed) optitype=speed ;;
|
||||||
|
--optimize=size) optitype=size ;;
|
||||||
--use-gnudebug) cc_g_opt=yes ;;
|
--use-gnudebug) cc_g_opt=yes ;;
|
||||||
--no-gnudebug) cc_g_opt=no ;;
|
--no-gnudebug) cc_g_opt=no ;;
|
||||||
--use-warnflag) cc_wall_opt=yes ;;
|
--use-warnflag) cc_wall_opt=yes ;;
|
||||||
@ -539,10 +544,15 @@ if [ -z "$cc_pipe_opt" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
oflag="-O2"
|
||||||
|
if [ "$optitype" = size ]; then
|
||||||
|
oflag="-Os"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "$cc_optimize_opt" ]; then
|
if [ -z "$cc_optimize_opt" ]; then
|
||||||
if $CC -O2 -o $TESTO $TESTC 1> /dev/null 2> /dev/null; then
|
if $CC $oflag -o $TESTO $TESTC 1> /dev/null 2> /dev/null; then
|
||||||
cc_optimize_flag="-O2"
|
cc_optimize_flag="$oflag"
|
||||||
echo $ac_n "-O2 "$ac_c
|
echo $ac_n "$oflag "$ac_c
|
||||||
fi
|
fi
|
||||||
if [ -z "$cc_optimize_flag" ]; then
|
if [ -z "$cc_optimize_flag" ]; then
|
||||||
if $CC -O -o $TESTO $TESTC 1> /dev/null 2> /dev/null; then
|
if $CC -O -o $TESTO $TESTC 1> /dev/null 2> /dev/null; then
|
||||||
@ -618,7 +628,7 @@ if [ -z "$endian" ]; then
|
|||||||
$CC -o $TESTP $TESTC 1> /dev/null 2> /dev/null
|
$CC -o $TESTP $TESTC 1> /dev/null 2> /dev/null
|
||||||
if [ -x $TESTP ]; then
|
if [ -x $TESTP ]; then
|
||||||
endian=`$TESTP`
|
endian=`$TESTP`
|
||||||
if [ "$endian" == "1" ]; then
|
if [ "$endian" = 1 ]; then
|
||||||
endian="little"
|
endian="little"
|
||||||
else
|
else
|
||||||
endian="big"
|
endian="big"
|
||||||
@ -1308,12 +1318,12 @@ s|@PTSIZE_DEFINE64@|$PTSIZE_DEFINE64|;
|
|||||||
s|@UNALIGNED_MEM@|$UNALIGNED_MEM|;
|
s|@UNALIGNED_MEM@|$UNALIGNED_MEM|;
|
||||||
" < src/config.h.in >> src/config.h
|
" < src/config.h.in >> src/config.h
|
||||||
|
|
||||||
if [ "$install" == "yes" ]; then
|
if [ "$install" = yes ]; then
|
||||||
make -C src energymech
|
make -C src energymech
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$compile" == "yes" ]; then
|
if [ "$compile" = yes ]; then
|
||||||
make -C src energymech
|
make -C src energymech
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -65,16 +65,21 @@ all: $(INSTALLNAME)
|
|||||||
# instead of doing extra parsing and handling while the bot is running.
|
# instead of doing extra parsing and handling while the bot is running.
|
||||||
#
|
#
|
||||||
|
|
||||||
mcmd.h: gencmd.c config.h structs.h
|
gencmd: gencmd.c socket.c config.h structs.h
|
||||||
$(CC) $(LFLAGS) -o gencmd gencmd.c
|
$(CC) $(LFLAGS) -o gencmd gencmd.c
|
||||||
./gencmd > mcmd.h
|
|
||||||
|
mcmd.h: gencmd
|
||||||
|
./gencmd mcmd.h
|
||||||
|
|
||||||
|
usercombo.h: gencmd
|
||||||
|
./gencmd usercombo.h
|
||||||
|
|
||||||
install: $(INSTALLNAME)
|
install: $(INSTALLNAME)
|
||||||
$(CHMOD) $(INSTALLMODE) $(INSTALLNAME)
|
$(CHMOD) $(INSTALLMODE) $(INSTALLNAME)
|
||||||
$(MV) $(INSTALLNAME) $(INSTALLDIR)
|
$(MV) $(INSTALLNAME) $(INSTALLDIR)
|
||||||
|
|
||||||
clean: FORCE
|
clean: FORCE
|
||||||
$(RM) $(INSTALLNAME) gencmd mcmd.h core $(TESTFILES) $(OFILES)
|
$(RM) $(INSTALLNAME) gencmd mcmd.h usercombo.h core $(TESTFILES) $(OFILES)
|
||||||
|
|
||||||
$(INSTALLNAME): $(OFILES)
|
$(INSTALLNAME): $(OFILES)
|
||||||
$(CROSS_COMPILE)$(CC) $(LFLAGS) -o $(INSTALLNAME) $(OFILES) $(LPROF) $(LIBS) $(LDSCRIPT)
|
$(CROSS_COMPILE)$(CC) $(LFLAGS) -o $(INSTALLNAME) $(OFILES) $(LPROF) $(LIBS) $(LDSCRIPT)
|
||||||
@ -245,7 +250,7 @@ uptime.o: uptime.c $(INCS)
|
|||||||
urlcap.o: urlcap.c $(INCS)
|
urlcap.o: urlcap.c $(INCS)
|
||||||
$(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF)
|
$(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF)
|
||||||
|
|
||||||
user.o: user.c $(INCS)
|
user.o: user.c $(INCS) usercombo.h
|
||||||
$(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF)
|
$(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF)
|
||||||
|
|
||||||
vars.o: vars.c $(INCS) settings.h
|
vars.o: vars.c $(INCS) settings.h
|
||||||
|
|||||||
25
src/alias.c
25
src/alias.c
@ -177,9 +177,15 @@ void afmt(char *copy_to, const char *src, const char *input)
|
|||||||
* associated commands
|
* associated commands
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
/*---Help:ALIAS
|
/*
|
||||||
|
help:ALIAS
|
||||||
|
usage:ALIAS <newcommand> <command [arguments ...]>
|
||||||
|
file:../help/ALIAS
|
||||||
|
begin:
|
||||||
|
|
||||||
Create a command alias. Arguments in the form $#, $#- and $#-# will
|
Create or replace a command alias.
|
||||||
|
|
||||||
|
Arguments in the form $#, $#- and $#-# will
|
||||||
be replaced with the corresponding argument from input.
|
be replaced with the corresponding argument from input.
|
||||||
|
|
||||||
$0 The zeroeth argument (the aliased command).
|
$0 The zeroeth argument (the aliased command).
|
||||||
@ -208,7 +214,8 @@ to replace built in commands. Aliases can recurse a
|
|||||||
maximum of 20 times (to prevent infinite loops).
|
maximum of 20 times (to prevent infinite loops).
|
||||||
|
|
||||||
See also: unalias
|
See also: unalias
|
||||||
---Helpend---*/
|
:end
|
||||||
|
*/
|
||||||
void do_alias(COMMAND_ARGS)
|
void do_alias(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -268,6 +275,17 @@ void do_alias(COMMAND_ARGS)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:UNALIAS
|
||||||
|
usage:UNALIAS <alias>
|
||||||
|
file:../help/UNALIAS
|
||||||
|
begin:
|
||||||
|
|
||||||
|
Remove an existing alias.
|
||||||
|
|
||||||
|
See also: alias
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_unalias(COMMAND_ARGS)
|
void do_unalias(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -292,4 +310,3 @@ void do_unalias(COMMAND_ARGS)
|
|||||||
|
|
||||||
#endif /* not TEST */
|
#endif /* not TEST */
|
||||||
#endif /* ALIAS */
|
#endif /* ALIAS */
|
||||||
|
|
||||||
|
|||||||
18
src/auth.c
18
src/auth.c
@ -417,10 +417,20 @@ int make_auth(const char *userhost, const User *user)
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*---Help:AUTH:<password>
|
/*
|
||||||
*/
|
help:AUTH
|
||||||
/*---Help:VERIFY:<password>
|
help:VERIFY
|
||||||
*/
|
usage:AUTH <password>
|
||||||
|
usage:VERIFY <password>
|
||||||
|
file:../help/AUTH
|
||||||
|
file:../help/VERIFY
|
||||||
|
begin:
|
||||||
|
|
||||||
|
Authenticate yourself with the bot.
|
||||||
|
|
||||||
|
See also: passwd, setpass
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_auth(COMMAND_ARGS)
|
void do_auth(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
#ifdef BOTNET
|
#ifdef BOTNET
|
||||||
|
|||||||
120
src/channel.c
120
src/channel.c
@ -668,6 +668,17 @@ char *get_nuh(ChanUser *user)
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:JOIN
|
||||||
|
usage:JOIN <#channel> [key]
|
||||||
|
file:../help/JOIN
|
||||||
|
begin:
|
||||||
|
|
||||||
|
Makes the bot join a channel
|
||||||
|
|
||||||
|
See also: cycle, part
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_join(COMMAND_ARGS)
|
void do_join(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -688,6 +699,13 @@ void do_join(COMMAND_ARGS)
|
|||||||
join_channel(channel,key);
|
join_channel(channel,key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:PART
|
||||||
|
usage:PART <#channel>
|
||||||
|
file:../help/PART
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_part(COMMAND_ARGS)
|
void do_part(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -708,6 +726,13 @@ void do_part(COMMAND_ARGS)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:CYCLE
|
||||||
|
usage:CYCLE [#channel]
|
||||||
|
file:../help/CYCLE
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_cycle(COMMAND_ARGS)
|
void do_cycle(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -717,6 +742,13 @@ void do_cycle(COMMAND_ARGS)
|
|||||||
cycle_channel(CurrentChan);
|
cycle_channel(CurrentChan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:FORGET
|
||||||
|
usage:FORGET <#channel>
|
||||||
|
file:../help/FORGET
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_forget(COMMAND_ARGS)
|
void do_forget(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -740,6 +772,13 @@ void do_forget(COMMAND_ARGS)
|
|||||||
remove_chan(chan);
|
remove_chan(chan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:CHANNELS
|
||||||
|
usage:CHANNELS (no arguments)
|
||||||
|
file:../help/CHANNELS
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_channels(COMMAND_ARGS)
|
void do_channels(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
ChanUser *cu;
|
ChanUser *cu;
|
||||||
@ -784,6 +823,13 @@ void do_channels(COMMAND_ARGS)
|
|||||||
table_send(from,1);
|
table_send(from,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:WALL
|
||||||
|
usage:WALL [#channel] <message>
|
||||||
|
file:../help/WALL
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_wall(COMMAND_ARGS)
|
void do_wall(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
ChanUser *cu;
|
ChanUser *cu;
|
||||||
@ -815,6 +861,13 @@ void do_wall(COMMAND_ARGS)
|
|||||||
to_user(from,TEXT_SENTWALLOP,to);
|
to_user(from,TEXT_SENTWALLOP,to);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:MODE
|
||||||
|
usage:MODE [#channel|botnick] <mode ...>
|
||||||
|
file:../help/MODE
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_mode(COMMAND_ARGS)
|
void do_mode(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -844,6 +897,13 @@ void do_mode(COMMAND_ARGS)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:NAMES
|
||||||
|
usage:NAMES [#channel]
|
||||||
|
file:../help/NAMES
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_names(COMMAND_ARGS)
|
void do_names(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
ChanUser *cu;
|
ChanUser *cu;
|
||||||
@ -886,6 +946,13 @@ void do_names(COMMAND_ARGS)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:CCHAN
|
||||||
|
usage:CCHAN [#channel]
|
||||||
|
file:../help/CCHAN
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_cchan(COMMAND_ARGS)
|
void do_cchan(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
Chan *chan;
|
Chan *chan;
|
||||||
@ -907,6 +974,13 @@ void do_cchan(COMMAND_ARGS)
|
|||||||
(current->activechan) ? current->activechan->name : TEXT_NONE);
|
(current->activechan) ? current->activechan->name : TEXT_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:INVITE
|
||||||
|
usage:INVITE [#channel] [nick]
|
||||||
|
file:../help/INVITE
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_invite(COMMAND_ARGS)
|
void do_invite(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -922,6 +996,20 @@ void do_invite(COMMAND_ARGS)
|
|||||||
to_user(from,"User(s) invited to %s",to);
|
to_user(from,"User(s) invited to %s",to);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:ME
|
||||||
|
usage:ME [#channel] <message>
|
||||||
|
file:../help/ME
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
help:SAY
|
||||||
|
usage:SAY [#channel] <message>
|
||||||
|
file:../help/SAY
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_sayme(COMMAND_ARGS)
|
void do_sayme(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -951,7 +1039,14 @@ void do_sayme(COMMAND_ARGS)
|
|||||||
to_user_q(from,(CurrentCmd->name == C_SAY) ? FMT_PLAIN : "\001ACTION %s\001",rest);
|
to_user_q(from,(CurrentCmd->name == C_SAY) ? FMT_PLAIN : "\001ACTION %s\001",rest);
|
||||||
}
|
}
|
||||||
|
|
||||||
void do_showusers(COMMAND_ARGS)
|
/*
|
||||||
|
help:WHO
|
||||||
|
usage:WHO
|
||||||
|
file:../help/WHO
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
|
void do_who(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* on_msg checks: CAXS
|
* on_msg checks: CAXS
|
||||||
@ -979,7 +1074,7 @@ void do_showusers(COMMAND_ARGS)
|
|||||||
if (nuh)
|
if (nuh)
|
||||||
{
|
{
|
||||||
if (!Strcasecmp(nuh,"-ops"))
|
if (!Strcasecmp(nuh,"-ops"))
|
||||||
flags = 1;
|
flags = 1;
|
||||||
else
|
else
|
||||||
if (!Strcasecmp(nuh,"-nonops"))
|
if (!Strcasecmp(nuh,"-nonops"))
|
||||||
flags = 2;
|
flags = 2;
|
||||||
@ -1035,6 +1130,13 @@ void do_showusers(COMMAND_ARGS)
|
|||||||
table_send(from,0);
|
table_send(from,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:
|
||||||
|
usage:
|
||||||
|
file:../help/
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_topic(COMMAND_ARGS)
|
void do_topic(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -1051,6 +1153,13 @@ void do_topic(COMMAND_ARGS)
|
|||||||
to_user(from,ERR_NOTOPPED,to);
|
to_user(from,ERR_NOTOPPED,to);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:
|
||||||
|
usage:
|
||||||
|
file:../help/
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_showidle(COMMAND_ARGS)
|
void do_showidle(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -1081,6 +1190,13 @@ void do_showidle(COMMAND_ARGS)
|
|||||||
table_send(from,1);
|
table_send(from,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
help:
|
||||||
|
usage:
|
||||||
|
file:../help/
|
||||||
|
begin:
|
||||||
|
:end
|
||||||
|
*/
|
||||||
void do_idle(COMMAND_ARGS)
|
void do_idle(COMMAND_ARGS)
|
||||||
{
|
{
|
||||||
ChanUser *cu,*cu2;
|
ChanUser *cu,*cu2;
|
||||||
|
|||||||
@ -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
|
||||||
@ -1295,7 +1295,7 @@ void do_core(COMMAND_ARGS)
|
|||||||
else
|
else
|
||||||
pt = TEXT_VHINACTIVE;
|
pt = TEXT_VHINACTIVE;
|
||||||
table_buffer(TEXT_VIRTHOSTWINGATE,current->setting[STR_WINGATE].str_var,
|
table_buffer(TEXT_VIRTHOSTWINGATE,current->setting[STR_WINGATE].str_var,
|
||||||
current->setting[INT_WINGPORT].int_var,pt);
|
current->setting[INT_WINGPORT].int_var,pt);
|
||||||
}
|
}
|
||||||
#endif /* WINGATE */
|
#endif /* WINGATE */
|
||||||
sp = find_server(current->server);
|
sp = find_server(current->server);
|
||||||
|
|||||||
@ -1354,6 +1354,14 @@ void do_debug(COMMAND_ARGS)
|
|||||||
to_user(from,"Unable to write debug information to file");
|
to_user(from,"Unable to write debug information to file");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void do_crash(COMMAND_ARGS)
|
||||||
|
{
|
||||||
|
int *a;
|
||||||
|
|
||||||
|
a = NULL;
|
||||||
|
*a = 1; /* break time and space */
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* ifndef TEST */
|
#endif /* ifndef TEST */
|
||||||
|
|
||||||
void debug(char *format, ...)
|
void debug(char *format, ...)
|
||||||
|
|||||||
127
src/gencmd.c
127
src/gencmd.c
@ -22,6 +22,10 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "structs.h"
|
#include "structs.h"
|
||||||
|
|
||||||
|
char gsockdata[MAXLEN];
|
||||||
|
|
||||||
|
#include "socket.c"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
These are defined in config.h
|
These are defined in config.h
|
||||||
@ -48,8 +52,8 @@
|
|||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
int pass;
|
int pass;
|
||||||
char *name;
|
const char *name;
|
||||||
char *func;
|
const char *func;
|
||||||
ulong flags;
|
ulong flags;
|
||||||
char *cmdarg;
|
char *cmdarg;
|
||||||
|
|
||||||
@ -129,7 +133,7 @@ struct
|
|||||||
{ 0, "USERHOST", "do_ircwhois", 40 | CCPW | CARGS },
|
{ 0, "USERHOST", "do_ircwhois", 40 | CCPW | CARGS },
|
||||||
{ 0, "VOICE", "do_opvoice", 40 | CCPW | CAXS , "v+" },
|
{ 0, "VOICE", "do_opvoice", 40 | CCPW | CAXS , "v+" },
|
||||||
{ 0, "WALL", "do_wall", 40 | CCPW | CAXS | CARGS | ACCHAN },
|
{ 0, "WALL", "do_wall", 40 | CCPW | CAXS | CARGS | ACCHAN },
|
||||||
{ 0, "WHO", "do_showusers", 40 | CCPW | CAXS | DCC },
|
{ 0, "WHO", "do_who", 40 | CCPW | CAXS | DCC },
|
||||||
{ 0, "WHOIS", "do_ircwhois", 40 | CCPW | CARGS | DCC | REDIR | LBUF },
|
{ 0, "WHOIS", "do_ircwhois", 40 | CCPW | CARGS | DCC | REDIR | LBUF },
|
||||||
#ifdef NOTE
|
#ifdef NOTE
|
||||||
{ 0, "NOTE", "do_note", 40 | CCPW | CARGS },
|
{ 0, "NOTE", "do_note", 40 | CCPW | CARGS },
|
||||||
@ -242,6 +246,7 @@ struct
|
|||||||
{ 0, "SHUTDOWN", "do_shutdown", 100 | CCPW | GAXS | NOPUB | NOCMD },
|
{ 0, "SHUTDOWN", "do_shutdown", 100 | CCPW | GAXS | NOPUB | NOCMD },
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
{ 0, "DEBUG", "do_debug", 100 | CCPW | GAXS },
|
{ 0, "DEBUG", "do_debug", 100 | CCPW | GAXS },
|
||||||
|
{ 0, "CRASH", "do_crash", 100 | CCPW | GAXS },
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
#ifdef PYTHON
|
#ifdef PYTHON
|
||||||
#ifdef PLEASE_HACK_MY_SHELL
|
#ifdef PLEASE_HACK_MY_SHELL
|
||||||
@ -264,33 +269,31 @@ struct
|
|||||||
#define __struct_acces 2
|
#define __struct_acces 2
|
||||||
#define __struct_print 1
|
#define __struct_print 1
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
void make_mcmd(void)
|
||||||
{
|
{
|
||||||
FILE *of;
|
const char *pt;
|
||||||
usercombo combo;
|
char tmp[100],*tabs;
|
||||||
char tmp[100];
|
int i,j,wh,pass,ct,sl,fd;
|
||||||
char *pt,*tabs;
|
|
||||||
int i,j,wh;
|
|
||||||
int pass;
|
|
||||||
int ct;
|
|
||||||
int sl;
|
|
||||||
OnMsg v;
|
OnMsg v;
|
||||||
|
|
||||||
|
unlink("mcmd.h");
|
||||||
|
fd = open("mcmd.h",O_WRONLY|O_CREAT|O_TRUNC,0644);
|
||||||
|
|
||||||
pass = __define_strng;
|
pass = __define_strng;
|
||||||
ct = 0;
|
ct = 0;
|
||||||
|
|
||||||
printf("/""* This file is automatically generated from gencmd.c *""/\n");
|
to_file(fd,"/""* This file is automatically generated from gencmd.c *""/\n");
|
||||||
printf("#ifndef TEST\n#ifndef MCMD_H\n#define MCMD_H 1\n\n");
|
to_file(fd,"#ifndef TEST\n#ifndef MCMD_H\n#define MCMD_H 1\n\n");
|
||||||
|
|
||||||
while(pass)
|
while(pass)
|
||||||
{
|
{
|
||||||
if (pass == __struct_print)
|
if (pass == __struct_print)
|
||||||
{
|
{
|
||||||
printf("LS const OnMsg mcmd[] =\n{\n");
|
to_file(fd,"LS const OnMsg mcmd[] =\n{\n");
|
||||||
}
|
}
|
||||||
if (pass == __struct_acces)
|
if (pass == __struct_acces)
|
||||||
{
|
{
|
||||||
printf("LS OnMsg_access acmd[] = \n{\n");
|
to_file(fd,"LS OnMsg_access acmd[] = \n{\n");
|
||||||
}
|
}
|
||||||
for(i=0;pre_mcmd[i].name;i++)
|
for(i=0;pre_mcmd[i].name;i++)
|
||||||
{
|
{
|
||||||
@ -315,17 +318,17 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
if (pass == __define_strng)
|
if (pass == __define_strng)
|
||||||
{
|
{
|
||||||
//printf("#define S_%s%s\t\"%s\"\n",pt,((strlen(pt) + 2) < 8) ? "\t" : "",pt);
|
//to_file(fd,"#define S_%s%s\t\"%s\"\n",pt,((strlen(pt) + 2) < 8) ? "\t" : "",pt);
|
||||||
}
|
}
|
||||||
if (pass == __define_print)
|
if (pass == __define_print)
|
||||||
{
|
{
|
||||||
//printf("#define C_%s%s\tmcmd[%i].name\n",pt,((strlen(pt) + 2) < 8) ? "\t" : "",ct);
|
//to_file(fd,"#define C_%s%s\tmcmd[%i].name\n",pt,((strlen(pt) + 2) < 8) ? "\t" : "",ct);
|
||||||
printf("BEG const char C_%s[]%s\tMDEF(\"%s\");\n",pt,((strlen(pt) + 3) < 8) ? "\t" : "",pt);
|
to_file(fd,"BEG const char C_%s[]%s\tMDEF(\"%s\");\n",pt,((strlen(pt) + 3) < 8) ? "\t" : "",pt);
|
||||||
ct++;
|
ct++;
|
||||||
}
|
}
|
||||||
if (pass == __struct_acces)
|
if (pass == __struct_acces)
|
||||||
{
|
{
|
||||||
printf("\t%i,\t/""* %s *""/\n",
|
to_file(fd,"\t%i,\t/""* %s *""/\n",
|
||||||
pre_mcmd[wh].flags & CLEVEL,
|
pre_mcmd[wh].flags & CLEVEL,
|
||||||
pt);
|
pt);
|
||||||
}
|
}
|
||||||
@ -370,7 +373,7 @@ int main(int argc, char **argv)
|
|||||||
sl = (sl & ~7) / 8;
|
sl = (sl & ~7) / 8;
|
||||||
tabs += sl;
|
tabs += sl;
|
||||||
|
|
||||||
printf( (pre_mcmd[wh].cmdarg) ? "{ C_%s,%s\t%s,%s%s\t, \"%s\"\t},\n" : "{ C_%s,%s\t%s,%s%s\t},\n",
|
to_file(fd,(pre_mcmd[wh].cmdarg) ? "{ C_%s,%s\t%s,%s%s\t, \"%s\"\t},\n" : "{ C_%s,%s\t%s,%s%s\t},\n",
|
||||||
pt,
|
pt,
|
||||||
((strlen(pt) + 5) < 8) ? "\t" : "",
|
((strlen(pt) + 5) < 8) ? "\t" : "",
|
||||||
pre_mcmd[wh].func,
|
pre_mcmd[wh].func,
|
||||||
@ -387,57 +390,97 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
if (pass == __define_print)
|
if (pass == __define_print)
|
||||||
{
|
{
|
||||||
printf("\n#ifdef MAIN_C\n\n");
|
to_file(fd,"\n#ifdef MAIN_C\n\n");
|
||||||
}
|
}
|
||||||
if (pass == __struct_print)
|
if (pass == __struct_print)
|
||||||
{
|
{
|
||||||
printf("{ NULL, }};\n\n");
|
to_file(fd,"{ NULL, }};\n\n");
|
||||||
}
|
}
|
||||||
if (pass == __struct_acces)
|
if (pass == __struct_acces)
|
||||||
{
|
{
|
||||||
printf("};\n\n");
|
to_file(fd,"};\n\n");
|
||||||
}
|
}
|
||||||
pass--;
|
pass--;
|
||||||
}
|
}
|
||||||
printf("#define LOCALHOST_ULONG %lu\n",inet_addr("127.1"));
|
to_file(fd,"#define LOCALHOST_ULONG %lu\n",inet_addr("127.1"));
|
||||||
printf("#else /""* MAIN_C *""/\n\n");
|
to_file(fd,"#else /""* MAIN_C *""/\n\n");
|
||||||
printf("extern OnMsg mcmd[];\n");
|
to_file(fd,"extern OnMsg mcmd[];\n");
|
||||||
printf("extern OnMsg_access acmd[];\n\n");
|
to_file(fd,"extern OnMsg_access acmd[];\n\n");
|
||||||
printf("#endif /""* MAIN_C *""/\n\n");
|
to_file(fd,"#endif /""* MAIN_C *""/\n\n");
|
||||||
printf("#endif /""* MCMD_H *""/\n\n");
|
to_file(fd,"#endif /""* MCMD_H *""/\n\n");
|
||||||
printf("#endif /""* TEST *""/\n\n");
|
to_file(fd,"#endif /""* TEST *""/\n\n");
|
||||||
|
close(fd);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void make_usercombo(void)
|
||||||
|
{
|
||||||
|
usercombo combo;
|
||||||
|
int fd;
|
||||||
|
|
||||||
unlink("usercombo.h");
|
unlink("usercombo.h");
|
||||||
of = fopen("usercombo.h","w");
|
fd = open("usercombo.h",O_WRONLY|O_CREAT|O_TRUNC,0644);
|
||||||
|
|
||||||
fprintf(of,"/""* This file is automatically generated from gencmd.c *""/\n");
|
to_file(fd,"/""* This file is automatically generated from gencmd.c *""/\n");
|
||||||
|
|
||||||
#ifdef BOTNET
|
#ifdef BOTNET
|
||||||
combo.comboflags = 0; combo.x.noshare = 1;
|
combo.comboflags = 0; combo.x.noshare = 1;
|
||||||
fprintf(of,"#define COMBO_NOSHARE\t0x%x\n",combo.comboflags);
|
to_file(fd,"#define COMBO_NOSHARE\t0x%x\n",combo.comboflags);
|
||||||
combo.comboflags = 0; combo.x.readonly = 1;
|
combo.comboflags = 0; combo.x.readonly = 1;
|
||||||
fprintf(of,"#define COMBO_READONLY\t0x%x\n",combo.comboflags);
|
to_file(fd,"#define COMBO_READONLY\t0x%x\n",combo.comboflags);
|
||||||
#endif /* BOTNET */
|
#endif /* BOTNET */
|
||||||
|
|
||||||
#ifdef GREET
|
#ifdef GREET
|
||||||
combo.comboflags = 0; combo.x.greetfile = 1;
|
combo.comboflags = 0; combo.x.greetfile = 1;
|
||||||
fprintf(of,"#define COMBO_GREETFILE\t0x%x\n",combo.comboflags);
|
to_file(fd,"#define COMBO_GREETFILE\t0x%x\n",combo.comboflags);
|
||||||
combo.comboflags = 0; combo.x.randline = 1;
|
combo.comboflags = 0; combo.x.randline = 1;
|
||||||
fprintf(of,"#define COMBO_RANDLINE\t0x%x\n",combo.comboflags);
|
to_file(fd,"#define COMBO_RANDLINE\t0x%x\n",combo.comboflags);
|
||||||
#endif /* GREET */
|
#endif /* GREET */
|
||||||
|
|
||||||
#ifdef BOUNCE
|
#ifdef BOUNCE
|
||||||
combo.comboflags = 0; combo.x.bounce = 1;
|
combo.comboflags = 0; combo.x.bounce = 1;
|
||||||
fprintf(of,"#define COMBO_BOUNCE\t0x%x\n",combo.comboflags);
|
to_file(fd,"#define COMBO_BOUNCE\t0x%x\n",combo.comboflags);
|
||||||
#endif /* BOUNCE */
|
#endif /* BOUNCE */
|
||||||
|
|
||||||
combo.comboflags = 0; combo.x.echo = 1;
|
combo.comboflags = 0; combo.x.echo = 1;
|
||||||
fprintf(of,"#define COMBO_ECHO\t0x%x\n",combo.comboflags);
|
to_file(fd,"#define COMBO_ECHO\t0x%x\n",combo.comboflags);
|
||||||
combo.comboflags = 0; combo.x.aop = 1;
|
combo.comboflags = 0; combo.x.aop = 1;
|
||||||
fprintf(of,"#define COMBO_AOP\t0x%x\n",combo.comboflags);
|
to_file(fd,"#define COMBO_AOP\t0x%x\n",combo.comboflags);
|
||||||
combo.comboflags = 0; combo.x.avoice = 1;
|
combo.comboflags = 0; combo.x.avoice = 1;
|
||||||
fprintf(of,"#define COMBO_AVOICE\t0x%x\n",combo.comboflags);
|
to_file(fd,"#define COMBO_AVOICE\t0x%x\n",combo.comboflags);
|
||||||
|
|
||||||
|
close(fd);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_help(void)
|
||||||
|
{
|
||||||
|
char tmp[PATH_MAX];
|
||||||
|
struct stat st;
|
||||||
|
int i,r;
|
||||||
|
|
||||||
|
for(i=0;pre_mcmd[i].name;i++)
|
||||||
|
{
|
||||||
|
sprintf(tmp,"../help/%s",pre_mcmd[i].name);
|
||||||
|
r = stat(tmp,&st);
|
||||||
|
|
||||||
|
if (r == -1 && errno == ENOENT)
|
||||||
|
to_file(1,"help for %s is missing\n",pre_mcmd[i].name);
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (argv[1] && strcmp(argv[1],"usercombo.h") == 0)
|
||||||
|
make_usercombo();
|
||||||
|
|
||||||
|
if (argv[1] && strcmp(argv[1],"mcmd.h") == 0)
|
||||||
|
make_mcmd();
|
||||||
|
|
||||||
|
if (argv[1] && strcmp(argv[1],"testhelp") == 0)
|
||||||
|
test_help();
|
||||||
|
|
||||||
fclose(of);
|
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|||||||
16
src/global.h
16
src/global.h
@ -59,18 +59,12 @@ BEG const char ERR_NOCHANNELS[] MDEF("I'm not active on any channels");
|
|||||||
BEG const char ERR_NOTOPPED[] MDEF("I'm not opped on %s");
|
BEG const char ERR_NOTOPPED[] MDEF("I'm not opped on %s");
|
||||||
BEG const char ERR_UNKNOWN_COMMAND[] MDEF("Squeeze me?");
|
BEG const char ERR_UNKNOWN_COMMAND[] MDEF("Squeeze me?");
|
||||||
|
|
||||||
BEG const char __SPYSTR_RAWIRC[] MDEF("rawirc");
|
BEG const char SPYSTR_RAWIRC[] MDEF("rawirc");
|
||||||
BEG const char __SPYSTR_MESSAGE[] MDEF("message");
|
BEG const char SPYSTR_MESSAGE[] MDEF("message");
|
||||||
BEG const char __SPYSTR_STATUS[] MDEF("status");
|
BEG const char SPYSTR_STATUS[] MDEF("status");
|
||||||
BEG const char __SPYSTR_BOTNET[] MDEF("botnet");
|
BEG const char SPYSTR_BOTNET[] MDEF("botnet");
|
||||||
#define SPYSTR_RAWIRC __SPYSTR_RAWIRC
|
|
||||||
#define SPYSTR_MESSAGE __SPYSTR_MESSAGE
|
|
||||||
#define SPYSTR_STATUS __SPYSTR_STATUS
|
|
||||||
#define SPYSTR_BOTNET __SPYSTR_BOTNET
|
|
||||||
|
|
||||||
#ifdef URLCAPTURE
|
#ifdef URLCAPTURE
|
||||||
BEG const char __SPYSTR_URL[] MDEF("url");
|
BEG const char SPYSTR_URL[] MDEF("url");
|
||||||
#define SPYSTR_URL __SPYSTR_URL
|
|
||||||
#endif /* URLCAPTURE */
|
#endif /* URLCAPTURE */
|
||||||
|
|
||||||
BEG const char STR_MECHRESET[] MDEF("MECHRESET=");
|
BEG const char STR_MECHRESET[] MDEF("MECHRESET=");
|
||||||
|
|||||||
243
src/h.h
243
src/h.h
@ -106,14 +106,132 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
LS int makecrc(const char *);
|
|
||||||
LS void send_supress(const char *, const char *);
|
|
||||||
LS void netchanSupress(BotNet *, char *);
|
|
||||||
|
|
||||||
LS Chan *find_channel(const char *, int) __attr(CORE_SEG, __regparm (2) );
|
/*
|
||||||
LS Chan *find_channel_ac(const char *) __attr(CORE_SEG, __regparm (1) );
|
170540 1728 3104 175372 2ad0c energymech-mega
|
||||||
LS Chan *find_channel_ny(const char *) __attr(CORE_SEG, __regparm (1) );
|
*/
|
||||||
LS ChanUser *find_chanuser(Chan *, const char *) __attr(CORE_SEG, __regparm (2) );
|
|
||||||
|
/* alias.c */
|
||||||
|
|
||||||
|
LS void afmt(char *, const char *, const char *) __page(CORE_SEG);
|
||||||
|
void do_alias(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
|
void do_unalias(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
|
|
||||||
|
/* auth.c */
|
||||||
|
/* bounce.c */
|
||||||
|
/* chanban.c */
|
||||||
|
/* channel.c */
|
||||||
|
|
||||||
|
LS Chan *find_channel(const char *, int) __attr(CORE_SEG, __regparm(2));
|
||||||
|
LS Chan *find_channel_ac(const char *) __attr(CORE_SEG, __regparm(1));
|
||||||
|
LS Chan *find_channel_ny(const char *) __attr(CORE_SEG, __regparm(1));
|
||||||
|
|
||||||
|
/* core.c */
|
||||||
|
/* ctcp.c */
|
||||||
|
/* debug.c */
|
||||||
|
|
||||||
|
void do_crash(COMMAND_ARGS) __page(RARE_SEG);
|
||||||
|
|
||||||
|
/* dns.c */
|
||||||
|
/* dynamode.c */
|
||||||
|
/* function.c */
|
||||||
|
|
||||||
|
LS void *Calloc(int) __attr(CORE_SEG, __regparm(1));
|
||||||
|
LS void Free(char **) __attr(CORE_SEG, __regparm(1));
|
||||||
|
LS const int Strlen(const char *, ...) __page(CORE_SEG);
|
||||||
|
LS const int Strlen2(const char *, const char *) __attr(CORE_SEG, __regparm(2));
|
||||||
|
LS int matches(const char *, const char *) __attr(CORE_SEG, __regparm(2));
|
||||||
|
LS int num_matches(const char *, const char *) __attr(CORE_SEG, __regparm(2));
|
||||||
|
LS int a2i(char *) __attr(CORE_SEG, __regparm(1));
|
||||||
|
LS int is_safepath(const char *, int) __attr(CORE_SEG, __regparm(2));
|
||||||
|
|
||||||
|
/* greet.c */
|
||||||
|
/* help.c */
|
||||||
|
/* hostinfo.c */
|
||||||
|
/* irc.c */
|
||||||
|
/* kicksay.c */
|
||||||
|
/* main.c */
|
||||||
|
|
||||||
|
LS int sig_hup_callback(char *) __page(RARE_SEG); /* rare */
|
||||||
|
LS void do_sighup(void) __page(CMD1_SEG);
|
||||||
|
LS void do_sigint(void) __page(RARE_SEG); /* rare */
|
||||||
|
LS void do_sigusr1(void) __page(CMD1_SEG);
|
||||||
|
LS void sig_alrm(int) __page(RARE_SEG); /* rare */
|
||||||
|
LS void sig_child(int) __page(RARE_SEG); /* rare */
|
||||||
|
LS void sig_bus(int) __page(CMD1_SEG);
|
||||||
|
LS void sig_hup(int) __page(RARE_SEG); /* rare */
|
||||||
|
LS void sig_int(int) __page(RARE_SEG); /* rare */
|
||||||
|
LS void sig_pipe(int) __page(CORE_SEG);
|
||||||
|
LS void sig_ill(int) __page(RARE_SEG);
|
||||||
|
LS void sig_abrt(int) __page(RARE_SEG);
|
||||||
|
LS void sig_segv(int, siginfo_t *, void *) __page(RARE_SEG);
|
||||||
|
//LS void sig_segv(int) __page(RARE_SEG); /* rare */
|
||||||
|
LS void sig_term(int) __page(RARE_SEG); /* rare */
|
||||||
|
LS void sig_usr1(int) __page(CMD1_SEG);
|
||||||
|
LS void sig_usr2(int) __page(DBUG_SEG); /* DEBUG */
|
||||||
|
LS void sig_suicide() __attr(RARE_SEG, __noreturn__); /* rare */
|
||||||
|
|
||||||
|
/* net.c */
|
||||||
|
/* net_chan.c */
|
||||||
|
|
||||||
|
LS int makecrc(const char *) __page(CORE_SEG);
|
||||||
|
LS void send_supress(const char *, const char *) __page(CORE_SEG);
|
||||||
|
LS void netchanSupress(BotNet *, char *) __page(CORE_SEG);
|
||||||
|
|
||||||
|
/* note.c */
|
||||||
|
/* notify.c */
|
||||||
|
/* ons.c */
|
||||||
|
/* parse.c */
|
||||||
|
/* perl.c */
|
||||||
|
/* prot.c */
|
||||||
|
/* python.c */
|
||||||
|
/* redirect.c */
|
||||||
|
/* reset.c */
|
||||||
|
/* seen.c */
|
||||||
|
/* shit.c */
|
||||||
|
/* socket.c */
|
||||||
|
|
||||||
|
LS ulong get_ip(const char *) __page(CORE_SEG);
|
||||||
|
LS int SockAccept(int) __page(CORE_SEG);
|
||||||
|
LS int SockConnect(char *, int, int) __page(CORE_SEG);
|
||||||
|
LS void SockFlags(int) __page(CORE_SEG);
|
||||||
|
LS int SockListener(int) __page(CORE_SEG);
|
||||||
|
LS int SockOpts(void) __page(CORE_SEG);
|
||||||
|
|
||||||
|
/* spy.c */
|
||||||
|
/* stats.c */
|
||||||
|
/* tcl.c */
|
||||||
|
/* telnet.c */
|
||||||
|
/* toybox.c */
|
||||||
|
/* trivia.c */
|
||||||
|
/* uptime.c */
|
||||||
|
/* urlcap.c */
|
||||||
|
|
||||||
|
LS void urlcapture(const char *) __page(CORE_SEG);
|
||||||
|
LS void do_urlhist(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
|
|
||||||
|
/* user.c */
|
||||||
|
|
||||||
|
LS void cfg_chan(char *) __page(CFG1_SEG);
|
||||||
|
LS void cfg_greet(char *) __page(CFG1_SEG);
|
||||||
|
LS void cfg_mask(char *) __page(CFG1_SEG);
|
||||||
|
LS void cfg_note(char *) __page(CFG1_SEG);
|
||||||
|
LS void cfg_opt(char *) __page(CFG1_SEG);
|
||||||
|
LS void cfg_pass(char *) __page(CFG1_SEG);
|
||||||
|
LS void cfg_shit(char *) __page(CFG1_SEG);
|
||||||
|
LS void cfg_user(char *) __page(CFG1_SEG);
|
||||||
|
void mirror_user(User *) __page(CORE_SEG);
|
||||||
|
void mirror_userlist(void) __page(CORE_SEG);
|
||||||
|
LS void addtouser(Strp **, const char *, int) __attr(CORE_SEG, __regparm(3));
|
||||||
|
LS int remfromuser(Strp **, const char *) __attr(CORE_SEG, __regparm(2));
|
||||||
|
|
||||||
|
/* vars.c */
|
||||||
|
/* web.c */
|
||||||
|
|
||||||
|
/* ---------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
LS ChanUser *find_chanuser(Chan *, const char *) __attr(CORE_SEG, __regparm(2));
|
||||||
LS Client *find_client(const char *) __page(CORE_SEG);
|
LS Client *find_client(const char *) __page(CORE_SEG);
|
||||||
LS Mech *add_bot(int, char *) __page(CORE_SEG);
|
LS Mech *add_bot(int, char *) __page(CORE_SEG);
|
||||||
LS KickSay *find_kicksay(char *, char *) __page(CORE_SEG);
|
LS KickSay *find_kicksay(char *, char *) __page(CORE_SEG);
|
||||||
@ -133,23 +251,23 @@ LS int get_shitaction(const char *, const char *) __page(CORE_SEG);
|
|||||||
LS int get_useraccess(const char *, const char *) __page(CORE_SEG);
|
LS int get_useraccess(const char *, const char *) __page(CORE_SEG);
|
||||||
LS int get_maxaccess(const char *) __page(CORE_SEG);
|
LS int get_maxaccess(const char *) __page(CORE_SEG);
|
||||||
|
|
||||||
LS int Strcasecmp(const char *, const char *) __att2(CORE_SEG, const, __regparm (2) );
|
LS int Strcasecmp(const char *, const char *) __attr(CORE_SEG, __regparm(2));
|
||||||
LS int Strcmp(const char *, const char *) __att2(CORE_SEG, const, __regparm (2) );
|
LS int Strcmp(const char *, const char *) __attr(CORE_SEG, __regparm(2));
|
||||||
LS char *Strcat(char *, const char *) __attr(CORE_SEG, __regparm (2) );
|
LS char *Strcat(char *, const char *) __attr(CORE_SEG, __regparm(2));
|
||||||
LS char *Strchr(const char *, int) __att2(CORE_SEG, const, __regparm (2) );
|
LS char *Strchr(const char *, int) __attr(CORE_SEG, __regparm(2));
|
||||||
LS char *Strcpy(char *, const char *) __attr(CORE_SEG, __regparm (2) );
|
LS char *Strcpy(char *, const char *) __attr(CORE_SEG, __regparm(2));
|
||||||
LS char *Strdup(const char *) __attr(CORE_SEG, __regparm (1) );
|
LS char *Strdup(const char *) __attr(CORE_SEG, __regparm(1));
|
||||||
LS void Strncpy(char *, const char *, int) __attr(CORE_SEG, __regparm (3) );
|
LS void Strncpy(char *, const char *, int) __attr(CORE_SEG, __regparm(3));
|
||||||
LS char *chop(char **) __attr(CORE_SEG, __regparm (1) );
|
LS char *chop(char **) __attr(CORE_SEG, __regparm(1));
|
||||||
LS int get_number(const char *) __page(CORE_SEG);
|
LS int get_number(const char *) __page(CORE_SEG);
|
||||||
LS int nickcmp(const char *, const char *) __att2(CORE_SEG, const, __regparm (2) );
|
LS int nickcmp(const char *, const char *) __attr(CORE_SEG, __regparm(2));
|
||||||
LS char *nickcpy(char *, const char *) __attr(CORE_SEG, __regparm (2) );
|
LS char *nickcpy(char *, const char *) __attr(CORE_SEG, __regparm(2));
|
||||||
|
|
||||||
LS char *cipher(char *) __page(CMD1_SEG);
|
LS char *cipher(char *) __page(CMD1_SEG);
|
||||||
LS char *cluster(char *) __page(CMD1_SEG);
|
LS char *cluster(char *) __page(CMD1_SEG);
|
||||||
LS char *find_nuh(char *) __page(CORE_SEG);
|
LS char *find_nuh(char *) __page(CORE_SEG);
|
||||||
LS char *format_uh(char *, int) __page(CMD1_SEG);
|
LS char *format_uh(char *, int) __page(CMD1_SEG);
|
||||||
LS char *get_channel(char *, char **) __attr(CMD1_SEG, __regparm (2) );
|
LS char *get_channel(char *, char **) __attr(CMD1_SEG, __regparm(2));
|
||||||
LS char *get_channel2(char *, char **) __page(CMD1_SEG);
|
LS char *get_channel2(char *, char **) __page(CMD1_SEG);
|
||||||
LS char *get_nuh(ChanUser *) __page(CORE_SEG);
|
LS char *get_nuh(ChanUser *) __page(CORE_SEG);
|
||||||
LS char *get_token(char **, const char *) __page(CORE_SEG);
|
LS char *get_token(char **, const char *) __page(CORE_SEG);
|
||||||
@ -160,24 +278,13 @@ LS char *nick2uh(char *, char *) __page(CMD1_SEG);
|
|||||||
LS char *randstring(char *) __page(CORE_SEG);
|
LS char *randstring(char *) __page(CORE_SEG);
|
||||||
LS char *sockread(int, char *, char *) __page(CORE_SEG);
|
LS char *sockread(int, char *, char *) __page(CORE_SEG);
|
||||||
LS char *logtime(time_t) __page(CORE_SEG);
|
LS char *logtime(time_t) __page(CORE_SEG);
|
||||||
LS void table_buffer(const char *, ...) __attr(CMD1_SEG, format (printf, 1, 2) );
|
LS void table_buffer(const char *, ...) __attr(CMD1_SEG, format(printf, 1, 2));
|
||||||
LS void table_send(const char *, const int) __attr(CMD1_SEG, __regparm (2) );
|
LS void table_send(const char *, const int) __attr(CMD1_SEG, __regparm(2));
|
||||||
LS char *time2away(time_t) __page(CORE_SEG);
|
LS char *time2away(time_t) __page(CORE_SEG);
|
||||||
LS char *time2medium(time_t) __page(CORE_SEG);
|
LS char *time2medium(time_t) __page(CORE_SEG);
|
||||||
LS char *time2small(time_t) __page(CMD1_SEG);
|
LS char *time2small(time_t) __page(CMD1_SEG);
|
||||||
LS char *time2str(time_t) __page(CMD1_SEG);
|
LS char *time2str(time_t) __page(CMD1_SEG);
|
||||||
LS char *tolowercat(char *dest, const char *src) __attr(CMD1_SEG, __regparm (2) );
|
LS char *tolowercat(char *dest, const char *src) __attr(CMD1_SEG, __regparm(2));
|
||||||
|
|
||||||
/*
|
|
||||||
* socket.c
|
|
||||||
*/
|
|
||||||
LS ulong get_ip(const char *) __page(CORE_SEG);
|
|
||||||
LS int SockAccept(int) __page(CORE_SEG);
|
|
||||||
LS int SockConnect(char *, int, int) __page(CORE_SEG);
|
|
||||||
LS void SockFlags(int) __page(CORE_SEG);
|
|
||||||
LS int SockListener(int) __page(CORE_SEG);
|
|
||||||
LS int SockOpts(void) __page(CORE_SEG);
|
|
||||||
|
|
||||||
LS int capslevel(char *) __page(CORE_SEG);
|
LS int capslevel(char *) __page(CORE_SEG);
|
||||||
LS int check_mass(Chan *, ChanUser *, int) __page(CORE_SEG);
|
LS int check_mass(Chan *, ChanUser *, int) __page(CORE_SEG);
|
||||||
LS int compile_timer(HookTimer *, char *) __page(CORE_SEG); /* SCRIPTING */
|
LS int compile_timer(HookTimer *, char *) __page(CORE_SEG); /* SCRIPTING */
|
||||||
@ -197,9 +304,9 @@ LS int read_seenlist_callback(char *) __page(CFG1_SEG);
|
|||||||
LS int read_userlist(char *) __page(CFG1_SEG);
|
LS int read_userlist(char *) __page(CFG1_SEG);
|
||||||
LS int read_userlist_callback(char *) __page(CFG1_SEG);
|
LS int read_userlist_callback(char *) __page(CFG1_SEG);
|
||||||
LS int reverse_mode(char *, Chan *, int, int) __page(CORE_SEG);
|
LS int reverse_mode(char *, Chan *, int, int) __page(CORE_SEG);
|
||||||
LS int to_file(int, const char *, ...) __attr(CORE_SEG, format (printf, 2, 3) );
|
LS int to_file(int, const char *, ...) __attr(CORE_SEG, format(printf, 2, 3));
|
||||||
LS int try_server(Server *, char *) __page(CORE_SEG);
|
LS int try_server(Server *, char *) __page(CORE_SEG);
|
||||||
LS int usercanmodify(const char *, const User *) __attr(CORE_SEG, __regparm (2) );
|
LS int usercanmodify(const char *, const User *) __attr(CORE_SEG, __regparm(2));
|
||||||
LS int write_seenlist(void) __page(CORE_SEG);
|
LS int write_seenlist(void) __page(CORE_SEG);
|
||||||
LS int write_session(void) __page(CORE_SEG);
|
LS int write_session(void) __page(CORE_SEG);
|
||||||
LS int write_userlist(char *) __page(CORE_SEG);
|
LS int write_userlist(char *) __page(CORE_SEG);
|
||||||
@ -210,17 +317,8 @@ LS ulong stringhash(char *) __page(CORE_SEG);
|
|||||||
/*
|
/*
|
||||||
* function.c
|
* function.c
|
||||||
*/
|
*/
|
||||||
LS void *Calloc(int) __attr(CORE_SEG, __regparm (1) );
|
|
||||||
LS void Free(char **) __attr(CORE_SEG, __regparm (1) );
|
|
||||||
LS const int Strlen(const char *, ...) __page(CORE_SEG);
|
|
||||||
LS const int Strlen2(const char *, const char *) __attr(CORE_SEG, __regparm (2) );
|
|
||||||
LS int matches(const char *, const char *) __att2(CORE_SEG, const, __regparm (2) );
|
|
||||||
LS int num_matches(const char *, const char *) __att2(CORE_SEG, const, __regparm (2) );
|
|
||||||
LS int a2i(char *) __attr(CORE_SEG, __regparm (1) );
|
|
||||||
LS int is_safepath(const char *, int) __attr(CORE_SEG, __regparm (2) );
|
|
||||||
|
|
||||||
LS void afmt(char *, const char *, const char *) __page(CMD1_SEG);
|
LS void aucheck(User *) __attr(CORE_SEG, __regparm(1));
|
||||||
LS void aucheck(User *) __attr(CORE_SEG, __regparm (1) );
|
|
||||||
LS void change_authnick(char *, char *) __page(CORE_SEG);
|
LS void change_authnick(char *, char *) __page(CORE_SEG);
|
||||||
LS void change_pass(User *, char *) __page(CMD1_SEG);
|
LS void change_pass(User *, char *) __page(CMD1_SEG);
|
||||||
LS void chan_modestr(Chan *, char *) __page(CMD1_SEG);
|
LS void chan_modestr(Chan *, char *) __page(CMD1_SEG);
|
||||||
@ -237,7 +335,7 @@ LS void cycle_channel(Chan *) __page(CORE_SEG);
|
|||||||
LS void dcc_banner(Client *) __page(CORE_SEG);
|
LS void dcc_banner(Client *) __page(CORE_SEG);
|
||||||
LS void dcc_chat(char *) __page(CMD1_SEG);
|
LS void dcc_chat(char *) __page(CMD1_SEG);
|
||||||
LS int dcc_only_command(char *) __page(CMD1_SEG);
|
LS int dcc_only_command(char *) __page(CMD1_SEG);
|
||||||
LS void debug(char *, ...) __attr(CORE_SEG, format (printf, 1, 2) );
|
LS void debug(char *, ...) __attr(CORE_SEG, format(printf, 1, 2));
|
||||||
LS void delete_auth(char *) __page(RARE_SEG); /* rare */
|
LS void delete_auth(char *) __page(RARE_SEG); /* rare */
|
||||||
LS void delete_ban(Chan *, char *) __page(CORE_SEG);
|
LS void delete_ban(Chan *, char *) __page(CORE_SEG);
|
||||||
LS void delete_modemask(Chan *, char *, int) __page(CORE_SEG);
|
LS void delete_modemask(Chan *, char *, int) __page(CORE_SEG);
|
||||||
@ -247,28 +345,8 @@ LS void deop_ban(Chan *, ChanUser *, char *) __page(CMD1_SEG);
|
|||||||
LS void deop_screwban(Chan *, ChanUser *) __page(CMD1_SEG);
|
LS void deop_screwban(Chan *, ChanUser *) __page(CMD1_SEG);
|
||||||
LS void deop_siteban(Chan *, ChanUser *) __page(CMD1_SEG);
|
LS void deop_siteban(Chan *, ChanUser *) __page(CMD1_SEG);
|
||||||
|
|
||||||
/*
|
|
||||||
* user.c
|
|
||||||
*/
|
|
||||||
LS void cfg_chan(char *) __page(CFG1_SEG);
|
|
||||||
LS void cfg_greet(char *) __page(CFG1_SEG);
|
|
||||||
LS void cfg_mask(char *) __page(CFG1_SEG);
|
|
||||||
LS void cfg_note(char *) __page(CFG1_SEG);
|
|
||||||
LS void cfg_opt(char *) __page(CFG1_SEG);
|
|
||||||
LS void cfg_pass(char *) __page(CFG1_SEG);
|
|
||||||
LS void cfg_shit(char *) __page(CFG1_SEG);
|
|
||||||
LS void cfg_user(char *) __page(CFG1_SEG);
|
|
||||||
void mirror_user(User *) __page(CORE_SEG);
|
|
||||||
void mirror_userlist(void) __page(CORE_SEG);
|
|
||||||
LS void addtouser(Strp **, const char *, int) __attr(CORE_SEG, __regparm (3) );
|
|
||||||
LS int remfromuser(Strp **, const char *) __attr(CORE_SEG, __regparm (2) );
|
|
||||||
|
|
||||||
/*
|
|
||||||
* commands
|
|
||||||
*/
|
|
||||||
LS void do_8ball(COMMAND_ARGS) __page(CMD1_SEG); /* TOYBOX */
|
LS void do_8ball(COMMAND_ARGS) __page(CMD1_SEG); /* TOYBOX */
|
||||||
LS void do_access(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_access(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_alias(COMMAND_ARGS) __page(CMD1_SEG);
|
|
||||||
LS void do_auth(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_auth(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_away(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_away(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_banlist(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_banlist(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
@ -332,14 +410,13 @@ LS void do_setpass(COMMAND_ARGS) __page(CMD1_SEG);
|
|||||||
LS void do_shit(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_shit(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_shitlist(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_shitlist(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_showidle(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_showidle(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_showusers(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_who(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_shutdown(COMMAND_ARGS) __page(RARE_SEG); /* rare */
|
LS void do_shutdown(COMMAND_ARGS) __page(RARE_SEG); /* rare */
|
||||||
LS void do_siteban(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_siteban(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_spy(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_spy(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_time(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_time(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_topic(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_topic(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_trivia(COMMAND_ARGS) __page(CMD1_SEG); /* TRIVIA */
|
LS void do_trivia(COMMAND_ARGS) __page(CMD1_SEG); /* TRIVIA */
|
||||||
LS void do_unalias(COMMAND_ARGS) __page(CMD1_SEG);
|
|
||||||
LS void do_unban(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_unban(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_upsend(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_upsend(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
LS void do_upontime(COMMAND_ARGS) __page(CMD1_SEG);
|
LS void do_upontime(COMMAND_ARGS) __page(CMD1_SEG);
|
||||||
@ -352,16 +429,16 @@ LS void do_whom(COMMAND_ARGS) __page(CMD1_SEG);
|
|||||||
/*
|
/*
|
||||||
* end of commands
|
* end of commands
|
||||||
*/
|
*/
|
||||||
LS void fix_config_line(char *) __attr(CORE_SEG, __regparm (1) );
|
LS void fix_config_line(char *) __attr(CORE_SEG, __regparm(1));
|
||||||
LS void greet(void) __page(CMD1_SEG);
|
LS void greet(void) __page(CMD1_SEG);
|
||||||
LS void join_channel(char *, char *) __page(CORE_SEG);
|
LS void join_channel(char *, char *) __page(CORE_SEG);
|
||||||
LS void kill_all_bots(char *) __attr(RARE_SEG, __noreturn__ ); /* rare */
|
LS void kill_all_bots(char *) __attr(RARE_SEG, __noreturn__); /* rare */
|
||||||
LS int make_auth(const char *, const User *) __page(CORE_SEG);
|
LS int make_auth(const char *, const User *) __page(CORE_SEG);
|
||||||
LS Ban *make_ban(Ban **, char *, char *, time_t) __page(CORE_SEG);
|
LS Ban *make_ban(Ban **, char *, char *, time_t) __page(CORE_SEG);
|
||||||
LS void make_chanuser(char *, char *) __attr(CORE_SEG, __regparm (2) );
|
LS void make_chanuser(char *, char *) __attr(CORE_SEG, __regparm(2));
|
||||||
LS void make_ireq(int, char *, char *) __page(CMD1_SEG);
|
LS void make_ireq(int, char *, char *) __page(CMD1_SEG);
|
||||||
LS void mass_action(Chan *, ChanUser *) __page(CORE_SEG);
|
LS void mass_action(Chan *, ChanUser *) __page(CORE_SEG);
|
||||||
LS void mech_exec(void) __attr(RARE_SEG, __noreturn__ ); /* rare */
|
LS void mech_exec(void) __attr(RARE_SEG, __noreturn__); /* rare */
|
||||||
LS void on_action(char *, char *, char *) __page(CORE_SEG);
|
LS void on_action(char *, char *, char *) __page(CORE_SEG);
|
||||||
LS void on_ctcp(char *, char *, char *) __page(CORE_SEG);
|
LS void on_ctcp(char *, char *, char *) __page(CORE_SEG);
|
||||||
LS void on_join(Chan *, char *) __page(CORE_SEG);
|
LS void on_join(Chan *, char *) __page(CORE_SEG);
|
||||||
@ -401,9 +478,6 @@ LS void parse_mode(char *, char *) __page(CORE_SEG);
|
|||||||
LS void parse_notice(char *, char *) __page(CORE_SEG);
|
LS void parse_notice(char *, char *) __page(CORE_SEG);
|
||||||
LS void parse_part(char *, char *) __page(CORE_SEG);
|
LS void parse_part(char *, char *) __page(CORE_SEG);
|
||||||
LS void parse_ping(char *, char *) __page(CORE_SEG);
|
LS void parse_ping(char *, char *) __page(CORE_SEG);
|
||||||
#ifdef URLCAPTURE
|
|
||||||
LS void urlcapture(const char *) __page(CORE_SEG);
|
|
||||||
#endif /* URLCAPTURE */
|
|
||||||
LS void parse_privmsg(char *, char *) __page(CORE_SEG);
|
LS void parse_privmsg(char *, char *) __page(CORE_SEG);
|
||||||
LS void parse_quit(char *, char *) __page(CORE_SEG);
|
LS void parse_quit(char *, char *) __page(CORE_SEG);
|
||||||
LS void parse_topic(char *, char *) __page(CMD1_SEG);
|
LS void parse_topic(char *, char *) __page(CMD1_SEG);
|
||||||
@ -460,21 +534,6 @@ LS void whom_printbot(char *, BotInfo *, char *) __page(CMD1_SEG);
|
|||||||
/*
|
/*
|
||||||
* signals
|
* signals
|
||||||
*/
|
*/
|
||||||
LS int sig_hup_callback(char *) __page(RARE_SEG);
|
|
||||||
LS void do_sighup(void) __page(CMD1_SEG);
|
|
||||||
LS void do_sigint(void) __page(RARE_SEG);
|
|
||||||
LS void do_sigusr1(void) __page(CMD1_SEG);
|
|
||||||
LS void sig_alrm(int) __page(RARE_SEG);
|
|
||||||
LS void sig_child(int) __page(RARE_SEG);
|
|
||||||
LS void sig_bus(int) __page(CMD1_SEG);
|
|
||||||
LS void sig_hup(int) __page(RARE_SEG);
|
|
||||||
LS void sig_int(int) __page(RARE_SEG);
|
|
||||||
LS void sig_pipe(int) __page(CORE_SEG);
|
|
||||||
LS void sig_segv(int) __page(RARE_SEG);
|
|
||||||
LS void sig_term(int) __page(RARE_SEG);
|
|
||||||
LS void sig_usr1(int) __page(CMD1_SEG);
|
|
||||||
LS void sig_usr2(int) __page(DBUG_SEG); /* DEBUG */
|
|
||||||
LS void sig_suicide() __attr(RARE_SEG, __noreturn__);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BOTNET prototypes
|
* BOTNET prototypes
|
||||||
@ -778,12 +837,6 @@ LS void uptime_death(int) __page(RARE_SEG); /* rare */
|
|||||||
|
|
||||||
#endif /* UPTIME */
|
#endif /* UPTIME */
|
||||||
|
|
||||||
#ifdef URLCAPTURE
|
|
||||||
|
|
||||||
LS void urlcapture(const char *) __page(CORE_SEG);
|
|
||||||
LS void do_urlhist(COMMAND_ARGS) __page(CMD1_SEG);
|
|
||||||
|
|
||||||
#endif /* ifdef URLCAPTURE */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* WEB prototypes
|
* WEB prototypes
|
||||||
|
|||||||
@ -183,14 +183,13 @@ help_loop:
|
|||||||
* We dont want to show help for "../../../../../../etc/passwd"
|
* We dont want to show help for "../../../../../../etc/passwd"
|
||||||
*/
|
*/
|
||||||
if (is_safepath(line,FILE_MUST_EXIST) != FILE_IS_SAFE)
|
if (is_safepath(line,FILE_MUST_EXIST) != FILE_IS_SAFE)
|
||||||
#ifdef DEBUG
|
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
debug("(do_help) unsafe help filename (%s), exiting\n",line);
|
debug("(do_help) unsafe help filename (%s), exiting\n",line);
|
||||||
|
#endif /* DEBUG */
|
||||||
|
to_user(from,"Help file for \"%s\" is unavailable.",rest);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
return;
|
|
||||||
#endif /* DEBUG */
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
debug("(do_help) help file check: %s\n",line);
|
debug("(do_help) help file check: %s\n",line);
|
||||||
|
|||||||
70
src/main.c
70
src/main.c
@ -131,8 +131,10 @@ char *randstring(char *file)
|
|||||||
* SIGALRM Ignore ALRM signals
|
* SIGALRM Ignore ALRM signals
|
||||||
* SIGPIPE Ignore PIPE signals
|
* SIGPIPE Ignore PIPE signals
|
||||||
* SIGINT Exit gracefully on ^C
|
* SIGINT Exit gracefully on ^C
|
||||||
* SIGBUS (Try to) Exit gracefully on bus faults
|
* SIGILL Illegal instruction (debug: report) quit
|
||||||
* SIGSEGV (Try to) Exit gracefully on segmentation violations
|
* SIGABRT abort(3) (debug: report) quit
|
||||||
|
* SIGBUS (Try to) Exit/restart gracefully on bus faults
|
||||||
|
* SIGSEGV (Try to) Exit/restart gracefully on segmentation violations
|
||||||
* SIGTERM Exit gracefully when killed
|
* SIGTERM Exit gracefully when killed
|
||||||
* SIGUSR1 Jump (a) bot to a new server
|
* SIGUSR1 Jump (a) bot to a new server
|
||||||
* SIGUSR2 Call run_debug() (dump `everything' to a debug file)
|
* SIGUSR2 Call run_debug() (dump `everything' to a debug file)
|
||||||
@ -337,6 +339,26 @@ void sig_int(int signum)
|
|||||||
signal(SIGINT,sig_int);
|
signal(SIGINT,sig_int);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SIGILL, Illegal instruction
|
||||||
|
*/
|
||||||
|
#ifdef DEBUG
|
||||||
|
void sig_ill(int crap)
|
||||||
|
{
|
||||||
|
debug("(sigill)\n");
|
||||||
|
}
|
||||||
|
#endif /* DEBUG */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SIGABRT, abort(3)
|
||||||
|
*/
|
||||||
|
#ifdef DEBUG
|
||||||
|
void sig_abrt(int crap)
|
||||||
|
{
|
||||||
|
debug("(sigabrt)\n");
|
||||||
|
}
|
||||||
|
#endif /* DEBUG */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SIGBUS is a real killer and cant be scheduled.
|
* SIGBUS is a real killer and cant be scheduled.
|
||||||
*/
|
*/
|
||||||
@ -360,8 +382,16 @@ void sig_bus(int crap)
|
|||||||
/*
|
/*
|
||||||
* SIGSEGV shows no mercy, cant schedule it.
|
* SIGSEGV shows no mercy, cant schedule it.
|
||||||
*/
|
*/
|
||||||
void sig_segv(int crap)
|
#ifdef __x86_64__
|
||||||
|
#include <sys/ucontext.h>
|
||||||
|
#endif
|
||||||
|
void sig_segv(int crap, siginfo_t *si, void *uap)
|
||||||
{
|
{
|
||||||
|
#ifdef __x86_64__
|
||||||
|
mcontext_t *mctx;
|
||||||
|
greg_t *rsp,*rip; // general registers
|
||||||
|
#endif /* __x86_64__ */
|
||||||
|
|
||||||
time(&now);
|
time(&now);
|
||||||
|
|
||||||
respawn++;
|
respawn++;
|
||||||
@ -369,7 +399,17 @@ void sig_segv(int crap)
|
|||||||
mechexit(1,exit);
|
mechexit(1,exit);
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
debug("(sigsegv)\n");
|
debug("(sigsegv) trying to access "mx_pfmt"\n",(mx_ptr)si->si_addr);
|
||||||
|
#ifdef __x86_64__
|
||||||
|
mctx = &((ucontext_t *)uap)->uc_mcontext;
|
||||||
|
rsp = &mctx->gregs[15]; // RSP, 64-bit stack pointer
|
||||||
|
rip = &mctx->gregs[16]; // RIP, 64-bit instruction pointer
|
||||||
|
|
||||||
|
debug("(sigsegv) Stack pointer: "mx_pfmt", Instruction pointer: "mx_pfmt"\n",(mx_ptr)*rsp,(mx_ptr)*rip);
|
||||||
|
debug("(sigsegv) sig_segv() = "mx_pfmt"\n",(mx_ptr)sig_segv);
|
||||||
|
debug("(sigsegv) do_crash() = "mx_pfmt"\n",(mx_ptr)do_crash);
|
||||||
|
#endif /* __x86_64__ */
|
||||||
|
|
||||||
if (debug_on_exit)
|
if (debug_on_exit)
|
||||||
{
|
{
|
||||||
run_debug();
|
run_debug();
|
||||||
@ -859,15 +899,6 @@ execve( ./energymech, argv = { ./energymech <NULL> <NULL> <NULL> <NULL> }, envp
|
|||||||
versiononly = TRUE;
|
versiononly = TRUE;
|
||||||
break;
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
/*
|
|
||||||
#define TEXT_PSWITCH1 " -p <string> encrypt <string> using the password hashing algorithm,\n"
|
|
||||||
#define TEXT_PSWITCH2 " output the result and then quit.\n"
|
|
||||||
|
|
||||||
#define TEXT_DSWITCH " -d start mech in debug mode\n"
|
|
||||||
#define TEXT_OSWITCH " -o <file> write debug output to <file>\n"
|
|
||||||
#define TEXT_XSWITCH " -X write a debug file before exit\n"
|
|
||||||
*/
|
|
||||||
|
|
||||||
to_file(1,TEXT_USAGE,executable);
|
to_file(1,TEXT_USAGE,executable);
|
||||||
to_file(1,TEXT_FSWITCH
|
to_file(1,TEXT_FSWITCH
|
||||||
TEXT_CSWITCH
|
TEXT_CSWITCH
|
||||||
@ -1060,7 +1091,18 @@ execve( ./energymech, argv = { ./energymech <NULL> <NULL> <NULL> <NULL> }, envp
|
|||||||
* wait until after recover_reset() cuz it might change makecore
|
* wait until after recover_reset() cuz it might change makecore
|
||||||
*/
|
*/
|
||||||
if (!makecore)
|
if (!makecore)
|
||||||
signal(SIGSEGV,sig_segv);
|
{
|
||||||
|
struct sigaction s;
|
||||||
|
s.sa_flags = SA_SIGINFO;
|
||||||
|
sigemptyset(&s.sa_mask);
|
||||||
|
s.sa_sigaction = sig_segv;
|
||||||
|
sigaction(SIGSEGV, &s, NULL);
|
||||||
|
//signal(SIGSEGV,sig_segv);
|
||||||
|
#ifdef DEBUG
|
||||||
|
signal(SIGILL,sig_ill);
|
||||||
|
signal(SIGABRT,sig_abrt);
|
||||||
|
#endif /* DEBUG */
|
||||||
|
}
|
||||||
|
|
||||||
doit();
|
doit();
|
||||||
}
|
}
|
||||||
|
|||||||
49
src/net.c
49
src/net.c
@ -339,50 +339,59 @@ void basicAuth(BotNet *bn, char *rest)
|
|||||||
if (!pass || !*pass)
|
if (!pass || !*pass)
|
||||||
goto badpass;
|
goto badpass;
|
||||||
|
|
||||||
|
if (linkpass == NULL || *linkpass == 0)
|
||||||
|
goto badpass;
|
||||||
|
|
||||||
switch(authtype)
|
switch(authtype)
|
||||||
{
|
{
|
||||||
case BNAUTH_PLAINTEXT:
|
case BNAUTH_PLAINTEXT:
|
||||||
|
/*
|
||||||
|
>> plain text given: "DomoOmiGato" stored "kooplook0988"
|
||||||
|
(reset_linkable) guid 1337 reset to linkable
|
||||||
|
(basicAuth) bad password [ guid = 1337 ]
|
||||||
|
*/
|
||||||
|
#ifdef DEBUG
|
||||||
|
debug(">> plain text given: \"%s\" stored \"%s\"\n",pass,rest);
|
||||||
|
#endif /* DEBUG */
|
||||||
if (Strcmp(pass,rest))
|
if (Strcmp(pass,rest))
|
||||||
goto badpass;
|
goto badpass;
|
||||||
break;
|
break;
|
||||||
#ifdef SHACRYPT
|
#ifdef SHACRYPT
|
||||||
case BNAUTH_SHA:
|
case BNAUTH_SHA:
|
||||||
if (linkpass && *linkpass)
|
|
||||||
{
|
{
|
||||||
char *enc,temppass[24 + Strlen2(pass,linkpass)]; // linkpass is never NULL
|
char *enc,temppass[24 + Strlen2(pass,linkpass)]; // linkpass is never NULL
|
||||||
|
|
||||||
/* "mypass theirpass REMOTEsid LOCALsid" */
|
/* "mypass theirpass REMOTEsid LOCALsid" */
|
||||||
sprintf(temppass,"%s %s %i %i",linkpass,pass,bn->rsid,bn->lsid);
|
sprintf(temppass,"%s %s %i %i",linkpass,pass,bn->rsid,bn->lsid);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
debug(">> sha pass exchange: \"%s\"\n",temppass);
|
debug(">> sha pass exchange: \"%s\"\n",temppass);
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
enc = CRYPT_FUNC(temppass,rest);
|
enc = CRYPT_FUNC(temppass,rest);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
debug("(basicAuth) their = %s, mypass = %s :: sha = %s\n",
|
debug("(basicAuth) their = %s, mypass = %s :: sha = %s\n",
|
||||||
pass,linkpass,enc);
|
pass,linkpass,enc);
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
if (!Strcmp(enc,rest))
|
if (!Strcmp(enc,rest))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif /* SHACRYPT */
|
#endif /* SHACRYPT */
|
||||||
#ifdef MD5CRYPT
|
#ifdef MD5CRYPT
|
||||||
case BNAUTH_MD5:
|
case BNAUTH_MD5:
|
||||||
if (linkpass && *linkpass)
|
|
||||||
{
|
{
|
||||||
char *enc,temppass[24 + Strlen2(pass,linkpass)]; // linkpass is never NULL
|
char *enc,temppass[24 + Strlen2(pass,linkpass)]; // linkpass is never NULL
|
||||||
|
|
||||||
/* "mypass theirpass REMOTEsid LOCALsid" */
|
/* "mypass theirpass REMOTEsid LOCALsid" */
|
||||||
sprintf(temppass,"%s %s %i %i",linkpass,pass,bn->rsid,bn->lsid);
|
sprintf(temppass,"%s %s %i %i",linkpass,pass,bn->rsid,bn->lsid);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
debug(">> md5 pass exchange: \"%s\"\n",temppass);
|
debug(">> md5 pass exchange: \"%s\"\n",temppass);
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
enc = CRYPT_FUNC(temppass,rest);
|
enc = CRYPT_FUNC(temppass,rest);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
debug("(basicAuth) their = %s, mypass = %s :: md5 = %s\n",
|
debug("(basicAuth) their = %s, mypass = %s :: md5 = %s\n",
|
||||||
pass,linkpass,enc);
|
pass,linkpass,enc);
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
if (!Strcmp(enc,rest))
|
if (!Strcmp(enc,rest))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#endif /* MD5CRYPT */
|
#endif /* MD5CRYPT */
|
||||||
default:
|
default:
|
||||||
|
|||||||
11
src/socket.c
11
src/socket.c
@ -18,6 +18,7 @@
|
|||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
#ifndef GENCMD_C
|
||||||
#define SOCKET_C
|
#define SOCKET_C
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
@ -263,13 +264,15 @@ int SockAccept(int sock)
|
|||||||
return(s);
|
return(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* GENCMD_C */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Format text and send to a socket or file descriptor
|
* Format text and send to a socket or file descriptor
|
||||||
*/
|
*/
|
||||||
int to_file(int sock, const char *format, ...)
|
int to_file(int sock, const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list msg;
|
va_list msg;
|
||||||
#ifdef DEBUG
|
#if defined(DEBUG) && !defined(GENCMD_C)
|
||||||
char *line,*rest;
|
char *line,*rest;
|
||||||
int i;
|
int i;
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
@ -281,7 +284,7 @@ int to_file(int sock, const char *format, ...)
|
|||||||
vsprintf(gsockdata,format,msg);
|
vsprintf(gsockdata,format,msg);
|
||||||
va_end(msg);
|
va_end(msg);
|
||||||
|
|
||||||
#ifdef DEBUG
|
#if defined(DEBUG) && !defined(GENCMD_C)
|
||||||
i = write(sock,gsockdata,strlen(gsockdata));
|
i = write(sock,gsockdata,strlen(gsockdata));
|
||||||
rest = gsockdata;
|
rest = gsockdata;
|
||||||
while((line = get_token(&rest,"\n"))) /* rest cannot be NULL */
|
while((line = get_token(&rest,"\n"))) /* rest cannot be NULL */
|
||||||
@ -294,6 +297,8 @@ int to_file(int sock, const char *format, ...)
|
|||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef GENCMD_C
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Format a message and send it to the current bots server
|
* Format a message and send it to the current bots server
|
||||||
* to_server needs a newline (\n) it wont manufacture it itself.
|
* to_server needs a newline (\n) it wont manufacture it itself.
|
||||||
@ -672,3 +677,5 @@ int killsock(int sock)
|
|||||||
}
|
}
|
||||||
return(TRUE);
|
return(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* GENCMD_C */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user