Skip to content

Commit

Permalink
feat: add referer option for securised private keys
Browse files Browse the repository at this point in the history
  • Loading branch information
azarz committed Oct 3, 2024
1 parent 74bb496 commit ab1713a
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 15 deletions.
12 changes: 9 additions & 3 deletions app.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,16 @@ def index():
@app.route("/", methods=['POST'])
def generate():
apiKeys = []
for apiKey in request.form.values():
apiKeys.append(apiKey)
referer = ""
i = 0;
for param in request.form.values():
if (i == 0):
referer = param
else :
apiKeys.append(param)
i += 1
return Response(
main(apiKeys),
main(apiKeys, referer),
mimetype='application/json',
headers={'Content-disposition': 'attachment; filename=customConfig.json'})

Expand Down
12 changes: 6 additions & 6 deletions core/requester.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,39 @@

from core.generic_keys import GENERIC_KEYS

def getWMTSCapabilities(key):
def getWMTSCapabilities(key, referer):
if key in GENERIC_KEYS :
url = "https://data.geopf.fr/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetCapabilities"
else:
url = "https://data.geopf.fr/private/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetCapabilities&apikey={}".format(key)

response = requests.get(url)
response = requests.get(url, headers={'Referer': referer})
if response.status_code != 200:
return False
dict_capabilities = xmltodict.parse(response.text)

return dict_capabilities["Capabilities"]

def getWMSRCapabilities(key):
def getWMSRCapabilities(key, referer):
if key in GENERIC_KEYS:
url = "https://data.geopf.fr/wms-r/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities"
else:
url = "https://data.geopf.fr/private/wms-r?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities&apikey={}".format(key)

response = requests.get(url)
response = requests.get(url, headers={'referer': referer})
if response.status_code != 200:
return False
dict_capabilities = xmltodict.parse(response.text)

return dict_capabilities["WMS_Capabilities"]["Capability"]

def getWMSVCapabilities(key):
def getWMSVCapabilities(key, referer):
if key in GENERIC_KEYS :
url = "https://data.geopf.fr/wms-v/ows?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities"
else:
url = "https://data.geopf.fr/private/wms-v/ows?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities&apikey={}".format(key)

response = requests.get(url)
response = requests.get(url, headers={'referer': referer})
if response.status_code != 200:
return False
dict_capabilities = xmltodict.parse(response.text)
Expand Down
12 changes: 7 additions & 5 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
from core.wms_parser import parseWMS
from core.wmts_parser import parseWMTS

def main(keys):
def main(keys, referer=""):
if not isinstance(keys, list):
keys = [keys]
list_configs = [
config for key in keys
for config in [
parseWMTS(getWMTSCapabilities(key), key),
parseWMS(getWMSRCapabilities(key), key),
parseWMS(getWMSVCapabilities(key), key),
parseWMTS(getWMTSCapabilities(key, referer), key),
parseWMS(getWMSRCapabilities(key, referer), key),
parseWMS(getWMSVCapabilities(key, referer), key),
parseVectorTiles(key)
]
]
Expand All @@ -30,11 +30,13 @@ def main(keys):
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("keys", nargs="+")
parser.add_argument("--referer", required=False, default="")
keys = parser.parse_args().keys
referer = parser.parse_args().referer

config_name = keys[0]
if len(keys) > 1:
config_name = "custom"

with open("dist/{}Config.json".format(config_name), "w", encoding="utf-8") as file:
file.writelines(main(keys))
file.writelines(main(keys, referer))
6 changes: 5 additions & 1 deletion templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,12 @@ <h3>Récupérer le fichier de configuration</h3>
</p>

<form action="" method="POST">
<p id="refererPara">
<label for="referer" class="">Referer (si sécurisation de la clé par par referer)</label>
<input type="text" class="form-control input-sm" placeholder="Referer (si sécurisation par referer)" size="30" name="referer" id="referer">
</p>
<p id="keyInputPara0">
<label for="keyInput0" class="">Clef d'accès privée</label>
<label for="apiKey0" class="">Clef d'accès privée</label>
<input type="text" class="form-control input-sm" placeholder="Clef d'accès privée" size="30" name="apiKey0" id="apiKey0">
</p>
<div>
Expand Down

0 comments on commit ab1713a

Please sign in to comment.