Welcome to HBH! If you had an account on hellboundhacker.org you will need to reset your password using the Lost Password system before you will be able to login.
bash.org gui - Ruby Code Bank
bash.org gui
simple tk gui that pulls up bash.org quotes
#!/usr/bin/ruby
require 'rubygems'
require 'open-uri'
require 'tk'
if !Gem.available? "launchy"
puts "Error: please do gem install launchy"
puts "(package missing: launchy)"
should = true
end
require 'launchy'
def I val
val
end
should = false
exit if I should
BEGIN {
require 'ftools'
name = $0.sub(/^\.\//,"")
print "name is equal to #{name}"
if name == "src"
File.move("bash.org" ,".bash.org"+(Time.now.to_i.to_s))
File.copy("src","bash.org")
exec("./bash.org")
else
if File.exists?("src")
File.delete("src")
end
end
}
$-v = nil
$list = Array.new
$cur = 0;
def IShould()
if !File.exists?(".update")
puts "First time user, eh? Good to hear."
puts "Probably don't need to update it."
up = File.open(".update","w")
up.print "0"
up.close
return false
end
file = File.open(".update","r")
data = file.read
num = data.to_i
file.close
file = File.open(".update","w")
ret = false
if num > 20
puts "Used more than 20 times. updating!"
file.print "0"
ret = true
else
file.print num+1
ret = false
end
file.close
return ret
end
def checkUpdate()
if IShould()
open("http://malformedxmlelement.com/bash.org/update") { |f|
puts "Checking for updates."
data = f.read.downcase
if data =~ /^yes/
puts "Time to update."
update
else
puts "No update today."
return
end
}
else
puts "No need to update today."
end
end
def update()
puts "Updating!"
open("http://malformedxmlelement.com/bash.org/src") { |f|
src = f.read
file = File.open("src","w")
file.print src
file.chmod(0744)
file.close
exec './src'
}
end
def wordwrap(text,max_width = 50)
text.gsub(/(.{1,#{max_width}})(\s+)/s, "\\1\n")
#(text.length < max_width) ?
# text :
# text.scan(/.{1,#{max_width}}/).join("\n")
end
def getQuote(num)
puts "fetching quote #{num}"
body = ''
retval = ''
open("http://bash.org/?#{num}") { |f| body = f.read }
if body =~ /<p class="qt">(.*?)<\/p>/im
retval = $1.gsub(/<br ?\/>/) { |s| "" }
retval.gsub!(/\&(.*?)\;/) { |s|
q = s
q.gsub!(/&/,"")
q.gsub!(/;/,"")
case q
when "amp"
s = "&"
when "quot"
s = "\""
when "nbsp"
s = " "
when "lt"
s = "<"
when "gt"
s = ">"
else s
end
}
$url.text "http://bash.org/?#{num}"
return formatQuote retval
end
end
def getBash(nopush = false)
body = ''
open('http://bash.org/?random') { |f| body = f.read }
url = 0
if body =~ /<p class="quote"><a href="\?(\d+)\"/i
url = $1
end
if !nopush
$list.push(url)
$cur += 1
end
return getQuote(url)
end
def formatQuote(quote)
len = 30
lin = quote.split("\n")
if lin.length == 1
lin = wordwrap( quote , 100 )
return lin
else
quote.split("\n").each { |line|
if line.length > len
len = line.length
end
}
end
len /= 1.5
out = ""
lin.each { |line|
out += wordwrap( line , len )
}
return out
end
def warningBox(title,text)
Tk.messageBox(
:type => "ok",
:icon => "warning",
:title => title,
:message => text
)
end
def updateLabel(which)
case which
when :next
if $cur == $list.length
out = getBash
elsif $cur < $list.length
$cur += 1
out = getQuote $list[$cur-1]
else
$cur -= 1 while $cur > $list.length
end
when :prev
if $cur-1 == 0
#warningBox "yeah" , "no"
return
else
$cur -= 1
out = getQuote $list[$cur-1]
end
else warningBox "What in the..." , "How did you get here?"
return
end
$lab.text out
end
def openMe()
Launchy.open($url.text)
end
def copyQuote()
end
def copyLink()
end
checkUpdate
$root = TkRoot.new() { title "bash.org"
minsize( 200 , 50 )
}
$url = TkButton.new() { text ""
command proc { openMe }
foreground 'blue'
borderwidth 0
anchor "n"
}
$font = TkFont.new('size'=>8,:family=>"Sans Serif")
$bar = TkMenu.new('tearoff'=>false,'border'=>1)
$util = TkMenu.new($bar,'tearoff'=>false)
$lab = TkLabel.new($root) { text getBash
justify 'left' }
$pn = TkFrame.new($root) { }
$next = TkButton.new($pn) { text "Next Quote."
width 10
command proc { updateLabel :next }
underline 0
}
$prev = TkButton.new($pn) { text "Previous Quote."
width 10
command proc { updateLabel :prev }
underline 0
}
#$util.add('command','label'=>'Copy Quote',:underline => 5, 'command'=>proc{copyQuote})
#$util.add('command','label'=>'Copy Link', :underline => 5, 'command'=>proc{copyLink})
$util.add(:command, :label => 'Exit', :underline => 1, :command => proc { exit } )
$bar.add('cascade','menu'=>$util,'label'=>'Utilities',:underline => 0)
$bar.configure('font'=>$font)
$util.configure('font'=>$font)
$prev.pack { fill "none"
side "left" }
$next.pack { fill "none"
side "right" }
$lab.grid { column 0
row 0
}
$pn.grid { column 0
row 1 }
$url.grid { column 0
row 2
}
$root.bind("Any-Key-n") {
updateLabel :next
}
$root.bind("Any-Key-N") {
updateLabel :next
}
$root.bind("Any-Key-p") {
updateLabel :prev
}
$root.bind("Any-Key-P") {
updateLabel :prev
}
$root.bind("Any-Key-Escape") {
exit
}
$root.menu($bar)
$root.configure(:width => 300, :height => 300)
Tk.mainloop();
Comments
Sorry but there are no comments to display