diff --git a/frontend_deploy/mapuino.html b/frontend_deploy/mapuino.html
index e69de29..a0f500d 100644
--- a/frontend_deploy/mapuino.html
+++ b/frontend_deploy/mapuino.html
@@ -0,0 +1,19 @@
+
+
+
+
+ Mapuino
+
+
+
+
+
+ Hello Mapuino
+
+
+
\ No newline at end of file
diff --git a/master/amap_api.py b/master/amap_api.py
new file mode 100644
index 0000000..0d29772
--- /dev/null
+++ b/master/amap_api.py
@@ -0,0 +1,16 @@
+import requests
+import json
+
+amap_api_key = "xxxxxxxxxxxxxxxxxxxxx"
+
+def ip2province(ip_address):
+ r = requests.get(f"https://restapi.amap.com/v3/ip?ip={ip_address}&output=json&key={amap_api_key}")
+ if r.status_code != 200:
+ return "error"
+ data = json.loads(r.text)
+ if data["status"] != "1":
+ return "error"
+ elif data["province"] == []:
+ return "world"
+ else:
+ return data["province"]
diff --git a/master/main.py b/master/main.py
index fa943cd..47b5ebd 100644
--- a/master/main.py
+++ b/master/main.py
@@ -1,37 +1,58 @@
from flask import Flask
from flask import request
from flask import jsonify
+from amap_api import ip2province
+from province2bitmap import province2bitmap
MapuinoApp = Flask(__name__)
-database = {
- "ffffffff-ffff-ffff-ffff-ffffffffffff": {
- "DATA0": 0xffffffff,
- "DATA1": 0xffffffff,
- }
-}
+database = {}
-@MapuinoApp.route("/frontendAPI", methods=['POST'])
+@MapuinoApp.route("/frontendAPI", methods=['GET'])
def putdate():
- if request.method == 'POST':
- new_data = {
- 'DATA0': 0xffffffff,
- 'DATA1': 0xffffffff,
- }
- database[request.form['UUID']] = new_data
+ if request.method == 'GET':
+ print(request)
+ if request.headers.getlist("X-Forwarded-For"):
+ request_ip = request.headers.getlist("X-Forwarded-For")[0]
+ else:
+ return "NO_IP_ADDR"
+ print(request_ip)
+ province = ip2province(request_ip)
+ if province == "error":
+ return "IP_ADDR_ERROR"
+
+ bitmap = province2bitmap(province[:2])
+ print(bitmap)
+ segment = bitmap[0]
+ bit = bitmap[1]
+
+ if not(request.args.get('UUID') in database):
+ database[request.args.get('UUID')] = {
+ "SEG0": 0x00000000,
+ "SEG1": 0x00000000,
+ }
+
+ if segment == 0:
+ database[request.args.get('UUID')]["SEG0"] |= (1 << bit)
+ else:
+ database[request.args.get('UUID')]["SEG1"] |= (1 << bit)
+
return "OK"
@MapuinoApp.route("/hardwareAPI", methods=['GET'])
def getdata():
if request.method == 'GET':
try:
- print(request.args.get('UUID'))
resp = database[request.args.get('UUID')]
resp['CODE'] = 0
+ resp_json = jsonify(resp)
+ database[request.args.get('UUID')]["SEG0"] = 0x00000000
+ database[request.args.get('UUID')]["SEG1"] = 0x00000000
except Exception as e:
print(e)
- resp = {'CODE': 1}
- return jsonify(resp)
+ resp_json = jsonify({'CODE': 1})
+
+ return resp_json
if __name__ == "__main__":
MapuinoApp.run("0.0.0.0", 7767)
diff --git a/master/province2bitmap.py b/master/province2bitmap.py
new file mode 100644
index 0000000..2e6bac8
--- /dev/null
+++ b/master/province2bitmap.py
@@ -0,0 +1,43 @@
+data_map = {
+ "新疆": (0, 0),
+ "黑龙": (0, 2),
+ "辽宁": (0, 4),
+ "天津": (0, 6),
+ "甘肃": (0, 8),
+ "陕西": (0, 10),
+ "河北": (0, 12),
+ "河南": (0, 14),
+ "四川": (0, 16),
+ "湖北": (0, 18),
+ "江苏": (0, 20),
+ "贵州": (0, 22),
+ "江西": (0, 24),
+ "上海": (0, 26),
+ "广东": (0, 28),
+ "海南": (0, 30),
+ "香港": (1, 0),
+ "World": (1, 2),
+ "内蒙": (0, 1),
+ "吉林": (0, 3),
+ "北京": (0, 5),
+ "青海": (0, 7),
+ "宁夏": (0, 9),
+ "山西": (0, 11),
+ "山东": (0, 13),
+ "西藏": (0, 15),
+ "重庆": (0, 17),
+ "安徽": (0, 19),
+ "云南": (0, 21),
+ "湖南": (0, 23),
+ "浙江": (0, 25),
+ "广西": (0, 27),
+ "福建": (0, 29),
+ "澳门": (0, 31),
+ "台湾": (1, 1),
+}
+
+def province2bitmap(province_name):
+ try:
+ return data_map[province_name]
+ except KeyError:
+ return data_map["World"]