routes.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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. AdminHandler
  12. AlertHandler
  13. BARTHandler
  14. BuddyHandler
  15. ChatHandler
  16. ChatNavHandler
  17. FeedbagHandler
  18. ICBMHandler
  19. ICQHandler
  20. LocateHandler
  21. ODirHandler
  22. OServiceHandler
  23. PermitDenyHandler
  24. StatsHandler
  25. UserLookupHandler
  26. }
  27. // NewBOSRouter initializes and configures a new Router instance for handling
  28. // OSCAR protocol requests in the context of a Basic Oscar Service (BOS).
  29. func NewBOSRouter(h Handlers) oscar.Router {
  30. router := oscar.NewRouter()
  31. router.Register(wire.Alert, wire.AlertNotifyCapabilities, h.AlertHandler.NotifyCapabilities)
  32. router.Register(wire.Alert, wire.AlertNotifyDisplayCapabilities, h.AlertHandler.NotifyDisplayCapabilities)
  33. router.Register(wire.BART, wire.BARTDownloadQuery, h.BARTHandler.DownloadQuery)
  34. router.Register(wire.BART, wire.BARTUploadQuery, h.BARTHandler.UploadQuery)
  35. router.Register(wire.Buddy, wire.BuddyAddBuddies, h.BuddyHandler.AddBuddies)
  36. router.Register(wire.Buddy, wire.BuddyDelBuddies, h.BuddyHandler.DelBuddies)
  37. router.Register(wire.Buddy, wire.BuddyRightsQuery, h.BuddyHandler.RightsQuery)
  38. router.Register(wire.ChatNav, wire.ChatNavCreateRoom, h.ChatNavHandler.CreateRoom)
  39. router.Register(wire.ChatNav, wire.ChatNavRequestChatRights, h.ChatNavHandler.RequestChatRights)
  40. router.Register(wire.ChatNav, wire.ChatNavRequestExchangeInfo, h.ChatNavHandler.RequestExchangeInfo)
  41. router.Register(wire.ChatNav, wire.ChatNavRequestRoomInfo, h.ChatNavHandler.RequestRoomInfo)
  42. router.Register(wire.Feedbag, wire.FeedbagDeleteItem, h.FeedbagHandler.DeleteItem)
  43. router.Register(wire.Feedbag, wire.FeedbagEndCluster, h.FeedbagHandler.EndCluster)
  44. router.Register(wire.Feedbag, wire.FeedbagInsertItem, h.FeedbagHandler.InsertItem)
  45. router.Register(wire.Feedbag, wire.FeedbagQuery, h.FeedbagHandler.Query)
  46. router.Register(wire.Feedbag, wire.FeedbagQueryIfModified, h.FeedbagHandler.QueryIfModified)
  47. router.Register(wire.Feedbag, wire.FeedbagRespondAuthorizeToHost, h.FeedbagHandler.RespondAuthorizeToHost)
  48. router.Register(wire.Feedbag, wire.FeedbagRightsQuery, h.FeedbagHandler.RightsQuery)
  49. router.Register(wire.Feedbag, wire.FeedbagStartCluster, h.FeedbagHandler.StartCluster)
  50. router.Register(wire.Feedbag, wire.FeedbagUpdateItem, h.FeedbagHandler.UpdateItem)
  51. router.Register(wire.Feedbag, wire.FeedbagUse, h.FeedbagHandler.Use)
  52. router.Register(wire.ICQ, wire.ICQDBQuery, h.ICQHandler.DBQuery)
  53. router.Register(wire.ICBM, wire.ICBMAddParameters, h.ICBMHandler.AddParameters)
  54. router.Register(wire.ICBM, wire.ICBMChannelMsgToHost, h.ICBMHandler.ChannelMsgToHost)
  55. router.Register(wire.ICBM, wire.ICBMClientErr, h.ICBMHandler.ClientErr)
  56. router.Register(wire.ICBM, wire.ICBMClientEvent, h.ICBMHandler.ClientEvent)
  57. router.Register(wire.ICBM, wire.ICBMEvilRequest, h.ICBMHandler.EvilRequest)
  58. router.Register(wire.ICBM, wire.ICBMParameterQuery, h.ICBMHandler.ParameterQuery)
  59. router.Register(wire.Locate, wire.LocateGetDirInfo, h.LocateHandler.GetDirInfo)
  60. router.Register(wire.Locate, wire.LocateRightsQuery, h.LocateHandler.RightsQuery)
  61. router.Register(wire.Locate, wire.LocateSetDirInfo, h.LocateHandler.SetDirInfo)
  62. router.Register(wire.Locate, wire.LocateSetInfo, h.LocateHandler.SetInfo)
  63. router.Register(wire.Locate, wire.LocateSetKeywordInfo, h.LocateHandler.SetKeywordInfo)
  64. router.Register(wire.Locate, wire.LocateUserInfoQuery, h.LocateHandler.UserInfoQuery)
  65. router.Register(wire.Locate, wire.LocateUserInfoQuery2, h.LocateHandler.UserInfoQuery2)
  66. router.Register(wire.OService, wire.OServiceClientOnline, h.OServiceHandler.ClientOnline)
  67. router.Register(wire.OService, wire.OServiceClientVersions, h.OServiceHandler.ClientVersions)
  68. router.Register(wire.OService, wire.OServiceIdleNotification, h.OServiceHandler.IdleNotification)
  69. router.Register(wire.OService, wire.OServiceNoop, h.OServiceHandler.Noop)
  70. router.Register(wire.OService, wire.OServiceRateParamsQuery, h.OServiceHandler.RateParamsQuery)
  71. router.Register(wire.OService, wire.OServiceRateParamsSubAdd, h.OServiceHandler.RateParamsSubAdd)
  72. router.Register(wire.OService, wire.OServiceServiceRequest, h.OServiceHandler.ServiceRequest)
  73. router.Register(wire.OService, wire.OServiceSetPrivacyFlags, h.OServiceHandler.SetPrivacyFlags)
  74. router.Register(wire.OService, wire.OServiceSetUserInfoFields, h.OServiceHandler.SetUserInfoFields)
  75. router.Register(wire.OService, wire.OServiceUserInfoQuery, h.OServiceHandler.UserInfoQuery)
  76. router.Register(wire.PermitDeny, wire.PermitDenyAddDenyListEntries, h.PermitDenyHandler.AddDenyListEntries)
  77. router.Register(wire.PermitDeny, wire.PermitDenyAddPermListEntries, h.PermitDenyHandler.AddPermListEntries)
  78. router.Register(wire.PermitDeny, wire.PermitDenyDelDenyListEntries, h.PermitDenyHandler.DelDenyListEntries)
  79. router.Register(wire.PermitDeny, wire.PermitDenyDelPermListEntries, h.PermitDenyHandler.DelPermListEntries)
  80. router.Register(wire.PermitDeny, wire.PermitDenyRightsQuery, h.PermitDenyHandler.RightsQuery)
  81. router.Register(wire.PermitDeny, wire.PermitDenySetGroupPermitMask, h.PermitDenyHandler.SetGroupPermitMask)
  82. router.Register(wire.Stats, wire.StatsReportEvents, h.StatsHandler.ReportEvents)
  83. router.Register(wire.UserLookup, wire.UserLookupFindByEmail, h.UserLookupHandler.FindByEmail)
  84. return router
  85. }
  86. // NewChatRouter initializes and configures a new Router instance specifically
  87. // for handling chat-related OSCAR protocol requests.
  88. func NewChatRouter(h Handlers) oscar.Router {
  89. router := oscar.NewRouter()
  90. router.Register(wire.Chat, wire.ChatChannelMsgToHost, h.ChatHandler.ChannelMsgToHost)
  91. router.Register(wire.OService, wire.OServiceClientOnline, h.ClientOnline)
  92. router.Register(wire.OService, wire.OServiceClientVersions, h.OServiceHandler.ClientVersions)
  93. router.Register(wire.OService, wire.OServiceIdleNotification, h.OServiceHandler.IdleNotification)
  94. router.Register(wire.OService, wire.OServiceNoop, h.OServiceHandler.Noop)
  95. router.Register(wire.OService, wire.OServiceRateParamsQuery, h.OServiceHandler.RateParamsQuery)
  96. router.Register(wire.OService, wire.OServiceRateParamsSubAdd, h.OServiceHandler.RateParamsSubAdd)
  97. router.Register(wire.OService, wire.OServiceSetPrivacyFlags, h.OServiceHandler.SetPrivacyFlags)
  98. router.Register(wire.OService, wire.OServiceSetUserInfoFields, h.OServiceHandler.SetUserInfoFields)
  99. router.Register(wire.OService, wire.OServiceUserInfoQuery, h.OServiceHandler.UserInfoQuery)
  100. return router
  101. }
  102. // NewChatNavRouter initializes and configures a new Router instance for
  103. // handling OSCAR protocol requests in the context of the ChatNav service.
  104. func NewChatNavRouter(h Handlers) oscar.Router {
  105. router := oscar.NewRouter()
  106. router.Register(wire.ChatNav, wire.ChatNavCreateRoom, h.ChatNavHandler.CreateRoom)
  107. router.Register(wire.ChatNav, wire.ChatNavRequestChatRights, h.ChatNavHandler.RequestChatRights)
  108. router.Register(wire.ChatNav, wire.ChatNavRequestExchangeInfo, h.ChatNavHandler.RequestExchangeInfo)
  109. router.Register(wire.ChatNav, wire.ChatNavRequestRoomInfo, h.ChatNavHandler.RequestRoomInfo)
  110. router.Register(wire.OService, wire.OServiceClientOnline, h.ClientOnline)
  111. router.Register(wire.OService, wire.OServiceClientVersions, h.OServiceHandler.ClientVersions)
  112. router.Register(wire.OService, wire.OServiceIdleNotification, h.OServiceHandler.IdleNotification)
  113. router.Register(wire.OService, wire.OServiceRateParamsQuery, h.OServiceHandler.RateParamsQuery)
  114. router.Register(wire.OService, wire.OServiceRateParamsSubAdd, h.OServiceHandler.RateParamsSubAdd)
  115. router.Register(wire.OService, wire.OServiceSetPrivacyFlags, h.OServiceHandler.SetPrivacyFlags)
  116. router.Register(wire.OService, wire.OServiceSetUserInfoFields, h.OServiceHandler.SetUserInfoFields)
  117. router.Register(wire.OService, wire.OServiceUserInfoQuery, h.OServiceHandler.UserInfoQuery)
  118. return router
  119. }
  120. func NewAlertRouter(h Handlers) oscar.Router {
  121. router := oscar.NewRouter()
  122. router.Register(wire.Alert, wire.AlertNotifyCapabilities, h.AlertHandler.NotifyCapabilities)
  123. router.Register(wire.Alert, wire.AlertNotifyDisplayCapabilities, h.AlertHandler.NotifyDisplayCapabilities)
  124. router.Register(wire.Alert, wire.AlertUserOnline, h.AlertHandler.NotifyDisplayCapabilities)
  125. router.Register(wire.OService, wire.OServiceClientOnline, h.ClientOnline)
  126. router.Register(wire.OService, wire.OServiceClientVersions, h.OServiceHandler.ClientVersions)
  127. router.Register(wire.OService, wire.OServiceRateParamsQuery, h.OServiceHandler.RateParamsQuery)
  128. router.Register(wire.OService, wire.OServiceRateParamsSubAdd, h.OServiceHandler.RateParamsSubAdd)
  129. return router
  130. }
  131. func NewBARTRouter(h Handlers) oscar.Router {
  132. router := oscar.NewRouter()
  133. router.Register(wire.BART, wire.BARTDownloadQuery, h.BARTHandler.DownloadQuery)
  134. router.Register(wire.BART, wire.BARTUploadQuery, h.BARTHandler.UploadQuery)
  135. router.Register(wire.OService, wire.OServiceClientOnline, h.ClientOnline)
  136. router.Register(wire.OService, wire.OServiceClientVersions, h.OServiceHandler.ClientVersions)
  137. router.Register(wire.OService, wire.OServiceRateParamsQuery, h.OServiceHandler.RateParamsQuery)
  138. router.Register(wire.OService, wire.OServiceRateParamsSubAdd, h.OServiceHandler.RateParamsSubAdd)
  139. return router
  140. }
  141. func NewAdminRouter(h Handlers) oscar.Router {
  142. router := oscar.NewRouter()
  143. router.Register(wire.OService, wire.OServiceClientOnline, h.OServiceHandler.ClientOnline)
  144. router.Register(wire.OService, wire.OServiceClientVersions, h.OServiceHandler.ClientVersions)
  145. router.Register(wire.OService, wire.OServiceRateParamsQuery, h.OServiceHandler.RateParamsQuery)
  146. router.Register(wire.OService, wire.OServiceRateParamsSubAdd, h.OServiceHandler.RateParamsSubAdd)
  147. router.Register(wire.OService, wire.OServiceSetPrivacyFlags, h.OServiceHandler.SetPrivacyFlags)
  148. router.Register(wire.Admin, wire.AdminAcctConfirmRequest, h.AdminHandler.ConfirmRequest)
  149. router.Register(wire.Admin, wire.AdminInfoChangeRequest, h.AdminHandler.InfoChangeRequest)
  150. router.Register(wire.Admin, wire.AdminInfoQuery, h.AdminHandler.InfoQuery)
  151. return router
  152. }
  153. func NewODirRouter(h Handlers) oscar.Router {
  154. router := oscar.NewRouter()
  155. router.Register(wire.ODir, wire.ODirInfoQuery, h.ODirHandler.InfoQuery)
  156. router.Register(wire.ODir, wire.ODirKeywordListQuery, h.ODirHandler.KeywordListQuery)
  157. router.Register(wire.OService, wire.OServiceClientOnline, h.ClientOnline)
  158. router.Register(wire.OService, wire.OServiceClientVersions, h.OServiceHandler.ClientVersions)
  159. router.Register(wire.OService, wire.OServiceIdleNotification, h.OServiceHandler.IdleNotification)
  160. router.Register(wire.OService, wire.OServiceNoop, h.OServiceHandler.Noop)
  161. router.Register(wire.OService, wire.OServiceRateParamsQuery, h.OServiceHandler.RateParamsQuery)
  162. router.Register(wire.OService, wire.OServiceRateParamsSubAdd, h.OServiceHandler.RateParamsSubAdd)
  163. router.Register(wire.OService, wire.OServiceSetPrivacyFlags, h.OServiceHandler.SetPrivacyFlags)
  164. return router
  165. }