| 赞 | 12 |
| VIP | |
| 好人卡 | |
| 积分 | 4 |
| 经验 | |
| 最后登录 | 2024-6-29 |
| 在线时间 | 1606 小时 |
傻♂逼
- 梦石
- 0
- 星屑
- 374
- 在线时间
- 1606 小时
- 注册时间
- 2007-3-13
- 回帖
- 6005
 
|
楼主 |
发表于 2012-2-2 12:11:24
|
显示全部楼层
凌童鞋 发表于 2012-2-2 12:10 
论坛附件网通下载不稳定……有木有115的?
[pre lang="Ruby" line="1"]#encoding : utf-8
def windows?
!(RUBY_PLATFORM =~ /win32/).nil?
end
#if windows?
require 'iconv'
$i=Iconv.new("GBK","UTF-8")
$g=Iconv.new("UTF-8","GBK")
alias print_oo print
alias gets_oo gets
def print(str)
print_oo $i.iconv str
end
def gets
return $g.iconv gets_oo
end
#end
require "zlib"
require "openssl"
require "digest/sha2"
print "模板名字:"
name=gets.delete("\n").delete("\r")
print "模板ID(唯一标识符):"
id=gets.delete("\n").delete("\r").to_sym
print "模板作者:"
maker=gets.delete("\n").delete("\r")
print "加密选项(yes/no):"
key=gets.delete("\n").delete("\r")
print "高级控制串(保留功能,不明白的留空即可):"
control=gets.delete("\n").delete("\r")
############################################################
## 您需要注意的是,加密只能保证您的模板在分发时不被窃取 !##
############################################################
def pathary2path(path)
path1=""
for i in path
path1<<i<<"\\"
end
return path1
end
def copyall(src,flag)
list=Dir.entries(src)
list.each_index do |x|
next if list[x]=="." or list[x]==".." or list[x]==".svn" or list[x]=="entries" or list[x]==".git"
#puts list[x]
print src+list[x] + "\n"
unless File.directory?(src+list[x])
#FileUtils.cp "#{src+list[x]}"
skey=OpenSSL::Cipher.new('aes-256-cbc').encrypt
skey.key=$key
skey.iv=$iv
File.open(src+list[x],"rb"){|f|fd=f.read();ck=Digest::SHA512.base64digest(fd);$flist<<["file",flag+list[x],ck,Zlib::Deflate.deflate(skey.update(fd)+skey.final,5)];};
else
#Dir::mkdir(target+list[x])
$flist<<["dir",src+list[x]]
copyall(src+list[x]+"\\",flag+list[x]+"/")
end
end
end
path=Dir.pwd
path.gsub!(/\//){"\\"}
path<<"\\"
head={:id=>id,:name=>name,:maker=>maker,:control=>control,:ver=>"0.0.1 b3",:keyed=>(key=="yes"),:coder=>"aes-256-cbc"}
$skey=OpenSSL::Cipher.new('aes-256-cbc').encrypt
$key = $skey.random_key
$iv = $skey.random_iv
if head[:keyed]
File.open(path+id.to_s+".tpl.key","wb"){|f|Marshal.dump([$key,$iv],f)}
else
head[:code]=[$key,$iv]
end
$flist=[]
Dir.chdir(path+"template\\")
copyall(path+"template\\","/")
url=path+id.to_s+'.tpl'
print url
File.open(url,"wb"){|f|
Marshal.dump(head,f)
Marshal.dump($flist,f)
}
[/pre]
|
|