Exemple #1
0
def makeSession (user, group, session=None):
    t = str(int(time.time()))
    if session == None:
        r = str(random.randint(10000, 99999))
        data = user + t + r
        session = getMd5(data)
    sessionPath = TEMPPATH + group + '_' + getMd5(user)
    os.system('echo ' + session + ',' + t + ' > ' + sessionPath)
    return user + '|' + group + '|' + session
def makeToken (user, group, token=None):
    t = str(int(time.time()))
    if token == None:
        r = str(random.randint(10000, 99999))
        data = user + t + r
        token = getMd5(data)
    tokenPath = TEMPPATH + group + '_' + getMd5(user)
    os.system('echo ' + token + ',' + t + ' > ' + tokenPath)
    return user + '|' + group + '|' + token
def clearToken (tokenStr):
    tmp = tokenStr.split('|')
    if len(tmp) == 3:
        user = tmp[0]
        group = tmp[1]
        tokenPath = TEMPPATH + group + '_' + getMd5(user)
        os.system('rm ' + tokenPath)
def checkToken (tokenStr):
    # 检查传值是否为空
    if tokenStr == None:
        return 4
    tmp = tokenStr.split('|')
    
    # 检查传值是否符合我们的设计要求
    if len(tmp) != 3:
        return 4
    user = tmp[0]
    group = tmp[1]
    token = tmp[2]
    tokenPath = TEMPPATH + group + '_' + getMd5(user)
    
    # 检查服务器存储的对应 session 文件是否存在
    if not os.path.exists(tokenPath):
        return 4
    
    # 读取文件对比
    with open(tokenPath, 'r') as f:
        # 获取存储的各项值
        saveStrArr = str(f.read()).split(',')
        saveToken = saveStrArr[0]
        saveTime = int(saveStrArr[1])
        nowTime = int(time.time())
        
        # 看 token 值是否一致
        if token != saveToken:
            return 1
        # 看时间是否有效
        elif (nowTime - saveTime) > 3600:
            return 2
        # 正常
        else:
            return 0
Exemple #5
0
async def upload(request):
    # 字节码转16进制字符串
    def bytes2hex(bytes):
        hexstr = u""
        for i in range(10):
            t = u"%x" % bytes[i]
            if len(t) % 2:
                hexstr += u"0"
            hexstr += t
        return hexstr.lower()

    # 根据16进制字符串获取文件后缀
    def getSuffix(hexStr):
        print(hexStr)
        for i in SUPPORT_TYPE:
            if i in hexStr:
                return SUPPORT_TYPE[i]
        return 400

    # 判断参数是否正确
    if not request.files and not request.files.get('file'):
        return fail('参数错误', 400)
    image = request.files.get('file').body

    # 判断文件是否支持
    imageSuffix = getSuffix(bytes2hex(image))
    if imageSuffix == 400:
        return fail('不支持的文件类型', 400)

    # 组织图片存储路径
    md5Name = getMd5(image)

    saveDir = UPLOAD_PATH + md5Name[0:2] + '/'
    savePath = saveDir + md5Name[2:] + '.' + imageSuffix
    resPath = '/' + md5Name[0:2] + '/' + md5Name[2:] + '.' + imageSuffix

    # 如果文件夹不存在,就创建文件夹
    if not os.path.exists(saveDir):
        os.makedirs(saveDir)

    # 将文件写入到硬盘
    tempFile = open(savePath, 'wb')
    tempFile.write(image)
    tempFile.close()

    # 给客户端返回结果
    return ok({"path": resPath})
Exemple #6
0
def checkSession (session):
    if session == None:
        return 4
    tmp = session.split('|')
    user = tmp[0]
    group = tmp[1]
    session = tmp[2]
    sessionPath = TEMPPATH + group + '_' + getMd5(user)
    if os.path.exists(sessionPath):
        with open(sessionPath, 'r') as f:
            saveText = str(f.read()).split(',')
            saveSession = saveText[0]
            saveTime = int(saveText[1])
            nowTime = int(time.time())
            if session != saveSession:
                return 1
            elif (nowTime - saveTime) > 3600:
                return 2
            else:
                return 0

    else:
        return 4
Exemple #7
0
def clearSession (session):
    tmp = session.split('|')
    user = tmp[0]
    group = tmp[1]
    sessionPath = TEMPPATH + group + '_' + getMd5(user)
    os.system('rm ' + sessionPath)