Example #1
0
def client_detail(request, id):
    server = get_object_or_404(Server,uuid=request.server)

    if not is_plugin_enabled(server, 'ctime'):
        raise Http404
    
    client = get_object_or_404(Client, id=id, using=request.server)
    
    data = get_player_activity(client)

    return {'client': client, 'activity': data}
Example #2
0
def addnote(request, id):
    client = get_object_or_404(Client, id=id, using=request.server)
    if request.method == 'POST':
        form = CommentForm(request.POST)
        if form.is_valid():
            # penalty type in db is defined as enum.
            # so we treat a comment like an inactive notice with a special keyword
            p = Penalty(client=client,
                        type=PENALTY_TYPE_NOTICE,
                        keyword=TYPE_COMMENT,
                        inactive=1,
                        duration=0,
                        reason= form.cleaned_data['reason'],
                        time_edit=datetime.datetime.now(),
                        time_add=datetime.datetime.now(),
                        data= "UP#%s" % request.user.username,
                        admin_id=0)
            p.save(using=request.server)
            Auditor.objects.create(user=request.user,
                                   server_id=request.server,
                                   clientid=client.id,
                                   message=_("Add \"%s\"") % str(p))
            messages.success(request, _('Comment added successfully.'))
            return HttpResponse("{\"sucess\": true}",  mimetype='application/json') 
    else:
        form = CommentForm()
        url = urlreverse("add_note", server=request.server, kwargs={'id':id})
    return {'form': form, 'client': client, 'url': url}
Example #3
0
def get_server(request, id):
    server = get_object_or_404(Server, pk=id)
    if not request.user.is_superuser and not server.is_owner(request.user):
        raise Http403
    
    return {'server': server,
            'plugins': PLUGINS}
Example #4
0
def editpenalty(request, id):
    p = get_object_or_404(Penalty, id=id, using=request.server)
    if request.method == 'POST':
        form = PenaltyForm(request.POST)
        if form.is_valid():
            if form.cleaned_data['permanent']:
                p.duration=0
                p.type='Ban'
            else:
                p.duration = form.cleaned_data['time']
                p.type='TempBan'
            p.reason = form.cleaned_data['reason']
            p.time_edit=datetime.datetime.now()
            p.save()
            Auditor.objects.create(user=request.user,
                                   server_id=request.server,
                                   clientid=p.client.id,
                                   message=_("Update \"%s\"") % str(p))            
            messages.success(request, _('Penalty updated.'))
            try:
                signals.change_penalty.send(sender=p,
                                            user=request.user,
                                                client= p.client,
                                                penalty=p,
                                                server=request.server)
            except Exception, e:
                logger.error(str(e))
            #return HttpResponseRedirect(urlreverse("client_detail",server=request.server,kwargs={'id':p.client.id}))
            return HttpResponse("{\"sucess\": true}", mimetype='application/json')
Example #5
0
def list_admin_actions(request, id):
    '''all actions an admin did on this user
    '''
    client = get_object_or_404(Client, id=id, using=request.server)
    notices = _paginate(request, client.admin_logs.all())
    return {'client_adm_logs': notices,
            'client': client}
Example #6
0
def removenote(request, id):
    penalty = get_object_or_404(Penalty, id=id, using=request.server)
    Auditor.objects.create(user=request.user,
                           server_id=request.server,
                           clientid=penalty.client.id,
                           message=_("Remove \"%s\"") % str(penalty))
    penalty.delete()        
    messages.success(request, _('Comment removed successfully.'))
    return HttpResponse("{\"sucess\": true}", mimetype='application/json')
Example #7
0
def more_logs(request, id):
    client = get_object_or_404(Client, id=id, using=request.server)
    if has_server_perm(request.user, perm.VIEW_AUDITLOGS, request.server):
        client_auditlogs = _paginate(request, Auditor.objects.get_by_client(client.id, request.server)) 
    else:
        client_auditlogs = _paginate(request, Auditor.objects.get_by_client_n_user(client.id, request.server, request.user))
    #client_auditlogs = _paginate(request, Auditor.objects.get_by_client(client.id, request.server))
    return {'client_auditlogs': client_auditlogs,
            'client': client}
Example #8
0
def list_commands(request, id):
    '''all actions performed by this user
    '''
    client = get_object_or_404(Client, id=id, using=request.server)
    notices = _paginate(request, client.commands.all())
    return {'client_adm_commands': notices,
            'client': client}
    
    
Example #9
0
def home(request):
    if not has_server_perm(request.user, perm.RCON, request.server):
        raise Http403
    server = get_object_or_404(Server, uuid=request.server)
    if not server.is_rcon_supported:
        raise Http503(_('Server %s does not have RCON support enabled.' % server.name))
    # TODO load handler based on server
    handler = find_handler_for_game(server.game)
    if not handler:
        raise Http503(_('No valid handler found for game %s.' % server.game))
    h = handler(server=server)
    return {'form': h.form} 
Example #10
0
def game_status(request):
    server = get_object_or_404(Server,uuid=request.server)

    try:
        plugin = StatusPlugin.objects.get(server=server)
    except StatusPlugin.DoesNotExist:
        return {}
    try:
        status = plugin.get_status()
    except Exception, e:
        messages.error(request, _('Error: %s' % str(e)))
        return {}
Example #11
0
def client(request, id):
    client = get_object_or_404(Client, id=id, using=request.server)
    
    try:
        if client.group.level >= settings.HIGH_LEVEL_CLIENT:
            if not has_server_perm(request.user, perm.VIEW_HIGH_LEVEL_CLIENT, request.server):
                messages.warning(request, _('You are not authorized to view details about this player.'))
                raise Http403
    except Group.DoesNotExist:
        pass
    except Exception, e:
        logger.exception(str(e))
        raise
Example #12
0
def addpenalty(request, id, notice=False):
    
    if notice:
        if not has_any_server_perms(request.user, [perm.ADD_NOTICE, perm.ADD_PENALTY], request.server):
            raise Http403
    else:
        if not has_server_perm(request.user, perm.ADD_PENALTY, request.server):
            raise Http403
            
    client = get_object_or_404(Client, id=id, using=request.server)
    if notice:
        frmObj = NoticeForm
    else:
        frmObj = PenaltyForm
    if request.method == 'POST':
        form = frmObj(request.POST)
        if form.is_valid():
            p = Penalty(client=client,
                        reason= form.cleaned_data['reason'],
                        time_edit=datetime.datetime.now(),
                        time_add=datetime.datetime.now(),
                        data= "UP#%s" % request.user.username,
                        admin_id=0)
            if form.Meta.type == 1:
                p.duration=0
                p.type='Notice'
            else:
                if form.cleaned_data['permanent']:
                    p.duration=0
                    p.type='Ban'
                else:
                    #dt = time2minutes(str(form.cleaned_data['time'])+form.cleaned_data['time_type'])
                    p.duration = form.cleaned_data['time']
                    p.type='TempBan'
            p.save(using=request.server)
            Auditor.objects.create(user=request.user,
                                   server_id=request.server,
                                   clientid=client.id,
                                   message=_("Add \"%s\"") % str(p))
            try:
                signals.add_penalty.send(sender=p, user=request.user,
                                                client=client,
                                                penalty=p,
                                                server=request.server)
            except Exception, e:
                logger.error(str(e))
            if notice:
                messages.success(request, _('Notice added successfully.'))
            else:
                messages.success(request, _('Penalty added successfully.'))
            return HttpResponse("{\"sucess\": true}", mimetype='application/json') 
Example #13
0
def disablepenalty(request, id):
    penalty = get_object_or_404(Penalty, id=id, using=request.server)
    penalty.inactive = 1
    penalty.save()
    Auditor.objects.create(user=request.user,
                           server_id=request.server,
                           clientid=penalty.client.id,
                           message=_("Disable \"%s\"") % str(penalty))
    try:
        signals.delete_penalty.send(sender=penalty,
                                        user=request.user,
                                        client=penalty.client,
                                        penalty=penalty,
                                        server=request.server)
    except Exception, e:
        logger.error(str(e))
Example #14
0
def execute(request):
    if not has_server_perm(request.user, perm.RCON, request.server):
        raise Http403
    if request.method != 'POST':
        raise Http403
    server = get_object_or_404(Server, uuid=request.server)
    if not server.is_rcon_supported:
        raise Http503(_('Server %s does not have RCON support enabled.' % server.name))
    handler = find_handler_for_game(server.game)
    if not handler:
        raise Http503(_('No valid handler found for game %s.' % server.game)) 
    h = handler(server=server, data=request.POST)
    try:
        resp = h.execute()
    except ValidationError, ve:
        logger.error(ve.messages)
        return {'success': False, 'response': ve.messages}
Example #15
0
def game_status(request):
    if not has_server_perm(request.user, perm.RCON, request.server):
        raise Http403
    if request.method != 'POST':
        raise Http403
    server = get_object_or_404(Server, uuid=request.server)
    if not server.is_rcon_supported:
        raise Http503(_('Server %s does not have RCON support enabled.' % server.name))
    handler = find_handler_for_game(server.game)
    if not handler:
        raise Http503(_('No valid handler found for game %s.' % server.game)) 
    h = handler(server=server)
    try:
        currentMap, clientList = h.get_status()
    except Exception, e:
        logger.exception(str(e))
        return {'error': str(e)}
Example #16
0
def remove(request, id):
    client = get_object_or_404(Client, id=id, using=request.server)
    if client.followed.all():
        for r in client.followed.all():
            r.delete()

        Auditor.objects.create(user=request.user,
                               server_id=request.server,
                               clientid=client.id,
                               message=_("Remove from watch list"))
                    
        messages.success(request, _('User removed of the watch list'))    
    else:
        messages.error(request, _('User is not in the watch list'))

    if request.GET.has_key('ls'):
        return HttpResponseRedirect(urlreverse("follow:home",server=request.server))
    else:
        return HttpResponseRedirect(urlreverse("client_detail",server=request.server,kwargs={'id': id}))    
Example #17
0
def removenotice(request, id):
    
    if not has_any_server_perms(request.user, [perm.DELETE_NOTICE, perm.DELETE_PENALTY], request.server):
        raise Http403
    
    penalty = get_object_or_404(Penalty, id=id, using=request.server)
    if (penalty.type != PENALTY_TYPE_NOTICE):
        raise Http403
    Auditor.objects.create(user=request.user,
                           server_id=request.server,
                           clientid=penalty.client.id,
                           message=_("Remove \"%s\"") % str(penalty))
    try:
        signals.delete_penalty.send(sender=penalty, user=request.user,
                                        client=penalty.client,
                                        penalty=penalty,
                                        server=request.server)        
    except Exception, e:
        logger.error(str(e))
Example #18
0
def add(request, id):
    client = get_object_or_404(Client, id=id, using=request.server)
    if request.method == 'POST':
        form = FollowForm(request.POST)
        if form.is_valid():
            p = Follow.objects.using(request.server).create(client=client,
                       reason=_("%(reason)s (by %(user)s)") % {'reason': form.cleaned_data['reason'], 'user': request.user},
                       time_add=datetime.datetime.now(),
                       admin_id=0)
            messages.success(request, _('Follow added successfully.'))
            
            Auditor.objects.create(user=request.user,
                                   server_id=request.server,
                                   clientid=client.id,
                                   message=_("Put %s") % str(p))
            
            return HttpResponseRedirect(urlreverse("client_detail",server=request.server,kwargs={'id':id}))
    else:
        if client.followed.all():
            messages.error(request, _('User already exists.'))
            return HttpResponseRedirect(urlreverse("client_detail",server=request.server,kwargs={'id':id}))            
        form = FollowForm()
        
    return {'form': form, 'client': client}
Example #19
0
def client_detail(request, id):
    server = Server.objects.get(uuid=request.server)
    status = ServerStatus.objects.filter(server=server,
                                       players__client_id=id)
    client = get_object_or_404(Client, id=id, using=request.server)
    return {"client": client,"status": status}
Example #20
0
def more_notices(request, id):
    client = get_object_or_404(Client, id=id, using=request.server)
    notices = _paginate(request, client.penalties.notices())
    return {'client_notices': notices,
            'client': client}
Example #21
0
def more_notes(request, id):
    client = get_object_or_404(Client, id=id, using=request.server)
    p = client.penalties.comments()[:1][0]
    return {'note': p}
Example #22
0
def map_editor(request, id):
    server = get_object_or_404(Server, pk=id)
    if not has_server_perm(request.user, perm.MAP_EDIT, id):
        pass
    maps = Map.objects.filter(server=server)
    return {'maps': maps, 'server': server}
Example #23
0
def more_alias(request, id):
    client = get_object_or_404(Client, id=id, using=request.server)
    client_aliases = _paginate(request, client.aliases.all())
    return {'client_aliases': client_aliases, 'client': client}
Example #24
0
def group_list(request, id):
    client = get_object_or_404(Client, id=id, using=request.server);
    return get_group_list(request, client) 
Example #25
0
def more_ipalias(request, id):
    client = get_object_or_404(Client, id=id, using=request.server)
    ipaliases = _paginate(request, client.ip_aliases.all())
    return {'client_ipaliases': ipaliases,
            'banlist': _get_banlist(request),
            'client': client}
Example #26
0
def more_admactions(request, id):
    client = get_object_or_404(Client, id=id, using=request.server)
    client_admactions = _paginate(request, client.adminpenalties.all())
    return {'client_admactions': client_admactions,
            'client': client}
Example #27
0
def change_clientgroup(request, id):
    
    if request.method != 'POST':
        raise Http403

    g = int(request.POST.get('value'))
    if not has_server_perm(request.user, perm.CLIENT_GROUP_CHANGE, request.server):
        if g < 2 and has_any_server_perms(request.user, [perm.CLIENT_REGISTER, perm.CLIENT_REGULAR, perm.CLIENT_REMOVE_REGULAR, perm.CLIENT_REMOVE_REGISTER], request.server):
            pass
        elif g == 2 and has_server_perm(request.user, perm.CLIENT_REGULAR, request.server):
            pass
        else:
            raise Http403        
     
    group = get_object_or_404(Group, id=g, using=request.server)
    client = get_object_or_404(Client, id=id, using=request.server)

    try:
        currentLevel = client.group.level if client.group else 0
    except Group.DoesNotExist:
        currentLevel = 0
        
    if g == 100 or currentLevel == 100:
        server = get_object_or_404(Server, pk=request.server)
        if not (request.user.is_superuser or server.is_owner(request.user)):
            raise Http403
        
    if client.group_id > group.id:
        if client.group_id == 2 and has_server_perm(request.user, perm.CLIENT_REMOVE_REGULAR, request.server):
            pass
        elif client.group_id == 1 and has_server_perm(request.user, perm.CLIENT_REMOVE_REGISTER, request.server):
            pass
        elif has_server_perm(request.user, perm.CLIENT_GROUP_CHANGE, request.server):
            pass
        else:
            messages.error(request, _('You are not authorized to update this client at this time.'))
            return HttpResponse(str(client.group), mimetype='plain/text')
        upgrade = False
    else:
        upgrade = True
    
    client.group = group
    client.save()

    if upgrade:
        Auditor.objects.create(user=request.user,
                           server_id=request.server,
                           clientid=client.id,
                           message=_("Upgrade client to \"%s\"") % group.name)
    else:
        Auditor.objects.create(user=request.user,
                           server_id=request.server,
                           clientid=client.id,
                           message=_("Downgrade client to \"%s\"") % group.name)

    try:
        signals.update_player_group.send(sender=client, user=request.user,
                                        client=client,
                                        server=request.server)
    except Exception, e:
        logger.error(str(e))
Example #28
0
def more_ipenalties(request, id):
    client = get_object_or_404(Client, id=id, using=request.server)
    client_ppenalties = _paginate(request, client.penalties.inactive())
    return {'client_ppenalties': client_ppenalties,
            'client': client }