| 1 | #pragma once |
| 2 | // 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. |
| 3 | |
| 4 | |
| 5 | #ifdef __cplusplus |
| 6 | extern "C" { |
| 7 | #endif |
| 8 | |
| 9 | // IIS Config schema names |
| 10 | #define IIS_CONFIG_ADD L"add" |
| 11 | #define IIS_CONFIG_ALLOWED L"allowed" |
| 12 | #define IIS_CONFIG_APPHOST_ROOT L"MACHINE/WEBROOT/APPHOST" |
| 13 | #define IIS_CONFIG_APPLICATION L"application" |
| 14 | #define IIS_CONFIG_APPPOOL L"applicationPool" |
| 15 | #define IIS_CONFIG_APPPOOL_AUTO L"autoStart" |
| 16 | #define IIS_CONFIG_APPPOOL_SECTION L"system.applicationHost/applicationPools" |
| 17 | #define IIS_CONFIG_AUTOSTART L"serverAutoStart" |
| 18 | #define IIS_CONFIG_BINDING L"binding" |
| 19 | #define IIS_CONFIG_BINDINGINFO L"bindingInformation" |
| 20 | #define IIS_CONFIG_BINDINGS L"bindings" |
| 21 | #define IIS_CONFIG_DESC L"description" |
| 22 | #define IIS_CONFIG_EXECUTABLE L"scriptProcessor" |
| 23 | #define IIS_CONFIG_ENABLED L"enabled" |
| 24 | #define IIS_CONFIG_ENABLE32 L"enable32BitAppOnWin64" |
| 25 | #define IIS_CONFIG_FILEEXT L"fileExtension" |
| 26 | #define IIS_CONFIG_FILTER L"filter" |
| 27 | #define IIS_CONFIG_GROUPID L"groupId" |
| 28 | #define IIS_CONFIG_HEADERS L"customHeaders" |
| 29 | #define IIS_CONFIG_HTTPERRORS_SECTION L"system.webServer/httpErrors" |
| 30 | #define IIS_CONFIG_ID L"id" |
| 31 | #define IIS_CONFIG_ISAPI_SECTION L"system.webServer/isapiFilters" |
| 32 | #define IIS_CONFIG_HTTPPROTO_SECTION L"system.webServer/httpProtocol" |
| 33 | #define IIS_CONFIG_LOG_SECTION L"system.applicationHost/log" |
| 34 | #define IIS_CONFIG_LOG_UTF8 L"logInUTF8" |
| 35 | #define IIS_CONFIG_LIMITS L"limits" |
| 36 | #define IIS_CONFIG_PIPELINEMODE L"managedPipelineMode" |
| 37 | #define IIS_CONFIG_MANAGEDRUNTIMEVERSION L"managedRuntimeVersion" |
| 38 | #define IIS_CONFIG_WEBLOG L"logFile" |
| 39 | #define IIS_CONFIG_LOGFORMAT L"logFormat" |
| 40 | #define IIS_CONFIG_MIMEMAP L"mimeMap" |
| 41 | #define IIS_CONFIG_MIMETYPE L"mimeType" |
| 42 | #define IIS_CONFIG_MODULES L"modules" |
| 43 | #define IIS_CONFIG_NAME L"name" |
| 44 | #define IIS_CONFIG_PATH L"path" |
| 45 | #define IIS_CONFIG_PHYSPATH L"physicalPath" |
| 46 | #define IIS_CONFIG_PROTOCOL L"protocol" |
| 47 | #define IIS_CONFIG_RESTRICTION_SECTION L"system.webServer/security/isapiCgiRestriction" |
| 48 | #define IIS_CONFIG_SITE L"site" |
| 49 | #define IIS_CONFIG_SITE_ID L"id" |
| 50 | #define IIS_CONFIG_SITES_SECTION L"system.applicationHost/sites" |
| 51 | #define IIS_CONFIG_CONNECTTIMEOUT L"connectionTimeout" |
| 52 | #define IIS_CONFIG_VDIR L"virtualDirectory" |
| 53 | #define IIS_CONFIG_VALUE L"value" |
| 54 | #define IIS_CONFIG_VERBS L"verb" |
| 55 | #define IIS_CONFIG_WEBLIMITS_SECTION L"system.applicationHost/webLimits" |
| 56 | #define IIS_CONFIG_WEBLIMITS_MAXBAND L"maxGlobalBandwidth" |
| 57 | #define IIS_CONFIG_TRUE L"true" |
| 58 | #define IIS_CONFIG_FALSE L"false" |
| 59 | #define IIS_CONFIG_ERROR L"error" |
| 60 | #define IIS_CONFIG_STATUSCODE L"statusCode" |
| 61 | #define IIS_CONFIG_SUBSTATUS L"subStatusCode" |
| 62 | #define IIS_CONFIG_LANGPATH L"prefixLanguageFilePath" |
| 63 | #define IIS_CONFIG_RESPMODE L"responseMode" |
| 64 | #define IIS_CONFIG_CLEAR L"clear" |
| 65 | #define IIS_CONFIG_RECYCLING L"recycling" |
| 66 | #define IIS_CONFIG_PEROIDRESTART L"periodicRestart" |
| 67 | #define IIS_CONFIG_TIME L"time" |
| 68 | #define IIS_CONFIG_REQUESTS L"requests" |
| 69 | #define IIS_CONFIG_SCHEDULE L"schedule" |
| 70 | #define IIS_CONFIG_MEMORY L"memory" |
| 71 | #define IIS_CONFIG_PRIVMEMORY L"privateMemory" |
| 72 | #define IIS_CONFIG_PROCESSMODEL L"processModel" |
| 73 | #define IIS_CONFIG_IDLETIMEOUT L"idleTimeout" |
| 74 | #define IIS_CONFIG_QUEUELENGTH L"queueLength" |
| 75 | #define IIS_CONFIG_IDENITITYTYPE L"identityType" |
| 76 | #define IIS_CONFIG_LOCALSYSTEM L"LocalSystem" |
| 77 | #define IIS_CONFIG_LOCALSERVICE L"LocalService" |
| 78 | #define IIS_CONFIG_NETWORKSERVICE L"NetworkService" |
| 79 | #define IIS_CONFIG_SPECIFICUSER L"SpecificUser" |
| 80 | #define IIS_CONFIG_APPLICATIONPOOLIDENTITY L"ApplicationPoolIdentity" |
| 81 | #define IIS_CONFIG_USERNAME L"userName" |
| 82 | #define IIS_CONFIG_PASSWORD L"password" |
| 83 | #define IIS_CONFIG_CPU L"cpu" |
| 84 | #define IIS_CONFIG_LIMIT L"limit" |
| 85 | #define IIS_CONFIG_CPU_ACTION L"action" |
| 86 | #define IIS_CONFIG_KILLW3WP L"KillW3wp" |
| 87 | #define IIS_CONFIG_NOACTION L"NoAction" |
| 88 | #define IIS_CONFIG_RESETINTERVAL L"resetInterval" |
| 89 | #define IIS_CONFIG_MAXWRKPROCESSES L"maxProcesses" |
| 90 | #define IIS_CONFIG_HANDLERS_SECTION L"system.webServer/handlers" |
| 91 | #define IIS_CONFIG_DEFAULTDOC_SECTION L"system.webServer/defaultDocument" |
| 92 | #define IIS_CONFIG_ASP_SECTION L"system.webServer/asp" |
| 93 | #define IIS_CONFIG_SCRIPTERROR L"scriptErrorSentToBrowser" |
| 94 | #define IIS_CONFIG_STATICCONTENT_SECTION L"system.webServer/staticContent" |
| 95 | #define IIS_CONFIG_HTTPEXPIRES L"httpExpires" |
| 96 | #define IIS_CONFIG_MAXAGE L"cacheControlMaxAge" |
| 97 | #define IIS_CONFIG_CLIENTCACHE L"clientCache" |
| 98 | #define IIS_CONFIG_CACHECONTROLMODE L"cacheControlMode" |
| 99 | #define IIS_CONFIG_USEMAXAGE L"UseMaxAge" |
| 100 | #define IIS_CONFIG_USEEXPIRES L"UseExpires" |
| 101 | #define IIS_CONFIG_CACHECUST L"cacheControlCustom" |
| 102 | #define IIS_CONFIG_ASP_SECTION L"system.webServer/asp" |
| 103 | #define IIS_CONFIG_SESSION L"session" |
| 104 | #define IIS_CONFIG_ALLOWSTATE L"allowSessionState" |
| 105 | #define IIS_CONFIG_TIMEOUT L"timeout" |
| 106 | #define IIS_CONFIG_BUFFERING L"bufferingOn" |
| 107 | #define IIS_CONFIG_PARENTPATHS L"enableParentPaths" |
| 108 | #define IIS_CONFIG_SCRIPTLANG L"scriptLanguage" |
| 109 | #define IIS_CONFIG_SCRIPTTIMEOUT L"scriptTimeout" |
| 110 | #define IIS_CONFIG_LIMITS L"limits" |
| 111 | #define IIS_CONFIG_ALLOWDEBUG L"appAllowDebugging" |
| 112 | #define IIS_CONFIG_ALLOWCLIENTDEBUG L"appAllowClientDebug" |
| 113 | #define IIS_CONFIG_CERTIFICATEHASH L"certificateHash" |
| 114 | #define IIS_CONFIG_CERTIFICATESTORENAME L"certificateStoreName" |
| 115 | #define IIS_CONFIG_HTTPLOGGING_SECTION L"system.webServer/httpLogging" |
| 116 | #define IIS_CONFIG_DONTLOG L"dontLog" |
| 117 | |
| 118 | typedef BOOL (CALLBACK* ENUMAPHOSTELEMENTPROC)(IAppHostElement*, LPVOID); |
| 119 | typedef BOOL (CALLBACK* VARIANTCOMPARATORPROC)(VARIANT*, VARIANT*); |
| 120 | |
| 121 | HRESULT DAPI Iis7PutPropertyVariant( |
| 122 | __in IAppHostElement *pElement, |
| 123 | __in LPCWSTR wzPropName, |
| 124 | __in VARIANT vtPut |
| 125 | ); |
| 126 | |
| 127 | HRESULT DAPI Iis7PutPropertyInteger( |
| 128 | __in IAppHostElement *pElement, |
| 129 | __in LPCWSTR wzPropName, |
| 130 | __in DWORD dValue |
| 131 | ); |
| 132 | |
| 133 | HRESULT DAPI Iis7PutPropertyString( |
| 134 | __in IAppHostElement *pElement, |
| 135 | __in LPCWSTR wzPropName, |
| 136 | __in LPCWSTR wzString |
| 137 | ); |
| 138 | |
| 139 | HRESULT DAPI Iis7PutPropertyBool( |
| 140 | __in IAppHostElement *pElement, |
| 141 | __in LPCWSTR wzPropName, |
| 142 | __in BOOL fValue); |
| 143 | |
| 144 | HRESULT DAPI Iis7GetPropertyVariant( |
| 145 | __in IAppHostElement *pElement, |
| 146 | __in LPCWSTR wzPropName, |
| 147 | __in VARIANT* vtGet |
| 148 | ); |
| 149 | |
| 150 | HRESULT DAPI Iis7GetPropertyString( |
| 151 | __in IAppHostElement *pElement, |
| 152 | __in LPCWSTR wzPropName, |
| 153 | __in LPWSTR* psczGet |
| 154 | ); |
| 155 | |
| 156 | struct IIS7_APPHOSTELEMENTCOMPARISON |
| 157 | { |
| 158 | LPCWSTR sczElementName; |
| 159 | LPCWSTR sczAttributeName; |
| 160 | VARIANT* pvAttributeValue; |
| 161 | VARIANTCOMPARATORPROC pComparator; |
| 162 | }; |
| 163 | |
| 164 | BOOL DAPI Iis7IsMatchingAppHostElement( |
| 165 | __in IAppHostElement *pElement, |
| 166 | __in IIS7_APPHOSTELEMENTCOMPARISON* pComparison |
| 167 | ); |
| 168 | |
| 169 | HRESULT DAPI Iis7FindAppHostElementString( |
| 170 | __in IAppHostElementCollection *pCollection, |
| 171 | __in LPCWSTR wzElementName, |
| 172 | __in LPCWSTR wzAttributeName, |
| 173 | __in LPCWSTR wzAttributeValue, |
| 174 | __out IAppHostElement** ppElement, |
| 175 | __out DWORD* pdwIndex |
| 176 | ); |
| 177 | |
| 178 | HRESULT DAPI Iis7FindAppHostElementPath( |
| 179 | __in IAppHostElementCollection *pCollection, |
| 180 | __in LPCWSTR wzElementName, |
| 181 | __in LPCWSTR wzAttributeName, |
| 182 | __in LPCWSTR wzAttributeValue, |
| 183 | __out IAppHostElement** ppElement, |
| 184 | __out DWORD* pdwIndex |
| 185 | ); |
| 186 | |
| 187 | HRESULT DAPI Iis7FindAppHostElementInteger( |
| 188 | __in IAppHostElementCollection *pCollection, |
| 189 | __in LPCWSTR wzElementName, |
| 190 | __in LPCWSTR wzAttributeName, |
| 191 | __in DWORD dwAttributeValue, |
| 192 | __out IAppHostElement** ppElement, |
| 193 | __out DWORD* pdwIndex |
| 194 | ); |
| 195 | |
| 196 | HRESULT DAPI Iis7FindAppHostElementVariant( |
| 197 | __in IAppHostElementCollection *pCollection, |
| 198 | __in LPCWSTR wzElementName, |
| 199 | __in LPCWSTR wzAttributeName, |
| 200 | __in VARIANT* pvAttributeValue, |
| 201 | __out IAppHostElement** ppElement, |
| 202 | __out DWORD* pdwIndex |
| 203 | ); |
| 204 | |
| 205 | HRESULT DAPI Iis7EnumAppHostElements( |
| 206 | __in IAppHostElementCollection *pCollection, |
| 207 | __in ENUMAPHOSTELEMENTPROC pCallback, |
| 208 | __in LPVOID pContext, |
| 209 | __out IAppHostElement** ppElement, |
| 210 | __out DWORD* pdwIndex |
| 211 | ); |
| 212 | |
| 213 | HRESULT DAPI Iis7FindAppHostMethod( |
| 214 | __in IAppHostMethodCollection *pCollection, |
| 215 | __in LPCWSTR wzMethodName, |
| 216 | __out IAppHostMethod** ppMethod, |
| 217 | __out DWORD* pdwIndex |
| 218 | ); |
| 219 | |
| 220 | #ifdef __cplusplus |
| 221 | } |
| 222 | #endif |