if cgi.key?("j")
journalNo = cgi["j"].to_s.to_i
if journalNo < 1 or journalNo > journalMax or journalNo > uids.length
journalNo = 0
end
else
journalNo = 0
end
if cgi.key?("l")
entryLimit = cgi["l"].to_s.to_i
if entryLimit < 1 or entryLimit > entryMax
entryLimit = entryMax
end
cookie_limit = CGI::Cookie::new
cookie_limit.name = "limit"
cookie_limit.value = entryLimit.to_s.split
cookie_limit.expires = limit
output =<<EOF + output
"Set-Cookie:#{cookie_limit}"
EOF
end
if comments.length > 0
comments.each do |comment|
comment = "<hr>" + comment
if counter.put( comment ) != true
break
end
end
else
counter.put <<EOF
【#{lastreadtime.strftime('%Y/%m/%d %H:%M')} 時点ではコメントがありません】
EOF
end
Lib.rb (スコア:1)
def initialize()
@warnmsg =<<EOF
<hr>
Data size over.
EOF
@footermsg =<<EOF
</body>
</html>
EOF
@counter = 0
@output_limit = 0
if ENV["HTTP_USER_AGENT"] =~ /AH-J3002V/
@output_limit = 50 * 1024 - @footermsg.length
end
ObjectSpace.define_finalizer(self) do
puts @footermsg
end
end
def cntprint(string)
flag = false
counter = @counter + string.length
if @output_limit < 1 || counter < @output_limit
@counter = @counter + string.length
print string
flag = true
end
return flag
end
def put(string)
flag = self.cntprint(string)
if flag != true
self.cntprint(@wrnmsg)
end
return flag
end
end
mobile ID portable_NoGood [slashdot.jp] 併用中
journal.rb (スコア:1)
require 'net/http'
require 'cgi'
require "Lib.rb"
fqdn = "slashdot.jp"
path = "/journal.pl"
commentScript = "comments.rb"
queryTop = "?op=top"
queryUser = "?op=display&uid="
queryTandL = "&theme=slashdotjp&light=1"
journalTopSeparator = "ID 58, journaltop"
entryMax = 25
journalMax = 30
now = Time::now
limit = now + 60 * 60 * 24 * 365
output =<<EOF
Content-Type: text/html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
EOF
counter = Limiter::new
cgi = CGI::new
if cgi.cookies.key?("last")
cookie_last = cgi.cookies["last"]
(year, month, day, hour, min) = cookie_last.value
lastreadtime = Time::local(year, month, day, hour, min)
else
cookie_last = CGI::Cookie::new
cookie_last.name = "last"
lastreadtime = Time::at(0)
cookie_last.value = lastreadtime.strftime("%Y,%m,%d,%H,%M").split(",")
cookie_last.expires = limit
end
if cgi.cookies.key?("limit")
cookie_limit = cgi.cookies["limit"]
entryLimit = cookie_limit.value[0].to_i
else
entryLimit = entryMax
end
if cgi.cookies.key?("uids")
cookie_uids = cgi.cookies["uids"]
uids = cookie_uids.value
else
cookie_uids = CGI::Cookie::new
cookie_uids.name = "uids"
cookie_uids.value = []
cookie_uids.expires = limit
uids = []
end
if cgi.key?("j")
journalNo = cgi["j"].to_s.to_i
if journalNo < 1 or journalNo > journalMax or journalNo > uids.length
journalNo = 0
end
else
journalNo = 0
end
if cgi.key?("l")
entryLimit = cgi["l"].to_s.to_i
if entryLimit < 1 or entryLimit > entryMax
entryLimit = entryMax
end
cookie_limit = CGI::Cookie::new
cookie_limit.name = "limit"
cookie_limit.value = entryLimit.to_s.split
cookie_limit.expires = limit
output =<<EOF + output
"Set-Cookie:#{cookie_limit}"
EOF
end
if journalNo < 1
uids = []
connection = Net::HTTP.new( fqdn )
status, source = connection.get( path + queryTop + queryTandL )
latest = source.split( journalTopSeparator )
uidlist = latest[1].split("<\/TR>")
uidlist.shift
uidlist.each do |uidentry|
tdlist = uidentry.split("<\/TD>")
if tdlist[0] =~ /uid=(\d+)/
uid = $1
if tdlist[2] =~/(\d+)月(\d+)日 (\d+):(\d+) ([AP]M)/
month = $1
day = $2
hour = $3.to_i
mobile ID portable_NoGood [slashdot.jp] 併用中
patch bug fix (スコア:1)
< "Set-Cookie:#{cookie_limit}"
---
> Set-Cookie:#{cookie_limit}
mobile ID portable_NoGood [slashdot.jp] 併用中
comments.rb (スコア:1)
require 'net/http'
require 'cgi'
require "Lib.rb"
journals = "journal.rb"
fqdn = "slashdot.jp"
path = "/comments.pl"
query = "?threshold=-1&mode=flat&commentsort=0&light=1&sid="
commentsSeparator = "ID 153, printCommComments;misc;default -->"
journalMax = 30
counter = Limiter::new
cgi = CGI::new
if cgi.key?("n")
journalNext = cgi["n"].to_s.to_i
if journalNext < 1 or journalNext > journalMax
journalNext = 0
end
else
journalNext = 0
end
if cgi.key?("sid")
sid = cgi["sid"].to_s
else
sid = 0
end
connection = Net::HTTP.new( fqdn )
status, source = connection.get( path + query + sid )
list = source.split( commentsSeparator )
commentlist = list[1].split("<TR><TD>")
comments=[]
commentlist.each do |comment|
if comment =~ /<TD>(.*)<\/TD>/m
comments.push($1)
end
end
counter.put <<EOF
Content-Type: text/html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>#{sid}</title>
</head>
<body>
<a href="#{journals}?j=#{journalNext + 1}">戻</a>:<a href="#{journals}?j=#{journalNext}">次</a>
EOF
if comments.length > 0
comments.each do |comment|
comment = "<hr>" + comment
if counter.put( comment ) != true
break
end
end
else
counter.put <<EOF
【#{lastreadtime.strftime('%Y/%m/%d %H:%M')} 時点ではコメントがありません】
EOF
end
mobile ID portable_NoGood [slashdot.jp] 併用中