Newer
Older
editor / root / textcode.rb
#!/usr/bin/env ruby
# coding: utf-8
Encoding.default_external = 'utf-8'

require'kconv'
require'cgi'
require'open3'
require'sqlite3'
require'timeout'

def ptag(name)
  puts"<p>#{name}</p>"
end

begin
  Timeout.timeout(0.5){
    
c = CGI.new(:accept_charset => "UTF-8")

print"Content-type: text/html; charset=utf-8\n\n"

SQLite3::Database.new("../data/ranking.db") do |db|
  db.results_as_hash = true

  coderead = c["example"]
  if /system|exec|open/  =~ coderead
    file = File.open("escape.txt", "r")
    puts file.read
    file.close
    exit
  end
    
namae = c["name"]
ans = c["ans"].delete("\r")
newans = ans.strip

cmd = "ruby -Ku -e '#{coderead}'"
o,$e,s = Open3.capture3(cmd) #o,$e,s = 実行結果、エラー文、プロセス?
newo = o.strip

print <<EOF
<DOCTYPE html>
  <head> 
    <meta charset=utf-8>
    <title>テキストエディタ読み込み</title>
    <link rel="stylesheet" type="text/css" href="editor.css">
    <style>
<!--
-->
    </style>
  </head>
  <body>
EOF


puts("<h1>入力したコード</h1>")
printf("<textarea name=\"example\" readonly=\"readonly\">%s</textarea>\n", coderead)
puts("<h1>実行結果</h1>")

puts("<div id=\"result\">")
printf("<pre>%s</pre>\n", CGI.escapeHTML(o)) 
puts("</div>")

  if newans == newo #一致したときにDBにかきこむ
    puts("<h2>おめでとう!!成功です!!</h2>")
    if namae == ""
      ptag("名前が入力されていません!名前を入力して下さい。")
    else
      #db.execute("insert into ranking (id, name) values (?, ?)",coderead , namae)
      #puts("<h3>ランキングに書き込みました!</h3>")
    end
    if $e == ""  
      puts("<h2>エラー文</h2>")
      printf("<p>%s</p>\n", $e) 
    end
  else
    puts("<h3>もう一度やってみよう...!!</h3>")
  end
end

puts("<a href=\"./editor.rb\">エディタ画面へ戻る</a>")
puts("</body>\n</html>")

 }
rescue Timeout::Error
  file = File.open("errormes.txt", "r")
  puts file.read
  file.close
end