Skip to content

Commit

Permalink
fix(userspace/falco): enable --support on windows
Browse files Browse the repository at this point in the history
Signed-off-by: Roberto Scolaro <roberto.scolaro21@gmail.com>
  • Loading branch information
therealbobo committed Oct 25, 2023
1 parent d565aec commit efd4c68
Showing 1 changed file with 38 additions and 1 deletion.
39 changes: 38 additions & 1 deletion userspace/falco/app/actions/print_support.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ See the License for the specific language governing permissions and
limitations under the License.
*/

#ifndef _WIN32
#include <sys/utsname.h>
#endif

#include "actions.h"
#include "../../versions_info.h"
Expand All @@ -37,23 +39,58 @@ falco::app::run_result falco::app::actions::print_support(falco::app::state& s)
if(s.options.print_support)
{
nlohmann::json support;
struct utsname sysinfo;
std::string cmdline;

#ifndef _WIN32
struct utsname sysinfo;
if(uname(&sysinfo) != 0)
{
return run_result::fatal(std::string("Could not uname() to find system info: ") + strerror(errno));
}
#else
OSVERSIONINFO osvi;
SYSTEM_INFO sysInfo;
TCHAR computerName[256];
DWORD size = sizeof(computerName);

osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetSystemInfo(&sysInfo);
if(!GetVersionEx(&osvi) || !GetComputerName(computerName, &size))
{
return run_result::fatal(std::string("Could not get system info: ") + strerror(errno));
}
#endif

const falco::versions_info infos(s.offline_inspector);
support["version"] = infos.falco_version;
support["engine_info"] = infos.as_json();

#ifndef _WIN32
support["system_info"]["sysname"] = sysinfo.sysname;
support["system_info"]["nodename"] = sysinfo.nodename;
support["system_info"]["release"] = sysinfo.release;
support["system_info"]["version"] = sysinfo.version;
support["system_info"]["machine"] = sysinfo.machine;
#else
support["system_info"]["sysname"] = "Windows";
support["system_info"]["nodename"] = computerName;
support["system_info"]["release"] = osvi.dwMajorVersion;
support["system_info"]["version"] = osvi.dwMinorVersion;

switch (sysInfo.wProcessorArchitecture) {
case PROCESSOR_ARCHITECTURE_AMD64:
support["system_info"]["machine"] = "x86_64";
break;
case PROCESSOR_ARCHITECTURE_ARM:
support["system_info"]["machine"] = "ARM";
break;
case PROCESSOR_ARCHITECTURE_INTEL:
support["system_info"]["machine"] = "i386";
break;
default:
support["system_info"]["machine"] = "unknown";
}
#endif
support["cmdline"] = s.cmdline;
support["config"] = read_file(s.options.conf_filename);
support["rules_files"] = nlohmann::json::array();
Expand Down

0 comments on commit efd4c68

Please sign in to comment.