Esempio n. 1
0
def m_login():
    try:
        form = MyForm.MyFormInput()
        if form.submit.data:
            username = form.input.data
            password = form.passwd.data
            token = tools.Produce(24)
            db_sso = db_op.user_sso
            val = db_sso.query.with_entities(
                db_sso.realName, db_sso.dingunionid,
                db_sso.ticket).filter(db_sso.userName == username).all()
            if val and password == '%sok' % username:
                realName, dingunionid, ticket = val[0]
                app_resp = make_response(redirect(url_for('mobile.mobile')))
                app_resp.set_cookie('user', Md5.Md5_make(realName), path='/')
                app_resp.set_cookie('dingId',
                                    Md5.Md5_make(dingunionid),
                                    path='/')
                app_resp.set_cookie('ticket', Md5.Md5_make(ticket), path='/')
                app_resp.set_cookie('token', token, path='/')
                RC.set('OP_dingId_%s' % Md5.Md5_make(dingunionid), dingunionid)
                RC.set('OP_user_%s' % Md5.Md5_make(realName), realName)
                RC.set('OP_token_%s' % dingunionid, token)
                RC.set('OP_ticket_%s' % Md5.Md5_make(ticket), ticket)
                RC.set('OP_logout_ticket_%s' % ticket, ticket)
                return app_resp
    except Exception as e:
        logging.error(e)
    return render_template('mobile/m_login.html', form=form)
Esempio n. 2
0
def login():
    try:
        db_sso = db_op.user_sso
        ticket = tools.http_args(request,'ticket')
        if ticket:
            try:
                cas_resp = cas_client.perform_service_validate(ticket=ticket,service_url=service_url)
                if cas_resp and cas_resp.success:
                    try:
                        infos = cas_resp.attributes
                        departmentName = infos['departmentName']
                        mail = infos['mail']
                        mobilePhone = infos['mobilePhone']
                        userName = infos['userName']
                        realName = infos['realName']
                        dingunionid = infos['dingunionid']
                        token = tools.Produce(24)
                        update_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
                    except Exception as e:
                        logging.error(e)
                    else:
                        try:
                            val = db_sso.query.filter(db_sso.dingunionid == dingunionid).all()
                            if val:
                                db_sso.query.filter(db_sso.dingunionid == dingunionid).update({db_sso.department:departmentName,
                                                                                               db_sso.mail:mail,
                                                                                               db_sso.mobilePhone:mobilePhone,
                                                                                               db_sso.userName: userName,
                                                                                               db_sso.ticket: ticket,
                                                                                               db_sso.realName: realName,
                                                                                               db_sso.update_time:update_time})
                                db_op.DB.session.commit()
                            else:
                                c =db_sso(userName=userName,realName=realName,mail=mail,mobilePhone=mobilePhone,department=departmentName,
                                          dingunionid=dingunionid,ticket=ticket,grade='9,10',update_time=update_time)
                                db_op.DB.session.add(c)
                                db_op.DB.session.commit()
                        except Exception as e:
                            logging.error(e)
                        else:
                            URL = url_for('main')
                            app_resp = make_response(redirect(URL))
                            app_resp.set_cookie('user', Md5.Md5_make(realName),path='/')
                            app_resp.set_cookie('dingId', Md5.Md5_make(dingunionid),path='/')
                            app_resp.set_cookie('ticket', Md5.Md5_make(ticket),path='/')
                            app_resp.set_cookie('token',token,path='/')
                            Redis.set('OP_dingId_%s' % Md5.Md5_make(dingunionid), dingunionid)
                            Redis.set('OP_user_%s' % Md5.Md5_make(realName), realName)
                            Redis.set('OP_token_%s' %dingunionid,token)
                            Redis.set('OP_ticket_%s' %Md5.Md5_make(ticket),ticket)
                            Redis.set('OP_logout_ticket_%s' %ticket, ticket)
                            Redis.set('OP_dingid_ticket_%s' %ticket, dingunionid)
                            return app_resp
            except Exception as e:
                logging.error(e)
    except Exception as e:
        logging.error(e)
        return redirect(url_for('error'))
    return redirect(cas_client.get_login_url(service_url=service_url))
Esempio n. 3
0
def platform_token(action=None, id=None, args=None):
    tools.Async_log(g.user, request.url)
    db_token = db_op.platform_token
    tm = time.strftime('%Y-%m-%d', time.localtime())
    form = MyForm.Form_platform_token()
    tables = ['第三方平台', '连接方式', 'Token', '颁发日期', '失效日期', '管理']
    if action == 'add':
        expire_date = "2999-12-30"
        if id > 0:
            expire_date = datetime.datetime.now() + datetime.timedelta(days=id)
            expire_date = expire_date.strftime('%Y-%m-%d')
        try:
            c = db_token(platform=args,
                         channel='api',
                         token=Md5.Md5_make(tools.Produce(8, string.digits)),
                         award=tm,
                         expire=expire_date)
            db_op.DB.session.add(c)
            db_op.DB.session.commit()
            return render_template_string('success')
        except Exception as e:
            logging.error(e)
            return render_template_string('fail')
    if action == 'modify':
        try:
            db_token.query.filter(db_token.id == id).update(
                {db_token.expire: args})
            db_op.DB.session.commit()
            return render_template_string('success')
        except Exception as e:
            logging.error(e)
            return render_template_string('fail')
    if action == 'drop':
        try:
            v = db_token.query.filter(db_token.id == id).all()
            for c in v:
                db_op.DB.session.delete(c)
                db_op.DB.session.commit()
            return render_template_string('success')
        except Exception as e:
            logging.error(e)
            return render_template_string('fail')
    vals = db_token.query.with_entities(
        db_token.id, db_token.platform, db_token.channel, db_token.token,
        db_token.award, db_token.expire).order_by(desc(db_token.id)).all()
    return render_template('platform_token.html',
                           form=form,
                           vals=vals,
                           tables=tables,
                           tm=tm)
Esempio n. 4
0
def publish():
    try:
        tools.Async_log(g.user, request.url)
        importlib.reload(MyForm)
        secret_key = tools.Produce(length=12, chars=string.digits)
        Msg_Key = 'op_publish_msg_%s' % secret_key
        form = MyForm.MyFormPublish()
        if form.submit.data:
            try:
                if Redis.exists(Msg_Key):
                    raise flash('上线操作过于频繁,请稍等%s秒......' % Redis.ttl(Msg_Key))
                package_url = form.package_url.data
                describe = form.describe.data
                package_md5 = form.package_md5.data
                package_type = form.package_type.data
                publish_type = form.publish_type.data
                check_url = form.check_url.data
                restart = form.restart.data
                execute = form.execute.data
                rb_project = form.project.data
                rb_version = form.version.data
                gray = form.gray.data
                if execute == 'rollback':
                    if not rb_project and not rb_version:
                        raise logging.error("choice can not be empty!")
                if execute == 'publish':
                    if not package_url or not package_md5 or not check_url or not describe:
                        raise logging.error("input can not be empty!")
                    Package_name = package_url.split('/')[-1]
                    package_name = Package_name.replace('.zip', '')
                    rb_project = '-'.join(package_name.split('-')[:-1])
                INFOS = {
                    'package_url': package_url,
                    'package_md5': package_md5,
                    'package_type': package_type,
                    'publish_type': publish_type,
                    'user': g.user,
                    'describe': describe.replace('"', '').replace("'", ''),
                    'gray': int(gray),
                    'restart': restart,
                    'execute': execute,
                    'check_url': check_url.replace('https', 'http'),
                    'project': rb_project,
                    'version': rb_version,
                    'channel': 'web',
                    'callback_url': 'None',
                    'token': 'None',
                    'timestamp': int(time.time())
                }
                #启动代码分发控制中心
                Scheduler = produce.SchedulerPublish()
                Scheduler = Scheduler.Scheduler_mem(
                    task_publish.Publish_center, [INFOS, Msg_Key, secret_key])
                Scheduler.start()
                return render_template('publish_show.html',
                                       secret_key=secret_key)
            except Exception as e:
                if 'old-style' not in str(e):
                    logging.error(e)
    except Exception as e:
        logging.error(e)
        return redirect(url_for('error'))
    return render_template('publish.html', form=form)
Esempio n. 5
0
def index():
    try:
        whitelist = []
        Key = "op_alarm_load_whitelist"
        if RC_CLUSTER.exists(Key):
            whitelist = RC_CLUSTER.smembers(Key)
        td = time.strftime("%Y-%m-%d", time.localtime())
        td_1 = datetime.datetime.now() - datetime.timedelta(days=1)
        td_1 = td_1.strftime("%Y-%m-%d")
        td_7 = datetime.datetime.now() - datetime.timedelta(days=7)
        td_7 = td_7.strftime("%Y-%m-%d")
        TM = time.strftime('%M', time.localtime())
        BUSIS = []
        #业务信息展示
        try:
            Key = 'op_k8s_ingress_log'
            line = Line("容器平台业务QPS统计",
                        width='105%',
                        height=250,
                        title_pos='center',
                        title_text_size=12)
            if RC.exists('%s_%s' % (Key, td)):
                try:
                    vals = RC.hgetall('%s_%s' % (Key, td))
                    vals = sorted(vals.items(), key=lambda item: item[0])
                    attrs = [val[0] for val in vals[-15:]]
                    vals = [int(int(val[1]) / 60) for val in vals[-15:]]
                    line.add('',
                             attrs,
                             vals,
                             is_label_show=True,
                             is_toolbox_show=False,
                             legend_pos='65%',
                             xaxis_interval=0,
                             is_fill=True,
                             area_opacity=0.3,
                             is_smooth=True)
                except Exception as e:
                    logging.error(e)
            else:
                total_key = 'op_totals_alarms_tmp'
                for i in range(7):
                    data_now = datetime.datetime.now() - datetime.timedelta(
                        days=i)
                    dd = data_now.strftime('%Y-%m-%d')
                    alarm_count_key = '%s_%s' % ('op_business_alarm_count', dd)
                    if RC_CLUSTER.exists(alarm_count_key):
                        vals = RC_CLUSTER.hgetall(alarm_count_key)
                        vals = sorted(vals.items(),
                                      key=lambda item: int(item[1]))
                        for val in vals:
                            RC_CLUSTER.hincrby(total_key, dd, val[1])
                line = Line("业务监控报警近期统计",
                            width='105%',
                            height=250,
                            title_pos='center',
                            title_text_size=12)
                if RC_CLUSTER.exists(total_key):
                    vals = RC_CLUSTER.hgetall(total_key)
                    vals = sorted(vals.items(),
                                  key=lambda item: item[0],
                                  reverse=True)
                    RC_CLUSTER.delete(total_key)
                    attrs = [val[0] for val in vals]
                    vals = [int(val[1]) for val in vals]
                    line.add("",
                             attrs,
                             vals,
                             is_label_show=True,
                             is_toolbox_show=False,
                             is_legend_show=False,
                             xaxis_interval=0,
                             is_fill=True,
                             area_opacity=0.3,
                             is_smooth=True)
            bar = Bar("线上业务实时PV统计",
                      width='105%',
                      height=250,
                      title_pos='center',
                      title_text_size=12)
            busi_vals = RC_CLUSTER.hgetall('op_business_pv_%s' % td)
            if busi_vals:
                busi_vals = sorted(busi_vals.items(),
                                   key=lambda item: int(float(item[1])),
                                   reverse=True)
                bar_vals = [val[0] for val in busi_vals[:8]]
                bar_counts = [
                    float('%.4f' % (float(val[1]) / 100000000))
                    for val in busi_vals[:8]
                ]
                bar.add("",
                        bar_vals,
                        bar_counts,
                        is_label_show=True,
                        is_toolbox_show=False,
                        legend_orient='vertical',
                        legend_pos='right',
                        xaxis_interval=0,
                        yaxis_formatter='亿')
            BUSIS.extend((bar, line))
        except Exception as e:
            logging.error(e)
        #网站并发访问展示
        try:
            NEW_DATA = [
                eval(v) for v in RC.lrange('internet_access_%s' % td, 0, -1)
            ]
            attr = [DATA[0] for DATA in NEW_DATA]
            vals = [int(int(DATA[1]) / 60) for DATA in NEW_DATA]
            line = Line('线上业务QPS统计',
                        title_pos='center',
                        title_text_size=12,
                        width='109%',
                        height='250px')
            line.add("今天",
                     attr,
                     vals,
                     is_toolbox_show=False,
                     is_smooth=True,
                     mark_point=["max", "min"],
                     mark_point_symbolsize=80,
                     is_datazoom_show=True,
                     datazoom_range=[v for v in range(100, 10)],
                     datazoom_type='both',
                     legend_pos='70%')
            if RC.exists('internet_access_%s' % td_1):
                OLD_DATA = [
                    eval(v)
                    for v in RC.lrange('internet_access_%s' % td_1, 0, -1)
                ]
                OLD_DATA = [val for val in OLD_DATA if val[0] in attr]
                old_attr = [DATA[0] for DATA in OLD_DATA]
                old_vals = [int(int(DATA[1]) / 60) for DATA in OLD_DATA]
                if attr and vals:
                    line.add("昨天",
                             old_attr,
                             old_vals,
                             is_toolbox_show=False,
                             is_smooth=True,
                             mark_point=["max", "min"],
                             mark_point_symbolsize=80,
                             is_datazoom_show=True,
                             datazoom_range=[v for v in range(100, 10)],
                             datazoom_type='both',
                             legend_pos='70%')
            if RC.exists('internet_access_%s' % td_7):
                OLD_DATA = [
                    eval(v)
                    for v in RC.lrange('internet_access_%s' % td_7, 0, -1)
                ]
                OLD_DATA = [val for val in OLD_DATA if val[0] in attr]
                old_attr = [DATA[0] for DATA in OLD_DATA]
                old_vals = [int(int(DATA[1]) / 60) for DATA in OLD_DATA]
                if attr and vals:
                    line.add("上周",
                             old_attr,
                             old_vals,
                             is_toolbox_show=False,
                             is_smooth=True,
                             mark_point=["max", "min"],
                             mark_point_symbolsize=80,
                             is_datazoom_show=True,
                             datazoom_range=[v for v in range(100, 10)],
                             datazoom_type='both',
                             legend_pos='70%')
        except Exception as e:
            logging.error(e)
        #监控数据展示
        try:
            tm = datetime.datetime.now() - datetime.timedelta(minutes=1)
            tm = tm.strftime('%H:%M')
            z_triggers = RC.hgetall('zabbix_triggers_%s' % tm)
            if z_triggers:
                z_triggers = [[t, z_triggers[t]] for t in z_triggers]
        except Exception as e:
            logging.error(e)
        #服务器预警信息
        try:
            z_infos = defaultdict()
            dict_load = None
            dict_openfile = None
            if RC_CLUSTER.exists('op_zabbix_server_load_top'):
                dict_load = eval(RC_CLUSTER.get('op_zabbix_server_load_top'))
            if RC_CLUSTER.exists('op_zabbix_server_openfile_top'):
                dict_openfile = eval(
                    RC_CLUSTER.get('op_zabbix_server_openfile_top'))
            if dict_load:
                z_infos['cpu_load'] = dict_load
            if dict_openfile:
                z_infos['openfile'] = dict_openfile
        except Exception as e:
            logging.error(e)
        app_resp = make_response(
            render_template('index.html',
                            line=line,
                            tm=TM,
                            z_triggers=z_triggers,
                            z_infos=z_infos,
                            BUSIS=BUSIS,
                            whitelist=whitelist))
        app_resp.set_cookie('secret_key',
                            tools.Produce(length=8, chars=string.digits),
                            path='/')
        return app_resp
    except Exception as e:
        logging.error(e)
        flash('获取数据错误!', "error")
        return render_template('Message.html')