GithubHelp home page GithubHelp logo

prefkarafuto / ex0ch Goto Github PK

View Code? Open in Web Editor NEW
45.0 2.0 8.0 2.05 MB

EXぜろちゃんねる ー ぜろちゃんねるプラスに便利な機能を追加していくプロジェクト

Home Page: https://prefkarafuto.github.io/ExZeroChannel/

License: Other

Perl 96.25% CSS 0.42% JavaScript 0.07% HTML 0.03% Shell 0.07% PHP 3.13% Dockerfile 0.04%
bbs perl php zeroch html

ex0ch's Introduction

EXぜろちゃんねる

開発が凍結された「ぜろちゃんねるプラス」を有志で開発し、便利な機能を追加していくプロジェクトです。

バグ報告・機能要望・その他サポート用のDiscordはこちら
https://discord.gg/jXCUpTZgbE

今後の開発予定機能

  • 過去ログ周りを整備
  • タイムラインの実装
  • 検索関連をJSに
  • read.html
  • スクリプトをPHPで書き換え
  • サーバー間でのデータ共有(掲示板連合)
  • ログのDB化

お知らせ

レポジトリをリネームしました。新しいレポジトリ名は「ex0ch」です。

プラグインの互換性について

Shift_JISからUTF-8への書き換えに伴い、旧来の0ch/0ch+用プラグインはそのままでは使用できません。
プラグインファイルの文字コード及びモジュール名等を変換の上、各自utf8プラグマを付ける、openにcp932を指定する等適宜対応させる必要がありますので注意してください。
0.8.x以降では事故防止のため旧プラグインはそのままでは読み込まないようになっています。
読み込ませたい場合は、0ch_XXX.plとなっているファイル名を0ch_XXX_utf8.plとしてください。


上記はPerl版(v0.9.3)までの内容です。PHP版(予定)では変更される場合があります。

諸注意

  • 本プロジェクトは、あくまで一般ユーザ向けとして0ch+の開発引き継ぎ・機能向上等を図るものです。
  • v0.8.x以降の開発に関して0.7.5までの開発陣は一切関わっておりません。0.8/0.9系列の不具合や機能面などに関する問い合わせを旧開発スレで行わないようにお願いいたします。
  • 一般的な2ch-likeBBSスクリプトとしての機能開発に障る行為や、違法・悪質な又は趣旨より著しく逸脱するコードの埋め込みは、これを固く禁じます。
  • dev版は開発中のものであり、非常に不安定です。どうしても使いたい場合は人柱になる覚悟で使ってください。
    機能が追加されたり削除されたり、仕様が変更されたり元に戻ったりしています。常に書き込みができる状態とは限りません。

2023/1/14 PrefKarafuto


testフォルダのディレクトリ構成

  • test/ - ぜろちゃんねるプラス動作ディレクトリ
    • *.cgi - 基本動作用CGI
    • datas/ - 初期データ・固定データ格納用
      | + 1000.txt
      | + 2000000000.dat
      | :
    • info/ | + .auth/ - 認証情報保存ディレクトリ
      | + .ninpocho/ - 忍法帖保存ディレクトリ
      | + .session/ - セッション情報保存ディレクトリ | + IP_List/ - IPリスト保存ディレクトリ
    • module/
      | + *.pl - ぜろちゃんねるモジュール
    • admin/
      | + *.pl - 管理CGI用モジュール
    • plugin/
      | + 0ch_*.pl - プラグインスクリプト
    • perllib/
      + * - ぜろちゃんねるプラスに必要なパッケージ

Special Thanks

精神衰弱 ◆kwSzvOHE氏
windyakin ◆windyaking氏

ex0ch's People

Contributors

ematojp avatar goodpotatosystems avatar koushin-ru avatar naka2355 avatar nikumo avatar prefkarafuto avatar pyu224 avatar rumakote avatar stat-tools avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ex0ch's Issues

リリースサイクルについて

リリースはどのタイミングで行いますか?
機能全てを作り切ってからはさすがに時間がかかりますし、重要な機能を1つ実装したらその都度リリースしてフィードバックをお願いするのもアリかと思います。

メール欄は廃止してコマンド専用にするのはどうか

これには賛否あると思いますがプライバシー保護、誤爆防止、利用者の数を鑑みると廃止したほうがいいのではないかと思います。
互換性とsageなどに利用することがある為完全廃止はまず無理だと思いますが、特定のコマンド以外はプラグインも含め全ての処理が終わった後、メール欄は空に置き換えてもいいかもしれません。
その場合は置き換えると不都合な文字列を正規表現で除外できる仕組みにしていただけると助かります。

noidについての改善提案

!noidについてなのですが現状導入すると荒らしや自演に使われてしまうという問題があります。
そこで提案なのですが、管理画面で指定のレベル以上のみID無しになれるという設定を付けられるようにするのはどうでしょうか。
それだけだと完全には防げないとは思いますが、荒らしの忍法帖を焼けばしばらくはIDなしで自演できなくなるのでマシになると思います。

クラウドフレアに対応

クラウドフレアを使用している場合、IPアドレスの環境変数を従来の$ENV{REMOTE_ADDR}から$ENV{HTTP_CF_CONNECTING_IP}を見るように変更

三男掲示板の機能をNew0ch+に統合する

三男掲示板のソースコード公開&改変再配布自由化により、多くの機能が開放されました。
これらを再開発側に統合していくにあたって、方向性を定めたいと思います。
新機能の多くはプラグインとして1ファイルにまとめられており、適宜分散配置していく必要があろうかと思います。

管理画面からのレス検索・削除

https://koushin.xyz/test/read.cgi/evil/1553442567/
より、以下のコードが参考になると思います。
A:http://archive.vn/KS9MD
B:http://archive.vn/kEnez
C:http://archive.vn/ZbGRZ
レスより
Aは既存のスクリプトに追記したもの
Bは新規に作成したスクリプトで、Aで使うためのサブルーチンがあります
Cは全板で削除するためにbalrogs.plを書き換えたスクリプトです
とのことです

2ch旧仕様の削除

2chのものを使ったDNSBL関係について、これは現在では使用できないため、削除しようと思いますがどうでしょうか

ワッチョイのIPv6対応

現在IPv6が増えていて今のワッチョイのままだとアンタダレだらけになってしまうので対応する必要があると思います。

Ver0.8.0正式リリースに向けて

0.8.0正式リリースに向けて、機能追加は一区切りとし、デバッグ作業を中心に動こうと思いますがどうでしょうか

post_service.pl内の忍法帖とコマンドを分離するのはどうか

タイトルの通りpost_service.pl内の忍法帖とコマンドをninpocho.plとcommands.plに分離するのはどうでしょうか。
ここは各人で仕様を変えたりしているのが多い場所ですので、post_service.pl内にあると更新のたびに該当の部分を探してそこを変更という作業がなかなか面倒です。
それに分離しておけば他人が配布した忍法帖やコマンドを上書きするだけで使えるようになるので便利だと思います。

忍法帖にどのような情報を保存するか

忍法帖は現在旧三男のコードを流用して作成されており、忍法帖に保存されている情報は
・忍法帖Lv
・書き込み回数
・前回レベルアップした時間
ですが、これだけでは不十分だと思われますので、更に色々追加していきたいと思います
そこで、どのような項目が存在すべきか、またどのような情報があるとありがたいか意見を募集します

i-mode用表示機能のオミット

過去の遺物と化したガラケー対応モードのオミットを行いたいと思います。
具体的にはr.cgi、p.cgiの削除と、他cgi、pl中の携帯表示モードの削除です。
関連するcgi、plファイルはvimなどで「携帯」で全体検索してもらえれば把握できると思います。

開発者向けにレス情報を取得、変更するモジュールの追加

タイトルの通りですが
my $Message = RES_MANAGER::MESSAGE($板名, $スレッドID, レス番号);
my $Message = RES_MANAGER::EDITMESSAGE($板名, $スレッドID, レス番号, $変更後のレス本文);
のような形でレス情報を取得しやすくなれば開発している側としては助かります。

cidr_list.plの更新

このモジュールはおそらく公開されているIPアドレスを並べていったものと思われる
しかし、情報が古いため更新する必要がある...のだが、spモードのipアドレスが多い
なのでここまでしかできていない

	# NTT docomo : iモード [ docomo.ne.jp ]
	$cidr->{'docomo'} = [
		# http://www.nttdocomo.co.jp/service/developer/make/content/ip/
		# 2023/11/11に確認して増えていたり減っていたりしていたものを修正
		'210.153.84.0/24',		'210.136.161.0/24',		'210.153.86.0/24',		'124.146.174.0/24',
		'124.146.175.0/24',		'202.229.176.0/24',		'202.229.177.0/24',		'202.229.178.0/24',
		'203.138.204.160/27',
	];
	
	# NTT docomo : iモードフルブラウザ
	$cidr->{'docomo_pc'} = [
		# http://www.nttdocomo.co.jp/service/developer/make/content/ip/
		# 2023/11/11に確認して増えていたり減っていたりしていたものを修正
		'210.153.87.0/24',		'203.138.204.160/27',
	];

!slipコマンドと同等の機能のコマンドの追加

現状の!slipコマンド、5ch互換なのはわかるのですが掲示板初心者の方には少々分かりづらいと思います。
また、vの数を1つ間違えるだけで違う効果になってしまうのでプライバシー保護の観点からもよくはないです。
それでですが例えば!show:IPや!show:wattyoiのような分かりやすい代替コマンドを実装するのを提案させていただきます。

ガラケーのサポートを終了する

ガラケーのサポートを終了すべきか意見を伺いたいです。

理由:

  • コードベースの簡素化

必要な作業:

  • 書き込み時にガラケーを判定するモジュールの削除
    • test/cidr_list.pl (ファイルごと)
    • test/data_utils.pl の GetClient 関数
    • test/constant.pl のガラケー関連の定数の削除
  • 携帯用バナーなどの削除
  • 管理画面から携帯からのスレッド作成を許可する機能の削除
  • その他(教えてください)

認証についての改善提案

EX0chの認証機能についての改善提案です。
現在の認証機能は書き込みの度に認証が必要でかなり不便です。
ですので以下を提案させていただきます。

  • 認証は忍法帖と統合し、忍法帖で認証したかを判定する。
  • ある程度の専用ブラウザに対応するために、認証していない方へは別ページへのリンクを表示し、別ページで認証の処理をする。
  • hcaptchaからCloudflare Turnstileへ変更。
  • 設定で再認証が必要になる期間を設定できるようにする。

管理画面でのスレタイ変更、スレ情報更新の実装

タイトルの通り管理画面でスレタイの変更とスレ情報の更新を実装するのはどうでしょうか。
現状スレタイを変更するには手動でdatとsubject.txtの書き換えをする必要があり、なかなかの手間です。
そして管理画面でレスを書き換えた場合、内容を反映させるのに同板の適当なスレに何かレスする必要があり、これも手間がかかります。
特にスレタイ変更に関しては使用頻度がなかなか高いと思いますので、管理画面だけで完結出来たらとても助かります。

BBSmenu作成機能の追加機能提案

以下を提案します。

  • カテゴリーの位置と板の位置と順番を指定できるように
  • BBSmenuに表示しない板を選べるように

特にカテゴリーの位置と順番は指定できると助かります。

PHPへの移植について

機能追加をしていくなら先にPHPへ移植をした方が追加ぶんが無駄にならない気がしますが、いかがでしょうか

忍法帖をログのcgiに紐付ける機能の追加

現在忍法帖と書き込みを紐付ける為には面倒な手順を踏まないとできないのでログのcgiと紐付けてほしい。
そうすればIDなしスレでの規制やコマンドの発動が簡単になり開発が楽になると思います。

特定の絵文字が表示されない

旧3chでもありましたが「✨」の絵文字が表示されない。
おそらく改行コードの「& #10」を置換しているためだと思われるので修正できるのであれば修正できたらと思います。

モジュールのリネームについて

モジュール名のリネームは今後の開発効率に影響してくるので、早いうちに着手した方がよいと思われます。
@PrefKarafuto 師が https://github.com/PrefKarafuto/New_0ch_Plus/blob/e5ed74bc767fc6e37b3866907268fd7223404624/test/module/README.md にまとめてくれたものを参考にして案を作ってみました。
とりあえず意見を募集します。

改名案

before after 機能
athelas plugin プラグイン管理
baggins thread スレッド情報管理
balrogs search 検索
celeborn archive 過去ログ管理
cidr_list cidr_list 携帯IPのCIDRチェック
constant constant 定数の定義情報
denethor banner バナー管理
earendil file_utils ファイル操作ユーティリティ
elves security 管理セキュリティの管理
faramir user アクセスユーザ管理
galagriel data_utils 汎用データ変換・取得
gandalf notice ユーザ通知管理
gondor dat datファイル管理
httpservice http_service httpサービス
imrahil log ログ管理
isildur setting SETTINGデータ管理
legolas header_footer_meta ヘッダ・フッタ・META管理
melkor system システムデータ管理
nazguls bbs_info 掲示板情報管理
newrelease update_notice アップデート通知
orald error_info エラー情報管理モジュール
peregrin manager_log 管理ログデータの管理
radagast cookie cookie管理
samwise form フォーム情報管理
session session セッション管理
thorin buffer バッファ出力管理
ungoliants cap キャップ管理
vara post_service 掲示板書き込み支援
varda bbs_service bbs.cgi支援
wormtongue ng_word NGワード管理

よりよい名前があるかもしれませんが、とりあえず取り急ぎ。

変数が宣言されていない、という旨のエラーが頻出する

たとえば
Global symbol "$text���" requires explicit package name (did you forget to declare "my $text���"?) at ./admin/bbs.thread.pl line 367.
というエラーが出る場合

$Page->Print("<tr><td colspan=3>以下のスレッドを$textします。</td></tr>");

の$textの後ろに\を加えて

$Page->Print("<tr><td colspan=3>以下のスレッドを$text\します。</td></tr>");

としてください。
UTF-8化に伴ってこのエラーが多発すると思われますので、可能であれば$Page->Print中に記述される変数全体にこの処理を適用したほうがいいかもしれません。

hCaptchaに関して

こちらの環境下ではhCaptchaを素通りしてしまうため、これがおま環かどうかわかりません。
レン鯖を持ってる方がいらっしゃいましたら、hCaptchaを設定してみて動くかどうか報告していただけると幸いです。

プロジェクトに「ぜろちゃんねるプラス」という名称を使わないでほしい

概要

プロジェクトに「ぜろちゃんねるプラス」という名称を使わないでほしいです

なぜか

  • 開発者・開発**が異なる Fork プロジェクトにもかかわらず Fork 元と同じ名前を利用することで利用者に混乱が生じる
  • 我々(ぜろちゃんねるプラス)が今後何かしらの機能改善のリリースをする際にバージョンが被る可能性がある

すでに開発は凍結という扱いをしていますが、今後また脆弱性の対応パッチを当てる必要があった際にアナウンスやバージョンを付ける際に混乱を来す場合があります。

このお願いに法的根拠などはありませんが、少なくともスクリプトの利用者がプロジェクトが異なることを明確に理解できた上で、選択できることに意義があると理解していただければと思います。

飛行機対策

一番要望が多かったので、これを最優先で取り組みたいと思います
とりあえず、どういう方策があるでしょうか

判明しているex0chのFastCGI化にあたっての障害

前提

FastCGIを導入するにあたっては、FCGIモジュールのインストールが必要となる。

FCGIの問題点

Unicode非対応

https://metacpan.org/release/BOBTFISH/FCGI-0.71_01/view/FCGI.PL より翻訳

FCGI.pm は Unicode を認識せず、0x00 ~ 0xFF の範囲内の文字のみがサポートされます。 0xFF より上の文字を含む文字列を出力しようとすると、例外が発生します: (F) Wide character in %s.

以前 (FCGI.pm <= 0.68) の誤った動作を望むユーザーは、次のコマンドを使用して例外を無効にできます。 bytesプラグマ。

{
use bytes;
print "\x{263A}";
}

binmodeによるPerl IOレイヤーの適用ができない

https://stackoverflow.com/questions/5005104/how-to-force-fastcgi-to-encode-form-data-as-utf-8-as-cgi-pm-has-option より翻訳

gitweb: CGI::Fast 使用時の UTF-8 エンコーディングの修正
署名者: Julien Moutinho

FCGI ストリームは古いストリーム API を使って実装されています: そのため、binmode() を使って PerlIO レイヤーを適用しても効果がありません。
このパッチの解決策は、FCGI::Stream::PRINT 関数を再定義して出力エンコーディングに UTF-8 を使用するようにすることです。ただし、git_blob_plain() や git_snapshot() ではまだ生のバイナリモードで出力する必要があります。

この問題と解決策は 2012 年に報告されています:

つまり、FastCGIを有効にする場合に限って

use open IO => ':encoding(cp932)';
binmode(STDOUT,':encoding(cp932)');

use open IO => ':std', ':encoding(UTF-8)';

などと記述してあっても文字化けが起こりうる。
一応、各ファイルストリームや標準入出力に対して逐一decodeやencodeすることで回避可能だが、単純に手間なのと、入れ忘れによる文字化けなんかがあると面倒くさい。

Perlの実行速度をプロファイルしてボトルネックを探す

ある程度の書き込みがある掲示板において、書き込み時の処理が重いという問題が数箇所から寄せられております。
Perlの実行速度をプロファイルするには、 Devel::NYTProfモジュールを使用して確認することができます。
ただ、私の環境下でモジュールがインストールできなかったため、どなたかにプロファイルをお願いしたいです。

Capcha認証改良

暫定的にhCapcha認証機能が実装されましたが、更に詰めて改良していきたいと思います。
実装案

  • reCapcha、PerlモジュールによるCapchaも追加。
  • 設定画面の改良
  • 各種キーのエラーチェック
  • 専ブラ越しにCapcha認証出来るようにする

安価をマウスオーバーすると安価先のレスを表示する機能

893 :名無しさん@ぜろちゃんねるプラス:2014/01/04(土) 09:37:17.68 ID:qb7rfrUm0
すみません
レスアンカーを選択すると対象のレスをJavascriptで表示というのはどうすればいいでしょう
分かりにくいと思うので例を出します
ログ速というサイトでレスアンカーにカーソルを合わせるとそのレス番号のレスが表示されますよね?
そのような感じです

894 :0ch+開発担当 ◆0chp.sx.ik :2014/01/04(土) 12:58:28.53 ID:m0aSXegd0
>>893
現状のスクリプトは設計が悪く、それを実現するには大掛かりな改造が必要になります。
一応、すべきことを書いておきます。
・1レスをid付きdivタグで囲む (read.cgi sub PrintResponse)
・アンカーリンクにアンカーであることと対象レスの情報を含める(data-属性などで) (galadriel.pl sub ConvertQuotation)
・ヘッダあたりにスクリプトを埋め込む(jQueryがあると楽) (read.cgi sub PrintReadHead)
・スクリプトで全アンカーに対して「マウスオーバーで対象レスのdivをコピーして小さく表示する」ように処理を行う

複雑に絡まっているコードはあまり触りたくないですね。

2ch/5ch専用ブラウザへの対応

通常ブラウザからの読み書きについては問題ありませんが、専ブラから書き込もうとすると文字化けとエラーが発生します。
おそらく専ブラ側の送信コードがShift-JISで有るためで、送信時のコードについて対応していく必要が有ります。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.