Advertisement
Guest User

Untitled

a guest
Jun 30th, 2015
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.11 KB | None | 0 0
  1. --[[
  2.     webserver/server.lua
  3. ]]
  4.  
  5. --require( "glsock2" );
  6. require( "bromsock");
  7. webserver.server = {};
  8. local server = webserver.server;
  9. --[[
  10. function server.New( )
  11.  
  12.     if ( server.server ) then
  13.         server.server:Cancel();
  14.         server.server:Close();
  15.     end
  16.    
  17.     server.server = GLSock(GLSOCK_TYPE_ACCEPTOR);
  18.     server.server:Bind( "127.0.0.1", 80, server.Bind );
  19. end
  20.  
  21. function server.Bind( socket, error )
  22.     if( error == GLSOCK_ERROR_SUCCESS ) then
  23.         print("Bound to port 80")
  24.         socket:Listen(0, server.Listen)
  25.     end
  26. end
  27.  
  28. function server.Listen( socket, error )
  29.     if( error == GLSOCK_ERROR_SUCCESS ) then
  30.         print("Listening on port 80")
  31.         socket:Accept(server.Accept)
  32.     end
  33. end
  34.  
  35. function server.Accept( socket, client, error )
  36.  
  37.     if( error == GLSOCK_ERROR_SUCCESS ) then
  38.         print("New Client")
  39.         socket:ReadUntil( "\r\n\r\n", server.ReadPacket )
  40.     end
  41.    
  42.     if( error != GLSOCK_ERROR_OPERATIONABORTED ) then
  43.         socket:Accept(server.Accept) -- Keep accepting
  44.     end
  45. end
  46.  
  47. function server.ReadPacket( handle, buffer, error )
  48.     print( handle, buffer, error )
  49.     print("Received " .. buffer:Size() .. " bytes");
  50.     local count, str = buffer:Read( buffer:Size() )
  51.     print( count, str )
  52.  
  53. end
  54. ]]
  55.  
  56. function server.New( )
  57.     if ( server.server ) then server.server:Close() end
  58.     server.server = BromSock();
  59.    
  60.     if (not server.server:Listen(80)) then
  61.         print("[BS:S] Failed to listen!")
  62.     else
  63.         print("[BS:S] Server listening...")
  64.     end
  65.  
  66.    
  67.     server.server:SetCallbackAccept(function(serversock, clientsock)
  68.         print("[BS:S] Accepted:", serversock, clientsock)
  69.        
  70.         clientsock:SetCallbackReceive(function(sock, packet)
  71.             print("[BS:S] Received:", sock, packet)
  72.             print("[BS:S] R_Num:", packet:ReadUntil("\r\n\r\n"))
  73.            
  74.             --webserver.HTTP.HandleRequest( packet:ReadStringAll() )
  75.         end)
  76.        
  77.         clientsock:SetCallbackDisconnect(function(sock)
  78.             print("[BS:S] Disconnected:", sock)
  79.         end)
  80.        
  81.         clientsock:SetTimeout(1000) -- timeout send/recv commands in 1 second. This will generate a Disconnect event if you're using callbacks
  82.        
  83.         clientsock:Receive()
  84.         serversock:Accept()
  85.     end)
  86.    
  87.     server.server:Accept()
  88. end
  89.  
  90. server.New( )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement