mirror of
https://github.com/aaPanel/aaPanel.git
synced 2026-09-28 12:24:50 +02:00
update to 6.8.27
This commit is contained in:
+29
-16
@@ -13,6 +13,7 @@ if not 'class/' in sys.path:
|
||||
import public
|
||||
import json
|
||||
import time
|
||||
import uuid
|
||||
from BTPanel import session,cache,request
|
||||
|
||||
class wxapp():
|
||||
@@ -24,24 +25,28 @@ class wxapp():
|
||||
def _check(self, get):
|
||||
if get['fun'] in ['set_login', 'is_scan_ok', 'login_qrcode']:
|
||||
return True
|
||||
return public.returnMsg(False, 'UNAUTHORIZED')
|
||||
return public.returnMsg(False, 'Unauthorized')
|
||||
|
||||
# 验证是否扫码成功
|
||||
def is_scan_ok(self, get):
|
||||
if os.path.exists(self.app_path+"app_login_check.pl"):
|
||||
key, init_time = public.readFile(self.app_path+'app_login_check.pl').split(':')
|
||||
if time.time() - float(init_time) > 60:
|
||||
return public.returnMsg(False, 'QRCORE_EXPIRE')
|
||||
session_id = public.get_session_id()
|
||||
if cache.get(session_id) == 'True':
|
||||
return public.returnMsg(True, 'Scan QRCORE successfully')
|
||||
try:
|
||||
key, init_time, tid, status = public.readFile(self.app_path+'app_login_check.pl').split(':')
|
||||
if time.time() - float(init_time) > 60:
|
||||
return public.returnMsg(False, 'QR code expired')
|
||||
session_id = public.get_session_id()
|
||||
if cache.get(session_id) == public.md5(uuid.UUID(int=uuid.getnode()).hex):
|
||||
return public.returnMsg(True, 'Scan QRCORE successfully')
|
||||
except:
|
||||
os.remove(self.app_path + "app_login_check.pl")
|
||||
return public.returnMsg(False, '')
|
||||
return public.returnMsg(False, '')
|
||||
|
||||
# 返回二维码地址
|
||||
def login_qrcode(self, get):
|
||||
tid = public.GetRandomString(12)
|
||||
tid = public.GetRandomString(32)
|
||||
qrcode_str = 'https://app.bt.cn/app.html?&panel_url='+public.getPanelAddr()+'&v=' + public.GetRandomString(3)+'?login&tid=' + tid
|
||||
data = public.get_session_id() + ':' + str(time.time())
|
||||
data = public.get_session_id() + ':' + str(time.time()) + ':' + tid + ':' + tid
|
||||
public.writeFile(self.app_path + "app_login_check.pl", data)
|
||||
cache.set(tid,public.get_session_id(),360)
|
||||
cache.set(public.get_session_id(),tid,360)
|
||||
@@ -50,15 +55,20 @@ class wxapp():
|
||||
# 设置登录状态
|
||||
def set_login(self, get):
|
||||
session_id = public.get_session_id()
|
||||
if cache.get(session_id) == 'True':
|
||||
return self.check_app_login(get)
|
||||
if cache.get(session_id):
|
||||
if cache.get(session_id) == public.md5(uuid.UUID(int=uuid.getnode()).hex):
|
||||
return self.check_app_login(get)
|
||||
else:
|
||||
cache.delete(cache.get(session_id))
|
||||
cache.delete(session_id)
|
||||
return public.returnMsg(False, 'Login failed 2')
|
||||
return public.returnMsg(False, 'Login failed 1')
|
||||
|
||||
#验证APP是否登录成功
|
||||
def check_app_login(self,get):
|
||||
#判断是否存在绑定
|
||||
btapp_info = json.loads(public.readFile('/www/server/panel/config/api.json'))
|
||||
if not btapp_info:return public.returnMsg(False,'Unbound')
|
||||
if not btapp_info:return public.returnMsg(False,'Unbound!')
|
||||
if not btapp_info['open']:return public.returnMsg(False,'API is not turned on')
|
||||
if not 'apps' in btapp_info:return public.returnMsg(False,'Unbound phone')
|
||||
if not btapp_info['apps']:return public.returnMsg(False,'Unbound phone')
|
||||
@@ -67,19 +77,22 @@ class wxapp():
|
||||
if not os.path.exists(self.app_path+'app_login_check.pl'):return public.returnMsg(False,'Waiting for APP scan code login 1')
|
||||
data = public.readFile(self.app_path+'app_login_check.pl')
|
||||
public.ExecShell('rm ' + self.app_path+"app_login_check.pl")
|
||||
secret_key, init_time = data.split(':')
|
||||
secret_key, init_time, tid, status = data.split(':')
|
||||
if len(session_id)!=64:return public.returnMsg(False,'Waiting for APP scan code login 2')
|
||||
if len(secret_key)!=64:return public.returnMsg(False,'Waiting for APP scan code login 2')
|
||||
if session_id != secret_key:
|
||||
return public.returnMsg(False,'QR code expired')
|
||||
if time.time() - float(init_time) > 60:
|
||||
return public.returnMsg(False,'Waiting for APP scan code login')
|
||||
if session_id != secret_key:
|
||||
return public.returnMsg(False,'Waiting for APP scan code login')
|
||||
import uuid
|
||||
if status != uuid.UUID(int=uuid.getnode()).hex[-12:]: return public.returnMsg(False, '当前二维码失效222')
|
||||
cache.delete(session_id)
|
||||
cache.delete(tid)
|
||||
userInfo = public.M('users').where("id=?",(1,)).field('id,username').find()
|
||||
session['login'] = True
|
||||
session['username'] = userInfo['username']
|
||||
session['tmp_login'] = True
|
||||
public.WriteLog('TYPE_LOGIN','APP scan code login, account: {}, login IP: {}'.format(userInfo['username'],public.GetClientIp()+ ":" + str(request.environ.get('REMOTE_PORT'))))
|
||||
public.WriteLog('Login','APP scan code login, account: {}, login IP: {}'.format(userInfo['username'],public.GetClientIp()+ ":" + str(request.environ.get('REMOTE_PORT'))))
|
||||
cache.delete('panelNum')
|
||||
cache.delete('dologin')
|
||||
session['session_timeout'] = time.time() + public.get_session_timeout()
|
||||
|
||||
Reference in New Issue
Block a user