def makeserver(path): #目录必须存在 if not os.path.exists(path): raise FileNotFoundError("路径[%s]不存在,请重新输入"%path) dws = DataWorker('servers') sharekey = utils.uniqid() result = dws.load() for res in result: while True: if res.get('sharekey') == sharekey: sharekey = utils.uniqid() else: break if res.get('folder') == path: raise UserWarning("共享目录正在使用中:%s"%res.get('folder')) item = { 'sharekey':sharekey, 'folder':path, 'modtime':int(time.time()), 'addtime':int(time.time()) } dws.append(item) return sharekey
def upload(): if USER_TOKEN not in session and USER_ID_TOKEN not in session and not isinstance(session[USER_ID_TOKEN], int): return redirect('/') if request.method == 'POST': if 'name' in request.form and 'desc' in request.form: name = request.form['name'].strip() description = request.form['desc'].strip() file_context = request.files['file'] filename = secure_filename(file_context.filename) user_id = session[USER_ID_TOKEN] if file_context and allowed_file(filename): uid = uniqid() filename = "".join([uid, ".torrent"]) upload_torrent_file(name, description, file_context, filename, user_id) return redirect('/user_page/') return render_template('upload.html')
def upload(): if USER_TOKEN not in session and USER_ID_TOKEN not in session and not isinstance( session[USER_ID_TOKEN], int): return redirect('/') if request.method == 'POST': if 'name' in request.form and 'desc' in request.form: name = request.form['name'].strip() description = request.form['desc'].strip() file_context = request.files['file'] filename = secure_filename(file_context.filename) user_id = session[USER_ID_TOKEN] if file_context and allowed_file(filename): uid = uniqid() filename = "".join([uid, ".torrent"]) upload_torrent_file(name, description, file_context, filename, user_id) return redirect('/user_page/') return render_template('upload.html')
def upload_torrent_file(name, description, file_context, filename, user_id): if name != "" and description and filename != "": if os.path.exists(app.config['UPLOAD_FOLDER']): uid = uniqid() filename = "".join([uid, ".torrent"]) file_context.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) try: data = open(app.config['UPLOAD_FOLDER'] + filename, "rb").read() if data: torrent_ = decode(data) size = 0 try: info = torrent_["info"]["files"] for file_context in info: size = size + file_context["length"] except KeyError: size = torrent_["info"]["length"] size = round((size * 0.001) * 0.001, 2) add_torrent(name, description, filename, user_id, size) except IOError: return
def makeclient(sharekey, path): #目录必须存在且为空 if not sharekey.isalnum or len(sharekey) != 32: raise UserWarning("共享串格式错误[要求32位长度]:%s"%sharekey) if not os.path.exists(path): raise FileNotFoundError("路径[%s]不存在,请重新输入"%path) dwc = DataWorker('clients') result = dwc.load() for res in result: if res.get('sharekey') == sharekey: raise UserWarning("共享串已设置同步目录:%s"%res.get('folder')) if res.get('folder') == path: raise UserWarning("同步目录正在使用中:%s"%res.get('folder')) item = { 'sharekey':sharekey, 'folder':path, 'modtime':int(time.time()), 'addtime':int(time.time()) } dwc.append(item) return utils.uniqid()
def generate_csrf_token(): if '_csrf_token' not in session: session['_csrf_token'] = uniqid() return session['_csrf_token']