Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting IP address from HTTP POST request using Python

I am using a python script to do my webserver using the BaseHTTPServer module. Below is my code for the server:

import string,cgi,time
from os import curdir, sep
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
#import pri

class MyHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        try:
        if self.path.endswith("/"):
        f = open(curdir + sep + "index.html")
        self.send_response(200)
        self.send_header('Content-type',    'text/html')
        self.end_headers()
        self.wfile.write("<HTML> GET OK.<BR>")
        f.close()
        return

            return

        except IOError:
            self.send_error(404,'File Not Found: %s' % self.path)


    def do_POST(self):
        global rootnode
        try:
            ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
            if ctype == 'multipart/form-data':
                query=cgi.parse_multipart(self.rfile, pdict)
            self.send_response(200)
            self.send_header('Content-type',    'text/html')
        self.end_headers()
        file = query.get('file')
        self.wfile.write("<HTML> POST OK.<BR>")
        f = open("data.zip", "wb")
            f.write(file[0])
            f.close()
            print("File received.")
        return

        except :
            pass

def main():
    try:
        server = HTTPServer(('', 8080), MyHandler)
        print 'started httpserver...'
        server.serve_forever()
    except KeyboardInterrupt:
        print '^C received, shutting down server'
        server.socket.close()

if __name__ == '__main__':
    main()

Is there anyway to get the IP address of a POST request when my server receives it? Many thanks in advance.

like image 237
Zerhinne Avatar asked Feb 22 '12 05:02

Zerhinne


People also ask

How do I get the IP address of a website in Python?

Python get IP Address from hostnamePython gethostbyname() function accept the hostname as an argument and it will return the IP address of some of the website by using the socket module.

How do I find the HTTP IP address?

DNS Lookup Tool To Find IP Address Of Website Simply go to the DNS Lookup Tool, type the website URL into the text entry, and select Lookup. You'll notice the search yielded a list of IPv4 addresses that differ from the IPs shown using the other methods.


1 Answers

You should be able to get their IP address with self.client_address[0].

like image 181
icktoofay Avatar answered Sep 20 '22 11:09

icktoofay