MACHIKA WEB 無料「営業日・お知らせカレンダーCGI」 v1.0
============================================================

【できること】
・月間営業日カレンダーを公開
・通常定休日を曜日で設定
・日付ごとに「営業 / 休業 / 時短営業 / イベント / 特別営業」を設定
・日付ごとに営業時間と一言メモを表示
・本日の営業状況を自動表示
・お知らせの追加 / 編集 / 公開・非公開 / 削除
・管理画面はスマートフォン対応
・既存サイトへ iframe で埋め込み可能
・MySQL不要（Perl CGI + ファイル保存）

【必要な環境】
・Perl CGI が動作するレンタルサーバー
・Storable / Digest::SHA / Fcntl / POSIX / Time::Local 等の標準Perlモジュール
・data フォルダへCGIから書き込みできること

【設置】
1. business-calendar フォルダをサーバーへアップロード
2. setup.cgi / admin.cgi / index.cgi を実行可能なパーミッションに変更
   例: 705 または 755（サーバー会社の指定を優先）
3. data フォルダへ書き込み可能にする
   多くのサーバーでは 705 / 755 のまま動きます。動かない場合のみサーバー会社の案内に従ってください。
4. ブラウザで setup.cgi を開く
5. 店舗名と8文字以上の管理パスワードを設定
6. admin.cgi へログインし、営業時間・定休日等を設定
7. index.cgi が公開ページです

【重要：data フォルダ】
営業日設定・お知らせ・管理認証情報は data フォルダへ保存されます。
付属の data/.htaccess は削除しないでください。
Apache以外など .htaccess が効かないサーバーでは、data フォルダをWebから直接閲覧できない場所へ移す等の対策が必要です。
ブラウザから data/settings.stor 等へアクセスしてファイルがダウンロードできる状態では運用しないでください。

【管理画面】
admin.cgi

タブ:
・営業日      日ごとの例外設定
・お知らせ    お知らせ追加・編集
・基本設定    店舗名、通常営業時間、定休日、色など
・セキュリティ 管理パスワード変更、ログアウト

【営業日の考え方】
まず「基本設定」で通常営業時間と曜日定休日を設定します。
そのうえで、臨時休業・祝日営業・イベント等の日だけ個別設定します。
個別設定を「通常設定を使用」に戻すと、その日の例外設定は削除されます。

【お知らせ】
公開日が本日以前で「公開」にチェックされたものだけ公開画面に表示します。
将来のお知らせを今すぐ掲載したい場合は、公開日を今日の日付にしてください。

【既存サイトへの埋め込み】
例:
<iframe src="business-calendar/index.cgi?embed=1" width="100%" height="850" style="border:0" loading="lazy"></iframe>

フォルダ名を変更した場合は src も変更してください。

【セキュリティ】
・管理画面ログイン
・反復SHA-256によるパスワード保存
・セッションCookie: HttpOnly / SameSite=Lax / HTTPS時Secure
・Cookie有効範囲を設置フォルダ内へ限定
・管理操作のCSRFトークン検証
・ログイン連続失敗の簡易制限
・POST最大256KB
・管理画面 no-store
・data / lib フォルダへのWebアクセス禁止

【配布について】
公開画面や管理画面へMACHIKA WEBのリンクを強制表示しません。
著作権・ライセンス情報は LICENSE.txt に記載しています。

【500 Internal Server Error の場合】
・CGIのパーミッション（705 / 755）を確認
・1行目 #!/usr/bin/env perl がサーバーで使用可能か確認
・Perl CGIが利用可能なサーバーか確認
・アップロード時に改行コードが壊れていないか確認

【データのバックアップ】
バックアップしたい場合は data フォルダ全体をダウンロードしてください。

MACHIKA WEB
https://machikaweb.com/
