Skip to content

Commit 7f1380f

Browse files
committed
管理者ログイン、Misskeyにノート、続きを描くの各リンクをGETからPOSTへ。v1テンプレート互換設定項目追加。
1 parent 0f3594c commit 7f1380f

9 files changed

Lines changed: 91 additions & 11 deletions

File tree

petitnote/config.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,15 @@
627627
$fetch_articles_to_skip = false;
628628
// $fetch_articles_to_skip = true;
629629

630+
//セキュリティを犠牲にして古いバージョン1用のテンプレートを使用する
631+
// する: true しない: false
632+
633+
// この設定項目は互換性のためだけに存在しています。
634+
// この設定項目が最初から存在している場合はすでに対応テンプレートになっているため、設定を変更する必要はありません。
635+
636+
// $enable_v1_legacy_template_unsafe_get_login = true;
637+
$enable_v1_legacy_template_unsafe_get_login = false;
638+
630639
// ペイント画面の$pwdの暗号化
631640

632641
define("CRYPT_PASS","v25Xc9nZ82a5JPT");//暗号鍵初期値

petitnote/functions.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,13 @@ function is_adminpass(?string $pwd): bool {
158158
}
159159

160160
function admin_in(): void {
161-
global $boardname,$use_diary,$petit_lot,$petit_ver,$skindir,$en,$latest_var;
161+
global $boardname,$use_diary,$petit_lot,$petit_ver,$skindir,$en,$latest_var,$enable_v1_legacy_template_unsafe_get_login;
162+
163+
if(!$enable_v1_legacy_template_unsafe_get_login &&
164+
$_SERVER["REQUEST_METHOD"] != "POST")
165+
{
166+
error("失敗しました。");
167+
}
162168

163169
//禁止ホストをチェック
164170
check_badhost();

petitnote/index.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
//https://paintbbs.sakura.ne.jp/
44
//1スレッド1ログファイル形式のスレッド式画像掲示板
55

6-
$petit_ver='v1.236.1';
6+
$petit_ver='v2.0.0';
77
$petit_lot='lot.20260613';
88

99
$lang = ($http_langs = $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? '')
@@ -131,6 +131,7 @@
131131
$fetch_articles_to_skip = $fetch_articles_to_skip ?? true;
132132
$all_hide_painttime = $all_hide_painttime ?? false;
133133
$hide_userid = $hide_userid ?? false;
134+
$enable_v1_legacy_template_unsafe_get_login = $enable_v1_legacy_template_unsafe_get_login ?? false;
134135
$mode = (string)filter_input_data('POST','mode');
135136
$mode = $mode ?: (string)filter_input_data('GET','mode');
136137
$resno=(int)filter_input_data('GET','resno',FILTER_VALIDATE_INT);
@@ -1131,7 +1132,7 @@ function paintcom(): void {
11311132
function to_continue(): void {
11321133

11331134
global $boardname,$use_diary,$set_nsfw,$skindir,$en,$password_require_to_continue;
1134-
global $use_paintbbs_neo,$use_chickenpaint,$use_klecs,$use_tegaki,$use_axnos,$petit_lot,$elapsed_days,$max_res;
1135+
global $use_paintbbs_neo,$use_chickenpaint,$use_klecs,$use_tegaki,$use_axnos,$petit_lot,$elapsed_days,$max_res,$enable_v1_legacy_template_unsafe_get_login;
11351136

11361137
$is_badhost=is_badhost();//テンプレートの互換性のため変数名が必要
11371138
if($is_badhost){
@@ -1143,8 +1144,13 @@ function to_continue(): void {
11431144
$appc=(string)filter_input_data('COOKIE','appc');
11441145
$pwdc=(string)filter_input_data('COOKIE','pwdc');
11451146

1146-
$no = (string)filter_input_data('GET', 'no',FILTER_VALIDATE_INT);
1147-
$id = (string)filter_input_data('GET', 'id');//intの範囲外
1147+
$id = t(filter_input_data('POST','id'));//intの範囲外
1148+
$no = t(filter_input_data('POST','no',FILTER_VALIDATE_INT));
1149+
//互換設定時はgetでもログインできるようにする
1150+
if($enable_v1_legacy_template_unsafe_get_login){
1151+
$id = $id ?: t(filter_input_data('GET','id'));//intの範囲外
1152+
$no = $no ?: t(filter_input_data('GET','no',FILTER_VALIDATE_INT));
1153+
}
11481154

11491155
$adminpost = adminpost_valid();
11501156
session_sta();

petitnote/misskey_note.inc.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class misskey_note{
99
//投稿済みの記事をMisskeyにノートするための前処理
1010
public static function before_misskey_note (): void {
1111

12-
global $boardname,$home,$petit_ver,$petit_lot,$skindir,$set_nsfw,$en,$deny_all_posts;
12+
global $boardname,$home,$petit_ver,$petit_lot,$skindir,$set_nsfw,$en,$deny_all_posts,$enable_v1_legacy_template_unsafe_get_login;
1313
//管理者判定処理
1414
session_sta();
1515
aikotoba_required_to_view(true);
@@ -19,9 +19,12 @@ public static function before_misskey_note (): void {
1919

2020
$pwdc=(string)filter_input_data('COOKIE','pwdc');
2121
$id = t(filter_input_data('POST','id'));//intの範囲外
22-
$id = $id ?: t(filter_input_data('GET','id'));//intの範囲外
2322
$no = t(filter_input_data('POST','no',FILTER_VALIDATE_INT));
24-
$no = $no ?: t(filter_input_data('GET','no',FILTER_VALIDATE_INT));
23+
//互換設定時はgetでもログインできるようにする
24+
if($enable_v1_legacy_template_unsafe_get_login){
25+
$id = $id ?: t(filter_input_data('GET','id'));//intの範囲外
26+
$no = $no ?: t(filter_input_data('GET','no',FILTER_VALIDATE_INT));
27+
}
2528
$userdel=isset($_SESSION['userdel'])&&($_SESSION['userdel']==='userdel_mode');
2629
$resmode = false;//使っていない
2730
$page= $_SESSION['current_page_context']["page"] ?? 0;

petitnote/template/basic/index.css

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ a:hover {
175175
color: var(--a-hover-color);
176176
}
177177

178+
178179
/* 見出し */
179180
h1 {
180181
font-size: 26px;
@@ -834,3 +835,16 @@ div#error_message_beforedelete:empty,
834835
div#error_message_aikotobaform:empty {
835836
display: none;
836837
}
838+
839+
/* リンクでPOST */
840+
.ref-target-do-submission{
841+
cursor: pointer;
842+
/* リンクのaタグと同じ見た目になるように装飾 */
843+
text-decoration: underline;
844+
color: var(--a-color);
845+
}
846+
.ref-target-do-submission:hover{
847+
/* リンクのaタグと同じ見た目になるように装飾 */
848+
text-decoration: none;
849+
color: var(--a-hover-color);
850+
}

petitnote/template/basic/js/common.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,48 @@ window.addEventListener("pageshow", () => {
347347
});
348348
});
349349

350+
/**
351+
* データセットでPOSTして表示を切り替える
352+
*/
353+
354+
document.addEventListener("click", (e) => {
355+
const target = e.target;
356+
if (!target) {
357+
return;
358+
}
359+
/** @type {HTMLElement|null}**/
360+
const trigger =
361+
target instanceof HTMLElement
362+
? target.closest(".ref-target-do-submission")
363+
: null;
364+
if (!trigger) return;
365+
366+
const form = document.createElement("form");
367+
form.method = "POST";
368+
form.action = "./";
369+
form.target = trigger.dataset.target ? "_blank" : "_self";
370+
371+
/**
372+
* @param {string} name
373+
* @param {string} value
374+
*/
375+
const append = (name, value) => {
376+
const i = document.createElement("input");
377+
i.type = "hidden";
378+
i.name = name;
379+
i.value = value || "";
380+
form.appendChild(i);
381+
};
382+
383+
append("mode", trigger.dataset.mode ?? "");
384+
append("no", trigger.dataset.no ?? "");
385+
append("id", trigger.dataset.id ?? "");
386+
387+
document.body.appendChild(form);
388+
form.submit();
389+
document.body.removeChild(form);
390+
});
391+
350392
/**
351393
* スクロールすると出てくるトップに戻るボタン
352394
*/
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
<?php $is_badhost = $is_badhost ?? false; ?>
2-
[<a href="<?= h($home) ?>">HOME</a><?php if (!$is_badhost): ?> / <a href="./?mode=adminin"><?php if ($en): ?>Admin<?php else: ?>管理<?php endif; ?></a><?php endif; ?>]
2+
[<a href="<?= h($home) ?>">HOME</a><?php if (!$is_badhost): ?> / <span class="ref-target-do-submission" data-mode="adminin"><?php if ($en): ?>Admin<?php else: ?>管理<?php endif; ?></span><?php endif; ?>]

petitnote/template/basic/parts/catalog_images_loop.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<?php if($res['img']):?>
1010

1111
<?php if($misskey_note):?>
12-
<a href="./?mode=before_misskey_note&no=<?= h($res['no'])?>&id=<?=h($res['time'])?>" target="_blank" rel="nofollow noopener">
12+
<a class="ref-target-do-submission" data-mode="before_misskey_note" data-no="<?= h($res['no'])?>" data-id="<?=h($res['time'])?>" data-target="_blank">
1313
<?php else:?>
1414
<a href="./?resno=<?=h($res['no'])?>&resid=<?=h($res['first_posted_time'] ?? '')?>" target="_blank" rel="noopener">
1515
<?php endif;?>

petitnote/template/basic/parts/threads_loop.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ <h3 class="imginfo_wrap">
9090
<?php if($res['continue']||$res['anime']):?>
9191
<div class="imginfo_wrap">
9292
<?php if($res['continue'] && $aikotoba && $use_paint):?>
93-
<span><a href="?mode=to_continue&id=<?=h($res['time'])?>&no=<?=h($res['no'])?>"><?php if($en):?>Continue<?php else:?>続きを描く<?php endif;?></a></span>
93+
<span><span class="ref-target-do-submission" data-mode="to_continue" data-id="<?=h($res['time'])?>" data-no="<?=h($res['no'])?>"><?php if($en):?>Continue<?php else:?>続きを描く<?php endif;?></span></span>
9494
<?php endif;?>
9595
<?php if($res['anime']):?>
9696
<span><a href="?mode=pchview&id=<?=h($res['first_posted_time'])?>&no=<?=h($res['no'])?>" target="_blank" rel="noopener"><?php if($en):?>Animation<?php else:?>動画<?php endif;?></a></span>

0 commit comments

Comments
 (0)