修改一下Python代码

buyue__ 2016-09-19 04:37:39
本人不是搞python开发的,因为需要用到下面的代码,但是运行时提示
DeprecationWarning: the md5 module is deprecated; use hashlib instead import md5
应该是版本的问题,好像md5这个库废弃了,我的python版本是2.6的,代码如下
import socket
import httplib
import base64
import md5
import urllib2
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
from M2Crypto import RSA
from M2Crypto import BIO

def get_local_ip():
try:
csock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
csock.connect(('8.8.8.8', 80))
(addr, port) = csock.getsockname()
csock.close()
return addr
except socket.error:
return ""

class MyHTTPRequestHandler(BaseHTTPRequestHandler):

def do_POST(self):
#get public key
pub_key_url = ''
try:
pub_key_url_base64 = self.headers['x-oss-pub-key-url']
pub_key_url = pub_key_url_base64.decode('base64')
url_reader = urllib2.urlopen(pub_key_url)
pub_key = url_reader.read()
except:
print 'pub_key_url : ' + pub_key_url
print 'Get pub key failed!'
self.send_response(400)
self.end_headers()
return

#get authorization
authorization_base64 = self.headers['authorization']
authorization = authorization_base64.decode('base64')

#get callback body
content_length = self.headers['content-length']
callback_body = self.rfile.read(int(content_length))

#compose authorization string
auth_str = ''
pos = self.path.find('?')
if -1 == pos:
auth_str = self.path + '\n' + callback_body
else:
auth_str = urllib2.unquote(self.path[0:pos]) + self.path[pos:] + '\n' + callback_body
print auth_str

#verify authorization
auth_md5 = md5.new(auth_str).digest()
bio = BIO.MemoryBuffer(pub_key)
rsa_pub = RSA.load_pub_key_bio(bio)
try:
result = rsa_pub.verify(auth_md5, authorization, 'md5')
except e:
result = False

if not result:
print 'Authorization verify failed!'
print 'Public key : %s' % (pub_key)
print 'Auth string : %s' % (auth_str)
self.send_response(400)
self.end_headers()
return

#do something accoding to callback_body

#response to OSS
resp_body = '{"Status":"OK"}'
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.send_header('Content-Length', str(len(resp_body)))
self.end_headers()
self.wfile.write(resp_body)

class MyHTTPServer(HTTPServer):
def __init__(self, host, port):
HTTPServer.__init__(self, (host, port), MyHTTPRequestHandler)


if '__main__' == __name__:
server_ip = get_local_ip()
server_port = 23450

server = MyHTTPServer(server_ip, server_port)
server.serve_forever()
...全文
261 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Thomas_young2015 2016-09-19
  • 打赏
  • 举报
回复
md5已经废弃,被hashlib库代替,把import md5改成import hashlib,代码中用到的md5库中方法替换为hashlib库中相应的方法
sprawling 2016-09-19
  • 打赏
  • 举报
回复
应该是的,库的名字都改了,说明这个东西一直在改进呢

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧