routes.go 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package handler
  2. import (
  3. "github.com/mk6i/retro-aim-server/server/oscar"
  4. "github.com/mk6i/retro-aim-server/wire"
  5. )
  6. // Handlers aggregates various specialized handlers required for processing
  7. // different types of OSCAR protocol requests. Each field corresponds to a
  8. // specific handler responsible for a distinct aspect of the OSCAR service,
  9. // such as managing buddy lists, chat sessions, and user alerts.
  10. type Handlers struct {
  11. AlertHandler
  12. BARTHandler
  13. BuddyHandler
  14. ChatHandler
  15. ChatNavHandler
  16. FeedbagHandler
  17. ICBMHandler
  18. LocateHandler
  19. OServiceAlertHandler
  20. OServiceBOSHandler
  21. OServiceChatHandler
  22. OServiceChatNavHandler
  23. PermitDenyHandler
  24. }
  25. // NewBOSRouter initializes and configures a new Router instance for handling
  26. // OSCAR protocol requests in the context of a Basic Oscar Service (BOS).
  27. func NewBOSRouter(h Handlers) oscar.Router {
  28. router := oscar.NewRouter()
  29. router.Register(wire.Alert, wire.AlertNotifyCapabilities, h.AlertHandler.NotifyCapabilities)
  30. router.Register(wire.Alert, wire.AlertNotifyDisplayCapabilities, h.AlertHandler.NotifyDisplayCapabilities)
  31. router.Register(wire.BART, wire.BARTUploadQuery, h.BARTHandler.UploadQuery)
  32. router.Register(wire.BART, wire.BARTDownloadQuery, h.BARTHandler.DownloadQuery)
  33. router.Register(wire.Buddy, wire.BuddyAddBuddies, h.BuddyHandler.AddBuddies)
  34. router.Register(wire.Buddy, wire.BuddyDelBuddies, h.BuddyHandler.DelBuddies)
  35. router.Register(wire.Buddy, wire.BuddyRightsQuery, h.BuddyHandler.RightsQuery)
  36. router.Register(wire.ChatNav, wire.ChatNavCreateRoom, h.ChatNavHandler.CreateRoom)
  37. router.Register(wire.ChatNav, wire.ChatNavRequestChatRights, h.ChatNavHandler.RequestChatRights)
  38. router.Register(wire.ChatNav, wire.ChatNavRequestRoomInfo, h.ChatNavHandler.RequestRoomInfo)
  39. router.Register(wire.Feedbag, wire.FeedbagDeleteItem, h.FeedbagHandler.DeleteItem)
  40. router.Register(wire.Feedbag, wire.FeedbagEndCluster, h.FeedbagHandler.EndCluster)
  41. router.Register(wire.Feedbag, wire.FeedbagInsertItem, h.FeedbagHandler.InsertItem)
  42. router.Register(wire.Feedbag, wire.FeedbagQuery, h.FeedbagHandler.Query)
  43. router.Register(wire.Feedbag, wire.FeedbagQueryIfModified, h.FeedbagHandler.QueryIfModified)
  44. router.Register(wire.Feedbag, wire.FeedbagRightsQuery, h.FeedbagHandler.RightsQuery)
  45. router.Register(wire.Feedbag, wire.FeedbagStartCluster, h.FeedbagHandler.StartCluster)
  46. router.Register(wire.Feedbag, wire.FeedbagUpdateItem, h.FeedbagHandler.UpdateItem)
  47. router.Register(wire.Feedbag, wire.FeedbagUse, h.FeedbagHandler.Use)
  48. router.Register(wire.ICBM, wire.ICBMAddParameters, h.ICBMHandler.AddParameters)
  49. router.Register(wire.ICBM, wire.ICBMChannelMsgToHost, h.ICBMHandler.ChannelMsgToHost)
  50. router.Register(wire.ICBM, wire.ICBMClientErr, h.ICBMHandler.ClientErr)
  51. router.Register(wire.ICBM, wire.ICBMClientEvent, h.ICBMHandler.ClientEvent)
  52. router.Register(wire.ICBM, wire.ICBMEvilRequest, h.ICBMHandler.EvilRequest)
  53. router.Register(wire.ICBM, wire.ICBMParameterQuery, h.ICBMHandler.ParameterQuery)
  54. router.Register(wire.Locate, wire.LocateGetDirInfo, h.LocateHandler.GetDirInfo)
  55. router.Register(wire.Locate, wire.LocateRightsQuery, h.LocateHandler.RightsQuery)
  56. router.Register(wire.Locate, wire.LocateSetDirInfo, h.LocateHandler.SetDirInfo)
  57. router.Register(wire.Locate, wire.LocateSetInfo, h.LocateHandler.SetInfo)
  58. router.Register(wire.Locate, wire.LocateSetKeywordInfo, h.LocateHandler.SetKeywordInfo)
  59. router.Register(wire.Locate, wire.LocateUserInfoQuery, h.LocateHandler.UserInfoQuery)
  60. router.Register(wire.Locate, wire.LocateUserInfoQuery2, h.LocateHandler.UserInfoQuery2)
  61. router.Register(wire.PermitDeny, wire.PermitDenyRightsQuery, h.PermitDenyHandler.RightsQuery)
  62. router.Register(wire.OService, wire.OServiceClientOnline, h.OServiceBOSHandler.ClientOnline)
  63. router.Register(wire.OService, wire.OServiceClientVersions, h.OServiceBOSHandler.OServiceHandler.ClientVersions)
  64. router.Register(wire.OService, wire.OServiceIdleNotification, h.OServiceBOSHandler.OServiceHandler.IdleNotification)
  65. router.Register(wire.OService, wire.OServiceNoop, h.OServiceBOSHandler.OServiceHandler.Noop)
  66. router.Register(wire.OService, wire.OServiceRateParamsQuery, h.OServiceBOSHandler.OServiceHandler.RateParamsQuery)
  67. router.Register(wire.OService, wire.OServiceRateParamsSubAdd, h.OServiceBOSHandler.OServiceHandler.RateParamsSubAdd)
  68. router.Register(wire.OService, wire.OServiceServiceRequest, h.OServiceBOSHandler.ServiceRequest)
  69. router.Register(wire.OService, wire.OServiceSetUserInfoFields, h.OServiceBOSHandler.OServiceHandler.SetUserInfoFields)
  70. router.Register(wire.OService, wire.OServiceUserInfoQuery, h.OServiceBOSHandler.OServiceHandler.UserInfoQuery)
  71. router.Register(wire.OService, wire.OServiceSetPrivacyFlags, h.OServiceBOSHandler.OServiceHandler.SetPrivacyFlags)
  72. return router
  73. }
  74. // NewChatRouter initializes and configures a new Router instance specifically
  75. // for handling chat-related OSCAR protocol requests.
  76. func NewChatRouter(h Handlers) oscar.Router {
  77. router := oscar.NewRouter()
  78. router.Register(wire.Chat, wire.ChatChannelMsgToHost, h.ChatHandler.ChannelMsgToHost)
  79. router.Register(wire.OService, wire.OServiceClientOnline, h.OServiceChatHandler.ClientOnline)
  80. router.Register(wire.OService, wire.OServiceClientVersions, h.OServiceChatHandler.OServiceHandler.ClientVersions)
  81. router.Register(wire.OService, wire.OServiceIdleNotification, h.OServiceChatHandler.OServiceHandler.IdleNotification)
  82. router.Register(wire.OService, wire.OServiceRateParamsQuery, h.OServiceChatHandler.OServiceHandler.RateParamsQuery)
  83. router.Register(wire.OService, wire.OServiceRateParamsSubAdd, h.OServiceChatHandler.OServiceHandler.RateParamsSubAdd)
  84. router.Register(wire.OService, wire.OServiceSetUserInfoFields, h.OServiceChatHandler.OServiceHandler.SetUserInfoFields)
  85. router.Register(wire.OService, wire.OServiceUserInfoQuery, h.OServiceChatHandler.OServiceHandler.UserInfoQuery)
  86. return router
  87. }
  88. // NewChatNavRouter initializes and configures a new Router instance for
  89. // handling OSCAR protocol requests in the context of the ChatNav service.
  90. func NewChatNavRouter(h Handlers) oscar.Router {
  91. router := oscar.NewRouter()
  92. router.Register(wire.ChatNav, wire.ChatNavCreateRoom, h.ChatNavHandler.CreateRoom)
  93. router.Register(wire.ChatNav, wire.ChatNavRequestChatRights, h.ChatNavHandler.RequestChatRights)
  94. router.Register(wire.ChatNav, wire.ChatNavRequestRoomInfo, h.ChatNavHandler.RequestRoomInfo)
  95. router.Register(wire.OService, wire.OServiceClientOnline, h.OServiceChatNavHandler.ClientOnline)
  96. router.Register(wire.OService, wire.OServiceClientVersions, h.OServiceChatNavHandler.OServiceHandler.ClientVersions)
  97. router.Register(wire.OService, wire.OServiceIdleNotification, h.OServiceChatNavHandler.OServiceHandler.IdleNotification)
  98. router.Register(wire.OService, wire.OServiceRateParamsQuery, h.OServiceChatNavHandler.OServiceHandler.RateParamsQuery)
  99. router.Register(wire.OService, wire.OServiceRateParamsSubAdd, h.OServiceChatNavHandler.OServiceHandler.RateParamsSubAdd)
  100. router.Register(wire.OService, wire.OServiceSetUserInfoFields, h.OServiceChatNavHandler.OServiceHandler.SetUserInfoFields)
  101. router.Register(wire.OService, wire.OServiceUserInfoQuery, h.OServiceChatNavHandler.OServiceHandler.UserInfoQuery)
  102. return router
  103. }
  104. func NewAlertRouter(h Handlers) oscar.Router {
  105. router := oscar.NewRouter()
  106. router.Register(wire.Alert, wire.AlertNotifyCapabilities, h.AlertHandler.NotifyCapabilities)
  107. router.Register(wire.Alert, wire.AlertNotifyDisplayCapabilities, h.AlertHandler.NotifyDisplayCapabilities)
  108. router.Register(wire.Alert, wire.AlertUserOnline, h.AlertHandler.NotifyDisplayCapabilities)
  109. router.Register(wire.OService, wire.OServiceClientOnline, h.OServiceAlertHandler.ClientOnline)
  110. router.Register(wire.OService, wire.OServiceClientVersions, h.OServiceAlertHandler.OServiceHandler.ClientVersions)
  111. router.Register(wire.OService, wire.OServiceRateParamsQuery, h.OServiceAlertHandler.OServiceHandler.RateParamsQuery)
  112. router.Register(wire.OService, wire.OServiceRateParamsSubAdd, h.OServiceAlertHandler.OServiceHandler.RateParamsSubAdd)
  113. return router
  114. }