sub statuspage {
my ($self, $verbose) = @_;
my $uptime = format_time ($::NOW - $::starttime);
my $content = < Waiting time until download starts, estimated:Server Status Page
Myhttpd
version $VERSION; current:max connection count: $::conns:$::maxconns; uptime: $uptime;
client-id $self->{remote_id}; client country $self->{country};
Queue Statistics
EOF
for (
["download queue", $queue_file],
$verbose ? (["other queue", $queue_index])
: (),
) {
my ($name, $queue) = @$_;
my @waiters = $queue->waiters;
$waiters[$_]{idx} = $_ + 1 for 0..$#waiters;
if (@waiters) {
$content .= "
".(scalar @waiters)." client(s); $queue->{started} downloads started; $queue->{slots} slots free;";
$content .= "";
for (
["by queue average", $queue->{avgspb}],
$verbose ? (["by most recently started transfer", $queue->{lastspb}],
["by next client in queue", $waiters[0]{spb}])
: (),
) {
my ($by, $spb) = @$_;
$content .= "
";
if ($spb) {
$content .= sprintf "100 KB file: %s; 1 MB file: %s; 100MB file: %s;",
format_time($spb* 100_000),
format_time($spb* 1_000_000),
format_time($spb*100_000_000);
} else {
$content .= "(unavailable)";
}
$content .= "
# | CN | ". "Remote ID | Size | Waiting | ETA | URI |
---|---|---|---|---|---|---|
$_->{idx} | ". "$conn->{country} | ". "$conn->{remote_id} | ". "$_->{size} | ". "$time | ". "".($eta < 0 ? "overdue" : format_time $eta)." | ". "".escape_html($conn->{name})." | ". "
CN | Remote ID | bytes written | bps | RM | URI |
---|
$count active connections, $fullrate bytes/s amortized.
"; $content .= <