205{
207
208 const SiteContext* pSite =
NULL;
209 int nPageID = -1;
211
212
213 {
215 ctx.getCgiVariable("SERVER_NAME"));
216 __DCL_TRACE1(L
"SERVER_NAME: [%ls]\n", strServerName.data());
217 StringToPointerMap::ConstIterator itMap =
__mapSiteCtx.find(strServerName);
221 return;
222 }
223 pSite = (SiteContext*)(*itMap).value;
224
234 }
235
236
239 return;
240 }
241
242
243 try {
244 String script = ctx.scriptData();
246
247 StringArray lines;
248 script.split_r(L"\r?\n", true, lines);
249 for (size_t i = 0; i < lines.size(); i++) {
250 String strLine = lines[i];
251 StringArray list;
252 if (strLine.split(L'=', list) == 2) {
253 StringArray::Iterator itList = list.begin();
254 (*itList).trim();
255 if (!(*itList).compareNoCase(L"PAGE")) {
256 ++itList;
258 }
259 else if (!(*itList).compareNoCase(L"SERVICE_USER")) {
260 ++itList;
262 }
263 }
264 }
265 __DCL_TRACE2(L
"SCRIPT PAGE_ID=%d, SERVICE_USER_ID=%d\n",
266 nPageID, nServiceUserID);
267 }
268 catch(Exception* _cause) {
269 throw new ScriptException(_cause);
270 }
271
272
273 {
274 ListedStringToStringArrayMap& mapQuery = ctx.__queryMap;
275 ListedStringToStringArrayMap::ConstIterator itMap
276 = mapQuery.find(L"page");
277 if (itMap != mapQuery.end() && (*itMap).value.size() > 0) {
279 }
280 }
281
285 conn.getServerInfo().data());
286 try {
287 if (conn.canTransact()) {
288 conn.startTrans();
289 }
290
291 SQLQuery query(&conn);
292
293 Session session(ctx, query, nServiceUserID);
294 session.check();
295
296 HtmlPage page(nPageID, pSite);
297
299 L"nPageID: %d, nPermID: %d, RoleID: %d\n",
300 page.__nPageID,
301 page.__nPermID,
302 session.__nRoleID
303 );
304
305 if (page.init(query)) {
306#define __PERMITTED 0
307#define __DENIED 1
308#define __YET_GROUP 2
309#define __PENDING_GROUP 3
310
311
313
318 if (page.__nPermID >= session.__nRoleID)
320 }
321 else {
322 if (session.getMemberRole(nServiceUserID)) {
323 if (page.__nPermID >= session.__nMemberRoleID)
327 }
328 else
330 }
331 }
332
333 switch (fAuth) {
335 page.invoke(session);
336 break;
337 }
341 default: {
342 HtmlPage permDenied(
344 pSite
345 );
346 permDenied.init(query);
347 permDenied.print(session);
348 }
349 }
350 }
351 else {
352 page.printError(session, L"페이지 없음", L"요청하신 페이지가 없습니다.");
353 }
354
355 if (conn.inTransaction()) {
356 conn.commitTrans();
357 }
358 }
359 catch (Exception* _e) {
360 if (conn.inTransaction()) {
361 conn.rollbackTrans();
362 }
363 throw _e;
364 }
365
367
368 if (ctx.resContentType().compareNoCase(L"text", 4) == 0) {
369 ctx.
writer() << L
"<div>Elapsed Time: "
371 << L"</div>\n";
372 }
373}
@ HTTP_STATUS_NOT_IMPLEMENTED
#define __DCL_TRACE0(psz)
#define __DCL_TRACE3(fmt, arg1, arg2, arg3)
#define __DCL_TRACE2(fmt, arg1, arg2)
static String decode(const char *_mbs, size_t _mbslen=(size_t) -1)
static DateTime getCurrentLocalTime()
virtual String toString() const