init
This commit is contained in:
57
AGLhosts.file
Normal file
57
AGLhosts.file
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
*.zianet.net
|
||||||
|
*.inu.net
|
||||||
|
*.iamerica.net
|
||||||
|
*.spidernet.net
|
||||||
|
*.southeast.net
|
||||||
|
*modem*.*
|
||||||
|
*dialin*.*
|
||||||
|
*dialup*.*
|
||||||
|
*port*.*
|
||||||
|
*.mtl.total.net
|
||||||
|
*.aol.com
|
||||||
|
*.ccmaresme.es
|
||||||
|
*.nettipaja.clinet.fi
|
||||||
|
*.online.no
|
||||||
|
*.nitco.com
|
||||||
|
*.acadia.net
|
||||||
|
*.erols.com
|
||||||
|
*istk*.jps.net
|
||||||
|
*lakeheadu.ca
|
||||||
|
*tm.net.my
|
||||||
|
*.jaring.my
|
||||||
|
*.maltanet.net
|
||||||
|
*.ibm.net
|
||||||
|
*.cytanet.com.cy
|
||||||
|
*.mci.net
|
||||||
|
*.telia.com
|
||||||
|
*.tor.iSTAR.ca
|
||||||
|
*.sb.west.net
|
||||||
|
*.compuserve.com
|
||||||
|
*.satlink.com
|
||||||
|
*.mixcom.net
|
||||||
|
*.gibnet.gi
|
||||||
|
*.p3.net
|
||||||
|
*.internet.com.mx
|
||||||
|
*.lightspeed.net
|
||||||
|
*.ihug.co.nz
|
||||||
|
*.earthlink.net
|
||||||
|
*.softdisk.com
|
||||||
|
*.pop.tip.nl
|
||||||
|
*.quebectel.com
|
||||||
|
*.pacbell.net
|
||||||
|
*.att.net
|
||||||
|
*.videotron.net
|
||||||
|
*.compuserve.com
|
||||||
|
*ppp*.advantage.ca
|
||||||
|
*.telepac.pt
|
||||||
|
*.ms.uu.net
|
||||||
|
*.telepost.no
|
||||||
|
*.ix.netcom.com
|
||||||
|
*.codetel.net.do
|
||||||
|
*.pacific.net.sg
|
||||||
|
*cnc*.concentric.net
|
||||||
|
*-*.concentric.net
|
||||||
|
*.ppp.sn.no
|
||||||
|
*.psi.net
|
||||||
|
*.MIA.Icanect.Net
|
||||||
|
*.interlinx.qc.ca
|
||||||
2
Gline.file
Normal file
2
Gline.file
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
868971453 *bcoffelt@158.222.1.65 CHANNELBLAST BANNED by Channel Cleanup [1]
|
||||||
|
869489901 *@*coolio.org ripper_!ripper@grove.ufl.edu Abusive user [1]
|
||||||
1
KillChan.file
Normal file
1
KillChan.file
Normal file
@@ -0,0 +1 @@
|
|||||||
|
8DffeEddDkeFdckE
|
||||||
14
Makefile
Executable file
14
Makefile
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
LIBS = -ltermcap
|
||||||
|
#CC = /usr/local/bin/alpha-dec-osf4.0-gcc
|
||||||
|
CC = gcc
|
||||||
|
CFLAGS = -O2
|
||||||
|
OBJECTS = uworld.o socket.o file.o match.o parse.o nickserv.o helpservice.o sevnum.o nicklist.o daemon.o wastedump.o
|
||||||
|
|
||||||
|
SOURCES = uworld.c socket.c file.c match.c parse.c nickserv.c helpservice.c sevnum.c nicklist.c daemon.c wastedump.c
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
${CC} ${CFLAGS} -c $<
|
||||||
|
|
||||||
|
uworld: ${OBJECTS}
|
||||||
|
${CC} ${CFLAGS} -o midway ${OBJECTS} ${LIBS}
|
||||||
|
|
||||||
196
Mhosts.file
Normal file
196
Mhosts.file
Normal file
@@ -0,0 +1,196 @@
|
|||||||
|
*jungle.org
|
||||||
|
*theguru.com
|
||||||
|
*spot.aros.net
|
||||||
|
*.wildstar.net
|
||||||
|
*.wildstar.com
|
||||||
|
*irc.crystalball.com
|
||||||
|
osf1.gmu.edu
|
||||||
|
mail1.i1.net
|
||||||
|
net30.nucleus.com
|
||||||
|
Securit.nsuok.edu
|
||||||
|
ibm*.ensicaen.ismra.fr
|
||||||
|
foonix.foonet.net
|
||||||
|
zart.spiretech.com
|
||||||
|
jitter.rahul.net
|
||||||
|
chat.eskimo.com
|
||||||
|
phish.nether.net
|
||||||
|
*pipeline.com
|
||||||
|
gateway.telecom.ksu.edu
|
||||||
|
falcon.cc.ukans.edu
|
||||||
|
falcon.lhup.edu
|
||||||
|
taisun1.tamuk.edu
|
||||||
|
*.worldone.com
|
||||||
|
Serve.org
|
||||||
|
*.YFN.EDU
|
||||||
|
*.YSU.EDU
|
||||||
|
SecurIt.nsuok.edu
|
||||||
|
undernet.org
|
||||||
|
bbs.*
|
||||||
|
freenet.*
|
||||||
|
*.ksu.ksu.edu
|
||||||
|
irc.crystalball.com
|
||||||
|
infinity.c2.org
|
||||||
|
*.teleport.com
|
||||||
|
*.cns.hp.com
|
||||||
|
*.ucdavis.edu
|
||||||
|
karn.wright.edu
|
||||||
|
*.hp.com
|
||||||
|
200.20.157.*
|
||||||
|
bouncer.gnn.com
|
||||||
|
user1.iswest.com
|
||||||
|
ra1.randomc.com
|
||||||
|
*.sorostm.ro
|
||||||
|
alioth.pi.net
|
||||||
|
beatrix.btxgate.de
|
||||||
|
earth-le1.execpc.com
|
||||||
|
Bayou.UH.EDU
|
||||||
|
HOSS.EAC.CC.AZ.US
|
||||||
|
Kestrel.is.und.ac.za
|
||||||
|
MarLa.enDirect.qc.ca
|
||||||
|
Mercury.mcs.com
|
||||||
|
Mill2.MillComm.COM
|
||||||
|
Panther.UCIS.Dal.Ca
|
||||||
|
Pegasus.cc.ucf.edu
|
||||||
|
TURBO.Kean.EDU
|
||||||
|
UCS.ORST.EDU
|
||||||
|
academ01.tam.itesm.mx
|
||||||
|
aix2.uottawa.ca
|
||||||
|
alcor.Concordia.CA
|
||||||
|
alpha2-nf.luton.ac.uk
|
||||||
|
arad.bgu.ac.il
|
||||||
|
aristotle.algonet.se
|
||||||
|
ashur.cc.biu.ac.il
|
||||||
|
athena.compulink.gr
|
||||||
|
avalon.sul.com.br
|
||||||
|
*.u.washington.edu
|
||||||
|
bengt.algonet.se
|
||||||
|
*.lm.com
|
||||||
|
bessel.nando.net
|
||||||
|
bgsuvax.bgsu.edu
|
||||||
|
bigtca*.3-cities.com
|
||||||
|
bluestem.prairienet.org
|
||||||
|
boardwalk.ecst.csuchico.edu
|
||||||
|
box.degeer.norrkoping.se
|
||||||
|
carolina-chat.com
|
||||||
|
cin*.consumerinfonet.com
|
||||||
|
citicom.ag1.com
|
||||||
|
cnct.com
|
||||||
|
comp.uark.edu
|
||||||
|
connectnet1.connectnet.com
|
||||||
|
datastug1.ped.lundbygym.educ.goteborg.se
|
||||||
|
doorway.evansville.net
|
||||||
|
dunx1.ocs.drexel.edu
|
||||||
|
eagle.ais.net
|
||||||
|
email.california.com
|
||||||
|
eskimo.com
|
||||||
|
exec.tscnet.com
|
||||||
|
expert.cc.purdue.edu
|
||||||
|
firefly.prairienet.org
|
||||||
|
grove.ufl.edu
|
||||||
|
gucis.cit.gu.edu.au
|
||||||
|
gumby.com
|
||||||
|
gw.cybalink.com
|
||||||
|
hasle.sn.no
|
||||||
|
helios.dmu.ac.uk
|
||||||
|
huk.a.sn.no
|
||||||
|
hunker.b4futures.net
|
||||||
|
hyper.shadow.net
|
||||||
|
iavbbs.com
|
||||||
|
ieat3.et.Uni-Magdeburg.DE
|
||||||
|
igs-gate.cng.on.ca
|
||||||
|
inde.com
|
||||||
|
infinity.c2.net
|
||||||
|
infolink.com.br
|
||||||
|
io.uwinnipeg.ca
|
||||||
|
is1.hk.super.net
|
||||||
|
iserv.datasvar.se
|
||||||
|
jagor.srce.hr
|
||||||
|
jove.acs.unt.edu
|
||||||
|
jupiter.neptune.fr
|
||||||
|
jupiter.telluric.com
|
||||||
|
kairos.algonet.se
|
||||||
|
kirk.dnaco.net
|
||||||
|
landslide.openix.com
|
||||||
|
learnet.freenet.hut.fi
|
||||||
|
legba.unsl.edu.ar
|
||||||
|
leonis.nus.sg
|
||||||
|
lnxland1.ccd.cccoes.edu
|
||||||
|
lux.latrobe.edu.au
|
||||||
|
mackten.asucla.ucla.edu
|
||||||
|
mail*
|
||||||
|
mallard2.duc.auburn.edu
|
||||||
|
manhattan.thirdwave.net
|
||||||
|
marikit.iphil.net
|
||||||
|
mercury.gaianet.net
|
||||||
|
merlin.si.uqam.ca
|
||||||
|
miso.wwa.com
|
||||||
|
msuvx1.memphis.edu
|
||||||
|
mugca.cc.monash.edu.au
|
||||||
|
mwr.mwr.is
|
||||||
|
neptune.uqtr.uquebec.ca
|
||||||
|
maroon.tc.umn.edu
|
||||||
|
netcom*.netcom.com
|
||||||
|
nova.dreamscape.com
|
||||||
|
novell.capecod.net
|
||||||
|
ns1.maf.mobile.al.us
|
||||||
|
ods.ods.net
|
||||||
|
nkuaxp.nku.edu
|
||||||
|
olci.com
|
||||||
|
onyx.valunet.com
|
||||||
|
orion.it.luc.edu
|
||||||
|
orion.scasd.k12.pa.us
|
||||||
|
pacx.com
|
||||||
|
paul.cclu.lv
|
||||||
|
piglet.cc.utexas.edu
|
||||||
|
playpen.com
|
||||||
|
pluto.njcc.com
|
||||||
|
prostar.com
|
||||||
|
diac.com
|
||||||
|
pulua.hcc.Hawaii.Edu
|
||||||
|
rainbow.descon.com
|
||||||
|
ramses.centic.utem.cl
|
||||||
|
rapidnet.com
|
||||||
|
real.on.ca
|
||||||
|
redash.qut.edu.au
|
||||||
|
rimmer.acs.bolton.ac.uk
|
||||||
|
sassynet.com
|
||||||
|
serv1.vossnet.co.uk
|
||||||
|
shell.flinet.com
|
||||||
|
shellx.best.com
|
||||||
|
shrike.depaul.edu
|
||||||
|
simply.ok.is
|
||||||
|
sodium.Mlink.NET
|
||||||
|
soleil.acomp.usf.edu
|
||||||
|
sophocles.algonet.se
|
||||||
|
spocyberlink.net
|
||||||
|
step.mother.com
|
||||||
|
step.polymtl.ca
|
||||||
|
storm.stud.ntnu.no
|
||||||
|
sunspot.tiac.net
|
||||||
|
talos.spark.net.gr
|
||||||
|
tao.sans.vuw.ac.nz
|
||||||
|
terranet.terranet.ab.ca
|
||||||
|
thetics.europa.com
|
||||||
|
titan.liunet.edu
|
||||||
|
twinkle.Generation.NET
|
||||||
|
unix.gsusa.org
|
||||||
|
verdi.NMSU.Edu
|
||||||
|
viper.nauticom.net
|
||||||
|
vr.virt.net
|
||||||
|
wally.ipa.net
|
||||||
|
world-f.std.com
|
||||||
|
zeus.compulink.gr
|
||||||
|
*.olinter.com
|
||||||
|
pewter.ing.unlp.edu.ar
|
||||||
|
206.116.71.230
|
||||||
|
talk.nacs.net
|
||||||
|
addman.rapid.co.uk
|
||||||
|
207.102.122.244
|
||||||
|
*.cs.vu.nl
|
||||||
|
199.170.84.240
|
||||||
|
200.250.252.191200.250.252.192,
|
||||||
|
*get-on.net
|
||||||
|
crash.nildram.co.uk
|
||||||
|
167.144.36.234
|
||||||
|
timberwolf.snip.net
|
||||||
|
phish.nether.net
|
||||||
1
NoChan.file
Normal file
1
NoChan.file
Normal file
@@ -0,0 +1 @@
|
|||||||
|
#kill 1200
|
||||||
14
NoGline.file
Normal file
14
NoGline.file
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
*quicklink.com
|
||||||
|
*mountain.superlink.net
|
||||||
|
*.a.sol.no
|
||||||
|
*tanzit.cetlink.net
|
||||||
|
*uoknor.edu
|
||||||
|
*chatsystems.com
|
||||||
|
*channels*.undernet.org
|
||||||
|
*ns1.qnet.com
|
||||||
|
*.ucdavis.edu
|
||||||
|
*.nssl.uoknor.edu
|
||||||
|
*gateway.telecom.ksu.edu
|
||||||
|
*.ksu.ksu.edu
|
||||||
|
*karn.wright.edu
|
||||||
|
*seminole*.wildstar.net
|
||||||
2
NoOper.file
Normal file
2
NoOper.file
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
*.ro 876294105
|
||||||
|
freeze@pm2s12.newwave.net 864103174
|
||||||
12
OperChan.file
Normal file
12
OperChan.file
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
valhalla
|
||||||
|
uworld.floods
|
||||||
|
nazi
|
||||||
|
enforcers
|
||||||
|
warez
|
||||||
|
vacilon
|
||||||
|
vacilon
|
||||||
|
NickServ
|
||||||
|
<EFBFBD><EFBFBD>f<EFBFBD><EFBFBD><EFBFBD>ꮧ
|
||||||
|
<EFBFBD><EFBFBD>f<EFBFBD><EFBFBD><EFBFBD>ꮧ.
|
||||||
|
syke
|
||||||
|
bleat
|
||||||
66
README
Normal file
66
README
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
UNDERNET version of Uworld (Protocol 9) THE OLD FAITHFUL
|
||||||
|
Written by danny@chatsystems.com <wildthang@undernet.org>
|
||||||
|
|
||||||
|
UWORLD DISTRIBUTION SITE: www.chatsystems.com/docs/uworld.html
|
||||||
|
Look at www.chatsystems.com and add a FREE chatroom to your WWW site!!!
|
||||||
|
|
||||||
|
VERY IMPORTANT INFORMATION ABOUT UWORLD READ THIS CAREFULLY!!!
|
||||||
|
#########################################################################
|
||||||
|
|
||||||
|
RESTRICTIONS:
|
||||||
|
This is NOT public domain code. You are not to redistribute this code.
|
||||||
|
The only approved site to obtain this code from is the site listed above:
|
||||||
|
www.chatsystems.com/docs/uworld.html ALL code in this distribution is
|
||||||
|
copyright by Internet Chat Systems, Inc. (even if it is OLD speghetti code)
|
||||||
|
|
||||||
|
NOTE: This code was hacked/thrown together over about 7 years of
|
||||||
|
tossing ideas around, learning more about C, and is quite honestly
|
||||||
|
NOT something I would dare to consider professional quality code. This
|
||||||
|
code was mainly never distributed because I consider it somewhat embarassing
|
||||||
|
to read through. You are welcome to use this code to help learn things,
|
||||||
|
and you are welcome to use it on your own IRC network, however please give
|
||||||
|
credit where credit is due, do not redistribute the code. have your friends
|
||||||
|
obtain the code from the Uworld distribution site listed above.
|
||||||
|
|
||||||
|
DISCLAIMER:
|
||||||
|
I make no promises about anything associated with this code, and do not
|
||||||
|
plan on supporting this in any way. It has been used previously on
|
||||||
|
OSF1, IRIX4.5, and BSDI. It also atleast compiles under FreeBSD. Quite
|
||||||
|
simply, no warranties, no garuntees, no support. This is OLD (extremely
|
||||||
|
old) code. This code is distributed AS IS, with no support what so ever.
|
||||||
|
I apologize for the lack of documentation or instructions. I had not intended
|
||||||
|
to actually ever publicize this code, however numerous people have shown lots
|
||||||
|
of interest in obtaining it, so after recent events, I decided what the heck,
|
||||||
|
its not doing me any good sitting there doing nothing, if it helps someone
|
||||||
|
else on the network, then as long as they read the blurb about chatsystems
|
||||||
|
on our distribution site, why not give it out.
|
||||||
|
|
||||||
|
OFFER:
|
||||||
|
If you are interested in a more professionally designed version of Uworld
|
||||||
|
(version 3) which is P10, that has been used on the Undernet IRC network,
|
||||||
|
please send me a note danny@chatsystems.com and we can discuss licensing a
|
||||||
|
BINARY version of Uworld.v3
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
|
||||||
|
This is the original P9 Uworld used by Undernet for several years. Undernet
|
||||||
|
was the first network to allow operators special abilities to help thier users.
|
||||||
|
The name Uworld actually came from UnderWorld.uoknor.edu which was the first
|
||||||
|
version of operator services that was later just called Uworld when we became
|
||||||
|
what is now called Undernet. There have been numerous immitations on the
|
||||||
|
network and it is very flattering that my ideas and the ideas of Undernet have
|
||||||
|
been picked up and such by others to the point that having a Uworld on the
|
||||||
|
network is almost considered a tradition.
|
||||||
|
|
||||||
|
Feel free to send me email about this or other chat network related services.
|
||||||
|
Internet Chat Systems (at the time of this writing) currently maintains the
|
||||||
|
Undernet Channel Services (X/W), the Undernet P10 Uworld (Uworld.v3), and the
|
||||||
|
RCSD chatserver (which supports HTML, IRC, and direct Telnet connections). We
|
||||||
|
are about to release the new version of X/W and soon will be looking at adding
|
||||||
|
new and exciting modules to the RCSD chatserver to improve chat network add on
|
||||||
|
services. Internet Chat Systems, Chat Network services are professionally
|
||||||
|
coded top of the line services (NOT like this uworld source that you have here)
|
||||||
|
Please let us know if we can be of service to you or your chat network.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
85
Shosts.file
Normal file
85
Shosts.file
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
*dial*
|
||||||
|
*ppp*
|
||||||
|
*modem*
|
||||||
|
antietam.nssl.uoknor.edu
|
||||||
|
*annex*
|
||||||
|
port*
|
||||||
|
pool*
|
||||||
|
slip*
|
||||||
|
ip*
|
||||||
|
max*.com
|
||||||
|
cust*.max*
|
||||||
|
*caribe.net
|
||||||
|
*.necleus.com
|
||||||
|
pc*.net
|
||||||
|
pc*.com
|
||||||
|
*.mwmicro.com
|
||||||
|
m*.lakeheadu.ca
|
||||||
|
ts*-*.*
|
||||||
|
ptp*.pig.net
|
||||||
|
s*-pm*-*
|
||||||
|
dyn*
|
||||||
|
*.boi.micron.net
|
||||||
|
as*-*.*
|
||||||
|
access*.abacom.com
|
||||||
|
*.highnet.co.at
|
||||||
|
*.onlink.net
|
||||||
|
node*
|
||||||
|
engine*.omnes.net
|
||||||
|
*dcn.davis.ca.us
|
||||||
|
*.cybernaute.com
|
||||||
|
eagle*.villagenet.com
|
||||||
|
d*.sonic.net
|
||||||
|
dlp*.center.eri.net
|
||||||
|
vav*.netaccess.on.ca
|
||||||
|
dol*.dol.net
|
||||||
|
*.acs.bolton.ac.uk
|
||||||
|
*.jaring.my
|
||||||
|
*.jovenet.fr
|
||||||
|
*.concentric.net
|
||||||
|
*.sojourn.net
|
||||||
|
*.compuserve.com
|
||||||
|
*.cwconnect.ca
|
||||||
|
*.telepac.pt
|
||||||
|
*.sat.texas.net
|
||||||
|
*.pcola.gulf.net
|
||||||
|
*.pi.net
|
||||||
|
*.compusmart.ab.ca
|
||||||
|
*.netvision.net.il
|
||||||
|
line*
|
||||||
|
*.accessus.net
|
||||||
|
xyp*.ltec.net
|
||||||
|
nts*.calstatela.edu
|
||||||
|
xy*port*.k12.ca.us
|
||||||
|
pc-*.ccfne.ns.ca
|
||||||
|
*.idt.net
|
||||||
|
dyn*.win.mnsi.net
|
||||||
|
col-*.erols.com
|
||||||
|
term*.jamstore.de
|
||||||
|
eburguser*.ncw.net
|
||||||
|
pc*.itpoint.org.uk
|
||||||
|
*max*.earthlink.net
|
||||||
|
ind*.iquest.net
|
||||||
|
*.ix.netcom.com
|
||||||
|
*.wchat.on.ca
|
||||||
|
caribe*.caribe.net
|
||||||
|
ivyland*.voicenet.com
|
||||||
|
*.direct.ca
|
||||||
|
*.xl.ca
|
||||||
|
*.li.net
|
||||||
|
pa*dsp*.orf.infi.net
|
||||||
|
ip*.interramp.com
|
||||||
|
usr*ip*
|
||||||
|
wthf*.gate.net
|
||||||
|
*gnn.com
|
||||||
|
*.i-link.net
|
||||||
|
*.vistech.net
|
||||||
|
pm*
|
||||||
|
castles*.castles.com
|
||||||
|
ras*.stic.net
|
||||||
|
info*.jet.es
|
||||||
|
apm*.realtime.net
|
||||||
|
as*.sci.net.mx
|
||||||
|
host*.rochelle.net
|
||||||
|
anc*.artic.net
|
||||||
|
agtd*.cadvision.com
|
||||||
11
admin.list
Normal file
11
admin.list
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Vienna.AT.EU.UnderNet.org lorenz@olymp.wu-wien.ac.at
|
||||||
|
austin.tx.us.undernet.org zitz@ccwf.cc.utexas.edu
|
||||||
|
Chicago.IL.US.Undernet.org irc@misha.net
|
||||||
|
davis.ca.us.undernet.org cmlambertus@ucdavis.edu
|
||||||
|
washington-1.dc.us.undernet.org enger@seka.reston.ans.net
|
||||||
|
washington.dc.us.undernet.org irc@aol.net
|
||||||
|
SanJose.CA.US.Undernet.Org dholmes@rahul.net
|
||||||
|
Oxford.UK.EU.UnderNet.Org oxowl@owlnest.demon.co.uk
|
||||||
|
montreal.qu.ca.undernet.org undernet@step.polymtl.ca
|
||||||
|
Rochester.MI.US.Undernet.org jeff@oakland.edu
|
||||||
|
Amsterdam.NL.EU.undernet.org cpbaltus@cs.vu.nl
|
||||||
100
banlist.c
Normal file
100
banlist.c
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time_t>
|
||||||
|
|
||||||
|
extern int sevsck;
|
||||||
|
|
||||||
|
struct aBan {
|
||||||
|
struct aBan *next;
|
||||||
|
char channel[255];
|
||||||
|
char mask[150];
|
||||||
|
char who[10];
|
||||||
|
time_t timeout;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct *banlist=NULL;
|
||||||
|
|
||||||
|
int addban(char *who,char *mask,char *channel,time_t timeout)
|
||||||
|
{
|
||||||
|
struct aBan *tmpban;
|
||||||
|
char outputbuf[512];
|
||||||
|
|
||||||
|
tmpban=(struct aBan *) malloc(sizeof(struct aBan));
|
||||||
|
strcpy(tmpban->mask,mask);
|
||||||
|
strcpy(tmpban->who,who);
|
||||||
|
strcpy(tmpban->channel,channel);
|
||||||
|
tmpban->timeout = timeout;
|
||||||
|
|
||||||
|
tmpban->next=bansist;
|
||||||
|
banlist=tmpban;
|
||||||
|
|
||||||
|
sprintf(outputbuf,":chansvr MODE %s +b %s\n",tmpban->channel,tmpban->mask);
|
||||||
|
writeln(sevsck,outputbuf);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int remove_ban(char *mask)
|
||||||
|
{ struct aBan *tmpban,*tmp2ban;
|
||||||
|
char outputbuf[512];
|
||||||
|
|
||||||
|
tmp2ban=banlist;
|
||||||
|
if(tmp2ban == NULL) return;
|
||||||
|
|
||||||
|
if(!strcasecmp(banlist->mask,mask))
|
||||||
|
{ banlist=banlist->next;
|
||||||
|
free(tmp2ban);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
tmpban = banlist->next;
|
||||||
|
while(tmpban != NULL)
|
||||||
|
{ if( !strcasecmp(tmpban->mask,mask))
|
||||||
|
{ tmp2ban->next=tmpban->next;
|
||||||
|
sprintf(outputbuf,":Chansvr MODE %s -b %s\n",tmpban->channel,
|
||||||
|
tmpban->mask);
|
||||||
|
writeln(sevsck,outputbuf);
|
||||||
|
free(tmpban);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
tmp2ban=tmpban;
|
||||||
|
tmpban=tmpban->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int timeout_ban()
|
||||||
|
{ struct aBan *tmpban,*tmp2ban;
|
||||||
|
char outputbuf[512];
|
||||||
|
|
||||||
|
tmp2ban=banlist;
|
||||||
|
if((tmp2ban == NULL) || (tmp2ban->next == NULL)) return;
|
||||||
|
|
||||||
|
/* if((banlist->timeout > 0) && (banlist->timeout < NOWTIME))
|
||||||
|
** { banlist=banlist->next;
|
||||||
|
** free(tmp2ban);
|
||||||
|
** return 1;
|
||||||
|
** }
|
||||||
|
*/
|
||||||
|
|
||||||
|
tmpban = banlist->next;
|
||||||
|
while(tmpban != NULL)
|
||||||
|
{ if((tmpban->timeout > 0) && (tmpban->timeout < NOWTIME))
|
||||||
|
{ tmp2ban->next=tmpban->next;
|
||||||
|
|
||||||
|
sprintf(outputbuf,":Chansvr MODE %s -b %s\n",tmpban->channel,
|
||||||
|
tmpban->mask);
|
||||||
|
writeln(sevsck,outputbuf);
|
||||||
|
free(tmpban);
|
||||||
|
tmpban=tmp2ban->next;
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* return 1;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
tmp2ban=tmpban;
|
||||||
|
tmpban=tmpban->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
10
checkuworld
Executable file
10
checkuworld
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
if (ps augxw | grep -i uworld | grep -v grep > /dev/null)
|
||||||
|
then
|
||||||
|
sleep 0
|
||||||
|
else
|
||||||
|
echo "* Uworld server started at" >> /ecn/ecnstf0/danny/dvmitche/uworld/uworldcronlog
|
||||||
|
date >> /ecn/ecnstf0/danny/dvmitche/uworld/uworldcronlog
|
||||||
|
/ecn/ecnstf0/danny/dvmitche/uworld/uworld > /dev/null &
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
310
clones.h
Normal file
310
clones.h
Normal file
@@ -0,0 +1,310 @@
|
|||||||
|
/* this is the configuration file for the TSC/CLN anticlone program.
|
||||||
|
** Note that it scans multi-hosts FIRST and then goes to scan single hosts
|
||||||
|
** this is because there are fewer multihosts than there are single hosts.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ANY host matching a mask listed here will automatically
|
||||||
|
** be GLINED if abusing the network.
|
||||||
|
*/
|
||||||
|
char *glinehost[]={
|
||||||
|
"*.telepac.pt","*.ms.uu.net","*.jaring.my","*.telepost.no",
|
||||||
|
"" };
|
||||||
|
|
||||||
|
char *kloneuser[]={"*Jobee","*klone","*kl0ne","*clone","clone*","user",
|
||||||
|
"*wassupfoo","*Jonnieboy","tORnfLESh","l33t",""};
|
||||||
|
|
||||||
|
/* Any host in this file will be reported as a CLONE if
|
||||||
|
** there are more than 3 connections from this site.
|
||||||
|
*/
|
||||||
|
char *singlehost[]={
|
||||||
|
"*dial*","*ppp*","*modem*", /* Standard MODEM dialups */
|
||||||
|
"antietam.nssl.uoknor.edu", /* TESTING HOST */
|
||||||
|
"*annex*",
|
||||||
|
"port*",
|
||||||
|
"pool*",
|
||||||
|
"slip*",
|
||||||
|
"ip*",
|
||||||
|
"max*.com",
|
||||||
|
"cust*.max*",
|
||||||
|
"*caribe.net",
|
||||||
|
"*.necleus.com",
|
||||||
|
"pc*.net",
|
||||||
|
"pc*.com",
|
||||||
|
"*.mwmicro.com",
|
||||||
|
"m*.lakeheadu.ca",
|
||||||
|
"ts*-*.*",
|
||||||
|
"ptp*.pig.net",
|
||||||
|
"s*-pm*-*",
|
||||||
|
"dyn*",
|
||||||
|
"*.boi.micron.net",
|
||||||
|
"as*-*.*",
|
||||||
|
"access*.abacom.com",
|
||||||
|
"*.highnet.co.at",
|
||||||
|
"*.onlink.net",
|
||||||
|
"node*",
|
||||||
|
"engine*.omnes.net",
|
||||||
|
"*dcn.davis.ca.us",
|
||||||
|
"*.cybernaute.com",
|
||||||
|
"eagle*.villagenet.com",
|
||||||
|
"d*.sonic.net",
|
||||||
|
"dlp*.center.eri.net",
|
||||||
|
"vav*.netaccess.on.ca",
|
||||||
|
"dol*.dol.net",
|
||||||
|
"*.acs.bolton.ac.uk",
|
||||||
|
"*.jaring.my",
|
||||||
|
"*.jovenet.fr",
|
||||||
|
"*.concentric.net",
|
||||||
|
"*.sojourn.net",
|
||||||
|
"*.compuserve.com",
|
||||||
|
"*.cwconnect.ca",
|
||||||
|
"*.telepac.pt",
|
||||||
|
"*.sat.texas.net",
|
||||||
|
"*.pcola.gulf.net",
|
||||||
|
"*.pi.net",
|
||||||
|
"*.compusmart.ab.ca",
|
||||||
|
"*.netvision.net.il",
|
||||||
|
"line*",
|
||||||
|
"*.accessus.net",
|
||||||
|
"xyp*.ltec.net",
|
||||||
|
"nts*.calstatela.edu",
|
||||||
|
"xy*port*.k12.ca.us",
|
||||||
|
"pc-*.ccfne.ns.ca",
|
||||||
|
"*.idt.net",
|
||||||
|
"dyn*.win.mnsi.net",
|
||||||
|
"col-*.erols.com",
|
||||||
|
"term*.jamstore.de",
|
||||||
|
"eburguser*.ncw.net",
|
||||||
|
"pc*.itpoint.org.uk",
|
||||||
|
"*max*.earthlink.net",
|
||||||
|
"ind*.iquest.net",
|
||||||
|
"*.ix.netcom.com", /* Netcom dialup lines */
|
||||||
|
"*.wchat.on.ca",
|
||||||
|
"caribe*.caribe.net",
|
||||||
|
"ivyland*.voicenet.com",
|
||||||
|
"*.direct.ca",
|
||||||
|
"*.xl.ca",
|
||||||
|
"*.li.net",
|
||||||
|
"pa*dsp*.orf.infi.net",
|
||||||
|
"ip*.interramp.com",
|
||||||
|
"usr*ip*",
|
||||||
|
"wthf*.gate.net",
|
||||||
|
"*gnn.com",
|
||||||
|
"*.i-link.net",
|
||||||
|
"*.vistech.net",
|
||||||
|
"pm*",
|
||||||
|
"castles*.castles.com",
|
||||||
|
"ras*.stic.net",
|
||||||
|
"info*.jet.es",
|
||||||
|
"apm*.realtime.net",
|
||||||
|
"as*.sci.net.mx",
|
||||||
|
"host*.rochelle.net",
|
||||||
|
"anc*.artic.net",
|
||||||
|
"agtd*.cadvision.com",
|
||||||
|
"" };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Any multiple connections from the below domains will
|
||||||
|
** be ignored by the clone scanner
|
||||||
|
*/
|
||||||
|
char *multihost[]={
|
||||||
|
"*.wildstar.net","*.wildstar.com",
|
||||||
|
"*irc.crystalball.com",
|
||||||
|
"osf1.gmu.edu",
|
||||||
|
"mail1.i1.net",
|
||||||
|
"net30.nucleus.com",
|
||||||
|
"Securit.nsuok.edu",
|
||||||
|
"ibm*.ensicaen.ismra.fr",
|
||||||
|
"foonix.foonet.net",
|
||||||
|
"zart.spiretech.com",
|
||||||
|
"jitter.rahul.net",
|
||||||
|
"chat.eskimo.com",
|
||||||
|
"phish.nether.net",
|
||||||
|
"*pipeline.com",
|
||||||
|
"gateway.telecom.ksu.edu",
|
||||||
|
"falcon.cc.ukans.edu",
|
||||||
|
"falcon.lhup.edu",
|
||||||
|
"taisun1.tamuk.edu",
|
||||||
|
"*.worldone.com",
|
||||||
|
"Serve.org",
|
||||||
|
"*.YFN.EDU",
|
||||||
|
"*.YSU.EDU",
|
||||||
|
"SecurIt.nsuok.edu",
|
||||||
|
"undernet.org",
|
||||||
|
"bbs.*",
|
||||||
|
"freenet.*",
|
||||||
|
"*.ksu.ksu.edu",
|
||||||
|
"irc.crystalball.com",
|
||||||
|
"infinity.c2.org",
|
||||||
|
"*.teleport.com",
|
||||||
|
"*.cns.hp.com",
|
||||||
|
"*.ucdavis.edu",
|
||||||
|
"karn.wright.edu",
|
||||||
|
"*.hp.com",
|
||||||
|
"200.20.157.*",
|
||||||
|
"bouncer.gnn.com",
|
||||||
|
"user1.iswest.com",
|
||||||
|
"ra1.randomc.com",
|
||||||
|
"*.sorostm.ro",
|
||||||
|
"alioth.pi.net",
|
||||||
|
"beatrix.btxgate.de",
|
||||||
|
"earth-le1.execpc.com",
|
||||||
|
"Bayou.UH.EDU",
|
||||||
|
"HOSS.EAC.CC.AZ.US",
|
||||||
|
"Kestrel.is.und.ac.za",
|
||||||
|
"MarLa.enDirect.qc.ca",
|
||||||
|
"Mercury.mcs.com",
|
||||||
|
"Mill2.MillComm.COM",
|
||||||
|
"Panther.UCIS.Dal.Ca",
|
||||||
|
"Pegasus.cc.ucf.edu",
|
||||||
|
"TURBO.Kean.EDU",
|
||||||
|
"UCS.ORST.EDU",
|
||||||
|
"academ01.tam.itesm.mx",
|
||||||
|
"aix2.uottawa.ca",
|
||||||
|
"alcor.Concordia.CA",
|
||||||
|
"alpha2-nf.luton.ac.uk",
|
||||||
|
"arad.bgu.ac.il",
|
||||||
|
"aristotle.algonet.se",
|
||||||
|
"ashur.cc.biu.ac.il",
|
||||||
|
"athena.compulink.gr",
|
||||||
|
"avalon.sul.com.br",
|
||||||
|
"*.u.washington.edu",
|
||||||
|
"bengt.algonet.se",
|
||||||
|
"*.lm.com",
|
||||||
|
"bessel.nando.net",
|
||||||
|
"bgsuvax.bgsu.edu",
|
||||||
|
"bigtca*.3-cities.com",
|
||||||
|
"bluestem.prairienet.org",
|
||||||
|
"boardwalk.ecst.csuchico.edu",
|
||||||
|
"box.degeer.norrkoping.se",
|
||||||
|
"carolina-chat.com",
|
||||||
|
"cin*.consumerinfonet.com",
|
||||||
|
"citicom.ag1.com",
|
||||||
|
"cnct.com",
|
||||||
|
"comp.uark.edu",
|
||||||
|
"connectnet1.connectnet.com",
|
||||||
|
"datastug1.ped.lundbygym.educ.goteborg.se",
|
||||||
|
"doorway.evansville.net",
|
||||||
|
/* "drake.cnu.edu",
|
||||||
|
*/
|
||||||
|
"dunx1.ocs.drexel.edu",
|
||||||
|
"eagle.ais.net",
|
||||||
|
"email.california.com",
|
||||||
|
"eskimo.com",
|
||||||
|
"exec.tscnet.com",
|
||||||
|
"expert.cc.purdue.edu",
|
||||||
|
"firefly.prairienet.org",
|
||||||
|
"grove.ufl.edu",
|
||||||
|
"gucis.cit.gu.edu.au",
|
||||||
|
"gumby.com",
|
||||||
|
"gw.cybalink.com",
|
||||||
|
"hasle.sn.no",
|
||||||
|
"helios.dmu.ac.uk",
|
||||||
|
"huk.a.sn.no",
|
||||||
|
"hunker.b4futures.net",
|
||||||
|
"hyper.shadow.net",
|
||||||
|
"iavbbs.com",
|
||||||
|
"ieat3.et.Uni-Magdeburg.DE",
|
||||||
|
"igs-gate.cng.on.ca",
|
||||||
|
"inde.com",
|
||||||
|
"infinity.c2.net",
|
||||||
|
"infolink.com.br",
|
||||||
|
"io.uwinnipeg.ca",
|
||||||
|
"is1.hk.super.net",
|
||||||
|
"iserv.datasvar.se",
|
||||||
|
"jagor.srce.hr",
|
||||||
|
"jove.acs.unt.edu",
|
||||||
|
"jupiter.neptune.fr",
|
||||||
|
"jupiter.telluric.com",
|
||||||
|
"kairos.algonet.se",
|
||||||
|
"kirk.dnaco.net",
|
||||||
|
"landslide.openix.com",
|
||||||
|
"learnet.freenet.hut.fi",
|
||||||
|
"legba.unsl.edu.ar",
|
||||||
|
"leonis.nus.sg",
|
||||||
|
"lnxland1.ccd.cccoes.edu",
|
||||||
|
"lux.latrobe.edu.au",
|
||||||
|
"mackten.asucla.ucla.edu",
|
||||||
|
"mail*",
|
||||||
|
"mallard2.duc.auburn.edu",
|
||||||
|
"manhattan.thirdwave.net",
|
||||||
|
"marikit.iphil.net",
|
||||||
|
"mercury.gaianet.net",
|
||||||
|
"merlin.si.uqam.ca",
|
||||||
|
"miso.wwa.com",
|
||||||
|
"msuvx1.memphis.edu",
|
||||||
|
"mugca.cc.monash.edu.au",
|
||||||
|
"mwr.mwr.is",
|
||||||
|
"neptune.uqtr.uquebec.ca",
|
||||||
|
"maroon.tc.umn.edu",
|
||||||
|
"netcom*.netcom.com",
|
||||||
|
"nova.dreamscape.com",
|
||||||
|
"novell.capecod.net",
|
||||||
|
"ns1.maf.mobile.al.us",
|
||||||
|
"ods.ods.net",
|
||||||
|
"nkuaxp.nku.edu",
|
||||||
|
"olci.com",
|
||||||
|
"onyx.valunet.com",
|
||||||
|
"orion.it.luc.edu",
|
||||||
|
"orion.scasd.k12.pa.us",
|
||||||
|
"pacx.com",
|
||||||
|
"paul.cclu.lv",
|
||||||
|
"piglet.cc.utexas.edu",
|
||||||
|
"playpen.com",
|
||||||
|
"pluto.njcc.com",
|
||||||
|
"prostar.com",
|
||||||
|
"diac.com",
|
||||||
|
"pulua.hcc.Hawaii.Edu",
|
||||||
|
"rainbow.descon.com",
|
||||||
|
"ramses.centic.utem.cl",
|
||||||
|
"rapidnet.com",
|
||||||
|
"real.on.ca",
|
||||||
|
"redash.qut.edu.au",
|
||||||
|
"rimmer.acs.bolton.ac.uk",
|
||||||
|
"sassynet.com",
|
||||||
|
"serv1.vossnet.co.uk",
|
||||||
|
"shell.flinet.com",
|
||||||
|
"shellx.best.com",
|
||||||
|
"shrike.depaul.edu",
|
||||||
|
"simply.ok.is",
|
||||||
|
"sodium.Mlink.NET",
|
||||||
|
"soleil.acomp.usf.edu",
|
||||||
|
"sophocles.algonet.se",
|
||||||
|
"spocyberlink.net",
|
||||||
|
"step.mother.com",
|
||||||
|
"step.polymtl.ca",
|
||||||
|
"storm.stud.ntnu.no",
|
||||||
|
"sunspot.tiac.net",
|
||||||
|
"talos.spark.net.gr",
|
||||||
|
"tao.sans.vuw.ac.nz",
|
||||||
|
"terranet.terranet.ab.ca",
|
||||||
|
"thetics.europa.com",
|
||||||
|
"titan.liunet.edu",
|
||||||
|
"twinkle.Generation.NET",
|
||||||
|
"unix.gsusa.org",
|
||||||
|
"verdi.NMSU.Edu",
|
||||||
|
"viper.nauticom.net",
|
||||||
|
"vr.virt.net",
|
||||||
|
"wally.ipa.net",
|
||||||
|
"world-f.std.com",
|
||||||
|
"zeus.compulink.gr",
|
||||||
|
"*.olinter.com",
|
||||||
|
"pewter.ing.unlp.edu.ar",
|
||||||
|
"206.116.71.230",
|
||||||
|
"talk.nacs.net",
|
||||||
|
"addman.rapid.co.uk",
|
||||||
|
"207.102.122.244",
|
||||||
|
"*.cs.vu.nl",
|
||||||
|
"199.170.84.240",
|
||||||
|
"200.250.252.191","200.250.252.192",
|
||||||
|
"*get-on.net",
|
||||||
|
"crash.nildram.co.uk",
|
||||||
|
"167.144.36.234",
|
||||||
|
"timberwolf.snip.net",
|
||||||
|
"phish.nether.net",
|
||||||
|
"" };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
143
config.h
Executable file
143
config.h
Executable file
@@ -0,0 +1,143 @@
|
|||||||
|
#include <time.h>
|
||||||
|
/* USE_TSC enables the code that handles the TSC processing
|
||||||
|
*/
|
||||||
|
#define USE_TSC
|
||||||
|
#define GLINEFILE "Gline.file"
|
||||||
|
#define OPERCHANFILE "OperChan.file"
|
||||||
|
#define KILLCHANFILE "KillChan.file"
|
||||||
|
#define MAXGLINES 500
|
||||||
|
#define CHANSUSPENDFILE "NoChan.file"
|
||||||
|
#define SUSPENDFILE "NoOper.file"
|
||||||
|
#define USE_DCC
|
||||||
|
#define CMDHISTORY 15
|
||||||
|
#define MAXSUSPENDOPER 20
|
||||||
|
#define MAXCLIENTS 200
|
||||||
|
#define EGLINEFILE "NoGline.file"
|
||||||
|
#define AGLINEFILE "AGLhosts.file"
|
||||||
|
#define MHOSTFILE "Mhosts.file"
|
||||||
|
#define SHOSTFILE "Shosts.file"
|
||||||
|
#define MAXNOGLINES 100
|
||||||
|
#define MAXMHOST 200
|
||||||
|
#define MAXGLINEHOST 100
|
||||||
|
#define JUPE_CHANSERVICE
|
||||||
|
#define JUPE_BUGS
|
||||||
|
#define FLUDFILE "FLUD.log"
|
||||||
|
#define VERSION "Uworld2 -- the second calling -- v2.0+wild"
|
||||||
|
#define MYSERVER "198.245.27.2"
|
||||||
|
/*#define UPLINK "okc.ok.us.undernet.org"/* */
|
||||||
|
#define MYHOST "confusion.decade.net" /* */
|
||||||
|
#define SERVERNAME "Uworld.undernet.org"
|
||||||
|
#define SERVERINFO "Undernet Special Services Central Cordinator"
|
||||||
|
#define BOTNAME "Uworld"
|
||||||
|
#define BOTINFO "Uworld Version 2 :The channel saving bot"
|
||||||
|
#define DEFAULTPORT 4400
|
||||||
|
#define PASSWORD "hacker"
|
||||||
|
#define USERFILE "user.file"
|
||||||
|
#define PROTFILE "uworld.conf"
|
||||||
|
#define LOGFILE "Uworld.log"
|
||||||
|
#define FLOODFILE "Flood.log"
|
||||||
|
#define KILLFILE "kill.log"
|
||||||
|
#define HELPFILE "uworldhelp"
|
||||||
|
#define HELPBOT "UShelper"
|
||||||
|
#define OPERCHANNEL "uworld.floods"
|
||||||
|
#define MAXOPERCHAN 30
|
||||||
|
#define WASTEDUMP
|
||||||
|
|
||||||
|
#ifdef USE_DCC
|
||||||
|
#define S_ACTIVE 1
|
||||||
|
#define S_FREE 0
|
||||||
|
#define S_CLOSING -1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*#define CLONE_REPORT "define this to do clonebot processing" /* */
|
||||||
|
|
||||||
|
/* REPORT_BADNICK -- reports user nicknames that are possible bots
|
||||||
|
** or clones.
|
||||||
|
*/
|
||||||
|
#undef REPORT_BADNICK
|
||||||
|
|
||||||
|
#define HELPBOTINFO "helpbot undernet.org Uworld.undernet.org :IRC HELP /msg <botname> help <COMMAND> "
|
||||||
|
#define USHELP "Help_US"
|
||||||
|
#define USHELPINFO "helpbot undernet.org Uworld.undernet.org :/msg <botname> <command>"
|
||||||
|
#define IRCHELP "ircIIhelp"
|
||||||
|
#define NICKSERV "NickServ"
|
||||||
|
#define NICKSERVINFO "Nickserv undernet.org Uworld.undernet.org :The nick machine"
|
||||||
|
#define CHANSVR "ChanSvr"
|
||||||
|
#define CHANSVRINFO "chansvr undernet.org Uworld.undernet.org :The channel saving bot"
|
||||||
|
#define HELPPATH "HELP"
|
||||||
|
|
||||||
|
|
||||||
|
#define DEFAULT_LEVEL 0
|
||||||
|
#define DEBUG 0
|
||||||
|
#define NOHELP 0 /* undefine this if you want the help services online */
|
||||||
|
|
||||||
|
#undef MAIL_GLINE
|
||||||
|
#define TSC_CHAN "Uworld.clones"
|
||||||
|
#define OPEROK -2
|
||||||
|
#define GLINE -5
|
||||||
|
#define RGLINE -6
|
||||||
|
#define ASSHOLE -15
|
||||||
|
#define KILL -20
|
||||||
|
#define KTEL -10
|
||||||
|
#define AUTO_BAN -25
|
||||||
|
#define CLEARCHAN 10
|
||||||
|
#define CLEAROPS 11
|
||||||
|
#define CLEARBANS 12
|
||||||
|
#define CLEARMODE 13
|
||||||
|
#define KILTEL 15
|
||||||
|
#define OPCOM 20
|
||||||
|
#define SCAN 21
|
||||||
|
#define AUTO_BAN_OPER 25
|
||||||
|
#define AUTO_UNBAN_OPER 26
|
||||||
|
#define AUTO_GLINE 27
|
||||||
|
#define AUTO_UNGLINE 28
|
||||||
|
#define SHOW_HOSTS 29
|
||||||
|
#define OPER 100
|
||||||
|
#define NOOPER -4
|
||||||
|
#define MAXUSERS 4000
|
||||||
|
#define TIMER 768845314
|
||||||
|
#define MINCHARS 6
|
||||||
|
#define MAXBUFSIZE 4096
|
||||||
|
/*#define MAXBUFSIZE 1024
|
||||||
|
**#define INPUTBUFFERSIZE 200000
|
||||||
|
**#define INPUTBUFFERSIZE 200000
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define MAXFLOODHISTORY 20
|
||||||
|
#define MSGFLOOD 10
|
||||||
|
#define FLOODTIME 60
|
||||||
|
#undef FLOOD_BYHOST
|
||||||
|
|
||||||
|
struct aFloodProtect {
|
||||||
|
struct aFloodProtect *next;
|
||||||
|
struct aFloodProtect *prev;
|
||||||
|
char *hostname;
|
||||||
|
char *cmd;
|
||||||
|
int msgs;
|
||||||
|
int glined;
|
||||||
|
unsigned long reset;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef USE_DCC
|
||||||
|
struct aDccClient {
|
||||||
|
int fd;
|
||||||
|
int status;
|
||||||
|
char name[10];
|
||||||
|
char hostname[100];
|
||||||
|
char passwd[10];
|
||||||
|
time_t lasttime;
|
||||||
|
int umode;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define DCC_ANY (1 << 0)
|
||||||
|
#define DCC_WALLOPS (1 << 1)
|
||||||
|
#define DCC_GLN (1 << 2)
|
||||||
|
#define DCC_TSC (1 << 3)
|
||||||
|
#define DCC_COMMAND (1 << 4)
|
||||||
|
#define DCC_MMG (1 << 5)
|
||||||
|
#define DCC_WALL (1 << 6)
|
||||||
|
#define USERMODES "catgwml"
|
||||||
|
|
||||||
|
#define DCC_DEFAULT (DCC_ANY | DCC_WALLOPS)
|
||||||
148
daemon.c
Normal file
148
daemon.c
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
|
||||||
|
#undef OSF1
|
||||||
|
|
||||||
|
/*
|
||||||
|
** This code written by danny@wildstar.net <-- wildThang -->
|
||||||
|
** You are free to use this code under the stipulation that it
|
||||||
|
** is not used to design any sort of clone/flood, or otherwise harassing
|
||||||
|
** type of application. I wrote this quickly and tried to keep it as
|
||||||
|
** basic as i could think up but enough to keep it interesting.
|
||||||
|
** Use it to LEARN! let me know if you have questions about it.
|
||||||
|
** -- this notice must remain in all code based on this code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* DAEMON.C
|
||||||
|
This file handles moving program into the background.
|
||||||
|
and it also contains the routine needed to establish a port
|
||||||
|
in case of wanting to have it listne to a port as well
|
||||||
|
*/
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
/*#ifdef SIGTSTP */
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <sys/file.h>
|
||||||
|
/*#endif */
|
||||||
|
#include <sys/param.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
handle_kids()
|
||||||
|
{int pid;
|
||||||
|
|
||||||
|
#ifdef OSF1
|
||||||
|
union wait *status;
|
||||||
|
while( (pid = wait3(status,WNOHANG, (struct rusage *)0)) > 0) { }
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/* union wait status;
|
||||||
|
*/
|
||||||
|
int status;
|
||||||
|
while( (pid = wait3(&status,WNOHANG, (struct rusage *)0)) > 0) { }
|
||||||
|
|
||||||
|
#endif /* OSF1 */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* this function releases tty conrol and moves program into background */
|
||||||
|
goto_bg()
|
||||||
|
{
|
||||||
|
register int child,fd;
|
||||||
|
close(0); close(1); close(2);
|
||||||
|
|
||||||
|
if(getppid() == 1) goto out;
|
||||||
|
|
||||||
|
#ifdef SIGTTOU
|
||||||
|
signal(SIGTTOU,SIG_IGN);
|
||||||
|
#endif
|
||||||
|
#ifdef SIGTTIN
|
||||||
|
signal(SIGTTIN,SIG_IGN);
|
||||||
|
#endif
|
||||||
|
#ifdef SIGTSTP
|
||||||
|
signal(SIGTSTP,SIG_IGN);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if( (child =fork()) < 0)
|
||||||
|
perror("fork");
|
||||||
|
else if (child > 0)
|
||||||
|
exit(0);
|
||||||
|
|
||||||
|
#ifdef SIGTSTP
|
||||||
|
if (setpgrp(0,getpid()) == -1)
|
||||||
|
perror("SETGROUP");
|
||||||
|
|
||||||
|
if( (fd = open("/dev/tty",O_RDWR)) >= 0) {
|
||||||
|
ioctl(fd, TIOCNOTTY, (char *)NULL);
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if(setpgrp() == -1)
|
||||||
|
perror("set group");
|
||||||
|
|
||||||
|
signal(SIGHUP,SIG_IGN);
|
||||||
|
|
||||||
|
if( (child = fork()) < 0)
|
||||||
|
perror("cant fork");
|
||||||
|
else if (child > 0)
|
||||||
|
exit(0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
out:
|
||||||
|
for(fd=0;fd<NOFILE;fd++)
|
||||||
|
close(fd);
|
||||||
|
errno = 0;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef SIGTSTP
|
||||||
|
/*
|
||||||
|
signal(SIGCLD, handle_kids);
|
||||||
|
*/
|
||||||
|
#else
|
||||||
|
signal(SIGCLD, SIG_IGN);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/* this routine connects, binds, and listens to a port number */
|
||||||
|
int get_port(portnum)
|
||||||
|
int portnum;
|
||||||
|
{ int sock,l;
|
||||||
|
int opt = 1;
|
||||||
|
static struct sockaddr_in server;
|
||||||
|
|
||||||
|
sock = socket(AF_INET,SOCK_STREAM, 0);
|
||||||
|
if(sock < 0) exit(-1);
|
||||||
|
|
||||||
|
#ifdef SO_REUSEADDR
|
||||||
|
if(setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt)) < 0)
|
||||||
|
exit(-1);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
server.sin_family = AF_INET;
|
||||||
|
server.sin_addr.s_addr = INADDR_ANY;
|
||||||
|
server.sin_port = htons(portnum);
|
||||||
|
|
||||||
|
for(l=0;l<10;l++)
|
||||||
|
{ if(bind(sock, (struct sockaddr *) &server, sizeof(server)))
|
||||||
|
{ if(l > 9) exit(-1);
|
||||||
|
;
|
||||||
|
}
|
||||||
|
else break;
|
||||||
|
}
|
||||||
|
|
||||||
|
listen(sock,3);
|
||||||
|
return(sock);
|
||||||
|
}
|
||||||
|
|
||||||
64
debug.h
Normal file
64
debug.h
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
|
||||||
|
/***********************************************************/
|
||||||
|
/* Telnet3d (the single process telnet service) written by
|
||||||
|
/* <WildThang> (dvmitche@nssl.uoknor.edu) ALL RIGHTS RESERVED.
|
||||||
|
/*
|
||||||
|
/* Duplication of this code is not permitted without explicit
|
||||||
|
/* aproval from the authors (dvmitche@nssl.uoknor.edu) in whole
|
||||||
|
/* or in parts.
|
||||||
|
/*
|
||||||
|
/* This project was designed to be used on UNDERNET IRC ONLY.
|
||||||
|
/* No exceptions to this without explicit permission from the
|
||||||
|
/* authors (dvmitche@nssl.uoknor.edu)
|
||||||
|
/*
|
||||||
|
/* Special Thanks for your ideas and support with this project.
|
||||||
|
/* go out to:
|
||||||
|
/* mandar@vinson.ecn.uoknor.edu
|
||||||
|
/*
|
||||||
|
/* NOTE: dvmitche@nssl.uoknor.edu is now danny@chatsystems.com
|
||||||
|
/*************************************************************/
|
||||||
|
|
||||||
|
/*#define DEBUG D_ALL /* */
|
||||||
|
|
||||||
|
FILE *debug_log;
|
||||||
|
#define DEBUG_LOGFILE "/tmp/debug.log"
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define D_ALL (1 << 0)
|
||||||
|
#define D_WARNING (1 << 1)
|
||||||
|
#define D_ERROR (1 << 2)
|
||||||
|
#define D_FILE (1 << 3)
|
||||||
|
#define D_ERRNO (1 << 4)
|
||||||
|
#define D_MEMORY (1 << 5)
|
||||||
|
#define D_TRACE (1 << 6)
|
||||||
|
#define D_SOCKET (1 << 7)
|
||||||
|
#define D_INPUT (1 << 8)
|
||||||
|
#define D_KLINE (1 << 9)
|
||||||
|
#define D_NICKLIST (1 << 10)
|
||||||
|
#define D_BUFFER (1 << 11)
|
||||||
|
#define D_CHANLIST (1 << 12)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************/
|
||||||
|
/* SPECIAL THANKS to Robin Thelland (intru@hamming.info.polymtl.ca)
|
||||||
|
/* for his input and ideas in improving the debug functions
|
||||||
|
/******************************************************************/
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define my_debug(X,Y) if((DEBUG == D_ALL) || (DEBUG & X)) \
|
||||||
|
{ if(debug_log != NULL) { \
|
||||||
|
fprintf(debug_log,"[%s:%d] ",__FILE__,__LINE__); \
|
||||||
|
fprintf Y; fprintf(debug_log,"\n"); fflush(debug_log); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
# define my_debug(X,Y)
|
||||||
|
#endif
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define my_dump(X,Y) if(DUMPLOG == D_ALL) \
|
||||||
|
{ if(dump_log != NULL) { \
|
||||||
|
fprintf Y; fprintf(dump_log,"\n"); fflush(dump_log); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
# define my_debug(X,Y)
|
||||||
|
#endif
|
||||||
131
helpservice.c
Executable file
131
helpservice.c
Executable file
@@ -0,0 +1,131 @@
|
|||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "config.h"
|
||||||
|
extern char *token[],buf[];
|
||||||
|
extern int sevsck,botsck;
|
||||||
|
|
||||||
|
|
||||||
|
do_ushelp(int sck)
|
||||||
|
{int j,k,l;
|
||||||
|
char filename[512];
|
||||||
|
k=chk_num(0);
|
||||||
|
if(k > 10) return 0;
|
||||||
|
*token[0]++;
|
||||||
|
if (k > 3) {
|
||||||
|
*token[3]++;
|
||||||
|
strcpy(filename,HELPPATH);
|
||||||
|
|
||||||
|
if(k==4) {
|
||||||
|
if(!match(token[3],"ON")) {
|
||||||
|
strcat(filename,"/ON/ON");
|
||||||
|
catfile(filename,USHELP);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[3],"?")) {
|
||||||
|
strcat(filename,"/helplist");
|
||||||
|
catfile(filename,USHELP);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(!match(token[3],"ALAIS")) {
|
||||||
|
strcat(filename,"/ALIAS/ALIAS");
|
||||||
|
catfile(filename,USHELP);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(!match(token[3],"FAQ")) {
|
||||||
|
strcat(filename,"/FAQ/FAQ");
|
||||||
|
catfile(filename,USHELP);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for(j=3;j<k;j++) {
|
||||||
|
strcat(filename,"/");
|
||||||
|
strcat(filename,token[j]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(l=0;l<strlen(filename);l++) filename[l] = toupper(filename[l]);
|
||||||
|
catfile(filename,USHELP);
|
||||||
|
}
|
||||||
|
else if(!match(token[3],":help")) {
|
||||||
|
strcpy(filename,"HELP/helplist");
|
||||||
|
catfile(filename,USHELP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
do_helpirc(int sck)
|
||||||
|
{int j,k,l;
|
||||||
|
char filename[180];
|
||||||
|
k=chk_num(0);
|
||||||
|
*token[0]++;
|
||||||
|
if(k > 10) { sprintf(filename,"%s/JOIN",HELPPATH);
|
||||||
|
return; }
|
||||||
|
if (k > 3) {
|
||||||
|
*token[3]++;
|
||||||
|
strcpy(filename,HELPPATH);
|
||||||
|
|
||||||
|
if(k==4) {
|
||||||
|
if(!match(token[3],"ON")) {
|
||||||
|
strcat(filename,"/ON/ON");
|
||||||
|
catfile(filename,IRCHELP);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[3],"?")) {
|
||||||
|
strcat(filename,"/helplist");
|
||||||
|
catfile(filename,IRCHELP);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(!match(token[3],"ALAIS")) {
|
||||||
|
strcat(filename,"/ALIAS/ALIAS");
|
||||||
|
catfile(filename,IRCHELP);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(!match(token[3],"FAQ")) {
|
||||||
|
strcat(filename,"/FAQ/FAQ");
|
||||||
|
catfile(filename,USHELP);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(j=3;j<k;j++) {
|
||||||
|
strcat(filename,"/");
|
||||||
|
if((strlen(filename)+strlen(token[j])) > 500) return;
|
||||||
|
strcat(filename,token[j]);
|
||||||
|
if((strchr(filename,';')) || (strchr(filename,'|')))
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(l=0;l<strlen(filename);l++) filename[l] = toupper(filename[l]);
|
||||||
|
catfile(filename,IRCHELP);
|
||||||
|
}
|
||||||
|
else if(!match(token[3],":help")) {
|
||||||
|
strcpy(filename,"HELP/helplist");
|
||||||
|
catfile(filename,IRCHELP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
do_helpem(int sck)
|
||||||
|
{int j,k,l;
|
||||||
|
char filename[180];
|
||||||
|
k=chk_num(0);
|
||||||
|
*token[0]++;
|
||||||
|
if ((k > 4) && (!match(token[3],":help"))) {
|
||||||
|
strcpy(filename,"HELP/");
|
||||||
|
|
||||||
|
if(k=5)
|
||||||
|
if(!match(token[4],"ON")) strcpy(filename,"ON/ON");
|
||||||
|
else if(!match(token[4],"ALAIS")) strcpy(filename,"ALIAS/ALIAS");
|
||||||
|
else if(!match(token[4],"FAQ")) strcpy(filename,"FAQ/FAQ");
|
||||||
|
else strcat(filename,token[4]);
|
||||||
|
|
||||||
|
printf("filename for help -- %s\n",filename);
|
||||||
|
for(l=0;l<strlen(filename);l++) filename[l] = toupper(filename[l]);
|
||||||
|
catfile(filename,HELPBOT);
|
||||||
|
}
|
||||||
|
else if(!match(token[3],":help")) {
|
||||||
|
strcpy(filename,"HELP/helplist");
|
||||||
|
catfile(filename,HELPBOT);
|
||||||
|
}
|
||||||
|
}
|
||||||
13
logsrv/Makefile
Executable file
13
logsrv/Makefile
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
LIBS = -ltermcap
|
||||||
|
CC = cc
|
||||||
|
CFLAGS = -g
|
||||||
|
OBJECTS = client.o socket.o
|
||||||
|
|
||||||
|
SOURCES = client.c socket.c
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
${CC} ${CFLAGS} -c $<
|
||||||
|
|
||||||
|
client: ${OBJECTS}
|
||||||
|
${CC} ${CFLAGS} -o dataservd ${OBJECTS} ${LIBS}
|
||||||
|
|
||||||
8
logsrv/autostart
Executable file
8
logsrv/autostart
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/csh
|
||||||
|
cd /ecn/ecnstf0/irc/misc/dataserv
|
||||||
|
while(1)
|
||||||
|
if(-r core) then
|
||||||
|
rm core
|
||||||
|
dataservd
|
||||||
|
endif
|
||||||
|
end
|
||||||
295
logsrv/client.c
Normal file
295
logsrv/client.c
Normal file
@@ -0,0 +1,295 @@
|
|||||||
|
/*
|
||||||
|
WILDTHANG DATA SERVER VERSION 1.0
|
||||||
|
WildThang is dvmitche@midway.ecn.uoknor.edu
|
||||||
|
Please note that due to the nature of this program
|
||||||
|
I have not opted to comment the code. I have done this for
|
||||||
|
Various reasons!
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* do you REALLY think we need ALL of these *grin* */
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <termios.h>
|
||||||
|
|
||||||
|
#ifdef SIGTSTP
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <sys/file.h>
|
||||||
|
#endif
|
||||||
|
#include <sys/param.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
int PORTNUM = PORT,newsockfd,level;
|
||||||
|
int NUMUSERS=0; /* counter of users logged in */
|
||||||
|
int REFPROCESS=0;
|
||||||
|
char buf[512],*hostname;
|
||||||
|
char *Serv;
|
||||||
|
char tempp[512];
|
||||||
|
char sockbuf[512],*sptr;
|
||||||
|
char loginname[20];
|
||||||
|
|
||||||
|
extern char *linetok[]; /* from socketc. */
|
||||||
|
extern int USEIDENT; /* from socket.c */
|
||||||
|
extern char *get_server(char *fromhost); /* from socket.c */
|
||||||
|
|
||||||
|
/* WARNING:THIS MUST NOT BE CHANGED... ELSE STRANGE THINGS SEEM TO HAPPEN */
|
||||||
|
#define SOCKLINK 9219423
|
||||||
|
#define VERSION "TELCLIENT_1.8"
|
||||||
|
|
||||||
|
void handle_kids()
|
||||||
|
{int pid;
|
||||||
|
|
||||||
|
#ifdef OSF1
|
||||||
|
union wait *status;
|
||||||
|
status = (union wait *)malloc(sizeof(long));
|
||||||
|
|
||||||
|
while( (pid = wait3(status,WNOHANG, (struct rusage *)0)) > 0) { }
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
union wait status;
|
||||||
|
while( (pid = wait3(&status,WNOHANG, (struct rusage *)0)) > 0) { }
|
||||||
|
|
||||||
|
#endif /* OSF1 */
|
||||||
|
|
||||||
|
NUMUSERS--;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
main(argc,argv)
|
||||||
|
int argc;
|
||||||
|
char **argv;
|
||||||
|
{ int m,j,sockfd,insockfd,retlen,retval,outfd,infd,i,route;
|
||||||
|
struct sockaddr_in sockst,insock;
|
||||||
|
struct hostent *hp;
|
||||||
|
int opt=1;
|
||||||
|
struct sockaddr_in from;
|
||||||
|
int fromlen;
|
||||||
|
char hostid[255],hosthld[255];
|
||||||
|
|
||||||
|
signal(SIGCLD,handle_kids);
|
||||||
|
if(BACKGROUND) goto_bg();
|
||||||
|
|
||||||
|
|
||||||
|
if(argc > 1) { /* process command line options */
|
||||||
|
if(*argv[1] == '-') {
|
||||||
|
*argv[1]++;
|
||||||
|
if(*argv[1]=='p')
|
||||||
|
if(atoi(argv[2])>6000) PORTNUM = atoi(argv[2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((sockfd=socket(AF_INET,SOCK_STREAM,0))<0) {
|
||||||
|
perror("socked");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
if(!BACKGROUND) printf("GOT SOCKET %d\n",sockfd);
|
||||||
|
#ifdef SO_REUSEADDR
|
||||||
|
if (setsockopt(sockfd,SOL_SOCKET, SO_REUSEADDR,&opt,sizeof(opt)) <0)
|
||||||
|
{ exit(-1); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
sockst.sin_family=AF_INET;
|
||||||
|
sockst.sin_addr.s_addr=INADDR_ANY;
|
||||||
|
sockst.sin_port=htons(PORTNUM);
|
||||||
|
|
||||||
|
if ((bind(sockfd,(struct sockaddr *)&sockst,sizeof(sockst)))<0) {
|
||||||
|
perror("bind");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
if(!BACKGROUND) printf("BIND SOCKET Complete\n");
|
||||||
|
|
||||||
|
if ((listen(sockfd,1))<0) {
|
||||||
|
perror("listen");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
if(!BACKGROUND) printf("Listening for connections\n");
|
||||||
|
|
||||||
|
while(1)
|
||||||
|
{ if ((newsockfd=accept(sockfd,(struct sockaddr *) 0,(int *) 0))<0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
/* will receive a sig from dying children */
|
||||||
|
}
|
||||||
|
if(!BACKGROUND) printf("GOT CONNECTION %d\n",newsockfd);
|
||||||
|
|
||||||
|
if (!fork())
|
||||||
|
{
|
||||||
|
close(sockfd);
|
||||||
|
|
||||||
|
do_menu(newsockfd);
|
||||||
|
close(newsockfd);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
close(newsockfd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int bbs_cat(sck,filename)
|
||||||
|
int sck;
|
||||||
|
char *filename;
|
||||||
|
{
|
||||||
|
FILE *fp;
|
||||||
|
char *sbuf;
|
||||||
|
char line[512],command[512];
|
||||||
|
if ( (fp = fopen(filename,"r")) == NULL)
|
||||||
|
return 0;
|
||||||
|
for(; ;) {
|
||||||
|
if(fgets(line,80,fp) == NULL) { fclose(fp); return 1; }
|
||||||
|
if(write(sck,line,strlen(line)) != strlen(line)) {
|
||||||
|
fclose(fp); return 1; }
|
||||||
|
if(write(sck,"",0) != 0) {
|
||||||
|
fclose(fp); return 1; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int bbs_pcom(sck,command)
|
||||||
|
int sck;
|
||||||
|
char *command;
|
||||||
|
{
|
||||||
|
FILE *fp;
|
||||||
|
char *sbuf;
|
||||||
|
char line[512];
|
||||||
|
if ( (fp = popen(command,"r")) == NULL)
|
||||||
|
return 0;
|
||||||
|
for(; ;) {
|
||||||
|
if(fgets(line,80,fp) == NULL) { pclose(fp); return 1; }
|
||||||
|
if(write(sck,line,strlen(line)) != strlen(line)) {
|
||||||
|
pclose(fp); return 1; }
|
||||||
|
if(write(sck,"",0) != 0) {
|
||||||
|
pclose(fp); return 1; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int bbs_grep(sck,filename)
|
||||||
|
int sck;
|
||||||
|
char *filename;
|
||||||
|
{
|
||||||
|
FILE *fp;
|
||||||
|
int i;
|
||||||
|
char *sbuf,*token[256];
|
||||||
|
char line[512],command[512];
|
||||||
|
strcpy(line,sockbuf);
|
||||||
|
|
||||||
|
token[i=0]=strtok(sockbuf," ");
|
||||||
|
while(token[++i]=strtok(NULL, " ")); token[i]=NULL;
|
||||||
|
|
||||||
|
if(i < 1) return 0;
|
||||||
|
|
||||||
|
sprintf(command,"%s -i %s %s",GREPCOM,token[0],filename);
|
||||||
|
|
||||||
|
bbs_pcom(sck,command);
|
||||||
|
}
|
||||||
|
|
||||||
|
int bbs_tail(sck,filename)
|
||||||
|
int sck;
|
||||||
|
char *filename;
|
||||||
|
{
|
||||||
|
FILE *fp;
|
||||||
|
int i;
|
||||||
|
char *sbuf,*token[256];
|
||||||
|
char line[512],command[512];
|
||||||
|
strcpy(line,sockbuf);
|
||||||
|
|
||||||
|
token[i=0]=strtok(sockbuf," ");
|
||||||
|
while(token[++i]=strtok(NULL, " ")); token[i]=NULL;
|
||||||
|
|
||||||
|
if(i < 1) return 0;
|
||||||
|
|
||||||
|
sprintf(command,"%s -50 %s",TAILCOM,filename);
|
||||||
|
|
||||||
|
bbs_pcom(sck,command);
|
||||||
|
}
|
||||||
|
|
||||||
|
goto_bg()
|
||||||
|
{
|
||||||
|
register int child,fd;
|
||||||
|
#ifdef SUN
|
||||||
|
fclose(stdin); fclose(stdout); fclose(stderr);
|
||||||
|
#else
|
||||||
|
close(0); close(1); close(2);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if(getppid() == 1) goto out;
|
||||||
|
|
||||||
|
#ifdef SIGTTOU
|
||||||
|
signal(SIGTTOU,SIG_IGN);
|
||||||
|
#endif
|
||||||
|
#ifdef SIGTTIN
|
||||||
|
signal(SIGTTIN,SIG_IGN);
|
||||||
|
#endif
|
||||||
|
#ifdef SIGTSTP
|
||||||
|
signal(SIGTSTP,SIG_IGN);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if( (child =fork()) < 0)
|
||||||
|
perror("fork");
|
||||||
|
else if (child > 0)
|
||||||
|
exit(0);
|
||||||
|
|
||||||
|
#ifdef SIGTSTP
|
||||||
|
if (setpgrp(0,getpid()) == -1)
|
||||||
|
perror("SETGROUP");
|
||||||
|
|
||||||
|
if( (fd = open("/dev/tty",O_RDWR)) >= 0) {
|
||||||
|
ioctl(fd, TIOCNOTTY, (char *)NULL);
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if(setpgrp() == -1)
|
||||||
|
perror("set group");
|
||||||
|
|
||||||
|
signal(SIGHUP,SIG_IGN);
|
||||||
|
|
||||||
|
if( (child = fork()) < 0)
|
||||||
|
perror("cant fork");
|
||||||
|
else if (child > 0)
|
||||||
|
exit(0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
out:
|
||||||
|
for(fd=0;fd<NOFILE;fd++)
|
||||||
|
close(fd);
|
||||||
|
errno = 0;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef SIGTSTP
|
||||||
|
signal(SIGCLD, handle_kids);
|
||||||
|
#else
|
||||||
|
signal(SIGCLD, SIG_IGN);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
do_menu(int sckfd)
|
||||||
|
{
|
||||||
|
writeln(sckfd," Welcome to WildThang's Uworld Log report Service\n");
|
||||||
|
writeln(sckfd," ==================================================\n");
|
||||||
|
writeln(sckfd," please specify the word you wish to search for\n");
|
||||||
|
writeln(sckfd," from the log database. some special commands are:\n");
|
||||||
|
writeln(sckfd," ALL -- Displays the entire log file to you\n");
|
||||||
|
writeln(sckfd," TAIL -- Displays the last 50 lines of the log\n");
|
||||||
|
writeln(sckfd," KTEL -- Displays the activity of BANNED telusers\n");
|
||||||
|
writeln(sckfd," KILL -- Displays the activity of KILLS by IRCops\n");
|
||||||
|
writeln(sckfd," <word> -- scans log file for occurances of 'word'\n");
|
||||||
|
writeln(sckfd," ==================================================\n");
|
||||||
|
|
||||||
|
writeln(sckfd,"\nEnter Choice: (press return when done) :");
|
||||||
|
readcom(sckfd,10);
|
||||||
|
if(strlen(sockbuf) < 1){ close(sckfd); exit(0); }
|
||||||
|
|
||||||
|
if(!strncasecmp(sockbuf,"tail",4)) bbs_tail(newsockfd,DATAFILE);
|
||||||
|
else if(!strncasecmp(sockbuf,"all",3)) bbs_cat(newsockfd,DATAFILE);
|
||||||
|
else bbs_grep(newsockfd,DATAFILE);
|
||||||
|
|
||||||
|
}
|
||||||
14
logsrv/com.c
Normal file
14
logsrv/com.c
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
extern char *sptr,sockbuf[512];
|
||||||
|
|
||||||
|
/* i kept this seperate for ease in adding future commands. */
|
||||||
|
void bbs_com(sck)
|
||||||
|
int sck;
|
||||||
|
{
|
||||||
|
if(!match(sockbuf,"irc")) irc(sck,0);
|
||||||
|
else irc(sck,0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
26
logsrv/config.h
Executable file
26
logsrv/config.h
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
/* SYSTEM SPECIFIC CONFIGURATIONS */
|
||||||
|
/* ONLY ONE OF THE FOLLOWING MAY BE DEFINED */
|
||||||
|
|
||||||
|
#undef ULTRIX /* this should work for most systems */
|
||||||
|
#define OSF1 /* use this on DEC alpha machines */
|
||||||
|
#undef NEED_SETENV /* use this if your system doesnt support setenv() */
|
||||||
|
#define SUN
|
||||||
|
|
||||||
|
/* list of servers for client */
|
||||||
|
/* defualt port all ports must be > 6000 if specified from commandline */
|
||||||
|
#define PORT 9500
|
||||||
|
#define DATAFILE "/ecn/ecnstf0/danny/dvmitche/uworld/Uworld.log"
|
||||||
|
#define GREPCOM "/usr/ucb/grep"
|
||||||
|
#define TAILCOM "/usr/ucb/tail"
|
||||||
|
|
||||||
|
#define MAXLINE 512
|
||||||
|
#define TRUE 1
|
||||||
|
#define FALSE 0
|
||||||
|
#define BACKGROUND 1 /* +-integer for background */
|
||||||
|
|
||||||
|
#ifdef SUN
|
||||||
|
#ifndef NEED_SETENV
|
||||||
|
#define NEED_SETENV
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
144
logsrv/socket.c
Normal file
144
logsrv/socket.c
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <pwd.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/file.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
extern char buf[512];
|
||||||
|
extern char sockbuf[512],*sptr;
|
||||||
|
extern int PORTNUM;
|
||||||
|
extern int level;
|
||||||
|
|
||||||
|
|
||||||
|
char *linetok[256];
|
||||||
|
int USEIDENT= 0;
|
||||||
|
int call_socket(hostname,portnum)
|
||||||
|
char *hostname;
|
||||||
|
int portnum;
|
||||||
|
{ struct sockaddr_in sa;
|
||||||
|
struct hostent *hp;
|
||||||
|
int a, s;
|
||||||
|
if((hp=gethostbyname(hostname))==NULL) {
|
||||||
|
errno=ECONNREFUSED;
|
||||||
|
return(-1); }
|
||||||
|
bzero(&sa, sizeof(sa));
|
||||||
|
bcopy(hp->h_addr, (char *)&sa.sin_addr, hp->h_length);
|
||||||
|
sa.sin_family = hp->h_addrtype;
|
||||||
|
sa.sin_port = htons((u_short)portnum);
|
||||||
|
if((s=socket(hp->h_addrtype, SOCK_STREAM, 0)) < 0) return(-1);
|
||||||
|
if(connect(s,(struct sockaddr *) &sa, sizeof(sa)) < 0) {
|
||||||
|
close(s);
|
||||||
|
return(-1); }
|
||||||
|
return(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
int readln(int sckfd)
|
||||||
|
{ int i=0,valid=1; char c;
|
||||||
|
while(valid) {
|
||||||
|
if(read(sckfd,&c,1)<1) return(0);
|
||||||
|
if(i<511 && c != '\n') sockbuf[i++]=c; else valid=0; }
|
||||||
|
sockbuf[i]='\0'; return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int writeln(sckfd,outbuf)
|
||||||
|
int sckfd;
|
||||||
|
char *outbuf;
|
||||||
|
{ int to=0;
|
||||||
|
if(write(sckfd, outbuf, strlen(outbuf)) < to )
|
||||||
|
return(0);
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int readcom(sck,tout)
|
||||||
|
int sck;
|
||||||
|
int tout;
|
||||||
|
{
|
||||||
|
int sok;
|
||||||
|
time_t time_in,time_out;
|
||||||
|
int dumb = 1;
|
||||||
|
fd_set readfs;
|
||||||
|
struct timeval *zimeout;
|
||||||
|
time_in=time(NULL);
|
||||||
|
while(1) {
|
||||||
|
time_out = time(NULL);
|
||||||
|
if(time_out - time_in > tout) return 0;
|
||||||
|
FD_ZERO(&readfs);
|
||||||
|
FD_SET(sck,&readfs);
|
||||||
|
if(select(FD_SETSIZE, &readfs, NULL, NULL,(dumb ? NULL : zimeout))) {
|
||||||
|
|
||||||
|
if(FD_ISSET(sck,&readfs)) {
|
||||||
|
if(!BACKGROUND) puts("READING REPLY");
|
||||||
|
sok = readln(sck);
|
||||||
|
if (sok) {
|
||||||
|
sptr=sockbuf;
|
||||||
|
*(sptr+strlen(sockbuf)-1)='\0';
|
||||||
|
return 1;
|
||||||
|
} }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int do_auth(hostname,sockfd)
|
||||||
|
char *hostname;
|
||||||
|
int sockfd;
|
||||||
|
{ int authfd,ulen,tlen,lcnt,ct;
|
||||||
|
struct sockaddr_in sock,us,them;
|
||||||
|
|
||||||
|
writeln(sockfd,"Checking your identification\n");
|
||||||
|
|
||||||
|
if( (authfd=call_socket(hostname,113)) < 0) /* host not running identd */
|
||||||
|
{
|
||||||
|
USEIDENT=0;
|
||||||
|
sprintf(buf,"[%d] [%s] You should ask your sysadmin to instal identd\n",
|
||||||
|
authfd,hostname);
|
||||||
|
writeln(sockfd,buf);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(getsockname(sockfd,(struct sockaddr *)&us,&ulen))
|
||||||
|
{ if(!BACKGROUND) puts("getsockname failed");
|
||||||
|
USEIDENT=0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if(getpeername(sockfd,(struct sockaddr *)&them,&tlen))
|
||||||
|
{ if(!BACKGROUND) puts("getpeername failed");
|
||||||
|
USEIDENT=0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf(buf,"%u,%u \r\n",
|
||||||
|
(unsigned int) ntohs(them.sin_port),
|
||||||
|
(unsigned int) PORTNUM);
|
||||||
|
|
||||||
|
writeln(authfd,buf);
|
||||||
|
writeln(sockfd,"CHECKING IDENTD\n");
|
||||||
|
|
||||||
|
readcom(authfd,15);
|
||||||
|
if(!BACKGROUND) puts(sockbuf);
|
||||||
|
|
||||||
|
linetok[lcnt=0]=strtok(sockbuf," ");
|
||||||
|
while(linetok[++lcnt]=strtok(NULL, " ")); linetok[lcnt]=NULL;
|
||||||
|
|
||||||
|
if((lcnt > 7) && (!strcmp(linetok[4],"USERID")))
|
||||||
|
{ USEIDENT = 1;
|
||||||
|
sprintf(buf,"Greetings %s@%s, Welcome to our system\n",linetok[8],
|
||||||
|
hostname);
|
||||||
|
writeln(sockfd,buf);
|
||||||
|
if(!BACKGROUND)
|
||||||
|
{ printf("GOT IT %s %d\n",linetok[8],lcnt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else USEIDENT = 0;
|
||||||
|
close(authfd);
|
||||||
|
}
|
||||||
125
map.c
Normal file
125
map.c
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <malloc.h>
|
||||||
|
|
||||||
|
|
||||||
|
struct aServer {
|
||||||
|
struct aServer *next;
|
||||||
|
struct aServer *down;
|
||||||
|
char *name;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
struct aServData {
|
||||||
|
int count;
|
||||||
|
int list;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct aServer *MYuplink=NULL;
|
||||||
|
struct aServData ServerData;
|
||||||
|
|
||||||
|
|
||||||
|
int LinkServer(char *server, char *uplink)
|
||||||
|
{
|
||||||
|
struct aServer *ServerID;
|
||||||
|
|
||||||
|
ServerID=newserver();
|
||||||
|
ServerID->name=strdup(server);
|
||||||
|
|
||||||
|
if(MYuplink==NULL)
|
||||||
|
{ MYuplink=ServerID;
|
||||||
|
ServerData.list=1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return (AddServer(ServerID,uplink,&MYuplink));
|
||||||
|
}
|
||||||
|
|
||||||
|
struct aServer *newserver()
|
||||||
|
{ struct aServer *newserver;
|
||||||
|
|
||||||
|
newserver= (struct aServer *) calloc(1,sizeof(struct aServer));
|
||||||
|
ServerData.count++;
|
||||||
|
|
||||||
|
return newserver;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int AddServer(struct aServer *newserver,char *uplink,struct aServer **Startid)
|
||||||
|
{
|
||||||
|
struct aServer **UplinkID;
|
||||||
|
struct aServer *ServerID;
|
||||||
|
|
||||||
|
Uplinkid=FindServer(uplink,Startid);
|
||||||
|
if(Uplinkid == NULL) return 0; /* ERROR HERE */
|
||||||
|
ServerID= *Uplinkid;
|
||||||
|
|
||||||
|
/* This is a DOWNLINK of the said server..
|
||||||
|
** Downlinks go DOWN ->next -> next -> next ...
|
||||||
|
*/
|
||||||
|
if( ServerID->down == NULL)
|
||||||
|
{ ServerID->down = newserver;
|
||||||
|
ServerData.list++;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
ServerID=Serverid->down;
|
||||||
|
while(ServerID->next !=NULL) ServerID=ServerID->next;
|
||||||
|
ServerID->next=newserver;
|
||||||
|
ServerData.list++;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct aServer **FindServer(char *name,struct aServer **Startid)
|
||||||
|
{
|
||||||
|
struct aServer *SearchID;
|
||||||
|
struct aServer **ServerID;
|
||||||
|
|
||||||
|
if(!StartID ) return NULL;
|
||||||
|
|
||||||
|
SearchID= *Startid;
|
||||||
|
|
||||||
|
if(!strcasecmp(name,StartID->name)) return Startid;
|
||||||
|
|
||||||
|
/* This is not the server we are looking for */
|
||||||
|
** First scan NEXT as far as we can... Then try Down
|
||||||
|
** We are not modifying the information in the structures
|
||||||
|
** in this calls
|
||||||
|
*/
|
||||||
|
|
||||||
|
if( (ServerID=FindServer(name,&(SearchID->next))) != NULL) return ServerID;
|
||||||
|
if( (ServerID=FindServer(name,&(SearchID->down))) != NULL) return ServerID;
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void dumpsubmap(struct aServer *server)
|
||||||
|
{
|
||||||
|
static char prefix[80]="";
|
||||||
|
static int offset=0;
|
||||||
|
char localbuf[512];
|
||||||
|
|
||||||
|
if(server==NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(server->next==NULL)
|
||||||
|
{ sprintf(localbuf,"PRIVMSG WildThang :%s`-%s",prefix,server->name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ sprintf(localbuf,"PRIVMSG WildThang :%s|-%s",prefix,server->name);
|
||||||
|
}
|
||||||
|
writeln(botsck,localbuf);
|
||||||
|
|
||||||
|
|
||||||
|
if(server->next!=NULL)
|
||||||
|
strcpy(prefix+offset,"| ");
|
||||||
|
else
|
||||||
|
strcpy(prefix+offset," ");
|
||||||
|
|
||||||
|
offset+=2;
|
||||||
|
dumpsubmap(server->down);
|
||||||
|
offset-=2;
|
||||||
|
prefix[offset]='\0';
|
||||||
|
dumpsubmap(server->next);
|
||||||
|
}
|
||||||
41
match.c
Executable file
41
match.c
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
/************************************
|
||||||
|
* match(string1,string2) *
|
||||||
|
* wild card matching routine *
|
||||||
|
* origionally for Ultima1.0 *
|
||||||
|
* Written by WildThang *
|
||||||
|
* dvmitche@midway.ecn.uoknor.edu *
|
||||||
|
* based on ideas by hendrix *
|
||||||
|
************************************/
|
||||||
|
|
||||||
|
/* int do_match(char *string1,char *string2)
|
||||||
|
returns 0 if match
|
||||||
|
returns 1 if do not match */
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
int match(char *check,char *orig)
|
||||||
|
{
|
||||||
|
while(*check == '*' ||
|
||||||
|
tolower(*check)==tolower(*orig) ||
|
||||||
|
*check == '?')
|
||||||
|
if(*check == '*')
|
||||||
|
if(*++check) {
|
||||||
|
while(*orig)
|
||||||
|
if(!match(check,orig++)) return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
else if (!*check)
|
||||||
|
return 0;
|
||||||
|
else if (!*orig)
|
||||||
|
return 1;
|
||||||
|
else {
|
||||||
|
++check;
|
||||||
|
++orig;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
49
myfile.h
Normal file
49
myfile.h
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
#define HOSTHASH 4000
|
||||||
|
#ifdef __MYFILE__
|
||||||
|
struct aHosthash *host_hashid=NULL;
|
||||||
|
#else
|
||||||
|
extern struct aHosthash *host_hashid;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct aGline {
|
||||||
|
char *mask;
|
||||||
|
char *nick;
|
||||||
|
time_t time;
|
||||||
|
char *comment;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct aUser {
|
||||||
|
struct aUser *next;
|
||||||
|
struct aChan *chanlist;
|
||||||
|
int level;
|
||||||
|
int numbans;
|
||||||
|
int numkicks;
|
||||||
|
char mask[150];
|
||||||
|
char nick[150];
|
||||||
|
time_t timeout;
|
||||||
|
int vrfy;
|
||||||
|
char passwd[10];
|
||||||
|
char comment[512];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct aHost {
|
||||||
|
struct aHost *next;
|
||||||
|
char *hostname;
|
||||||
|
int count;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct aHosthash {
|
||||||
|
struct aHost *host[HOSTHASH];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct aChan {
|
||||||
|
struct aChan *next;
|
||||||
|
char name[255];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct aUser *chklevel(char *fromhost);
|
||||||
|
struct aUser *vrfy_oper(char *fromhost,char *passwd);
|
||||||
|
char *my_strcpy(char *inp);
|
||||||
|
int my_strfree(char *inp);
|
||||||
|
struct aHosthash *new_hosthash();
|
||||||
|
|
||||||
1579
nicklist.c
Normal file
1579
nicklist.c
Normal file
File diff suppressed because it is too large
Load Diff
93
nicklist.h
Normal file
93
nicklist.h
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
|
||||||
|
|
||||||
|
/***********************************************************/
|
||||||
|
/* Telnet3d (the single process telnet service) written by
|
||||||
|
/* <WildThang> (dvmitche@nssl.uoknor.edu) ALL RIGHTS RESERVED.
|
||||||
|
/*
|
||||||
|
/* Duplication of this code is not permitted without explicit
|
||||||
|
/* aproval from the authors (dvmitche@nssl.uoknor.edu) in whole
|
||||||
|
/* or in parts.
|
||||||
|
/*
|
||||||
|
/* This project was designed to be used on UNDERNET IRC ONLY.
|
||||||
|
/* No exceptions to this without explicit permission from the
|
||||||
|
/* authors (dvmitche@nssl.uoknor.edu) (intru@step.polymtl.ca)
|
||||||
|
/*
|
||||||
|
/* Special Thanks for your ideas and support with this project.
|
||||||
|
/* go out to:
|
||||||
|
/* mandar@vinson.ecn.uoknor.edu
|
||||||
|
/*************************************************************/
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
#define MAXNICKLEN 15
|
||||||
|
|
||||||
|
/* Original value 26 */
|
||||||
|
#define MAXNICKHASH 59
|
||||||
|
/*
|
||||||
|
#define MAXNICKHASH 2600
|
||||||
|
*/
|
||||||
|
#define KLINE_FILE "kline.request"
|
||||||
|
struct nicklist {
|
||||||
|
struct nicklist *next;
|
||||||
|
struct nicklist *prev;
|
||||||
|
int level;
|
||||||
|
char oper;
|
||||||
|
char vrfy;
|
||||||
|
char *serv;
|
||||||
|
char *name;
|
||||||
|
char *uname;
|
||||||
|
char *host;
|
||||||
|
char umode;
|
||||||
|
int hops;
|
||||||
|
int sck;
|
||||||
|
time_t ts;
|
||||||
|
int nickchange;
|
||||||
|
time_t lastchange;
|
||||||
|
char *ip;
|
||||||
|
char *iphost;
|
||||||
|
};
|
||||||
|
struct nick_hash {
|
||||||
|
struct nicklist *host[MAXNICKHASH];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct nick_hash *new_nick_hash();
|
||||||
|
struct nicklist *new_nicklist();
|
||||||
|
int add_nickhash(struct nicklist *nicklistid);
|
||||||
|
int add_nicklist(struct nicklist *nicklistid,struct nicklist **startid);
|
||||||
|
int remove_nicklist(struct nicklist *nicklistid);
|
||||||
|
int myfree_nicklist(struct nicklist *nicklistid);
|
||||||
|
int nick_oper(char *nickname,int flag);
|
||||||
|
int nick_level(char *nickname);
|
||||||
|
char *nick_userhost(char *nickname);
|
||||||
|
int add_newuser(char *mytok[],int args,int offset);
|
||||||
|
int seperate_nicklist(struct nicklist *nicklistid);
|
||||||
|
struct nicklist *find_nicklist(char *name);
|
||||||
|
int switch_nickname(char *mytok[],int args);
|
||||||
|
int get_hashid(char *name,int MAXHASH);
|
||||||
|
char *my_strcpy(char *inp);
|
||||||
|
int my_strfree(char *inp);
|
||||||
|
int nick_info(char *nick,int sck);
|
||||||
|
int remove_nickname(char *name);
|
||||||
|
int total_users();
|
||||||
|
int scan_userid(char *fromhost);
|
||||||
|
int destroy_nickhash();
|
||||||
|
int dump_nicklist();
|
||||||
|
int add_kline(struct nicklist *nicklistid,char *filename);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __NICKLIST__
|
||||||
|
long MEM_nicklist_total = 0;
|
||||||
|
long MEM_nickhash_total = 0;
|
||||||
|
int MEM_nicklist_cnt = 0;
|
||||||
|
long MEM_nicklist_used = 0;
|
||||||
|
long MEM_string=0;
|
||||||
|
struct nick_hash *nick_hashid=NULL;
|
||||||
|
#else
|
||||||
|
extern long MEM_nicklist_total;
|
||||||
|
extern long MEM_nickhash_total;
|
||||||
|
extern int MEM_nicklist_cnt;
|
||||||
|
extern long MEM_nicklist_used;
|
||||||
|
extern struct nick_hash *nick_hashid;
|
||||||
|
extern long MEM_string;
|
||||||
|
#endif
|
||||||
13
nickserv.c
Executable file
13
nickserv.c
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
extern char buf[],sockbuf[], *token[];
|
||||||
|
extern int sevsck,botsck;
|
||||||
|
nickserv(char *target)
|
||||||
|
{
|
||||||
|
sprintf(buf,":%s NOTICE %s :You are using a registered nick\n",
|
||||||
|
NICKSERV,target); writeln(sevsck,buf);
|
||||||
|
sprintf(buf,"433 %s :Registered Nickname Please Choose another\n",
|
||||||
|
target); writeln(sevsck,buf);
|
||||||
|
}
|
||||||
11
servers.admin
Normal file
11
servers.admin
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
norman.ok.us.undernet.org
|
||||||
|
los-angeles.ca.us.undernet.org
|
||||||
|
London.UK.eu.Undernet.org
|
||||||
|
toronto.on.ca.undernet.org
|
||||||
|
Dublin.IE.EU.Undernet.Org
|
||||||
|
auckland.nz.undernet.org
|
||||||
|
okc.ok.us.undernet.org
|
||||||
|
phoenix.az.us.undernet.org
|
||||||
|
Chicago.IL.US.Undernet.org
|
||||||
|
Goettingen.DE.EU.undernet.org
|
||||||
|
Oslo-R.NO.EU.Undernet.org
|
||||||
253
sevnum.c
Executable file
253
sevnum.c
Executable file
@@ -0,0 +1,253 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include "config.h"
|
||||||
|
#include "myfile.h"
|
||||||
|
#include "nicklist.h"
|
||||||
|
|
||||||
|
extern char UPLINK[];
|
||||||
|
extern char *token[], buf[], sockbuf[];
|
||||||
|
extern int sevsck, botsck;
|
||||||
|
extern int status,doclearkick,doclearops,docleanchan,docleanops;
|
||||||
|
extern time_t NOWTIME;
|
||||||
|
extern char channel[];
|
||||||
|
extern char opcommand[];
|
||||||
|
extern char comment[],orig[];
|
||||||
|
int have_names=0,have_bans=0;
|
||||||
|
extern int CLEAR_KICK;
|
||||||
|
char modelist[10];
|
||||||
|
char modemask[512];
|
||||||
|
int modecnt;
|
||||||
|
extern int DccCtr;
|
||||||
|
|
||||||
|
|
||||||
|
sevnum(int num)
|
||||||
|
{
|
||||||
|
int i,j,k;
|
||||||
|
char temp[512];
|
||||||
|
char mask[100];
|
||||||
|
struct aUser *myuser;
|
||||||
|
struct nicklist *nicklistid;
|
||||||
|
char *tptr,*sptr;
|
||||||
|
static time_t lastkill=0;
|
||||||
|
k=chk_num(0);
|
||||||
|
if(!lastkill) lastkill=NOWTIME-120;
|
||||||
|
switch(num) {
|
||||||
|
case 307: /* USERIP */
|
||||||
|
/*okc.ok.us.undernet.org 307 wildtest :WildThang*=-~danny@207.3.94.229*/
|
||||||
|
if(!token[3] || ((tptr=strchr(token[3],'=')) == NULL)) break;
|
||||||
|
token[3]++;
|
||||||
|
if(*(tptr-1) == '*') *(tptr-1)='\0';
|
||||||
|
else *tptr='\0';
|
||||||
|
if( (nicklistid = find_nicklist(token[3])) == NULL) break;
|
||||||
|
if( (tptr=strchr(tptr,'@'))!= NULL) break;
|
||||||
|
if(nicklistid->iphost) free(nicklistid->iphost);
|
||||||
|
nicklistid->iphost=strdup(tptr+1);
|
||||||
|
break;
|
||||||
|
case 313:
|
||||||
|
if(status == SHOW_HOSTS) show_hosts(token[3],1);
|
||||||
|
else if(status == KILTEL)
|
||||||
|
{ sprintf(buf,":%s NOTICE %s :You have been Terminated by %s\n",CHANSVR,channel,token[3]);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
sprintf(buf,":%s NOTICE %s :seeya Terminated by %s\n",
|
||||||
|
CHANSVR,channel,token[3]);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
sprintf(buf,"109 %s :Termination\n",channel);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
sprintf(buf,":%s NOTICE %s :%s has been Shot!\n",
|
||||||
|
CHANSVR,token[3], channel);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
else if(status == SCAN)
|
||||||
|
{
|
||||||
|
sprintf(buf,
|
||||||
|
":%s NOTICE %s :Total Users with %s userid is %d\n",
|
||||||
|
CHANSVR,channel,opcommand,scan_userid(opcommand));
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 324:
|
||||||
|
if((status == CLEARCHAN) || (status == CLEARMODE))
|
||||||
|
{
|
||||||
|
*token[4]='-';
|
||||||
|
strcpy(temp,token[4]);
|
||||||
|
for(i=5;i<k;i++) {
|
||||||
|
strcat(temp," ");
|
||||||
|
strcat(temp,token[i]);
|
||||||
|
}
|
||||||
|
sprintf(buf,"MODE %s %s 0\n",channel,temp);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
if(status == CLEARMODE) status=0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 353:
|
||||||
|
if((status == CLEARCHAN) || (status == CLEAROPS))
|
||||||
|
{ char modechar[6];
|
||||||
|
char nicklist[60];
|
||||||
|
char kickbuf[255];
|
||||||
|
char hostmask[55];
|
||||||
|
int nck;
|
||||||
|
int opcnt=0;
|
||||||
|
|
||||||
|
strcpy(modechar,"-");
|
||||||
|
nicklist[0]='\0';
|
||||||
|
for(nck=5;nck<k;nck++)
|
||||||
|
{ if(*token[nck]==':') token[nck]++;
|
||||||
|
|
||||||
|
if((status == CLEARCHAN) && (docleanops) &&
|
||||||
|
(*token[nck]=='@'))
|
||||||
|
{ *token[nck]++;
|
||||||
|
if(*token[nck]=='+') *token[nck]++;
|
||||||
|
if (GetUserHost(token[nck],hostmask) <1) continue;
|
||||||
|
if(hostmask[0]!='\0')
|
||||||
|
{
|
||||||
|
do_gline(hostmask,"CHANNELBLAST",
|
||||||
|
(comment[0]!='\0')?comment:
|
||||||
|
"BANNED by Channel Cleanup", 600);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if((status == CLEARCHAN) && (docleanchan))
|
||||||
|
{
|
||||||
|
if(*token[nck]=='@') *token[nck]++;
|
||||||
|
if(*token[nck]=='+') *token[nck]++;
|
||||||
|
if (GetUserHost(token[nck],hostmask) <1) continue;
|
||||||
|
if(hostmask[0]!='\0')
|
||||||
|
{
|
||||||
|
do_gline(hostmask,"CHANNELBLAST",
|
||||||
|
(comment[0]!='\0')?comment:
|
||||||
|
"BANNED by Channel Cleanup", 600);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(((status == CLEARCHAN) && (doclearops)) ||
|
||||||
|
(status== CLEAROPS))
|
||||||
|
{
|
||||||
|
if(*token[nck]=='@')
|
||||||
|
{ /* this is a chan op */
|
||||||
|
*token[nck]++;
|
||||||
|
if(!strcmp(token[nck],CHANSVR)) continue;
|
||||||
|
strcat(modechar,"o");
|
||||||
|
strcat(nicklist," ");
|
||||||
|
strcat(nicklist,token[nck]);
|
||||||
|
opcnt++;
|
||||||
|
if(opcnt > 6)
|
||||||
|
{ sprintf(buf,"MODE %s %s %s 0\n",
|
||||||
|
token[4],modechar,nicklist);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
opcnt=0;
|
||||||
|
strcpy(modechar,"-");
|
||||||
|
nicklist[0]='\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( (*token[nck]=='+') || (*token[nck]=='@')) *token[nck]++;
|
||||||
|
if((CLEAR_KICK) || (doclearkick))
|
||||||
|
{ if(strcmp(token[nck],CHANSVR))
|
||||||
|
{ sprintf(kickbuf,"KICK %s %s :CLEARCHAN KICK\n",
|
||||||
|
token[4],token[nck]);
|
||||||
|
writeln(sevsck,kickbuf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(opcnt)
|
||||||
|
{ sprintf(buf,"MODE %s %s %s 0\n",
|
||||||
|
token[4],modechar,nicklist);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
opcnt=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 366:
|
||||||
|
if(status == CLEAROPS)
|
||||||
|
{ status=0;
|
||||||
|
doclearkick=0;
|
||||||
|
doclearops=0;
|
||||||
|
sprintf(buf,":%s PART %s\n",CHANSVR,channel);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
if(status == CLEARCHAN)
|
||||||
|
{ have_names=1;
|
||||||
|
docleanchan=0;
|
||||||
|
docleanops=0;
|
||||||
|
|
||||||
|
if(!CLEAR_KICK)
|
||||||
|
{ sprintf(buf,":%s PART %s\n",CHANSVR,channel);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ sprintf(buf,"MODE %s +o %s 0\n",channel,CHANSVR);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 367:
|
||||||
|
if((status == CLEARCHAN) || (status == CLEARBANS))
|
||||||
|
{
|
||||||
|
if(modecnt==0)
|
||||||
|
{ strcpy(modelist,"-");
|
||||||
|
strcpy(modemask,"");
|
||||||
|
}
|
||||||
|
|
||||||
|
strcat(modelist,"b");
|
||||||
|
strcat(modemask," ");
|
||||||
|
strcat(modemask,token[4]);
|
||||||
|
modecnt++;
|
||||||
|
|
||||||
|
if(modecnt>3)
|
||||||
|
{ sprintf(buf,"MODE %s %s %s\n", channel,modelist,modemask);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
strcpy(modelist,"-");
|
||||||
|
strcpy(modemask,"");
|
||||||
|
modecnt=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 368:
|
||||||
|
if(modecnt)
|
||||||
|
{ sprintf(buf,"MODE %s %s %s\n", channel,modelist,modemask);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
strcpy(modelist,"-");
|
||||||
|
strcpy(modemask,"");
|
||||||
|
modecnt=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(status == CLEARBANS)
|
||||||
|
{ status = 0;
|
||||||
|
if(!CLEAR_KICK)
|
||||||
|
{ sprintf(buf,":%s PART %s\n",CHANSVR,channel);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(status == CLEARCHAN) {
|
||||||
|
have_bans=1;
|
||||||
|
|
||||||
|
|
||||||
|
if( (have_bans && have_names) )
|
||||||
|
{ status=0;
|
||||||
|
have_names=0;
|
||||||
|
have_bans=0;
|
||||||
|
if(!CLEAR_KICK)
|
||||||
|
{ sprintf(buf,":%s PART %s\n",CHANSVR,channel);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 433:
|
||||||
|
case 463:
|
||||||
|
if(DccCtr!=-2) break;
|
||||||
|
if(NOWTIME-lastkill < 90) break;
|
||||||
|
close(botsck);
|
||||||
|
sprintf(buf,"KILL UWORLD UWORLD :GO AWAY\n");
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
botsck=bot_login(UPLINK);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
572
socket.c
Executable file
572
socket.c
Executable file
@@ -0,0 +1,572 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <pwd.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/file.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#ifdef USE_DCC
|
||||||
|
extern struct aDccClient MyClient[];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern char UPLINK[];
|
||||||
|
u_short IRCPORT = DEFAULTPORT;
|
||||||
|
extern char sockbuf[],buf[];
|
||||||
|
extern int sevsck,botsck;
|
||||||
|
extern long N_TOTAL,D_TOTAL;
|
||||||
|
extern time_t NOWTIME,BotIdle,ServIdle;
|
||||||
|
extern char *token[];
|
||||||
|
|
||||||
|
int DccCtr=-1;
|
||||||
|
int BotStatus,ServStatus;
|
||||||
|
int MAXDCCONLINE=0;
|
||||||
|
|
||||||
|
int call_socket(hostname,port)
|
||||||
|
char *hostname;
|
||||||
|
int port;
|
||||||
|
{ struct sockaddr_in sa;
|
||||||
|
struct hostent *hp;
|
||||||
|
int a, s;
|
||||||
|
if((hp=gethostbyname(hostname))==NULL) {
|
||||||
|
errno=ECONNREFUSED;
|
||||||
|
return(-1); }
|
||||||
|
bzero(&sa, sizeof(sa));
|
||||||
|
bcopy(hp->h_addr, (char *)&sa.sin_addr, hp->h_length);
|
||||||
|
sa.sin_family = hp->h_addrtype;
|
||||||
|
sa.sin_port = htons((u_short) port);
|
||||||
|
if((s=socket(hp->h_addrtype, SOCK_STREAM, 0)) < 0) return(-1);
|
||||||
|
/*
|
||||||
|
fcntl(s,F_SETFL,O_NONBLOCK);
|
||||||
|
*/
|
||||||
|
|
||||||
|
if(connect(s,(struct sockaddr *) &sa, sizeof(sa)) < 0) {
|
||||||
|
close(s);
|
||||||
|
return(-1); }
|
||||||
|
return(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
int readln2(int sckfd)
|
||||||
|
{ int i=0,valid=1; char c;
|
||||||
|
if(sckfd<0) return 0;
|
||||||
|
while(valid) {
|
||||||
|
if(read(sckfd,&c,1)<1) return(0);
|
||||||
|
if(i<511 && (c != '\n') && (c != '
|
||||||
|
')) sockbuf[i++]=c; else valid=0; }
|
||||||
|
N_TOTAL++;
|
||||||
|
D_TOTAL += strlen(sockbuf);
|
||||||
|
sockbuf[i]='\0'; return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int readln(int sckfd)
|
||||||
|
{ int i=0,valid=1; char c;
|
||||||
|
int length;
|
||||||
|
if(sckfd<0) return -1;
|
||||||
|
if((length=read(sckfd,sockbuf,MAXBUFSIZE-1))<1)
|
||||||
|
{
|
||||||
|
if(errno==EWOULDBLOCK || errno==EAGAIN) return(0);
|
||||||
|
else return -1;
|
||||||
|
}
|
||||||
|
D_TOTAL += length;
|
||||||
|
N_TOTAL++;
|
||||||
|
sockbuf[length]='\0';
|
||||||
|
return(length);
|
||||||
|
}
|
||||||
|
|
||||||
|
int writeln(sckfd,outbuf)
|
||||||
|
int sckfd;
|
||||||
|
char *outbuf;
|
||||||
|
{ int to=0;
|
||||||
|
if(sckfd <0) return 0;
|
||||||
|
if(write(sckfd, outbuf, strlen(outbuf)) < to )
|
||||||
|
return(0);
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int writeln_srv(sckfd,nick,outbuf)
|
||||||
|
int sckfd;
|
||||||
|
char *nick;
|
||||||
|
char *outbuf;
|
||||||
|
{ int to=0;
|
||||||
|
char templine[512];
|
||||||
|
if(sckfd <0) return 0;
|
||||||
|
strcpy(templine,":");
|
||||||
|
strcat(templine,nick);
|
||||||
|
strcat(templine," ");
|
||||||
|
strcat(templine,outbuf);
|
||||||
|
if(write(sckfd, templine, strlen(templine)) < to )
|
||||||
|
return(0);
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int login(char *hostname)
|
||||||
|
{int sckfd;
|
||||||
|
printf("*** trying port %d of %s\n\n\n",IRCPORT,hostname);
|
||||||
|
if ((sckfd=call_socket(hostname,IRCPORT))==-1) {
|
||||||
|
fprintf(stderr, "*** connection refused, aborting\n", hostname);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
sprintf(buf,"NICK %s\n",BOTNAME); writeln(sckfd,buf);
|
||||||
|
sprintf(buf, "USER %s 1 1 :%s\n",BOTNAME,BOTINFO);
|
||||||
|
writeln(sckfd,buf);
|
||||||
|
return( sckfd);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int bot_login(char *hostname)
|
||||||
|
{int sckfd;
|
||||||
|
printf("*** trying port %d of %s\n\n\n",IRCPORT,hostname);
|
||||||
|
if ((sckfd=call_socket(hostname,IRCPORT))==-1) {
|
||||||
|
fprintf(stderr, "*** connection refused, aborting\n", hostname);
|
||||||
|
BotStatus=S_FREE;
|
||||||
|
BotIdle=NOWTIME;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
sprintf(buf,"NICK %s\n",BOTNAME); writeln(sckfd,buf);
|
||||||
|
writeln(sckfd,buf);
|
||||||
|
sprintf(buf, "USER %s 1 1 :%s\n",BOTNAME,BOTINFO);
|
||||||
|
writeln(sckfd,buf);
|
||||||
|
BotStatus=S_ACTIVE;
|
||||||
|
return( sckfd);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int readin()
|
||||||
|
{
|
||||||
|
fd_set readfs;
|
||||||
|
struct timeval timeout;
|
||||||
|
char MyLocBuf[MAXBUFSIZE];
|
||||||
|
int dumb = 1;
|
||||||
|
static time_t last_squit=0;
|
||||||
|
static squit_loop=0;
|
||||||
|
int sok;
|
||||||
|
#ifdef USE_DCC
|
||||||
|
int mycnt;
|
||||||
|
#endif
|
||||||
|
static REFRESH=0;
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
timeout.tv_sec=5;
|
||||||
|
timeout.tv_usec=0;
|
||||||
|
|
||||||
|
FD_ZERO(&readfs);
|
||||||
|
|
||||||
|
if(ServStatus == S_ACTIVE) FD_SET(sevsck,&readfs);
|
||||||
|
else if (ServStatus == S_CLOSING)
|
||||||
|
{ close(sevsck);
|
||||||
|
ServStatus=S_FREE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(BotStatus == S_ACTIVE) FD_SET(botsck,&readfs);
|
||||||
|
else if (BotStatus == S_CLOSING)
|
||||||
|
{ close(botsck);
|
||||||
|
BotStatus = S_FREE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((BotStatus == S_FREE) && (NOWTIME-BotIdle > 60))
|
||||||
|
{ botsck=bot_login(UPLINK);
|
||||||
|
BotIdle=NOWTIME;
|
||||||
|
}
|
||||||
|
if((ServStatus == S_FREE) && (NOWTIME-ServIdle > 60))
|
||||||
|
{ sevsck=sev_login(UPLINK);
|
||||||
|
ServIdle=NOWTIME;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef USE_DCC
|
||||||
|
for(mycnt=0;mycnt<MAXDCCONLINE;mycnt++)
|
||||||
|
{ char outmsg[1024];
|
||||||
|
if(MyClient[mycnt].status == S_CLOSING)
|
||||||
|
{ close(MyClient[mycnt].fd);
|
||||||
|
MyClient[mycnt].fd=-1;
|
||||||
|
MyClient[mycnt].status=S_FREE;
|
||||||
|
sprintf(outmsg,"*** %s (%s) has hung up on us\n",
|
||||||
|
MyClient[mycnt].name,MyClient[mycnt].hostname);
|
||||||
|
DccGlobal(outmsg,DCC_ANY);
|
||||||
|
}
|
||||||
|
if(MyClient[mycnt].status == S_ACTIVE)
|
||||||
|
FD_SET(MyClient[mycnt].fd,&readfs);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if(select(FD_SETSIZE, &readfs, NULL, NULL,(dumb ? NULL : &timeout))) {
|
||||||
|
NOWTIME=time(NULL);
|
||||||
|
if(REFRESH < NOWTIME)
|
||||||
|
{ REFRESH = NOWTIME+600;
|
||||||
|
timeout_myuser();
|
||||||
|
}
|
||||||
|
if((ServStatus==S_ACTIVE) && (FD_ISSET(sevsck,&readfs))) {
|
||||||
|
DccCtr=-1;
|
||||||
|
sok = readln(sevsck);
|
||||||
|
ServIdle=NOWTIME;
|
||||||
|
if (sok>0) spitout(sevsck);
|
||||||
|
if (sok < 0)
|
||||||
|
{ close(sevsck);
|
||||||
|
sevsck = sev_login(UPLINK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if((BotStatus == S_ACTIVE) && (FD_ISSET(botsck,&readfs))) {
|
||||||
|
DccCtr=-2;
|
||||||
|
sok = readln(botsck);
|
||||||
|
BotIdle=NOWTIME;
|
||||||
|
if (sok>0) spitout(botsck);
|
||||||
|
if (sok < 0)
|
||||||
|
{ close(botsck);
|
||||||
|
botsck = bot_login(UPLINK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef USE_DCC
|
||||||
|
for(mycnt=0;mycnt<MAXDCCONLINE;mycnt++)
|
||||||
|
{ if(MyClient[mycnt].status == S_ACTIVE )
|
||||||
|
if(FD_ISSET(MyClient[mycnt].fd,&readfs)) {
|
||||||
|
DccCtr=mycnt;
|
||||||
|
MyClient[mycnt].lasttime=NOWTIME;
|
||||||
|
sok = readln(MyClient[mycnt].fd);
|
||||||
|
if(sok == -1)
|
||||||
|
{ MyClient[mycnt].status=S_CLOSING;
|
||||||
|
}
|
||||||
|
else if (sok>0)
|
||||||
|
{
|
||||||
|
if(sockbuf[0]== '\0') continue;
|
||||||
|
sprintf(MyLocBuf,":%s!%s DCC %s :%s",
|
||||||
|
MyClient[mycnt].name, MyClient[mycnt].hostname,
|
||||||
|
CHANSVR,sockbuf);
|
||||||
|
strcpy(sockbuf,MyLocBuf);
|
||||||
|
MyLocBuf[0]='\0';
|
||||||
|
spitout(botsck);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int sev_login(char hostname[])
|
||||||
|
{int sckfd;
|
||||||
|
if( (sckfd = call_socket(hostname,IRCPORT)) == -1) {
|
||||||
|
fprintf(stderr,"*** connection refused");
|
||||||
|
ServStatus=S_FREE;
|
||||||
|
ServIdle=NOWTIME;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
sprintf(buf,"PASS %s\n",PASSWORD);
|
||||||
|
writeln(sckfd,buf);
|
||||||
|
sprintf(buf,"SERVER %s 1 %ul %ul J09 :%s\n",SERVERNAME,time(NULL),time(NULL),
|
||||||
|
SERVERINFO);
|
||||||
|
ServStatus=S_ACTIVE;
|
||||||
|
|
||||||
|
writeln(sckfd,buf);
|
||||||
|
return( sckfd);
|
||||||
|
}
|
||||||
|
|
||||||
|
int sev_jupe(char hostname[],char *name)
|
||||||
|
{
|
||||||
|
sprintf(buf,"WALLOPS :%s is trying to jupe %s \n",name,hostname);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
sprintf(buf,":%s SQUIT %s JUPE TIME\n",CHANSVR,hostname);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
sprintf(buf,":%s SERVER %s 2 %ul %ul J09 :JUPE by %s \n",
|
||||||
|
SERVERNAME,hostname,time(NULL),time(NULL),name);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
makehelp(int sck,char *botname,char *botinfo)
|
||||||
|
{
|
||||||
|
sprintf(buf,"NICK %s 1 %ul %s %s %s :%s\n",botname,time(NULL)-86400,
|
||||||
|
botname,"undernet.org",SERVERNAME,botinfo);
|
||||||
|
writeln(sck,buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
makedecoy(int sck,char *botname,char *bothost,char *botinfo)
|
||||||
|
{
|
||||||
|
sprintf(buf,"NICK %s 1 %ul %s %s %s :%s\n",botname,time(NULL)-86400,
|
||||||
|
botname,bothost,SERVERNAME,botinfo);
|
||||||
|
writeln(sck,buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
makemybots(int j)
|
||||||
|
{ int i;
|
||||||
|
char mybot[10];
|
||||||
|
for(i=0;i<j;i++)
|
||||||
|
{
|
||||||
|
sprintf(mybot,"WT_%d",i);
|
||||||
|
sprintf(buf,"NICK %s 1 %ul %s %s %s :%s\n",mybot,time(NULL)-86400,
|
||||||
|
mybot,"it.happens.org",SERVERNAME,"Uworld Record Bot");
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
sprintf(buf,":%s MODE %s +i\n",mybot,mybot);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
killmybots(int j)
|
||||||
|
{ int i=0;
|
||||||
|
char mybot[10];
|
||||||
|
for(i=0;i<j;i++)
|
||||||
|
{
|
||||||
|
sprintf(mybot,"WT_%d",i);
|
||||||
|
sprintf(buf,":%s QUIT %s\n",mybot,mybot);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef USE_DCC
|
||||||
|
int accept_dcc(char *fromhost)
|
||||||
|
{ int myctr;
|
||||||
|
struct in_addr in;
|
||||||
|
int port,newfd;
|
||||||
|
char hostname[255];
|
||||||
|
port=(token[7] && *token[7])?atoi(token[7]):0;
|
||||||
|
if((port < 1024) || (port > 65535))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if(token[6] && *token[6])
|
||||||
|
{ char mybufr[1024];
|
||||||
|
in.s_addr=ntohl(strtoul(token[6],NULL,0));
|
||||||
|
|
||||||
|
/* if the address is 0 then its bad...
|
||||||
|
*/
|
||||||
|
if(in.s_addr == 0) return 0;
|
||||||
|
strcpy(hostname,inet_ntoa(in));
|
||||||
|
|
||||||
|
for(myctr=0;myctr<MAXCLIENTS;myctr++)
|
||||||
|
{ if(MyClient[myctr].status == S_FREE)
|
||||||
|
{
|
||||||
|
if(myctr+1 > MAXDCCONLINE) MAXDCCONLINE=myctr+1;
|
||||||
|
sprintf(buf,":%s NOTICE %s :Received DCC Chat Request %s %d\n",
|
||||||
|
CHANSVR,token[0],hostname,port);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
MyClient[myctr].fd=call_socket(hostname,port);
|
||||||
|
if(MyClient[myctr].fd >=0)
|
||||||
|
{ int loopit;
|
||||||
|
char outmsg[1024];
|
||||||
|
strcpy(MyClient[myctr].hostname,fromhost);
|
||||||
|
strcpy(MyClient[myctr].name,token[0]);
|
||||||
|
MyClient[myctr].status = S_ACTIVE;
|
||||||
|
MyClient[myctr].lasttime = NOWTIME;
|
||||||
|
MyClient[myctr].umode = DCC_DEFAULT;
|
||||||
|
writeln(MyClient[myctr].fd,"Welcome to the Party Line\n");
|
||||||
|
sprintf(buf,"*** Known Usermodes: %s\n",USERMODES);
|
||||||
|
writeln(MyClient[myctr].fd,buf);
|
||||||
|
sprintf(buf,":%s PRIVMSG #uworld.floods :DCC %s %s %s\n",
|
||||||
|
CHANSVR,token[0],hostname,fromhost);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
sprintf(outmsg,"*** %s (%s) has joined the Party\n",
|
||||||
|
MyClient[myctr].name,MyClient[myctr].hostname);
|
||||||
|
DccGlobal(outmsg,DCC_ANY);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return MyClient[myctr].fd;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int DccWall()
|
||||||
|
{ int ctr,i;
|
||||||
|
char outmsg[1024];
|
||||||
|
|
||||||
|
if(!(MyClient[DccCtr].umode & DCC_WALLOPS))
|
||||||
|
{ writeln(MyClient[DccCtr].fd,
|
||||||
|
"*** You are not +w. Please set umode +w before you wallops\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if(token[4])
|
||||||
|
{ sprintf(outmsg,"[%s]",token[0]);
|
||||||
|
for(i=4;token[i];i++)
|
||||||
|
{ strcat(outmsg," ");
|
||||||
|
strcat(outmsg,token[i]);
|
||||||
|
}
|
||||||
|
strcat(outmsg,"\n");
|
||||||
|
}
|
||||||
|
else return 0;
|
||||||
|
DccGlobal(outmsg,DCC_WALLOPS);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int DccMessage(char *targ)
|
||||||
|
{ int ctr,i;
|
||||||
|
char outmsg[1024];
|
||||||
|
|
||||||
|
if(token[4] && token[5])
|
||||||
|
{ sprintf(outmsg,"*%s*",token[0]);
|
||||||
|
for(i=5;token[i];i++)
|
||||||
|
{ strcat(outmsg," ");
|
||||||
|
strcat(outmsg,token[i]);
|
||||||
|
}
|
||||||
|
strcat(outmsg,"\n");
|
||||||
|
}
|
||||||
|
else return 0;
|
||||||
|
for(ctr=0;ctr<MAXDCCONLINE;ctr++)
|
||||||
|
{
|
||||||
|
if((MyClient[ctr].status == S_ACTIVE) &&
|
||||||
|
(!strcasecmp(MyClient[ctr].name,targ)))
|
||||||
|
{ writeln(MyClient[ctr].fd,outmsg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int DccList()
|
||||||
|
{ int ctr;
|
||||||
|
int ct;
|
||||||
|
char outmsg[1024];
|
||||||
|
char tbuf[30];
|
||||||
|
|
||||||
|
ct=0;
|
||||||
|
strcpy(outmsg,"DLIST");
|
||||||
|
for(ctr=0;ctr<MAXDCCONLINE;ctr++)
|
||||||
|
{ if(MyClient[ctr].status == S_ACTIVE)
|
||||||
|
{
|
||||||
|
sprintf(tbuf," %s(%ld)",MyClient[ctr].name,NOWTIME-MyClient[ctr].lasttime);
|
||||||
|
strcat(outmsg,tbuf);
|
||||||
|
|
||||||
|
ct++;
|
||||||
|
if(ct>6)
|
||||||
|
{ strcat(outmsg,"\n");
|
||||||
|
writeln(MyClient[DccCtr].fd,outmsg);
|
||||||
|
strcpy(outmsg,"DLIST");
|
||||||
|
ct=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
strcat(outmsg,"\n");
|
||||||
|
if(ct) writeln(MyClient[DccCtr].fd,outmsg);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int DccWho(char *targ)
|
||||||
|
{ int ctr;
|
||||||
|
char outmsg[1024];
|
||||||
|
|
||||||
|
if(!token[4]) return 0;
|
||||||
|
for(ctr=0;ctr<MAXDCCONLINE;ctr++)
|
||||||
|
{ if(MyClient[ctr].status == S_ACTIVE)
|
||||||
|
{
|
||||||
|
if(!strcasecmp( targ,MyClient[ctr].name))
|
||||||
|
{ sprintf(outmsg,"DWHO %s is %s Idle %d\n",MyClient[ctr].name,
|
||||||
|
MyClient[ctr].hostname,NOWTIME-MyClient[ctr].lasttime);
|
||||||
|
writeln(MyClient[DccCtr].fd,outmsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int DccGlobal(char *buffer,int MODE)
|
||||||
|
{ int loopit;
|
||||||
|
for(loopit=0;loopit<MAXDCCONLINE;loopit++)
|
||||||
|
{ if((MyClient[loopit].status == S_ACTIVE) &&
|
||||||
|
(MyClient[loopit].umode & MODE))
|
||||||
|
{
|
||||||
|
writeln(MyClient[loopit].fd,buffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int DccUmode(char *modes)
|
||||||
|
{
|
||||||
|
int flag=1; /* default to set */
|
||||||
|
char *pos,upos=0;
|
||||||
|
char unknown[1024];
|
||||||
|
|
||||||
|
if(!modes)
|
||||||
|
{ DccMode();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
pos=modes;
|
||||||
|
unknown[0]='\0';
|
||||||
|
|
||||||
|
for(;*pos;pos++)
|
||||||
|
{
|
||||||
|
if(*pos=='-') {flag=0; continue; }
|
||||||
|
if(*pos=='+') {flag=1; continue; }
|
||||||
|
switch(tolower(*pos))
|
||||||
|
{ case 'w':
|
||||||
|
if(flag)MyClient[DccCtr].umode |= DCC_WALLOPS;
|
||||||
|
else MyClient[DccCtr].umode &= ~DCC_WALLOPS;
|
||||||
|
break;
|
||||||
|
case 'a':
|
||||||
|
if(flag)MyClient[DccCtr].umode |= DCC_ANY;
|
||||||
|
else MyClient[DccCtr].umode &= ~DCC_ANY;
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
if(flag)MyClient[DccCtr].umode |= DCC_TSC;
|
||||||
|
else MyClient[DccCtr].umode &= ~DCC_TSC;
|
||||||
|
break;
|
||||||
|
case 'g':
|
||||||
|
if(flag)MyClient[DccCtr].umode |= DCC_GLN;
|
||||||
|
else MyClient[DccCtr].umode &= ~DCC_GLN;
|
||||||
|
break;
|
||||||
|
case 'c':
|
||||||
|
if(flag)MyClient[DccCtr].umode |= DCC_COMMAND;
|
||||||
|
else MyClient[DccCtr].umode &= ~DCC_COMMAND;
|
||||||
|
break;
|
||||||
|
case 'm':
|
||||||
|
if(flag)MyClient[DccCtr].umode |= DCC_MMG;
|
||||||
|
else MyClient[DccCtr].umode &= ~DCC_MMG;
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
|
if(flag)MyClient[DccCtr].umode |= DCC_WALL;
|
||||||
|
else MyClient[DccCtr].umode &= ~DCC_WALL;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
unknown[upos++]= *pos;
|
||||||
|
unknown[upos]='\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(unknown[0]!='\0')
|
||||||
|
{ sprintf(buf,"*** Unknown Umodes: %s\n",unknown);
|
||||||
|
writeln(MyClient[DccCtr].fd,buf);
|
||||||
|
}
|
||||||
|
DccMode();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int DccMode()
|
||||||
|
{ char modes[10];
|
||||||
|
|
||||||
|
modes[0]='\0';
|
||||||
|
|
||||||
|
if( MyClient[DccCtr].umode & DCC_ANY) strcat(modes,"a");
|
||||||
|
if( MyClient[DccCtr].umode & DCC_WALLOPS) strcat(modes,"w");
|
||||||
|
if( MyClient[DccCtr].umode & DCC_GLN) strcat(modes,"g");
|
||||||
|
if( MyClient[DccCtr].umode & DCC_TSC) strcat(modes,"t");
|
||||||
|
if( MyClient[DccCtr].umode & DCC_COMMAND) strcat(modes,"c");
|
||||||
|
if( MyClient[DccCtr].umode & DCC_MMG) strcat(modes,"m");
|
||||||
|
if( MyClient[DccCtr].umode & DCC_WALL) strcat(modes,"l");
|
||||||
|
|
||||||
|
sprintf(buf,"*** Your Usermode is: %s\n",modes);
|
||||||
|
writeln(MyClient[DccCtr].fd,buf);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int DccKill(char *name)
|
||||||
|
{ int loopit;
|
||||||
|
char mybuf[1024];
|
||||||
|
for(loopit=0;loopit<MAXDCCONLINE;loopit++)
|
||||||
|
{ if((MyClient[loopit].status == S_ACTIVE) &&
|
||||||
|
(!strcasecmp(MyClient[loopit].name,name)))
|
||||||
|
{ sprintf(mybuf,
|
||||||
|
"*** Your DCC PartyLine connection has been terminated by %s\n",
|
||||||
|
token[0]);
|
||||||
|
writeln(MyClient[loopit].fd,mybuf);
|
||||||
|
MyClient[loopit].status = S_CLOSING;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
50
user.file
Executable file
50
user.file
Executable file
@@ -0,0 +1,50 @@
|
|||||||
|
0!all opers!*@*!*!TEMP!
|
||||||
|
6!typos!*typos@*.wildstar.net!LV!LV!
|
||||||
|
6!bobkc!*bobskc@208.133.5.*!LV!LV!
|
||||||
|
6!bobkc!*bobskc@205.243.76.*!LV!LV!
|
||||||
|
6!phantomq!*phantomq@*.pacificnet.net!LV!LV!
|
||||||
|
6!Bfriendly!*nicedude@*.linknet.net!LV!LV!
|
||||||
|
6!unknown!*semtex@*.kf.kommorg.no!blah!blah!
|
||||||
|
6!unknown!*gressetv@*.sn.no!blah!blah!
|
||||||
|
6!unknown!*engebrec@*.sdstate.edu!blah!blah!
|
||||||
|
6!unknown!*@mary.blast.net!nielz!blah!
|
||||||
|
6!super!*super@*technical.net!vancouver-r!
|
||||||
|
6!super!*super@puck.nether.net!vancouver-r!
|
||||||
|
8!brummie!*glynn@*n-e-t.co.uk!*!london.uk!
|
||||||
|
8!brummie!*glynn@goldsub.demon.co.uk!*!london.uk!
|
||||||
|
8!buff!*buff@209.54.56.8!*!springfield.mo!
|
||||||
|
8!buff!*buff@tanzit.cetlink.net!*!springfield.mo!
|
||||||
|
8!Mmmm!*mandar@*.wildstar.net!*!okc.ok!
|
||||||
|
8!Mmmm!*mandar@csbh.mhv.net!*!okc.ok!
|
||||||
|
8!whizzard!*lambert@*.ucis.dal.ca!*!unknown!
|
||||||
|
8!whizzard!*whizzard@python.provision.NET!*!unknown!
|
||||||
|
8!whizzard!*whizzard@*.ucis.dal.ca!*!unknown!
|
||||||
|
10!wildthang!*danny@*.ok.us.undernet.org!*!The Creators!
|
||||||
|
10!wildthang!*danny@*.chatsystems.com!myPASS!The Creators!
|
||||||
|
9!try!*jemery@*.utexas.edu!*!austin.tx!
|
||||||
|
10!seks!*seks@seminole*.wildstar.net!yourPASS!The Creators!
|
||||||
|
10!seks!*seks@*.chatsystems.com!yourPASS!The Creators!
|
||||||
|
10!Seks!*intru@*.info.polymtl.ca!yourPASS!The Creators!
|
||||||
|
10!kev!*kev@seminole*.wildstar.net!yourPASS!The Creators!
|
||||||
|
10!moriah!*moriah@seminole*.wildstar.net!Moma!guest!
|
||||||
|
10!kev!*klmitch@*.mit.edu!whatever!Vancouver-r!
|
||||||
|
7!XW!*CService@undernet.org!yourPASS!The Creators!
|
||||||
|
9!rowan!*rowan@iconz1.iconz.co.nz!yourPASS!The Creators!
|
||||||
|
8!niels!*niels@*.holding.pi.net!*!amsterdam!
|
||||||
|
8!nielz!*cpbaltus@ekp.cs.vu.nl!*!The Creators!
|
||||||
|
8!nielz!*nbakker@kits.cs.vu.nl!*!The Creators!
|
||||||
|
0!Adam9!*glasscity.net!*!Flooding Uworld!
|
||||||
|
-4!romania!*fishnet.net!*!NOOPERS!
|
||||||
|
-4!romania!*.ro!*!NOOPERS!
|
||||||
|
-4!romania!*@193.226.*!*!NOOPERS!
|
||||||
|
-5!Absolute!*@202.96.26.*!*!CONTINUAL PROBLEMS!
|
||||||
|
-5!CallDan!*@southport.jpl.nasa.gov!a!a!
|
||||||
|
-5!CallDan!*@leia.gsilink.com!a!a!
|
||||||
|
-5!CallDan!*slh@shell1.shore.net!a!a!
|
||||||
|
-5!CallDan!*calldan@fenix.pue.udlap.mx!a!a!
|
||||||
|
-5!CallDan!*calldan@pancreas.com!a!a!
|
||||||
|
-5!CallDan!*calldan@dt4h4n1e.maine.rr.com!a!a!
|
||||||
|
-5!CallDan!*@*pub3.coos.or.us!a!a!
|
||||||
|
-5!FOONET!*@*foonet.net!a!a!
|
||||||
|
-5!FOONET!*@*something.org!a!a!
|
||||||
|
-5!FOONET!*@205.229.58.*!a!a!
|
||||||
493
uworld.c
Executable file
493
uworld.c
Executable file
@@ -0,0 +1,493 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
char UPLINK[255];
|
||||||
|
#ifdef USE_DCC
|
||||||
|
struct aDccClient MyClient[MAXCLIENTS];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char *snoop[]={"FA-Q","leet ","haxor",""};
|
||||||
|
|
||||||
|
int SNOOP=0;
|
||||||
|
extern int DccCtr; /* from socket.c */
|
||||||
|
char *SuspendChan[MAXSUSPENDOPER];
|
||||||
|
time_t SuspendChanTime[MAXSUSPENDOPER];
|
||||||
|
char *SuspendOper[MAXSUSPENDOPER];
|
||||||
|
time_t SuspendOperTime[MAXSUSPENDOPER];
|
||||||
|
extern char *mynicks[];
|
||||||
|
|
||||||
|
char *NoGlineHost[MAXNOGLINES],*GlineHost[MAXGLINEHOST];
|
||||||
|
char *MultiUserHost[MAXMHOST],*SingleUserHost[MAXMHOST];
|
||||||
|
char sockbuf[MAXBUFSIZE],buf[MAXBUFSIZE],storebuf[MAXBUFSIZE];
|
||||||
|
char input_buffer[3][3*MAXBUFSIZE],*input_start,*input_end;
|
||||||
|
char *token[256];
|
||||||
|
int sevsck,botsck;
|
||||||
|
FILE *fludfile = NULL;
|
||||||
|
char lastkill[255]="\0";
|
||||||
|
extern char *operchan[],*invitekiller[],*invitehosts[],*killchan[];
|
||||||
|
char LastKlr[20];
|
||||||
|
long D_JOIN=0,D_NICK=0,D_PART=0,D_MODE=0,D_KICK=0,D_SERVER=0,D_QUIT=0,D_USER=0;
|
||||||
|
long N_JOIN=0,N_NICK=0,N_PART=0,N_MODE=0,N_KICK=0,N_SERVER=0,N_QUIT=0,N_USER=0;
|
||||||
|
long D_TOTAL=0,N_TOTAL=0,D_SQUIT,N_SQUIT,N_OTHER=0,D_OTHER=0;
|
||||||
|
long D_KILL=0,N_KILL=0,FLOODLOGS=0;
|
||||||
|
long D_TOPIC=0,N_TOPIC=0;
|
||||||
|
int CLONE_UP=3,CLONE_LO=3,CLONE_DIG=3,LOGHOST=0;
|
||||||
|
int DO_AUTOKICK=0,DO_CORE=1;
|
||||||
|
time_t S_TIME=0;
|
||||||
|
int MAX_SESSIONS=5,MAX_ALLOWED=8;
|
||||||
|
time_t NOWTIME,BotIdle,ServIdle;
|
||||||
|
int SITE_CLONE=3,KILL_NICKFLOOD=1,num_servs=0;
|
||||||
|
char server_list[40][100];
|
||||||
|
char controlbot[255];
|
||||||
|
int NETBURST=0,FLOODPROTECTION=1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
main(int argc, char **argv)
|
||||||
|
{ int loop,loop2;
|
||||||
|
char *envptr;
|
||||||
|
|
||||||
|
if (argc <2) goto_bg();
|
||||||
|
strcpy(UPLINK,MYSERVER);
|
||||||
|
|
||||||
|
if( (envptr=getenv("UPLINK")) != NULL) strcpy(UPLINK,envptr);
|
||||||
|
|
||||||
|
#ifdef USE_DCC
|
||||||
|
for(loop=0;loop<MAXCLIENTS;loop++)
|
||||||
|
{ MyClient[loop].fd=-1;
|
||||||
|
MyClient[loop].status=S_FREE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
InitOperchan();
|
||||||
|
InitKillchan();
|
||||||
|
read_operchan(OPERCHANFILE);
|
||||||
|
read_killchan(KILLCHANFILE);
|
||||||
|
|
||||||
|
InitGlines();
|
||||||
|
read_glines(GLINEFILE);
|
||||||
|
|
||||||
|
|
||||||
|
S_TIME=time(NULL);
|
||||||
|
NOWTIME=S_TIME;
|
||||||
|
#ifdef DEBUG
|
||||||
|
srandom(S_TIME);
|
||||||
|
open_debug();
|
||||||
|
#endif
|
||||||
|
fludfile=fopen(FLUDFILE,"a");
|
||||||
|
sprintf(controlbot,"%s@%s",CHANSVR,SERVERNAME);
|
||||||
|
load_myuser("user.file");
|
||||||
|
load_serv("servers.admin");
|
||||||
|
clear_clients();
|
||||||
|
startlog();
|
||||||
|
sevsck = sev_login(UPLINK);
|
||||||
|
botsck = bot_login(UPLINK);
|
||||||
|
do_bots();
|
||||||
|
|
||||||
|
read_noglines(EGLINEFILE);
|
||||||
|
read_glinehost(AGLINEFILE);
|
||||||
|
read_mhost(MHOSTFILE);
|
||||||
|
read_shost(SHOSTFILE);
|
||||||
|
read_suspend(SUSPENDFILE);
|
||||||
|
read_Csuspend(CHANSUSPENDFILE);
|
||||||
|
|
||||||
|
for(loop=0;operchan[loop];loop++)
|
||||||
|
{
|
||||||
|
sprintf(buf,":CHANSVR JOIN #%s\n",operchan[loop]);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
sprintf(buf,"MODE #%s +pnoti Chansvr\n",operchan[loop]);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf(buf,":%s MODE %s +kido\n",CHANSVR,CHANSVR);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
|
||||||
|
#ifdef JUPE_BUGS
|
||||||
|
for(loop=0;*mynicks[loop];loop++)
|
||||||
|
makehelp(sevsck,mynicks[loop],"!JUPE Illegal nickname on this network");
|
||||||
|
#endif
|
||||||
|
makehelp(sevsck,"ChanLock","CHANNEL LOCKING SYSTEM");
|
||||||
|
makehelp(sevsck,"ChanServ","Undernet Juping Service");
|
||||||
|
writeln(sevsck,":ChanLock MODE Chanlock +kid\n");
|
||||||
|
|
||||||
|
#ifdef WASTEDUMP
|
||||||
|
StartWastedump();
|
||||||
|
sprintf(buf,":wastetest MODE wastetest +kid\n");
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
loop2=0;
|
||||||
|
for(loop=0;*invitekiller[loop];loop++)
|
||||||
|
{ if(!(*invitehosts[loop2])) loop2=0;
|
||||||
|
makedecoy(sevsck,invitekiller[loop],invitehosts[loop2++],
|
||||||
|
invitekiller[loop]);
|
||||||
|
}
|
||||||
|
strcpy(LastKlr,"none");
|
||||||
|
|
||||||
|
readin();
|
||||||
|
}
|
||||||
|
|
||||||
|
spitout(int sckfd)
|
||||||
|
{ int i,num,k,loopcnt;
|
||||||
|
int bf,helpsv=0;
|
||||||
|
char *fromhost;
|
||||||
|
char *temp;
|
||||||
|
char *end_of_line;
|
||||||
|
int length,position=0,nbc=0;
|
||||||
|
static squit_loop=0;
|
||||||
|
static time_t last_squit=0;
|
||||||
|
char tempbuf[1024];
|
||||||
|
char killbuf[255];
|
||||||
|
char *ptr;
|
||||||
|
int ctr,ilp;
|
||||||
|
|
||||||
|
if(sckfd == sevsck) bf = 0; /* sevsck */
|
||||||
|
else if(sckfd == botsck) bf = 1; /* botsck */
|
||||||
|
else bf = 2; /* DccCtr */
|
||||||
|
|
||||||
|
/* BUFFER INPUT */
|
||||||
|
strcat(input_buffer[bf],sockbuf);
|
||||||
|
input_buffer[bf][strlen(input_buffer[bf])+1]='\0';
|
||||||
|
|
||||||
|
/* CHECK FOR NEWLINE */
|
||||||
|
input_start=input_buffer[bf];
|
||||||
|
length=strlen(input_buffer[bf]);
|
||||||
|
while( (input_end=strchr(input_start,'\n')) )
|
||||||
|
{ loopcnt++;
|
||||||
|
*input_end='\0';
|
||||||
|
position+= strlen(input_start);
|
||||||
|
|
||||||
|
if(strncmp(input_start,"PI",2)==0)
|
||||||
|
{ strcpy(buf,input_start);
|
||||||
|
strncpy(buf,"PO",2);
|
||||||
|
writeln(sckfd,strcat(buf,"\n"));
|
||||||
|
input_start=input_end+1;
|
||||||
|
continue;
|
||||||
|
} /* ping - pong */
|
||||||
|
|
||||||
|
if(*(input_start+strlen(input_start)-1) == '\r')
|
||||||
|
*(input_start+strlen(input_start)-1) = '\0';
|
||||||
|
|
||||||
|
strcpy(storebuf,input_start);
|
||||||
|
|
||||||
|
if(SNOOP)
|
||||||
|
{ for(ilp=0;*snoop[ilp];ilp++)
|
||||||
|
if(strstr(storebuf,snoop[ilp]))
|
||||||
|
{ FILE *ofp;
|
||||||
|
if( (ofp=fopen("Stats.log","a"))!=NULL)
|
||||||
|
{ fprintf(ofp,"%ld %s\n",NOWTIME,storebuf);
|
||||||
|
fclose(ofp);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if((FLOODLOGS) && (fludfile != NULL))
|
||||||
|
fprintf(fludfile,"%s\n",storebuf);
|
||||||
|
|
||||||
|
token[i=0]=strtok(input_start," ");
|
||||||
|
while(token[++i]=strtok(NULL, " ")); token[i]=NULL;
|
||||||
|
|
||||||
|
input_start=input_end+1;
|
||||||
|
|
||||||
|
if(!token[0]) continue;
|
||||||
|
if(!token[1]) continue;
|
||||||
|
if(i > 2) do_count();
|
||||||
|
|
||||||
|
k=chk_num(0);
|
||||||
|
if(temp=strchr(token[0],'!'))
|
||||||
|
{
|
||||||
|
*temp='\0'; fromhost=temp+1;
|
||||||
|
if((k>3) && (FLOODPROTECTION)) FloodProtect(token[0]+1,token[2]);
|
||||||
|
parse(fromhost);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
nbc=0;
|
||||||
|
|
||||||
|
if((!NETBURST) && (k>3) && ((!strcmp(token[nbc++],"SERVER")) ||
|
||||||
|
(!strcmp(token[nbc++],"SERVER")) ))
|
||||||
|
{ if(!NETBURST)
|
||||||
|
{ sprintf(buf,":%s PRIVMSG #uworld.floods :PROCESSING NETBURST %d\n",
|
||||||
|
CHANSVR,nbc);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
NETBURST=nbc;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((!NETBURST) && (FLOODPROTECTION) && (!strchr(token[0],'.')))
|
||||||
|
{
|
||||||
|
if((k>3) && ((*token[1]=='P') || (*token[1]=='I') ||
|
||||||
|
(!strncmp(token[1],"NO",2))))
|
||||||
|
FloodProtect(token[0]+1,token[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if((!strcmp(token[0],"ERROR")) &&
|
||||||
|
(!strcmp(token[1],":Closing")))
|
||||||
|
{
|
||||||
|
if(sckfd==sevsck)
|
||||||
|
{ close(sevsck);
|
||||||
|
writelog("SQUIT");
|
||||||
|
destroy_nickhash();
|
||||||
|
squit_loop++;
|
||||||
|
if(squit_loop > 5)
|
||||||
|
{ writelog("EXITING SQUIT LOOP");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
if(NOWTIME - last_squit < 120) continue;
|
||||||
|
last_squit = NOWTIME;
|
||||||
|
if(k>5)
|
||||||
|
{
|
||||||
|
*token[5]++;
|
||||||
|
if(*token[5] != '!')
|
||||||
|
{
|
||||||
|
clear_clients();
|
||||||
|
sevsck=sev_login(UPLINK);
|
||||||
|
do_bots();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else /* client squit */
|
||||||
|
{ close(botsck);
|
||||||
|
botsck=bot_login(UPLINK);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(k > 3)
|
||||||
|
{
|
||||||
|
if(!strcmp(token[3],":remakeuworld"))
|
||||||
|
{
|
||||||
|
close( botsck);
|
||||||
|
botsck=bot_login(UPLINK);
|
||||||
|
}
|
||||||
|
else if(atoi(token[1])) { sevnum(atoi(token[1])); continue; }
|
||||||
|
else if(!match(token[1],"KILL")) { record_kill(); continue; }
|
||||||
|
else if(strcasecmp(token[0],":helpbot"))
|
||||||
|
{ if(strlen(token[3])>80) continue;
|
||||||
|
if(strchr(token[3],'@')) continue;/* Should stop the silence bug */
|
||||||
|
if(!match(token[2],IRCHELP)) {do_helpirc(sevsck); continue; }
|
||||||
|
else if(!strcasecmp(token[2],controlbot))
|
||||||
|
{ OperCom(token[0]+1);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if( (*token[1]=='P') || (*token[1]=='I') ||
|
||||||
|
(!strncmp(token[1],"NO",2)))
|
||||||
|
{
|
||||||
|
for(ctr=0;*invitekiller[ctr];ctr++)
|
||||||
|
{ if(!strcasecmp(token[2],invitekiller[ctr]))
|
||||||
|
{ GetFromhost(token[0]+1,killbuf);
|
||||||
|
sprintf(tempbuf,"MMG[%d] <%s!%s>",ctr,token[0]+1,killbuf);
|
||||||
|
for(ctr=3;token[ctr];ctr++)
|
||||||
|
{ strcat(tempbuf," ");
|
||||||
|
strcat(tempbuf,token[ctr]);
|
||||||
|
}
|
||||||
|
strcat(tempbuf,"\n");
|
||||||
|
mmg_log(tempbuf);
|
||||||
|
|
||||||
|
if((!strcasecmp(lastkill,killbuf)) &&
|
||||||
|
(strcasecmp(LastKlr,token[2])))
|
||||||
|
{ /*We've heard from this idiot already */
|
||||||
|
char ttbuf[1024],*tpt;
|
||||||
|
|
||||||
|
tpt=killbuf;
|
||||||
|
while( (*tpt=='*') ) tpt++;
|
||||||
|
if( (!match("*telnet@*.wildstar.net",tpt)) ||
|
||||||
|
(!match("*telnet@*.wildstar.com",tpt)) )
|
||||||
|
{
|
||||||
|
dump_nicklist(token[0]+1,"TELNET.FLOODERS");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
sprintf(ttbuf,"*%s",killbuf);
|
||||||
|
do_gline(ttbuf,"MASSMESSAGE",
|
||||||
|
"Unsolicited Mass Advertisements are prohibited - [Auto]",
|
||||||
|
3600);
|
||||||
|
*/
|
||||||
|
sprintf(ttbuf,
|
||||||
|
"KILL %s Uworld!uworld.undernet.org :MASS MESSAGE KILL FROM %s\n",
|
||||||
|
token[0]+1,killbuf);
|
||||||
|
writeln(sevsck,ttbuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
strcpy(lastkill,killbuf);
|
||||||
|
strcpy(LastKlr,token[2]);
|
||||||
|
|
||||||
|
DccGlobal(tempbuf,DCC_MMG);
|
||||||
|
sprintf(buf,":%s PRIVMSG #uworld.floods :%s",CHANSVR,tempbuf);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if(!strcasecmp(token[2],"chansvr"))
|
||||||
|
{ sprintf(buf,
|
||||||
|
":Chansvr NOTICE %s :Please use %s\n",token[0]+1,controlbot);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if(!match(token[2],USHELP)) {do_ushelp(sevsck); continue; }
|
||||||
|
else if((!match(token[2],HELPBOT)) &&
|
||||||
|
(!match(token[3],":help"))) {do_helpem(sevsck); continue; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!helpsv) sevstuff(sevsck,fromhost);
|
||||||
|
} /* END BUFFER INPUT */
|
||||||
|
|
||||||
|
strcpy(input_buffer[bf],input_start);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
finishline(start)
|
||||||
|
int start; { int i; i=start; while (token[i]) printf(" %s",token[i++]); }
|
||||||
|
|
||||||
|
int chk_num(int start)
|
||||||
|
{
|
||||||
|
int j;
|
||||||
|
j=start;
|
||||||
|
while (token[j]) {
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
return j;
|
||||||
|
}
|
||||||
|
|
||||||
|
do_scmd(int sck)
|
||||||
|
{int i,j,k;
|
||||||
|
char temp[512];
|
||||||
|
if(!i) i = 4;
|
||||||
|
j=chk_num(0);
|
||||||
|
strcpy(temp,"");
|
||||||
|
if (j>4)
|
||||||
|
for(i=4;i<j;i++) {
|
||||||
|
strcat(temp,token[i]);
|
||||||
|
strcat(temp," ");
|
||||||
|
}
|
||||||
|
sprintf(buf,"%s\n",temp); writeln(sck,buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
Gline(fromhost)
|
||||||
|
char *fromhost;
|
||||||
|
{
|
||||||
|
static int counter=0;
|
||||||
|
*token[0]++;
|
||||||
|
if(match(fromhost,lastkill)) {
|
||||||
|
sprintf(buf,"463 %s :Global Kill Line\n",token[0]);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
sprintf(buf,"352 %s \n",token[0]);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
counter++;
|
||||||
|
sprintf(buf,"352 %s \n",token[0]);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
sprintf(buf,"463 %s :Global Kill Line\n",token[0]);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
strcpy(lastkill,fromhost);
|
||||||
|
if(counter > 8) {
|
||||||
|
sprintf(buf,"NICK %s :1\n",token[0]);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
counter = 0;
|
||||||
|
}
|
||||||
|
if(counter = 5) {
|
||||||
|
sprintf(buf,"KILL %s :GLOBAL KILL LINE \n",token[0]);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
do_count()
|
||||||
|
{ if(!strcmp(token[1],"KICK"))
|
||||||
|
{ D_KICK += strlen(storebuf);
|
||||||
|
N_KICK++;
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[1],"JOIN"))
|
||||||
|
{ D_JOIN += strlen(storebuf);
|
||||||
|
N_JOIN++;
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[1],"PART"))
|
||||||
|
{ D_PART += strlen(storebuf);
|
||||||
|
N_PART++;
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[1],"MODE"))
|
||||||
|
{ D_MODE += strlen(storebuf);
|
||||||
|
N_MODE++;
|
||||||
|
if((NETBURST) && strchr(token[0],'.'))
|
||||||
|
{ NETBURST=0;
|
||||||
|
sprintf(buf,":%s PRIVMSG #uworld.floods :Netburst Complete\n",
|
||||||
|
CHANSVR);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[1],"SQUIT"))
|
||||||
|
{ D_SQUIT += strlen(storebuf);
|
||||||
|
N_SQUIT++;
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[1],"QUIT"))
|
||||||
|
{ D_QUIT += strlen(storebuf);
|
||||||
|
N_QUIT++;
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[1],"SERVER"))
|
||||||
|
{ D_SERVER += strlen(storebuf);
|
||||||
|
N_SERVER++;
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[1],"USER"))
|
||||||
|
{ D_USER += strlen(storebuf);
|
||||||
|
N_USER++;
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[1],"NICK"))
|
||||||
|
{ D_NICK += strlen(storebuf);
|
||||||
|
N_NICK++;
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[0],"NICK"))
|
||||||
|
{ D_NICK += strlen(storebuf);
|
||||||
|
N_NICK++;
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[1],"KILL"))
|
||||||
|
{ D_KILL += strlen(storebuf);
|
||||||
|
N_KILL++;
|
||||||
|
}
|
||||||
|
else if(!strcmp(token[1],"TOPIC"))
|
||||||
|
{ D_TOPIC += strlen(storebuf);
|
||||||
|
N_TOPIC++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ N_OTHER++;
|
||||||
|
D_OTHER += strlen(storebuf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int load_serv(char *file)
|
||||||
|
{
|
||||||
|
FILE *infile;
|
||||||
|
char line[500];
|
||||||
|
|
||||||
|
|
||||||
|
if( (infile=fopen(file,"r")) == NULL) return;
|
||||||
|
|
||||||
|
for(num_servs=0;fgets(line,99,infile);num_servs++)
|
||||||
|
{
|
||||||
|
line[strlen(line)-1]='\0';
|
||||||
|
strcpy(server_list[num_servs],line);
|
||||||
|
}
|
||||||
|
fclose(infile);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int join_opchan(char *channel)
|
||||||
|
{ int loop;
|
||||||
|
for(loop=0;operchan[loop];loop++)
|
||||||
|
{ if(strcasecmp(operchan[loop],channel)) continue;
|
||||||
|
sprintf(buf,":CHANSVR JOIN #%s\n",operchan[loop]);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
sprintf(buf,"MODE #%s +pnotil Chansvr 1\n",operchan[loop]);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
34
uworld.h
Executable file
34
uworld.h
Executable file
@@ -0,0 +1,34 @@
|
|||||||
|
#define VERSION "Uworld2 -- the second calling -- v2.0+wild"
|
||||||
|
/*#define UPLINK "pv1648.vincent.iastate.edu"
|
||||||
|
/*#define UPLINK "129.186.22.72" /* */
|
||||||
|
#define UPLINK "vinson.ecn.uoknor.edu"/* */
|
||||||
|
#define SERVERNAME "Uworld.undernet.org"
|
||||||
|
#define SERVERINFO ":The Undernet Service Saver (USS UWORLD)"
|
||||||
|
#define BOTNAME "Uworld"
|
||||||
|
#define BOTINFO "Uworld Version 2 :The channel saving bot"
|
||||||
|
#define DEFAULTPORT 6667
|
||||||
|
#define PASSWORD "hacker"
|
||||||
|
#define USERFILE "user.file"
|
||||||
|
#define PROTFILE "uworld.conf"
|
||||||
|
#define LOGFILE "Uworld.log"
|
||||||
|
#define KILLFILE "kill.log"
|
||||||
|
#define HELPFILE "uworldhelp"
|
||||||
|
#define HELPBOT "UShelper"
|
||||||
|
#define HELPBOTINFO "helpbot undernet.org Norman.Ok.Us.Undernet.org :IRC HELP /msg <botname> help <COMMAND> "
|
||||||
|
#define USHELP "Help_US"
|
||||||
|
#define USHELPINFO "helpbot undernet.org Norman.ok.us.undernet.org :/msg <botname> <command>"
|
||||||
|
#define IRCHELP "ircIIhelp"
|
||||||
|
#define NICKSERV "NickGuard"
|
||||||
|
#define NICKSERVINFO "Nickserv undernet.org Norman.ok.us.undernet.org :The nick machine"
|
||||||
|
#define CHANSVR "ChanSvr"
|
||||||
|
#define CHANSVRINFO "chansvr undernet.org Norman.ok.us.undernet.org :The channel saving bot"
|
||||||
|
#define HELPPATH "HELP"
|
||||||
|
|
||||||
|
|
||||||
|
#define DEBUG 1
|
||||||
|
#define NOHELP 0 /* undefine this if you want the help services online */
|
||||||
|
|
||||||
|
#define GLINE -5
|
||||||
|
#define CLEARCHAN 10
|
||||||
|
#define OPCOM 20
|
||||||
|
|
||||||
7
uworld.sh
Executable file
7
uworld.sh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/csh
|
||||||
|
cd ~dvmitche/misc/uworld
|
||||||
|
|
||||||
|
while(1)
|
||||||
|
midway nobackground thanks > /dev/null
|
||||||
|
echo Restart Uworld `date` >> Uworld.restart
|
||||||
|
end
|
||||||
62
uworldhelp
Executable file
62
uworldhelp
Executable file
@@ -0,0 +1,62 @@
|
|||||||
|
* opcom mode/kick <arguments>
|
||||||
|
-- Allows operators issue special commands as a server
|
||||||
|
IE /msg Uworld opcom mode #Channel +o Walla
|
||||||
|
/msg Uworld kick #Channel Walla :Uworld kick
|
||||||
|
* clearchan [parms] <#channel>
|
||||||
|
-- Destroys <parms> on said channel.
|
||||||
|
Parameters available: o = Ops, m = Modes, k = kick users to resynch
|
||||||
|
default parameters are mob (Modes, Ops and Bans)
|
||||||
|
IE /msg Uworld clearchan #Channel
|
||||||
|
/msg Uworld clearchan o #Channel
|
||||||
|
* clearmodes <#channel>
|
||||||
|
-- Same as clearchan m, clears ALL modes of a said channel.
|
||||||
|
* clearops <#channel>
|
||||||
|
-- Same as clearchan o, clears ALL ops of a said channel.
|
||||||
|
* clearbans <#channel>
|
||||||
|
-- Same as clearchan b, clears ALL ops of a said channel.
|
||||||
|
* gline [seconds] [<user@host> OR <nick>] <reason>
|
||||||
|
-- Bans a mask from all Undernet servers.
|
||||||
|
the default seconds are 7200 (2 hours)
|
||||||
|
IE /msg Uworld gline *@ppp.somewhere.com clones
|
||||||
|
/msg Uworld gline 100 *@ppp.somewhere.com a 100 second gline for *@ppp.somewhere.com
|
||||||
|
/msg Uworld gline Cloner NO clones!
|
||||||
|
* operin <#channel>
|
||||||
|
-- To allow YOU to join an oper channel, #uworld.floods and #Valhalla
|
||||||
|
* nofloods
|
||||||
|
-- To Allow you to join #Uworld.Floods, this is just for the lazy people who can't type "operin #Uworld.Floods" ;-)
|
||||||
|
* join <#channel>
|
||||||
|
-- Make ChanSvr join a channel, use this only if you having troubles with channel losing Ops
|
||||||
|
IE /msg Uworld join #Channel
|
||||||
|
* leave <#channel>
|
||||||
|
-- Make ChanSvr leave said channel, use this if ChanSvr is stuck in a channel after a clearchan or after you use the join command
|
||||||
|
* operadd <#channel>
|
||||||
|
-- Make a channel an Oper channel ONLY, every oper must use the "operin" command to join and non oper'ed users will be kicked
|
||||||
|
* operrem <#channel>
|
||||||
|
-- Remove a channel from Oper mode
|
||||||
|
* help -- Outdated help file.
|
||||||
|
* wibble -- toggle Wibble Mode on or off
|
||||||
|
* stats -- Show network GLOBAL stats
|
||||||
|
* users -- Show you all users on Uworld database
|
||||||
|
* chanlevel #channel -- Show access on given channel
|
||||||
|
* reop #channel -- Gives you ops on #channel if you have access.
|
||||||
|
* kiltel nickanme -- terminates telnet/guest user from wildthang telnet.
|
||||||
|
* reconnect -- reconnect the Uworld Server side when split.
|
||||||
|
* makehelp -- Rebuild the helpbots if they are gone.
|
||||||
|
* info nickname -- simular to /whois nickname, tells you oper that oper level
|
||||||
|
* servs -- list servers protected by Uworld antiflood.
|
||||||
|
* protect -- add your server to the protected list.
|
||||||
|
* scan *user@*.host -- returns total number of users from matching mask.
|
||||||
|
* lusers -- returns users listing from uworlds database.
|
||||||
|
note that since uworld doesnt process splits
|
||||||
|
that this lusers gets hosed occassionaly.
|
||||||
|
** nohelp -- terminate help bots.
|
||||||
|
** nokill -- disarm antiflood kill power.
|
||||||
|
** dokill -- arm antiflood kill power
|
||||||
|
** jupe server.name -- Jupes said server.. server should be SQUIT FIRST, requires oper level 8
|
||||||
|
** masskill *mask* -- kills all users matching given mask.
|
||||||
|
** spew *mask* -- list all users with matching user@host
|
||||||
|
|
||||||
|
*- Uworld's help was provided to you by Walla. -*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
61
wastedump.c
Normal file
61
wastedump.c
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include "myfile.h"
|
||||||
|
#include "nicklist.h"
|
||||||
|
#include "wastedump.h"
|
||||||
|
|
||||||
|
extern char storebuf[];
|
||||||
|
extern char *operchan[];
|
||||||
|
extern time_t S_TIME;
|
||||||
|
extern char *token[];
|
||||||
|
extern time_t NOWTIME;
|
||||||
|
extern char buf[];
|
||||||
|
extern int botsck,sevsck;
|
||||||
|
extern int noopers;
|
||||||
|
extern char channel[];
|
||||||
|
extern char comment[];
|
||||||
|
extern char orig[];
|
||||||
|
extern char opcommand[];
|
||||||
|
extern int status;
|
||||||
|
extern int showme;
|
||||||
|
|
||||||
|
|
||||||
|
int create_bot(char *botname,char *botuser, char *bothost,char *botinfo)
|
||||||
|
{
|
||||||
|
sprintf(buf,"NICK %s 1 %ul %s %s %s :%s\n",botname,time(NULL)-86400,
|
||||||
|
botuser,bothost,SERVERNAME,botinfo);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
int JoinChannel(char *botname,char *channel)
|
||||||
|
{ sprintf(buf,":%s JOIN %s\n",botname,channel);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
sprintf(buf,"MODE %s +nto %s\n",channel,botname);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
int StartWastedump()
|
||||||
|
{ create_bot(WASTE_BOTNAME,WASTE_BOTUSER,WASTE_BOTHOST,WASTE_BOTINFO);
|
||||||
|
sprintf(buf,":%s MODE %s +kid\n",WASTE_BOTNAME,WASTE_BOTNAME);
|
||||||
|
writeln(sevsck,buf);
|
||||||
|
JoinChannel(WASTE_BOTNAME,WASTE_CHANNEL);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int WriteWastedump(char *buffer)
|
||||||
|
{
|
||||||
|
writeln(sevsck,buffer);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ParseWastedump()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
6
wastedump.h
Normal file
6
wastedump.h
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#define WASTE_BOTNAME "Immortal1"
|
||||||
|
#define WASTE_BOTUSER "Immortal"
|
||||||
|
#define WASTE_BOTHOST "There.can.be.only.ONE"
|
||||||
|
#define WASTE_BOTINFO "Keeper of the Immortal Realms"
|
||||||
|
#define WASTE_CHANNEL "#wildstar"
|
||||||
|
|
||||||
Reference in New Issue
Block a user