Hi
This question may be nonsense but it was random idea.
idea: Embed CGI script server inside django
Ultimate goal: setup proxy in GeoDjango server to access WFS, WFS,-T layers from GeoServer.
Available Solution: GeoNode has used proxy module in the project. But I couldn't use it in my small project. (I don't need all features of GeoNode). Can someone guide me to use the module in my own GeoDjango project
Apache server can run cgi scripts (used XAMPP). I used the openlayer's proxy.cgi placed inside cgi-bin inside xampp folder. I could access WFS layers from geoserver with OpenLayers code. Now I am interested in GeoDjango. GeoDjango has its own development test-server which can be started as >>>python manage.py runserver 8000.
I read of python CGI server and CGI scripts from book: "Python Geospatial Development" by "Errik Westra", (pages 212, 213).

-->\root\
-------->webserver.py
-------->\cgi-bin\
-------------->proxy.py
#filewebserver.py
---------------------------------------------------------------------------------
import BaseHTTPServer
import CGIHTTPServer
address = ('', 8000)
handler = CGIHTTPServer.CGIHTTPRequestHandler
server = BaseHTTPServer.HTTPServer(address, handler)
server.serve_forever()
#file proxy.py
---------------------------------------------------------------------------------
#!/usr/bin/env python
"""This is a blind proxy that we use to get around browser
restrictions that prevent the Javascript from loading pages not on the
same server as the Javascript. This has several problems: it's less
efficient, it might break some sites, and it's a security risk because
people can use this proxy to browse the web and possibly do bad stuff
with it. It only loads pages via http and https, but it can load any
content type. It supports GET and POST requests."""
import urllib2
import cgi
import sys, os
# Designed to prevent Open Proxy type stuff.
'localhost:8080','localhost:80']
method = os.environ["REQUEST_METHOD"]
if method == "POST":
qs = os.environ["QUERY_STRING"]
d = cgi.parse_qs(qs)
if d.has_key("url"):
url = d["url"][0]
else:
else:
fs = cgi.FieldStorage()
try:
host = url.split("/")[2]
if allowedHosts and not host in allowedHosts:
print "Status: 502 Bad Gateway"
print "Content-Type: text/plain"
print
print "This proxy does not allow you to access that location (%s)." % (host,)
print
print os.environ
elif url.startswith("http://") or url.startswith("https://"):
if method == "POST":
length = int(os.environ["CONTENT_LENGTH"])
headers = {"Content-Type": os.environ["CONTENT_TYPE"]}
body = sys.stdin.read(length)
r = urllib2.Request(url, body, headers)
y = urllib2.urlopen(r)
else:
y = urllib2.urlopen(url)
# print content type header
if i.has_key("Content-Type"):
print "Content-Type: %s" % (i["Content-Type"])
else:
print "Content-Type: text/plain"
print
print y.read()
y.close()
else:
print "Content-Type: text/plain"
print
print "Illegal request."
except Exception, E:
print "Status: 500 Unexpected Error"
print "Content-Type: text/plain"
print
print "Some unexpected error occurred. Error text was:", E
---------------------------------------------------------------------------------