2020-07-27 MySQLのpluginとかを読んでる

  • MySQLのplugin周りを読んでいる
    • MySQLのplugin周りの仕様きれいで読みやすいな〜〜〜
  • MYSQL_PLUGIN_VIO構造体が便利で、ここからsocketの情報を取り出せる
  • vio->infoとかしてscoketの情報を取り出し、getsockoptにvio_info.socketとかわたしてやるとそのセッションのfdが取り出せる
    • これでsynパケットのヘッダはpluginで取り出せるのであとはparseして扱えば良さそう
  • あとはid/passの認証が通っても、uidが違うと通らないという処理をauth pluginに書くと良い

  • listen前のfdにsetsockoptできるようなフックがあるかをコードリーディングしていく
    • listen前にTCP_SAVE_SYNを立てておかないとあとでgetsockoptからsynのヘッダフィールドを取り出せないため
    • MYSQL_DAEMON_PLUGINあたりでできるかな?
    • あれ、そもそもpluginのinitのフェーズがlisten前でfdをとれるならinitのフェーズでやれそうだけどどういうフックタイミングなのか
      • listen前にはplugin initするだろうから、init時にsocketはつくられている、あるいは、そのsocketのfdを取りだせるようなインターフェイスがあればauth pluginで完結できそう