release V0.1
This commit is contained in:
parent
9bc48bf083
commit
95668aded1
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Mapuino</title>
|
||||
<meta charset="utf-8" />
|
||||
<script>
|
||||
const Http = new XMLHttpRequest();
|
||||
const url='http://iot.vvzero.com/mapuino/frontendAPI?UUID=ffffffff-ffff-ffff-ffff-ffffffffffff';
|
||||
Http.open("GET", url);
|
||||
Http.send();
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Hello Mapuino</h1>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -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"]
|
|
@ -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)
|
||||
|
|
|
@ -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"]
|
Loading…
Reference in New Issue