aboutsummaryrefslogtreecommitdiff
path: root/src/ext/Iis/ca/scaweblog7.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ext/Iis/ca/scaweblog7.cpp')
-rw-r--r--src/ext/Iis/ca/scaweblog7.cpp120
1 files changed, 120 insertions, 0 deletions
diff --git a/src/ext/Iis/ca/scaweblog7.cpp b/src/ext/Iis/ca/scaweblog7.cpp
new file mode 100644
index 00000000..c857c46f
--- /dev/null
+++ b/src/ext/Iis/ca/scaweblog7.cpp
@@ -0,0 +1,120 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3#include "precomp.h"
4// sql queries
5LPCWSTR vcsWebLogQuery7 = L"SELECT `Log`, `Format` "
6 L"FROM `IIsWebLog` WHERE `Log`=?";
7
8enum eWebLogQuery { wlqLog = 1, wlqFormat };
9
10/* ****************************************************************
11 * ScaGetWebLog7 -Retrieves Log table data for the specified Log key
12 *
13 * ****************************************************************/
14HRESULT ScaGetWebLog7(
15 __in_z LPCWSTR wzLog,
16 __in WCA_WRAPQUERY_HANDLE hWebLogQuery,
17 __out SCA_WEB_LOG* pswl
18 )
19{
20 HRESULT hr = S_OK;
21 LPWSTR pwzData = NULL;
22 MSIHANDLE hRec;
23
24 if (0 == WcaGetQueryRecords(hWebLogQuery))
25 {
26 WcaLog(LOGMSG_VERBOSE, "Skipping ScaGetWebLog() - no records to process");
27 ExitFunction1(hr = S_FALSE);
28 }
29
30 WcaFetchWrappedReset(hWebLogQuery);
31
32 hr = WcaFetchWrappedRecordWhereString(hWebLogQuery, wlqLog, wzLog, &hRec);
33 if (E_NOMOREITEMS == hr)
34 {
35 ExitOnFailure(hr, "cannot locate IIsWebLog.Log='%ls'", wzLog);
36 }
37 HRESULT hrTemp = WcaFetchWrappedRecordWhereString(hWebLogQuery, wlqLog, wzLog, &hRec);
38
39 if (SUCCEEDED(hrTemp))
40 {
41 ExitOnFailure(hr, "error - found multiple matching IIsWebLog rows");
42 }
43
44 ::ZeroMemory(pswl, sizeof(SCA_WEB_LOG));
45
46 // check that log key matches
47 hr = WcaGetRecordString(hRec, wlqLog, &pwzData);
48 ExitOnFailure(hr, "failed to get IIsWebLog.Log for Log: %ls", wzLog);
49 hr = ::StringCchCopyW(pswl->wzLog, countof(pswl->wzLog), pwzData);
50 ExitOnFailure(hr, "failed to copy log name: %ls", pwzData);
51
52 hr = WcaGetRecordString(hRec, wlqFormat, &pwzData);
53 ExitOnFailure(hr, "failed to get IIsWebLog.Format for Log:", wzLog);
54
55 //translate WIX log format name strings to IIS7
56 if (0 == lstrcmpW(pwzData, L"Microsoft IIS Log File Format"))
57 {
58 hr = ::StringCchCopyW(pswl->wzFormat, countof(pswl->wzFormat), L"IIS");
59 ExitOnFailure(hr, "failed to copy log format: %ls", pwzData);
60 }
61 else if (0 == lstrcmpW(pwzData, L"NCSA Common Log File Format"))
62 {
63 hr = ::StringCchCopyW(pswl->wzFormat, countof(pswl->wzFormat), L"NCSA");
64 ExitOnFailure(hr, "failed to copy log format: %ls", pwzData);
65 }
66 else if (0 == lstrcmpW(pwzData, L"none"))
67 {
68 hr = ::StringCchCopyW(pswl->wzFormat, countof(pswl->wzFormat), L"none");
69 ExitOnFailure(hr, "failed to copy log format: %ls", pwzData);
70 }
71 else if (0 == lstrcmpW(pwzData, L"ODBC Logging"))
72 {
73 hr = ::StringCchCopyW(pswl->wzFormat, countof(pswl->wzFormat), L"W3C");
74 ExitOnFailure(hr, "failed to copy log format: %ls", pwzData);
75 }
76 else if (0 == lstrcmpW(pwzData, L"W3C Extended Log File Format"))
77 {
78 hr = ::StringCchCopyW(pswl->wzFormat, countof(pswl->wzFormat), L"W3C");
79 ExitOnFailure(hr, "failed to copy log format: %ls", pwzData);
80 }
81 else
82 {
83 hr = HRESULT_FROM_WIN32(ERROR_INVALID_INDEX);
84 ExitOnFailure(hr, "Invalid log file format: %ls", pwzData);
85 }
86
87LExit:
88 ReleaseStr(pwzData);
89
90 return hr;
91}
92
93
94/* ****************************************************************
95 * ScaWriteWebLog -Writes the IIS log values to the metabase.
96 *
97 * ****************************************************************/
98HRESULT ScaWriteWebLog7(
99 LPCWSTR wzWebBase,
100 const SCA_WEB_LOG *pswl
101 )
102{
103 HRESULT hr = S_OK;
104
105 if (*pswl->wzFormat)
106 {
107 //write pswl->wzFormat
108 hr = ScaWriteConfigID(IIS_WEBLOG);
109 ExitOnFailure(hr, "Failed to write log format id");
110 hr = ScaWriteConfigString(wzWebBase);
111 ExitOnFailure(hr, "Failed to write log web key");
112 hr = ScaWriteConfigString(pswl->wzFormat);
113 ExitOnFailure(hr, "Failed to write log format string");
114 }
115
116LExit:
117 return hr;
118}
119
120