1 Star 0 Fork 0

ray / py-wakeOnLan

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
app.py 2.09 KB
一键复制 编辑 原始数据 按行查看 历史
ray 提交于 2020-11-27 14:18 . add project
# -*- coding:utf-8 -*-
from flask import Flask, render_template, request, jsonify
import re
import socket
import struct
import main_wake_on_lan
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/wake', methods=['POST'])
def wake():
response = {}
try:
macParam = request.values.get('mac_addr')
if macParam == None:
raise ValueError
# if not check_mac(mac):
# raise ValueError
# wake_on_lan(mac)
mac = main_wake_on_lan.format_mac(macParam)
send_data = main_wake_on_lan.create_magic_packet(mac)
main_wake_on_lan.send_magic_packet(send_data)
print ('成功向' + macParam + '发送唤醒包!')
response['code'] = 1
response['message'] = '请求成功'
except ValueError:
response['code'] = 0
response['message'] = '请输入正确的MAC地址'
return jsonify(response)
# 检查mac地址
def check_mac(mac_addr):
# 长度检查
if len(mac_addr) == 12:
pass
elif len(mac_addr) == 17:
mac_addr = mac_addr.replace(':', '')
print(mac_addr)
else:
return False
# 正则检查
pattern = re.compile(r'[0-9A-Fa-f]{12}')
result = pattern.match(mac_addr)
if result is not None:
return True
else:
print("check fail")
return False
def wake_on_lan(mac):
if len(mac) == 12:
pass
elif len(mac) == 17:
macaddress = mac.replace(':', '')
else:
raise ValueError('mac地址有误')
data = 'FFFFFFFFFFFF' + mac * 16
byte_data = b''
for i in range(0, len(data), 2):
byte_dat = struct.pack('B', int(data[i: i + 2], 16))
byte_data = byte_data + byte_dat
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.sendto(byte_data, ('255.255.255.255', 7))
sock.close()
if __name__ == '__main__':
app.run(debug=False, port=5000, host='0.0.0.0')
Python
1
https://gitee.com/arui158/wakeOnLan.git
git@gitee.com:arui158/wakeOnLan.git
arui158
wakeOnLan
py-wakeOnLan
master

搜索帮助