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}
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}
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}
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')
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}
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')
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}
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}
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}
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 {}
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
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')
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))
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}
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)}
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}))
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))
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}
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}
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}
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}
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}
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}
def group_list(request, id): client = get_object_or_404(Client, id=id, using=request.server); return get_group_list(request, client)
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}
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}
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))
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 }