Add stats dashboard screenshots #3
1
.env.example
Normal file
1
.env.example
Normal file
@ -0,0 +1 @@
|
||||
ES_TOKEN = ""
|
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,3 +1,6 @@
|
||||
credentials.info
|
||||
html/.htpasswd
|
||||
html/.htaccess
|
||||
.env
|
||||
geckodriver.log
|
||||
html/ressources/stats
|
||||
|
110
html/apropos.php
110
html/apropos.php
@ -189,6 +189,10 @@
|
||||
à leur arrêt définitif de manière imprévue, sans organiser et faciliter au préalable la migration des utilisateurices vers une autre instance ou plateforme.<br>
|
||||
Enfin, ce site web semble indispensable à la présentation de GNOUS, et n'est par conséquent pas non plus destiné à disparaître inopinément.</p>
|
||||
|
||||
<p>Une <a href="stats.php" title="https://www.gnous.fr/stats.php">page</a> est dédiée aux statistiques d'utilisation des services et donne des vues à la journée, à la semaine, au mois et à l'année.
|
||||
Les graphiques sont actualisés quotidiennement vers minuit.
|
||||
</p>
|
||||
|
||||
<p>Tous les services proposés par GNOUS ne sont pas référencés sur ce site web, leur usage pouvant être personnel ou réservé à un public restreint.
|
||||
Les utilisateurices sont cependant invité·es à <a href="contact.php"
|
||||
title="contact.php">nous contacter</a> si ils ou elles ont besoin d'un service particulier (sans pour autant aucune garantie quant à leur déploiement).</p>
|
||||
@ -206,60 +210,6 @@
|
||||
Mattermost ne soit pas trop importante (du moins pour l'instant). </li>
|
||||
</ul>
|
||||
|
||||
<?php
|
||||
$url = "https://mattermost.gnous.fr/api/v4/analytics/old";
|
||||
$headers = array(
|
||||
"Accept: application/json",
|
||||
"Authorization: Bearer ".$_ENV["MM_TOKEN"],
|
||||
);
|
||||
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
|
||||
$data_json = curl_exec($ch);
|
||||
|
||||
$status_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
|
||||
|
||||
curl_close($ch);
|
||||
|
||||
if ($status_code==200) {
|
||||
$data = json_decode($data_json, true);
|
||||
$channel_count = $data[0]['value'] + $data[1]['value'];
|
||||
$message_count = $data[2]['value'];
|
||||
$user_count = $data[3]['value'];
|
||||
$team_count = $data[4]['value'];
|
||||
?>
|
||||
|
||||
Chiffres (mis à jour en temps réel) :
|
||||
<table border="1">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Utilisateurices</td>
|
||||
<td><?php echo $user_count;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Équipes</td>
|
||||
<td><?php echo $team_count;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Canaux</td>
|
||||
<td><?php echo $channel_count;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Messages</td>
|
||||
<td><?php echo $message_count;?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<?php
|
||||
} else {
|
||||
echo "<i>Statistiques momentanément indisponibles.</i>";
|
||||
}
|
||||
?>
|
||||
|
||||
<h4 id="nextcloud">Nextcloud</h4>
|
||||
<p>Le logiciel libre <a href="https://nextcloud.com/" target="_blank" title="https://nextcloud.com/ (nouvel onglet)">Nextcloud</a> est le
|
||||
troisième service (le second étant ce site) mis en place avec GNOUS.
|
||||
@ -268,58 +218,6 @@ if ($status_code==200) {
|
||||
les fichiers qu'on envoie habituellement par mail, et alléger ainsi toute
|
||||
l'infrastructure du mail.</p>
|
||||
|
||||
<?php
|
||||
$url = "https://cloud.gnous.fr/ocs/v2.php/apps/serverinfo/api/v1/info?format=json";
|
||||
$headers = array(
|
||||
"Accept: application/json",
|
||||
"OCS-APIRequest: true",
|
||||
);
|
||||
|
||||
$ch = curl_init($url);
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||||
curl_setopt($ch, CURLOPT_USERPWD, $_ENV["NEXTCLOUD_USER"].":".$_ENV["NEXTCLOUD_TOKEN"]);
|
||||
|
||||
$data_json = curl_exec($ch);
|
||||
|
||||
$status_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
|
||||
|
||||
curl_close($ch);
|
||||
|
||||
if ($status_code==200) {
|
||||
$data = json_decode($data_json, true);
|
||||
$nextcloud_data = $data['ocs']['data']['nextcloud'];
|
||||
$user_count = $nextcloud_data['storage']['num_users'];
|
||||
$file_count = $nextcloud_data['storage']['num_files'];
|
||||
$share_count = $nextcloud_data['shares']['num_shares'];
|
||||
?>
|
||||
|
||||
|
||||
Chiffres (mis à jour en temps réel) :
|
||||
<table border="1">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Utilisateurices</td>
|
||||
<td><?php echo $user_count;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Fichiers</td>
|
||||
<td><?php echo $file_count;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Partages de fichiers</td>
|
||||
<td><?php echo $share_count;?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<?php
|
||||
} else {
|
||||
echo "<i>Statistiques momentanément indisponibles.</i>";
|
||||
}
|
||||
?>
|
||||
|
||||
<h4 id="mailcow">Mailcow</h4>
|
||||
<p>Depuis mars 2021 GNOUS dispose d'un serveur de mail basé sur la solution libre <a href="https://mailcow.email/" target="_blank" title="https://mailcow.email/ (nouvel onglet)">Mailcow</a>.
|
||||
Ce service permet d'envoyer et de recevoir des mails avec une adresse en <code>@gnous.fr</code>, ou tout autre domaine administré par GNOUS. Les mails sont également consultables au moyen d'un <a href="https://webmail.gnous.fr/" target="_blank" title="https://webmail.gnous.fr/ (nouvel onglet)">webmail</a>.</p>
|
||||
|
@ -1,6 +1,7 @@
|
||||
<hr>
|
||||
<p id="menu"><a href="index.php" title="https://www.gnous.fr/">Accueil</a>
|
||||
| <a href="apropos.php" title="https://www.gnous.fr/apropos.php">À propos</a>
|
||||
| <a href="stats.php" title="https://www.gnous.fr/stats.php">Statistiques</a>
|
||||
| <a href="https://mattermost.gnous.fr/" target="_blank" title="https://mattermost.gnous.fr/ (nouvel onglet)">Mattermost</a>
|
||||
| <a href="https://cloud.gnous.fr/" target="_blank" title="https://cloud.gnous.fr/ (nouvel onglet)">Nextcloud</a>
|
||||
| <a href="https://travaux.gnous.fr/" target="_blank" title="https://travaux.gnous.fr/ (nouvel onglet)">Travaux</a>
|
||||
|
70
html/stats.php
Normal file
70
html/stats.php
Normal file
@ -0,0 +1,70 @@
|
||||
<?php
|
||||
$this_file = basename($_SERVER["SCRIPT_FILENAME"]);
|
||||
?>
|
||||
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<HEAD>
|
||||
<meta charset="UTF-8">
|
||||
<title>Statistiques</title>
|
||||
<link rel="SHORTCUT ICON" HREF="ressources/logo.svg">
|
||||
<style>
|
||||
img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
</style>
|
||||
</HEAD>
|
||||
|
||||
<BODY>
|
||||
<CENTER>
|
||||
<?php include 'includes/titre.php'; ?>
|
||||
<i>Cette page vous donne quelques chiffres sur l'utilisation des services.</i><br><br>
|
||||
<?php include 'includes/menu.php'; ?>
|
||||
</CENTER>
|
||||
<?php include 'includes/mtime.php'; ?>
|
||||
|
||||
<b>NOTA :</b> Les graphiques sont actualisés quotidiennement vers minuit (heure de Paris).
|
||||
|
||||
<h2 id="sommaire">Sommaire</h2>
|
||||
<ul>
|
||||
<li> <a href="#mm" title="https://www.gnous.fr/stats.php#mm">Mattermost</a></li>
|
||||
<ul>
|
||||
<li> <a href="#mm24h" title="https://www.gnous.fr/stats.php#mm24h">Dernières 24h</a></li>
|
||||
<li> <a href="#mm7d" title="https://www.gnous.fr/stats.php#mm7d">Dernière semaine</a></li>
|
||||
<li> <a href="#mm1M" title="https://www.gnous.fr/stats.php#mm1M">Dernier mois</a></li>
|
||||
<li> <a href="#mm1y" title="https://www.gnous.fr/stats.php#mm1y">Dernière année</a></li>
|
||||
</ul>
|
||||
<li> <a href="#nc" title="https://www.gnous.fr/stats.php#nc">Nextcloud</a></li>
|
||||
<ul>
|
||||
<li> <a href="#nc24h" title="https://www.gnous.fr/stats.php#nc24h">Dernières 24h</a></li>
|
||||
<li> <a href="#nc7d" title="https://www.gnous.fr/stats.php#nc7d">Dernière semaine</a></li>
|
||||
<li> <a href="#nc1M" title="https://www.gnous.fr/stats.php#nc1M">Dernier mois</a></li>
|
||||
<li> <a href="#nc1y" title="https://www.gnous.fr/stats.php#nc1y">Dernière année</a></li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2 id=mm>Mattermost</h2>
|
||||
<h3 id=mm24h>Dernières 24h</h3>
|
||||
<a href="/ressources/stats/mm24h.png" target="_blank" title="Mattermost - Dernières 24h"><img src="ressources/stats/mm24h.png"></a><br>
|
||||
<h3 id=mm7d>Dernière semaine</h3>
|
||||
<a href="/ressources/stats/mm7d.png" target="_blank" title="Mattermost - Dernière semaine"><img src="ressources/stats/mm7d.png"></a><br>
|
||||
<h3 id=mm1M>Dernier mois</h3>
|
||||
<a href="/ressources/stats/mm1M.png" target="_blank" title="Mattermost - Dernier mois"><img src="ressources/stats/mm1M.png"></a><br>
|
||||
<h3 id=mm1y>Dernière année</h3>
|
||||
<a href="/ressources/stats/mm1y.png" target="_blank" title="Mattermost - Dernière année"><img src="ressources/stats/mm1y.png"></a><br>
|
||||
|
||||
<h2 id=nc>Nextcloud</h2>
|
||||
<h3 id=nc24h>Dernières 24h</h3>
|
||||
<a href="/ressources/stats/nc24h.png" target="_blank" title="Nextcloud - Dernières 24h"><img src="ressources/stats/nc24h.png"></a><br>
|
||||
<h3 id=nc7d>Dernière semaine</h3>
|
||||
<a href="/ressources/stats/nc7d.png" target="_blank" title="Nextcloud - Dernière semaine"><img src="ressources/stats/nc7d.png"></a><br>
|
||||
<h3 id=nc1M>Dernier mois</h3>
|
||||
<a href="/ressources/stats/nc1M.png" target="_blank" title="Nextcloud - Dernier mois"><img src="ressources/stats/nc1M.png"></a><br>
|
||||
<h3 id=nc1y>Dernière année</h3>
|
||||
<a href="/ressources/stats/nc1y.png" target="_blank" title="Nextcloud - Dernière année"><img src="ressources/stats/nc1y.png"></a><br>
|
||||
|
||||
<?php include 'includes/footer.php'; ?>
|
||||
</BODY>
|
||||
</HTML>
|
33
print_stats.py
Executable file
33
print_stats.py
Executable file
@ -0,0 +1,33 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import os
|
||||
from time import sleep
|
||||
from dotenv import load_dotenv
|
||||
from seleniumwire import webdriver
|
||||
from seleniumwire.webdriver import FirefoxOptions
|
||||
|
||||
os.chdir(os.path.dirname(os.path.abspath(__file__)))
|
||||
load_dotenv()
|
||||
|
||||
opts = FirefoxOptions()
|
||||
opts.add_argument("--headless")
|
||||
browser = webdriver.Firefox(options=opts,executable_path="/usr/local/bin/geckodriver")
|
||||
browser.set_window_size(3000, 1120)
|
||||
|
||||
def interceptor(request):
|
||||
request.headers['Authorization'] = 'Basic '+os.environ["ES_TOKEN"]
|
||||
browser.request_interceptor = interceptor
|
||||
|
||||
for duration in ["24h", "7d", "1M", "1y"]:
|
||||
browser.get("https://mon.gnous.fr/app/dashboards#/view/380099d0-4944-11ec-81a9-95d7ffa23468?embed=true&_g=(filters%3A!()%2CrefreshInterval%3A(pause%3A!t%2Cvalue%3A0)%2Ctime%3A(from%3Anow-"+duration+"%2Cto%3Anow))&hide-filter-bar=true")
|
||||
sleep(30)
|
||||
if duration == "24h":
|
||||
sleep(15)
|
||||
browser.get_screenshot_as_file("html/ressources/stats/mm"+duration+".png")
|
||||
|
||||
for duration in ["24h", "7d", "1M", "1y"]:
|
||||
browser.get("https://mon.gnous.fr/app/dashboards#/view/ef70de60-4947-11ec-81a9-95d7ffa23468?embed=true&_g=(filters%3A!()%2CrefreshInterval%3A(pause%3A!t%2Cvalue%3A0)%2Ctime%3A(from%3Anow-"+duration+"%2Cto%3Anow))&hide-filter-bar=true")
|
||||
sleep(30)
|
||||
browser.get_screenshot_as_file("html/ressources/stats/nc"+duration+".png")
|
||||
|
||||
print('done')
|
Loading…
Reference in New Issue
Block a user