mirror of
https://github.com/star-inc/star_yuuki_bot.git
synced 2024-09-20 14:56:19 +08:00
Update and remove page-transitions for some security reason
This commit is contained in:
parent
98ffd6c03c
commit
52088d391b
|
@ -5,4 +5,35 @@ Yuuki_Libs
|
||||||
This Source Code Form is subject to the terms of the Mozilla Public
|
This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
"""
|
"""
|
||||||
|
from .reader import Yuuki_WebDataReader
|
||||||
|
|
||||||
|
class Yuuki_WebAdminAPI:
|
||||||
|
def __init__(self, YuukiData):
|
||||||
|
self.YukkiData = YuukiData
|
||||||
|
self.Yuuki_DataHandle = Yuuki_WebDataReader(YuukiData)
|
||||||
|
self.events = {
|
||||||
|
"": self.nothing,
|
||||||
|
"get_logs": self.get_logs,
|
||||||
|
"get_groups_joined": self.get_groups_joined,
|
||||||
|
}
|
||||||
|
|
||||||
|
def init(self, **action):
|
||||||
|
action.setdefault('task', "")
|
||||||
|
action.setdefault('data', None)
|
||||||
|
return self.events[action["task"]](action["data"])
|
||||||
|
|
||||||
|
def get_groups_joined(self, **data):
|
||||||
|
data.setdefault('data', None)
|
||||||
|
return self.YukkiData.getData(["Global", "GroupJoined"])
|
||||||
|
|
||||||
|
def get_logs(self, **data):
|
||||||
|
data.setdefault('name', None)
|
||||||
|
if data.get("name"):
|
||||||
|
return self.Yuuki_DataHandle.get_log(data["name"])
|
||||||
|
return self.Yuuki_DataHandle.get_all_logs()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def nothing(data):
|
||||||
|
if data:
|
||||||
|
pass
|
||||||
|
|
|
@ -15,11 +15,11 @@ from flask import Flask, render_template, Response, request, redirect
|
||||||
from flask_bootstrap import Bootstrap
|
from flask_bootstrap import Bootstrap
|
||||||
from gevent.pywsgi import WSGIServer
|
from gevent.pywsgi import WSGIServer
|
||||||
|
|
||||||
from .reader import Yuuki_WebDataReader
|
from .api import Yuuki_WebAdminAPI
|
||||||
|
|
||||||
wa_app = Flask(__name__)
|
wa_app = Flask(__name__)
|
||||||
Yuuki_Handle = None
|
Yuuki_Handle = None
|
||||||
Yuuki_DataHandle = None
|
Yuuki_APIHandle = None
|
||||||
|
|
||||||
passports = []
|
passports = []
|
||||||
password = str(hash(random.random()))
|
password = str(hash(random.random()))
|
||||||
|
@ -27,9 +27,9 @@ password = str(hash(random.random()))
|
||||||
|
|
||||||
class Yuuki_WebAdmin:
|
class Yuuki_WebAdmin:
|
||||||
def __init__(self, Yuuki):
|
def __init__(self, Yuuki):
|
||||||
global Yuuki_Handle, Yuuki_DataHandle
|
global Yuuki_Handle, Yuuki_APIHandle
|
||||||
Yuuki_Handle = Yuuki
|
Yuuki_Handle = Yuuki
|
||||||
Yuuki_DataHandle = Yuuki_WebDataReader(Yuuki_Handle.data)
|
Yuuki_APIHandle = Yuuki_WebAdminAPI(Yuuki_Handle.data)
|
||||||
|
|
||||||
self.app = wa_app
|
self.app = wa_app
|
||||||
Bootstrap(self.app)
|
Bootstrap(self.app)
|
||||||
|
@ -99,7 +99,7 @@ class Yuuki_WebAdmin:
|
||||||
if "yuuki_admin" in request.cookies:
|
if "yuuki_admin" in request.cookies:
|
||||||
if request.cookies["yuuki_admin"] in passports:
|
if request.cookies["yuuki_admin"] in passports:
|
||||||
return render_template(
|
return render_template(
|
||||||
'manage/groups.html'
|
'manage/settings.html'
|
||||||
)
|
)
|
||||||
response = redirect("/")
|
response = redirect("/")
|
||||||
response.set_cookie(
|
response.set_cookie(
|
||||||
|
@ -155,16 +155,15 @@ class Yuuki_WebAdmin:
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@wa_app.route("/api/logs")
|
@wa_app.route("/api", methods=['GET', 'POST'])
|
||||||
@wa_app.route("/api/logs/<name>")
|
def api():
|
||||||
def logs(name=""):
|
|
||||||
result = {"status": 403}
|
result = {"status": 403}
|
||||||
if "yuuki_admin" in request.cookies:
|
if request.method == "POST" and "task" in request.values:
|
||||||
if request.cookies.get("yuuki_admin") in passports:
|
if request.cookies.get("yuuki_admin") in passports:
|
||||||
if name:
|
query_result = Yuuki_APIHandle.init(request.values)
|
||||||
result = Yuuki_DataHandle.get_log(name)
|
result = {"status": 200, "result": query_result}
|
||||||
else:
|
else:
|
||||||
result = Yuuki_DataHandle.get_all_logs()
|
result = {"status": 401}
|
||||||
return Response(json.dumps(result), mimetype='application/json')
|
return Response(json.dumps(result), mimetype='application/json')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|
16
libs/webadmin/static/js/events.js
Normal file
16
libs/webadmin/static/js/events.js
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
$(function () {
|
||||||
|
$.ajax({
|
||||||
|
url: "/api",
|
||||||
|
type: "GET",
|
||||||
|
data: {
|
||||||
|
user_name: $("#user_name").val()
|
||||||
|
},
|
||||||
|
error: function(xhr) {
|
||||||
|
alert("Something was wrong.");
|
||||||
|
},
|
||||||
|
success: function(response) {
|
||||||
|
$("#msg_user_name").html(response);
|
||||||
|
$("#msg_user_name").fadeIn();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
|
@ -13,7 +13,7 @@
|
||||||
if (window.location.pathname === p_key)
|
if (window.location.pathname === p_key)
|
||||||
nav_list += "<a class=\"nav-link active\" href=\"" + p_key + "\">" + page_list[p_key] + "</a>";
|
nav_list += "<a class=\"nav-link active\" href=\"" + p_key + "\">" + page_list[p_key] + "</a>";
|
||||||
else
|
else
|
||||||
nav_list += "<a class=\"nav-link js-lookforward\" data-transition-enter=\"slideleft\" href=\"" + p_key + "\">" + page_list[p_key] + "</a>";
|
nav_list += "<a class=\"nav-link\" data-transition-enter=\"slideleft\" href=\"" + p_key + "\">" + page_list[p_key] + "</a>";
|
||||||
}
|
}
|
||||||
var html_text =
|
var html_text =
|
||||||
"<nav class=\"navbar navbar-expand-md navbar-dark fixed-top bg-dark\">" +
|
"<nav class=\"navbar navbar-expand-md navbar-dark fixed-top bg-dark\">" +
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
<!-- Bootstrap CSS -->
|
<!-- Bootstrap CSS -->
|
||||||
{{ bootstrap.load_css() }}
|
{{ bootstrap.load_css() }}
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='main.css') }}"/>
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}"/>
|
||||||
|
|
||||||
<title>Star Yuuki BOT - WebAdmin</title>
|
<title>Star Yuuki BOT - WebAdmin</title>
|
||||||
</head>
|
</head>
|
||||||
|
@ -53,7 +53,7 @@
|
||||||
<!-- Optional JavaScript -->
|
<!-- Optional JavaScript -->
|
||||||
{{ bootstrap.load_js() }}
|
{{ bootstrap.load_js() }}
|
||||||
<script src="https://cdn.jsdelivr.net/npm/js-cookie@beta/dist/js.cookie.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/js-cookie@beta/dist/js.cookie.min.js"></script>
|
||||||
<script src="{{ url_for('static', filename='verify.js') }}"></script>
|
<script src="{{ url_for('static', filename='js/verify.js') }}"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
|
@ -9,188 +9,28 @@
|
||||||
<!-- Bootstrap CSS -->
|
<!-- Bootstrap CSS -->
|
||||||
{{ bootstrap.load_css() }}
|
{{ bootstrap.load_css() }}
|
||||||
<link rel="stylesheet" href="https://unpkg.com/lookforward@0.1.1/css/lookforward.min.css">
|
<link rel="stylesheet" href="https://unpkg.com/lookforward@0.1.1/css/lookforward.min.css">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='main.css') }}"/>
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}" />
|
||||||
|
|
||||||
<title>Star Yuuki BOT - WebAdmin</title>
|
<title>Star Yuuki BOT - WebAdmin</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
{% from 'bootstrap/nav.html' import render_nav_item %}
|
{% from 'bootstrap/nav.html' import render_nav_item %}
|
||||||
|
|
||||||
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
|
<div id="header"></div>
|
||||||
<a class="navbar-brand" href="/">{{ name }} - WebAdmin</a>
|
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse"
|
|
||||||
aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
|
||||||
<ul class="navbar-nav mr-auto">
|
|
||||||
{{ render_nav_item('index') }}
|
|
||||||
</ul>
|
|
||||||
<a href="/logout">
|
|
||||||
<button class="btn btn-outline-success my-2 my-sm-0">Logout</button>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<div class="nav-scroller bg-white shadow-sm">
|
|
||||||
<nav class="nav nav-underline">
|
|
||||||
<a class="nav-link active" href="/">Dashboard</a>
|
|
||||||
<a class="nav-link js-lookforward" data-transition-enter="slideup" data-transition-leave="slidedown"
|
|
||||||
href="/groups">Groups
|
|
||||||
<span class="badge badge-pill bg-light align-text-bottom">27</span>
|
|
||||||
</a>
|
|
||||||
<a class="nav-link js-lookforward" data-transition-enter="slideup" data-transition-leave="slidedown"
|
|
||||||
href="/helpers">Helpers
|
|
||||||
<span class="badge badge-pill bg-light align-text-bottom">27</span>
|
|
||||||
</a>
|
|
||||||
<a class="nav-link js-lookforward" data-transition-enter="slideup" data-transition-leave="slidedown"
|
|
||||||
href="/settings">Settings</a>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<main role="main" class="container">
|
|
||||||
<div class="d-flex align-items-center p-3 my-3 text-white-50 bg-purple rounded shadow-sm">
|
|
||||||
<img class="mr-3" src="{{ LINE_Media_server}}/{{pictureStatus }}" alt="" width="48" height="48">
|
|
||||||
<div class="lh-100">
|
|
||||||
<h6 class="mb-0 text-white lh-100">{{ profileName }}</h6>
|
|
||||||
<small>on {{ name }} {{ version }}</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="container marketing">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-2">
|
|
||||||
<a href="#">
|
|
||||||
<svg class="bd-placeholder-img rounded-circle" width="140" height="140"
|
|
||||||
xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false"
|
|
||||||
role="img" aria-label="Placeholder: 140x140">
|
|
||||||
<title>Action</title>
|
|
||||||
<rect width="100%" height="100%" fill="#777"/>
|
|
||||||
<text x="50%" y="50%" fill="#777"
|
|
||||||
dy=".3em">140x140
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-2">
|
|
||||||
<a href="#">
|
|
||||||
<svg class="bd-placeholder-img rounded-circle" width="140" height="140"
|
|
||||||
xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false"
|
|
||||||
role="img" aria-label="Placeholder: 140x140">
|
|
||||||
<title>Action</title>
|
|
||||||
<rect width="100%" height="100%" fill="#777"/>
|
|
||||||
<text x="50%" y="50%" fill="#777"
|
|
||||||
dy=".3em">140x140
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-2">
|
|
||||||
<a href="#">
|
|
||||||
<svg class="bd-placeholder-img rounded-circle" width="140" height="140"
|
|
||||||
xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false"
|
|
||||||
role="img" aria-label="Placeholder: 140x140">
|
|
||||||
<title>Action</title>
|
|
||||||
<rect width="100%" height="100%" fill="#777"/>
|
|
||||||
<text x="50%" y="50%" fill="#777"
|
|
||||||
dy=".3em">140x140
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-2">
|
|
||||||
<a href="#">
|
|
||||||
<svg class="bd-placeholder-img rounded-circle" width="140" height="140"
|
|
||||||
xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false"
|
|
||||||
role="img" aria-label="Placeholder: 140x140">
|
|
||||||
<title>Action</title>
|
|
||||||
<rect width="100%" height="100%" fill="#777"/>
|
|
||||||
<text x="50%" y="50%" fill="#777"
|
|
||||||
dy=".3em">140x140
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-2">
|
|
||||||
<a href="#">
|
|
||||||
<svg class="bd-placeholder-img rounded-circle" width="140" height="140"
|
|
||||||
xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false"
|
|
||||||
role="img" aria-label="Placeholder: 140x140">
|
|
||||||
<title>Action</title>
|
|
||||||
<rect width="100%" height="100%" fill="#777"/>
|
|
||||||
<text x="50%" y="50%" fill="#777"
|
|
||||||
dy=".3em">140x140
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
<main role="main" class="container">
|
||||||
<div class="my-3 p-3 bg-white rounded shadow-sm">
|
<div class="my-3 p-3 bg-white rounded shadow-sm">
|
||||||
<h6 class="border-bottom border-gray pb-2 mb-0">Recent updates</h6>
|
<h6 class="border-bottom border-gray pb-2 mb-0">Recent updates</h6>
|
||||||
<div class="media text-muted pt-3">
|
<div id="events"></div>
|
||||||
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32"
|
|
||||||
xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false"
|
|
||||||
role="img" aria-label="Placeholder: 32x32">
|
|
||||||
<title>Event</title>
|
|
||||||
<rect width="100%" height="100%" fill="#007bff"/>
|
|
||||||
<text x="50%" y="50%" fill="#007bff"
|
|
||||||
dy=".3em">32x32
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
|
||||||
<strong class="d-block text-gray-dark">[Kick Event]</strong>
|
|
||||||
Yuuki
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="media text-muted pt-3">
|
|
||||||
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32"
|
|
||||||
xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false"
|
|
||||||
role="img" aria-label="Placeholder: 32x32">
|
|
||||||
<title>Event</title>
|
|
||||||
<rect width="100%" height="100%" fill="#e83e8c"/>
|
|
||||||
<text x="50%" y="50%" fill="#e83e8c"
|
|
||||||
dy=".3em">32x32
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
|
||||||
<strong class="d-block text-gray-dark">[Cancel Event]</strong>
|
|
||||||
Yuuki
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="media text-muted pt-3">
|
|
||||||
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32"
|
|
||||||
xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false"
|
|
||||||
role="img" aria-label="Placeholder: 32x32">
|
|
||||||
<title>Event</title>
|
|
||||||
<rect width="100%" height="100%" fill="#6f42c1"/>
|
|
||||||
<text x="50%" y="50%" fill="#6f42c1"
|
|
||||||
dy=".3em">32x32
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
|
||||||
<strong class="d-block text-gray-dark">[Join Event]</strong>
|
|
||||||
Yuuki
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<small class="d-block text-right mt-3">
|
|
||||||
<a href="/logs" target="_blank">All updates</a>
|
|
||||||
</small>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
</main>
|
|
||||||
|
|
||||||
<!-- Optional JavaScript -->
|
<!-- Optional JavaScript -->
|
||||||
{{ bootstrap.load_js() }}
|
{{ bootstrap.load_js() }}
|
||||||
<script src="{{ url_for('static', filename='header.js') }}"></script>
|
<script src="{{ url_for('static', filename='js/header.js') }}"></script>
|
||||||
<script src="https://unpkg.com/lookforward@0.1.1/js/lookforward.min.js"></script>
|
<script src="{{ url_for('static', filename='js/events.js') }}"></script>
|
||||||
<script>
|
|
||||||
new LookForward('.js-lookforward');
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
|
@ -9,77 +9,68 @@
|
||||||
<!-- Bootstrap CSS -->
|
<!-- Bootstrap CSS -->
|
||||||
{{ bootstrap.load_css() }}
|
{{ bootstrap.load_css() }}
|
||||||
<link rel="stylesheet" href="https://unpkg.com/lookforward@0.1.1/css/lookforward.min.css">
|
<link rel="stylesheet" href="https://unpkg.com/lookforward@0.1.1/css/lookforward.min.css">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='main.css') }}"/>
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}" />
|
||||||
|
|
||||||
<title>Star Yuuki BOT - WebAdmin</title>
|
<title>Star Yuuki BOT - WebAdmin</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
{% from 'bootstrap/nav.html' import render_nav_item %}
|
{% from 'bootstrap/nav.html' import render_nav_item %}
|
||||||
|
|
||||||
<div id="header"></div>
|
<div id="header"></div>
|
||||||
|
|
||||||
<main role="main" class="container">
|
<main role="main" class="container">
|
||||||
<div class="my-3 p-3 bg-white rounded shadow-sm">
|
<div class="my-3 p-3 bg-white rounded shadow-sm">
|
||||||
<h6 class="border-bottom border-gray pb-2 mb-0">Recent updates</h6>
|
<h6 class="border-bottom border-gray pb-2 mb-0">Recent updates</h6>
|
||||||
<div class="media text-muted pt-3">
|
<div class="media text-muted pt-3">
|
||||||
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
||||||
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
||||||
<title>Event</title>
|
<title>Event</title>
|
||||||
<rect width="100%" height="100%" fill="#007bff"/>
|
<rect width="100%" height="100%" fill="#007bff" />
|
||||||
<text x="50%" y="50%" fill="#007bff"
|
<text x="50%" y="50%" fill="#007bff" dy=".3em">32x32
|
||||||
dy=".3em">32x32
|
</text>
|
||||||
</text>
|
</svg>
|
||||||
</svg>
|
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
||||||
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
<strong class="d-block text-gray-dark">[Kick Event]</strong>
|
||||||
<strong class="d-block text-gray-dark">[Kick Event]</strong>
|
Yuuki
|
||||||
Yuuki
|
</p>
|
||||||
</p>
|
</div>
|
||||||
|
<div class="media text-muted pt-3">
|
||||||
|
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
||||||
|
<title>Event</title>
|
||||||
|
<rect width="100%" height="100%" fill="#e83e8c" />
|
||||||
|
<text x="50%" y="50%" fill="#e83e8c" dy=".3em">32x32
|
||||||
|
</text>
|
||||||
|
</svg>
|
||||||
|
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
||||||
|
<strong class="d-block text-gray-dark">[Cancel Event]</strong>
|
||||||
|
Yuuki
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="media text-muted pt-3">
|
||||||
|
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
||||||
|
<title>Event</title>
|
||||||
|
<rect width="100%" height="100%" fill="#6f42c1" />
|
||||||
|
<text x="50%" y="50%" fill="#6f42c1" dy=".3em">32x32
|
||||||
|
</text>
|
||||||
|
</svg>
|
||||||
|
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
||||||
|
<strong class="d-block text-gray-dark">[Join Event]</strong>
|
||||||
|
Yuuki
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<small class="d-block text-right mt-3">
|
||||||
|
<a href="/events">All updates</a>
|
||||||
|
</small>
|
||||||
</div>
|
</div>
|
||||||
<div class="media text-muted pt-3">
|
</main>
|
||||||
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
|
||||||
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
|
||||||
<title>Event</title>
|
|
||||||
<rect width="100%" height="100%" fill="#e83e8c"/>
|
|
||||||
<text x="50%" y="50%" fill="#e83e8c"
|
|
||||||
dy=".3em">32x32
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
|
||||||
<strong class="d-block text-gray-dark">[Cancel Event]</strong>
|
|
||||||
Yuuki
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="media text-muted pt-3">
|
|
||||||
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
|
||||||
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
|
||||||
<title>Event</title>
|
|
||||||
<rect width="100%" height="100%" fill="#6f42c1"/>
|
|
||||||
<text x="50%" y="50%" fill="#6f42c1"
|
|
||||||
dy=".3em">32x32
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
|
||||||
<strong class="d-block text-gray-dark">[Join Event]</strong>
|
|
||||||
Yuuki
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<small class="d-block text-right mt-3">
|
|
||||||
<a href="/events" target="_blank">All updates</a>
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<!-- Optional JavaScript -->
|
<!-- Optional JavaScript -->
|
||||||
{{ bootstrap.load_js() }}
|
{{ bootstrap.load_js() }}
|
||||||
<script src="{{ url_for('static', filename='header.js') }}"></script>
|
<script src="{{ url_for('static', filename='js/header.js') }}"></script>
|
||||||
<script src="https://unpkg.com/lookforward@0.1.1/js/lookforward.min.js"></script>
|
|
||||||
<script>
|
|
||||||
new LookForward('.js-lookforward');
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
|
@ -9,85 +9,76 @@
|
||||||
<!-- Bootstrap CSS -->
|
<!-- Bootstrap CSS -->
|
||||||
{{ bootstrap.load_css() }}
|
{{ bootstrap.load_css() }}
|
||||||
<link rel="stylesheet" href="https://unpkg.com/lookforward@0.1.1/css/lookforward.min.css">
|
<link rel="stylesheet" href="https://unpkg.com/lookforward@0.1.1/css/lookforward.min.css">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='main.css') }}"/>
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}" />
|
||||||
|
|
||||||
<title>Star Yuuki BOT - WebAdmin</title>
|
<title>Star Yuuki BOT - WebAdmin</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
{% from 'bootstrap/nav.html' import render_nav_item %}
|
{% from 'bootstrap/nav.html' import render_nav_item %}
|
||||||
|
|
||||||
<div id="header"></div>
|
<div id="header"></div>
|
||||||
|
|
||||||
<main role="main" class="container">
|
<main role="main" class="container">
|
||||||
<div class="d-flex align-items-center p-3 my-3 text-white-50 bg-purple rounded shadow-sm">
|
<div class="d-flex align-items-center p-3 my-3 text-white-50 bg-purple rounded shadow-sm">
|
||||||
<img class="mr-3" src="{{ LINE_Media_server}}/{{pictureStatus }}" alt="" width="48" height="48">
|
<img class="mr-3" src="{{ LINE_Media_server}}/{{pictureStatus }}" alt="" width="48" height="48">
|
||||||
<div class="lh-100">
|
<div class="lh-100">
|
||||||
<h6 class="mb-0 text-white lh-100">{{ profileName }}</h6>
|
<h6 class="mb-0 text-white lh-100">{{ profileName }}</h6>
|
||||||
<small>on {{ name }} {{ version }}</small>
|
<small>on {{ name }} {{ version }}</small>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="my-3 p-3 bg-white rounded shadow-sm">
|
<div class="my-3 p-3 bg-white rounded shadow-sm">
|
||||||
<h6 class="border-bottom border-gray pb-2 mb-0">Recent updates</h6>
|
<h6 class="border-bottom border-gray pb-2 mb-0">Recent updates</h6>
|
||||||
<div class="media text-muted pt-3">
|
<div class="media text-muted pt-3">
|
||||||
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
||||||
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
||||||
<title>Event</title>
|
<title>Event</title>
|
||||||
<rect width="100%" height="100%" fill="#007bff"/>
|
<rect width="100%" height="100%" fill="#007bff" />
|
||||||
<text x="50%" y="50%" fill="#007bff"
|
<text x="50%" y="50%" fill="#007bff" dy=".3em">32x32
|
||||||
dy=".3em">32x32
|
</text>
|
||||||
</text>
|
</svg>
|
||||||
</svg>
|
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
||||||
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
<strong class="d-block text-gray-dark">[Kick Event]</strong>
|
||||||
<strong class="d-block text-gray-dark">[Kick Event]</strong>
|
Yuuki
|
||||||
Yuuki
|
</p>
|
||||||
</p>
|
</div>
|
||||||
|
<div class="media text-muted pt-3">
|
||||||
|
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
||||||
|
<title>Event</title>
|
||||||
|
<rect width="100%" height="100%" fill="#e83e8c" />
|
||||||
|
<text x="50%" y="50%" fill="#e83e8c" dy=".3em">32x32
|
||||||
|
</text>
|
||||||
|
</svg>
|
||||||
|
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
||||||
|
<strong class="d-block text-gray-dark">[Cancel Event]</strong>
|
||||||
|
Yuuki
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="media text-muted pt-3">
|
||||||
|
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
||||||
|
<title>Event</title>
|
||||||
|
<rect width="100%" height="100%" fill="#6f42c1" />
|
||||||
|
<text x="50%" y="50%" fill="#6f42c1" dy=".3em">32x32
|
||||||
|
</text>
|
||||||
|
</svg>
|
||||||
|
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
||||||
|
<strong class="d-block text-gray-dark">[Join Event]</strong>
|
||||||
|
Yuuki
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<small class="d-block text-right mt-3">
|
||||||
|
<a href="/events">All updates</a>
|
||||||
|
</small>
|
||||||
</div>
|
</div>
|
||||||
<div class="media text-muted pt-3">
|
</main>
|
||||||
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
|
||||||
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
|
||||||
<title>Event</title>
|
|
||||||
<rect width="100%" height="100%" fill="#e83e8c"/>
|
|
||||||
<text x="50%" y="50%" fill="#e83e8c"
|
|
||||||
dy=".3em">32x32
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
|
||||||
<strong class="d-block text-gray-dark">[Cancel Event]</strong>
|
|
||||||
Yuuki
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="media text-muted pt-3">
|
|
||||||
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
|
||||||
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
|
||||||
<title>Event</title>
|
|
||||||
<rect width="100%" height="100%" fill="#6f42c1"/>
|
|
||||||
<text x="50%" y="50%" fill="#6f42c1"
|
|
||||||
dy=".3em">32x32
|
|
||||||
</text>
|
|
||||||
</svg>
|
|
||||||
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
|
||||||
<strong class="d-block text-gray-dark">[Join Event]</strong>
|
|
||||||
Yuuki
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<small class="d-block text-right mt-3">
|
|
||||||
<a href="/events" target="_blank">All updates</a>
|
|
||||||
</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<!-- Optional JavaScript -->
|
<!-- Optional JavaScript -->
|
||||||
{{ bootstrap.load_js() }}
|
{{ bootstrap.load_js() }}
|
||||||
<script src="{{ url_for('static', filename='header.js') }}"></script>
|
<script src="{{ url_for('static', filename='js/header.js') }}"></script>
|
||||||
<script src="https://unpkg.com/lookforward@0.1.1/js/lookforward.min.js"></script>
|
|
||||||
<script>
|
|
||||||
new LookForward('.js-lookforward');
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
73
libs/webadmin/templates/manage/settings.html
Normal file
73
libs/webadmin/templates/manage/settings.html
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<!-- Bootstrap CSS -->
|
||||||
|
{{ bootstrap.load_css() }}
|
||||||
|
<link rel="stylesheet" href="https://unpkg.com/lookforward@0.1.1/css/lookforward.min.css">
|
||||||
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}" />
|
||||||
|
|
||||||
|
<title>Star Yuuki BOT - WebAdmin</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
{% from 'bootstrap/nav.html' import render_nav_item %}
|
||||||
|
|
||||||
|
<div id="header"></div>
|
||||||
|
|
||||||
|
<main role="main" class="container">
|
||||||
|
<div class="my-3 p-3 bg-white rounded shadow-sm">
|
||||||
|
<h6 class="border-bottom border-gray pb-2 mb-0">Settings</h6>
|
||||||
|
<div class="media text-muted pt-3">
|
||||||
|
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
||||||
|
<title>Event</title>
|
||||||
|
<rect width="100%" height="100%" fill="#007bff" />
|
||||||
|
<text x="50%" y="50%" fill="#007bff" dy=".3em">32x32
|
||||||
|
</text>
|
||||||
|
</svg>
|
||||||
|
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
||||||
|
<strong class="d-block text-gray-dark">[Kick Event]</strong>
|
||||||
|
Yuuki
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="media text-muted pt-3">
|
||||||
|
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
||||||
|
<title>Event</title>
|
||||||
|
<rect width="100%" height="100%" fill="#e83e8c" />
|
||||||
|
<text x="50%" y="50%" fill="#e83e8c" dy=".3em">32x32
|
||||||
|
</text>
|
||||||
|
</svg>
|
||||||
|
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
||||||
|
<strong class="d-block text-gray-dark">[Cancel Event]</strong>
|
||||||
|
Yuuki
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="media text-muted pt-3">
|
||||||
|
<svg class="bd-placeholder-img mr-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: 32x32">
|
||||||
|
<title>Event</title>
|
||||||
|
<rect width="100%" height="100%" fill="#6f42c1" />
|
||||||
|
<text x="50%" y="50%" fill="#6f42c1" dy=".3em">32x32
|
||||||
|
</text>
|
||||||
|
</svg>
|
||||||
|
<p class="media-body pb-3 mb-0 small lh-125 border-bottom border-gray">
|
||||||
|
<strong class="d-block text-gray-dark">[Join Event]</strong>
|
||||||
|
Yuuki
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<!-- Optional JavaScript -->
|
||||||
|
{{ bootstrap.load_js() }}
|
||||||
|
<script src="{{ url_for('static', filename='js/header.js') }}"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
2
main.py
2
main.py
|
@ -18,7 +18,7 @@ from libs import Yuuki, Yuuki_Config
|
||||||
|
|
||||||
config = Yuuki_Config()
|
config = Yuuki_Config()
|
||||||
|
|
||||||
Console = Yuuki(config)
|
Console = Yuuki(config,1)
|
||||||
Console.cleanMyGroupInvitations()
|
Console.cleanMyGroupInvitations()
|
||||||
|
|
||||||
###########################Start!#############################
|
###########################Start!#############################
|
||||||
|
|
Loading…
Reference in a new issue