Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.21 KB | None | 0 0
  1. require "socket"
  2.  
  3.  
  4. class User
  5.     attr_accessor :username, :password, :buffer
  6.    
  7.  
  8.     def initialize
  9.         @buffer = ""   
  10.     end
  11.  
  12.     def GetBuffer()
  13.         puts "FUCKING BUFFER"
  14.     end
  15.  
  16. end
  17.  
  18.  
  19. class DNDServer
  20.     attr_reader :socket, :serverthread, :connectionthread, :connectionid
  21.  
  22.     def initialize
  23.         puts "[I] Initialising server"
  24.         @socket = TCPServer.new('192.168.1.2', 20000)
  25.         @connectionid = 0
  26.         @ret = "\r\n"
  27.         @simone = User.new
  28.         @carl = User.new
  29.     end
  30.        
  31.     def TakeConnections
  32.         puts "Listening on localhost:20000"
  33.         @serverthread = Thread.start do
  34.             while true
  35.                 @connectionthread = Thread.start(@socket.accept) do |s|
  36.                     Connected(s)                           
  37.                 end
  38.             end
  39.         end
  40.     end
  41.    
  42.     def NewConnectionID
  43.         @connectionid += 1
  44.         return @connectionid;
  45.     end
  46.    
  47.     def Connected(s)
  48.         puts ("[Connection]\tAssigned ID:" + NewConnectionID().to_s + "\n")     # Assign Connection
  49.         s.print("Welcome to ZombiServer v0.01" + @ret)                          # Server Welcome
  50.         s.print("User: ")                                                       # Ask for username
  51.         user = s.gets                                                           # Store username
  52.         s.print("Password: ")                                                   # Ask for username
  53.         puts "User identified himself as " + user                               # User is now claiming ident
  54.         pass = s.gets                                                           # Store username
  55.         s.print("Welcome back " + user )                                        # Greet specific user
  56.         StartBufferOutput(user, s)
  57.         StartInput(user, s)
  58.     end
  59.  
  60.     def StartBufferOutput(user, s)
  61.  
  62.         if user.include? "simone"
  63.         puts "Starting buffered output for Simone"
  64.             Thread.start do
  65.                 while 1==1
  66.                     sleep 0.1
  67.                     s.print simone.GetBuffer(s)
  68.                 end
  69.             end
  70.         end
  71.  
  72.         if user.include? "carl"
  73.         puts "Starting buffered output for Carl"
  74.             Thread.start do
  75.                 while 1==1
  76.                     puts "Carls buffer started to be read"
  77.                     carl.GetBuffer()
  78.                     puts "Carls buffer has been read"
  79.                 end
  80.             end
  81.         end
  82.        
  83.     end
  84.    
  85.     def StartInput(user, s)
  86.        
  87.         if user.include? "carl"
  88.         puts "Starting input for Carl"
  89.             while 1==1
  90.                 command = s.gets
  91.                 @simone.buffer = command
  92.             end
  93.         end
  94.        
  95.         if user.include? "simone"
  96.         puts "Starting input for Simone"
  97.             while 1==1
  98.                 command = s.gets
  99.                 @carl.buffer = command
  100.             end
  101.         end
  102.        
  103.     end
  104.  
  105.  
  106. end
  107.  
  108. server = DNDServer.new
  109. server.TakeConnections()
  110. server.serverthread.join
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement