既知のバグ・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 を使用
  • 影響: データ不整合のリスク、 保守性低下
  • 対応案:
    1. MySQL にデバイス追加 API を実装
    2. SQLite → MySQL 移行スクリプト作成
    3. 既存データ移行 (contracts=1, devices=1 程度)
    4. main.py から SQLite コード削除
    5. 十分なテスト実施
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-admin IP制限 (作業時のみ開放) の自動化
7. 推奨対応順序
順項目理由
1未対応セキュリティ脆弱性 ⑩⑭ + WG秘密鍵ハードコード除去致命度が最高
2⑨ SQLite/MySQL 統一データ整合性、 今後の機能追加の前提
3cron 未設定スクリプトの登録使用量集計・期限処理が動かないと顧客請求に影響
4QR 作成時 NC アカウント自動発行顧客運用の主要 UX
5⑪ バックアップ整理簡単・すぐできる
6⑰ パスワード変更機能機能追加・必要に応じて
関連ページ: 「最近の作業履歴 (id:850)」 (2026-04-06 のセキュリティ修正詳細) / 「cron ジョブ・自動化タスク (id:818)」 (未設定スクリプト一覧) / 「Next Mission (id:68)」 (実装優先順位の細則)