既知のバグ・TODO・未実装機能
// KNOWN ISSUES — mikyun-portal / VPN engine の残課題リスト / 最終更新: 2026-05-14
残課題 mikyun-portal は 営業中の現役プロダクト。 既知の不具合は把握した上で運用してる
更新メモ (2026-05-14): 2026-04-06 にハードコードパスワード関連の致命的脆弱性 (①②⑧) は対応済。 mikyun-portal は maguro Docker (
mikyun-portal:1.1) に統合済で、 DB も Docker MariaDB に統合済。 旧ホスト MariaDB は disable。
1. バグ・コード上の問題
| 場所 | 内容 | 深刻度 |
|---|---|---|
main.py (/create エンドポイント) | Customer(passphrase=passphrase, …) の passphrase 変数が未定義 (NameError でクラッシュする)。 try/finally で pass のみで DB クローズしない (リソースリーク) | 高 |
main.py (フロー混在) | 旧 SQLite フロー (SessionLocal) と新 MySQL フロー (mysql.connector) が混在。 SessionLocal の定義がないためランタイムエラー | 高 |
ui_admin.py (ui_traffic 重複定義) | @router.get("/traffic") が同一ファイル内に 2回定義 (1060行目・1260行目)。 FastAPI は後者が優先 | 中 |
wg1.conf 再構築 (reload_wireguard) | サーバー秘密鍵 (PrivateKey) がコード内にハードコード。 セキュリティリスク | 高 |
| DB 接続情報 (全ソースファイル) | パスワードが複数ソースにハードコードされている (主要箇所は 2026-04-06 に修正済、 残りの周辺ファイル要確認) | 高 |
セキュリティ視点での再点検が必要: 2026-04-06 で ①②⑧ は対応したが、 ⑭ WireGuard サーバー公開鍵ハードコード は未対応。 PR 取り込み前に grep で取り残し確認すべし。
2. 未実装・将来実装予定機能
| 機能 | 状態 | 補足 |
|---|---|---|
月次トラフィックランキング (/ui/monthly) | 未実装 | /ui/contracts にリダイレクトするだけ。 コード内コメントに「次フェーズで実装」 |
| issued 状態 QR 有効期限の自動処理 | 未稼働 | mikyun-expire-issued.sh 存在するが cron 未設定 |
| 日次トラフィックロールアップ | 未稼働 | mikyun-daily-rollup.sh 存在するが cron 未設定。 24h/7d 集計が機能しない可能性 |
| 削除予告通知 | 未稼働 | mikyun-predelete-notice.sh 存在するが cron 未設定 |
| 使用済みストレージの自動集計 | 未実装 | 顧客ポータルで「使用済み容量」が「未集計」表示になる |
帯域制限 (bandwidth_profile 実施) | 設計のみ | カラムはあるが実際の帯域制限 (tc/qdisc 等) は未実装・未確認 |
| QR・契約作成時 Nextcloud アカウント自動生成 | 未実装 | 優先度高 |
| 顧客ポータルに Nextcloud 接続情報表示 | 未実装 | URL・ID・PW・使用量 優先度高 |
3. Medium 優先度 (今後対応推奨)
// ⑨ SQLite / MySQL 二重管理の解消 (所要 1〜2時間)
- 現状:
main.pyが SQLite、mikyun_vpn_engine.pyが MySQL を使用 - 影響: データ不整合のリスク、 保守性低下
- 対応案:
- MySQL にデバイス追加 API を実装
- SQLite → MySQL 移行スクリプト作成
- 既存データ移行 (contracts=1, devices=1 程度)
main.pyから SQLite コード削除- 十分なテスト実施
4. Low 優先度 (保守性改善)
// ⑪ バックアップファイル散乱整理 (15分)
- 現状:
.backup.*,.before_*ファイルが多数散在 - 対応: 古いバックアップを
/root/_archive/YYYY-MM/に移動または削除
// ⑰ 顧客ポータルのパスワード変更機能 (30分〜1時間)
- 現状: Nextcloud パスワード変更機能なし
- 対応:
/ui/devices/{device_id}/force-nc-passwordエンドポイント再実装 - 必要な追加:
import subprocess,import os - 実装場所:
ui_admin.py
5. 優先実装項目 (顧客運用に直結)
- QR・契約作成時に Nextcloud アカウント (ID・PW・容量) を自動生成・割り当て
- 顧客ポータルに Nextcloud 接続情報 (URL・ID・PW・使用量) を表示
- 契約ID・端末管理・QR・IP・Nextcloud を一元同期できる管理画面の整備
- 運営用ポータル (
/ui) の完成 + Basic 認証の追加 - ローカルPC (192.168.20.x) からも運営ポータルにアクセス可能にする
6. インフラ側の残作業 (mikyun-portal 外)
- ! xserver VPS (162.43.8.20) 6月末解約 (¥3,000/月節約)
- ! 他クライアントHP (can-construction, shinkoujyuusetu 等) を R640 へ移行
- ! WiFi VLAN80 独立化 finalize
- ! iDRAC Console Redirection 無効化 (Web 手作業)
- ! Fail2ban 導入 (nginx access.log + sshd brute-force)
- ! オフサイトバックアップ実装 (Backblaze B2 / wasabi 検討中)
- !
/wp-adminIP制限 (作業時のみ開放) の自動化
7. 推奨対応順序
| 順 | 項目 | 理由 |
|---|---|---|
| 1 | 未対応セキュリティ脆弱性 ⑩⑭ + WG秘密鍵ハードコード除去 | 致命度が最高 |
| 2 | ⑨ SQLite/MySQL 統一 | データ整合性、 今後の機能追加の前提 |
| 3 | cron 未設定スクリプトの登録 | 使用量集計・期限処理が動かないと顧客請求に影響 |
| 4 | QR 作成時 NC アカウント自動発行 | 顧客運用の主要 UX |
| 5 | ⑪ バックアップ整理 | 簡単・すぐできる |
| 6 | ⑰ パスワード変更機能 | 機能追加・必要に応じて |
関連ページ: 「最近の作業履歴 (id:850)」 (2026-04-06 のセキュリティ修正詳細) / 「cron ジョブ・自動化タスク (id:818)」 (未設定スクリプト一覧) / 「Next Mission (id:68)」 (実装優先順位の細則)