Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket,struct
- msg={
- 0:"stay frosty",#client (handshake)
- 1:"fool,mad dunks like ya grandma",#server (handshake)
- 2:"step off bouta slam yo moms lik a basket swish",#client (unique server name)
- 3:"swiiiiiishhhh",#server (accepted)
- 4:"dunkie do dick in my ass",#client (client type)
- #CLIENT TYPES
- 5:"yo u gay",#server (ok)
- #1 BOT
- #2 SYSTEMS
- #3 ADMIN
- 6:"ya my dic",#client (ok,any server options)
- 7:"where is it o dat tiny lil thing",#server (none)
- 8:"callin ya on my OWN PHONE dam",#client (done,just chillen till summin to send)
- #OPCODES
- 10:"im done with you faggot",
- 11:"wtf get out",
- 12:"ummmmmm...",
- 13:"Faydin you out",
- 14:"wattap innanet huxtable"}#PING
- class server:
- password = "slamniggadumpsss"
- admin = "nevergivethistoanyone"
- def __init__(self):
- self.serve=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
- self.client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
- self.serve.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
- #autobind server
- self.serve.bind(('',999999))
- self.online = {}
- def PacketOUT(self,state,statelist,variable):
- return chr(len(variable[:255]))+chr(state)+statelist[:255]+'\x00'+variable[:255]
- def PacketIN(self,packet):
- return ord(packet[0]),ord(packet[1]),packet[2:].split("\x00",1)
- def MakeUser(self,IP,client=False):
- self.online[IP[0]]={'details':IP,'user':self.User(self)}
- if client:
- self.online[IP[0]]['user'].MyState = 0
- self.online[IP[0]]['client']=True
- def ClientSetAddress(self,address):
- self.online["00.00.00.00"]['details']=address
- def Recieve(self,address,packet,incoming):
- if address[0] not in self.online:
- self.MakeUser(address)
- #execute state
- result = self.online[address[0]]['user'].run(packet)
- #respond
- incoming.sendto(result,address)
- #return
- return result
- def Send(self,address,packet):
- if address[0] not in self.online:
- self.MakeUser(address,client=True)
- self.client.sendto(packet,self.online[address[0]]['details'])
- def Execute(self,address,packet,asclient=False):
- if address[0] not in self.online:
- self.MakeUser(address,client=asclient)
- return self.online[address[0]]['user'].run(packet)
- class User:
- def __init__(self,masterinstance):
- self.MasterInstance=masterinstance
- self.MyState=1
- self.Verified=0
- def DecreaseState(self):
- self.MyState -= 1
- def run(self,command):
- if command:
- length,opcode,data = self.MasterInstance.PacketIN(command)
- if self.MyState == 0:
- #HANDSHAKE CLIENT
- self.MyState=2
- return self.MasterInstance.PacketOUT(0,msg[0],'*')
- elif self.MyState == 1:
- #HANDSHAKE SERVER
- if opcode==0 and data[0]==msg[0]:
- self.MyState=3#SET TO WAIT FOR UNIQUE NAME
- return self.MasterInstance.PacketOUT(1,msg[1],'*')
- elif self.MyState == 2:
- #UNIQUE SERVER NAME
- self.MyState=4
- return self.MasterInstance.PacketOUT(2,msg[2],'grand p of the ball court, internet huxtables')
- elif self.MyState == 3:
- #UNIQUE NAME
- if opcode==2 and data[0]==msg[2]:
- self.MyState=5#SET TO WAIT FOR USER TYPE
- return self.MasterInstance.PacketOUT(3,msg[3],'*')
- elif self.MyState == 4:
- #HANDSHAKE CLIENT
- self.MyState=6
- return self.MasterInstance.PacketOUT(4,msg[4],'*')
- elif self.MyState == 5:
- #USER TYPE
- if opcode==4 and data[0]==msg[4]:
- self.MyState=7#SET TO WAIT FOR SERVER OPTION
- return self.MasterInstance.PacketOUT(5,msg[5],'*')
- elif self.MyState == 6:
- #HANDSHAKE CLIENT
- self.MyState=8
- return self.MasterInstance.PacketOUT(6,msg[6],'*')
- elif self.MyState == 7:
- #SERVER OPTION
- if opcode==6 and data[0]==msg[6]:
- self.MyState=9#SET TO IDLE,OPERATION MODE
- return self.MasterInstance.PacketOUT(7,msg[7],'*')
- elif self.MyState == 8:
- #HANDSHAKE CLIENT
- return self.MasterInstance.PacketOUT(8,msg[8],'*')
- elif self.MyState == 9:
- #>>>OPERATION MODE<<<
- if opcode==8 and data[0]==msg[0]:
- pass
- return self.MasterInstance.PacketOUT(14,msg[14],'*')
- else:
- return "woot"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement