Exemplo n.º 1
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.º 2
0
def add_redis():
    host = RequestUtil.get_parameter('host', '')
    port = RequestUtil.get_parameter('port', '6379')
    password = RequestUtil.get_parameter('password', '')

    try:
        rst = RedisMonitor().ping(host=host, port=port, password=password)
        if not rst.get('success', ''):
            # ping 失败
            return JsonUtil.object_2_json(rst)
    except:
        ResponseUtil.standard_response(0, 'Ping error!')

    # ping 通,添加
    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(1, redis_info.dict())
Exemplo n.º 3
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.º 4
0
def redis_info():
    md5 = RequestUtil.get_parameter('md5', '')
    redis_info = RedisInfo.query.get(md5)

    if redis_info:
        return ResponseUtil.standard_response(1, redis_info.dict())
    return ResponseUtil.standard_response(0, 'Not Found!')
Exemplo n.º 5
0
def api_history_list():
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')

    webhook_id = RequestUtil.get_parameter('webhook_id', '')

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

    page = RequestUtil.get_parameter('page', '1')
    try:
        page = int(page)
        if page < 1:
            page = 1
    except:
        page = 1

    page_size = 25
    paginations = History.query\
        .filter_by(webhook_id=webhook_id)\
        .order_by(History.id.desc())\
        .paginate(page, page_size, error_out=False)

    histories = [history.dict() for history in paginations.items]

    data = {
        'histories': histories,
        'has_prev': paginations.has_prev,
        'has_next': paginations.has_next,
        'page': paginations.page
    }

    return ResponseUtil.standard_response(1, data)
Exemplo n.º 6
0
Arquivo: api.py Projeto: hustcc/TODO
def save(user_id):
    id = RequestUtil.get_parameter(request, 'id', None)
    title = RequestUtil.get_parameter(request, 'title', None)
    completed = RequestUtil.get_parameter(request, 'completed', None)
    if completed == 'true':
        completed = True
    else:
        completed = False
    if id:
        todo = Todo.query.filter_by(id=id).first()
    else:
        todo = Todo(user_id=user_id,
                    add_time=DateUtil.now_datetime())  # new todo

    if todo and todo.user_id == user_id:
        # update it.
        if title:
            todo.title = title
        if completed is not None:
            todo.completed = completed


#         print todo.dict()
        todo.save()
        return ResponseUtil.standard_response(1, todo.dict())
    else:
        return ResponseUtil.standard_response(0, 'save error.')
Exemplo n.º 7
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.º 8
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.º 9
0
def loginApi(username, password):
    user = User.query.filter_by(username=username).first()
    if not user or not user.verify_password(password):
        return ResponseUtil.standard_response(0, '用户名不存在或密码错误')
    user.last_login = DateUtil.now_datetime()
    user.save()
    RequestUtil.login_user(user.dict())
    return ResponseUtil.standard_response(1, user.dict())
Exemplo n.º 10
0
def del_redis():
    md5 = RequestUtil.get_parameter('md5', '')
    redis_info = RedisInfo.query.get(md5)

    if redis_info:
        redis_info.delete()
        return ResponseUtil.standard_response(1, 'Success!')
    return ResponseUtil.standard_response(0, 'Not Found!')
Exemplo n.º 11
0
Arquivo: api.py Projeto: hustcc/TODO
def remove(user_id):
    id = RequestUtil.get_parameter(request, 'id', None)

    if id:
        todo = Todo.query.filter_by(id=id).first()
        if todo:
            todo.delete()
            return ResponseUtil.standard_response(1, 'remove success.')
    return ResponseUtil.standard_response(0, 'remove error.')
Exemplo n.º 12
0
def register(username, password, email):
    # username = request.json.get('úsername')
    # password = request.json.get('password')
    # email = request.json.get('email')
    if User.query.filter_by(username=username).first() is not None:
        return ResponseUtil.standard_response(0, 'user is exist')
    user = User(username=username, email=email)
    user.hash_password(password)
    user.save()
    return ResponseUtil.standard_response(1, user.dict())
Exemplo n.º 13
0
def upload_file():
    file = request.files['image']
    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        unix_time = DateUtil.now_timestamp()
        ext = filename.rsplit('.', 1)[1]
        new_filename = str(unix_time) + '.' + ext
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], new_filename))
        return ResponseUtil.standard_response(0, IMAGE_URL + new_filename)
    return ResponseUtil.standard_response(0, '请上传图片!')
Exemplo n.º 14
0
def api_server_delete(server_id):
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')
    server = Server.query.filter_by(user_id=user_id, id=server_id).first()
    if not server:
        return ResponseUtil.standard_response(0, 'Permission deny!')

    server.deleted = True
    server.save()

    return ResponseUtil.standard_response(1, 'Success')
Exemplo n.º 15
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.º 16
0
def api_webhook_delete():
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')
    webhook_id = RequestUtil.get_parameter('webhook_id', '')

    webhook = WebHook.query.filter_by(user_id=user_id, id=webhook_id).first()
    if not webhook:
        return ResponseUtil.standard_response(0, 'Permition deny!')

    webhook.delete()

    return ResponseUtil.standard_response(1, 'Success')
Exemplo n.º 17
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_id = RequestUtil.get_parameter('id', '')
            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.º 18
0
def api_webhook_delete():
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')
    webhook_id = RequestUtil.get_parameter('webhook_id', '')

    # 验证创建者权限
    webhook = AuthUtil.has_admin_auth(user_id, webhook_id)
    if not webhook:
        return ResponseUtil.standard_response(0, 'Permission deny!')

    webhook.deleted = True
    webhook.save()

    return ResponseUtil.standard_response(1, 'Success')
Exemplo n.º 19
0
def flushall_redis():
    try:
        md5 = RequestUtil.get_parameter('md5', '')
        db = RequestUtil.get_parameter('db', '0')

        redis_info = RedisInfo.query.get(md5)
        if redis_info:
            r = RedisUtil.flushall(redis_info.host, redis_info.port,
                                   redis_info.password, db)
            if r:
                return ResponseUtil.standard_response(1, 'Success!')
            return ResponseUtil.standard_response(0, 'Flush db error!')
        return ResponseUtil.standard_response(0, 'Not Found!')
    except:
        return ResponseUtil.standard_response(0, 'Connect to redis error!')
Exemplo n.º 20
0
def api_webhook_list():
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')

    # create webhooks
    created_webhooks = WebHook.query.filter_by(user_id=user_id,
                                               deleted=False).all()

    # collaborator webhooks
    collaborated_webhooks = \
        WebHook.query.join(Collaborator,
                           Collaborator.webhook_id == WebHook.id) \
                     .filter(Collaborator.user_id == user_id) \
                     .filter(WebHook.deleted == false()).all()

    webhooks = created_webhooks + collaborated_webhooks
    # to dict
    webhooks = {'id%s' % webhook.id: webhook for webhook in webhooks}
    # value
    webhooks = webhooks.values()
    # sort
    sorted(webhooks, key=lambda webhook: webhook.id)
    webhooks = [webhook.dict(True) for webhook in webhooks]

    return ResponseUtil.standard_response(1, webhooks)
Exemplo n.º 21
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.º 22
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.º 23
0
def api_webhook_list():
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')

    webhooks = WebHook.query.filter_by(user_id=user_id, deleted=False).all()
    webhooks = [webhook.dict(True) for webhook in webhooks]

    return ResponseUtil.standard_response(1, webhooks)
Exemplo n.º 24
0
def api_server_list():
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')

    servers = Server.query.filter_by(user_id=user_id, deleted=False).all()
    servers = [server.dict(with_pkey=True) for server in servers]

    return ResponseUtil.standard_response(1, servers)
Exemplo n.º 25
0
def api_webhook_new():
    # login user
    user_id = RequestUtil.get_login_user().get('id', '')
    server_id = RequestUtil.get_parameter('server_id', '')
    # server must be added by yourself
    if not Server.query.filter_by(id=server_id, user_id=user_id).first():
        return ResponseUtil.standard_response(0, 'Permition deny!')

    repo = RequestUtil.get_parameter('repo', '')
    branch = RequestUtil.get_parameter('branch', '')
    shell = RequestUtil.get_parameter('shell', '')

    if not all((repo, branch, shell, server_id)):
        return ResponseUtil.standard_response(0, 'Form data can not be blank!')

    webhook_id = RequestUtil.get_parameter('id', '')
    if webhook_id:
        # update webhook
        # you can only update the webhook which you create.
        webhook = WebHook.query.filter_by(
            id=webhook_id, user_id=user_id).first()
        if not webhook:
            return ResponseUtil.standard_response(0, 'WebHook is not exist!')
        webhook.repo = repo
        webhook.branch = branch
        webhook.shell = shell
        webhook.server_id = server_id
    else:
        # new webhook
        webhook = WebHook(
            repo=repo,
            branch=branch,
            shell=shell,
            server_id=server_id,
            user_id=user_id,
            key=StringUtil.md5_token()
        )

    webhook.save()

    return ResponseUtil.standard_response(1, webhook.dict(with_key=True))
Exemplo n.º 26
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())
Exemplo n.º 27
0
Arquivo: api.py Projeto: hustcc/TODO
def api(api):
    user_id = RequestUtil.get_login_user(session)
    rst = hanlder.get(api, for_404)(user_id)
    if rst:
        return rst
    return ResponseUtil.standard_response(1, 'test')
Exemplo n.º 28
0
Arquivo: api.py Projeto: hustcc/TODO
def for_404(user_id):
    ResponseUtil.standard_response(0, '404')
Exemplo n.º 29
0
Arquivo: api.py Projeto: hustcc/TODO
def drop(user_id):
    Todo.query.filter_by(user_id=user_id).delete()
    return ResponseUtil.standard_response(1, 'drop success.')
Exemplo n.º 30
0
Arquivo: api.py Projeto: hustcc/TODO
def findAll(user_id):
    todos = Todo.query.filter_by(user_id=user_id)
    todos = [todo.dict() for todo in todos]
    return ResponseUtil.standard_response(1, todos)