release V0.1

This commit is contained in:
Villivateur Von 2021-09-25 21:29:22 +08:00
parent 9bc48bf083
commit 95668aded1
4 changed files with 115 additions and 16 deletions

View File

@ -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>

16
master/amap_api.py Normal file
View File

@ -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"]

View File

@ -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)

43
master/province2bitmap.py Normal file
View File

@ -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"]