Advertisement
Guest User

Untitled

a guest
Nov 9th, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.06 KB | None | 0 0
  1. #!/usr/bin/ruby
  2. require 'webrick'
  3. require 'sqlite3'
  4. require 'openssl'
  5.  
  6. $db=SQLite3::Database.new "users.db"
  7.  
  8. class MyServlet < WEBrick::HTTPServlet::AbstractServlet
  9.     def do_POST(request,response)
  10.         html=""
  11.         print "#{request.query['user']}\n"
  12.         print "#{request.query['password']}\n"
  13.         case request.path
  14.             when "/login"
  15.                 rows=$db.execute "SELECT password FROM users WHERE user=\'#{request.query['user'].gsub(/\*|\'/,'')}\'"
  16.                 if rows.count==0
  17.                     html+="<h3>no such user</h3>"
  18.                 else
  19.                     if rows[0][0]==request.query["password"]
  20.                         html+="<h3>you are successfully logged in</h3>"
  21.                     else
  22.                         html+="<h3>wrong password</h3>"
  23.                     end
  24.                 end
  25.         end
  26.         response.status=200
  27.         response.content_type="text/html"
  28.         response.body=html
  29.     end
  30.     def do_GET(request,response)
  31.         html="<html>"
  32.         html+="<body>"
  33.         html+="<script src=\"https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js\"></script>"
  34.         html+="<script src=\"//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js\"></script>"
  35.         html+="<center>"
  36.         case request.path
  37.             when "/"
  38.                 html+="<div><a href='/login'>/login</a></div>"
  39.                 html+="<div><a href='/register'>/register</a></div>"
  40.             when "/login"
  41.                 if not (request.query["user"] and request.query["password"])
  42.                     html+="<h3>login form</h3>"
  43.                     html+="<form action='/login' id='f'>"
  44.                     html+="<div><input name='user' type='text' placeholder='login' id='usr'></div>"
  45.                     html+="<div><input name='password' type='password' placeholder='password' id='pwd'></div>"
  46.                     html+="<input type='button' value='login' id='submitButton'>"
  47.                     html+="</form>"
  48.                     html+=<<-EOF
  49.                     <script>
  50.                     $("#submitButton").click(function(event) {
  51.                         event.preventDefault();
  52.                         var usr=CryptoJS.AES.encrypt($("#usr").val(),"123");
  53.                         var pwd=CryptoJS.AES.encrypt($("#pwd").val(),"123");
  54.                         $.post("/login",
  55.                             {
  56.                                 user: usr.toString(),
  57.                                 password: pwd.toString()
  58.                             },
  59.                             function(data,status) {
  60.                         });
  61.                     });
  62.                     </script>
  63.                     EOF
  64.                 end
  65.             when "/register"
  66.                 if not (request.query["user"] and request.query["password"])
  67.                     html+="<h3>register form</h3>"
  68.                     html+="<form action='/register'>"
  69.                     html+="<div><input name='user' type='text' placeholder='login'></div>"
  70.                     html+="<div><input name='password' type='password' placeholder='password'></div>"
  71.                     html+="<input type='submit' value='register'>"
  72.                     html+="</form>"
  73.                 else
  74.                     rows=$db.execute "SELECT * FROM users WHERE user=\'#{request.query['user']}\'"
  75.                     if rows.count==0
  76.                         $db.execute "INSERT INTO users (user,password) VALUES (\'#{request.query['user']}\',\'#{request.query['password']}\')"
  77.                         html+="<h3>you are registered</h3>"
  78.                     else
  79.                         html+="<h3>this user is already registered</h3>"
  80.                     end
  81.                 end
  82.         end
  83.         html+="</center>"
  84.         html+="</body>"
  85.         html+="</html>"
  86.         response.status=200
  87.         response.content_type="text/html"
  88.         response.body=html
  89.     end
  90. end
  91.  
  92. server=WEBrick::HTTPServer.new(:Port=>8080)
  93. server.mount "/",MyServlet
  94. trap("INT") {
  95.     server.shutdown
  96. }
  97. server.start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement