OSDN Git Service

Release 2.3.6.5
[nt2chview/stable.git] / NT2chView45 / NTMaru.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Threading;\r
5 using NT2chView.NtNet;\r
6 \r
7 namespace NT2chView\r
8 {\r
9     static class NTMaru\r
10     {\r
11         const string SESSION_ID_KEY = "SESSION-ID=";\r
12         static string mSessionId;\r
13         static object mLockThis;\r
14 \r
15         public static void init()\r
16         {\r
17             mSessionId = string.Empty;\r
18             mLockThis = new object();\r
19 \r
20         }\r
21 \r
22         public static string getSessionId()\r
23         {\r
24             string id = string.Empty;\r
25             lock (mLockThis)\r
26             {\r
27                 if (mSessionId.Length == 0)\r
28                     login();\r
29                 id = mSessionId;\r
30             }\r
31             return id;\r
32         }\r
33 \r
34         public static bool login()\r
35         {\r
36             if (!NTUserPreference.MaruIsEnabled)\r
37                 return false;\r
38 \r
39             string uid = NTUserPreference.MaruID;\r
40             string passwd = NTUserPreference.MaruPSS;\r
41             if (uid == null || passwd == null)\r
42                 return false;\r
43             if (uid.Length == 0 || passwd.Length == 0)\r
44                 return false;\r
45             lock (mLockThis)\r
46             {\r
47 \r
48                 string result = NTHttpAccess.loginMaru(uid, passwd);\r
49 \r
50                 if (result == null || result.Length == 0)\r
51                     return false;\r
52 \r
53                 int idx = result.IndexOf(SESSION_ID_KEY);\r
54                 if (idx < 0)\r
55                     return false;\r
56                 idx += SESSION_ID_KEY.Length;\r
57                 int idx2 = result.IndexOf(':', idx);\r
58                 if (idx2 < 0)\r
59                     return false;\r
60 \r
61                 string agent = result.Substring(idx, idx2-idx).Trim();\r
62                 //string sessionKey = result.Substring(idx2 + 1).Trim();\r
63                 string sessionKey = result.Substring(idx).Trim();\r
64                 if (agent.Length == 0 || sessionKey.Length == 0)\r
65                     return false;\r
66 \r
67                 if (0 <= agent.IndexOf("ERROR", StringComparison.CurrentCultureIgnoreCase))\r
68                 {\r
69                     return false;\r
70                 }\r
71                 if (!NTHttpAccess.HTTP_HEADER_USER_AGENT.Equals(agent))\r
72                 {\r
73                     NTDebug.l("UserAgent Unmatched.");\r
74                 }\r
75 \r
76 \r
77                 mSessionId = NTTextUtiles.percentEncode(sessionKey);\r
78                 //mSessionId = sessionKey;\r
79             }\r
80 \r
81 \r
82             return (mSessionId.Length > 0) ? true : false;\r
83         }\r
84 \r
85         public static void loginAsync()\r
86         {\r
87             Thread t = new Thread(loginAsync_DoWord);\r
88             t.Start();\r
89         }\r
90 \r
91         static void loginAsync_DoWord()\r
92         {\r
93             login();\r
94         }\r
95 \r
96 \r
97     }\r
98 }\r