統計情報を表示する

This commit is contained in:
yuukiwww
2024-04-20 01:16:48 +00:00
parent 5f9daa697c
commit ac89c9537d
34 changed files with 475 additions and 3 deletions

65
app.py
View File

@@ -14,16 +14,20 @@ import schema
import os
import time
# -- カスタム --
import traceback
import pprint
import pathlib
import shutil
import random
import datetime
import flask
import nkf
import tjaf
# ----
from functools import wraps
from flask import Flask, g, jsonify, render_template, request, abort, redirect, session, flash, make_response, send_from_directory
from flask_caching import Cache
@@ -836,6 +840,67 @@ def delete():
return flask.jsonify({'success': True})
@app.route("/cloudflare")
def cloudflare():
token = flask.request.headers.get("X-Token")
zone_id = flask.request.args.get("zone_id")
today = datetime.datetime.now()
last_month = today - datetime.timedelta(days=30)
query = """{
viewer {
zones(filter: {
zoneTag: $zoneTag
}) {
httpRequests1dGroups(
orderBy: [date_ASC],
limit: $limit,
filter: {
date_gt: $from,
date_leq: $to
}
) {
dimensions {
date
}
sum {
bytes
cachedBytes
}
uniq {
uniques
}
}
}
}
}
"""
variables = {
"zoneTag": zone_id,
"from": last_month.astimezone(datetime.timezone.utc).strftime("%Y-%m-%d"),
"to": today.astimezone(datetime.timezone.utc).strftime("%Y-%m-%d"),
"limit": 30
}
data = {
"query": query,
"variables": variables
}
result = requests.post(
url="https://api.cloudflare.com/client/v4/graphql",
headers={
"Authorization": f"Bearer {token}"
},
data=json.dumps(data)
)
return cache_wrap(flask.jsonify(result.json()), 60)
@app.route("/stats/", defaults={"ref": "index.html"})
@app.route("/stats/<path:ref>")
def send_stats(ref):
return cache_wrap(flask.send_from_directory("public/stats", ref), 3600)
if __name__ == '__main__':
import argparse