Exemplo n.º 1
0
def api_server_new(ip, port, account, pkey, name=None, id=None):
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')
    server_id = id
    name = name if name else ip

    try:
        success, log = SshUtil.do_ssh_cmd(
            ip, port, account, pkey, 'ls -lh', timeout=5)
        if success:
            if server_id:
                # update webhook
                # you can only update the webhook which you create.
                server = Server.query.filter_by(
                    id=server_id, user_id=user_id).first()
                if not server:
                    return ResponseUtil.standard_response(
                        0, 'Server is not exist!')
                server.ip = ip
                server.port = port
                server.account = account
                server.pkey = pkey
                server.name = name
            else:
                server = Server(ip=ip, port=port, account=account, pkey=pkey,
                                user_id=user_id, name=name)

            server.save()

            return ResponseUtil.standard_response(
                1, server.dict(with_pkey=True))
    except Exception as e:
        print(e)
    return ResponseUtil.standard_response(0, 'Server SSH connect error!')
Exemplo n.º 2
0
def api_collaborator_new(webhook_id, user_id):
    # login user
    login_user_id = RequestUtil.get_login_user().get('id', '')

    if login_user_id == user_id:
        return ResponseUtil.standard_response(0, '`%s` is Creator!' % user_id)

    if not AuthUtil.has_admin_auth(login_user_id, webhook_id):
        return ResponseUtil.standard_response(0, 'Permission deny!')

    collaborator = Collaborator.query.filter_by(webhook_id=webhook_id,
                                                user_id=user_id).first()

    # not exist
    if collaborator:
        return ResponseUtil.standard_response(0, 'Collaborator exist!')

    # 开始添加
    user = User.query.get(user_id)
    if not user:
        user = User(id=user_id, name=user_id)
        user.save()
    collaborator = Collaborator(webhook_id=webhook_id, user=user)

    collaborator.save()

    return ResponseUtil.standard_response(1, collaborator.dict())
Exemplo n.º 3
0
def api_webhook_retry():
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')
    webhook_id = RequestUtil.get_parameter('webhook_id', '')

    data = {
        'src': 'Manually executed'
    }
    webhook = WebHook.query.get(webhook_id)
    if not webhook:
        return ResponseUtil.standard_response(0, 'WebHooknot exist!')

    if not AuthUtil.has_readonly_auth(user_id, webhook_id):
        return ResponseUtil.standard_response(0, 'Permission deny!')

#     if webhook.status not in ['3', '4', '5']:
#         return ResponseUtil.standard_response(0, 'Webhook is Executing!')

    history = History(webhook_id=webhook.id,
                      data=JsonUtil.object_2_json(data))
    history.updateStatus('1')
    # status is waiting
    webhook.updateStatus('1')
    # do the async task
    tasks.do_webhook_shell.delay(webhook.id, history.id, data, user_id=user_id)

    return ResponseUtil.standard_response(1, webhook.dict())
Exemplo n.º 4
0
def api_server_new():
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')

    ip = RequestUtil.get_parameter('ip', '')
    name = RequestUtil.get_parameter('name', ip)
    name = name and name or ip
    port = RequestUtil.get_parameter('port', 22)
    account = RequestUtil.get_parameter('account', '')
    pkey = RequestUtil.get_parameter('pkey', '')

    if not all((ip, name, port, account, pkey)):
        return ResponseUtil.standard_response(0, 'Form data can not be blank!')

    try:
        success, log = SshUtil.do_ssh_cmd(ip,
                                          port,
                                          account,
                                          pkey,
                                          'ls -lh',
                                          timeout=5)
        if success:
            server = Server(ip=ip,
                            port=port,
                            account=account,
                            pkey=pkey,
                            user_id=user_id,
                            name=name)

            server.save()

            return ResponseUtil.standard_response(1, server.dict())
    except Exception, e:
        print e
Exemplo n.º 5
0
def api_collaborator_list(webhook_id):
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')

    if not AuthUtil.has_readonly_auth(user_id, webhook_id):
        return ResponseUtil.standard_response(0, 'Permission deny!')

    collaborators = Collaborator.query.filter_by(webhook_id=webhook_id).all()
    collaborators = [collaborator.dict() for collaborator in collaborators]

    return ResponseUtil.standard_response(1, collaborators)
Exemplo n.º 6
0
def api_collaborator_delete(collaborator_id):
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')

    collaborator = Collaborator.query.get(collaborator_id)
    if not collaborator:
        return ResponseUtil.standard_response(0, 'Permission deny!')

    webhook_id = collaborator.webhook_id

    if not AuthUtil.has_admin_auth(user_id, webhook_id):
        return ResponseUtil.standard_response(0, 'Permission deny!')

    collaborator.delete()

    return ResponseUtil.standard_response(1, 'Success')
Exemplo n.º 7
0
def api_webhook_list():
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')
    webhooks = AuthUtil.has_auth_webhooks(user_id)
    # 转json
    webhooks = [webhook.dict(True) for webhook in webhooks]
    return ResponseUtil.standard_response(1, webhooks)
Exemplo n.º 8
0
def add_redis():
    host = request.form.get("host")
    port = request.form.get("port")
    password = request.form.get("password")

    md5 = StringUtil.md5(host + str(port))
    redis_info = RedisInfo.query.get(md5)
    if redis_info:
        redis_info.password = password
    else:
        redis_info = RedisInfo(md5=md5,
                               host=host,
                               port=port,
                               password=password)
    redis_info.save()
    return ResponseUtil.standard_response(redis_info.dict())