1
0
mirror of https://github.com/Daichimarukana/uwuzu.git synced 2026-06-04 19:14:41 +00:00

uwuzu v1.4.13 Funium

This commit is contained in:
Daichimarukana
2025-01-14 18:25:47 +09:00
parent a8b9ad0333
commit ed2f3513fc
11 changed files with 65 additions and 312 deletions
+1
View File
@@ -1,6 +1,7 @@
<?php
require('../db.php');
require("../function/function.php");
blockedIP($_SERVER['REMOTE_ADDR']);
if (safetext(isset($_POST['uniqid'])) && safetext(isset($_POST['userid'])) && safetext(isset($_POST['account_id']))) {
$postUniqid = safetext($_POST['uniqid']);
+16 -125
View File
@@ -1,11 +1,11 @@
<?php
require('../db.php');
require("../function/function.php");
blockedIP($_SERVER['REMOTE_ADDR']);
$serversettings_file = "../server/serversettings.ini";
$serversettings = parse_ini_file($serversettings_file, true);
require('../db.php');
// 変数の初期化
$datetime = array();
$user_name = null;
@@ -42,130 +42,21 @@ try {
$error_message[] = $e->getMessage();
}
if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] == true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,follow,admin,role,sacinfo,blocklist FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', safetext($_SESSION['userid']));
$passQuery->execute();
$res = $passQuery->fetch();
if(empty($res["userid"])){
header("Location: ../login.php");
exit;
}elseif($_SESSION['loginid'] === $res["loginid"] && $_SESSION['userid'] == $res["userid"]){
// セッションに値をセット
$userid = safetext($res['userid']); // セッションに格納されている値をそのままセット
$username = safetext($res['username']); // セッションに格納されている値をそのままセット
$loginid = safetext($res["loginid"]);
$role = safetext($res["role"]);
$sacinfo = safetext($res["sacinfo"]);
$myblocklist = safetext($res["blocklist"]);
$myfollowlist = safetext($res["follow"]);
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['username'] = $username;
$_SESSION['loginid'] = $res["loginid"];
setcookie('userid', $userid, [
'expires' => time() + 60 * 60 * 24 * 28,
'path' => '/',
'samesite' => 'lax',
'secure' => true,
'httponly' => true,
]);
setcookie('username', $username,[
'expires' => time() + 60 * 60 * 24 * 28,
'path' => '/',
'samesite' => 'lax',
'secure' => true,
'httponly' => true,
]);
setcookie('loginid', $res["loginid"],[
'expires' => time() + 60 * 60 * 24 * 28,
'path' => '/',
'samesite' => 'lax',
'secure' => true,
'httponly' => true,
]);
setcookie('admin_login', true,[
'expires' => time() + 60 * 60 * 24 * 28,
'path' => '/',
'samesite' => 'lax',
'secure' => true,
'httponly' => true,
]);
}else{
header("Location: ../login.php");
exit;
}
} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true) {
$passQuery = $pdo->prepare("SELECT username,userid,loginid,follow,admin,role,sacinfo,blocklist FROM account WHERE userid = :userid");
$passQuery->bindValue(':userid', safetext($_COOKIE['userid']));
$passQuery->execute();
$res = $passQuery->fetch();
if(empty($res["userid"])){
header("Location: ../login.php");
exit;
}elseif($_COOKIE['loginid'] === $res["loginid"] && $_COOKIE['userid'] == $res["userid"]){
// セッションに値をセット
$userid = safetext($res['userid']); // クッキーから取得した値をセット
$username = safetext($res['username']); // クッキーから取得した値をセット
$loginid = safetext($res["loginid"]);
$role = safetext($res["role"]);
$sacinfo = safetext($res["sacinfo"]);
$myblocklist = safetext($res["blocklist"]);
$myfollowlist = safetext($res["follow"]);
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['username'] = $username;
$_SESSION['loginid'] = $res["loginid"];
setcookie('userid', $userid,[
'expires' => time() + 60 * 60 * 24 * 28,
'path' => '/',
'samesite' => 'lax',
'secure' => true,
'httponly' => true,
]);
setcookie('username', $username,[
'expires' => time() + 60 * 60 * 24 * 28,
'path' => '/',
'samesite' => 'lax',
'secure' => true,
'httponly' => true,
]);
setcookie('loginid', $res["loginid"],[
'expires' => time() + 60 * 60 * 24 * 28,
'path' => '/',
'samesite' => 'lax',
'secure' => true,
'httponly' => true,
]);
setcookie('admin_login', true,[
'expires' => time() + 60 * 60 * 24 * 28,
'path' => '/',
'samesite' => 'lax',
'secure' => true,
'httponly' => true,
]);
}else{
header("Location: ../login.php");
exit;
}
} else {
// ログインが許可されていない場合、ログインページにリダイレクト
header("Location: ../login.php");
exit;
}
if(empty($userid)){
header("Location: ../login.php");
exit;
}
if(empty($username)){
header("Location: ../login.php");
//ログイン認証---------------------------------------------------
blockedIP($_SERVER['REMOTE_ADDR']);
$is_login = uwuzuUserLogin($_SESSION, $_COOKIE, $_SERVER['REMOTE_ADDR'], "user");
if($is_login === false){
header("Location: ../index.php");
exit;
}else{
$userid = safetext($is_login['userid']);
$username = safetext($is_login['username']);
$loginid = safetext($is_login["loginid"]);
$role = safetext($is_login["role"]);
$sacinfo = safetext($is_login["sacinfo"]);
$myblocklist = safetext($is_login["blocklist"]);
$myfollowlist = safetext($is_login["follow"]);
$is_Admin = safetext($is_login["admin"]);
}
$notiQuery = $pdo->prepare("SELECT COUNT(*) as notification_count FROM notification WHERE touserid = :userid AND userchk = 'none'");
$notiQuery->bindValue(':userid', $userid);
+7 -42
View File
@@ -61,49 +61,14 @@ try {
$error_message[] = $e->getMessage();
}
if(isset($_SESSION['admin_login']) && $_SESSION['admin_login'] === true && isset($_COOKIE['loginid']) && isset($_SESSION['userid'])) {
$options = array(
// SQL実行失敗時に例外をスルー
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// デフォルトフェッチモードを連想配列形式に設定
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
// バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減)
// SELECTで得た結果に対してもrowCountメソッドを使えるようにする
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
);
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);
$acck = $dbh->prepare("SELECT userid, loginid FROM account WHERE userid = :userid");
$acck->bindValue(':userid', $_SESSION['userid']);
$acck->execute();
$acck_data = $acck->fetch();
if(!empty($acck_data)){
if($_COOKIE['loginid'] === $acck_data["loginid"] && $_SESSION['userid'] === $acck_data["userid"] ){
header("Location: home/index.php");
exit;
}
}
} elseif (isset($_COOKIE['admin_login']) && $_COOKIE['admin_login'] == true && isset($_COOKIE['loginid']) && isset($_COOKIE['userid'])) {
$options = array(
// SQL実行失敗時に例外をスルー
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// デフォルトフェッチモードを連想配列形式に設定
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
// バッファードクエリを使う(一度に結果セットを全て取得し、サーバー負荷を軽減)
// SELECTで得た結果に対してもrowCountメソッドを使えるようにする
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
);
$dbh = new PDO('mysql:charset=utf8mb4;dbname='.DB_NAME.';host='.DB_HOST , DB_USER, DB_PASS, $option);
$acck = $dbh->prepare("SELECT userid, loginid FROM account WHERE userid = :userid");
$acck->bindValue(':userid', $_COOKIE['userid']);
$acck->execute();
$acck_data = $acck->fetch();
if(!empty($acck_data)){
if($_COOKIE['loginid'] === $acck_data["loginid"] && $_COOKIE['userid'] === $acck_data["userid"] ){
header("Location: home/index.php");
exit;
}
}
//ログイン認証---------------------------------------------------
blockedIP($_SERVER['REMOTE_ADDR']);
$is_login = uwuzuUserLogin($_SESSION, $_COOKIE, $_SERVER['REMOTE_ADDR'], "user");
if(!($is_login === false)){
header("Location: /home/");
exit;
}
//-------------------------------------------------------------
if( !empty($_POST['btn_submit']) ) {
$useragent = safetext($_SERVER['HTTP_USER_AGENT']);
+12 -14
View File
@@ -40,22 +40,20 @@ function uwuzuUserLogin($session, $cookie, $ip_addr, $operation_permission = "us
if(isset($session['loginid'])){
$loginid = safetext($session['loginid']);
if(isset($session['loginkey'])) {
$loginkey = safetext($session['loginkey']);
} else {
$loginkey = null;
}
} elseif (isset($cookie['loginid'])){
}else if(isset($cookie['loginid'])){
$loginid = safetext($cookie['loginid']);
if(isset($cookie['loginkey'])) {
$loginkey = safetext($cookie['loginkey']);
} else {
$loginkey = null;
}
} else {
return false;
}
if(isset($session['loginkey'])) {
$loginkey = safetext($session['loginkey']);
}else if(isset($cookie['loginkey'])){
$loginkey = safetext($cookie['loginkey']);
} else {
$loginkey = null;
}
$loginQuery = $pdo->prepare("SELECT * FROM account WHERE loginid = :loginid");
$loginQuery->bindValue(':loginid', $loginid);
$loginQuery->execute();
@@ -95,9 +93,7 @@ function uwuzuUserLogin($session, $cookie, $ip_addr, $operation_permission = "us
}else{
$is_login = false;
}
}
if(isset($cookie['userid']) && isset($cookie['username'])){
}else if(isset($cookie['userid']) && isset($cookie['username'])){
if($cookie['userid'] === $loginResponse["userid"] && $cookie['username'] === $loginResponse["username"]){
if($operation_permission === "admin"){
if($loginResponse["admin"] == "yes"){
@@ -111,6 +107,8 @@ function uwuzuUserLogin($session, $cookie, $ip_addr, $operation_permission = "us
}else{
$is_login = false;
}
}else{
$is_login = false;
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 84 KiB

-3
View File
@@ -163,10 +163,7 @@ if( !empty($_POST['btn_submit']) ) {
if($row["userid"] == $userid){
if(uwuzu_password_verify($password,$row["password"])){
if(empty($row["authcode"])){
$_SESSION['admin_login'] = true;
$_SESSION['userid'] = $userid;
$_SESSION['loginid'] = $row["loginid"];
$_SESSION['form_data'] = array();//フォーム初期化
// リダイレクト先のURLへ転送する
+1 -1
View File
@@ -27,7 +27,7 @@
<a href="/rule/serverabout" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/info.svg#info"></use></svg><div>サーバー情報</div></a>
<a href="/notice" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/addnotice.svg#addnotice"></use></svg><div>お知らせ</div></a>
<?php if($res["admin"] === "yes"){?>
<?php if($is_Admin === "yes"){?>
<a href="/settings_admin/addemoji_admin" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/addemoji.svg#addemoji"></use></svg><div>絵文字登録</div></a>
<a href="/notice/addnotice" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/addnotice.svg#addnotice"></use></svg><div>お知らせ配信</div></a>
<a href="/settings_admin/serveradmin" class="menubutton"><svg><use xlink:href="../img/sysimage/menuicon/server.svg#server"></use></svg><div>サーバー設定</div></a>
+10 -8
View File
@@ -48,13 +48,15 @@
</div>
<div class="page" id="page4" style="display:none;">
<h2>追記について</h2>
<p>「追記」はユーズに付け足したいことを書き加えることができる機能です!<br>
追記を使うことで間違えてしまったことの訂正、後日談や新たな情報を書き加えることが可能です。<br>
<br>
もちろん、それ以外の用途で使用してもOKですよ!
</p>
<h2>ユーズを知ってみる!</h2>
<p>先ほど紹介したユーズにできる機能を紹介します!</p>
<img src="../img/tutorial_image/image2.png">
<p>- いいね ユーズに「いいね!」できます!<br>
- リユーズ ユーズを拡散したり引用してユーズできます!<br>
- 返信 ユーズに返信をできます!もちろん返信への返信も可能です<br>
- ブックマーク ユーズを自分のブックマークに登録できます!<br>
- 追記 ユーズに追記を行えます!後日談やミスの訂正にどうぞ!<br>
- その他 シェアやユーズの削除などその他の操作を行えます!</p>
<div class="btm_area">
<div class="iro_btn backcolor" id="back">戻る</div>
<div class="iro_btn" id="next">次へ</div>
@@ -63,9 +65,9 @@
<div class="page" id="page5" style="display:none;">
<h2>タイムラインの仕組み</h2>
<p>uwuzuには主に2つのタイムラインがあります!<br>
<p>uwuzuには主に3つのタイムラインがあります!<br>
uwuzuの「ホーム」を開いてデフォルトで開かれるタイムラインは「ローカル」と書かれています。<br>
そして、タイムライン上部のメニューから「フォロー」というタイムラインも見ることが可能です。<br>
そして、タイムライン上部のメニューから「フォロー」というタイムラインや「おすすめ」も見ることが可能です。<br>
それぞれの機能はこんな感じ!<br>
<br>
- おすすめ おすすめタイムラインの略称で、人気のユーズや自分が多くいいねしているユーザーのユーズなどが表示されます!<br>
+2 -2
View File
@@ -1,4 +1,4 @@
uwuzu
1.4.12
2025/01/12
1.4.13
2025/01/14
daichimarukana,putonfps
+8
View File
@@ -1,6 +1,13 @@
## リリースノートだぜぇぇぇぇぇぇい!!!!!!!
ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...)
## Version 1.4.13 (Funium)
2025/01/14
fix: 正しい認証情報があるのにもかかわらずログアウトされてしまう問題を修正しました。
fix: 脆弱性を修正しました。
fix: 管理者アカウントでスマホ向けメニューを開いた際にエラーが発生してしまう問題を修正しました。
chg: チュートリアルを改良しました!
## Version 1.4.12 (Funium)
2025/01/12
chg: ログイン認証の仕組みを大幅に変更しました。
@@ -29,6 +36,7 @@ new: IPブロック機能を実装しました!
- datetime(datetime):指定なし:記録日時
また、このブロック機能ではIPアドレスは暗号化されずに保存されます。
プライバシーデータの管理にはご注意ください。
uwuzu_database.sqlは更新済みです。
## Version 1.4.11 (Funium)
2024/12/29
+8 -117
View File
@@ -1,127 +1,18 @@
{
"software": "uwuzu",
"version": "1.4.12",
"release_date": "2025/01/12",
"release_notes": "このアップデートではIPブロックをはじめとしたモデレーション機能の強化及びバグの修正が含まれます。",
"notices": "アップデートの前にデータベース構造の更新が必要です。また、データのバックアップを行うことをおすすめします!",
"version": "1.4.13",
"release_date": "2025/01/14",
"release_notes": "このアップデートでは管理者向けメニューのバグ修正と脆弱性の修正が含まれます。",
"notices": "アップデートの前にデータのバックアップを行うことをおすすめします!",
"files": {
"overwrite": [
"/.well-known/host-meta/index.php",
"/.well-known/nodeinfo/index.php",
"/.well-known/webfinger/index.php",
"/abi/addabi.php",
"/actor/index.php",
"/admin/addadmin.php",
"/admin/index.php",
"/admin/setup_db_php.php",
"/admin/setup_uwuzu_db.php",
"/admin/success.php",
"/api/favorite/change.php",
"/api/favorite/get.php",
"/api/me/index.php",
"/api/ueuse/create.php",
"/api/ueuse/delete.php",
"/api/ueuse/get.php",
"/api/ueuse/index.php",
"/api/ueuse/mentions.php",
"/api/ueuse/replies.php",
"/api/ueuse/search.php",
"/api/users/follow.php",
"/api/users/index.php",
"/api/users/unfollow.php",
"/api/v1/instance.php",
"/api/bot-api.php",
"/api/migration-api.php",
"/api/serverinfo-api.php",
"/bookmark/bookmark.php",
"/bookmark/index.php",
"/css/home.css",
"/delete/delete.php",
"/emoji/index.php",
"/errorpage/httperror.php",
"/errorpage/serverstop.php",
"/favorite/favorite.php",
"/function/function.php",
"/function/reuse.php",
"/home/index.php",
"/js/nsfw_event.js",
"/js/unsupported.js",
"/logout/index.php",
"/migration/index.php",
"/nextpage/bookmark.php",
"/nextpage/emojiview.php",
"/nextpage/foryoupage.php",
"/nextpage/ftlpage.php",
"/nextpage/newueuse_chk.php",
"/nextpage/nextpage.php",
"/nextpage/notification.php",
"/nextpage/searchpage.php",
"/nextpage/ueusepage.php",
"/nextpage/userlikepage.php",
"/nextpage/usermediapage.php",
"/nextpage/userpage.php",
"/nodeinfo/2.1/index.php",
"/notice/addnotice.php",
"/notice/index.php",
"/notification/index.php",
"/others/account_migration.php",
"/others/account_migration_done.php",
"/others/cache_clear.php",
"/others/index.php",
"/others/token.php",
"/passrecovery/badrecovery.php",
"/passrecovery/donerecovery.php",
"/passrecovery/index.php",
"/passrecovery/startrecovery.php",
"/require/leftbox.php",
"/rule/privacypolicy.php",
"/rule/releasenotes.php",
"/rule/serverabout.php",
"/rule/terms.php",
"/rule/uwuzuabout.php",
"/search/index.php",
"/search/opensearch.php",
"/settings/addauthcode.php",
"/settings/index.php",
"/settings/success.php",
"/settings_admin/api/code_delete.php",
"/settings_admin/api/update_query.php",
"/settings_admin/actionlog_admin.php",
"/settings_admin/ad_admin.php",
"/settings_admin/addemoji_admin.php",
"/settings_admin/codeadmin.php",
"/settings_admin/customize_admin.php",
"/settings_admin/ipblock_admin.php",
"/settings_admin/maintenance_admin.php",
"/settings_admin/moderation_admin.php",
"/settings_admin/overview_admin.php",
"/settings_admin/plugin_admin.php",
"/settings_admin/role_admin.php",
"/settings_admin/serveradmin.php",
"/settings_admin/settings_left_menu.php",
"/settings_admin/update_admin.php",
"/settings_admin/useradmin.php",
"/settings_admin/userinfo.php",
"/ueuse/index.php",
"/ueuse/activity/index.php",
"/user/followers/index.php",
"/user/following/index.php",
"/user/inbox/index.php",
"/user/outbox/index.php",
"/user/index.php",
"/user/report.php",
"/user/success.php",
"/addauthcode.php",
"/authcodechk.php",
"/authlogin.php",
"/img/tutorial_image/image2.png",
"/require/botbox.php",
"/require/tutorial.php",
"/check.php",
"/index.php",
"/login.php",
"/new.php",
"/new_select.php",
"/success.php",
"/unsupported.php",
"/sw.js",
"/server/uwuzuabout.txt",
"/server/uwuzuinfo.txt",
"/server/uwuzurelease.txt"