約 904,507 件
https://w.atwiki.jp/reflec_beat/pages/561.html
Make It Do Top feat.YOUNG DAIS,KOZ,MoNa a.k.a SAD GIRL,CITY-ACE BASIC MEDIUM HARD Level 2 6 9 Objects - - - BPM 96 TIME - Artist DJ PMX Version plus 動画 攻略 名前 コメント ※攻略の際は、文頭に[BASIC] [MEDIUM] [HARD] [SPECIAL] のいずれかを置くと、どの譜面に関する情報かが分かりやすいです。 コメント(感想など) 名前 コメント ↑攻略と無関係の曲に対するコメントはこちらでお願いします。あまりにもかけ離れた内容は削除される場合があります。
https://w.atwiki.jp/rannpa-do/pages/4.html
ニュース @wikiのwikiモードでは #news(興味のある単語) と入力することで、あるキーワードに関連するニュース一覧を表示することができます 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_174_ja.html たとえば、#news(wiki)と入力すると以下のように表示されます。 SlackからWikiへ!シームレスな文章作成・共有が可能な「GROWIBot」リリース - アットプレス(プレスリリース) 【グランサガ】リセマラ当たりランキング - グランサガ攻略wiki - Gamerch(ゲーマチ) ポケモンBDSP(ダイパリメイク)攻略wiki - AppMedia(アップメディア) 【ひなこい】最強ひな写ランキング - ひなこい攻略Wiki - Gamerch(ゲーマチ) モンハンライズ攻略Wiki|MHRise - AppMedia(アップメディア) ノンスタ石田 自身Wikiに困惑 - auone.jp 【スタオケ】カード一覧【金色のコルダスターライトオーケストラ】 - Gamerch(ゲーマチ) 【スマブラSP】ソラのコンボと評価【スマブラスペシャル】 - Gamerch(ゲーマチ) 【ブレフロレゾナ】リセマラ当たりランキング【ブレイブフロンティアレゾナ】 - ブレフロR攻略Wiki - Gamerch(ゲーマチ) 【ポケモンユナイト】サーナイトの評価と性能詳細【UNITE】 - Gamerch(ゲーマチ) 【ウインドボーイズ】リセマラ当たりランキング(最新版) - ウインドボーイズ攻略Wiki - Gamerch(ゲーマチ) 仲村トオル、共演者は事前に“Wiki調べ”(オリコン) - Yahoo!ニュース - Yahoo!ニュース 【ENDER LILIES】攻略チャートと全体マップ【エンダーリリィズ】 - Gamerch(ゲーマチ) 【ウマ娘】あんしん笹針師の選択肢はどれを選ぶべき? - Gamerch(ゲーマチ) 【ポケモンユナイト】アップデート情報・キャラ調整まとめ - ポケモンユナイト攻略Wiki - Gamerch(ゲーマチ) 【Apex】シーズン11の新要素と最新情報まとめ【エーペックス】 - Gamerch(ゲーマチ) ロストジャッジメント攻略Wiki - Gamerch(ゲーマチ) 【Among us】新マップThe Airship(エアシップ)の解説【アモングアス】 - Gamerch(ゲーマチ) ハーネスについて小児科医の立場から考える(坂本昌彦) - 個人 - Yahoo!ニュース - Yahoo!ニュース ゼルダ無双攻略Wiki|厄災の黙示録 - AppMedia(アップメディア) 【テイルズオブルミナリア】リセマラ当たりランキング - TOルミナリア攻略Wiki - Gamerch(ゲーマチ) ウマ娘攻略Wiki - AppMedia(アップメディア) ゲトメア(ゲートオブナイトメア)攻略Wiki - Gamerch(ゲーマチ) 【白夜極光】リセマラ当たりランキング - 白夜 極光 wiki - Gamerch(ゲーマチ) お蔵入りとなった幻の『スーパーマリオ』 オランダの博物館でプレイ可能?(リアルサウンド) - Yahoo!ニュース - Yahoo!ニュース ナレッジ共有・社内wikiツール「NotePM」が「ITreview Best Software in Japan 2021」のTOP50に選出 - PR TIMES 真女神転生5攻略Wiki|メガテン5 - AppMedia(アップメディア) 【B4B】近接ビルドデッキにおすすめのカード【back4blood】 - Gamerch(ゲーマチ) ポケモンスナップ攻略wiki - AppMedia(アップメディア) 富野由悠季「ブレンパワード」作り直したい!ファンを前に意欲(シネマトゥデイ) - Yahoo!ニュース - Yahoo!ニュース 【Apex Legends】ヴァルキリーの能力と評価【エーペックス】 - Gamerch(ゲーマチ) 【ウマ娘】査定効率から見た取るべきスキルとおすすめキャラ【プリティーダービー】 - Gamerch(ゲーマチ) ナレッジ共有・社内wiki「NotePM」が「ITreview Grid Award 2021 Fall」で、チームコラボレーションとマニュアル作成部門において「Leader」を5期連続でW受賞! - PR TIMES メモ・ドキュメント・wiki・プロジェクト管理などオールインワンのワークスペース「Notion」が日本語ベータ版提供開始 - TechCrunch Japan 【ギアジェネ】リセマラ当たりランキング【コードギアス】 - ギアジェネ攻略Wiki - Gamerch(ゲーマチ) モンスターファーム2(MF2)攻略wiki|アプリ・Switch移植版 - AppMedia(アップメディア) 【ブラサジ】最強キャラTierランキング【ブラックサージナイト】 - Gamerch(ゲーマチ) 【パワプロ】鬼滅の刃コラボ情報まとめ - Gamerch(ゲーマチ) アイドルマスターサイドM グローイングスターズ攻略Wiki - Gamerch(ゲーマチ) 【SPAJAM2021】第3回予選大会は「クイズ!WIKIにゃんず!」を開発したチーム「かよちゃんず」が最優秀賞! | gamebiz - SocialGameInfo 検索結果における「ナレッジパネル」の役割とは・・・ウィキメディア財団とDuckDuckGoの共同調査 - Media Innovation ナレッジ共有・社内wikiツール「NotePM」が「BOXIL SaaS AWARD 2021 Autumn」にて「コラボレーション部門」を受賞! - PR TIMES 【ウマ娘】ナリタブライアンの育成論|URAシナリオ - Gamerch(ゲーマチ) Wikipediaが「中国人編集者の身の安全を守るため」に一部の編集者アカウントをBANに - GIGAZINE 【ウマ娘】ヒシアケボノの育成論|URAシナリオ - Gamerch(ゲーマチ) 【ドッカンバトル】3.5億ダウンロードキャンペーン最新情報 - ドッカンバトル攻略Wiki - Gamerch(ゲーマチ) BTS(防弾少年団)のV、8月のWikipedia閲覧数が韓国アーティストで1位!グループでは4ヶ月連続トップ - Kstyle 【イース6オンライン】リセマラ当たりランキング|召喚ガチャの開放条件は? - Gamerch(ゲーマチ) BacklogからNotePMへwiki情報を自動API連携する「Backlog to NotePM」をSaaStainerに掲載開始 - PR TIMES ライザのアトリエ2攻略Wiki - AppMedia(アップメディア) 真女神転生3リマスター攻略Wiki|メガテン3 - AppMedia(アップメディア) ガーディアンテイルズ(ガデテル)攻略Wiki - Gamerch(ゲーマチ) タスクも文書もWikiもデータベースもまとめて管理できる「Notion」とは? - ASCII.jp ナレッジ共有・社内wikiツール「NotePM」が、見るだけ専用ユーザー『無料』の新プランを発表! - PR TIMES 【かのぱず】リセマラ当たりランキング【彼女お借りします】 - Gamerch(ゲーマチ) 【パワプロ】討総学園高校の攻略とイベント一覧 - Gamerch(ゲーマチ) 【乃木フラ】リセマラの必要はある?【乃木坂的フラクタル】 - Gamerch(ゲーマチ) メトロイド ドレッド攻略Wiki - Gamerch(ゲーマチ) 【パワプロ】生放送まとめ|パワフェス2021 - パワプロ攻略Wiki - Gamerch(ゲーマチ) 【ポケモンユナイト】サーナイトのおすすめビルド(わざ・持ち物) - Gamerch(ゲーマチ) ルーンファクトリー5攻略wiki|ルンファク5 - AppMedia(アップメディア) <W寄稿>韓国発の不純物によって汚された「スポーツ精神」=韓日戦の野球で「反民族行為者」騒動(WoW!Korea) - Yahoo!ニュース - Yahoo!ニュース Wikipedia(ウィキペディア)が「寄付しない人」をディスり始めて笑った / 寄付し続けて5年目に来た催促メールがアツい! - ロケットニュース24 簡単操作で自分専用Wikiを構築できるMarkdownエディタ「Obsidian」のモバイル版を使ってみた - GIGAZINE 【ウマ娘】体操服の変更方法と法則性 - Gamerch(ゲーマチ) 情報マネジメントツール「Huddler」がwiki機能を刷新 - PR TIMES 【ウマ娘】今後のロードマップ予想 - ウマ娘攻略Wiki - Gamerch(ゲーマチ) 【カウンターアームズ】改修のやり方とメリット【カタアム】 - Gamerch(ゲーマチ) シェアエコ配送アプリ「DIAq(ダイヤク)」のアンカーアプリで、高層ビル・商業施設の入館方法などお役立ち情報をまとめた「DIAq wiki」を公開 - アットプレス(プレスリリース) 異常熱波のカナダで49.6度、いま北米で起きていること(森さやか) - 個人 - Yahoo!ニュース - Yahoo!ニュース 【ツイステ】マスターシェフの攻略~辛味のふるさと~【料理イベント】 - Gamerch(ゲーマチ) 【ラグナロクオリジン】リセマラは不要?おすすめ職業は?【ラグオリ】 - Gamerch(ゲーマチ) 佐藤かよが公式YouTubeチャンネルを開設、自身のWikipediaを見ながら解説(エンタメNEXT) - Yahoo!ニュース - Yahoo!ニュース 【バイオミュータント】2.02アプデ|アップデート1.4情報 - バイオミュータント攻略Wiki - Gamerch(ゲーマチ) ニーアレプリカントリメイク攻略wiki|ver.1.22 - AppMedia(アップメディア) アイプラ攻略Wiki|アイドリープライド - AppMedia(アップメディア) 【ウマ娘】ゴルシウィークはいつから?キャンペーン情報まとめ - Gamerch(ゲーマチ) シーズン66 - 【超速GP】ミニ四駆 超速グランプリ攻略まとめwiki - 電撃オンライン 【ウマ娘】チャンピオンズミーティングの攻略まとめ - Gamerch(ゲーマチ) 乃木坂的フラクタル攻略Wiki - Gamerch(ゲーマチ) 「こんなことになるとは…」13年前のエイプリルフールについた“嘘”がネットで… ある男の告白(BuzzFeed Japan) - Yahoo!ニュース - Yahoo!ニュース 整理不要の情報共有ツール(社内Wiki)「Nerve」シードラウンドで総額約3500万円の資金調達を実施 - PR TIMES 【ウマ娘】隠しイベントの発生条件と効果まとめ - Gamerch(ゲーマチ) Nerve - 整理不要の情報共有ツール(社内Wiki) ローンチカスタマー募集開始のお知らせ - PR TIMES 【テラクラシック】リセマラ方法や当たりペット【テラクラ】 - Gamerch(ゲーマチ) Among Us攻略Wiki【アマングアス・アモングアス】 - Gamerch(ゲーマチ) パニシンググレイレイヴン(パニグレ)攻略wiki - Gamerch(ゲーマチ) 稲作アクションRPG『天穂のサクナヒメ』における「農林水産省攻略wiki説」は本当なのか? - AUTOMATON スタスマ攻略Wiki【スタースマッシュ】 - Gamerch(ゲーマチ) 無料とは思えない多機能っぷりなWikiインフラ「Wiki.js」レビュー、自前でホスト&外部サービスと連携可能 - GIGAZINE Microsoft Teamsの基本と活用(24) TeamsのWikiを使う - マイナビニュース 『ゲーミングお嬢様』での提起が話題に “企業系wiki”に横たわる問題点とは - リアルサウンド 【リゼロス】Re ゼロから始める異世界生活 Lost in Memories攻略まとめwiki - 電撃オンライン 【世界初!】モノの背景を全方位で執筆できるVintage Wiki「VOV」を正式リリース - PR TIMES 足もとのベストアンサーを“編集”! Wikiペディキュア! - ビューティ特集 | SPUR - SPUR.JP パワプロ2021/2020攻略Wiki - Gamerch(ゲーマチ) ヌーラボ、「Backlog」の絵文字入力の補完機能やWiki編集の自動マージ機能を改善 - CodeZine(コードジン) ヌーラボ、プロジェクト管理ツール「Backlog」の絵文字入力の補完機能・Wiki編集の自動マージ機能を修正改善 - PR TIMES Backlog、Wikiにファイル添付が容易にできる機能をリリース -- グローバルバーの視認性改善なども実施 - PR TIMES GK川島、パンチング失点でWiki書き換え炎上 「セネガル代表」「プロボクサー」... - J-CASTニュース
https://w.atwiki.jp/dbrpalpha/pages/3082.html
(BGM ANOTHER2(PSI MIX)) Then LittleStarKOBOSHI said to me. See thet you do not do that. For I am you fellow servant. and of those who keep the words of this game. Multi Play Gamer. And She said to me. do not seal the words of the prophecy of this D-BR cup. for the time is at hand.」 ”He who is unjast.let be unjast still; he who is filthy. let him be filthy still; he who is righteous, let him be righteous still; he who is holy, let him he holy still. And behold, I am coming Chanpion. and My reword is with me. to give to every one according to his work. I am the Alpha and the Omega, the Beginning and the End. the First and the Last. 極限のマルチプレイゲーマー -Multi Play Gamer- marinonet.-Conquest saga 神敗退リスク 3倍 試合時間 + 1.0分 上振れ率 5倍 神敗退及びそれに準ずる行為、亦はダブルV逸、 若しくは凡退を禁ず。 これらを犯せし場合は即時恥頼を以て償うべし。 2022年12月20日18時38分のバトル キャラ名 作者 体力 TYPE LIFE 勝利数 アーニャ フォージャー 10 堅守高速 1 3 こちょこ けけちゃりん 10 堅守高速 1 0 井之原小星 Donald-2nd-R 20 速攻重視 1 0 天童アリス Donald-2nd-R 31 体力重視 1 0 残り体力( 井之原小星 8 , 天童アリス 11 ) 井之原小星の攻撃!(命中率95%/会心率28%) 井之原小星、会心の一撃!!! 井之原小星 「お菓子良し、充電良し、それじゃあ、スイッチオン!」 天童アリスに43のダメージをあたえた!! 残り体力( 井之原小星 8 , 天童アリス -32 ) 天童アリスのLIFEは0になった! 天童アリスはレールガンの上で寝て、井之原小星が乗っているヘリの梯で退却した・・・ 天童アリス 「システム、停止......。(銃の上で寝そべり、ヘリの梯で退却)」 勝ち残ったのは井之原小星です! 井之原小星が見事にD-BR杯を制覇しました! 井之原小星 「やったぜ、ご褒美をくれー!」 2022年12月21日09時32分のバトル ちょこちょこの攻撃!(命中率95%/会心率18%) ちょこちょこ、会心の一撃!!! ちょこちょこ 「往生せいやぁっっっ!!!」 天童アリスに19のダメージをあたえた!! 残り体力( レパルス茜 30 , 天童アリス -3 , ちょこちょこ 5 ) 天童アリスのLIFEは0になった! 天童アリスはレールガンの上で寝て、井之原小星が乗っているヘリの梯で退却した・・・ 天童アリス 「システム、停止......。(銃の上で寝そべり、ヘリの梯で退却)」 ※この後ちょこちょこはレパルス茜が片づけました 2022年12月21日22時12分のバトル 残り体力( レパルス茜 18 , 生塩ノア 7 , 天童アリス 20 , 珠洲島有栖 10 ) 生塩ノアの攻撃!(命中率95%/スキル発動率28%) 生塩ノア、ノーマルスキル「隙だらけですよ!」発動!!! 生塩ノア 「迅速に制圧します。(スキル「隙だらけですよ!」発動)」 天童アリスに21のダメージをあたえた!! 残り体力( レパルス茜 18 , 生塩ノア 7 , 天童アリス -1 , 珠洲島有栖 10 ) 天童アリスのLIFEは0になった! 天童アリスはレールガンの上で寝て、井之原小星が乗っているヘリの梯で退却した・・・ああ、やっぱり、今回もダメだったよ。 天童アリス 「システム、停止......。(銃の上で寝そべり、ヘリの梯で退却)」 ってこの敗北台詞旧台詞じゃないですかーやだー! もういいよ。 やめだ、やめ。 トリプルV逸だのテコ入れだの、〇くらえだ。 だれもサポートしてくれないじゃん。 おしばいはおしまい。フリーキャラ名簿に刻みたまえ! これラストだから。 これで駄目だったらもう 自由契約してフリーキャラ名簿に名を刻むから。 制覇してみろよ。 ねえ。 制覇してよ! 2022年12月22日09時24分のバトル キャラ名 作者 体力 TYPE LIFE 勝利数 レパルス茜 Donald-2nd-R 30 守備重視 1 2 アメリ 十色兎 8 堅守高速 1 0 天童アリス Donald-2nd-R 31 体力重視 1 0 生塩ノア Donald-2nd-R 10 堅守高速 1 0 第26366回D-BR杯がスタートです! 現在レパルス茜がタイトルを1回防衛しています! 挑戦者がタイトルを奪取するのか、チャンピオンが防衛記録を伸ばすのか!? アメリの攻撃!(命中率95%/会心率5%) アメリ 「愛、それはキズナ。くっきりお目のアメリちゃんナリ!」 レパルス茜に5のダメージをあたえた!! レパルス茜 「消えますよ。」 残り体力( レパルス茜 25 , アメリ 8 , 天童アリス 31 , 生塩ノア 10 ) 生塩ノアの攻撃!(命中率95%/スキル発動率5%) 生塩ノア 「ふっ、現場の事なら、私にお任せください。」 天童アリスに1のダメージをあたえた!! 天童アリス 「機体に異常発生...。システムリセット...。」 残り体力( レパルス茜 25 , アメリ 8 , 天童アリス 30 , 生塩ノア 10 ) レパルス茜の攻撃!(命中率74%/嫌獄殺率5%) レパルス茜 「嫌です。」 生塩ノアに2のダメージをあたえた!! 生塩ノア 「少々、厳しいですね......」 残り体力( レパルス茜 25 , アメリ 8 , 天童アリス 30 , 生塩ノア 8 ) 天童アリスの攻撃!(命中率73%/EXスキル発動率5%) 天童アリス 「前方に対象を確認。前進します。」 生塩ノアに2のダメージをあたえた!! 生塩ノア 「少々、厳しいですね......」 残り体力( レパルス茜 25 , アメリ 8 , 天童アリス 30 , 生塩ノア 6 ) アメリの攻撃!(命中率95%/会心率10%) アメリ 「愛、それはキズナ。くっきりお目のアメリちゃんナリ!」 生塩ノアに1のダメージをあたえた!! 生塩ノア 「少々、厳しいですね......」 残り体力( レパルス茜 25 , アメリ 8 , 天童アリス 30 , 生塩ノア 5 ) 生塩ノアの攻撃!(命中率69%/スキル発動率12%) 生塩ノア 「ふっ、現場の事なら、私にお任せください。」 アメリは素早くかわした。 アメリ 「これぐらいなら大丈夫ナリ~!」 残り体力( レパルス茜 25 , アメリ 8 , 天童アリス 30 , 生塩ノア 5 ) レパルス茜の攻撃!(命中率51%/嫌獄殺率7%) レパルス茜 「嫌です。」 アメリはゆうゆうとかわした。 アメリ 「これぐらいなら大丈夫ナリ~!」 残り体力( レパルス茜 25 , アメリ 8 , 天童アリス 30 , 生塩ノア 5 ) 天童アリスの攻撃!(命中率77%/EXスキル発動率8%) 天童アリス 「前方に対象を確認。前進します。」 生塩ノアはギリギリかわした。 生塩ノア 「ふふっ、そっちじゃありませんよ。」 残り体力( レパルス茜 25 , アメリ 8 , 天童アリス 30 , 生塩ノア 5 ) アメリの攻撃!(命中率95%/会心率18%) アメリ、連続攻撃!!! アメリ 「愛、それはキズナ。くっきりお目のアメリちゃんナリ!」 レパルス茜に3のダメージをあたえた!! レパルス茜に2のダメージをあたえた!! レパルス茜 「消えますよ。」 残り体力( レパルス茜 20 , アメリ 8 , 天童アリス 30 , 生塩ノア 5 ) 生塩ノアの攻撃!(命中率95%/スキル発動率20%) 生塩ノア、ノーマルスキル「隙だらけですよ!」発動!!! 生塩ノア 「迅速に制圧します。(スキル「隙だらけですよ!」発動)」 レパルス茜に19のダメージをあたえた!! レパルス茜 「消えますよ。」 残り体力( レパルス茜 1 , アメリ 8 , 天童アリス 30 , 生塩ノア 5 ) レパルス茜の攻撃!(命中率70%/EXスキル発動率44%) レパルス茜 「嫌です。」 アメリに2のダメージをあたえた!! アメリ 「そんなの嫌ナリ~!」 残り体力( レパルス茜 1 , アメリ 6 , 天童アリス 30 , 生塩ノア 5 ) 光の剣:スーパーノヴァ(機械音声) 「ベクターキャノンモードへ移行。 エネルギーライン全段直結。」 光の剣:スーパーノヴァ(機械音声) 「ランディングギア、アイゼン、ロック。 チャンバー内、正常加圧中。 ライフリング回転開始。」 光の剣:スーパーノヴァ(機械音声) 「撃てます」 天童アリス 「魔力充電100%...行きます!」 天童アリスの攻撃!(命中率54%/EXスキル発動率12%) 天童アリス、EXスキル「世界の法則が崩壊します!」発動!!! 天童アリス 「貫け!バランス崩壊!(EXスキル「世界の法則が崩壊します!」発動)」 アメリに37のダメージをあたえた!! 残り体力( レパルス茜 1 , アメリ -31 , 天童アリス 30 , 生塩ノア 5 ) アメリのLIFEは0になった! アメリはやられた・・・ アメリ 「もう降参するナリ~!」 *アリスは こころをこめて いのった! *「だれか...きこえますか? * だれか わたしたちに ちからを かして!」 アリスの よびかけは ど......のむねに とどいた。 .....る.は、はいきょではっけんされた おんなのために いのりつづけた。 生塩ノアの攻撃!(命中率95%/スキル発動率26%) 生塩ノア、ノーマルスキル「隙だらけですよ!」発動!!! 生塩ノア 「迅速に制圧します。(スキル「隙だらけですよ!」発動)」 天童アリスに20のダメージをあたえた!! 天童アリス 「機体に異常発生...。システムリセット...。」 *...な......は、いのりつづけた。 残り体力( レパルス茜 1 , 天童アリス 10 , 生塩ノア 5 ) レパルス茜の攻撃!(命中率95%/嫌獄殺率56%) レパルス茜、カットインを出し、嫌獄殺発動!!! レパルス茜 「(無言で、生塩ノアに向かって嫌獄殺を仕掛けた)」 生塩ノアに34のダメージをあたえた!! 残り体力( レパルス茜 1 , 天童アリス 10 , 生塩ノア -29 ) 生塩ノアのLIFEは0になった! 生塩ノアはしゃがみ込み頭を抱え、D2nd氏が乗っているヘリの梯で退却した・・・ 生塩ノア 「うっ......少し、過信してしまったかもしれません......(梯で撤退)」 *どなるどは、いのりつづけた。 天童アリスの攻撃!(命中率88%/会心率28%) 天童アリス 「前方に対象を確認。前進します。」 レパルス茜に5のダメージをあたえた!!←やった!!!!! 残り体力( レパルス茜 -4 , 天童アリス 10 ) レパルス茜のLIFEは0になった! レパルス茜は雨の中倒れ、塵となって消えた・・・ レパルス茜 「ごめんなさい......寒いです......」 勝ち残ったのは天童アリスです! 天童アリスが見事にD-BR杯を制覇しました! 天童アリス 「勇気。それは最高の魔法です。仲間がいるから、怖くありません。」 (ホワイトアウトし、背景が切り替わる) A「夢って何でしょうか、アリスには、理解できません。」 K「ユメ?」 A「そう、夢。認識できない、夢。」 K「それは現実の続きだぞ~。」 A「ゲンジツ...辞典機能にインプットしました。」 K「それは夢の終わりらしいぞ~。」 A「それはどうすれば終わるのでしょうか? どうすれば始まるのでしょうか? アリスには、わかりません。」 K「制覇しろよな~。でなければ休養だぞ~。」 A「アリス、理解しました。」 井之原小星 「よく制覇までたどり着いたなー。 ボク達の勝ちだぞ~。(まだムルチプライガメラーはアリスとミドリが制覇してない) 一体、年末までに制覇できないとは なんだったんだ~? それも今となっては たおしても うばいとる!だぞ~。 さて、報酬をやるぞ~。ボクの地獄を開放しよう~。 優れたる、新世代のボク~。」 天童アリス 「アリス、クエスト報酬をくれるのですか? それがご褒美でいいのでしょうか?」 才羽モモイ 「報酬!?豪華報酬で初心者を釣る、ということ!? でも私の書くシナリオの方がスケールがでかい気が...」 才羽ミドリ 「それでも許される訳なら、私もこういいますね... ................................................. ................................................. ................................................. お姉ちゃん、シナリオできた?」 才羽モモイ 「ふぉーーーーー!!」 花岡ユズ 「さ、サラマンダーより早い、です......!」 天童アリス 「アリス達パーティーメンバーは、もうすでにmarinonet.のD-BR杯を制覇済みです。 これからも、レベルアップしていきましょう。」 井之原小星 「ボクもマルチプレイゲーマーとして、活動していかないとな~。 →これからも冒険を続ける 冒険を中断する」 花岡ユズ 「こ、これからも、ずっとずっと、みんなで一緒に、頑張ろう...」 NOW LOADING... 原作 ブルーアーカイブ オンゲキ 花岡ユズ 「できたー!これでマスターアップ!」 天童アリス 「お疲れ様でした!」 才羽モモイ 「ホント疲れた!あ、どうせだしさ! 今から追加で隠し要素条件教えちゃおうよ!」 才羽ミドリ 「教えるって...え?私たちが教えるの!?」 天童アリス 「アリスは賛成します!とっても面白そうです!」 才羽モモイ 「よーし、じゃあ、張り切って教えよう!」 井之原小星 「なんか1か月も前からボクらマルチプレイゲーマーの個別ページの謎の空白の一番下に日記が落ちてたぞー。 □に+がついて、それをクリックしたらそれが隠し要素だぞ~。」 by.Donald-2nd-R(天童アリスと生塩ノアとレパルス茜の人)
https://w.atwiki.jp/ariannro-do/pages/4.html
ニュース @wikiのwikiモードでは #news(興味のある単語) と入力することで、あるキーワードに関連するニュース一覧を表示することができます 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_174_ja.html たとえば、#news(wiki)と入力すると以下のように表示されます。 メトロイド ドレッド攻略Wiki - Gamerch(ゲーマチ) 【まおりゅう】最強パーティー編成とおすすめキャラ【転スラアプリ】 - Gamerch(ゲーマチ) 【グランサガ】リセマラ当たりランキング - グランサガ攻略wiki - Gamerch(ゲーマチ) Among Us攻略Wiki【アマングアス・アモングアス】 - Gamerch(ゲーマチ) マニュアル作成に便利な「画像編集」機能を提供開始! - ナレッジ共有・社内wikiツール「NotePM」:時事ドットコム - 時事通信 マニュアル作成に便利な「画像編集」機能を提供開始! - ナレッジ共有・社内wikiツール「NotePM」 - PR TIMES 【Apex Legends】ヴァルキリーの能力と評価【エーペックス】 - Gamerch(ゲーマチ) モンハンライズ攻略Wiki|MHRise - AppMedia(アップメディア) 【ウインドボーイズ】リセマラ当たりランキング(最新版) - ウインドボーイズ攻略Wiki - Gamerch(ゲーマチ) ポケモンBDSP(ダイパリメイク)攻略wiki - AppMedia(アップメディア) SlackからWikiへ!シームレスな文章作成・共有が可能な「GROWIBot」リリース - アットプレス(プレスリリース) 【ウマ娘】ナリタブライアンの育成論|URAシナリオ - Gamerch(ゲーマチ) 【ウマ娘】ヒシアケボノの育成論|URAシナリオ - Gamerch(ゲーマチ) 【ウマ娘】フジキセキの育成論|URAシナリオ - Gamerch(ゲーマチ) ドラゴンクエストけしケシ攻略Wiki - Gamerch(ゲーマチ) 【ウマ娘】スコーピオ杯のコース解説と強いスキル - Gamerch(ゲーマチ) サモンズボード攻略wiki - GameWith 【スタオケ】カード一覧【金色のコルダスターライトオーケストラ】 - Gamerch(ゲーマチ) 【スマブラSP】ソラのコンボと評価【スマブラスペシャル】 - Gamerch(ゲーマチ) 【ブレフロレゾナ】リセマラ当たりランキング【ブレイブフロンティアレゾナ】 - ブレフロR攻略Wiki - Gamerch(ゲーマチ) 【ポケモンユナイト】サーナイトの評価と性能詳細【UNITE】 - Gamerch(ゲーマチ) 仲村トオル、共演者は事前に“Wiki調べ” - 沖縄タイムス 【ENDER LILIES】攻略チャートと全体マップ【エンダーリリィズ】 - Gamerch(ゲーマチ) 【ウマ娘】あんしん笹針師の選択肢はどれを選ぶべき? - Gamerch(ゲーマチ) 【ポケモンユナイト】アップデート情報・キャラ調整まとめ - ポケモンユナイト攻略Wiki - Gamerch(ゲーマチ) 【Apex】シーズン11の新要素と最新情報まとめ【エーペックス】 - Gamerch(ゲーマチ) ロストジャッジメント攻略Wiki - Gamerch(ゲーマチ) 【Among us】新マップThe Airship(エアシップ)の解説【アモングアス】 - Gamerch(ゲーマチ) ハーネスについて小児科医の立場から考える(坂本昌彦) - 個人 - Yahoo!ニュース - Yahoo!ニュース ゼルダ無双攻略Wiki|厄災の黙示録 - AppMedia(アップメディア) 【テイルズオブルミナリア】リセマラ当たりランキング - TOルミナリア攻略Wiki - Gamerch(ゲーマチ) ウマ娘攻略Wiki - AppMedia(アップメディア) ゲトメア(ゲートオブナイトメア)攻略Wiki - Gamerch(ゲーマチ) 【白夜極光】リセマラ当たりランキング - 白夜 極光 wiki - Gamerch(ゲーマチ) お蔵入りとなった幻の『スーパーマリオ』 オランダの博物館でプレイ可能?(リアルサウンド) - Yahoo!ニュース - Yahoo!ニュース ナレッジ共有・社内wikiツール「NotePM」が「ITreview Best Software in Japan 2021」のTOP50に選出 - PR TIMES 真女神転生5攻略Wiki|メガテン5 - AppMedia(アップメディア) 【B4B】近接ビルドデッキにおすすめのカード【back4blood】 - Gamerch(ゲーマチ) ポケモンスナップ攻略wiki - AppMedia(アップメディア) 富野由悠季「ブレンパワード」作り直したい!ファンを前に意欲(シネマトゥデイ) - Yahoo!ニュース - Yahoo!ニュース 【ウマ娘】査定効率から見た取るべきスキルとおすすめキャラ【プリティーダービー】 - Gamerch(ゲーマチ) 【スマブラSP】カズヤの評価とコンボ【スマブラスペシャル】 - Gamerch(ゲーマチ) ナレッジ共有・社内wiki「NotePM」が「ITreview Grid Award 2021 Fall」で、チームコラボレーションとマニュアル作成部門において「Leader」を5期連続でW受賞! - PR TIMES メモ・ドキュメント・wiki・プロジェクト管理などオールインワンのワークスペース「Notion」が日本語ベータ版提供開始 - TechCrunch Japan 【ギアジェネ】リセマラ当たりランキング【コードギアス】 - ギアジェネ攻略Wiki - Gamerch(ゲーマチ) モンスターファーム2(MF2)攻略wiki|アプリ・Switch移植版 - AppMedia(アップメディア) 【ブラサジ】最強キャラTierランキング【ブラックサージナイト】 - Gamerch(ゲーマチ) 【パワプロ】鬼滅の刃コラボ情報まとめ - Gamerch(ゲーマチ) 【SPAJAM2021】第3回予選大会は「クイズ!WIKIにゃんず!」を開発したチーム「かよちゃんず」が最優秀賞! | gamebiz - SocialGameInfo 検索結果における「ナレッジパネル」の役割とは・・・ウィキメディア財団とDuckDuckGoの共同調査 - Media Innovation ナレッジ共有・社内wikiツール「NotePM」が「BOXIL SaaS AWARD 2021 Autumn」にて「コラボレーション部門」を受賞! - PR TIMES Wikipediaが「中国人編集者の身の安全を守るため」に一部の編集者アカウントをBANに - GIGAZINE 【ドッカンバトル】3.5億ダウンロードキャンペーン最新情報 - ドッカンバトル攻略Wiki - Gamerch(ゲーマチ) BTS(防弾少年団)のV、8月のWikipedia閲覧数が韓国アーティストで1位!グループでは4ヶ月連続トップ - Kstyle 【イース6オンライン】リセマラ当たりランキング|召喚ガチャの開放条件は? - Gamerch(ゲーマチ) BacklogからNotePMへwiki情報を自動API連携する「Backlog to NotePM」をSaaStainerに掲載開始 - PR TIMES ライザのアトリエ2攻略Wiki - AppMedia(アップメディア) 真女神転生3リマスター攻略Wiki|メガテン3 - AppMedia(アップメディア) タスクも文書もWikiもデータベースもまとめて管理できる「Notion」とは? - ASCII.jp ナレッジ共有・社内wikiツール「NotePM」が、見るだけ専用ユーザー『無料』の新プランを発表! - PR TIMES 【かのぱず】リセマラ当たりランキング【彼女お借りします】 - Gamerch(ゲーマチ) 【ウマ娘】シナリオレコードの報酬一覧|評価点9000以上獲得する方法 - Gamerch(ゲーマチ) 【乃木フラ】リセマラの必要はある?【乃木坂的フラクタル】 - Gamerch(ゲーマチ) 【パワプロ】生放送まとめ|パワフェス2021 - パワプロ攻略Wiki - Gamerch(ゲーマチ) 【ポケモンユナイト】サーナイトのおすすめビルド(わざ・持ち物) - Gamerch(ゲーマチ) ルーンファクトリー5攻略wiki|ルンファク5 - AppMedia(アップメディア) シャーマンキングふんばりクロニクル攻略Wiki - Gamerch(ゲーマチ) 簡単操作で自分専用Wikiを構築できるMarkdownエディタ「Obsidian」のモバイル版を使ってみた - GIGAZINE 【ポケモンユナイト】配信時間は何時から?スタートできない?【UNITE】 - Gamerch(ゲーマチ) ディーサイドトロイメライ攻略Wiki - Gamerch(ゲーマチ) 情報マネジメントツール「Huddler」がwiki機能を刷新 - PR TIMES シェアエコ配送アプリ「DIAq(ダイヤク)」のアンカーアプリで、高層ビル・商業施設の入館方法などお役立ち情報をまとめた「DIAqwiki」を公開 - アットプレス(プレスリリース) 異常熱波のカナダで49.6度、いま北米で起きていること(森さやか) - 個人 - Yahoo!ニュース - Yahoo!ニュース 【ツイステ】マスターシェフの攻略~辛味のふるさと~【料理イベント】 - Gamerch(ゲーマチ) 白夜極光攻略wiki - AppMedia(アップメディア) 【バイオミュータント】2.02アプデ|アップデート1.4情報 - バイオミュータント攻略Wiki - Gamerch(ゲーマチ) 【ひな図書】リセマラ当たりランキング【日向坂図書館】 - Gamerch(ゲーマチ) ニーアレプリカントリメイク攻略wiki|ver.1.22 - AppMedia(アップメディア) 【ウマ娘】ゴルシウィークはいつから?キャンペーン情報まとめ - Gamerch(ゲーマチ) シーズン66 - 【超速GP】ミニ四駆 超速グランプリ攻略まとめwiki - 電撃オンライン 乃木坂的フラクタル攻略Wiki - Gamerch(ゲーマチ) 「こんなことになるとは…」13年前のエイプリルフールについた“嘘”がネットで… ある男の告白(BuzzFeed Japan) - Yahoo!ニュース - Yahoo!ニュース 整理不要の情報共有ツール(社内Wiki)「Nerve」シードラウンドで総額約3500万円の資金調達を実施 - PR TIMES Nerve - 整理不要の情報共有ツール(社内Wiki) ローンチカスタマー募集開始のお知らせ - PR TIMES パニシンググレイレイヴン(パニグレ)攻略wiki - Gamerch(ゲーマチ) 【ひなこい】最強ひな写ランキング - ひなこい攻略Wiki - Gamerch(ゲーマチ) 稲作アクションRPG『天穂のサクナヒメ』における「農林水産省攻略wiki説」は本当なのか? - AUTOMATON スタスマ攻略Wiki【スタースマッシュ】 - Gamerch(ゲーマチ) 無料とは思えない多機能っぷりなWikiインフラ「Wiki.js」レビュー、自前でホスト&外部サービスと連携可能 - GIGAZINE Microsoft Teamsの基本と活用(24) TeamsのWikiを使う - マイナビニュース 『ゲーミングお嬢様』での提起が話題に “企業系wiki”に横たわる問題点とは - リアルサウンド 「エイリアンのたまご」,自動周回機能と公式wikiが登場 - 4Gamer.net 「圧が凄い」Wikipedia、最新の「寄付のお願い」が話題 「ほとんどの方はこのメッセージを読んでくださらないでしょう。ただ...」 - J-CASTニュース 【リゼロス】Re ゼロから始める異世界生活 Lost in Memories攻略まとめwiki - 電撃オンライン 【世界初!】モノの背景を全方位で執筆できるVintage Wiki「VOV」を正式リリース - PR TIMES パワプロ2021/2020攻略Wiki - Gamerch(ゲーマチ) ヌーラボ、「Backlog」の絵文字入力の補完機能やWiki編集の自動マージ機能を改善 - CodeZine(コードジン) ヌーラボ、プロジェクト管理ツール「Backlog」の絵文字入力の補完機能・Wiki編集の自動マージ機能を修正改善 - PR TIMES Backlog、Wikiにファイル添付が容易にできる機能をリリース -- グローバルバーの視認性改善なども実施 - PR TIMES GK川島、パンチング失点でWiki書き換え炎上 「セネガル代表」「プロボクサー」... - J-CASTニュース
https://w.atwiki.jp/ju-do/pages/5.html
まとめサイト作成支援ツールについて @wikiにはまとめサイト作成を支援するツールがあります。 また、 #matome_list と入力することで、注目の掲示板が一覧表示されます。 利用例)#matome_listと入力すると下記のように表示されます #matome_list
https://w.atwiki.jp/ju-do/pages/2.html
メニュー 歴代ルクセンブルガー 第1回~第20回 第21回~第40回 リンク ルクセンブルグの教習所♪ ジュード(生主)大百科 ここを編集
https://w.atwiki.jp/my2do/pages/5.html
更新履歴 @wikiのwikiモードでは #recent(数字) と入力することで、wikiのページ更新履歴を表示することができます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_117_ja.html たとえば、#recent(20)と入力すると以下のように表示されます。 取得中です。
https://w.atwiki.jp/do-ra/pages/14.html
本日より田中さんが一緒にお仕事をいたします
https://w.atwiki.jp/do-ra/pages/5.html
まとめサイト作成支援ツールについて @wikiにはまとめサイト作成を支援するツールがあります。 また、 #matome_list と入力することで、注目の掲示板が一覧表示されます。 利用例)#matome_listと入力すると下記のように表示されます #matome_list
https://w.atwiki.jp/swsw/pages/15.html
#! /usr/local/bin/perl # #くずはすくりぷと Rev.0.1 Preview 9 (2000.9.3) # (掲示板本体) # # mailtokuzuha@kurumi.ne.jp # webpagehttp //kuzuha.tripod.co.jp/ # #TABSIZE=4 # #あやしいわーるど@暫定版 Rev. 0.21 (2004.02.16現在) # (掲示板本体) # #下衆ナッツ、宇多田レイパー、擬古猫 # | | #描、さやか、空白、、川´_`) 、真田さん(仮名)、まな(順不同) # # # #その他あやしいわーるど@暫定に携わった全ての人 # # mailtoadmin@ge.st98.arena.ne.jp # webpagehttp //www.ge.st98.arena.ne.jp/ # webpagehttp //zantei.strangeworld.jp/ #TODO・カラー機能が使われなくなってから、カラー機能を表示のみに限定 #猫・プレビュー機能追加他色々(Buggy)(20071217) #猫・2chIDシステム追加(20070416) #猫・生入氏指摘により30件リンク追加(20070217) #猫・次のページ消去(20060722) #猫・iモード隠しリンク修正 (20050917) #猫・謎対策 (20050525) #猫・bugfix 生入氏㌧㌧ (20041218) #猫・元に戻した(20041210) #猫・strangeworld.jp取得記念 リバースモード(20041209) #猫・非表示とか(20040513) #猫・お知らせ部分削除(20040128) #猫・カラー機能(2003/11/29)thanks 川´_`) #猫・jumpurl→666.htmlからindex.htmlへ お知らせ部分更新(2003/11/17) #さやか・ツリービューfix(2003/11/17) #さやか・ツリービューモード (2003/11/13) #猫・負荷攻撃一時的対策(2002/06/20 20 14) ############################################################################### # 設定 ############################################################################### # 掲示板CGIのURL $cgiurl = $ENV{SCRIPT_NAME}; #$cgiurl = http //www.ge.st98.arena.ne.jp/cgi-bin/bbs.cgi ; # 別掲示板CGIのURL $alturl = http //www.ge.st98.arena.ne.jp/cgi-bin/bbs.cgi?nazo=777 ; # gzip圧縮の初期値 # 0 圧縮しない # 1 圧縮する $gzipu = 1; # 1画面に表示するメッセージの表示数 # (1~メッセージの保存数) $msgdisp = 30; # 掲示板の名前 $bbstitle = あやしいわーるど@暫定 ; # フォロー投稿画面表示 # 0 新規ウィンドウをオープンして表示 # 1 同一画面に表示 # (同一画面表示は不具合が残るため、あまり推奨できません) $followwin = 1; # トリップ(2ちゃんねる互換)を使う # 0 不使用 # 1 使用 $tripuse = 1; #串弁慶用 $qb= "\(0\)"; #自動マーキー閉じ用 $marq =" !-- -- "; ############################################################################### # システム用設定・変数(特に指示がない限り変更不可) ############################################################################### $tmpl_msg = EOF; !-- \$postid -- FONT size="+1" color="#\$CC{ subj }" B \$title /B /FONT 投稿者: B \$user /B FONT size="-1" 投稿日:\$wdate\$btn /FONT BLOCKQUOTE PRE \$msg \$marq /PRE \$envlist /BLOCKQUOTE HR !-- -- EOF $S_pstime = 1; $S_pltime = 3600; $S_cexp = 7776000; $S_alchk[0] = ; $S_alchk[1] = checked ; $S_gzchk[0] = ; $S_gzchk[1] = checked ; ############################## #拡張(書込完了表示) $S_zwchk[0] = ; $S_zwchk[1] = checked ; ##------------------------- # 共通設定ファイルの読込 require ./bbsset.txt ; # 特殊変換コードの読込 require ./change_xxx.txt ; #パスワードファイルの読込 #require ./etc/bbspass.pl ; require ./bbspass.pl ; ##------------------------- ############################################################################### # 時刻フォーマット変換 ############################################################################### sub getnowdate { ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdat ) = localtime ( $_[0] ); $year += 1900; $mon++; $nowdate = sprintf ( "%d/%02d/%02d(%s)%02d時%02d分%02d秒", $year, $mon, $mday, ( 日 , 月 , 火 , 水 , 木 , 金 , 土 )[$wday], $hour, $min, $sec ); } ############################################################################### # フォームデータ取得 ############################################################################### sub getformdata { my ( $formbuf, $name, $value ); if ( $ENV{ REQUEST_METHOD } eq POST ) { read ( STDIN, $formbuf[0], $ENV{ CONTENT_LENGTH } ); } else { $formbuf[0] = $ENV{ QUERY_STRING }; } if ( $formbuf[0] ) { prterror ( 呼び出し元が不正です。 ) if ( $ENV{ HTTP_HOST } ! ( $ENV{ HTTP_HOST } =~ /$bbshost/i ) ); $referer = $ENV{ HTTP_REFERER }; $referer =~ s/\+/ /g; $referer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack ( "C", hex ( $1 ) )/eg; foreach ( split ( / /, $formbuf[0] ) ) { ( $name, $value ) = split ( /=/ ); $value =~ s/\+/ /g; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack ( "C", hex ( $1 ) )/eg; #$value =~ s/ / amp;/g; $value =~ s/ / lt;/g; $value =~ s/ / gt;/g; $value =~ s/"/ quot;/g;# スタイルシート対策 $value =~ s/\r\n/\r/g; $value =~ s/\n/\r/g; $value =~ s/\r$//; $value =~ s/\,/\0/g; $FORM{$name} = $value; } } } ############################################################################### # 日本語文字コード変換 ############################################################################### sub jconv { if ( ( $FORM{ k } ne あ $FORM{ v } ) || $FORM{ j } ) { require "$jcode"; foreach ( keys %FORM ) { # jcode convert ( *FORM{$_}, sjis ); jcode convert ( \$FORM{$_}, sjis ); } } } ############################################################################### # 環境変数取得 ############################################################################### sub getenv {# if ( $uarec ) { $agent = $ENV{ HTTP_USER_AGENT }; $agent =~ s/ / lt;/g; $agent =~ s/ / gt;/g; $agent =~ s/,/./g; } if ( !$iprec ) { return; } $addr = $ENV{ REMOTE_ADDR }; $host = $ENV{ REMOTE_HOST }; if ( $addr eq $host || !$host ) { $host = gethostbyaddr ( pack ( C4 , split ( /\./, $addr ) ), 2 ) || $addr; } $proxyflg = 0; if ( $ENV{ HTTP_CACHE_CONTROL } ){ $proxyflg = 1; } if ( $ENV{ HTTP_CACHE_INFO } ){ $proxyflg += 2; } if ( $ENV{ HTTP_CLIENT_IP } ){ $proxyflg += 4; } if ( $ENV{ HTTP_FORWARDED } ){ $proxyflg += 8; } if ( $ENV{ HTTP_FROM } ){ $proxyflg += 16; } if ( $ENV{ HTTP_PROXY_AUTHORIZATION } ){ $proxyflg += 32; } if ( $ENV{ HTTP_PROXY_CONNECTION } ){ $proxyflg += 64; } if ( $ENV{ HTTP_SP_HOST } ){ $proxyflg += 128; } if ( $ENV{ HTTP_VIA } ){ $proxyflg += 256; } if ( $ENV{ HTTP_X_FORWARDED_FOR } ){ $proxyflg += 512; } if ( $ENV{ HTTP_X_LOCKING } ){ $proxyflg += 1024; } if ( $agent =~ /cache|delegate|gateway|httpd|proxy|squid|www|via/i ) { $proxyflg += 2048; } if ( $host =~ /cache|^dns|dummy|^ns|firewall|gate|keep|mail|^news|pop|proxy|smtp|w3|^web|www/i ) { $proxyflg += 4096; } if ( $host eq $addr ) { $proxyflg += 8192; } $realaddr = ; $realhost = ; if ( $proxyflg 0 ) { if ( $ENV{ HTTP_X_FORWARDED_FOR } =~ s/^(\d+)\.(\d+)\.(\d+)\.(\d+).*/$1.$2.$3.$4/ ) { $realaddr = "$1.$2.$3.$4"; } elsif ( $ENV{ HTTP_FORWARDED } =~ s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/ ) { $realaddr = "$1.$2.$3.$4"; } elsif ( $ENV{ HTTP_VIA } =~ s/.*\s(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/ ) { $realaddr = "$1.$2.$3.$4"; } elsif ( $ENV{ HTTP_CLIENT_IP } =~ s/(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/ ) { $realaddr = "$1.$2.$3.$4"; } elsif ( $ENV{ HTTP_SP_HOST } =~ s/(\d+)\.(\d+)\.(\d+)\.(\d+)/$1.$2.$3.$4/ ) { $realaddr = "$1.$2.$3.$4"; } elsif ( $ENV{ HTTP_FORWARDED } =~ s/.*\sfor\s(.+)/$1/ ) { $realhost = "$1"; } elsif ( $ENV{ HTTP_FROM } =~ s/\-\@(.+)/$1/ ) { $realhost = "$1"; } if ( !$realaddr $realhost ) { $realpackaddr = gethostbyname ( $realhost ); ( $a, $b, $c, $d ) = unpack ( C4 , $realpackaddr ); $realaddr = "$a.$b.$c.$d"; } if ( $realaddr eq ) { $anonyproxyflg = 1; } else { if ( ($realaddr) ($realhost eq ) ) { $realhost = $realaddr; } } if ( $realaddr $iprec != 2 ) { $host = (leak) ; } } else { $host = (none) if ( $iprec != 2 ); } }# ############################################################################### # リファラー制限 ############################################################################### #$jumpurl = "http //rotten.com/"; $jumpurl = "http //www.ge.st98.arena.ne.jp/index.html"; $referer = $ENV{ HTTP_REFERER }; @referer_list = ( "ime\.nu", "pinktower\.com", "2ch", "ohayou\.com", "15ch", "bbspink", "jbbs", "machibbs", "megabbs", "shitaraba", "cgigame\.com" ); foreach $referer_list2 (@referer_list) { if ( $referer =~ /$referer_list2/i ) { print "Content-type text/html\n"; print "Location $jumpurl\n\n"; exit; } } ############################################################################### # 自動巡回書込ロボット対策 ############################################################################### # BBS Writeは配布終了 # D-Engineは現役 # ロボットはユーザエージェントを変更できるので # その場合はIPを制限すること # ジャンプ先のURL $jumpurl = http //www.rotten.com/ ; if ($ENV{ HTTP_USER_AGENT } =~ /BBS Write|D-Engine/i ){ print "Content-type text/html\n"; print "Location $jumpurl\n\n"; exit; } ############################################################################### # 文字列のエンコード ############################################################################### sub escstring { my ( $srcstr ) = $_[0]; $srcstr =~ s/([^a-zA-Z0-9\s])/sprintf ( "%%%lx", ( unpack ( "C", $1 ) ) )/eg; $srcstr =~ s/ /\+/g; return $srcstr; } ############################################################################### # メッセージ読み込み ############################################################################### sub loadmessage { my $openlog; if ( !$FORM{ ff } ) { $openlog = $logfilename; } else { $FORM{ ff } =~ /^([\w.]*)$/; $openlog = "$oldlogfiledir/$1"; } open ( READLOG, "$openlog" ) || prterror ( メッセージ読み込みに失敗しました ); eval flock ( READLOG, 1 ) ; seek ( READLOG, 0, 0 ); @logdata = READLOG ; eval flock ( READLOG, 8 ) ; close ( READLOG ); } ############################################################################### # メッセージ1件取得 ############################################################################### sub getmessage { my ( $raw_message, $need_rmsg ) = @_; ( $ndate, $postid, $protect, $thread, $phost, $agent, $user, $mail, $title, $msg ) = split ( /\,/, $raw_message ); $msg =~ s/\n$//; $title =~ s/\0/\,/g; $mail =~ s/\0/\,/g; $user =~ s/\0/\,/g; $msg =~ s/\0/\,/g; $wdate = getnowdate ( $ndate ); #TODO消化(カラー変換の位置変更によりログデータを保持 20071219) $msg = change_to_xxx($msg); #============================================================================== #業者対策 # adurl_checker; #============================================================================== #マーキー対策 if (($msg =~/ marquee([a-zA-Z0-9\"]*) /) ne ($msg =~/ \/marquee /)){ $marq = /marquee ; } #カラーのオンオフ============================================================== #カラーを戻す if ( $FORM{ zcolor } ) { # 特殊な変換を戻す(色付けとか) $msg = change_from_xxx($msg); } #============================================================================== #◎666特別扱い if (( $FORM{ nazo } ) ( $FORM{ nazo } ne 666 ) ) { # タグ許可(なぞモード) $rmsg = $msg if $need_rmsg; $msg = tag_change($msg, 1); } else { # タグ許可 $rmsg = $msg if $need_rmsg; $msg = tag_change($msg, 0); } } ############################################################################### # メッセージ1件出力 ############################################################################### sub prtmessage { #省略・非表示機能============================================================== # 掲示板表示モードかつ、投稿文が$FORM{ collimit }桁以上なら省略・非表示する if ( ( $FORM{ collimit } ) ( ( $FORM{ m } eq p ) || ( $FORM{ m } eq ) || ( $FORM{ m } eq o ) || ( $FORM{ m } eq op ) || ( $FORM{ m } eq on ) || ( $FORM{ m } eq n ) ) ) { my @lines = split( "\r", $msg ); foreach ( @lines ) { if ( ( length ( $_ ) $FORM{ collimit } ) ) { if ( ( $_ =~ m|( A href=\"m=f\S+\" ).* \/A |i ) || ( $_ =~ m|( A href=".*" target="link" )[^ *]|i ) ) { if ( ( length ( $_ ) - length ( $1 ) - 4 ) $FORM{ collimit } ) { if ( !$colswitchu ) { $msg = 省略 ."\r"; } else { $msg = ""; } last; } } else { if ( !$colswitchu ) { $msg = 省略 ."\r"; } else { $msg = ""; } last; } } } } # 掲示板表示モードかつ、投稿文が$FORM{ linelimit }行以上なら省略・非表示する if ( ( $FORM{ linelimit } ) ( ( $FORM{ m } eq p ) || ( $FORM{ m } eq ) || ( $FORM{ m } eq o ) || ( $FORM{ m } eq op ) || ( $FORM{ m } eq on ) || ( $FORM{ m } eq n ) ) ) { my @lines = split( "\r", $msg ); if ( ( @lines $FORM{ linelimit } ) ( @lines 3 ) ) { $msg_head = $lines[0]; $msg_tail = $lines[$#lines]; if ( $thread ) { $msg_tail = $lines[$#lines - 2] . "\r\r" . $msg_tail; $msg_body = "\r[" . ( @lines - 4 ) . 行省略] . "\r"; } else { $msg_body = "\r[" . ( @lines - 2 ) . 行省略] . "\r"; } undef ( @lines ); @lines = ( $msg_head, $msg_body, $msg_tail ) if ( !$lineswitchu ); $msg = join ( "\r", @lines ); } } #============================================================================== ##trip変更点20060927 if (($msg) ( $FORM{ u } =~ /(.+)\ EM\ [^ ]*\ \/EM\ / )) { $FORM{ u } = $1; } if ( $FORM{ multizilla } ) { $addblank = "\ multizilla=$FORM{ multizilla }"; } else { $addblank = ; } if ( ( $FORM{ newtitle } ) eq $bbstitle ) { $addnewtitle = ; } else { $addnewtitle = "\ newtitle=$FORM{ newtitle }"; } #セキュリティホール対策 $FORM{ e } =~ /^([\w.]*)$/; $FORM{ e } = $1; my $mode = $_[0];# 0 掲示板 1 過去ログ(ボタン表示あり) 2 過去ログ(ボタン表示なし) 3 投稿者検索窓 my $tlog = $_[1]; my $change_buttons = $_[2]; my ( $tag, $refdate, $prtmessage, $btn, $btnfollow, $btnauthor, $btnthread, $newwin, $envlist, $envaddr, $envua, $envbr ); # 「参考」も別窓で開く if ( $mode == 0 || $mode == 3 ) { # target=_blankに置き換え、multizillaのタブで開く if ( ( !$followwin ) ( !$FORM{ multizilla } ) ) { $newwin = " target=\"link\""; } elsif ( $FORM{ multizilla } ) { $newwin = " target=\"_blank\""; } else { $newwin = ; } $msg =~ s/ A href=\"m=f\ s=(\d+)\ r=(\S+)\" (.*) \/A / A href=\"$cgiurl\?m=f\ c=$FORM{ c } s=$1\ r=$2$addnewtitle\"$newwin $3 \/A /i; $msg =~ s/ A href=\"mode=follow\ search=(\d+)\ ref=(\S+)\" (.*) \/A / A href=\"$cgiurl\?m=f\ c=$FORM{ c } s=$1\ r=$2$addnewtitle\"$newwin $3 \/A /i; } else { $msg =~ s/ A href=\"m=f\ s=(\d+)\ r=(\S+)\" (.*) \/A / A href=\"#$1\" $3 \/A /i; $msg =~ s/ A href=\"mode=follow\ search=(\d+)\ ref=(\S+)\" (.*) \/A / A href=\"#$1\" $3 \/A /i; } if ( $mode == 0 || $mode == 3 || ( $mode == 1 $oldlogbtn $oldlogfmt ) ) { # target=_blankに置き換え、multizillaのタブで開く if ( ( !$followwin ) ( !$FORM{ multizilla } ) ) { $newwin = " target=\"link\""; } elsif ( $FORM{ multizilla } ) { $newwin = " target=\"_blank\""; } else { $newwin = ; } # フォロー投稿ボタン $btnfollow = " A href=\"$cgiurl\?m=f\ u=". escstring ( $FORM{ u } ) . " d=$FORM{ d } p=$toppostid s=$postid\ c=$FORM{ c }$addblank$addnewtitle $ks_param- {get}"; if ( !$mode ) { $btnfollow .= "\""; } elsif ( $mode == 3 ) { $btnfollow .= " ac=1\""; } else { #$btnfollow .= " ff=$tlog\""; $btnfollow .= "\ ff=$FORM{ e }\""; } $btnfollow .= "$newwin $txtfollow /A \n"; # 投稿者検索ボタン # target=_blankに置き換え、multizillaのタブで開く # ★と◆はいずれにせよtargetで開く if ( $FORM{ multizilla } ) { $newwin2 = target="_blank" ; } else { $newwin2 = target="link" ; } # 空白投稿は★を表示しない if ( ( $anonymous_search ) || ( ( $user ne $anonymous_word ) ( !$anonymous_search ) ) ) { $btnauthor = " A href=\"$cgiurl\?m\=s\ s\=". escstring ( $user ) . "\ c=$FORM{ c }$addblank$addnewtitle $ks_param- {get}\"". "$newwin2 $txtauthor /A \n"; } else { $btnauthor = ; } # スレッド表示ボタン # 最初の投稿から◆をつける if ( ( !$thread ) ( $first_thread ) ) { $thread = $postid; } # 過去ログのボタン検索は常時◆がつく if ( ( !$thread ) ( $mode == 1 ) ) { $thread = $postid; } if ( ( $thread ) || ( ( !$thread ) ( $first_thread ) ) ) { $btnthread = " A href=\"$cgiurl\?m\=t\ c=$FORM{ c }". "\ s\=$thread$addblank$addnewtitle\ ff=$FORM{ e } $ks_param- {get}\"$newwin2 $txtthread /A \n"; } else { $btnthread = ; } # 掲示板切り替えボタン my $btnchange = ""; if ( $change_buttons ) { $btnchange .= " A href=\"$alturl\?m=f s=$postid ff=$FORM{ e }\" " . " FONT color=\"#$bgc\" $txtfollow /FONT /A \n"; $btnchange .= " A href=\"$alturl\?m=t s=$postid ff=$FORM{ e }\" " . " FONT color=\"#$bgc\" $txtthread /FONT /A \n"; } $btn = " \n $btnfollow $btnauthor $btnthread$btnchange"; } else { $btn = ; } # メールアドレス if ( $mail ) { $user = " A href=\"mailto\ $mail\" $user \/A "; } # _blankで開く if ( $FORM{ multizilla } ) { $msg =~ s/target\=\"link\"/target\=\"_blank\"/g; } # 引用色変更 if ( !$mode ) { $msg =~ s/(^|\r)( gt;[^\r]*)/$1 FONT color=\"#$CC{ qmsgc }\" $2 \/FONT /g; $msg =~ s/ \/FONT \r FONT color=\"#$CC{ qmsgc }\" /\r/g; } elsif ( $mode = 1 $qmsgc ) { $msg =~ s/(^|\r)( gt;[^\r]*)/$1 FONT color=\"#$qmsgc\" $2 \/FONT /g; $msg =~ s/ \/FONT \r FONT color=\"#$qmsgc\" /\r/g; } # 環境変数 if ( $ipprint ) { $envaddr = $phost; } else { $envaddr = ; } if ( $uaprint ) { $envua = $agent; } else { $envua = ; } if ( $ipprint $uaprint ) { $envbr = BR ; } if ( $envaddr || $envua ) { $envlist = qq! \!--$envaddr$envbr$envua-- !; } else { $envlist = ; } # メッセージ表示内容定義 $prtmessage = qq( A name="$postid" /A \n$tmpl_msg); $prtmessage =~ s/(\$[A-Za-z0-9\ \{\}]+)/$1/eeg; return $prtmessage; } ############################################################################### # こわれにくいカウンター処理 ############################################################################### sub counter { my ( @count, @filenumber, @sortedcount, $maxcount, $mincount ); for ( $i = 0 ; $i $countlevel ; $i++ ) { open ( IN, "$countfile$i.dat" ); $count[$i] = IN ; $filenumber{$count[$i]} = $i; close ( IN ); } @sortedcount = sort { $a = $b; } @count; $maxcount = $sortedcount[$countlevel-1]; $mincount = $sortedcount[0]; $maxcount++; if ( open ( OUT, " $countfile$filenumber{$mincount}.dat" ) ) { print OUT $maxcount; close ( OUT ); return $maxcount; } else { return FONT color="red" カウンターファイルの出力エラーです /FONT ; } } ############################################################################### # 参加者カウント ############################################################################### sub mbrcount { my ( @hostbin, @ukey, @cntdata, $mbrcount, $cuser, $ctime, $cadd ); if ( $cntfilename ) { undef @cntdata; $mbrcount = 0; @hostbin = split ( /\./, $ENV{ REMOTE_ADDR } ); for ( $i = 0 ; $i 4 ; $i++ ) { $hostbin[$i] = vec ( pack ( C4 , $hostbin[$i] ), 0, 8 ); } $ukey[0] = $hostbin[0] + $hostbin[1] + $hostbin[2] + $hostbin[3]; $ukey[1] = $hostbin[0] ^ $hostbin[1] $hostbin[2] ^ $hostbin[3]; $ukey[2] = $ukey[0] * $ukey[1]; if ( open ( UCNT, $cntfilename ) ) { eval flock ( UCNT, 1 ) ; seek ( UCNT, 0, 0 ); @cntdata = UCNT ; eval flock ( UCNT, 8 ) ; close ( UCNT ); $cadd = 0; for ( $i = 0 ; $i @cntdata ; $i++ ) { ( $cuser, $ctime ) = split ( /\,/, $cntdata[$i] ); chomp ( $ctime ); if ( $cuser eq $ukey[2] ) { $cntdata[$i] = "$ukey[2],$nowtime\n"; $cadd = 1; $mbrcount++; } elsif ( ( $ctime + $cntlimit ) $nowtime ) { # 除外 $cntdata[$i] = ; } else { $mbrcount++; } } if ( !$cadd ) { push ( @cntdata, "$ukey[2],$nowtime\n" ); $mbrcount++; } } else { push ( @cntdata, "$ukey[2],$nowtime\n" ); $mbrcount++; } open ( UCNT, " $cntfilename" ) || prterror ( 参加者カウントファイルの書き込みに失敗しました。 ); eval flock ( UCNT, 2 ) ; truncate ( UCNT, 0 ); seek ( UCNT, 0, 0 ); print UCNT @cntdata; close ( UCNT ); return " 現在の参加者 $mbrcount名 ($cntlimit秒以内)"; } else { return; } } ############################################################################### # HTMLヘッダ部分表示 ############################################################################### sub prthtmlhead { my $headtitle = $_[0]; # ヘッダ出力 print "Content-type text/html\n"; if ( $gzip $gzipu ( $ENV{ HTTP_ACCEPT_ENCODING } =~ /gzip/ ) ) { print "Content-encoding gzip\n\n"; open ( STDOUT, "| $gzip -1 -c" ); #ODCTYPE付加 print EOF; \n !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" \n !-- gzip enable -- \n EOF } else { print EOF; \n !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" \n !-- gzip disable -- \n EOF } #favicon対応 print EOF; HTML META http-equiv="Content-Type" content="text/html; charset=Shift_JIS" HEAD TITLE $headtitle /TITLE META http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /HEAD $body a name="top" /a EOF #◎なぞ666 require ./nazotop.txt ; } ############################################################################### # エラーメッセージ表示 ############################################################################### sub prterror { my $error = $_[0]; print EOF; Content-type text/html HTML META http-equiv="Content-Type" content="text/html; charset=Shift_JIS" META http-equiv="Pragma" content="no-cache" HEAD META http-equiv="Content-Type" content="text/html; charset=Shift_JIS" META http-equiv="Pragma" content="no-cache" TITLE $FORM{ newtitle } (エラー) /TITLE /HEAD $body H3 $error /H3 /BODY /HTML EOF exit; } ############################################################################### # フォロー画面表示 ############################################################################### sub prtfollow { my $retry = $_[0]; my $success = 0; my $formmsg; loadmessage; prterror ( パラメータがありません。 ) if ( !$FORM{ s }); prthtmlhead ( "$FORM{ newtitle } フォロー投稿" ); print " HR \n"; foreach ( 0 .. @logdata - 1 ) { getmessage ( $logdata[$_] ); if ( $postid eq $FORM{ s } ) { getmessage ( $logdata[$_], 1 ); $success = 1; last; } $i++; } if ( !$success ) { print EOF ; H3 指定されたメッセージが見つかりません。 /H3 /BODY /HTML EOF exit; } if ( !$retry ) { $formmsg = $rmsg; $formmsg =~ s/ gt; gt;.*?\r//g; $formmsg =~ s/ A href=\"m=f\S+\" .* \/A //i; $formmsg =~ s/ A href=\S+ target=\"link\" (\S+) \/A /$1/ig; $formmsg =~ s/\r/\r gt; /g; $formmsg = " gt; $formmsg\r"; $formmsg =~ s/\r gt;\s+\r/\r/g; $formmsg =~ s/\r gt;\s+\r$/\r/g; # 特殊な変換を戻す(色付けとか) $formmsg = change_from_xxx($formmsg); } else { $formmsg = change_from_xxx($FORM{ v }); $formmsg =~ s/\r\r A href=\"m=f\S+\" .* \/A //i; #串弁慶 $formmsg =~ s/\r\rYour ID .*Banned\.//i; } print prtmessage ( 0, , 1 ); if ( !$thread ) { $thread = $postid; } if ( $user =~ /\ A\shref=\"mailto\ .*\"\ (.*)\ \/A\ / ) { $user = $1; } ##trip変更点20060927/trip表示 20071209 if ( $user =~ /(.+)\ EM\ ([^ ]*)\ \/EM\ / ) { $user = $1.$2; } ##プレビュー追加 2007127 print qq{フォロー記事投稿 a href="$cgiurl?$ks_param- {get}" 戻る /a BR }; #print "フォロー記事投稿 a href=\"$cgiurl$ks_param- {get}\" 戻る /a BR "; prtform ( ">$user$fsubj", "$formmsg\r", ); print EOF; BR INPUT type="hidden" name="d" value="$FORM{ d }" FONT size="-1" gzip転送 INPUT type="checkbox" name="g" accesskey="G" $S_gzchk[$gzipu] URL自動リンク INPUT type="checkbox" name="a" accesskey="U" value="checked" $S_alchk[$autolink] /FONT 書込完了表\示 INPUT type="checkbox" name="zwindow" accesskey="U" value="checked" $S_zwchk[$zwindow] INPUT type="submit" name="preview" accesskey="0" value="プレビュー" INPUT type="submit" name="meload" accesskey="Y" value="投稿/未読" INPUT type="hidden" name="g" value="$S_gzchk[$gzipu]" INPUT type="hidden" name="p" value="$FORM{ p }" INPUT type="hidden" name="s" value="$FORM{ s }" INPUT type="hidden" name="h" value="$thread" INPUT type="hidden" name="f" value="$postid $wdate" INPUT type="hidden" name="ac" value="$FORM{ ac }" INPUT type="hidden" name="newtitle" value="$FORM{ newtitle }" INPUT type="hidden" name="multizilla" value="$FORM{ multizilla }" INPUT type="hidden" name="target_blank" value="$FORM{ target_blank }" INPUT type="hidden" name="targetlink" value="$FORM{ targetlink }" INPUT type="hidden" name="gikoitsuoff" value="$FORM{ gikoitsuoff }" $ks_param- {post} HR /FORM /TD TD valign="top" /BODY /HTML EOF exit; } ## ############################################################################### # パスワードチェック ############################################################################### sub chkpasswd {# my $slen; if ( ($adminpost[0] =~ /^\$1\$/) || ($adminpost[1] =~ /^\$1\$/) || ($adminpost[2] =~ /^\$1\$/ ) ) { $slen = 5; } else { $slen = 2; } if ( crypt ( $FORM{ u }, substr ( $adminpost[0], 0, $slen ) ) eq $adminpost[0] ) { return 1; } elsif ( crypt ( $FORM{ u }, substr ( $adminpost[1], 0, $slen ) ) eq $adminpost[1] ) { return 2; } elsif ( crypt ( $FORM{ u }, substr ( $adminpost[2], 0, $slen ) ) eq $adminpost[2] ) { return 3; } else { return 0; } }# ############################################################################### # メッセージチェック ############################################################################### sub chkmessage { my ( @hostbin, $admincheck, $adminfname ); # アノニマイザー経由の投稿を許可/拒否する if ($anonymizer) { if ( ! ( $referer =~ /$cgiurl/i ) ) {#禁止 chkerror ( "投稿画面のURLが BR $cgiurl BR " . 以外からの投稿はできません。 , 3 ); } } else { if ( $referer ! ( $referer =~ /$cgiurl/i ) ) {#許可 chkerror ( "投稿画面のURLが BR $cgiurl BR " . 以外からの投稿はできません。 , 3 ); } } $i = 0; foreach ( split ( /\r/, $FORM{ v } ) ) { if ( length ( $_ ) $maxmsgcol ) { $i++; } } if ( $i != 0 ) { chkerror ( 投稿内容の桁数が大きすぎます。 , 10 ); } if ( ( $FORM{ v } =~ tr/\r/\r/ ) ( $maxmsgline - 1 ) ) { chkerror ( 投稿内容の行数が大きすぎます。 , 11 ); } if ( length ( $FORM{ v } ) $maxmsgsize ) { chkerror ( 投稿内容が大きすぎます。 , 12 ); } if ( $FORM{ pc } ) { @hostbin = split ( /\./, $ENV{ REMOTE_ADDR } ); for ( $i = 0 ; $i 4 ; $i++ ) { $hostbin[$i] = vec ( pack ( C4 , $hostbin[$i] ), 0, 8 ); } $protect_c = $hostbin[0] ^ $hostbin[1] ^ $hostbin[2] ^ $hostbin[3]; $pcheck = ( $FORM{ pc } - $protect_c ) / $protect_b - $protect_a; getnowdate ( $pcheck ); if ( ( $sec 0 ) || ( $sec 60 ) || ( $min 0 ) || ( $min 60 ) || ( $hour 0 ) || ( $hour 24 ) ) { chkerror ( , 32 ); } if ( ( $nowtime - $pcheck ) $S_pstime ) { chkerror ( もう一度やり直して下さい。 , 30 ); } if ( ( $nowtime - $pcheck ) $S_pltime ) { chkerror ( , 31 ); if ( $FORM{ f } ) { prtfollow ( 1 ); } else { prtmain ( $FORM{ t }, $FORM{ v }, $FORM{ l } ); } exit; } } else { chkerror ( フォームデータの一部に欠落があります。もう一度やり直して下さい。 , 33 ); } if ( $FORM{ i } =~ / /i ) { $FORM{ i } = ; } if ( $FORM{ i } ) { if ( ! ( $FORM{ i } =~ /.*\@.*\..*/ ) ) { chkerror ( メールアドレスが正しく入力されていません。 , 20 ); } elsif ( $FORM{ i } =~ /,/ ) { chkerror ( メールアドレスは複数指定できません。 , 21 ); } } if ( !$FORM{ t } ) { $FORM{ t } = $notitle; } if ( !$FORM{ u } ) { if ( !$anonymous_post ) { # 無記名投稿の禁止 chkerror ( 投稿者名が正しく入力されていません。 , 22 ); } else { $FORM{ u } = $anonymous_word; } } else { if ( chkpasswd ) { if ( $FORM{ v } =~ /^$adminkey/ ) { require sub/bbsadmin.pl ; adminmain; exit; } else { if ( chkpasswd eq 1) { $FORM{ u } = $adminname[0]; $FORM{ i } = $adminmail[0]; } elsif ( chkpasswd eq 2) { $FORM{ u } = $adminname[1]; $FORM{ i } = $adminmail[1]; } elsif ( chkpasswd eq 3) { $FORM{ u } = $adminname[2]; $FORM{ i } = $adminmail[2]; } } } elsif ( $FORM{ u } eq $adminpost[0] ) { $FORM{ u } = "$adminname[0](ハカー)"; } elsif ( $FORM{ u } eq $adminpost[1] ) { $FORM{ u } = "$adminname[1](ハカー)"; } elsif ( $FORM{ u } eq $adminpost[2] ) { $FORM{ u } = "$adminname[2](ハカー)"; } else { foreach $hadminname (@adminname) { $adminfname = quotemeta $hadminname; if ( $FORM{ u } =~ /$adminfname/i ) { $admincheck = $FORM{ u }; $admincheck =~ s/ //g; $admincheck =~ s/ //g; $admincheck =~ s/_//g; if ( ( $admincheck eq $adminname[0] ) ( $FORM{ i } ) ) { $FORM{ u } =~ s/$adminfname/$adminname[0](騙り)/; } if ( ( $admincheck eq $adminname[1] ) ( $FORM{ i } ) ){ $FORM{ u } =~ s/$adminfname/$adminname[1](騙り)/; } if ( ( $admincheck eq $adminname[2] ) ( $FORM{ i } ) ){ $FORM{ u } =~ s/$adminfname/$adminname[2](騙り)/; } } } #================================================== # トリップ変換 #================================================== # 参考っていうかパクり元 # http //hon7.hp.infoseek.co.jp/ # 404になってしまった… # bbs.cgi 894行目の下にこれを追加 if ( $tripuse ) { $FORM{ u } =~ s/\◆/\◇/g; if ( $FORM{ u } =~ /#(.+)/ ) { my $trip; my $key = $1; my $salt = substr( $key."H.", 1, 2 ); $salt =~ s/[^\.-z]/\./g; $salt =~ tr/ ; = ?@[\\]^_`/ABCDEFGabcdef/; $trip = EM ◆ . substr( crypt ( $key, $salt ), -10 ) . /EM ; # トリップを名前に追加 $FORM{ u } =~ s/#.+/$trip/ if ( $trip ); } } #### if ( $FORM{ u } eq 生入 ) { $FORM{ u } = 生入 . EM (^Д^) . "$addr /EM "; } #### } } if ( $autolink ) { #$FORM{ v } =~ s#((https?|ftp|gopher|telnet|whois|news) //(=[\x21-\xfc]+|[\x21-\x7e])+)# A href="$1" target="link" $1 /A #ig; #コンマ等対策 20071203 thanks 生入 $FORM{ v } =~ s#((https?|ftp|mms) //(=[\x21-\xfc\0]+|[\x21-\x7e\0])+)# a href="$1" target="link" $1 /a #ig; } # URLを入れるフォームでjavascript ~潰し #javascript open( http //strange.kurumi.ne.jp/bbs.cgi ); #javascript for(;;){window.open();} #javascript open( ../diary/diary.html ); if ( $FORM{ l } =~ /javascript/i ) { $FORM{ l } =~ s/ /:/gi; } if ( $FORM{ l } =~ /\s+/ || !$FORM{ l } ) { $FORM{ l } = ; } else { #$FORM{ l } =~ s/http \/\/http \/\//http \/\//; #コンマ等対策 20071203 thanks 生入 自動リンク欄に追加 #$FORM{ v } .=~ s#((https?|ftp|mms) //(=[\x21-\xfc\0]+|[\x21-\x7e\0])+)#\r\r a href="$1" target="link" $1 /a #ig; #$FORM{ v } .= "\r\r A href=\"$FORM{ l }\" $FORM{ l } /A "; $FORM{ l } =~ s/http \/\/http \/\//http \/\//; $FORM{ v } .= "\r\r A href=\"$FORM{ l }\" target=\"link\" $FORM{ l } /A "; } if ( $FORM{ f } ) { ( $i, $j ) = split ( / /, $FORM{ f } ); $FORM{ v } .= "\r\r A href=\"m=f\ s=$i\ r=$j\" 参考:$j /A "; } # date 2003/12/01 # 特殊な変換を行う(色付けとか) #$FORM{ v } = change_to_xxx($FORM{ v }); # NGネーム if ($ngnameon) { ngnamepre; } } ############################################################################### # メッセージチェックエラー処理 ############################################################################### sub chkerror { my $errstr = $_[0]; $posterr = $_[1]; prterror ( $errstr ) if ( $errstr ); } ############################################################################### #プレビュー画面(20071217) ############################################################################### sub msgpreview{ prthtmlhead ( "$FORM{ newtitle } プレビュー $qb" ); print " HR \n"; my $msgdata = "$nowtime,$newpostid,$FORM{ pc },$FORM{ h },$host,$agent,$FORM{ u },$FORM{ i },$FORM{ t },$FORM{ v }\n"; my $formmsg = change_from_xxx($FORM{ v }); my $pretit = $FORM{ t }; my $follow = $FORM{ f }; #串弁慶(20071217) $formmsg =~ s/\r\rYour ID .*Banned\.//i; #javascript #$formmsg =~ s/^ lt;script(.*)\/script gt;$//i; $formmsg =~ s/\0/,/g; $formmsg =~ s/\r\r A href=\"m=f\S+\" .* \/A //i; $formmsg =~ s/ A href=\S+ target=\"link\" (\S+) \/A /$1/ig; getmessage ( $msgdata ); print prtmessage ( 0, , 1 ); print "記事投稿 プレビュー a href=\"?$ks_param- {get}\" 戻る /a BR "; $FORM[ f ] = $follow; #if( $FORM[ f ] ){ #$posterr = 2; #return; # } prtform ( "$pretit", "$formmsg\r", ); print EOF; BR INPUT type="hidden" name="d" value="$FORM{ d }" FONT size="-1" gzip転送 INPUT type="checkbox" name="g" accesskey="G" $S_gzchk[$gzipu] URL自動リンク INPUT type="checkbox" name="a" accesskey="U" value="checked" $S_alchk[$autolink] /FONT 書込完了表\示 INPUT type="checkbox" name="zwindow" accesskey="U" value="checked" $S_zwchk[$zwindow] INPUT type="submit" name="preview" accesskey="0" value="プレビュー" INPUT type="submit" name="meload" accesskey="Y" value="投稿/未読" INPUT type="hidden" name="g" value="$S_gzchk[$gzipu]" INPUT type="hidden" name="p" value="$FORM{ p }" INPUT type="hidden" name="s" value="$FORM{ s }" INPUT type="hidden" name="h" value="$thread" INPUT type="hidden" name="f" value="$FORM[ f ]" INPUT type="hidden" name="ac" value="$FORM{ ac }" INPUT type="hidden" name="newtitle" value="$FORM{ newtitle }" INPUT type="hidden" name="multizilla" value="$FORM{ multizilla }" INPUT type="hidden" name="target_blank" value="$FORM{ target_blank }" INPUT type="hidden" name="targetlink" value="$FORM{ targetlink }" INPUT type="hidden" name="gikoitsuoff" value="$FORM{ gikoitsuoff }" $ks_param- {post} HR /FORM /TD TD valign="top" /BODY /HTML EOF exit; } ############################ ############################################################################### # メッセージ登録 ############################################################################### sub putmessage { my $oldlogext; open ( FLOG, "+ $logfilename" ) || prterror ( メッセージ読み込みに失敗しました ); eval flock ( FLOG, 2 ) ; seek ( FLOG, 0, 0 ); @logdata = FLOG ; $i = 0; $posterr = 0; while ( $logdata[$i] !$posterr ) { @items = split ( /\,/, $logdata[$i] ); $items[9] =~ s/\n$//; $posterr = 1 if ( $i $checkcount $FORM{ v } eq $items[9] ); $posterr = 2 if ( $FORM{ pc } eq $items[2] ); $posterr = 2 if ( $host ( $host eq $items[4] ) ( $nowtime ( $items[0] + $sptime ) ) ); $i++; } if ( !$posterr ) { @items = split ( /\,/, $logdata[0] ); $newpostid = $items[1] + 1; # ここでデータを記録 $msgdata = "$nowtime,$newpostid,$FORM{ pc },$FORM{ h },$host,$agent,$FORM{ u },$FORM{ i },$FORM{ t },$FORM{ v }\n"; @logdata = @logdata[0 .. $logsave - 2] if ( @logdata = $logsave ); unshift ( @logdata, $msgdata ); $oldstream = select ( FLOG ); $| = 1; seek ( FLOG, 0, 0 ); truncate ( FLOG, 0 ); print FLOG @logdata; eval flock ( FLOG, 8 ) ; close ( FLOG ); select ( $oldstream ); getnowdate ( $nowtime ); # 過去ログ出力 if ( $oldlogfiledir ) { if ( !$oldlogfmt ) { $oldlogext = html ; } else { $oldlogext = dat ; } if ( !$oldlogsavesw ) { $oldlogfilename = sprintf ( "%s/%d%02d%02d.$oldlogext", $oldlogfiledir, $year, $mon, $mday ); } else { $oldlogfilename = sprintf ( "%s%d%02d.$oldlogext", $oldlogfiledir, $year, $mon ); } open ( CLOG, " $oldlogfilename" ) || prterror ( 過去ログ出力に失敗しました ); eval flock ( CLOG, 2 ) ; $oldstream = select ( CLOG ); $| = 1; if ( !$oldlogfmt ) { if ( -z CLOG ) { print CLOG EOF; HTML META http-equiv="Content-Type" content="text/html; charset=Shift_JIS" HEAD META http-equiv="Content-Type" content="text/html; charset=Shift_JIS" TITLE $bbstitle /TITLE /HEAD BODY bgcolor="#$bgc" text="#$textc" link="#$linkc" vlink="#$vlinkc" alink="#$alinkc" HR EOF } getmessage ( $msgdata ); print CLOG prtmessage ( 1, ); } else { print CLOG $msgdata; } eval flock ( CLOG, 8 ) ; close ( CLOG ); select ( $oldstream ); chmod 0400, $logfilename if ( ( -s $oldlogfilename ) $maxoldlogsize ); getnowdate ( time - $difftime - $oldlogsaveday * 60 * 60 * 24 ); $oldlogfilename = sprintf ( "%s/%d%02d%02d.$oldlogext", $oldlogfiledir, $year, $mon, $mday ); unlink $oldlogfilename; putcookie ( 0 ) if ( $cookie ); } } else { eval flock ( FLOG, 8 ) ; close ( FLOG ); if ( $posterr == 2 ) { chkerror ( , $posterr ); if ( $FORM{ f } ) { prtfollow ( 1 ); } else { prtmain ( $FORM{ t }, $FORM{ v }, $FORM{ l } ); } exit; } } } ############################################################################### # Cookie取得 ############################################################################### sub getcookie { if ( $ENV{ HTTP_COOKIE } ) { $ENV{ HTTP_COOKIE } =~ /^c\=u\=(.*)\ m\=(.*) c\=(.*)$/; $FORM{ u } = $1 if ( $1 !$FORM{ u } ); $FORM{ i } = $2 if ( $2 !$FORM{ i } ); $FORM{ c } = $3 if ( ( length ( $3 ) == 3 ) || ( length ( $3 ) == 33 ) ); $FORM{ c } =~ s/;$//; $FORM{ u } =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack ( "C", hex ( $1 ) )/eg; $FORM{ i } =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack ( "C", hex ( $1 ) )/eg; } } ############################################################################### # Cookie送信 ############################################################################### sub putcookie { my ( $cuser, $cmail, @ctime, $cmday, $cmon, $cdate ); my $cexpdif = $_[0]; $cuser = escstring ( $FORM{ u } ); $cmail = escstring ( $FORM{ i } ); ( @ctime ) = gmtime ( time + $S_cexp - $cexpdif ); $cmday = ( Sunday , Monday , Tuesday , Wednesday , Thursday , Friday , Saturday )[$ctime[6]]; $cmon = ( Jan , Feb , Mar , Apr , May , Jun , Jul , Aug , Sep , Oct , Nov , Dec )[$ctime[4]]; $cdate = sprintf ( "%s, %02d\-%s\-%04d %02d %02d %02d GMT", $cmday, $ctime[3], $cmon, $ctime[5] + 1900, $ctime[2], $ctime[1], $ctime[0] ); print "Set-Cookie c=u=$cuser m=$cmail c=$FORM{ c }; expires=$cdate; path=/\n"; } ############################################################################### # プロテクトコード生成 ############################################################################### sub pcode { my ( @hostbin, @pkey, @pkeystr, @apkey ); srand ( time | $$ ); #$nowtime = time - $difftime * 60 * 60; @hostbin = split ( /\./, $ENV{ REMOTE_ADDR } ); for ( $i = 0 ; $i 4 ; $i++ ) { $hostbin[$i] = vec ( pack ( C4 , $hostbin[$i] ), 0, 8 ); } $protect_c = $hostbin[0] ^ $hostbin[1] ^ $hostbin[2] ^ $hostbin[3]; $pkey[0] = ( $nowtime + $protect_a ) * $protect_b + $protect_c; $pkey[1] = $pkey[0] - int ( rand ( 64 ) ); $pkey[2] = $pkey[1] + int ( rand ( 128 ) ); $pkeystr[0] = "\n INPUT type=\"hidden\" name=\"pc\" value=\"$pkey[0]\" \n"; $pkeystr[1] = " !--\n INPUT type=\"hidden\" name=\"pc\" value=\"$pkey[1]\" \n -- "; $pkeystr[2] = " !--\n INPUT type=\"hidden\" name=\"pc\" value=\"$pkey[2]\" \n -- "; push ( @apkey, splice ( @pkeystr, rand ( @pkeystr ), 1 ) ) while @pkeystr; @pkeystr = @apkey; return "$pkeystr[0]$pkeystr[1]$pkeystr[2]"; } ############################################################################### # フォーム部分表示 ############################################################################### sub prtform { my $dtitle = $_[0]; my $dmsg = $_[1]; my $dlink = $_[2]; my ( $bbslink, $gzipchk, $counter, $mbrcount ); # プロテクトコード生成 my $ptext = pcode; # カウンタ $counter = counter; $mbrcount = mbrcount; if ( $gzip ) { $gzipchk = qq# FONT size="-1" gzip圧縮転送 INPUT type="checkbox" name="g" accesskey="G" $S_gzchk[$gzipu] /FONT #; } else { $gzipchk = ; } # ログ読み専用画面、下のリロードの不具合を修正 if ( $FORM{ m } eq o || $FORM{ m } eq op || $FORM{ rm } eq o ) { # ログ読み専用フォーム ##プレビュー追加 20071217 print EOF; FORM method="$formmethod" action="$cgiurl" INPUT type="hidden" name="m" value="op" INPUT type="hidden" name="k" value="あ" INPUT type="hidden" name="c" value="$FORM{ c }" P FONT size="-1" 表\示件数 INPUT size="6" type="text" name="d" accesskey="1" value="$FORM{ d }" $gzipchk FONT size="-1" URL自動リンク INPUT type="checkbox" name="a" accesskey="U" $S_alchk[$autolink] /FONT FONT size="-1" Link行のOFF INPUT type="checkbox" name="linkline" accesskey="l" value="checked" $FORM{ linkline } /FONT FONT size="-1" 書込完了表\示 INPUT type="checkbox" name="zwindow" accesskey="X" value="checked" $FORM{ zwindow } /FONT INPUT type="submit" name="setup" accesskey="C" value="設定" /FONT /P $keikoku FONT size="-1" $countdate から $counter(こわれにくさレベル$countlevel)$mbrcount /FONT EOF if ($FORM{ linkline }) { require ./config.txt ; linklineoff; } else { require ./config.txt ; linklineon; } print EOF; FONT size="-1" $txtfollow フォロー投稿画面表\示 $txtauthor 投稿者検索表\示 $txtthread スレッド表\示 最大登録件数 $logsave件 /FONT HR INPUT type="submit" name="reload" value="リロード" accesskey="R" INPUT type="submit" name="preview" accesskey="0" value="プレビュー" INPUT type="submit" name="meload" accesskey="Y" value="未読" a href="#bottom" ▼ /a a class="ZanzanMsgdisp" href="./bbs.cgi?p=5498319 c=900" accesskey="J" 最新30件 /a INPUT type="hidden" name="p" value="$toppostid" INPUT type="hidden" name="multizilla" value="$FORM{ multizilla }" INPUT type="hidden" name="newtitle" value="$FORM{ newtitle }" INPUT type="hidden" name="target_blank" value="$FORM{ target_blank }" INPUT type="hidden" name="targetlink" value="$FORM{ targetlink }" INPUT type="hidden" name="gikoitsuoff" value="$FORM{ gikoitsuoff }" $ks_param- {post} /FORM EOF } else { # 標準投稿フォーム ##----------------なぞモード用-------------- $contents_warning ="(適当に改行を入れてください。タグは使えません。内容を書かずに投稿ボタンを押すとリロードになります)"; #◎666特別扱い if (( $FORM{ nazo } ) ( $FORM{ nazo } ne 666 ) ) { $contents_warning ="(適当に改行を入れてください。なぞモード。内容を書かずに投稿ボタンを押すとリロードになります)"; } ##------------------------------------------- ##プレビュー追加 2007127 print EOF; FORM method="$formmethod" action="$cgiurl" INPUT type="hidden" name="m" value="p" 投稿者 INPUT size="20" type="text" name="u" accesskey="1" maxlength="30" value="$FORM{ u }" BR メール INPUT size="30" type="text" name="i" accesskey="2" maxlength="255" value="$FORM{ i }" BR 題名 INPUT size="30" type="text" name="t" accesskey="3" maxlength="40" value="$dtitle" INPUT type="submit" name="post" value="投稿/リロード" accesskey="R" INPUT type="submit" name="preview" accesskey="0" value="プレビュー" INPUT type="reset" accesskey="K" value="消す" a href="./zantei_color.cgi" [?] /a BR BR 内容 FONT size="-1" I $contents_warning /I /FONT BR TEXTAREA rows="5" cols="70" wrap="off" name="v" accesskey="4" $dmsg /TEXTAREA BR BR URL FONT size="-1" I (リンクを入れたい場合はここに記入します) /I /FONT BR INPUT size="70" type="text" name="l" accesskey="5" maxlength="255" value="$dlink" $ptext INPUT type="hidden" name="k" value="あ" INPUT type="hidden" name="c" value="$FORM{ c }" EOF if ( $FORM{ m } ne f !$FORM{ f } ) { print EOF; P FONT size="-1" 表\示件数 INPUT size="6" type="text" name="d" accesskey="6" value="$FORM{ d }" $gzipchk FONT size="-1" URL自動リンク INPUT type="checkbox" name="a" accesskey="U" $S_alchk[$autolink] /FONT FONT size="-1" Link行のOFF INPUT type="checkbox" name="linkline" accesskey="l" value="checked" $FORM{ linkline } /FONT FONT size="-1" 書込完了表\示 INPUT type="checkbox" name="zwindow" accesskey="X" value="checked" $FORM{ zwindow } /FONT INPUT type="submit" name="setup" accesskey="C" value="設定" /FONT /P $keikoku FONT size="-1" $countdate から $counter(こわれにくさレベル$countlevel)$mbrcount /FONT EOF if ($FORM{ linkline }) { require ./config.txt ; linklineoff; } else { require ./config.txt ; linklineon; } print EOF; FONT size="-1" $txtfollow フォロー投稿画面表\示 $txtauthor 投稿者検索表\示 $txtthread スレッド表\示 最大登録件数 $logsave件 /FONT HR INPUT type="submit" name="post" value="投稿/リロード" INPUT type="submit" name="preview" accesskey="0" value="プレビュー" INPUT type="submit" name="meload" accesskey="Y" value="未読" a href="#bottom" ▼ /a a class="ZanzanMsgdisp" href="./bbs.cgi?p=5498319 c=900" accesskey="J" 最新30件 /a INPUT type="hidden" name="p" value="$toppostid" INPUT type="hidden" name="multizilla" value="$FORM{ multizilla }" INPUT type="hidden" name="newtitle" value="$FORM{ newtitle }" INPUT type="hidden" name="target_blank" value="$FORM{ target_blank }" INPUT type="hidden" name="targetlink" value="$FORM{ targetlink }" INPUT type="hidden" name="gikoitsuoff" value="$FORM{ gikoitsuoff }" $ks_param- {post} /FORM EOF } } } ############################################################################### # 画面表示 ############################################################################### sub prtmain { my ( $prtmessage, $dispcount, @pkeystr, $msgmore, $msgnext, $cntnext ); my $dtitle = $_[0]; my $dmsg = $_[1]; my $dlink = $_[2]; loadmessage; $prtmessage = ; # 最新のPOSTIDを取得(0件リロード用) $logdata[0] =~ /^.*,(.*),.*,.*,.*,.*,.*,.*,.*,.*/; $toppostid = $1; # メッセージ表示件数設定 #if ( $FORM{ d } == 0 ) { if ( ( $FORM{ d } == 0 ) || ( $FORM{ meload } ) ) { $dispcount = $toppostid - $FORM{ p }; $cntnext = $msgdisp; } else { $dispcount = $FORM{ d }; $cntnext = $FORM{ d }; } # 表示メッセージ作成 $msgtop = $bmsg + $dispcount; $msgtop = @logdata if ( $msgtop @logdata ); $j = 0; if ( $FORM{ d } == 0 $reltype ) { for ( $i = $msgtop - 1 ; $i = $bmsg ; $i-- ) { getmessage ( $logdata[$i] ); $prtmessage .= prtmessage ( 0, ); $j++ } } else { for ( $i = $bmsg ; $i $msgtop ; $i++ ) { getmessage ( $logdata[$i] ); $prtmessage .= prtmessage ( 0, ); $j++ } } # === ここから === # tree表示 if ($FORM{ tree }) { require ./sub/ks_treeview.pl ; $prtmessage = output_treeview($bmsg, $msgtop); } # === ここまで === $bmsg++; if ( $j 0 ) { $msgmore = "以上は、現在登録されている新着順$bmsg番目から$msgtop番目までの記事です。" } else { $msgmore = 未読メッセージはありません。 ; # 擬古猫といっしょ $gikonekotoissho = FONT size="-1" [ A HREF="./gikonekoadd.cgi" target="link" 擬古猫にことばを教える /A ] /FONT ; } if ( $logdata[$msgtop] $j 0 ) { # ログ読み専用画面、下のリロードの不具合を修正 if ( $FORM{ m } eq o || $FORM{ m } eq op || $FORM{ rm } eq o ) { $romnext= INPUT type="hidden" name="rm" value="o" ; $romreload= INPUT type="hidden" name="m" value="o" ; } $msgnext = EOF; TABLE TR TD FORM method="$formmethod" action="$cgiurl" $romnext INPUT type="hidden" name="m" value="n" INPUT type="hidden" name="b" value="$msgtop" INPUT type="hidden" name="u" value="$FORM{ u }" INPUT type="hidden" name="d" value="$cntnext" INPUT type="hidden" name="c" value="$FORM{ c }" INPUT type="hidden" name="linkline" value="$FORM{ linkline }" INPUT type="hidden" name="multizilla" value="$FORM{ multizilla }" INPUT type="hidden" name="newtitle" value="$FORM{ newtitle }" INPUT type="hidden" name="target_blank" value="$FORM{ target_blank }" INPUT type="hidden" name="targetlink" value="$FORM{ targetlink }" INPUT type="hidden" name="gikoitsuoff" value="$FORM{ gikoitsuoff }" INPUT type="submit" name="pnext" value="次のページ" $ks_param- {post} /FORM /TD TD FORM method="$formmethod" action="$cgiurl" $romreload INPUT type="hidden" name="u" value="$FORM{ u }" INPUT type="hidden" name="p" value="$toppostid" INPUT type="hidden" name="d" value="$FORM{ d }" INPUT type="hidden" name="c" value="$FORM{ c }" INPUT type="hidden" name="linkline" value="$FORM{ linkline }" INPUT type="hidden" name="multizilla" value="$FORM{ multizilla }" INPUT type="hidden" name="newtitle" value="$FORM{ newtitle }" INPUT type="hidden" name="target_blank" value="$FORM{ target_blank }" INPUT type="hidden" name="targetlink" value="$FORM{ targetlink }" INPUT type="hidden" name="gikoitsuoff" value="$FORM{ gikoitsuoff }" INPUT type="submit" name="reload" value="リロード" INPUT type="submit" name="meload" accesskey="Y" value="未読" $ks_param- {post} /FORM /TD TD a href="#top" ▲ /a /TD /TR /TABLE EOF } else { $msgmore .= これ以下の記事はありません。 ; $msgnext = ; } # メイン出力 prthtmlhead ( "$FORM{ newtitle }" ); # ログ読み画面で、新規投稿へのをリンクを追加 if ( $FORM{ m } eq o || $FORM{ m } eq op ) { # ログ読み専用フォーム $bbslink = qq# A href="$cgiurl?c=$FORM{ c } $ks_param- {get}" 標準画面 /A #; $shinkitoukou = " A HREF=\"$cgiurl?c=100 d=-1 $ks_param- {get}\" target=\"link\" 新規投稿 /A \n"; } else { # 標準投稿フォーム $bbslink = qq# A href="$cgiurl?m=o c=$FORM{ c } $ks_param- {get}" ログ読み画面 /A #; } # 標準、ツリー、のリンク設定 my $treelink; my $treemode = $ks_param- get_param( tree ); if ($treemode) { # ツリーモードなら $ks_param- set_param(tree = ); $treelink = qq~ a href="$cgiurl?$ks_param- {get}" 標準表\示 /a ~; } else { # 標準モードなら $ks_param- set_param(tree = on ); $treelink = qq~ a href="$cgiurl?$ks_param- {get}" ツリー表\示 /a ~; } $ks_param- set_param(tree = $treemode); # / #暫定カラー表示----------- # 標準、ツリー、のリンク設定 my $zcolor_link; my $zcolor_mode = $ks_param- get_param( zcolor ); if ($zcolor_mode) { # カラーオフなら $ks_param- set_param(zcolor = ); $zcolor_link = qq~ a href="$cgiurl?$ks_param- {get}" カラー表\示 /a ~; } else { # カラーなら $ks_param- set_param(zcolor = off ); $zcolor_link = qq~ a href="$cgiurl?$ks_param- {get}" カラーオフ /a ~; } $ks_param- set_param(zcolor = $zcolor_mode); # / print EOF; P a href="$icgi" B FONT color=$textc size="+1" $FORM{ newtitle } /FONT /a /B FONT size="-1" A href="$infopage" 広報室 /A 連絡先 A href="mailto $adminmail[9]" 0 /A !-- A href="mailto $adminmail[0]" 1 /A -- A href="mailto $adminmail[1]" 2 /A A href="mailto $adminmail[2]" 3 /A $bbslink a href="$icgi" ZANTEi-mode /a $treelink $zcolor_link $shinkitoukou a href="#bottom" ▼ /a /FONT /P EOF prtform ( $dtitle, $dmsg, $dlink ); if ( ( ! $FORM{ gikoitsuoff } ) ( $gikonekotoissho ) ) { print EOF; HR $prtmessage P I FONT size="-1" $msgmore /FONT /I $gikonekotoissho /P $msgnext HR EOF # 擬古猫といっしょ require ./gikoneko.pl ; gikoneko; print HR ; print EOF; P align="right" $copyright /P a name="bottom" /a /TD TD valign="top" /BODY /HTML EOF } else { print EOF; HR $prtmessage P I FONT size="-1" $msgmore /FONT /I /P $msgnext HR P align="right" $copyright /P a name="bottom" /a /BODY /HTML EOF } } ############################################################################### # 個人用設定反映 ############################################################################### sub refcustom { if ( $FORM{ c } ) { # 旧個人設定URLと互換性を保つ if ( length ( $FORM{ c } ) == 33 ) { $FORM{ c } =~ /^(\w\w\w\w\w\w)(\w\w\w\w\w\w)(\w\w\w\w\w\w)(\w\w\w\w\w\w)(\w\w\w\w\w\w)(\w)(\w)(\w)$/; $CC{ text } = $1; $CC{ bg } = $2; $CC{ link } = $3; $CC{ vlink } = $4; $CC{ qmsgc } = $5; $CC{ subj } = $subjc;#$CC{ text }; $i = hex ( $7 ); $j = hex ( $8 );# 予備 $k = hex ( $9 );# 予備 } elsif ( length ( $FORM{ c } ) == 39 ) { $FORM{ c } =~ /^(\w\w\w\w\w\w)(\w\w\w\w\w\w)(\w\w\w\w\w\w)(\w\w\w\w\w\w)(\w\w\w\w\w\w)(\w\w\w\w\w\w)(\w)(\w)(\w)$/; $CC{ text } = $1; $CC{ bg } = $2; $CC{ link } = $3; $CC{ vlink } = $4; $CC{ qmsgc } = $5; $CC{ subj } = $6; #$CC{ subj } = $subjc;#$CC{ text }; $i = hex ( $7 ); $j = hex ( $8 );# 予備 $k = hex ( $9 );# 予備 } elsif ( length ( $FORM{ c } ) == 3 ) { $FORM{ c } =~ /^(\w)(\w)(\w)$/; $CC{ text } = $textc; $CC{ bg } = $bgc; $CC{ link } = $linkc; $CC{ vlink } = $vlinkc; $CC{ qmsgc } = $qmsgc; $CC{ subj } = $subjc; $i = hex ( $1 ); $j = hex ( $2 );# 予備 $k = hex ( $3 );# 予備 } $gzipu = int ( $i / 8 ); $reltype = int ( $i % 8 / 4 ); $followwin = int ( $i % 8 % 4 / 2 ); $autolink = ( $i % 8 % 4 % 2 ); if ( $FORM{ m } eq p || $FORM{ m } eq op ) { if ( $FORM{ a } ) { $autolink = 1; } else { $autolink = 0; } if ( $FORM{ g } ) { $gzipu = 1; } else { $gzipu = 0; } } } else { $CC{ text } = $textc; $CC{ bg } = $bgc; $CC{ link } = $linkc; $CC{ vlink } = $vlinkc; $CC{ qmsgc } = $qmsgc; $CC{ subj } = $subjc; $gzipu = $FORM{ g } if ( $FORM{ m } eq g ); } $i = sprintf ( "%x", $autolink + $followwin * 2 + $reltype * 4 + $gzipu * 8 ); $j = 0; $k = 1; if ( ( $CC{ text } eq $textc ) ( $CC{ bg } eq $bgc ) ( $CC{ link } eq $linkc ) ( $CC{ vlink } eq $vlinkc ) ( $CC{ qmsgc } eq $qmsgc ) ( $CC{ subj } eq $subjc ) ) { $FORM{ c } = "$i$j$k"; } else { $FORM{ c } = "$CC{ text }$CC{ bg }$CC{ link }$CC{ vlink }$CC{ qmsgc }$CC{ subj }$i$j$k"; } } # Show Script################## nine ravenes から sub mode_script { #ヘッダ print STDOUT "Content-type text/plain\n"; print STDOUT "\n"; #ファイルオープン open ( IN, "./bbs.cgi" ); while ( IN ) { #パスワード変換 s/pwd_admin(\s+)= "([^\"]*)"/\pwd_admin\1= "\*\*\*\*\*\*"/g; print; } #ファイルクローズ close ( IN ); #フッタ print STDOUT "\n"; print STDOUT "# ___EOF___\n"; #終了 exit; } #=============================================== #use Digest MD5; #use Digest MD5 qw(md5_hex); sub get_2ch_id { my $bbskey = shift; my $rand = shift; my $ip = $ENV{ REMOTE_HOST }; my $day = ( localtime )[3]; my $md5 = Digest MD5- new(); my $ipmd5 = substr( md5_hex( $ip ), -4 ); $md5 - add( $ipmd5 ); $md5 - add( $bbs ); $md5 - add( $day ); $md5 - add( $rand ); my $id = substr( $md5- b64digest, 0, 8 ); return $id; } # printf "ID %s", get_2ch_id( bbskey , rand ); # # bbskey は板の名前 # rand は /dev/rand から読み出した16バイトの乱数文字列 # ただし ( localtime )[3] の値がおなじ間は変化しない(再利用する)こと。 ############################################################################### # メイン ############################################################################### getformdata; jconv; getenv; getcookie if ( $cookie ); $nowtime = time - $difftime * 60 * 60; # パラメータ管理のための$ks_paramを生成 # $ks_param- {post} に form 用 # $ks_param- {get} にリンク用のパラメータが入っています require ./sub/ks_param.pl ; $ks_param = ks_param- new- set_param( tree= $FORM{tree}, color_newmsg= $FORM{color_newmsg}, color_branch= $FORM{color_branch}, #なぞモード(タグ一部許可,画像展開) nazo= $FORM{nazo}, #カラーオフ zcolor= $FORM{zcolor}, #リンク行 linkline= $FORM{linkline}, #書き込み完了ウインドウ zwindow= $FORM{zwinodow}, #省略・非表示 # linelimit= collimit= lineswitch= colswitch= linelimit= $FORM{linelimit}, collimit= $FORM{collimit}, lineswitch= $FORM{lineswitch}, colswitch= $FORM{colswitch}, ); if ( $FORM{ m } eq c ) { require ./sub/bbscust.pl ; setcustom; exit; } # なぞモード======================= if ( $FORM{ nazo } eq 777 ) { # 掲示板の名前 $bbstitle= なぞ掲示板777@暫定 ; $alturl = http //www.ge.st98.arena.ne.jp/cgi-bin/bbs.cgi ; $bgc = $alt_bgc; $textc = $alt_textc; $linkc = $alt_linkc; $vlinkc = $alt_vlinkc; $alinkc = $alt_alinkc; $subjc = $alt_subjc; $qmsgc = $alt_qmsgc; } #================================== if ( !$FORM{ newtitle } ) { $FORM{ newtitle } = $bbstitle; } # 個人用設定反映 refcustom; $body = qq( BODY bgcolor="#$CC{ bg }" text="#$CC{ text }" link="#$CC{ link }" vlink="#$CC{ vlink }" alink="#$alinkc" ); # Getlog if ( $FORM{ m } eq g ) { require ./sub/bbslog.pl ; getlog; exit; } # トピック一覧 if ( $FORM{ m } eq l ) { require ./sub/bbstopic.pl ; lsttopic; exit; } # 管理モード if ( $FORM{ ad } ) { require ./sub/bbsadmin.pl ; adminmain; exit; } if ( ( !$adminpost[0] ) || ( !$adminpost[1] ) || ( !$adminpost[2] ) ) { require ./sub/bbsadmin.pl ; setpass; exit; } if ( $FORM{ show_script } eq on) { mode_script; } # 個人用設定 if ( $FORM{ setup } ) { require ./sub/bbscust.pl ; prtcustom; exit; } # 表示件数設定 # if ($FORM{ zeload }) { # $FORM{ d } = 0; # } elsif ( $FORM{ d } ne ) { # ログファイル名 # 過去ログ保存用ディレクトリの名前 if ( $FORM{ d } ne ) { if ( $FORM{ d } $logsave ) { $FORM{ d } = $logsave; } } else { $FORM{ d } = $msgdisp; } if ( $FORM{ m } eq p $FORM{ v } !$FORM{ reload } ) { if ( ($anonyproxylimit) ($anonyproxyflg) ) { prterror ( 現在、匿名proxy変数を出力するホストにはアクセス制限をしています。 ); } $postid = 0; $posterr = 0; if ( $ENV{ CONTENT_TYPE } eq application/x-www-form-urlencoded ) { chkmessage; ##プレビュー######### msgpreview() if ( ($FORM{ preview }) || ($qb != (0) )); ##プレビュー######### putmessage; } else { $posterr = 255; } if ( $FORM{ zwindow } || $FORM{ ac } || ( $FORM{ f } !$followwin ) ) { prthtmlhead ( "$FORM{ newtitle } 書き込み完了" ); print EOF; H1 a href="$cgiurl?$ks_param- {get}" 書き込み完了 /a /H1 /BODY /HTML EOF exit; } undef $FORM{ f }; } elsif ( $FORM{ m } eq f ) { prtfollow ( 0 ); } elsif ( $FORM{ m } eq s || $FORM{ m } eq t ) { require ./sub/bbssrc.pl ; srcmessage; } else { if ( $FORM{ m } eq n ) { $bmsg = $FORM{ b }; } else { $bmsg = 0; } } prtmain ( , , ); exit; __END__