光缆还没修好,公司内部系统有些是放在美国的,不能访问就不能工作。而且因为是内部系统,web proxy也不能用。受
这位亚洲Geek的启发,用ruby做了一个mail proxy,用gmail做桥梁,deploy在美国office,从上海office发mail去访问。
使用效果附图
1. 发mail
2. 收到的mail(这是上一版的回复mail,现在code是把html文件作为附件的)
主要用到
- Watir 用来在那里打开IE,login,goto link,get html
- Gmailer 用来收发gmail
- 还有些小trick,在code里面都commment说明了一下
目前这个程序可以解决一些GET的请求,和GET的form,下一步要做的是,都是些不很紧迫的需求:
- form method=post,应该也可以用watir实现。
- 直接在mail里面click或者submit,就可以自动发一封request mail出去,把outlook当浏览器使。
共享一下代码。理论上可以访问任何网站。出于安全,code里面的公司网站,mail地址都只是例子。code只管拿去用,不要干坏事。
require 'gmailer'
require 'watir'
include Watir
host = "http://app.company.com"
login = "sa"
pwd = "secret"
gmail_account = 'mail.proxy'
gmail_pwd = 'secret'
msgerr = ""
GMailer.connect(gmail_account, gmail_pwd) do |g|
g.messages(:read => false).each_msg do |msg|
body = msg.body.gsub("<WBR>", "").gsub("u003d", "=") # to fix MIME format
unless body
# the same subject mails will be regarded as a conversation,
# we define a rule to avoid that.
msgerr = "Please do not use the subject that has been used."
else
urls = body.scan(/<a href="(.*)".*>\1<\/a>/i).flatten!
if urls.empty?
# if get no url, return a error msg.
msgerr = "Cannot find any URL in the request mail."
else
# browser
browser = IE.new
browser.goto( host + '/login.asp' )
browser.text_field( :name, 'loginname' ).set( login )
browser.text_field( :name, 'password' ).set( pwd )
browser.button( :name, 'submit2' ).click
files = []
for url in urls
browser.goto(url) # visit the url
html = browser.html.gsub("href=\"", "href=\"#{/.*\//.match(url)[0]}") # rewrite links
html = html.gsub("action=", "action=#{/.*\//.match(url)[0]}") # rewrite form actions, assume method=get
filename = url.split("/").last + ".htm"
File.open(filename, 'w') {|f| f.puts html}
files << filename
end
g.send(:to => msg.sender_email,:subject => "Re: " + msg.subject,:files => files)
files.each {|f| File.delete(f)}
browser.close
end
end
if msgerr
puts msgerr
g.send(:to => msg.sender,:subject => "Re: " + msg.subject,:body => msgerr)
end
end
end
[img]
- 描述: send mail
- 大小: 24.7 KB
- 描述: getmail
- 大小: 31.9 KB
分享到:
- 2007-01-04 22:42
- 浏览 2967
- 评论(0)
- 论坛回复 / 浏览 (0 / 3761)
- 查看更多
相关推荐
mail-proxy
Rails-反向代理Ruby on Rails的反向代理。 反向代理接受来自客户端的请求,将其转发到可以满足该请求的服务器,然后将服务器的响应返回给客户端安装你知道该怎么做。 在您的Gemfile中gem 'rails-reverse-proxy' 然后...
LAMP+Proxy+读写分离 基于企业实战 包括安装 配置 优化 vip专享
proxy源代码,linux下的ftp 代理的源代码,大家多多支持啊
使用mysql-proxy实现mysql读写分离
FoxyProxy 是一款高级代理服务器管理工具,是 Firefox 火狐浏览器的代理插件,相比比 SwitchProxy、ProxyButton、QuickProxy、xyzproxy、ProxyTex 等扩展提供更多的功能。 FoxyProxy 通过使用通配符、正则表达式和...
apache Proxy Error apache Proxy Error apache Proxy Error apache Proxy Error
esri.config.defaults.io.proxyUrl is not set所缺文件 proxy.jsp、proxy.ashx、proxy.php、proxy.config
ABAP 调用ABAP PROXY
2014最新版proxy lab参考答案,小伙伴快来吧!
book 2020 for proxy settings
使用mysql5.7+sharding-proxy实现分表,策略为每半年时间分一次表
Google Chrome插件: Proxy SwitchOmega 2.5.15. 轻松快捷地管理和切换多个代理设置. 离线插件使用方法: 1. 打开Chrome -> 自定义及控制按钮(右上角) -> 更多工具 -> 扩展程序 (有可能需要打开开发者模式) 2. 拖拽...
forum proxy leecher 1.11forum proxy leecher 1.11forum proxy leecher 1.11forum proxy leecher 1.11
OPC Proxy Foundation
MySQL Proxy 实现负载均衡测试 MySQL Proxy 实现负载均衡测试
一个写得不错的Proxy服务器。比较适合学习用。其中采用的C I/O库是CMU的,有一定借鉴作用。
simple proxy
mysql +mmm + proxy实现读写分离 ,数据库实现读写分离
Proxy服务器连网结构Proxy服务器连网结构Proxy服务器连网结构Proxy服务器连网结构Proxy服务器连网Proxy服务器连网结构结构Proxy服务器连网结构Proxy服务器连网结构