Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require "socket"
- class User
- attr_accessor :username, :password, :buffer
- def initialize
- @buffer = ""
- end
- def GetBuffer()
- puts "FUCKING BUFFER"
- end
- end
- class DNDServer
- attr_reader :socket, :serverthread, :connectionthread, :connectionid
- def initialize
- puts "[I] Initialising server"
- @socket = TCPServer.new('192.168.1.2', 20000)
- @connectionid = 0
- @ret = "\r\n"
- @simone = User.new
- @carl = User.new
- end
- def TakeConnections
- puts "Listening on localhost:20000"
- @serverthread = Thread.start do
- while true
- @connectionthread = Thread.start(@socket.accept) do |s|
- Connected(s)
- end
- end
- end
- end
- def NewConnectionID
- @connectionid += 1
- return @connectionid;
- end
- def Connected(s)
- puts ("[Connection]\tAssigned ID:" + NewConnectionID().to_s + "\n") # Assign Connection
- s.print("Welcome to ZombiServer v0.01" + @ret) # Server Welcome
- s.print("User: ") # Ask for username
- user = s.gets # Store username
- s.print("Password: ") # Ask for username
- puts "User identified himself as " + user # User is now claiming ident
- pass = s.gets # Store username
- s.print("Welcome back " + user ) # Greet specific user
- StartBufferOutput(user, s)
- StartInput(user, s)
- end
- def StartBufferOutput(user, s)
- if user.include? "simone"
- puts "Starting buffered output for Simone"
- Thread.start do
- while 1==1
- sleep 0.1
- s.print simone.GetBuffer(s)
- end
- end
- end
- if user.include? "carl"
- puts "Starting buffered output for Carl"
- Thread.start do
- while 1==1
- puts "Carls buffer started to be read"
- carl.GetBuffer()
- puts "Carls buffer has been read"
- end
- end
- end
- end
- def StartInput(user, s)
- if user.include? "carl"
- puts "Starting input for Carl"
- while 1==1
- command = s.gets
- @simone.buffer = command
- end
- end
- if user.include? "simone"
- puts "Starting input for Simone"
- while 1==1
- command = s.gets
- @carl.buffer = command
- end
- end
- end
- end
- server = DNDServer.new
- server.TakeConnections()
- server.serverthread.join
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement