Beispiel #1
0
def log_dbsql(request):
    '''获取分服sql语句接口
    '''
    #根据服务器获取分服数据库所需的SQL结构表信息
    server_id = int(request.GET.get('server_id', '') or 0)
    is_truncate_table = request.REQUEST.get('truncate','') == 'true'
    if not server_id:
        return HttpResponse('服务器不存在,请求失败.')
    sqls = []
    the_server = Server()
    the_server.id = server_id
    sqls.append(the_server.get_base_database_sql())        #创建数据库
    sqls.append('USE %s;' % the_server.db_name)
    if is_truncate_table:
        '''清数据的接口
        '''
        sqls.extend( LogDefine.get_truncate_table_sqls() )
        sqls.append('truncate table player_%d;' % server_id)
    else: 
        sqls.extend(the_server.get_create_player_table_sqls()) #创建player_表
        sqls.extend(the_server.get_create_gang_table_sqls())   #创建gang_表
        sqls.append(the_server.get_drop_base_log_sql())        #先删除下log基表
        sqls.append(the_server.get_create_base_log_sql())      #创建log_x基表
        
        log_defs = LogDefine.objects.filter(status=LogDefine.Status.NORMAL)
        for log_def in log_defs:
                sqls.append(log_def.get_create_table_sql())
                for create_index_sql in log_def.get_create_index_sqls(): #同步索引
                    sqls.append(create_index_sql)  
        for log_def in log_defs:
            for other_sql in log_def.get_other_sqls(is_sql_file=True): #触发器
                sqls.append(sql_handle(other_sql,server_id))
    
    return HttpResponse('\n'.join(sqls))
Beispiel #2
0
def maintenance_new_server(request):
    is_add = True
    source_model = None
    params = request.REQUEST
    server_id = params.get("server_id", 0)
    if not server_id:
        return {"code": 1, "msg": "没有参数"}

    model = Server.objects.filter(id=int(server_id))
    if model:
        return HttpResponse(json.dumps({"code": 1, "msg": "已存在该服务器ID"}))

    try:
        model = Server()
        model.id = server_id
        model.name = params.get("name", "")
        model.tabId = params.get("tabId", 1)
        model.status = -1
        model.commend = params.get("commend", 0)
        model.game_addr = params.get("game_addr", "")
        model.game_port = params.get("game_port", "")
        model.log_db_config = params.get("log_db_config", "")
        model.order = params.get("server_id")
        model.alias = params.get("alias", "")
        model.create_time = datetime.datetime.strptime(
            params.get("create_time"), '%Y-%m-%d %H:%M:%S')
        model.last_time = datetime.datetime.now()
        model.save(using="write")
        # 保存详细操作日志
        save_server_log(server_id, is_add, request, source_model, model)
        return HttpResponse(json.dumps({"code": 0, "msg": "success"}))
    except BaseException as e:
        return HttpResponse(json.dumps({"code": 1, "msg": "save fail!"}))
Beispiel #3
0
def server_edit(request, server_id=0):
    '''服务器编辑
    '''
    server_id = int(
        request.REQUEST.get('sid', '') or request.REQUEST.get('server_id', '')
        or 0)
    is_copy = request.REQUEST.get('copy', '')
    if server_id:
        model = Server.objects.using('read').get(id=server_id)
        if is_copy:
            model.name = ''
            model.game_addr = ''
            model.model = ''
    else:
        model = Server()
        model.id = 0
    list_group = Group.objects.all()

    # 分组名称
    m = eval(
        DictValue.objects.using('read').get(dict_id=tab_name_id).json_dict)

    # 所属分组ID
    if server_id:
        tab_id = str(model.tabId)

    return render_to_response('server/server_edit.html', locals())
Beispiel #4
0
def log_syncdb(request, server_id=0):
    '''同步表界面
    '''
    err_msg = ''
    action = request.REQUEST.get('action','')
    server_ids = request.REQUEST.getlist('sid')
    if action == 'syncdb':
        return log_syncdb_do(request)
    if server_ids:
        if int(server_ids[0]) == 0:
            center_server = Server()
            center_server.id = 0
            center_server.name = '中央服'
            list_record = [center_server]
        else:
            list_record = Server.objects.using('read').filter(id__in=server_ids)
    else:
        err_msg = '没有选择服务器!'

    return render_to_response('log/log_sync_status.html', locals())
Beispiel #5
0
def server_save(request, server_id=0):
    server_id = server_id or int(request.REQUEST.get('sid', '') or '0')
    new_server_id = int(request.REQUEST.get('new_server_id', '') or 0)
    model = None
    source_model = None
    is_add = True

    if server_id:
        model = Server.objects.get(id=server_id)
        source_model = copy.copy(model)
        is_add = False

    if not model:
        model = Server()
        model.id = new_server_id

    list_group = Group.objects.all()
    exists = False
    update_id = False
    err_msg = ''

    if server_id != new_server_id:
        exists = Server.objects.filter(id=new_server_id).exists()
        if exists:
            err_msg = '保存的服务器ID已存在'
            return render_to_response('feedback.html', locals())
        else:
            update_id = True

    if not request.POST.get("tabId"):
        err_msg = '请填入分组ID'
        return render_to_response('feedback.html', locals())

    model.tabId = int(request.POST.get("tabId") or 0)
    # model.client_ver = request.POST.get('client_ver', '') # 客户端版本
    model.name = request.POST.get('name', '')
    model.status = int(request.POST.get('status', '2'))
    model.commend = int(request.POST.get('commend', '2'))
    # model.require_ver = int(request.POST.get('require_ver', '0')) # 要求最低版本
    model.game_addr = request.POST.get('game_addr', '')
    model.game_port = int(request.POST.get('game_port', '2008'))
    model.report_url = request.POST.get('report_url', '')
    model.log_db_config = request.POST.get('log_db_config', '')
    model.remark = request.POST.get('remark', '')
    model.order = new_server_id if server_id == 0 else server_id
    model.json_data = request.POST.get('json_data', '')
    model.alias = request.REQUEST.get('alias', '')
    # model.is_ios = int(request.POST.get('is_ios', '0'))   #ios标识
    create_time = request.POST.get('create_time', '')
    model.last_time = datetime.datetime.now()
    model.game_db_addr_port = request.POST.get('game_db_addr_port', '')
    model.game_db_name = request.POST.get('game_db_name', '')
    model.game_db_user = request.POST.get('game_db_user', '')
    model.game_db_password = request.POST.get('game_db_password', '')
    if create_time == '':
        create_time = datetime.datetime.now()
    else:
        create_time = datetime.datetime.strptime(create_time,
                                                 '%Y-%m-%d %H:%M:%S')
    model.create_time = create_time

    # 保存详细操作日志
    save_server_log(server_id, is_add, request, source_model, model)

    if not exists:
        if model.name != '' and model.game_addr != '':
            try:
                # 修改ID
                old_server = copy.copy(model)
                if update_id:
                    model.id = new_server_id
                model.save()

                group_ids = request.POST.getlist('group_id')
                group_ids = [int(x) for x in group_ids]

                for group_model in list_group:
                    if group_model.id in group_ids:
                        group_model.server.add(model)
                        try:
                            # 添加服务器分区后,在增加到角色资源里面
                            from models.admin import Role, Resource
                            role_exclude = Role.objects.exclude(
                                name__contains="系统管理员")
                            for r in role_exclude:
                                role_group_list = r.get_resource(
                                    'server_group')
                                if group_model in role_group_list:
                                    ser_l = list(
                                        group_model.server.values_list('id'))
                                    extend_l = r.get_resource(
                                        'server').values_list('id')
                                    ser_l.extend(extend_l)
                                    ser_l = list(set([i[0] for i in ser_l]))
                                    r.create_resource('server', ser_l)
                                    r.save()
                        except:

                            print trace_msg()

                    else:
                        group_model.server.remove(model)

                # 前面保存没有出错
                if update_id:
                    old_server.status = Server.Status.TEST
                    old_server.save()

            except Exception, e:

                err_msg = trace_msg()

        else:
            err_msg = '填写必要数据!'