From 382357d61cde9d6d1b3cb94053ab1127db9d5462 Mon Sep 17 00:00:00 2001 From: proller Date: Fri, 18 Oct 2013 21:56:34 +0400 Subject: [PATCH] Masterserver totals fix --- util/master/list.js | 6 ++---- util/master/master.cgi | 15 ++++++++++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/util/master/list.js b/util/master/list.js index b5974619a..4e2104bc8 100644 --- a/util/master/list.js +++ b/util/master/list.js @@ -48,10 +48,8 @@ function human_time(t, abs) { function success(r) { if (!r || !r.list) return; var h = ''; - if (!master.no_total && r.total) - h += '
Now players: ' + r.total.clients + ' servers: ' + r.total.servers + '
'; - if (!master.no_total_max && r.total_max) - h += '
Max players: ' + r.total_max.clients + ' servers: ' + r.total_max.servers + '
'; + if (!master.no_total && r.total && r.total_max) + h += '
Players: ' + r.total.clients + ('/' + r.total_max.clients) + ' servers: ' + r.total.servers + ('/' + r.total_max.servers) + '
'; h += ''; if (r.list.length) { h += ''; diff --git a/util/master/master.cgi b/util/master/master.cgi index a916827fe..6dbf83fca 100755 --- a/util/master/master.cgi +++ b/util/master/master.cgi @@ -229,7 +229,7 @@ sub request (;$) { return if !$param->{ping}; } my $list = read_json($config{list_full}) || {}; - printlog "readed[$config{list_full}] list size=", scalar @{$list->{list}}; + printlog "readed[$config{list_full}] list size=", scalar @{$list->{list}} if $config{debug}; my $listk = {map { $_->{key} => $_ } @{$list->{list}}}; my $old = $listk->{$param->{key}}; $param->{time} = $old->{time} if $param->{off}; @@ -250,13 +250,12 @@ sub request (;$) { delete $param->{action}; $listk->{$param->{key}} = $param; #printlog 'write', Dumper $param if $config{debug}; - $list->{list} = [grep { $_->{time} > time - $config{time_purge} } values %$listk]; - file_rewrite($config{list_full}, JSON->new->encode($list)); - printlog "writed[$config{list_full}] list size=", scalar @{$list->{list}} if $config{debug}; + my $list_full = [grep { $_->{time} > time - $config{time_purge} } values %$listk]; + $list->{list} = [ sort { $b->{clients} <=> $a->{clients} || $a->{start} <=> $b->{start} } grep { $_->{time} > time - $config{time_alive} and !$_->{off} and (!$config{ping} or !$config{pingable} or $_->{ping}) } - @{$list->{list}} + @{$list_full} ]; $list->{total} = {clients => 0, servers => 0}; for (@{$list->{list}}) { @@ -265,8 +264,14 @@ sub request (;$) { } $list->{total_max}{clients} = $list->{total}{clients} if $list->{total_max}{clients} < $list->{total}{clients}; $list->{total_max}{servers} = $list->{total}{servers} if $list->{total_max}{servers} < $list->{total}{servers}; + file_rewrite($config{list_pub}, JSON->new->encode($list)); printlog "writed[$config{list_pub}] list size=", scalar @{$list->{list}} if $config{debug}; + + $list->{list} = $list_full; + file_rewrite($config{list_full}, JSON->new->encode($list)); + printlog "writed[$config{list_full}] list size=", scalar @{$list->{list}} if $config{debug}; + } }; return [200, ["Content-type", "application/json"], [JSON->new->encode({})]], $after;