<div>Hi, I am a new user of Geonode and I downloaded the .exe version on windows that I installed for 2 days. But impossible to run the application. Thank you kindly give me a push<br><div class="gmail_quote"><div>Le mer. 23 mai 2018 à 17:41, <<a href="mailto:geonode-users-request@lists.osgeo.org">geonode-users-request@lists.osgeo.org</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send geonode-users mailing list submissions to<br>
<a href="mailto:geonode-users@lists.osgeo.org" target="_blank">geonode-users@lists.osgeo.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
<a href="https://lists.osgeo.org/mailman/listinfo/geonode-users" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/geonode-users</a><br>
or, via email, send a message with subject or body 'help' to<br>
<a href="mailto:geonode-users-request@lists.osgeo.org" target="_blank">geonode-users-request@lists.osgeo.org</a><br>
<br>
You can reach the person managing the list at<br>
<a href="mailto:geonode-users-owner@lists.osgeo.org" target="_blank">geonode-users-owner@lists.osgeo.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of geonode-users digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
1. Error on uploading (GeoServer response with 403)<br>
(Watermeyer, Andreas)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Wed, 23 May 2018 16:35:21 +0000<br>
From: "Watermeyer, Andreas" <<a href="mailto:Andreas.Watermeyer@its-digital.de" target="_blank">Andreas.Watermeyer@its-digital.de</a>><br>
To: "<a href="mailto:geonode-users@lists.osgeo.org" target="_blank">geonode-users@lists.osgeo.org</a>" <<a href="mailto:geonode-users@lists.osgeo.org" target="_blank">geonode-users@lists.osgeo.org</a>><br>
Subject: [GeoNode-users] Error on uploading (GeoServer response with<br>
403)<br>
Message-ID: <<a href="mailto:e13ba7dbd16d4420b6bb84ba9752fa58@its-digital.de" target="_blank">e13ba7dbd16d4420b6bb84ba9752fa58@its-digital.de</a>><br>
Content-Type: text/plain; charset="iso-8859-1"<br>
<br>
<br>
Hi all,<br>
<br>
I am new to GeoNode and I have a problem with uploading shapefiles.<br>
<br>
Environment: CentOS 7, GeoNode 2.8, installation according to "GeoNode (v2.8) installation on CentOS 7", with a couple of tweaks to make it work:<br>
<a href="http://docs.geonode.org/en/master/tutorials/install_and_admin/setup_on_centos/index.html" rel="noreferrer" target="_blank">http://docs.geonode.org/en/master/tutorials/install_and_admin/setup_on_centos/index.html</a><br>
<br>
Initially uploads were possible. But maps where broken, because GeoNode is not running on localhost. Then I adjusted the siteurl and the related parameters. Maps are working now, but the uploads are broken. Apparently I am not able to fully revert the changes for testing purposes; the uploads remain broken.<br>
<br>
Problem:<br>
"Unespected error!" when uploading a shapefile using the GeoNode "Upload Layer" wizard.<br>
<br>
Logs files: See below. <br>
<br>
What I found out:<br>
This GeoNode request to GeoServer results in a 403:<br>
10.11.202.130 - - [23/May/2018:18:06:15 +0200] "PUT /geoserver/rest/imports/51/tasks/0/target HTTP/1.1" 403 997 "-" "Python-httplib2/0.10.3 (gzip)"<br>
<br>
According to the GeoNode docs the communication between GeoNode and GeoServer is using Basic Authentication. However this request contains no Basic Auth headers, see attached Apache Forensic Logs.<br>
<br>
GeoNode uses httplib2 to issue the HTTP request and it is configured using the required username and password. But apparently httplib requires an 401 response from the server first, otherwise it will not send the credentials:<br>
<a href="https://github.com/httplib2/httplib2/issues/16" rel="noreferrer" target="_blank">https://github.com/httplib2/httplib2/issues/16</a><br>
<br>
But GeoServer does not send a 401 but 403. If I tweak the GeoNode code and send the Basic Authentication header manually along with the request everything works fine.<br>
<br>
I suppose this is a side effect of a broken configuration but I have no idea where to look. I have double checked many config files in GeoServer and GeoNode and replaced localhost with the real hostname. Also recreated the oauth conf using an adapted version of the Ubuntu updateip-script etc.<br>
<br>
Any hints are much appreciated!<br>
<br>
<br>
Best regards, <br>
Andreas<br>
<br>
----- Apache Log Errror Log -------<br>
[Wed May 23 11:06:15.168589 2018] [:error] [pid 12859] Traceback (most recent call last):<br>
[Wed May 23 11:06:15.168604 2018] [:error] [pid 12859] File "/opt/gdi/geonode/geonode/geonode/upload/views.py", line 643, in view<br>
[Wed May 23 11:06:15.168608 2018] [:error] [pid 12859] resp = _steps[step](req, upload_session)<br>
[Wed May 23 11:06:15.168611 2018] [:error] [pid 12859] File "/opt/gdi/geonode/geonode/geonode/upload/views.py", line 417, in check_step_view<br>
[Wed May 23 11:06:15.168614 2018] [:error] [pid 12859] return next_step_response(request, upload_session)<br>
[Wed May 23 11:06:15.168616 2018] [:error] [pid 12859] File "/opt/gdi/geonode/geonode/geonode/upload/utils.py", line 377, in next_step_response<br>
[Wed May 23 11:06:15.168619 2018] [:error] [pid 12859] return run_response(req, upload_session)<br>
[Wed May 23 11:06:15.168622 2018] [:error] [pid 12859] File "/opt/gdi/geonode/geonode/geonode/upload/utils.py", line 618, in run_response<br>
[Wed May 23 11:06:15.168624 2018] [:error] [pid 12859] run_import(upload_session)<br>
[Wed May 23 11:06:15.168627 2018] [:error] [pid 12859] File "/opt/gdi/geonode/geonode/geonode/upload/utils.py", line 590, in run_import<br>
[Wed May 23 11:06:15.168629 2018] [:error] [pid 12859] task.set_target(<a href="http://target.name" rel="noreferrer" target="_blank">target.name</a>, <a href="http://target.workspace.name" rel="noreferrer" target="_blank">target.workspace.name</a>)<br>
[Wed May 23 11:06:15.168632 2018] [:error] [pid 12859] File "/opt/gdi/geonode/geonode-virtualenv/lib/python2.7/site-packages/gsimporter/api.py", line 285, in set_target<br>
[Wed May 23 11:06:15.168642 2018] [:error] [pid 12859] self.target.change_datastore(store_name, workspace)<br>
[Wed May 23 11:06:15.168645 2018] [:error] [pid 12859] File "/opt/gdi/geonode/geonode-virtualenv/lib/python2.7/site-packages/gsimporter/api.py", line 211, in change_datastore<br>
[Wed May 23 11:06:15.168649 2018] [:error] [pid 12859] self._client().put_json(self.href,json.dumps(target_rep))<br>
[Wed May 23 11:06:15.168651 2018] [:error] [pid 12859] File "/opt/gdi/geonode/geonode-virtualenv/lib/python2.7/site-packages/gsimporter/client.py", line 149, in put_json<br>
[Wed May 23 11:06:15.168654 2018] [:error] [pid 12859] "Content-type" : "application/json",<br>
[Wed May 23 11:06:15.168657 2018] [:error] [pid 12859] File "/opt/gdi/geonode/geonode-virtualenv/lib/python2.7/site-packages/gsimporter/client.py", line 176, in _request<br>
[Wed May 23 11:06:15.168660 2018] [:error] [pid 12859] raise RequestFailed(resp.status,content)<br>
[Wed May 23 11:06:15.168664 2018] [:error] [pid 12859] RequestFailed: (403, '<html><head><title>Apache Tomcat/7.0.76 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 403 - Zugriff verweigert</h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>Zugriff verweigert</u></p><p><b>description</b> <u>Access to the specified resource has been forbidden.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/7.0.76</h3></body></html>')<br>
<br>
------------ Apache Access Log ----------<br>
<br>
10.11.202.130 - - [23/May/2018:18:06:13 +0200] "GET /geoserver/rest/imports/50/tasks/0/progress HTTP/1.1" 200 43 "-" "Python-httplib2/0.10.3 (gzip)"<br>
10.11.100.215 - - [23/May/2018:18:06:13 +0200] "GET /upload/progress?id=50 HTTP/1.1" 200 18 "<a href="http://myhost.local/layers/upload" rel="noreferrer" target="_blank">http://myhost.local/layers/upload</a>" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"<br>
10.11.202.130 - - [23/May/2018:18:06:13 +0200] "GET /api/users/admin HTTP/1.1" 200 68 "-" "Apache-HttpClient/4.5.1 (Java/1.8.0_171)"<br>
10.11.202.130 - - [23/May/2018:18:06:13 +0200] "GET /api/roles HTTP/1.1" 200 34 "-" "Apache-HttpClient/4.5.1 (Java/1.8.0_171)"<br>
10.11.202.130 - - [23/May/2018:18:06:13 +0200] "GET /api/roles HTTP/1.1" 200 34 "-" "Apache-HttpClient/4.5.1 (Java/1.8.0_171)"<br>
10.11.202.130 - - [23/May/2018:18:06:13 +0200] "GET /api/roles HTTP/1.1" 200 34 "-" "Apache-HttpClient/4.5.1 (Java/1.8.0_171)"<br>
10.11.100.215 - - [23/May/2018:18:06:13 +0200] "POST /upload/ HTTP/1.1" 200 112 "<a href="http://myhost.local/layers/upload" rel="noreferrer" target="_blank">http://myhost.local/layers/upload</a>" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"<br>
10.11.100.215 - - [23/May/2018:18:06:14 +0200] "GET /upload/srs?id=51&force_ajax=true HTTP/1.1" 200 114 "<a href="http://myhost.local/layers/upload" rel="noreferrer" target="_blank">http://myhost.local/layers/upload</a>" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"<br>
10.11.202.130 - - [23/May/2018:18:06:15 +0200] "PUT /geoserver/rest/imports/51/tasks/0/target HTTP/1.1" 403 997 "-" "Python-httplib2/0.10.3 (gzip)"<br>
<br>
------ geoserver Logs -----------<br>
2018-05-23 16:06:15,132 DEBUG [security.IncludeQueryStringAntPathRequestMatcher] - Checking match of request : 'Path: /rest/imports/51/tasks/0/target, QueryString: null'; against '/j_spring_oauth2_geonode_login'<br>
2018-05-23 16:06:15,132 DEBUG [security.IncludeQueryStringAntPathRequestMatcher] - Checking match of request : 'Path: /rest/imports/51/tasks/0/target, QueryString: null'; against '/j_spring_oauth2_geonode_login/'<br>
2018-05-23 16:06:15,132 DEBUG [security.IncludeQueryStringAntPathRequestMatcher] - Checking match of request : 'Path: /rest/imports/51/tasks/0/target, QueryString: null'; against '/j_spring_security_logout'<br>
2018-05-23 16:06:15,132 DEBUG [security.IncludeQueryStringAntPathRequestMatcher] - Checking match of request : 'Path: /rest/imports/51/tasks/0/target, QueryString: null'; against '/j_spring_security_logout/'<br>
2018-05-23 16:06:15,132 DEBUG [security.IncludeQueryStringAntPathRequestMatcher] - Checking match of request : 'Path: /rest/imports/51/tasks/0/target, QueryString: null'; against '/j_spring_oauth2_geonode_logout'<br>
2018-05-23 16:06:15,132 DEBUG [security.IncludeQueryStringAntPathRequestMatcher] - Checking match of request : 'Path: /rest/imports/51/tasks/0/target, QueryString: null'; against '/j_spring_oauth2_geonode_logout/'<br>
2018-05-23 16:06:15,132 DEBUG [security.IncludeQueryStringAntPathRequestMatcher] - Checking match of request : 'Path: /rest/imports/51/tasks/0/target, QueryString: null'; against '/rest/**'<br>
2018-05-23 16:06:15,132 DEBUG [security.IncludeQueryStringAntPathRequestMatcher] - Matched Path: /rest/imports/51/tasks/0/target, QueryString: null with /rest/**<br>
2018-05-23 16:06:15,158 DEBUG [geoserver.security] - Inspecting the http request looking for the GeoNode Session ID.<br>
2018-05-23 16:06:15,158 DEBUG [geoserver.security] - Found no cookies!<br>
2018-05-23 16:06:15,158 DEBUG [geoserver.security] - preAuthenticatedPrincipal = null, trying to authenticate<br>
2018-05-23 16:06:15,159 DEBUG [security.RESTfulPathBasedFilterInvocationDefinitionMap] - Converted URL to lowercase, from: '/rest/imports/51/tasks/0/target'; to: '/rest/imports/51/tasks/0/target' and httpMethod= PUT<br>
2018-05-23 16:06:15,159 DEBUG [security.RESTfulPathBasedFilterInvocationDefinitionMap] - ~~~~~~~~~~ antPath= /rest/process/batchdownload/download/* methodList= [GET]<br>
2018-05-23 16:06:15,159 DEBUG [security.RESTfulPathBasedFilterInvocationDefinitionMap] - Candidate is: '/rest/imports/51/tasks/0/target'; antPath is /rest/process/batchdownload/download/*; matchedPath=false; matchedMethods=false<br>
2018-05-23 16:06:15,159 DEBUG [security.RESTfulPathBasedFilterInvocationDefinitionMap] - ~~~~~~~~~~ antPath= /rest/printing/* methodList= [GET, POST]<br>
2018-05-23 16:06:15,159 DEBUG [security.RESTfulPathBasedFilterInvocationDefinitionMap] - Candidate is: '/rest/imports/51/tasks/0/target'; antPath is /rest/printing/*; matchedPath=false; matchedMethods=false<br>
2018-05-23 16:06:15,159 DEBUG [security.RESTfulPathBasedFilterInvocationDefinitionMap] - ~~~~~~~~~~ antPath= /** methodList= [GET]<br>
2018-05-23 16:06:15,159 DEBUG [security.RESTfulPathBasedFilterInvocationDefinitionMap] - Candidate is: '/rest/imports/51/tasks/0/target'; antPath is /**; matchedPath=true; matchedMethods=false<br>
2018-05-23 16:06:15,159 DEBUG [security.RESTfulPathBasedFilterInvocationDefinitionMap] - ~~~~~~~~~~ antPath= /** methodList= [POST, DELETE, PUT]<br>
2018-05-23 16:06:15,159 DEBUG [security.RESTfulPathBasedFilterInvocationDefinitionMap] - Candidate is: '/rest/imports/51/tasks/0/target'; antPath is /**; matchedPath=true; matchedMethods=true<br>
2018-05-23 16:06:15,159 DEBUG [security.RESTfulPathBasedFilterInvocationDefinitionMap] - returning ROLE_ADMINISTRATOR<br>
2018-05-23 16:06:15,159 DEBUG [filter.GeoServerSecurityContextPersistenceFilter$1] - SecurityContextHolder now cleared, as request processing completed<br>
2018-05-23 16:06:37,890 DEBUG [geoserver.security] - AuthenticationCache Eviction task running<br>
2018-05-23 16:06:37,891 DEBUG [geoserver.security] - Cache entries #: 1<br>
2018-05-23 16:06:37,891 DEBUG [geoserver.security] - AuthenticationCache Eviction task completed<br>
2018-05-23 16:06:37,891 DEBUG [geoserver.security] - Cache entries #: 1<br>
2018-05-23 16:06:46,790 DEBUG [geoserver.wps] - Removing statuses matching [[[ NOT [ completionTime IS NULL ] ] AND org.geotools.filter.temporal.BeforeImpl@3fe5cc15] AND [[ NOT [ lastUpdated IS NULL ] ] AND org.geotools.filter.temporal.BeforeImpl@3ae17701]]<br>
2018-05-23 16:07:46,791 DEBUG [geoserver.wps] - Removing statuses matching [[[ NOT [ completionTime IS NULL ] ] AND org.geotools.filter.temporal.BeforeImpl@440106f5] AND [[ NOT [ lastUpdated IS NULL ] ] AND org.geotools.filter.temporal.BeforeImpl@3efcb1e1]]<br>
<br>
------ Apache Forensic Logs -------------<br>
+WwWRdb9KGjJnr-C8P4dlvQAAAAc|GET /api/users/admin HTTP/1.1|Host:myhost.local|Connection:Keep-Alive|User-Agent:Apache-HttpClient/4.5.1 (Java/1.8.0_171)|Accept-Encoding:gzip,deflate<br>
-WwWRdcvNymUGf1Y2uJyl3gAAAAQ<br>
-WwWRdTtXhtCEmXsif6wu9QAAAAA<br>
-WwWRdb9KGjJnr-C8P4dlvQAAAAc<br>
+WwWRdb9KGjJnr-C8P4dlvgAAAAc|GET /api/roles HTTP/1.1|Host:myhost.local|Connection:Keep-Alive|User-Agent:Apache-HttpClient/4.5.1 (Java/1.8.0_171)|Accept-Encoding:gzip,deflate<br>
-WwWRdb9KGjJnr-C8P4dlvgAAAAc<br>
+WwWRdb9KGjJnr-C8P4dlvwAAAAc|GET /api/roles HTTP/1.1|Host:myhost.local|Connection:Keep-Alive|User-Agent:Apache-HttpClient/4.5.1 (Java/1.8.0_171)|Accept-Encoding:gzip,deflate<br>
-WwWRdb9KGjJnr-C8P4dlvwAAAAc<br>
+WwWRdb9KGjJnr-C8P4dlwAAAAAc|GET /api/roles HTTP/1.1|Host:myhost.local|Connection:Keep-Alive|User-Agent:Apache-HttpClient/4.5.1 (Java/1.8.0_171)|Accept-Encoding:gzip,deflate<br>
-WwWRdb9KGjJnr-C8P4dlwAAAAAc<br>
-WwWRdeA-J21YttgLDfeNPAAAAAI<br>
+WwWRduA-J21YttgLDfeNPQAAAAI|GET /upload/srs?id=51&force_ajax=true HTTP/1.1|Host:myhost.local|Accept:*/*|X-Requested-With:XMLHttpRequest|User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHT<br>
ML, like Gecko) Chrome/66.0.3359.181 Safari/537.36|Referer:http%3a//myhost.local/layers/upload|Accept-Encoding:gzip, deflate|Accept-Language:de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7|Cookie:csrftoken=gTCyxBP1jPafdvuoD4y<br>
b7iIixtXdmHNi; sessionid=xqm2ssjmclf7sk8r0la1gi31gps850d6|Connection:keep-alive<br>
-WwWRduA-J21YttgLDfeNPQAAAAI<br>
+WwWRduA-J21YttgLDfeNPgAAAAI|GET /upload/check?id=51&force_ajax=true HTTP/1.1|Host:myhost.local|Accept:*/*|X-Requested-With:XMLHttpRequest|User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (K<br>
HTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36|Referer:http%3a//myhost.local/layers/upload|Accept-Encoding:gzip, deflate|Accept-Language:de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7|Cookie:csrftoken=gTCyxBP1jPafdvuoD<br>
4yb7iIixtXdmHNi; sessionid=xqm2ssjmclf7sk8r0la1gi31gps850d6|Connection:keep-alive<br>
+WwWRd4Jc7dBshm8NrAoivwAAAAE|PUT /geoserver/rest/imports/51/tasks/0/target HTTP/1.1|Host:myhost.local|Content-Length:87|content-type:application/json|accept-encoding:gzip, deflate|user-agent:Python-httplib2/0.10.3 (gzip)<br>
-WwWRd4Jc7dBshm8NrAoivwAAAAE<br>
-WwWRduA-J21YttgLDfeNPgAAAAI<br>
<br>
---------- local_settings.py ----------<br>
<br>
# -*- coding: utf-8 -*-<br>
#########################################################################<br>
#<br>
# Copyright (C) 2018 OSGeo<br>
#<br>
# This program is free software: you can redistribute it and/or modify<br>
# it under the terms of the GNU General Public License as published by<br>
# the Free Software Foundation, either version 3 of the License, or<br>
# (at your option) any later version.<br>
#<br>
# This program is distributed in the hope that it will be useful,<br>
# but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br>
# GNU General Public License for more details.<br>
#<br>
# You should have received a copy of the GNU General Public License<br>
# along with this program. If not, see <<a href="http://www.gnu.org/licenses/" rel="noreferrer" target="_blank">http://www.gnu.org/licenses/</a>>.<br>
#<br>
#########################################################################<br>
<br>
import os<br>
from geonode.settings import *<br>
<br>
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))<br>
<br>
MEDIA_ROOT = os.getenv('MEDIA_ROOT', os.path.join(PROJECT_ROOT, "uploaded"))<br>
<br>
STATIC_ROOT = os.getenv('STATIC_ROOT',<br>
os.path.join(PROJECT_ROOT, "static_root")<br>
)<br>
<br>
# SECRET_KEY = '************************'<br>
<br>
SITEURL = "<a href="http://myhost.local/" rel="noreferrer" target="_blank">http://myhost.local/</a>"<br>
#SITEURL = "<a href="http://localhost/" rel="noreferrer" target="_blank">http://localhost/</a>"<br>
<br>
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', '::1', 'myhost.local']<br>
PROXY_ALLOWED_HOSTS = ("127.0.0.1", 'localhost', '::1', 'myhost.local' )<br>
POSTGIS_VERSION = (2, 4, 0)<br>
<br>
# TIME_ZONE = 'Europe/Paris'<br>
<br>
DATABASES = {<br>
'default': {<br>
'ENGINE': 'django.db.backends.postgresql_psycopg2',<br>
# "default" and "data" use the same DB but different schemas.<br>
# each user "gdi" and "geonode" has a corresponding DB "search_path".<br>
#'OPTIONS': {<br>
# 'options': '-c search_path=geonode,public'<br>
# },<br>
'NAME': 'gdi',<br>
'USER': 'geonode',<br>
'PASSWORD': 'geonode',<br>
'HOST': 'localhost',<br>
'PORT': '5432',<br>
'CONN_TOUT': 900,<br>
},<br>
# vector datastore for uploads<br>
'datastore': {<br>
'ENGINE': 'django.contrib.gis.db.backends.postgis',<br>
#'OPTIONS': {<br>
# 'options': '-c search_path=gdi,public'<br>
#},<br>
'NAME': 'gdi',<br>
'USER': 'gdi',<br>
'PASSWORD': 'gdi',<br>
'HOST': 'localhost',<br>
'PORT': '5432',<br>
'CONN_TOUT': 900,<br>
}<br>
}<br>
<br>
GEOSERVER_LOCATION = os.getenv(<br>
'GEOSERVER_LOCATION', '<a href="http://localhost:8080/geoserver/" rel="noreferrer" target="_blank">http://localhost:8080/geoserver/</a>'<br>
)<br>
<br>
GEOSERVER_PUBLIC_LOCATION = os.getenv(<br>
# 'GEOSERVER_PUBLIC_LOCATION', '{}/geoserver/'.format(SITEURL)<br>
'GEOSERVER_PUBLIC_LOCATION', '<a href="http://myhost.local/geoserver/" rel="noreferrer" target="_blank">http://myhost.local/geoserver/</a>'<br>
)<br>
<br>
OGC_SERVER_DEFAULT_USER = os.getenv(<br>
'GEOSERVER_ADMIN_USER', 'admin'<br>
)<br>
<br>
OGC_SERVER_DEFAULT_PASSWORD = os.getenv(<br>
'GEOSERVER_ADMIN_PASSWORD', 'geoserver'<br>
)<br>
<br>
# OGC (WMS/WFS/WCS) Server Settings<br>
OGC_SERVER = {<br>
'default': {<br>
'BACKEND': 'geonode.geoserver',<br>
'LOCATION': GEOSERVER_LOCATION,<br>
'LOGIN_ENDPOINT': 'j_spring_oauth2_geonode_login',<br>
'LOGOUT_ENDPOINT': 'j_spring_oauth2_geonode_logout',<br>
# PUBLIC_LOCATION needs to be kept like this because in dev mode<br>
# the proxy won't work and the integration tests will fail<br>
# the entire block has to be overridden in the local_settings<br>
'PUBLIC_LOCATION': GEOSERVER_PUBLIC_LOCATION,<br>
'USER': OGC_SERVER_DEFAULT_USER,<br>
'PASSWORD': OGC_SERVER_DEFAULT_PASSWORD,<br>
'MAPFISH_PRINT_ENABLED': True,<br>
'PRINT_NG_ENABLED': True,<br>
'GEONODE_SECURITY_ENABLED': True,<br>
'GEOFENCE_SECURITY_ENABLED': True,<br>
'GEOGIG_ENABLED': False,<br>
'WMST_ENABLED': False,<br>
'BACKEND_WRITE_ENABLED': True,<br>
'WPS_ENABLED': False,<br>
'LOG_FILE': '%s/geoserver/data/logs/geoserver.log' % os.path.abspath(os.path.join(PROJECT_ROOT, os.pardir)),<br>
# Set to dictionary identifier of database containing spatial data in DATABASES dictionary to enable<br>
'DATASTORE': 'datastore',<br>
'PG_GEOGIG': False,<br>
'TIMEOUT': 10 # number of seconds to allow for HTTP requests<br>
}<br>
}<br>
<br>
# WARNING: Map Editing is affected by this. GeoExt Configuration is cached for 5 minutes<br>
# CACHES = {<br>
# 'default': {<br>
# 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',<br>
# 'LOCATION': '/var/tmp/django_cache',<br>
# }<br>
# }<br>
<br>
# If you want to enable Mosaics use the following configuration<br>
UPLOADER = {<br>
# 'BACKEND': 'geonode.rest',<br>
'BACKEND': 'geonode.importer',<br>
'OPTIONS': {<br>
'TIME_ENABLED': True,<br>
'MOSAIC_ENABLED': False,<br>
'GEOGIG_ENABLED': False,<br>
},<br>
'SUPPORTED_CRS': [<br>
'EPSG:4326',<br>
'EPSG:3785',<br>
'EPSG:3857',<br>
'EPSG:900913',<br>
'EPSG:32647',<br>
'EPSG:32736'<br>
],<br>
'SUPPORTED_EXT': [<br>
'.shp',<br>
'.csv',<br>
'.kml',<br>
'.kmz',<br>
'.json',<br>
'.geojson',<br>
'.tif',<br>
'.tiff',<br>
'.geotiff',<br>
'.gml',<br>
'.xml'<br>
]<br>
}<br>
<br>
CATALOGUE = {<br>
'default': {<br>
# The underlying CSW implementation<br>
# default is pycsw in local mode (tied directly to GeoNode Django DB)<br>
'ENGINE': 'geonode.catalogue.backends.pycsw_local',<br>
# pycsw in non-local mode<br>
# 'ENGINE': 'geonode.catalogue.backends.pycsw_http',<br>
# GeoNetwork opensource<br>
# 'ENGINE': 'geonode.catalogue.backends.geonetwork',<br>
# deegree and others<br>
# 'ENGINE': 'geonode.catalogue.backends.generic',<br>
<br>
# The FULLY QUALIFIED base url to the CSW instance for this GeoNode<br>
'URL': '%s/catalogue/csw' % SITEURL,<br>
# 'URL': '<a href="http://localhost:8080/geonetwork/srv/en/csw" rel="noreferrer" target="_blank">http://localhost:8080/geonetwork/srv/en/csw</a>',<br>
# 'URL': '<a href="http://localhost:8080/deegree-csw-demo-3.0.4/services" rel="noreferrer" target="_blank">http://localhost:8080/deegree-csw-demo-3.0.4/services</a>',<br>
<br>
# login credentials (for GeoNetwork)<br>
'USER': 'admin',<br>
'PASSWORD': 'admin',<br>
'ALTERNATES_ONLY': True,<br>
}<br>
}<br>
<br>
# pycsw settings<br>
PYCSW = {<br>
# pycsw configuration<br>
'CONFIGURATION': {<br>
# uncomment / adjust to override server config system defaults<br>
# 'server': {<br>
# 'maxrecords': '10',<br>
# 'pretty_print': 'true',<br>
# 'federatedcatalogues': '<a href="http://catalog.data.gov/csw" rel="noreferrer" target="_blank">http://catalog.data.gov/csw</a>'<br>
# },<br>
'metadata:main': {<br>
'identification_title': 'GeoNode Catalogue',<br>
'identification_abstract': 'GeoNode is an open source platform' \<br>
' that facilitates the creation, sharing, and collaborative use' \<br>
' of geospatial data',<br>
'identification_keywords': 'sdi, catalogue, discovery, metadata,' \<br>
' GeoNode',<br>
'identification_keywords_type': 'theme',<br>
'identification_fees': 'None',<br>
'identification_accessconstraints': 'None',<br>
'provider_name': 'Organization Name',<br>
'provider_url': SITEURL,<br>
'contact_name': 'Lastname, Firstname',<br>
'contact_position': 'Position Title',<br>
'contact_address': 'Mailing Address',<br>
'contact_city': 'City',<br>
'contact_stateorprovince': 'Administrative Area',<br>
'contact_postalcode': 'Zip or Postal Code',<br>
'contact_country': 'Country',<br>
'contact_phone': '+xx-xxx-xxx-xxxx',<br>
'contact_fax': '+xx-xxx-xxx-xxxx',<br>
'contact_email': 'Email Address',<br>
'contact_url': 'Contact URL',<br>
'contact_hours': 'Hours of Service',<br>
'contact_instructions': 'During hours of service. Off on ' \<br>
'weekends.',<br>
'contact_role': 'pointOfContact',<br>
},<br>
'metadata:inspire': {<br>
'enabled': 'true',<br>
'languages_supported': 'eng,gre',<br>
'default_language': 'eng',<br>
'date': 'YYYY-MM-DD',<br>
'gemet_keywords': 'Utility and governmental services',<br>
'conformity_service': 'notEvaluated',<br>
'contact_name': 'Organization Name',<br>
'contact_email': 'Email Address',<br>
'temp_extent': 'YYYY-MM-DD/YYYY-MM-DD',<br>
}<br>
}<br>
}<br>
<br>
# GeoNode javascript client configuration<br>
<br>
# default map projection<br>
# Note: If set to EPSG:4326, then only EPSG:4326 basemaps will work.<br>
DEFAULT_MAP_CRS = "EPSG:3857"<br>
<br>
# Where should newly created maps be focused?<br>
DEFAULT_MAP_CENTER = (0, 0)<br>
<br>
# How tightly zoomed should newly created maps be?<br>
# 0 = entire world;<br>
# maximum zoom is between 12 and 15 (for Google Maps, coverage varies by area)<br>
DEFAULT_MAP_ZOOM = 0<br>
<br>
# Default preview library<br>
# GEONODE_CLIENT_LAYER_PREVIEW_LIBRARY = 'geoext' # DEPRECATED use HOOKSET instead<br>
GEONODE_CLIENT_HOOKSET = "geonode.client.hooksets.GeoExtHookSet"<br>
<br>
# To enable the REACT based Client enable those<br>
# INSTALLED_APPS += ('geonode-client', )<br>
# GEONODE_CLIENT_LAYER_PREVIEW_LIBRARY = 'react' # DEPRECATED use HOOKSET instead<br>
# GEONODE_CLIENT_HOOKSET = "geonode.client.hooksets.ReactHookSet"<br>
<br>
# To enable the Leaflet based Client enable those<br>
# GEONODE_CLIENT_LAYER_PREVIEW_LIBRARY = 'leaflet' # DEPRECATED use HOOKSET instead<br>
# GEONODE_CLIENT_HOOKSET = "geonode.client.hooksets.LeafletHookSet"<br>
<br>
# To enable the MapStore2 based Client enable those<br>
# INSTALLED_APPS += ('geonode_mapstore_client', )<br>
# GEONODE_CLIENT_LAYER_PREVIEW_LIBRARY = 'mapstore' # DEPRECATED use HOOKSET instead<br>
# GEONODE_CLIENT_HOOKSET = "geonode_mapstore_client.hooksets.MapStoreHookSet"<br>
<br>
# LEAFLET_CONFIG = {<br>
# 'TILES': [<br>
# # Find tiles at:<br>
# # <a href="http://leaflet-extras.github.io/leaflet-providers/preview/" rel="noreferrer" target="_blank">http://leaflet-extras.github.io/leaflet-providers/preview/</a><br>
#<br>
# # Map Quest<br>
# ('Map Quest',<br>
# '<a href="http://otile4.mqcdn.com/tiles/1.0.0/osm/%7Bz%7D/%7Bx%7D/%7By%7D.png" rel="noreferrer" target="_blank">http://otile4.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.png</a>',<br>
# 'Tiles Courtesy of <a href="<a href="http://www.mapquest.com/" rel="noreferrer" target="_blank">http://www.mapquest.com/</a>">MapQuest</a> '<br>
# '— Map data © '<br>
# '<a href="<a href="http://www.openstreetmap.org/copyright" rel="noreferrer" target="_blank">http://www.openstreetmap.org/copyright</a>">OpenStreetMap</a>'),<br>
# # Stamen toner lite.<br>
# # ('Watercolor',<br>
# # 'http://{s}.<a href="http://tile.stamen.com/watercolor/%7Bz%7D/%7Bx%7D/%7By%7D.png" rel="noreferrer" target="_blank">tile.stamen.com/watercolor/{z}/{x}/{y}.png</a>',<br>
# # 'Map tiles by <a href="<a href="http://stamen.com" rel="noreferrer" target="_blank">http://stamen.com</a>">Stamen Design</a>, \<br>
# # <a href="<a href="http://creativecommons.org/licenses/by/3.0" rel="noreferrer" target="_blank">http://creativecommons.org/licenses/by/3.0</a>">CC BY 3.0</a> — Map data © \<br>
# # <a href="<a href="http://openstreetmap.org" rel="noreferrer" target="_blank">http://openstreetmap.org</a>">OpenStreetMap</a> contributors, \<br>
# # <a href="<a href="http://creativecommons.org/licenses/by-sa/2.0/" rel="noreferrer" target="_blank">http://creativecommons.org/licenses/by-sa/2.0/</a>">CC-BY-SA</a>'),<br>
# # ('Toner Lite',<br>
# # 'http://{s}.<a href="http://tile.stamen.com/toner-lite/%7Bz%7D/%7Bx%7D/%7By%7D.png" rel="noreferrer" target="_blank">tile.stamen.com/toner-lite/{z}/{x}/{y}.png</a>',<br>
# # 'Map tiles by <a href="<a href="http://stamen.com" rel="noreferrer" target="_blank">http://stamen.com</a>">Stamen Design</a>, \<br>
# # <a href="<a href="http://creativecommons.org/licenses/by/3.0" rel="noreferrer" target="_blank">http://creativecommons.org/licenses/by/3.0</a>">CC BY 3.0</a> — Map data © \<br>
# # <a href="<a href="http://openstreetmap.org" rel="noreferrer" target="_blank">http://openstreetmap.org</a>">OpenStreetMap</a> contributors, \<br>
# # <a href="<a href="http://creativecommons.org/licenses/by-sa/2.0/" rel="noreferrer" target="_blank">http://creativecommons.org/licenses/by-sa/2.0/</a>">CC-BY-SA</a>'),<br>
# ],<br>
# 'PLUGINS': {<br>
# 'esri-leaflet': {<br>
# 'js': 'lib/js/esri-leaflet.js',<br>
# 'auto-include': True,<br>
# },<br>
# 'leaflet-fullscreen': {<br>
# 'css': 'lib/css/leaflet.fullscreen.css',<br>
# 'js': 'lib/js/Leaflet.fullscreen.min.js',<br>
# 'auto-include': True,<br>
# },<br>
# },<br>
# 'SRID': 3857,<br>
# 'RESET_VIEW': False<br>
#}<br>
<br>
ALT_OSM_BASEMAPS = os.environ.get('ALT_OSM_BASEMAPS', False)<br>
CARTODB_BASEMAPS = os.environ.get('CARTODB_BASEMAPS', False)<br>
STAMEN_BASEMAPS = os.environ.get('STAMEN_BASEMAPS', False)<br>
THUNDERFOREST_BASEMAPS = os.environ.get('THUNDERFOREST_BASEMAPS', False)<br>
MAPBOX_ACCESS_TOKEN = os.environ.get('MAPBOX_ACCESS_TOKEN', None)<br>
BING_API_KEY = os.environ.get('BING_API_KEY', None)<br>
GOOGLE_API_KEY = os.environ.get('GOOGLE_API_KEY', None)<br>
<br>
MAP_BASELAYERS = [{<br>
"source": {"ptype": "gxp_olsource"},<br>
"type": "OpenLayers.Layer",<br>
"args": ["No background"],<br>
"name": "background",<br>
"visibility": False,<br>
"fixed": True,<br>
"group":"background"<br>
},<br>
# {<br>
# "source": {"ptype": "gxp_olsource"},<br>
# "type": "<a href="http://OpenLayers.Layer.XYZ" rel="noreferrer" target="_blank">OpenLayers.Layer.XYZ</a>",<br>
# "title": "TEST TILE",<br>
# "args": ["TEST_TILE", "<a href="http://test_tiles/tiles/$%7Bz%7D/$%7Bx%7D/$%7By%7D.png" rel="noreferrer" target="_blank">http://test_tiles/tiles/${z}/${x}/${y}.png</a>"],<br>
# "name": "background",<br>
# "attribution": "© TEST TILE",<br>
# "visibility": False,<br>
# "fixed": True,<br>
# "group":"background"<br>
# },<br>
{<br>
"source": {"ptype": "gxp_osmsource"},<br>
"type": "OpenLayers.Layer.OSM",<br>
"name": "mapnik",<br>
"visibility": True,<br>
"fixed": True,<br>
"group": "background"<br>
}]<br>
<br>
if 'geonode.geoserver' in INSTALLED_APPS:<br>
LOCAL_GEOSERVER = {<br>
"source": {<br>
"ptype": "gxp_wmscsource",<br>
"url": OGC_SERVER['default']['PUBLIC_LOCATION'] + "wms",<br>
"restUrl": "/gs/rest"<br>
}<br>
}<br>
baselayers = MAP_BASELAYERS<br>
MAP_BASELAYERS = [LOCAL_GEOSERVER]<br>
MAP_BASELAYERS.extend(baselayers)<br>
<br>
# Use kombu broker by default<br>
# REDIS_URL = 'redis://localhost:6379/1'<br>
# BROKER_URL = REDIS_URL<br>
# CELERY_RESULT_BACKEND = REDIS_URL<br>
CELERYD_HIJACK_ROOT_LOGGER = True<br>
CELERYD_CONCURENCY = 1<br>
# Set this to False to run real async tasks<br>
CELERY_ALWAYS_EAGER = True<br>
CELERYD_LOG_FILE = None<br>
CELERY_REDIRECT_STDOUTS = True<br>
CELERYD_LOG_LEVEL = 1<br>
<br>
# Haystack Search Backend Configuration. To enable,<br>
# first install the following:<br>
# - pip install django-haystack<br>
# - pip install elasticsearch==2.4.0<br>
# - pip install woosh<br>
# - pip install pyelasticsearch<br>
# Set HAYSTACK_SEARCH to True<br>
# Run "python manage.py rebuild_index"<br>
# HAYSTACK_SEARCH = False<br>
# Avoid permissions prefiltering<br>
SKIP_PERMS_FILTER = False<br>
# Update facet counts from Haystack<br>
HAYSTACK_FACET_COUNTS = True<br>
HAYSTACK_CONNECTIONS = {<br>
'default': {<br>
'ENGINE': 'haystack.backends.elasticsearch2_backend.Elasticsearch2SearchEngine',<br>
'URL': '<a href="http://127.0.0.1:9200/" rel="noreferrer" target="_blank">http://127.0.0.1:9200/</a>',<br>
'INDEX_NAME': 'haystack',<br>
},<br>
# 'db': {<br>
# 'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',<br>
# 'EXCLUDED_INDEXES': ['thirdpartyapp.search_indexes.BarIndex'],<br>
# }<br>
}<br>
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'<br>
# HAYSTACK_SEARCH_RESULTS_PER_PAGE = 20<br>
<br>
LOGGING = {<br>
'version': 1,<br>
'disable_existing_loggers': True,<br>
'formatters': {<br>
'verbose': {<br>
'format': '%(levelname)s %(asctime)s %(module)s %(process)d '<br>
'%(thread)d %(message)s'<br>
},<br>
'simple': {<br>
'format': '%(message)s',<br>
},<br>
},<br>
'filters': {<br>
'require_debug_false': {<br>
'()': 'django.utils.log.RequireDebugFalse'<br>
}<br>
},<br>
'handlers': {<br>
'console': {<br>
'level': 'DEBUG',<br>
'class': 'logging.StreamHandler',<br>
'formatter': 'simple'<br>
},<br>
'mail_admins': {<br>
'level': 'ERROR', 'filters': ['require_debug_false'],<br>
'class': 'django.utils.log.AdminEmailHandler',<br>
}<br>
},<br>
"loggers": {<br>
"django": {<br>
"handlers": ["console"], "level": "ERROR", },<br>
"geonode": {<br>
"handlers": ["console"], "level": "DEBUG", },<br>
"gsconfig.catalog": {<br>
"handlers": ["console"], "level": "DEBUG", },<br>
"owslib": {<br>
"handlers": ["console"], "level": "DEBUG", },<br>
"pycsw": {<br>
"handlers": ["console"], "level": "ERROR", },<br>
"Client": {<br>
"handlers": ["console"], "level": "DEBUG", },<br>
},<br>
}<br>
<br>
# Additional settings<br>
CORS_ORIGIN_ALLOW_ALL = True<br>
<br>
GEOIP_PATH = "/usr/local/share/GeoIP"<br>
<br>
# add following lines to your local settings to enable monitoring<br>
MONITORING_ENABLED = True<br>
<br>
if MONITORING_ENABLED:<br>
if 'geonode.contrib.monitoring' not in INSTALLED_APPS:<br>
INSTALLED_APPS += ('geonode.contrib.monitoring',)<br>
if 'geonode.contrib.monitoring.middleware.MonitoringMiddleware' not in MIDDLEWARE_CLASSES:<br>
MIDDLEWARE_CLASSES += \<br>
('geonode.contrib.monitoring.middleware.MonitoringMiddleware',)<br>
MONITORING_CONFIG = None<br>
MONITORING_SERVICE_NAME = 'local-geonode'<br>
<br>
#Define email service on GeoNode<br>
EMAIL_ENABLE = True<br>
<br>
if EMAIL_ENABLE:<br>
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'<br>
EMAIL_HOST = 'localhost'<br>
EMAIL_PORT = 25<br>
EMAIL_HOST_USER = ''<br>
EMAIL_HOST_PASSWORD = ''<br>
EMAIL_USE_TLS = False<br>
DEFAULT_FROM_EMAIL = 'Example.com <no-reply@localhost>'<br>
<br>
# Documents Thumbnails<br>
UNOCONV_ENABLE = True<br>
<br>
if UNOCONV_ENABLE:<br>
UNOCONV_EXECUTABLE = os.getenv('UNOCONV_EXECUTABLE', '/usr/bin/unoconv')<br>
UNOCONV_TIMEOUT = os.getenv('UNOCONV_TIMEOUT', 30) # seconds<br>
<br>
# Advanced Security Workflow Settings<br>
CLIENT_RESULTS_LIMIT = 20<br>
API_LIMIT_PER_PAGE = 1000<br>
FREETEXT_KEYWORDS_READONLY = False<br>
RESOURCE_PUBLISHING = False<br>
ADMIN_MODERATE_UPLOADS = False<br>
GROUP_PRIVATE_RESOURCES = False<br>
GROUP_MANDATORY_RESOURCES = False<br>
MODIFY_TOPICCATEGORY = True<br>
USER_MESSAGES_ALLOW_MULTIPLE_RECIPIENTS = True<br>
DISPLAY_WMS_LINKS = True<br>
<br>
# For more information on available settings please consult the Django docs at<br>
# <a href="https://docs.djangoproject.com/en/dev/ref/settings" rel="noreferrer" target="_blank">https://docs.djangoproject.com/en/dev/ref/settings</a><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
Best regards, <br>
Andreas<br>
<br>
<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
_______________________________________________<br>
geonode-users mailing list<br>
<a href="mailto:geonode-users@lists.osgeo.org" target="_blank">geonode-users@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/geonode-users" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/geonode-users</a><br>
<br>
<br>
------------------------------<br>
<br>
End of geonode-users Digest, Vol 40, Issue 49<br>
*********************************************<br>
</blockquote></div></div>