Guest User

Untitled

a guest
May 8th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.65 KB | None | 0 0
  1. namespace Woodpecker.Communication.Headers
  2. {
  3. public enum MessageRequestIds
  4. {
  5. OpenConnection = 2,
  6. TryLogin = 4,
  7. VersionCheck = 5,
  8. UniqueID = 6,
  9. InfoRetrieve = 7,
  10. GetCreditsBalance = 8,
  11. GetAvailableSets = 9,
  12. MessengerInit = 12,
  13. SBUSYF = 13,
  14. MessengerUpdate = 15,
  15. SeachUserFlats = 16,
  16. SRCHF = 17,
  17. GetFavoriteFlats = 18,
  18. AddFavoriteRoom = 19,
  19. DeleteFavoriteRoom = 20,
  20. GetFlatInfo = 21,
  21. DeleteFlat = 23,
  22. UpdateFlat = 24,
  23. SetFlatInfo = 25,
  24. SecretGetUserInfo = 26,
  25. GetDoorFlat = 28,
  26. CreateFlat = 29,
  27. MESSENGER_C_CLICK = 30,
  28. MESSENGER_C_READ = 31,
  29. MESSENGER_MARKREAD = 32,
  30. MESSENGER_SENDMSG = 33,
  31. MESSENGER_ASSIGNPERSMSG = 36,
  32. MessengerAcceptBuddy = 37,
  33. MessengerDeclineBuddy = 38,
  34. MessengerRequestBuddy = 39,
  35. MessengerRemoveBuddy = 40,
  36. FindUser = 41,
  37. ApproveName = 42,
  38. Register = 43,
  39. Update = 44,
  40. AC = 46,
  41. GetPassword = 47,
  42. PickCryForHelp = 48,
  43. GetDatetime = 49,
  44. Chat = 52,
  45. Quit = 53,
  46. GoViaDoor = 54,
  47. Shout = 55,
  48. Whisper = 56,
  49. TryFlat = 57,
  50. LangCheck = 58,
  51. GoToFlat = 59,
  52. GetHeightMap = 60,
  53. GetUsers = 61,
  54. GetObjects = 62,
  55. GetItems = 63,
  56. G_STAT = 64,
  57. GETSTRIP = 65,
  58. FLATPROPBYITEM = 66,
  59. ADDSTRIPITEM = 67,
  60. TradeDecline = 68,
  61. TradeAccept = 69,
  62. TradeClose = 70,
  63. TradeOpen = 71,
  64. TradeAddItem = 72,
  65. MoveStuff = 73,
  66. SETSTUFFDATA = 74,
  67. MoveAvatar = 75,
  68. ThrowDice = 76,
  69. DiceOff = 77,
  70. PresentOpen = 78,
  71. LookTo = 79,
  72. CarryDrink = 80,
  73. InToDoor = 81,
  74. DoorGoIn = 82,
  75. G_IDATA = 83 /* GetItemData */,
  76. SETITEMDATA = 84,
  77. RemoveItem = 85,
  78. CryForHelp = 86,
  79. CarryItem = 87,
  80. Stop = 88,
  81. UseItem = 89,
  82. PlaceStuff = 90,
  83. Dance = 93,
  84. Wave = 94,
  85. KickUser = 95 /* Info-o-matic? */,
  86. AssignRights = 96,
  87. RemoveRights = 97,
  88. LetUserIn = 98,
  89. RemoveStuff = 99,
  90. GRPC = 100,
  91. GCIX = 101,
  92. GCAP = 102 /* Snowstorm? Sulake knows. */,
  93. JumpStart = 103,
  94. SIGN = 104,
  95. BTCKS = 105,
  96. JUMPPERF = 106,
  97. SPLASH_POSITION = 107,
  98. CLOSE_UIMAKOPPI = 108,
  99. HUBU_VOTE = 112,
  100. PAALU_MOVE = 114,
  101. GOAWAY = 115,
  102. SWIMSUIT = 116,
  103. GetRoomAd = 126,
  104. GetUserCreditLog = 127,
  105. GetPetStatistics = 128,
  106. RedeemVoucher = 129,
  107. COPPA_REG_CHECKTIME = 130,
  108. COPPA_REG_GETREALTIME = 131,
  109. PARENT_EMAIL_REQUIRED = 146,
  110. VALIDATE_PARENT_EMAIL = 147,
  111. SEND_PARENT_EMAIL = 148,
  112. UPDATE_ACCOUNT = 149,
  113. Navigate = 150,
  114. GetUserFlatCats = 151,
  115. GetFlatCat = 152,
  116. SetFlatCat = 153,
  117. GETSPACENODEUSERS = 154,
  118. RemoveAllRights = 155,
  119. GETPARENTCHAIN = 156,
  120. GETAVAILABLEBADGES = 157,
  121. SetBadge = 158,
  122. GET_GAME_LIST = 159,
  123. START_OBSERVING_GAME = 160,
  124. GET_CREATE_GAME_INFO = 162,
  125. CREATE_GAME = 163,
  126. JOIN_GAME = 164,
  127. SPECTATE_GAME = 165,
  128. LEAVE_GAME = 167,
  129. KICK_USER = 168,
  130. START_GAME = 170,
  131. GAME_INTERACT = 171,
  132. PLAY_AGAIN = 172,
  133. GetSessionParameters = 181,
  134. GetInterstitial = 182,
  135. CONVERT_FURNI_TO_CREDITS = 183,
  136. SCR_BUY = 190,
  137. MESSENGER_GETMESSAGES = 191,
  138. Pong = 196,
  139. APPROVEEMAIL = 197,
  140. CHANGECALLCATEGORY = 198,
  141. MESSAGETOCALLER = 199,
  142. MODERATORACTION = 200,
  143. MESSENGER_REPORTMESSAGE = 201,
  144. GenerateSecretKey = 202,
  145. APPROVE_PASSWORD = 203,
  146. SSOTicket = 204,
  147. InitCrypto = 206,
  148. GET_FURNI_REVISIONS = 213,
  149. SETITEMSTATE = 214,
  150. GetFurnitureAliases = 215,
  151. SONG_EDIT_LOAD = 217,
  152. SAVESONG = 218,
  153. INSERT_SOUND_PACKAGE = 219,
  154. EJECT_SOUND_PACKAGE = 220,
  155. GET_SONG_INFO = 221,
  156. GET_GROUP_BADGES = 230,
  157. MESSENGER_GETREQUESTS = 233,
  158. SONG_EDIT_CLOSE = 246,
  159. GetUserTags = 263,
  160. StartTyping = 317,
  161. CancelTyping = 318
  162. }
  163. }
  164.  
  165.  
  166. using Woodpecker.Communication.Interfaces;
  167. using Woodpecker.Communication.Messages.Incoming.Requests.Global;
  168.  
  169. namespace Woodpecker.Communication.Messages.Incoming.RequestCollections
  170. {
  171. public class GlobalCollection : IMessageCollection
  172. {
  173. private IMessageRequest[] Events;
  174.  
  175. public GlobalCollection()
  176. {
  177. Events = new IMessageRequest[]
  178. {
  179. new ApproveNameMessageRequest(),
  180. new GetDatetimeMessageRequest(),
  181. new PongMessageRequest()
  182. };
  183. }
  184.  
  185. public IMessageRequest[] getMessages()
  186. {
  187. return Events;
  188. }
  189. }
  190. }
  191.  
  192.  
  193. using Woodpecker.Core;
  194. using Woodpecker.Sessions;
  195. using Woodpecker.Game.Items;
  196. using Woodpecker.Game.Users;
  197. using Woodpecker.Communication.Headers;
  198. using Woodpecker.Communication.Interfaces;
  199. using Woodpecker.Communication.Messages.Outgoing.Composers.Availability;
  200. using Woodpecker.Communication.Messages.Outgoing.Composers.Handshake;
  201. using Woodpecker.Communication.Messages.Outgoing.Composers.Moderation;
  202.  
  203. namespace Woodpecker.Communication.Messages.Incoming.Requests.Handshake
  204. {
  205. public class SSOTicketMessageRequest : IMessageRequest
  206. {
  207. public MessageRequestIds ID()
  208. {
  209. return MessageRequestIds.SSOTicket;
  210. }
  211.  
  212. public void Parse(Session Session, ClientMessage Request)
  213. {
  214. const string SSOTicket = "WP-Test123"; //Request.getParameter(0);
  215.  
  216. userInformation userDetails = Archimedes.Game.Users.getUserInfoByTicket(SSOTicket);
  217.  
  218. if (userDetails == null) // User not found
  219. {
  220. Logging.Log("Borked SSO Ticket! - " + SSOTicket);
  221.  
  222. Session.gameConnection.sendLocalizedError("Login incorrect: Invalid SSO ticket");
  223. Archimedes.Sessions.destroySession(Session.ID);
  224. }
  225. else
  226. {
  227. Session.User = userDetails;
  228.  
  229. string banReason;
  230.  
  231. if (Archimedes.Game.Moderation.isBanned(Session.User.ID, out banReason))
  232. {
  233. Session.isValid = false;
  234. Session.gameConnection.sendMessage(UserBannedMessageComposer.Compose(banReason));
  235. return;
  236. }
  237.  
  238. Archimedes.Sessions.destroySessions(Session.User.ID); // Destroy previous sessions
  239.  
  240. Session.User.sessionID = Session.ID;
  241.  
  242. Session.Access.userID = Session.User.ID;
  243. Session.Access.Update();
  244.  
  245. Session.User.updateLastActivity();
  246. Session.User.updateClub(false);
  247.  
  248. Session.gameConnection.messageHandler.unRegister(MessageCollections.handshakeCollection); // Unregister the login reactor
  249.  
  250. Archimedes.Game.Users.addUserSession(Session);
  251.  
  252. Session.gameConnection.messageHandler.Register(MessageCollections.userCollection); // Register a userReactor
  253. Session.gameConnection.messageHandler.Register(MessageCollections.storeCollection); // Register a storeReactor
  254. Session.gameConnection.messageHandler.Register(MessageCollections.navigatorCollection); // Register a navigatorReactor
  255.  
  256. if (Session.User.hasFuseRight("fuse_moderator_access"))
  257. {
  258. Session.gameConnection.messageHandler.Register(MessageCollections.moderationCollection); // Register a moderationReactor
  259. }
  260.  
  261. Session.refreshFuseRights();
  262.  
  263. Session.gameConnection.sendMessage(AvailabilityStatusMessageComposer.Compose()); // "Db" (idk??)
  264. Session.gameConnection.sendMessage(AuthenticationOKMessageComposer.Compose()); // "@C" (login OK)
  265.  
  266. Session.itemStripHandler = new itemStripHandler(Session.User.ID); // Load hand items etc
  267.  
  268. Logging.Log("User '" + Session.User.Username + "' [id: " + Session.User.ID + "] with role '" + Session.User.Role + "' logged in.");
  269. return;
  270. }
  271.  
  272. Archimedes.Sessions.destroySession(Session.ID);
  273. }
  274. }
  275. }
Add Comment
Please, Sign In to add comment