Newer
Older
WebSocketSample / otp / otp-cgi.rb
@HIROSE Yuuji HIROSE Yuuji on 23 Oct 2022 1 KB add otp-cgi*
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
#

require 'sqlite3'
require 'json'
require './userdb.rb'
MAILFROM = "admin@e.koeki-u.ac.jp"

# https://stackoverflow.com/questions/52353560/how-can-i-access-the-raw-request-body-in-ruby-cgi-scripts
begin
  c = JSON.parse($stdin.read)
rescue
  c = {}
end
user = c["user"] || ""
skey = c["skey"] || ""
tkey = c["tmpkey"] || ""
code = c["passcode"] || ""
STDERR.printf("USER=[[%s]]\n", user)

userdb = UserDB.new

data = {}
if !user || user == ""
  # STDERR.puts "000000000000000"
elsif skey > "" && userdb.authSkey(user, skey)
  # STDERR.puts "11111111111111111111111111"
  if c["note"]
    data["reply"] = userdb.notAI(c, user)
  else
    data["skey"] = skey
  end
elsif tkey > "" && skey=userdb.authTmpKey(user, tkey, code)
  # STDERR.puts "222222222222222222222"
  data["skey"] = skey
else
  # STDERR.puts "333333333333333"
  data["tmpkey"] = userdb.genTmpkey(user)
end

resp = JSON.pretty_generate(data)
# STDERR.puts "Sent: #{resp}"

print(<<EOF)
Content-type: text/json; charset=UTF-8

#{resp}
EOF
exit