#!/usr/bin/python

# ERPNext - web based ERP (http://erpnext.com)
# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
# 
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

import cgi, cgitb, os, sys
cgitb.enable()

# import libs
sys.path.append('lib/py')

import webnotes
import webnotes.auth

if __name__=='__main__':
	webnotes.http_request = webnotes.auth.HTTPRequest()
	domain = os.environ.get('HTTP_HOST')
	protocol = os.environ.get('HTTPS') and 'https://' or 'http://'
	from webnotes.cms import sitemap
	print 'Content-Type: text/xml'
	print
	print sitemap.generate(protocol + domain + '/')