예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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")
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
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")
예제 #9
0
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")
예제 #10
0
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)
예제 #11
0
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)