[cpp-sp] 02/03: SSPCPP-682 Wire Shibd into event messages

Rod Widdowson rdw at steadingsoftware.com
Mon Jun 20 09:00:18 EDT 2016


This is an automated email from the git hooks/post-receive script.

rdw pushed a commit to branch master
in repository cpp-sp.

View the commit online:
http://git.shibboleth.net/view/?p=cpp-sp.git;a=commit;h=9f968a65efa9b65e759d97696a786525bdad2cc4

commit 9f968a65efa9b65e759d97696a786525bdad2cc4
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Mon Jun 20 11:17:26 2016 +0100

    SSPCPP-682 Wire Shibd into event messages
    
    https://issues.shibboleth.net/jira/browse/SSPCPP-682
    
    Use specific messages for shibd.  No formatting is needed, but as
    a matter of course we leave the original message in place (to help
    debug in the case of broken installs) and also put GetLastError()
    into the binary data area.
    
    We cannot format binary data in the event viewer, so one would
    need to look at tht raw xml and then byte swap. But that is
    advanced debugging anyway.
---
 Projects/vc10/Shibboleth.sln      |  6 ++++++
 Projects/vc10/shibd/shibd.vcxproj | 25 ++++++++++++++++------
 shibd/shibd_win32.cpp             | 16 ++++++++------
 util/message.mc                   | 45 +++++++++++++++++++++++++++++++++++++--
 4 files changed, 77 insertions(+), 15 deletions(-)

diff --git a/Projects/vc10/Shibboleth.sln b/Projects/vc10/Shibboleth.sln
index a86422e..58f621a 100644
--- a/Projects/vc10/Shibboleth.sln
+++ b/Projects/vc10/Shibboleth.sln
@@ -100,6 +100,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Doc", "Doc", "{6ED5E3E7-1B0
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "isapi_shib", "isapi_shib\isapi_shib.vcxproj", "{87C25D4E-8D19-4513-B0BA-BC668BC2DEE3}"
+	ProjectSection(ProjectDependencies) = postProject
+		{303291A1-C542-49E4-80B3-9304B7B6F8BC} = {303291A1-C542-49E4-80B3-9304B7B6F8BC}
+	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_shib_13", "apache\mod_shib13.vcxproj", "{D243B43E-728E-4F32-BDFF-B3A897037C6D}"
 EndProject
@@ -114,6 +117,9 @@ EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibsp", "shibsp\shibsp.vcxproj", "{81F0F7A6-DC36-46EF-957F-F9E81D4403F6}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibd", "shibd\shibd.vcxproj", "{F13141B5-6C87-40BB-8D4E-5CC56EBB4C59}"
+	ProjectSection(ProjectDependencies) = postProject
+		{303291A1-C542-49E4-80B3-9304B7B6F8BC} = {303291A1-C542-49E4-80B3-9304B7B6F8BC}
+	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shibsp-lite", "shibsp\shibsp-lite.vcxproj", "{81F0F7A6-DC36-46EF-957F-F9E81D4403F7}"
 EndProject
diff --git a/Projects/vc10/shibd/shibd.vcxproj b/Projects/vc10/shibd/shibd.vcxproj
index 9b1b0fe..0c87ef4 100644
--- a/Projects/vc10/shibd/shibd.vcxproj
+++ b/Projects/vc10/shibd/shibd.vcxproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
     <ProjectConfiguration Include="Debug|Win32">
@@ -93,7 +93,7 @@
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\shibd\;..\..\..\;..\..\..\..\cpp-opensaml;..\..\..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..\shibd\;..\..\..\;..\..\..\..\cpp-opensaml;..\..\..\..\cpp-xmltooling;$(OutDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <FunctionLevelLinking>true</FunctionLevelLinking>
@@ -112,6 +112,9 @@
       </DataExecutionPrevention>
       <GenerateDebugInformation>true</GenerateDebugInformation>
     </Link>
+    <PreBuildEvent>
+      <Command>mc message.mc</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <Midl>
@@ -122,7 +125,7 @@
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <AdditionalIncludeDirectories>..\..\..\shibd\;..\..\..\;..\..\..\..\cpp-opensaml;..\..\..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..\shibd\;..\..\..\;..\..\..\..\cpp-opensaml;..\..\..\..\cpp-xmltooling;$(OutDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <StringPooling>true</StringPooling>
       <FunctionLevelLinking>true</FunctionLevelLinking>
@@ -141,6 +144,9 @@
       </DataExecutionPrevention>
       <GenerateDebugInformation>true</GenerateDebugInformation>
     </Link>
+    <PreBuildEvent>
+      <Command>mc message.mc</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <Midl>
@@ -149,7 +155,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\shibd\;..\..\..\;..\..\..\..\cpp-opensaml;..\..\..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..\shibd\;..\..\..\;..\..\..\..\cpp-opensaml;..\..\..\..\cpp-xmltooling;$(OutDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
@@ -169,6 +175,10 @@
       <DataExecutionPrevention>
       </DataExecutionPrevention>
     </Link>
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <Midl>
@@ -178,7 +188,7 @@
     </Midl>
     <ClCompile>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\..\shibd\;..\..\..\;..\..\..\..\cpp-opensaml;..\..\..\..\cpp-xmltooling;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\..\shibd\;..\..\..\;..\..\..\..\cpp-opensaml;..\..\..\..\cpp-xmltooling;$(OutDir;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>_CONSOLE;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
@@ -198,6 +208,9 @@
       <DataExecutionPrevention>
       </DataExecutionPrevention>
     </Link>
+    <PreBuildEvent>
+      <Command>mc message.mc</Command>
+    </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
     <None Include="..\..\..\shibd\Makefile.am" />
@@ -221,4 +234,4 @@
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/shibd/shibd_win32.cpp b/shibd/shibd_win32.cpp
index ae8ff46..bb12c59 100644
--- a/shibd/shibd_win32.cpp
+++ b/shibd/shibd_win32.cpp
@@ -27,6 +27,7 @@
 #define _CRT_NONSTDC_NO_DEPRECATE 1
 #define _CRT_SECURE_NO_DEPRECATE 1
 
+#include <message.h>
 #include <shibsp/base.h>
 #include <string>
 #include <windows.h>
@@ -158,7 +159,7 @@ int main(int argc, char *argv[])
         SetConsoleCtrlHandler(&BreakHandler,TRUE);
         if ((i=real_main(1))!=0)
         {
-            LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "shibd startup failed, check shibd.log for further details");
+            LogEvent(nullptr, EVENTLOG_ERROR_TYPE, SHIBD_STARTUP_FAILED, nullptr, "shibd startup failed, check shibd.log for further details");
             return i;
         }
         return real_main(0);
@@ -199,7 +200,7 @@ int main(int argc, char *argv[])
     };
 
     if (!StartServiceCtrlDispatcher(dispatchTable))
-        LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "StartServiceCtrlDispatcher failed.");
+        LogEvent(nullptr, EVENTLOG_ERROR_TYPE, SHIBD_SERVICE_START_FAILED, nullptr, "StartServiceCtrlDispatcher failed.");
     return 0;
 }
 
@@ -214,11 +215,11 @@ VOID ServiceStart (DWORD dwArgc, LPSTR *lpszArgv)
 
     if (real_main(1)!=0)
     {
-        LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "shibd startup failed, check shibd.log for further details");
+        LogEvent(nullptr, EVENTLOG_ERROR_TYPE, SHIBD_STARTUP_FAILED, nullptr, "shibd startup failed, check shibd.log for further details");
         return;
     }
 
-    LogEvent(nullptr, EVENTLOG_INFORMATION_TYPE, 7700, nullptr, "shibd started successfully.");
+    LogEvent(nullptr, EVENTLOG_INFORMATION_TYPE, SHIBD_SERVICE_STARTED, nullptr, "shibd started successfully.");
 
     if (!ReportStatusToSCMgr(SERVICE_RUNNING, NO_ERROR, 0))
         return;
@@ -235,7 +236,7 @@ VOID ServiceStart (DWORD dwArgc, LPSTR *lpszArgv)
 VOID ServiceStop()
 {
     if (!bConsole)
-        LogEvent(nullptr, EVENTLOG_INFORMATION_TYPE, 7701, nullptr, "shibd stopping...");
+        LogEvent(nullptr, EVENTLOG_INFORMATION_TYPE, SHIBD_SERVICE_STOPPING, nullptr, "shibd stopping...");
     shibd_shutdown=true;
 }
 
@@ -362,7 +363,7 @@ BOOL ReportStatusToSCMgr(DWORD dwCurrentState,
         // Report the status of the service to the service control manager.
         //
         if (!(fResult = SetServiceStatus(sshStatusHandle, &ssStatus)))
-            LogEvent(nullptr, EVENTLOG_ERROR_TYPE, 2100, nullptr, "SetServiceStatus failed.");
+            LogEvent(nullptr, EVENTLOG_ERROR_TYPE, SHIBD_SET_SERVICE_STATUS_FAILED, nullptr, "SetServiceStatus failed.");
     }
     return fResult;
 }
@@ -552,8 +553,9 @@ BOOL LogEvent(
     LPCSTR  message)
 {
     LPCSTR  messages[] = {message, nullptr};
+    DWORD gle = {GetLastError()};
     
     HANDLE hElog = RegisterEventSource(lpUNCServerName, "Shibboleth Daemon");
-    BOOL res = ReportEvent(hElog, wType, 0, dwEventID, lpUserSid, 1, 0, messages, nullptr);
+    BOOL res = ReportEvent(hElog, wType, CATEGORY_SHIBD, dwEventID, lpUserSid, 1, sizeof(DWORD), messages, &gle);
     return (DeregisterEventSource(hElog) && res);
 }
diff --git a/util/message.mc b/util/message.mc
index fa28c1e..e7c2612 100644
--- a/util/message.mc
+++ b/util/message.mc
@@ -31,13 +31,54 @@ FacilityNames=(Shibboleth=0x231:FACILITY_SYSTEM
 MessageId=100
 Severity=Error
 Facility=Shibboleth
-SymbolicName=SHIBD_MESSAGE
+SymbolicName=SHIBD_GENERIC_MESSAGE
 Language=English
-Shibboleth Daemon: %1!s!:  %2!s! %3!s! (%1!*x! : %2!x! '%3!ld!')  (%1!4d! : %2!I32d! '%3!3D!')
+Shibboleth Daemon: %1!s!
 .
 
 MessageId=
 Severity=Error
+Facility=Shibboleth
+SymbolicName=SHIBD_STARTUP_FAILED
+Language=English
+Shibboleth Daemon startup failed.
+.
+
+MessageId=
+Severity=Error
+Facility=Shibboleth
+SymbolicName=SHIBD_SERVICE_START_FAILED
+Language=English
+Shibboleth Daemon startup: StartServiceCtrlDispatcher failed.
+.
+
+MessageId=
+Severity=Error
+Facility=Shibboleth
+SymbolicName=SHIBD_SET_SERVICE_STATUS_FAILED
+Language=English
+Shibboleth Daemon startup: SetServiceStatus failed.
+.
+
+MessageId=
+Severity=Informational
+Facility=Shibboleth
+SymbolicName=SHIBD_SERVICE_STARTED
+Language=English
+Shibboleth Daemon started successfully.
+.
+
+MessageId=
+Severity=Informational
+Facility=Shibboleth
+SymbolicName=SHIBD_SERVICE_STOPPING
+Language=English
+Shibboleth Daemon stopping...
+.
+
+
+MessageId=200
+Severity=Error
 Facility=ShibbolethISAPI
 SymbolicName=SHIBISAPI_MESSAGE
 Language=English

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list