1 | using System; |
---|
2 | using System.Collections.Generic; |
---|
3 | using System.Net; |
---|
4 | |
---|
5 | namespace AllocsFixes.NetConnections.Servers.Web { |
---|
6 | public class ConnectionHandler { |
---|
7 | private readonly Dictionary<string, WebConnection> connections = new Dictionary<string, WebConnection> (); |
---|
8 | |
---|
9 | public WebConnection IsLoggedIn (string _sessionId, IPAddress _ip) { |
---|
10 | if (!connections.ContainsKey (_sessionId)) { |
---|
11 | return null; |
---|
12 | } |
---|
13 | |
---|
14 | WebConnection con = connections [_sessionId]; |
---|
15 | |
---|
16 | // if (con.Age.TotalMinutes > parent.sessionTimeoutMinutes) { |
---|
17 | // connections.Remove (_sessionId); |
---|
18 | // return null; |
---|
19 | // } |
---|
20 | |
---|
21 | if (!Equals (con.Endpoint, _ip)) { |
---|
22 | // Fixed: Allow different clients from same NAT network |
---|
23 | // connections.Remove (_sessionId); |
---|
24 | return null; |
---|
25 | } |
---|
26 | |
---|
27 | con.UpdateUsage (); |
---|
28 | |
---|
29 | return con; |
---|
30 | } |
---|
31 | |
---|
32 | public void LogOut (string _sessionId) { |
---|
33 | connections.Remove (_sessionId); |
---|
34 | } |
---|
35 | |
---|
36 | public WebConnection LogIn (ulong _steamId, IPAddress _ip) { |
---|
37 | string sessionId = Guid.NewGuid ().ToString (); |
---|
38 | WebConnection con = new WebConnection (sessionId, _ip, _steamId); |
---|
39 | connections.Add (sessionId, con); |
---|
40 | return con; |
---|
41 | } |
---|
42 | |
---|
43 | public void SendLine (string line) { |
---|
44 | foreach (KeyValuePair<string, WebConnection> kvp in connections) { |
---|
45 | kvp.Value.SendLine (line); |
---|
46 | } |
---|
47 | } |
---|
48 | } |
---|
49 | } |
---|