FlowingSPDG / ProjectDeus

[WIP] Project Deus - Next-generation CS2 Match/Server Management System without any server-side plugin/mods.
MIT License
7 stars 0 forks source link

受信したログと試合サーバーを紐づける方法を考える #1

Open FlowingSPDG opened 11 months ago

FlowingSPDG commented 11 months ago

ゲームサーバーから送られてきたログには、試合サーバーを特定するIDやIPアドレスのようなものが含まれていない 送信されてきたログを解析し、それがどのサーバー/試合であるか特定出来る必要がある

TODO: eBotの実装を見てみる 何かしらの方法で特定できないか調査する 送信元のIPで無理矢理こじつける(ただしプロキシを超えた場合、内部で疎通しているローカルなIPを使用している場合、同一IPアドレスに複数の試合サーバーが存在する場合に壊れる可能性が非常に高い)

FlowingSPDG commented 11 months ago

eBotの場合、 ログアドレスのパスにサーバーIPを記載することで回避していた e.g. http://youreBot/game/127.0.0.1:27015 のような形? Ginでこれに対応することはおそらく可能だと思う、少々汚いが あとセキュリティ上の懸念がある

FlowingSPDG commented 11 months ago

あとeBotはWebSocketとredisを使って値をやりとりしているっぽい、セキュリティに問題がないかは見れていない

FlowingSPDG commented 11 months ago

これ、試合サーバーorマッチに固有のUUIDを設定して、 http://ProjectDeusServer/game/(UUID)/logs にリクエストする形にしたらセキュリティ的にマズいだろうか。 リクエストボディを加工することは出来ないので、せめてURLをマッチ/サーバーごとに可変にすれば、多少のセキュリティが担保出来る可能性がある。 ただし、CS2サーバーがHTTPSに対応していればの話。 また、URL自体はセキュアなものではない前提で開発する必要がある。

別の手段として、マッチ/サーバー ごとにIPのホワイトリストを用意し、適合していれば認可するという手段があるかも。