mirror of
https://github.com/EnergyMech/energymech.git
synced 2025-12-17 15:36:50 +00:00
march 9-10
This commit is contained in:
parent
00da630c45
commit
98558eb093
11
Makefile
11
Makefile
@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# EnergyMech, IRC Bot software
|
# EnergyMech, IRC Bot software
|
||||||
# Copyright (c) 1997-2009 proton
|
# 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
|
||||||
@ -23,8 +23,8 @@ MISCFILES = COPYING CREDITS README README.TCL TODO VERSIONS VERSIONS-1 Makefile
|
|||||||
HELPFILES = help/8BALL help/ACCESS help/ALIAS help/AWAY help/BAN help/BANLIST help/BYE \
|
HELPFILES = help/8BALL help/ACCESS help/ALIAS help/AWAY help/BAN help/BANLIST help/BYE \
|
||||||
help/CCHAN help/CHACCESS help/CHANBAN help/CHANNELS help/CHAT help/CLEARSHIT \
|
help/CCHAN help/CHACCESS help/CHANBAN help/CHANNELS help/CHAT help/CLEARSHIT \
|
||||||
help/CMD help/CORE help/CSERV help/CTCP help/CYCLE help/DEOP help/DIE \
|
help/CMD help/CORE help/CSERV help/CTCP help/CYCLE help/DEOP help/DIE \
|
||||||
help/DNS help/DNSSERVER help/DO help/DOWN help/ECHO help/ESAY help/FORGET \
|
help/DNS help/DNSSERVER help/DO help/DOWN help/ECHO help/ESAY help/FEATURES \
|
||||||
help/GREET help/HELP help/IDLE help/INSULT help/INVITE help/JOIN help/KB \
|
help/FORGET help/GREET help/HELP help/IDLE help/INSULT help/INVITE help/JOIN help/KB \
|
||||||
help/KICK help/KS help/LAST help/LEVELS help/LINK help/LOAD help/LUSERS help/ME \
|
help/KICK help/KS help/LAST help/LEVELS help/LINK help/LOAD help/LUSERS help/ME \
|
||||||
help/MODE help/MSG help/NAMES help/NEXTSERVER help/NICK help/NOTIFY help/ONTIME \
|
help/MODE help/MSG help/NAMES help/NEXTSERVER help/NICK help/NOTIFY help/ONTIME \
|
||||||
help/OP help/PART help/PASSWD help/PROTECTION help/PYTHON help/PYTHONSCRIPT \
|
help/OP help/PART help/PASSWD help/PROTECTION help/PYTHON help/PYTHONSCRIPT \
|
||||||
@ -87,6 +87,11 @@ clean: FORCE
|
|||||||
install: FORCE
|
install: FORCE
|
||||||
$(MAKE) -C src install
|
$(MAKE) -C src install
|
||||||
|
|
||||||
|
mega: FORCE
|
||||||
|
$(MAKE) -C src mega
|
||||||
|
|
||||||
|
mega-install: FORCE
|
||||||
|
$(MAKE) -C src mega-install
|
||||||
#
|
#
|
||||||
# packing things up for distribution
|
# packing things up for distribution
|
||||||
#
|
#
|
||||||
|
|||||||
17
README
17
README
@ -48,15 +48,15 @@ Setup?
|
|||||||
|
|
||||||
Read the sample.conf file to get an idea of the config file
|
Read the sample.conf file to get an idea of the config file
|
||||||
commands and then try to make your own. A basic setup doesnt need
|
commands and then try to make your own. A basic setup doesnt need
|
||||||
much more than NICK, ALTNICK, SET USERFILE, JOIN and SERVER
|
much more than NICK, SET ALTNICK, SET USERFILE, JOIN and SERVER
|
||||||
entries, the rest is just tweaks of default values.
|
entries, the rest is mostly just tweaks of default values.
|
||||||
|
|
||||||
Quick steps:
|
Quick steps:
|
||||||
|
|
||||||
1) cp sample.conf mech.conf
|
1) cp sample.conf mech.conf
|
||||||
|
|
||||||
2) pico mech.conf
|
2) edit mech.conf
|
||||||
-- replace ''pico'' with your favourite text editor, look through
|
-- replace ''edit'' with your favourite text editor, look through
|
||||||
the file for sections to change, you will have to remove lines
|
the file for sections to change, you will have to remove lines
|
||||||
in order to get the bot to work. Check the file completely!
|
in order to get the bot to work. Check the file completely!
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ Quick steps:
|
|||||||
|
|
||||||
then 'run' this file with './energymech -f trick.conf'. this
|
then 'run' this file with './energymech -f trick.conf'. this
|
||||||
will create a userfile with the name you chose ('mech.passwd'
|
will create a userfile with the name you chose ('mech.passwd'
|
||||||
is a good descriptive name which I usually use myself).
|
is a good descriptive name which I often use myself).
|
||||||
|
|
||||||
re-use the filename you selected in your proper configuration
|
re-use the filename you selected in your proper configuration
|
||||||
file. and remember to 'rm -f mech.session' if you compiled your
|
file. and remember to 'rm -f mech.session' if you compiled your
|
||||||
@ -95,6 +95,10 @@ Updated Files?
|
|||||||
~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~
|
||||||
The main distro-site for the EnergyMech is:
|
The main distro-site for the EnergyMech is:
|
||||||
|
|
||||||
|
https://github.com/MadCamel/energymech
|
||||||
|
|
||||||
|
Files, documentation and tips can be found at:
|
||||||
|
|
||||||
http://www.energymech.net
|
http://www.energymech.net
|
||||||
|
|
||||||
---*---
|
---*---
|
||||||
@ -131,5 +135,4 @@ IT COMES TO CONFIGURING AND USING IT.
|
|||||||
|
|
||||||
---*---
|
---*---
|
||||||
|
|
||||||
proton, July 24th, 2009.
|
joonicks, March 10th, 2018.
|
||||||
<mailto:proton@energymech.net>
|
|
||||||
|
|||||||
2
VERSIONS
2
VERSIONS
@ -1,5 +1,7 @@
|
|||||||
3.0.99p4 -- WORK IN PROGRESS (~March, 2018)
|
3.0.99p4 -- WORK IN PROGRESS (~March, 2018)
|
||||||
|
|
||||||
|
* Fixed: RawDNS, again...
|
||||||
|
* Fixed: Save procvars only once in session file.
|
||||||
* Added: Support for SHA password hashes.
|
* Added: Support for SHA password hashes.
|
||||||
* Added: ESAY $cap will display compile time capabilities.
|
* Added: ESAY $cap will display compile time capabilities.
|
||||||
* Fixed: Potential memory corruption bug in do_user().
|
* Fixed: Potential memory corruption bug in do_user().
|
||||||
|
|||||||
12
config/endian.c
Normal file
12
config/endian.c
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
char x[4];
|
||||||
|
*((int*)&x) = 1;
|
||||||
|
printf("%i\n",x[0]);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
36
configure
vendored
36
configure
vendored
@ -584,6 +584,40 @@ esac
|
|||||||
|
|
||||||
rm -f $TESTP
|
rm -f $TESTP
|
||||||
|
|
||||||
|
#
|
||||||
|
# big/little endian
|
||||||
|
#
|
||||||
|
|
||||||
|
TESTC=config/endian.c
|
||||||
|
|
||||||
|
if [ -z "$endian" ]; then
|
||||||
|
endian=unknown
|
||||||
|
echo $ac_n "checking endianness ... "$ac_c
|
||||||
|
$CC -o $TESTP $TESTC 1> /dev/null 2> /dev/null
|
||||||
|
if [ -x $TESTP ]; then
|
||||||
|
endian=`$TESTP`
|
||||||
|
if [ "$endian" == "1" ]; then
|
||||||
|
endian="little"
|
||||||
|
else
|
||||||
|
endian="big"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo $ac_t "$endian endian"
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$endian" in
|
||||||
|
little )
|
||||||
|
LIT_END="#define LITTLE_ENDIAN"
|
||||||
|
BIG_END="#undef BIG_ENDIAN"
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
LIT_END="#undef LITTLE_ENDIAN"
|
||||||
|
BIG_END="#define BIG_ENDIAN"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
rm -f $TESTP
|
||||||
|
|
||||||
#
|
#
|
||||||
# Some processors like Sparc, will cause a bus error (SIGBUS) if you try to access unaligned memory
|
# Some processors like Sparc, will cause a bus error (SIGBUS) if you try to access unaligned memory
|
||||||
#
|
#
|
||||||
@ -1219,6 +1253,8 @@ s|@DEF_REDIRECT@|$def_redirect|;
|
|||||||
s|@DEF_WEB@|$def_web|;
|
s|@DEF_WEB@|$def_web|;
|
||||||
s|@DEF_WINGATE@|$def_wingate|;
|
s|@DEF_WINGATE@|$def_wingate|;
|
||||||
|
|
||||||
|
s|@LIT_END@|$LIT_END|;
|
||||||
|
s|@BIG_END@|$BIG_END|;
|
||||||
s|@DEF_CRYPT_FUNCTION@|$CRYPT_FUNCTION|;
|
s|@DEF_CRYPT_FUNCTION@|$CRYPT_FUNCTION|;
|
||||||
s|@CRYPT_HAS_SHA@|$CRYPT_HAS_SHA|;
|
s|@CRYPT_HAS_SHA@|$CRYPT_HAS_SHA|;
|
||||||
s|@CRYPT_HAS_MD5@|$CRYPT_HAS_MD5|;
|
s|@CRYPT_HAS_MD5@|$CRYPT_HAS_MD5|;
|
||||||
|
|||||||
16
help/CORE
16
help/CORE
@ -1,4 +1,18 @@
|
|||||||
|
|
||||||
Shows core information about the bot.
|
Shows core information about the bot.
|
||||||
|
|
||||||
See also: ver, uptime, ontime
|
Current nick Nick of the bot you are connected to and its Guid.
|
||||||
|
Users in userlist Total number of userlist entries, as well as users with
|
||||||
|
userlevel access (0-100) and bot level access (200).
|
||||||
|
Active channels Channels that the bot is active on, as well as channels
|
||||||
|
that the bot is trying to rejoin.
|
||||||
|
Current server Which server the bot is connected to.
|
||||||
|
Server ontime How long the bot has been connected to the current server.
|
||||||
|
Mode User modes of the bot, like +i for invisible, etc.
|
||||||
|
Current time Time as reported by the machine that the bot is running on.
|
||||||
|
Started Time when the bot was first started.
|
||||||
|
Uptime How long (in days, hours, minutes and seconds) the bot has been running.
|
||||||
|
Version Source code version of the bot.
|
||||||
|
Features List of which features were compiled into the bot.
|
||||||
|
|
||||||
|
See also: ver, uptime, ontime, features
|
||||||
|
|||||||
9
help/FEATURES
Normal file
9
help/FEATURES
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
The Energymech contains a list of which features were included
|
||||||
|
when the source was compiled.
|
||||||
|
|
||||||
|
You can view this list at the command prompt in your shell with
|
||||||
|
./(name of executable) -v
|
||||||
|
|
||||||
|
Or, once the bot is started, with the command CORE or ESAY $cap
|
||||||
|
|
||||||
|
See also: core, esay
|
||||||
@ -4,3 +4,6 @@ Number of MODE operations that can be sent to the IRC server
|
|||||||
in a single line. This value can be auto-detected on server
|
in a single line. This value can be auto-detected on server
|
||||||
connect if the bot is compiled with support for 005 replies
|
connect if the bot is compiled with support for 005 replies
|
||||||
and the server sends them (most big networks today).
|
and the server sends them (most big networks today).
|
||||||
|
|
||||||
|
To support auto-detect of server capabilities, the energymech
|
||||||
|
needs to be compiled with the ircd-extensions feature enabled.
|
||||||
|
|||||||
2
help/SPY
2
help/SPY
@ -17,6 +17,6 @@ excess flood if not careful.
|
|||||||
(none) Send output to you (default).
|
(none) Send output to you (default).
|
||||||
channel Send output to the specified channel.
|
channel Send output to the specified channel.
|
||||||
>file Send output to file. Lines are appended to the end of the file.
|
>file Send output to file. Lines are appended to the end of the file.
|
||||||
If the file does not exist, it is created.
|
This file needs to exist before logging to it.
|
||||||
|
|
||||||
See also: rspy
|
See also: rspy
|
||||||
|
|||||||
@ -22,6 +22,11 @@ Only one channel or one mask can be modified with each USER command.
|
|||||||
|
|
||||||
Prefix flags with a "-" to disable them or a "+" to enable them.
|
Prefix flags with a "-" to disable them or a "+" to enable them.
|
||||||
|
|
||||||
|
Bots can be added to the userlist to be recognized by other bots.
|
||||||
|
Use the special access level 200. No password is set for bots and is
|
||||||
|
not needed because level 200 users can not execute any commands.
|
||||||
|
They can not access bots by telnet either.
|
||||||
|
|
||||||
User flags:
|
User flags:
|
||||||
AO auto-op on/off
|
AO auto-op on/off
|
||||||
AV auto-voice on/off
|
AV auto-voice on/off
|
||||||
|
|||||||
1
public/README
Normal file
1
public/README
Normal file
@ -0,0 +1 @@
|
|||||||
|
Store files here that you want to access with the SEND command.
|
||||||
@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# EnergyMech, IRC bot software
|
# EnergyMech, IRC bot software
|
||||||
# Copyright (c) 1997-2009 proton
|
# 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
|
||||||
@ -47,7 +47,7 @@ OFILES = alias.o auth.o bounce.o chanban.o channel.o core.o \
|
|||||||
kicksay.o main.o net.o net_chan.o note.o notify.o ons.o parse.o \
|
kicksay.o main.o net.o net_chan.o note.o notify.o ons.o parse.o \
|
||||||
perl.o prot.o python.o redirect.o reset.o seen.o shit.o socket.o \
|
perl.o prot.o python.o redirect.o reset.o seen.o shit.o socket.o \
|
||||||
spy.o stats.o tcl.o telnet.o toybox.o trivia.o uptime.o \
|
spy.o stats.o tcl.o telnet.o toybox.o trivia.o uptime.o \
|
||||||
user.o vars.o web.o @MD5_O@
|
user.o vars.o web.o @MD5_O@ @SHA_O@
|
||||||
|
|
||||||
SRCFILES = alias.c auth.c bounce.c chanban.c channel.c core.c \
|
SRCFILES = alias.c auth.c bounce.c chanban.c channel.c core.c \
|
||||||
ctcp.c debug.c dns.c dynamode.c function.c greet.c help.c irc.c \
|
ctcp.c debug.c dns.c dynamode.c function.c greet.c help.c irc.c \
|
||||||
@ -58,7 +58,12 @@ SRCFILES = alias.c auth.c bounce.c chanban.c channel.c core.c \
|
|||||||
|
|
||||||
all: $(INSTALLNAME)
|
all: $(INSTALLNAME)
|
||||||
|
|
||||||
mcmd.h: gencmd.c config.h structs.h ;
|
#
|
||||||
|
# mcmd.h is generated at compile time to wrap up all command attributes more efficiently,
|
||||||
|
# instead of doing extra parsing and handling while the bot is running.
|
||||||
|
#
|
||||||
|
|
||||||
|
mcmd.h: gencmd.c config.h structs.h
|
||||||
$(CC) $(LFLAGS) -o gencmd gencmd.c
|
$(CC) $(LFLAGS) -o gencmd gencmd.c
|
||||||
./gencmd > mcmd.h
|
./gencmd > mcmd.h
|
||||||
|
|
||||||
@ -74,17 +79,24 @@ $(INSTALLNAME): $(OFILES)
|
|||||||
@oc@ $(CROSS_COMPILE)objcopy -R .note -R .comment $(INSTALLNAME)
|
@oc@ $(CROSS_COMPILE)objcopy -R .note -R .comment $(INSTALLNAME)
|
||||||
@sz@ size $(INSTALLNAME)
|
@sz@ size $(INSTALLNAME)
|
||||||
|
|
||||||
mega: $(SRCFILES) $(INCS) usage.h
|
$(INSTALLNAME)-static: $(OFILES)
|
||||||
$(CROSS_COMPILE)$(CC) $(CFLAGS) -o $(INSTALLNAME) mega.c $(LPROF) $(LIBS) $(LDSCRIPT) $(PYINCLUDE) $(TCLINCLUDE)
|
$(CROSS_COMPILE)$(CC) $(LFLAGS) -o $(INSTALLNAME) $(OFILES) $(LPROF) $(LIBS) $(LDSCRIPT) -static
|
||||||
@oc@ $(CROSS_COMPILE)objcopy -R .note -R .comment $(INSTALLNAME)
|
@oc@ $(CROSS_COMPILE)objcopy -R .note -R .comment $(INSTALLNAME)
|
||||||
@sz@ size $(INSTALLNAME)
|
@sz@ size $(INSTALLNAME)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# static targets
|
# 'mega' versions
|
||||||
|
# compiling the C files all at once (having all the code "visible" during the whole process) enables GCC to make more optimizations,
|
||||||
|
# resulting in a smaller, more efficient, binary. this process uses lots more memory at compile time.
|
||||||
#
|
#
|
||||||
|
|
||||||
$(INSTALLNAME)-static: $(OFILES)
|
mega-install: mega $(SRCFILES) $(INCS) usage.h
|
||||||
$(CROSS_COMPILE)$(CC) $(LFLAGS) -o $(INSTALLNAME) $(OFILES) $(LPROF) $(LIBS) $(LDSCRIPT) -static
|
$(CHMOD) $(INSTALLMODE) $(INSTALLNAME)
|
||||||
|
$(MV) $(INSTALLNAME) $(INSTALLDIR)
|
||||||
|
|
||||||
|
mega: $(SRCFILES) $(INCS) usage.h
|
||||||
|
$(CROSS_COMPILE)$(CC) $(CFLAGS) -o $(INSTALLNAME) mega.c $(LPROF) $(LIBS) $(LDSCRIPT) $(PYINCLUDE) $(TCLINCLUDE)
|
||||||
@oc@ $(CROSS_COMPILE)objcopy -R .note -R .comment $(INSTALLNAME)
|
@oc@ $(CROSS_COMPILE)objcopy -R .note -R .comment $(INSTALLNAME)
|
||||||
@sz@ size $(INSTALLNAME)
|
@sz@ size $(INSTALLNAME)
|
||||||
|
|
||||||
@ -220,4 +232,7 @@ web.o: web.c $(INCS)
|
|||||||
md5/md5.o: md5/md5.c $(INCS)
|
md5/md5.o: md5/md5.c $(INCS)
|
||||||
$(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< -o $@ -Imd5 $(CPROF)
|
$(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< -o $@ -Imd5 $(CPROF)
|
||||||
|
|
||||||
|
sha/sha1.o: sha/sha1.c $(INCS)
|
||||||
|
$(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< -o $@ -Isha1 $(CPROF)
|
||||||
|
|
||||||
FORCE:
|
FORCE:
|
||||||
|
|||||||
@ -378,6 +378,15 @@
|
|||||||
*/
|
*/
|
||||||
#define RANDOM(min,max) (min + (rand() / (RAND_MAX / (max - min + 1))))
|
#define RANDOM(min,max) (min + (rand() / (RAND_MAX / (max - min + 1))))
|
||||||
|
|
||||||
|
/* endianness */
|
||||||
|
#ifndef LITTLE_ENDIAN
|
||||||
|
@LIT_END@
|
||||||
|
#endif /* LITTLE_ENDIAN */
|
||||||
|
|
||||||
|
#ifndef BIG_ENDIAN
|
||||||
|
@BIG_END@
|
||||||
|
#endif /* BIG_ENDIAN */
|
||||||
|
|
||||||
/* unaligned memory access */
|
/* unaligned memory access */
|
||||||
@UNALIGNED_MEM@
|
@UNALIGNED_MEM@
|
||||||
|
|
||||||
|
|||||||
14
src/core.c
14
src/core.c
@ -244,9 +244,9 @@ int write_session(void)
|
|||||||
*/
|
*/
|
||||||
for(j=0;VarName[j].name;j++)
|
for(j=0;VarName[j].name;j++)
|
||||||
{
|
{
|
||||||
varval = &bot->setting[j];
|
|
||||||
if (IsProc(j))
|
if (IsProc(j))
|
||||||
varval = varval->proc_var;
|
continue;
|
||||||
|
varval = &bot->setting[j];
|
||||||
if (IsChar(j))
|
if (IsChar(j))
|
||||||
{
|
{
|
||||||
if (VarName[j].v.num != varval->char_var)
|
if (VarName[j].v.num != varval->char_var)
|
||||||
@ -1208,8 +1208,10 @@ void do_core(COMMAND_ARGS)
|
|||||||
}
|
}
|
||||||
|
|
||||||
i = Strcmp(current->nick,current->wantnick);
|
i = Strcmp(current->nick,current->wantnick);
|
||||||
table_buffer((i) ? TEXT_CURRNICKWANT : TEXT_CURRNICKHAS,current->nick,current->wantnick);
|
if (i)
|
||||||
table_buffer(TEXT_CURRGUID,current->guid);
|
table_buffer(TEXT_CURRNICKWANT,current->nick,current->wantnick,current->guid);
|
||||||
|
else
|
||||||
|
table_buffer(TEXT_CURRNICKHAS,current->nick,current->guid);
|
||||||
table_buffer(TEXT_USERLISTSTATS,u,su,EXTRA_CHAR(su),bu,EXTRA_CHAR(bu));
|
table_buffer(TEXT_USERLISTSTATS,u,su,EXTRA_CHAR(su),bu,EXTRA_CHAR(bu));
|
||||||
|
|
||||||
pt = tmp;
|
pt = tmp;
|
||||||
@ -1382,12 +1384,12 @@ void do_server(COMMAND_ARGS)
|
|||||||
ServerGroup *sg;
|
ServerGroup *sg;
|
||||||
Server *sp,*dp,**spp;
|
Server *sp,*dp,**spp;
|
||||||
char *server,*aport,*pass;
|
char *server,*aport,*pass;
|
||||||
char addc,*last,*quitmsg = "Trying new server, brb...";
|
char addc,*last,*quitmsg = TEXT_TRYNEWSERVER;
|
||||||
int n,iport,sgi;
|
int n,iport,sgi;
|
||||||
|
|
||||||
if (CurrentCmd->name == C_NEXTSERVER)
|
if (CurrentCmd->name == C_NEXTSERVER)
|
||||||
{
|
{
|
||||||
quitmsg = "Switching servers...";
|
quitmsg = TEXT_SWITCHSERVER;
|
||||||
to_user(from,FMT_PLAIN,quitmsg);
|
to_user(from,FMT_PLAIN,quitmsg);
|
||||||
goto do_server_jump;
|
goto do_server_jump;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -303,6 +303,7 @@ enum {
|
|||||||
#define BNAUTH_PLAINTEXT 0
|
#define BNAUTH_PLAINTEXT 0
|
||||||
#define BNAUTH_DES 1
|
#define BNAUTH_DES 1
|
||||||
#define BNAUTH_MD5 2
|
#define BNAUTH_MD5 2
|
||||||
|
#define BNAUTH_SHA 3
|
||||||
|
|
||||||
#endif /* BOTNET */
|
#endif /* BOTNET */
|
||||||
|
|
||||||
|
|||||||
37
src/dns.c
37
src/dns.c
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
EnergyMech, IRC bot software
|
EnergyMech, IRC bot software
|
||||||
Copyright (c) 1997-2009 proton
|
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
|
||||||
@ -64,25 +64,7 @@ LS int dnsserver = 0;
|
|||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
char *type_textlist[] =
|
char *type_textlist[] =
|
||||||
{
|
{ NULL, "A", "NS", "MD", "MF", "CNAME", "SOA", "MB", "MG", "MR", "NULL", "WKS", "PTR", "HINFO", "MINFO", "MX", "TXT", };
|
||||||
NULL,
|
|
||||||
"A",
|
|
||||||
"NS",
|
|
||||||
"MD",
|
|
||||||
"MF",
|
|
||||||
"CNAME",
|
|
||||||
"SOA",
|
|
||||||
"MB",
|
|
||||||
"MG",
|
|
||||||
"MR",
|
|
||||||
"NULL",
|
|
||||||
"WKS",
|
|
||||||
"PTR",
|
|
||||||
"HINFO",
|
|
||||||
"MINFO",
|
|
||||||
"MX",
|
|
||||||
"TXT",
|
|
||||||
};
|
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
|
|
||||||
void init_rawdns(void)
|
void init_rawdns(void)
|
||||||
@ -164,17 +146,17 @@ const char *get_dns_token(const char *src, const char *packet, char *dst, int sz
|
|||||||
|
|
||||||
int make_query(char *packet, const char *hostname)
|
int make_query(char *packet, const char *hostname)
|
||||||
{
|
{
|
||||||
|
dnsQuery *h;
|
||||||
char *size,*dst;
|
char *size,*dst;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* make a packet
|
* make a packet
|
||||||
*/
|
*/
|
||||||
packet[0] = rand() >> 24;
|
memset(packet,0,12);
|
||||||
packet[1] = rand() >> 24;
|
h = (dnsQuery*)packet;
|
||||||
packet[2] = 1; // RD, recursion desired flag
|
h->qid = rand() & 0xffff;
|
||||||
packet[3] = 0;
|
h->flags = htons(0x0100);; // Query = 0, Recursion Desired = 1
|
||||||
((ulong*)packet)[1] = htonl(0x10000);
|
h->questions = htons(1);
|
||||||
((ulong*)packet)[2] = 0;
|
|
||||||
size = packet + 12;
|
size = packet + 12;
|
||||||
dst = size + 1;
|
dst = size + 1;
|
||||||
while(*hostname)
|
while(*hostname)
|
||||||
@ -932,6 +914,9 @@ flipstep:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (to && *to == '#')
|
||||||
|
make_ireq(PA_DNS,to,host);
|
||||||
|
else
|
||||||
make_ireq(PA_DNS,from,host);
|
make_ireq(PA_DNS,from,host);
|
||||||
rawdns(host);
|
rawdns(host);
|
||||||
}
|
}
|
||||||
|
|||||||
71
src/net.c
71
src/net.c
@ -30,12 +30,18 @@
|
|||||||
#include "text.h"
|
#include "text.h"
|
||||||
#include "mcmd.h"
|
#include "mcmd.h"
|
||||||
|
|
||||||
#ifdef MD5CRYPT
|
#if defined(SHACRYPT) || defined(MD5CRYPT)
|
||||||
#define md5banneropt " MD5"
|
|
||||||
char *CRYPT_FUNC(const char *, const char *);
|
char *CRYPT_FUNC(const char *, const char *);
|
||||||
#else
|
#endif
|
||||||
#define md5banneropt
|
|
||||||
|
const char banneropt[] = "BB%i %i PTA"
|
||||||
|
#ifdef SHACRYPT
|
||||||
|
" SHA"
|
||||||
|
#endif /* SHACRYPT */
|
||||||
|
#ifdef MD5CRYPT
|
||||||
|
" MD5"
|
||||||
#endif /* MD5CRYPT */
|
#endif /* MD5CRYPT */
|
||||||
|
"\n";
|
||||||
|
|
||||||
#ifdef TELNET
|
#ifdef TELNET
|
||||||
char *telnetprompt = TEXT_ENTERNICKNAME;
|
char *telnetprompt = TEXT_ENTERNICKNAME;
|
||||||
@ -307,6 +313,10 @@ void basicAuth(BotNet *bn, char *rest)
|
|||||||
{
|
{
|
||||||
if (!Strcmp(pass,"PTA"))
|
if (!Strcmp(pass,"PTA"))
|
||||||
authtype = BNAUTH_PLAINTEXT;
|
authtype = BNAUTH_PLAINTEXT;
|
||||||
|
#ifdef SHACRYPT
|
||||||
|
if (!Strcmp(pass,"SHA"))
|
||||||
|
authtype = BNAUTH_SHA;
|
||||||
|
#endif /* SHACRYPT */
|
||||||
#ifdef MD5CRYPT
|
#ifdef MD5CRYPT
|
||||||
if (!Strcmp(pass,"MD5"))
|
if (!Strcmp(pass,"MD5"))
|
||||||
authtype = BNAUTH_MD5;
|
authtype = BNAUTH_MD5;
|
||||||
@ -334,6 +344,26 @@ void basicAuth(BotNet *bn, char *rest)
|
|||||||
if (Strcmp(pass,rest))
|
if (Strcmp(pass,rest))
|
||||||
goto badpass;
|
goto badpass;
|
||||||
break;
|
break;
|
||||||
|
#ifdef SHACRYPT
|
||||||
|
case BNAUTH_SHA:
|
||||||
|
if (linkpass && *linkpass)
|
||||||
|
{
|
||||||
|
char *enc,temppass[24 + Strlen2(pass,linkpass)]; // linkpass is never NULL
|
||||||
|
|
||||||
|
/* "mypass theirpass REMOTEsid LOCALsid" */
|
||||||
|
sprintf(temppass,"%s %s %i %i",linkpass,pass,bn->rsid,bn->lsid);
|
||||||
|
#ifdef DEBUG
|
||||||
|
debug(">> sha pass exchange: \"%s\"\n",temppass);
|
||||||
|
#endif /* DEBUG */
|
||||||
|
enc = CRYPT_FUNC(temppass,rest);
|
||||||
|
#ifdef DEBUG
|
||||||
|
debug("(basicAuth) their = %s, mypass = %s :: sha = %s\n",
|
||||||
|
pass,linkpass,enc);
|
||||||
|
#endif /* DEBUG */
|
||||||
|
if (!Strcmp(enc,rest))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif /* SHACRYPT */
|
||||||
#ifdef MD5CRYPT
|
#ifdef MD5CRYPT
|
||||||
case BNAUTH_MD5:
|
case BNAUTH_MD5:
|
||||||
if (linkpass && *linkpass)
|
if (linkpass && *linkpass)
|
||||||
@ -492,6 +522,10 @@ void basicBanner(BotNet *bn, char *rest)
|
|||||||
{
|
{
|
||||||
if (!Strcmp(p,"PTA"))
|
if (!Strcmp(p,"PTA"))
|
||||||
bn->opt.pta = TRUE;
|
bn->opt.pta = TRUE;
|
||||||
|
#ifdef SHACRYPT
|
||||||
|
if (!Strcmp(p,"SHA"))
|
||||||
|
bn->opt.sha = TRUE;
|
||||||
|
#endif /* SHACRYPT */
|
||||||
#ifdef MD5CRYPT
|
#ifdef MD5CRYPT
|
||||||
if (!Strcmp(p,"MD5"))
|
if (!Strcmp(p,"MD5"))
|
||||||
bn->opt.md5 = TRUE;
|
bn->opt.md5 = TRUE;
|
||||||
@ -510,7 +544,7 @@ void basicBanner(BotNet *bn, char *rest)
|
|||||||
if (bn->status == BN_UNKNOWN)
|
if (bn->status == BN_UNKNOWN)
|
||||||
{
|
{
|
||||||
bn->controller = netbot = get_netbot();
|
bn->controller = netbot = get_netbot();
|
||||||
to_file(bn->sock,"BB%i %i PTA" md5banneropt "\n",netbot->guid,bn->lsid);
|
to_file(bn->sock,banneropt,netbot->guid,bn->lsid);
|
||||||
bn->status = BN_WAITAUTH;
|
bn->status = BN_WAITAUTH;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -533,12 +567,37 @@ void basicBanner(BotNet *bn, char *rest)
|
|||||||
if (bn->opt.md5 && (BNAUTH_MD5 > authtype))
|
if (bn->opt.md5 && (BNAUTH_MD5 > authtype))
|
||||||
authtype = BNAUTH_MD5;
|
authtype = BNAUTH_MD5;
|
||||||
#endif /* MD5CRYPT */
|
#endif /* MD5CRYPT */
|
||||||
|
#ifdef SHACRYPT
|
||||||
|
if (bn->opt.sha && (BNAUTH_SHA > authtype))
|
||||||
|
authtype = BNAUTH_SHA;
|
||||||
|
#endif /* SHACRYPT */
|
||||||
|
|
||||||
switch(authtype)
|
switch(authtype)
|
||||||
{
|
{
|
||||||
case BNAUTH_PLAINTEXT:
|
case BNAUTH_PLAINTEXT:
|
||||||
to_file(bn->sock,"BAPTA %s\n",linkpass);
|
to_file(bn->sock,"BAPTA %s\n",linkpass);
|
||||||
break;
|
break;
|
||||||
|
#ifdef SHACRYPT
|
||||||
|
case BNAUTH_SHA:
|
||||||
|
if ((cfg = find_netcfg(guid)))
|
||||||
|
{
|
||||||
|
if (cfg->pass && *cfg->pass)
|
||||||
|
{
|
||||||
|
char *enc,salt[8];
|
||||||
|
char temppass[24 + Strlen2(cfg->pass,linkpass)]; // linkpass(procvar) is not NULL
|
||||||
|
|
||||||
|
/* "theirpass mypass LOCALsid REMOTEsid" */
|
||||||
|
sprintf(temppass,"%s %s %i %i",cfg->pass,linkpass,bn->lsid,bn->rsid);
|
||||||
|
#ifdef DEBUG
|
||||||
|
debug(">> sha pass exchange: \"%s\"\n",temppass);
|
||||||
|
#endif /* DEBUG */
|
||||||
|
sprintf(salt,"$6$%04x",(rand() >> 16));
|
||||||
|
enc = CRYPT_FUNC(temppass,salt);
|
||||||
|
to_file(bn->sock,"BASHA %s\n",enc);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* SHACRYPT */
|
||||||
#ifdef MD5CRYPT
|
#ifdef MD5CRYPT
|
||||||
case BNAUTH_MD5:
|
case BNAUTH_MD5:
|
||||||
if ((cfg = find_netcfg(guid)))
|
if ((cfg = find_netcfg(guid)))
|
||||||
@ -1320,7 +1379,7 @@ void process_botnet(void)
|
|||||||
{
|
{
|
||||||
bn->lsid = rand();
|
bn->lsid = rand();
|
||||||
bn->controller = netbot = get_netbot();
|
bn->controller = netbot = get_netbot();
|
||||||
if (to_file(bn->sock,"BB%i %i PTA" md5banneropt "\n",netbot->guid,bn->lsid) < 0)
|
if (to_file(bn->sock,banneropt,netbot->guid,bn->lsid) < 0)
|
||||||
{
|
{
|
||||||
botnet_deaduplink(bn);
|
botnet_deaduplink(bn);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -471,7 +471,15 @@ rspy_usage:
|
|||||||
* Dont just open anything.
|
* Dont just open anything.
|
||||||
*/
|
*/
|
||||||
if (!is_safepath(dest))
|
if (!is_safepath(dest))
|
||||||
|
#ifdef NEWBIE
|
||||||
|
{
|
||||||
|
usage(from);
|
||||||
|
to_user(from,"File/path does not exist or is inaccessible");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#else
|
||||||
goto rspy_usage;
|
goto rspy_usage;
|
||||||
|
#endif /* NEWBIE */
|
||||||
t_dest = SPY_FILE;
|
t_dest = SPY_FILE;
|
||||||
goto rspy_dest_ok;
|
goto rspy_dest_ok;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -668,8 +668,9 @@ typedef struct BotNet
|
|||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
ulong pta:1; /* plain text auth */
|
ulong pta:1, /* plain text auth */
|
||||||
ulong md5:1; /* md5 */
|
sha:1, /* SHA */
|
||||||
|
md5:1; /* MD5 */
|
||||||
|
|
||||||
} opt;
|
} opt;
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
|
|
||||||
EnergyMech, IRC bot software
|
EnergyMech, IRC bot software
|
||||||
Copyright (c) 2000-2009 proton
|
Copyright (c) 2000-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
|
||||||
@ -74,9 +74,8 @@
|
|||||||
#define TEXT_SERVERDELETED "Server has been deleted: %s:%i"
|
#define TEXT_SERVERDELETED "Server has been deleted: %s:%i"
|
||||||
#define TEXT_MANYSERVMATCH "Several entries for %s exists, please specify port also"
|
#define TEXT_MANYSERVMATCH "Several entries for %s exists, please specify port also"
|
||||||
/* do_core() */
|
/* do_core() */
|
||||||
#define TEXT_CURRNICKWANT "Current nick\t%s (Wanted: %s)"
|
#define TEXT_CURRNICKWANT "Current nick\t%s (Wanted: %s) [#%i]"
|
||||||
#define TEXT_CURRNICKHAS "Current nick\t%s"
|
#define TEXT_CURRNICKHAS "Current nick\t%s [#%i]"
|
||||||
#define TEXT_CURRGUID "Guid\t%i"
|
|
||||||
#define TEXT_USERLISTSTATS "Users in userlist\t%i (%i Superuser%s, %i Bot%s)"
|
#define TEXT_USERLISTSTATS "Users in userlist\t%i (%i Superuser%s, %i Bot%s)"
|
||||||
#define TEXT_ACTIVECHANS "Active channels\t%s"
|
#define TEXT_ACTIVECHANS "Active channels\t%s"
|
||||||
#define TEXT_MOREACTIVECHANS "\t%s"
|
#define TEXT_MOREACTIVECHANS "\t%s"
|
||||||
@ -87,6 +86,8 @@
|
|||||||
|
|
||||||
#define TEXT_CURRSERVER "Current Server\t%s:%i"
|
#define TEXT_CURRSERVER "Current Server\t%s:%i"
|
||||||
#define TEXT_CURRSERVERNOT "Current Server\t" TEXT_NOTINSERVLIST
|
#define TEXT_CURRSERVERNOT "Current Server\t" TEXT_NOTINSERVLIST
|
||||||
|
#define TEXT_TRYNEWSERVER "Trying new server, brb..."
|
||||||
|
#define TEXT_SWITCHSERVER "Switching servers..."
|
||||||
#define TEXT_SERVERONTIME "Server Ontime\t%s"
|
#define TEXT_SERVERONTIME "Server Ontime\t%s"
|
||||||
#define TEXT_BOTMODES "Mode\t+%s"
|
#define TEXT_BOTMODES "Mode\t+%s"
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user