def api_images(): user = xtoken_user(AuthAPI.getXToken()) img_db: wrappers.Collection = mongo.db.images image: list = deserialize_json(Image, img_db.find({"uid": user.uuid})) if len(image) == 0: return json_result(-1, "image not found") return json_result(0, image)
def api_directory_upload(): path = request.form["path"] data = request.files["data"] if not path or "../" in path: return redirect("/v1/error") user = xtoken_user(AuthAPI.getXToken()) return fsapi.write(user.username, path, data)
def api_image_run(sid: uuid.UUID, port: int): user: User = xtoken_user(AuthAPI.getXToken()) tag = randomString(15) db: wrappers.Collection = mongo.db.images image: Image = deserialize_json( Image, db.find_one({ "uid": user.uuid, "uuid": str(sid) })) try: container_id = DockerImageAPI.run(image.tag, "", port) container_uuid = str(uuid.uuid4()) container = Container(user.uuid, tag, "start", str(sid), port, container_id, container_uuid) db: wrappers.Collection = mongo.db.containers db.insert_one(container.__dict__) DockerContainerAPI.start(container) docker_daemon.notify(container_id) return json_result(0, "image run") except: return json_result(-1, "image not found")
def api_containers(): user = xtoken_user(AuthAPI.getXToken()) con_db: wrappers.Collection = mongo.db.containers container: list = deserialize_json(Container, con_db.find({"uid": user.uuid})) if len(container) == 0: return json_result(-1, "container not found") return json_result(0, container)
def api_directory(): path = request.form["path"] if path == None: path = "." if "../" in path: return redirect("/v1/error") user = xtoken_user(AuthAPI.getXToken()) return fsapi.listing(user.username, path)
def api_container_detail(sid: uuid.UUID): user: User = xtoken_user(AuthAPI.getXToken()) db: wrappers.Collection = mongo.db.images container: Container = deserialize_json( Container, db.find_one({ "uid": user.uuid, "uuid": str(sid) })) return json_result(0, container)
def api_image_detail(sid: uuid.UUID): user: User = xtoken_user(AuthAPI.getXToken()) db: wrappers.Collection = mongo.db.images image: Image = deserialize_json( Image, db.find_one({ "uid": user.uuid, "uuid": str(sid) })) return json_result(0, image)
def api_container_rm(sid): user: User = xtoken_user(AuthAPI.getXToken()) db: wrappers.Collection = mongo.db.containers container: Container = deserialize_json( Container, db.find_one({ "uid": user.uuid, "uuid": str(sid) })) try: DockerContainerAPI.remove(container) return json_result(0, "container removed") except: return json_result(-1, "container not found")
def api_image_rm(sid): user: User = xtoken_user(AuthAPI.getXToken()) db: wrappers.Collection = mongo.db.images image: Image = deserialize_json( Image, db.find_one({ "uid": user.uuid, "uuid": str(sid) })) try: DockerImageAPI.delete(image.tag) return json_result(0, "image removed") except: return json_result(-1, "image not found")
def api_directory_removedir(): path = request.form["path"] if "../" in path: return redirect("/v1/error") user = xtoken_user(AuthAPI.getXToken()) return fsapi.rmdir(user.username, path)
def api_directory_download(): path = request.form["path"] if not path or "../" in path: return redirect("/v1/error") user = xtoken_user(AuthAPI.getXToken()) return fsapi.read(user.username, path)