fix: 修复菜单为空问题 - 移除后端过滤home路由的错误逻辑
- 修复RouteService中错误过滤home路由的问题 - 后端现在正确返回所有用户有权限的路由 - 添加设备管理相关功能(列表、在线监控、电源管理、远程监控) - 添加详细的修复文档和重启脚本 - 更新权限配置脚本 问题根源:后端代码中有逻辑会过滤掉home路由,导致前端收到空数组,无法生成菜单 解决方案:移除过滤home路由的逻辑,让后端返回所有有权限的路由
This commit is contained in:
parent
67f6fdf610
commit
b92e1119ae
190
403权限问题修复说明.md
Normal file
190
403权限问题修复说明.md
Normal file
@ -0,0 +1,190 @@
|
||||
# 403权限问题修复说明
|
||||
|
||||
## 问题原因
|
||||
|
||||
用户登录后跳转到403无权限页面,主要原因有:
|
||||
|
||||
1. **缺少 home 路由权限**:所有角色的 menus 字段都没有包含 `home`,导致登录后无法访问首页
|
||||
2. **路由名称格式不一致**:
|
||||
- R_USER 角色配置的是 `my_device`(下划线)
|
||||
- 但实际路由名称是 `my-device`(连字符)
|
||||
- 导致权限匹配失败
|
||||
3. **前端路由守卫检查 roles**:
|
||||
- 后端返回的路由 meta 中包含 roles 字段
|
||||
- 前端路由守卫会检查用户是否有对应的 roles
|
||||
- 但在动态路由模式下,后端已经根据用户角色过滤了路由
|
||||
- 前端不应该再次检查 roles,否则会导致403错误
|
||||
|
||||
## 路由命名规则
|
||||
|
||||
- **父路由**:使用连字符(kebab-case),如 `user-manage`、`my-device`、`my-application`
|
||||
- **子路由**:使用下划线,如 `user-manage_list`、`my-device_status`、`my-application_apply`
|
||||
|
||||
## 修复步骤
|
||||
|
||||
### 1. 运行数据库修复脚本
|
||||
|
||||
```bash
|
||||
fix_403_complete.bat
|
||||
```
|
||||
|
||||
或者手动执行SQL:
|
||||
|
||||
```bash
|
||||
mysql -u root -proot < fix_403_complete.sql
|
||||
```
|
||||
|
||||
这个脚本会:
|
||||
- 为所有角色添加 `home` 路由权限
|
||||
- 修正路由名称格式(父路由用连字符,子路由用下划线)
|
||||
- 确保角色的 menus 字段与数据库中的路由名称一致
|
||||
|
||||
### 2. 重启后端服务
|
||||
|
||||
修复数据库后,**必须重启** Spring Boot后端服务:
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
mvn spring-boot:run
|
||||
```
|
||||
|
||||
或者在IDE中重启应用。
|
||||
|
||||
**重要**:后端代码已经修改,会自动移除路由 meta 中的 roles 字段,避免前端重复检查权限。
|
||||
|
||||
### 3. 清除浏览器缓存并重新登录
|
||||
|
||||
- 按 Ctrl+Shift+Delete 清除浏览器缓存
|
||||
- 或者使用无痕模式/隐私模式
|
||||
- 退出登录
|
||||
- 重新登录测试
|
||||
|
||||
## 修复后的角色权限配置
|
||||
|
||||
### R_SUPER(超级管理员)
|
||||
拥有所有菜单权限:
|
||||
- home(首页)
|
||||
- device(设备管理)及所有子菜单
|
||||
- screen(屏幕监控)及所有子菜单
|
||||
- user-manage(用户管理)及所有子菜单
|
||||
- application(使用申请)及所有子菜单
|
||||
- system(系统设置)及所有子菜单
|
||||
- my-device(我的设备)及所有子菜单
|
||||
- my-application(设备申请)及所有子菜单
|
||||
|
||||
### R_ADMIN(管理员)
|
||||
除系统设置外的所有管理功能:
|
||||
- home(首页)
|
||||
- device(设备管理)及所有子菜单
|
||||
- screen(屏幕监控)及所有子菜单
|
||||
- user-manage(用户管理):列表和角色管理(不包括权限管理)
|
||||
- application(使用申请)及所有子菜单
|
||||
|
||||
### R_USER(普通用户)
|
||||
只能访问自己的设备和申请:
|
||||
- home(首页)
|
||||
- my-device(我的设备)及所有子菜单
|
||||
- my-application(设备申请)及所有子菜单
|
||||
|
||||
### R_STU(学生)
|
||||
只能访问首页:
|
||||
- home(首页)
|
||||
|
||||
## 验证修复
|
||||
|
||||
### 1. 检查数据库
|
||||
|
||||
```sql
|
||||
-- 查看角色配置
|
||||
SELECT role_code, role_name, menus FROM sys_role;
|
||||
|
||||
-- 查看路由配置
|
||||
SELECT name, path, component FROM sys_route WHERE status = 1 ORDER BY order_num;
|
||||
```
|
||||
|
||||
### 2. 测试登录
|
||||
|
||||
使用不同角色的账号登录测试:
|
||||
|
||||
- **admin/admin123**(R_SUPER + R_ADMIN):应该能看到所有菜单
|
||||
- **user/user123**(R_USER):应该只能看到首页、我的设备、设备申请
|
||||
|
||||
### 3. 查看后端日志
|
||||
|
||||
登录后查看后端控制台输出,应该能看到类似以下的调试信息:
|
||||
|
||||
```
|
||||
=== 用户路由权限调试 ===
|
||||
用户ID: 1
|
||||
用户角色: R_SUPER,R_ADMIN
|
||||
查询到的角色数量: 2
|
||||
角色: R_SUPER - 超级管理员
|
||||
配置的菜单: home,device,device_list,...
|
||||
允许访问的菜单: [home, device, device_list, ...]
|
||||
```
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q1: 修复后还是403?
|
||||
A: 请确保:
|
||||
1. 已重启后端服务
|
||||
2. 已清除浏览器缓存
|
||||
3. 已重新登录
|
||||
4. 检查后端日志确认菜单配置已更新
|
||||
|
||||
### Q2: 某些菜单看不到?
|
||||
A: 检查:
|
||||
1. 该菜单是否在角色的 menus 字段中
|
||||
2. 路由名称是否正确(父路由用连字符,子路由用下划线)
|
||||
3. 路由表中是否存在该路由且 status=1
|
||||
|
||||
### Q3: 如何添加新菜单权限?
|
||||
A:
|
||||
1. 在 sys_route 表中添加新路由
|
||||
2. 在 sys_role 表的 menus 字段中添加对应的路由名称
|
||||
3. 重启后端服务
|
||||
|
||||
## 技术细节
|
||||
|
||||
### 后端权限过滤逻辑
|
||||
|
||||
`RouteService.getUserRoutes()` 方法:
|
||||
|
||||
1. 根据用户ID查询用户信息
|
||||
2. 获取用户的角色列表(roles字段)
|
||||
3. 查询这些角色的菜单配置(menus字段)
|
||||
4. 合并所有角色的菜单权限
|
||||
5. 自动添加父菜单(如果配置了子菜单)
|
||||
6. 从路由表中过滤出用户有权限的路由
|
||||
7. **移除路由 meta 中的 roles 字段**(避免前端重复检查)
|
||||
8. 构建路由树并返回
|
||||
|
||||
### 前端路由处理
|
||||
|
||||
前端使用动态路由模式(`VITE_AUTH_ROUTE_MODE=dynamic`):
|
||||
|
||||
1. 登录成功后调用 `/route/getUserRoutes` 获取用户路由
|
||||
2. 前端根据返回的路由动态生成菜单
|
||||
3. **前端路由守卫检查逻辑**:
|
||||
- 检查路由的 `meta.roles` 字段
|
||||
- 如果路由有 roles 且用户没有对应角色,跳转403
|
||||
- **在动态路由模式下,后端已过滤路由,meta 中不应包含 roles**
|
||||
4. 如果访问未授权的路由,会跳转到403页面
|
||||
|
||||
### 修复的关键点
|
||||
|
||||
**后端修改**(`RouteService.java`):
|
||||
```java
|
||||
// 移除 roles 字段,因为后端已经根据角色过滤了路由
|
||||
// 前端不需要再次检查 roles
|
||||
meta.remove("roles");
|
||||
```
|
||||
|
||||
这样前端路由守卫就不会检查 roles,避免403错误。
|
||||
|
||||
## 相关文件
|
||||
|
||||
- `backend/src/main/java/com/soybean/admin/service/RouteService.java` - 路由权限过滤逻辑
|
||||
- `backend/src/main/java/com/soybean/admin/entity/Role.java` - 角色实体
|
||||
- `backend/src/main/resources/sql/init.sql` - 数据库初始化脚本
|
||||
- `fix_403_complete.sql` - 权限修复脚本
|
||||
BIN
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/DotNetWSManClient.dll
Normal file
BIN
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/DotNetWSManClient.dll
Normal file
Binary file not shown.
23557
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/HLAPI.XML
Normal file
23557
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/HLAPI.XML
Normal file
File diff suppressed because it is too large
Load Diff
23
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/HLAPI.config
Normal file
23
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/HLAPI.config
Normal file
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
|
||||
<!-- There are three options for setting the location where the temp files can be created.
|
||||
|
||||
The three options are shown below with the first two commented out. Uncomment the desired option.
|
||||
The default option is ApplicationStartUpPath.
|
||||
If there is more than 1 un-commented option the HLAPI library will use the last definition-->
|
||||
|
||||
<!-- a path predefined by the user as the location where the temp files will be created
|
||||
<add key="TEMP_FILE_DIRECTORY" value="c:\myFolder"></add>-->
|
||||
|
||||
<!-- The path for the user application data.
|
||||
If a path does not exist, one is created in the following format:
|
||||
Home Directory\CompanyName\ProductName\ProductVersion
|
||||
<add key="TEMP_FILE_DIRECTORY" value="UserAppDataPath"></add>-->
|
||||
|
||||
<!--The path for the executable file that started the application-->
|
||||
<add key="TEMP_FILE_DIRECTORY" value="ApplicationStartUpPath"></add>
|
||||
|
||||
</appSettings>
|
||||
</configuration>
|
||||
BIN
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/HLAPI.dll
Normal file
BIN
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/HLAPI.dll
Normal file
Binary file not shown.
BIN
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/IWSManClient.dll
Normal file
BIN
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/IWSManClient.dll
Normal file
Binary file not shown.
Binary file not shown.
8
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/MC.ini
Normal file
8
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/MC.ini
Normal file
@ -0,0 +1,8 @@
|
||||
[COMMON]
|
||||
Storage_Enabled = 1
|
||||
Debug_Level = 0
|
||||
IP_Version_Priority = 4
|
||||
; library heartbeat interval - will be set by rx_timeout / HB_Factor . default 0 ==> 3
|
||||
HB_Factor = 0
|
||||
; library receive timeout - will be set by hb_interval X Timeout_Factor . default ==> 3
|
||||
Timeout_Factor = 0
|
||||
11
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/RegHLAPI.bat
Normal file
11
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/RegHLAPI.bat
Normal file
@ -0,0 +1,11 @@
|
||||
ECHO.
|
||||
ECHO ****************************************************
|
||||
ECHO Register IWSManClient.dll
|
||||
ECHO ****************************************************
|
||||
call "C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm" "IWSManClient.dll" /codebase /tlb
|
||||
|
||||
ECHO.
|
||||
ECHO ****************************************************
|
||||
ECHO Register HLAPI.dll
|
||||
ECHO ****************************************************
|
||||
call "C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm" "HLAPI.dll" /codebase /tlb
|
||||
435
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/Scripts/AlarmClock.js
Normal file
435
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/Scripts/AlarmClock.js
Normal file
@ -0,0 +1,435 @@
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2010 All Rights Reserved.
|
||||
//
|
||||
// Contents: Demonstrate the AlarmClock COM interface.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
var info = new ActiveXObject("Intel.Manageability.ConnectionInfo");
|
||||
if (typeof (info) != undefined)
|
||||
{
|
||||
info.Host = "10.0.0.15";
|
||||
info.UserName = "admin";
|
||||
info.Password = "Admin!98";
|
||||
|
||||
var amt = new ActiveXObject("Intel.Manageability.COM.AMTInstance");
|
||||
if (typeof (amt) != undefined)
|
||||
{
|
||||
try {
|
||||
amt.Create(info);
|
||||
|
||||
// =============================================================
|
||||
// Summary: Set single alarm.
|
||||
// As JScript dateTime (Date()) does not match .Net DateTime
|
||||
// object, the SetSingleAlarm gets the next time as a string.
|
||||
// JavaScript Date object supports 3 string formats, but the only
|
||||
// format that .Net also supports is: Date.toLocaleString()
|
||||
// e.g: Sunday, October 10, 2010 12:00:00 AM
|
||||
// note: check that the validation of time has to be on the script side
|
||||
// ==============================================================
|
||||
var nextTime = new Date("10/10/2010");
|
||||
amt.AlarmClock.SetSingleAlarm(nextTime.toLocaleString());
|
||||
|
||||
// =============================================================
|
||||
// Summary: Set recurring alarm.
|
||||
// About nextTime object - see the comment of SetSingleAlarm call
|
||||
// interval - should provide the interval as string.
|
||||
// It is in the format: PnYnMnDTnHnMnS
|
||||
// where:
|
||||
// 'P' - desgnates the start of a date string
|
||||
// nY - represents the number of years
|
||||
// nM - the number of months
|
||||
// nD - the number of days
|
||||
// 'T' - is the date/time separator (start of a time string)
|
||||
// nH - the number of hours
|
||||
// nM - the number of minutes
|
||||
// nS - the number of seconds. The number of seconds can include decimal digits to an arbitrary precision.
|
||||
// Example:
|
||||
// P1Y2M3DT10H30M - defines a duration of 1 year, 2 months, 3 days, 10 hours, and 30 minutes
|
||||
// Note: That the ONLY parameters that can be set in the interval are: Days, Hours, Minutes
|
||||
// - Other parameters MUST be 0.
|
||||
// ==============================================================
|
||||
nextTime.setFullYear(2012);
|
||||
var interval = "P0Y0M1DT5H8M0S";
|
||||
amt.AlarmClock.SetRecurringAlarm(nextTime.toLocaleString(), interval);
|
||||
|
||||
// Get alarm clock settings
|
||||
var settings = amt.AlarmClock.GetAlarmClockSettings();
|
||||
var nextAlarmTime = settings.NextAlarmTime;
|
||||
var intervalTime = settings.AlarmInterval.toString();
|
||||
|
||||
// Disable the alarm clock settings
|
||||
amt.AlarmClock.DisableAll();
|
||||
}
|
||||
catch (Error)
|
||||
{
|
||||
alert(Error.Message);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("Failed to perform AlarmClock call");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("Failed to initialize ConnectionInfo object");
|
||||
}
|
||||
// SIG // Begin signature block
|
||||
// SIG // MIItiQYJKoZIhvcNAQcCoIItejCCLXYCAQExDzANBglg
|
||||
// SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
|
||||
// SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC
|
||||
// SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
|
||||
// SIG // vRQ/gVqbLeXuvjJ0BNeL7YsLnaheMrRnDtHS6xjPcpCg
|
||||
// SIG // ghF+MIIFbzCCBFegAwIBAgIQSPyTtGBVlI02p8mKidaU
|
||||
// SIG // FjANBgkqhkiG9w0BAQwFADB7MQswCQYDVQQGEwJHQjEb
|
||||
// SIG // MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
|
||||
// SIG // VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
||||
// SIG // TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRl
|
||||
// SIG // IFNlcnZpY2VzMB4XDTIxMDUyNTAwMDAwMFoXDTI4MTIz
|
||||
// SIG // MTIzNTk1OVowVjELMAkGA1UEBhMCR0IxGDAWBgNVBAoT
|
||||
// SIG // D1NlY3RpZ28gTGltaXRlZDEtMCsGA1UEAxMkU2VjdGln
|
||||
// SIG // byBQdWJsaWMgQ29kZSBTaWduaW5nIFJvb3QgUjQ2MIIC
|
||||
// SIG // IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjeeU
|
||||
// SIG // EiIEJHQu/xYjApKKtq42haxH1CORKz7cfeIxoFFvrISR
|
||||
// SIG // 41KKteKW3tCHYySJiv/vEpM7fbu2ir29BX8nm2tl06UM
|
||||
// SIG // abG8STma8W1uquSggyfamg0rUOlLW7O4ZDakfko9qXGr
|
||||
// SIG // YbNzszwLDO/bM1flvjQ345cbXf0fEj2CA3bm+z9m0pQx
|
||||
// SIG // afptszSswXp43JJQ8mTHqi0Eq8Nq6uAvp6fcbtfo/9oh
|
||||
// SIG // q0C/ue4NnsbZnpnvxt4fqQx2sycgoda6/YDnAdLv64Ip
|
||||
// SIG // lXCN/7sVz/7RDzaiLk8ykHRGa0c1E3cFM09jLrgt4b9l
|
||||
// SIG // pwRrGNhx+swI8m2JmRCxrds+LOSqGLDGBwF1Z95t6WNj
|
||||
// SIG // HjZ/aYm+qkU+blpfj6Fby50whjDoA7NAxg0POM1nqFOI
|
||||
// SIG // +rgwZfpvx+cdsYN0aT6sxGg7seZnM5q2COCABUhA7vaC
|
||||
// SIG // ZEao9XOwBpXybGWfv1VbHJxXGsd4RnxwqpQbghesh+m2
|
||||
// SIG // yQ6BHEDWFhcp/FycGCvqRfXvvdVnTyheBe6QTHrnxvTQ
|
||||
// SIG // /PrNPjJGEyA2igTqt6oHRpwNkzoJZplYXCmjuQymMDg8
|
||||
// SIG // 0EY2NXycuu7D1fkKdvp+BRtAypI16dV60bV/AK6pkKrF
|
||||
// SIG // fwGcELEW/MxuGNxvYv6mUKe4e7idFT/+IAx1yCJaE5UZ
|
||||
// SIG // kADpGtXChvHjjuxf9OUCAwEAAaOCARIwggEOMB8GA1Ud
|
||||
// SIG // IwQYMBaAFKARCiM+lvEH7OKvKe+CpX/QMKS0MB0GA1Ud
|
||||
// SIG // DgQWBBQy65Ka/zWWSC8oQEJwIDaRXBeF5jAOBgNVHQ8B
|
||||
// SIG // Af8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zATBgNVHSUE
|
||||
// SIG // DDAKBggrBgEFBQcDAzAbBgNVHSAEFDASMAYGBFUdIAAw
|
||||
// SIG // CAYGZ4EMAQQBMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6
|
||||
// SIG // Ly9jcmwuY29tb2RvY2EuY29tL0FBQUNlcnRpZmljYXRl
|
||||
// SIG // U2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr
|
||||
// SIG // BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29t
|
||||
// SIG // MA0GCSqGSIb3DQEBDAUAA4IBAQASv6Hvi3SamES4aUa1
|
||||
// SIG // qyQKDKSKZ7g6gb9Fin1SB6iNH04hhTmja14tIIa/ELiu
|
||||
// SIG // eTtTzbT72ES+BtlcY2fUQBaHRIZyKtYyFfUSg8L54V0R
|
||||
// SIG // QGf2QidyxSPiAjgaTCDi2wH3zUZPJqJ8ZsBRNraJAlTH
|
||||
// SIG // /Fj7bADu/pimLpWhDFMpH2/YGaZPnvesCepdgsaLr4Cn
|
||||
// SIG // vYFIUoQx2jLsFeSmTD1sOXPUC4U5IOCFGmjhp0g4qdE2
|
||||
// SIG // JXfBjRkWxYhMZn0vY86Y6GnfrDyoXZ3JHFuu2PMvdM+4
|
||||
// SIG // fvbXg50RlmKarkUT2n/cR/vfw1Kf5gZV6Z2M8jpiUbzs
|
||||
// SIG // JA8p1FiAhORFe1rYMIIF6TCCBFGgAwIBAgIRAP5c1JUB
|
||||
// SIG // imUXpNBO+HtrkzowDQYJKoZIhvcNAQEMBQAwVDELMAkG
|
||||
// SIG // A1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRl
|
||||
// SIG // ZDErMCkGA1UEAxMiU2VjdGlnbyBQdWJsaWMgQ29kZSBT
|
||||
// SIG // aWduaW5nIENBIFIzNjAeFw0yNDAzMTMwMDAwMDBaFw0y
|
||||
// SIG // NTAzMTMyMzU5NTlaMFoxCzAJBgNVBAYTAlVTMRMwEQYD
|
||||
// SIG // VQQIDApDYWxpZm9ybmlhMRowGAYDVQQKDBFJbnRlbCBD
|
||||
// SIG // b3Jwb3JhdGlvbjEaMBgGA1UEAwwRSW50ZWwgQ29ycG9y
|
||||
// SIG // YXRpb24wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK
|
||||
// SIG // AoIBgQCOvQs9ebKrmAXTOWV54xQTZ76syOFlIGkPz4wS
|
||||
// SIG // qINrfyJEgclyvtytZuAsELU4KqTAg9fdxNwP8Qx5llRL
|
||||
// SIG // 6QilAfsXPHP/BROk8pqyCgP9FB+41XrC4AqNAMXzNHZH
|
||||
// SIG // Kq7yyr53IbHnpHWjNm/hONTUowIYVoBqdS6E2cqwDiTa
|
||||
// SIG // RrDyH4AP9PiekQhAofQQEW1wkVwJ807j7Vg13ypTsEmu
|
||||
// SIG // PqNrSTO0zzQC0yUix6GW731DqYDoftJVsePYYpqFupXw
|
||||
// SIG // 7eXGQzzk/MDcKXeQ1sAfDIcy3zRKW70f/ObPEj/3Vkaw
|
||||
// SIG // FZEkcUtcKiGWvTrMQ/q4wQSHvCQ0dWPYYxgVCsmzAGN9
|
||||
// SIG // D6fKw6RXh9WGtQPIDXmnvCkUpWnK6MqMYUb4i/Z/JwmS
|
||||
// SIG // IYqi+kNELvXCRsJWIi/ZgDEclTyNwR39LOq+gUarfMgW
|
||||
// SIG // D/9nbIHOM/WFfQxiVGis9pI8LndTiWbqRQ2YqPrIc2zv
|
||||
// SIG // 4e/IiUkIjFR4DFRRFTmRRERN3VUhBbFnTwMCAwEAAaOC
|
||||
// SIG // Aa4wggGqMB8GA1UdIwQYMBaAFA8qyyCHKLjsb0iuK1Sm
|
||||
// SIG // KaoXpM0MMB0GA1UdDgQWBBQo7T1qfzp1FOdWlwIgcHEP
|
||||
// SIG // 4L2HxjAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIw
|
||||
// SIG // ADATBgNVHSUEDDAKBggrBgEFBQcDAzBKBgNVHSAEQzBB
|
||||
// SIG // MDUGDCsGAQQBsjEBAgEDAjAlMCMGCCsGAQUFBwIBFhdo
|
||||
// SIG // dHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBBAEw
|
||||
// SIG // SQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybC5zZWN0
|
||||
// SIG // aWdvLmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdD
|
||||
// SIG // QVIzNi5jcmwweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUF
|
||||
// SIG // BzAChjhodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3Rp
|
||||
// SIG // Z29QdWJsaWNDb2RlU2lnbmluZ0NBUjM2LmNydDAjBggr
|
||||
// SIG // BgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20w
|
||||
// SIG // IwYDVR0RBBwwGoEYcGtpZW5naW5lZXJpbmdAaW50ZWwu
|
||||
// SIG // Y29tMA0GCSqGSIb3DQEBDAUAA4IBgQAdNVhldXFo7Uwk
|
||||
// SIG // BpDbQ0aZktPDblIrNRdvtHMCK5NnWPLVyomeUbLqZASl
|
||||
// SIG // n6YzUh3Vu/Q71QqLQW8kWFHQ0nhZEPI0T5vr5c8hYUVr
|
||||
// SIG // luKkmHCJceqomqRmRBbL5hBFzJ8BvcxBHirGJZzP2UiN
|
||||
// SIG // t7i2Ql8oScd+Rtj6Qa97TMpuoCL7WuQ5peEv1xCSSP2b
|
||||
// SIG // yCoTzuUFHpgktO0vUDe0jinhJJNS3VdXHAgTbUaQM5hl
|
||||
// SIG // a+ImEuKW1a/MorIWHtuU0gD3lhMvT2BDJ42W0EEvJQ/F
|
||||
// SIG // xQeoH4kySxQgsyCrB8zCJPhbiZcFZauHnP1q8dPn6VXq
|
||||
// SIG // NkjyWSP4hPNoLQ+aMsKLaawuOzHb1ZXL23j2Jx6Caqkb
|
||||
// SIG // Z4V/hOo5RkbZ4VAj1fgbEUnKeL/AyFCRnVeQM0ua2Lt2
|
||||
// SIG // ISRgyYE4DxrwbZr2j3ibcXCs11JzKT7Wp7iYFt6NbnEq
|
||||
// SIG // PUim/XTahXC3DlFQ9pQ44fOWdGpyaJvduMYVZuHBjVkh
|
||||
// SIG // e2s/HFQOsx/0XOgwggYaMIIEAqADAgECAhBiHW0MUgGe
|
||||
// SIG // O5B5FSCJIRwKMA0GCSqGSIb3DQEBDAUAMFYxCzAJBgNV
|
||||
// SIG // BAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQx
|
||||
// SIG // LTArBgNVBAMTJFNlY3RpZ28gUHVibGljIENvZGUgU2ln
|
||||
// SIG // bmluZyBSb290IFI0NjAeFw0yMTAzMjIwMDAwMDBaFw0z
|
||||
// SIG // NjAzMjEyMzU5NTlaMFQxCzAJBgNVBAYTAkdCMRgwFgYD
|
||||
// SIG // VQQKEw9TZWN0aWdvIExpbWl0ZWQxKzApBgNVBAMTIlNl
|
||||
// SIG // Y3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYw
|
||||
// SIG // ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCb
|
||||
// SIG // K51T+jU/jmAGQ2rAz/V/9shTUxjIztNsfvxYB5UXeWUz
|
||||
// SIG // CxEeAEZGbEN4QMgCsJLZUKhWThj/yPqy0iSZhXkZ6Pg2
|
||||
// SIG // A2NVDgFigOMYzB2OKhdqfWGVoYW3haT29PSTahYkwmMv
|
||||
// SIG // 0b/83nbeECbiMXhSOtbam+/36F09fy1tsB8je/RV0mIk
|
||||
// SIG // 8XL/tfCK6cPuYHE215wzrK0h1SWHTxPbPuYkRdkP05Zw
|
||||
// SIG // mRmTnAO5/arnY83jeNzhP06ShdnRqtZlV59+8yv+KIhE
|
||||
// SIG // 5ILMqgOZYAENHNX9SJDm+qxp4VqpB3MV/h53yl41aHU5
|
||||
// SIG // pledi9lCBbH9JeIkNFICiVHNkRmq4TpxtwfvjsUedyz8
|
||||
// SIG // rNyfQJy/aOs5b4s+ac7IH60B+Ja7TVM+EKv1WuTGwcLm
|
||||
// SIG // oU3FpOFMbmPj8pz44MPZ1f9+YEQIQty/NQd/2yGgW+uf
|
||||
// SIG // flcZ/ZE9o1M7a5Jnqf2i2/uMSWymR8r2oQBMdlyh2n5H
|
||||
// SIG // irY4jKnFH/9gRvd+QOfdRrJZb1sCAwEAAaOCAWQwggFg
|
||||
// SIG // MB8GA1UdIwQYMBaAFDLrkpr/NZZILyhAQnAgNpFcF4Xm
|
||||
// SIG // MB0GA1UdDgQWBBQPKssghyi47G9IritUpimqF6TNDDAO
|
||||
// SIG // BgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIB
|
||||
// SIG // ADATBgNVHSUEDDAKBggrBgEFBQcDAzAbBgNVHSAEFDAS
|
||||
// SIG // MAYGBFUdIAAwCAYGZ4EMAQQBMEsGA1UdHwREMEIwQKA+
|
||||
// SIG // oDyGOmh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
|
||||
// SIG // b1B1YmxpY0NvZGVTaWduaW5nUm9vdFI0Ni5jcmwwewYI
|
||||
// SIG // KwYBBQUHAQEEbzBtMEYGCCsGAQUFBzAChjpodHRwOi8v
|
||||
// SIG // Y3J0LnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNDb2Rl
|
||||
// SIG // U2lnbmluZ1Jvb3RSNDYucDdjMCMGCCsGAQUFBzABhhdo
|
||||
// SIG // dHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0B
|
||||
// SIG // AQwFAAOCAgEABv+C4XdjNm57oRUgmxP/BP6YdURhw1aV
|
||||
// SIG // cdGRP4Wh60BAscjW4HL9hcpkOTz5jUug2oeunbYAowbF
|
||||
// SIG // C2AKK+cMcXIBD0ZdOaWTsyNyBBsMLHqafvIhrCymlaS9
|
||||
// SIG // 8+QpoBCyKppP0OcxYEdU0hpsaqBBIZOtBajjcw5+w/Ke
|
||||
// SIG // FvPYfLF/ldYpmlG+vd0xqlqd099iChnyIMvY5HexjO2A
|
||||
// SIG // mtsbpVn0OhNcWbWDRF/3sBp6fWXhz7DcML4iTAWS+MVX
|
||||
// SIG // eNLj1lJziVKEoroGs9Mlizg0bUMbOalOhOfCipnx8CaL
|
||||
// SIG // ZeVme5yELg09Jlo8BMe80jO37PU8ejfkP9/uPak7VLwE
|
||||
// SIG // LKxAMcJszkyeiaerlphwoKx1uHRzNyE6bxuSKcutisqm
|
||||
// SIG // KL5OTunAvtONEoteSiabkPVSZ2z76mKnzAfZxCl/3dq3
|
||||
// SIG // dUNw4rg3sTCggkHSRqTqlLMS7gjrhTqBmzu1L90Y1KWN
|
||||
// SIG // /Y5JKdGvspbOrTfOXyXvmPL6E52z1NZJ6ctuMFBQZH3p
|
||||
// SIG // wWvqURR8AgQdULUvrxjUYbHHj95Ejza63zdrEcxWLDX6
|
||||
// SIG // xWls/GDnVNueKjWUH3fTv1Y8Wdho698YADR7TNx8X8z2
|
||||
// SIG // Bev6SivBBOHY+uqiirZtg0y9ShQoPzmCcn63Syatatvx
|
||||
// SIG // 157YK9hlcPmVoa1oDE5/L9Uo2bC5a4CH2RwxghtjMIIb
|
||||
// SIG // XwIBATBpMFQxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9T
|
||||
// SIG // ZWN0aWdvIExpbWl0ZWQxKzApBgNVBAMTIlNlY3RpZ28g
|
||||
// SIG // UHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYCEQD+XNSV
|
||||
// SIG // AYplF6TQTvh7a5M6MA0GCWCGSAFlAwQCAQUAoHwwEAYK
|
||||
// SIG // KwYBBAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisG
|
||||
// SIG // AQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQB
|
||||
// SIG // gjcCARUwLwYJKoZIhvcNAQkEMSIEIEwmH4pxFoVDcm+d
|
||||
// SIG // /tskz8IZwXlWCUVQy62gq4Oecz2pMA0GCSqGSIb3DQEB
|
||||
// SIG // AQUABIIBgFEF8J27+diyj56b2Csaterx2GB/d9dTDZ1j
|
||||
// SIG // ES+lwzX+xFlaH/c2cg/dzxDq/XjZLSjCeIFh4ergkxjj
|
||||
// SIG // xiWXnfkSPy+hyIipLp72T8yC0kHvcsMveJjvPk3C4EH4
|
||||
// SIG // fni6lr+qHydl+Y72aUEfkwIveuj4B4HXNZ291jzIv7Em
|
||||
// SIG // fsn9Raby7uVyjQcRsL9nOb0ttEfPp6Qzk89tW7vZ1sGX
|
||||
// SIG // MS4fimqy5MX8saG5gHz83SugR3ol6cE0fe1eAoTPTY82
|
||||
// SIG // QBj1g0ID7By2WuO86j2X78WHtSe/opfKqDCLLEW1lQ0U
|
||||
// SIG // DrvdJAIRQu7zcokfxxqKH1MgAZsyI5ZkvXcO3sbmIRls
|
||||
// SIG // GL6ObLnhzLY+2Atex4gpIlhvMSM8+8ExGOh/dB5qRKD5
|
||||
// SIG // ktNHf9FmjOfzCVADOu6bVvqrlz7291qs/EOrXRnx/7+N
|
||||
// SIG // hC6Tq1FbT3AW/W2u+fdX7a1F8Ild8zS+4PgpqTDupFli
|
||||
// SIG // M5RPbUX4SDqvjUY11nZB/04tU4g78ybRBnX4EaGCGM0w
|
||||
// SIG // ghjJBgorBgEEAYI3AwMBMYIYuTCCGLUGCSqGSIb3DQEH
|
||||
// SIG // AqCCGKYwghiiAgEDMQ8wDQYJYIZIAWUDBAICBQAwgfMG
|
||||
// SIG // CyqGSIb3DQEJEAEEoIHjBIHgMIHdAgEBBgorBgEEAbIx
|
||||
// SIG // AgEBMDEwDQYJYIZIAWUDBAIBBQAEIO5jxp4mJmcyBA8f
|
||||
// SIG // 7Y3oz9cc1j87O36s1vKV75S/F8vfAhRGLKcXGcDJxj3h
|
||||
// SIG // NlV+62xnRew89xgPMjAyNTAxMjcxOTAxNTBaoHKkcDBu
|
||||
// SIG // MQswCQYDVQQGEwJHQjETMBEGA1UECBMKTWFuY2hlc3Rl
|
||||
// SIG // cjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTAwLgYD
|
||||
// SIG // VQQDEydTZWN0aWdvIFB1YmxpYyBUaW1lIFN0YW1waW5n
|
||||
// SIG // IFNpZ25lciBSMzWgghL/MIIGXTCCBMWgAwIBAgIQOlJq
|
||||
// SIG // LITOVeYdZfzMEtjpiTANBgkqhkiG9w0BAQwFADBVMQsw
|
||||
// SIG // CQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1p
|
||||
// SIG // dGVkMSwwKgYDVQQDEyNTZWN0aWdvIFB1YmxpYyBUaW1l
|
||||
// SIG // IFN0YW1waW5nIENBIFIzNjAeFw0yNDAxMTUwMDAwMDBa
|
||||
// SIG // Fw0zNTA0MTQyMzU5NTlaMG4xCzAJBgNVBAYTAkdCMRMw
|
||||
// SIG // EQYDVQQIEwpNYW5jaGVzdGVyMRgwFgYDVQQKEw9TZWN0
|
||||
// SIG // aWdvIExpbWl0ZWQxMDAuBgNVBAMTJ1NlY3RpZ28gUHVi
|
||||
// SIG // bGljIFRpbWUgU3RhbXBpbmcgU2lnbmVyIFIzNTCCAiIw
|
||||
// SIG // DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAI3RZ/TB
|
||||
// SIG // SJu9/ThJOk1hgZvD2NxFpWEENo0GnuOYloD11BlbmKCG
|
||||
// SIG // tcY0xiMrsN7LlEgcyoshtP3P2J/vneZhuiMmspY7hk/Q
|
||||
// SIG // 3l0FPZPBllo9vwT6GpoNnxXLZz7HU2ITBsTNOs9fhbdA
|
||||
// SIG // Wr/Mm8MNtYov32osvjYYlDNfefnBajrQqSV8Wf5ZvbaY
|
||||
// SIG // 5lZhKqQJUaXxpi4TXZKohLgxU7g9RrFd477j7jxilCU2
|
||||
// SIG // ptz+d1OCzNFAsXgyPEM+NEMPUz2q+ktNlxMZXPF9WLIh
|
||||
// SIG // OhE3E8/oNSJkNTqhcBGsbDI/1qCU9fBhuSojZ0u5/1+I
|
||||
// SIG // jMG6AINyI6XLxM8OAGQmaMB8gs2IZxUTOD7jTFR2HE1x
|
||||
// SIG // oL7qvSO4+JHtvNceHu//dGeVm5Pdkay3Et+YTt9EwAXB
|
||||
// SIG // sd0PPmC0cuqNJNcOI0XnwjE+2+Zk8bauVz5ir7YHz7ml
|
||||
// SIG // j5Bmf7W8SJ8jQwO2IDoHHFC46ePg+eoNors0QrC0PWnO
|
||||
// SIG // gDeMkW6gmLBtq3CEOSDU8iNicwNsNb7ABz0W1E3qlSw7
|
||||
// SIG // jTmNoGCKCgVkLD2FaMs2qAVVOjuUxvmtWMn1pIFVUvZ1
|
||||
// SIG // yrPIVbYt1aTld2nrmh544Auh3tgggy/WluoLXlHtAJgv
|
||||
// SIG // FwrVsKXj8ekFt0TmaPL0lHvQEe5jHbufhc05lvCtdwbf
|
||||
// SIG // Bl/2ARSTuy1s8CgFAgMBAAGjggGOMIIBijAfBgNVHSME
|
||||
// SIG // GDAWgBRfWO1MMXqiYUKNUoC6s2GXGaIymzAdBgNVHQ4E
|
||||
// SIG // FgQUaO+kMklptlI4HepDOSz0FGqeDIUwDgYDVR0PAQH/
|
||||
// SIG // BAQDAgbAMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAww
|
||||
// SIG // CgYIKwYBBQUHAwgwSgYDVR0gBEMwQTA1BgwrBgEEAbIx
|
||||
// SIG // AQIBAwgwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0
|
||||
// SIG // aWdvLmNvbS9DUFMwCAYGZ4EMAQQCMEoGA1UdHwRDMEEw
|
||||
// SIG // P6A9oDuGOWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2Vj
|
||||
// SIG // dGlnb1B1YmxpY1RpbWVTdGFtcGluZ0NBUjM2LmNybDB6
|
||||
// SIG // BggrBgEFBQcBAQRuMGwwRQYIKwYBBQUHMAKGOWh0dHA6
|
||||
// SIG // Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1B1YmxpY1Rp
|
||||
// SIG // bWVTdGFtcGluZ0NBUjM2LmNydDAjBggrBgEFBQcwAYYX
|
||||
// SIG // aHR0cDovL29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcN
|
||||
// SIG // AQEMBQADggGBALDcLsn6TzZMii/2yU/V7xhPH58Oxr/+
|
||||
// SIG // EnrZjpIyvYTz2u/zbL+fzB7lbrPml8ERajOVbudan6x0
|
||||
// SIG // 8J1RMXD9hByq+yEfpv1G+z2pmnln5XucfA9MfzLMrCAr
|
||||
// SIG // NNMbUjVcRcsAr18eeZeloN5V4jwrovDeLOdZl0tB7fOX
|
||||
// SIG // 5F6N2rmXaNTuJR8yS2F+EWaL5VVg+RH8FelXtRvVDLJZ
|
||||
// SIG // 5uqSNIckdGa/eUFhtDKTTz9LtOUh46v2JD5Q3nt8mDhA
|
||||
// SIG // jTKp2fo/KJ6FLWdKAvApGzjpPwDqFeJKf+kJdoBKd2zQ
|
||||
// SIG // uwzk5Wgph9uA46VYK8p/BTJJahKCuGdyKFIFfEfakC4N
|
||||
// SIG // Xa+vwY4IRp49lzQPLo7WticqMaaqb8hE2QmCFIyLOvWI
|
||||
// SIG // g4837bd+60FcCGbHwmL/g1ObIf0rRS9ceK4DY9rfBnHF
|
||||
// SIG // H2v1d4hRVvZXyCVlrL7ZQuVzjjkLMK9VJlXTVkHpuC8K
|
||||
// SIG // 5S4HHTv2AJx6mOdkMJwS4gLlJ7gXrIVpnxG+aIniGDCC
|
||||
// SIG // BhQwggP8oAMCAQICEHojrtpTaZYPkcg+XPTH4z8wDQYJ
|
||||
// SIG // KoZIhvcNAQEMBQAwVzELMAkGA1UEBhMCR0IxGDAWBgNV
|
||||
// SIG // BAoTD1NlY3RpZ28gTGltaXRlZDEuMCwGA1UEAxMlU2Vj
|
||||
// SIG // dGlnbyBQdWJsaWMgVGltZSBTdGFtcGluZyBSb290IFI0
|
||||
// SIG // NjAeFw0yMTAzMjIwMDAwMDBaFw0zNjAzMjEyMzU5NTla
|
||||
// SIG // MFUxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdv
|
||||
// SIG // IExpbWl0ZWQxLDAqBgNVBAMTI1NlY3RpZ28gUHVibGlj
|
||||
// SIG // IFRpbWUgU3RhbXBpbmcgQ0EgUjM2MIIBojANBgkqhkiG
|
||||
// SIG // 9w0BAQEFAAOCAY8AMIIBigKCAYEAzZjYQ0GrboIr7PYz
|
||||
// SIG // fiY05ImM0+8iEoBUPu8mr4wOgYPjoiIz5vzf7d5wu8GF
|
||||
// SIG // K1JWN5hciN9rdqOhbdxLcSVwnOTJmUGfAMQm4eXOls3i
|
||||
// SIG // QwfapEFWuOsYmBKXPNSpwZAFoLGl5y1EaGGc5LByM8wj
|
||||
// SIG // cbSF52/Z42YaJRsPXY545E3QAPN2mxDh0OLozhiGgYT1
|
||||
// SIG // xtjXVfEzYBVmfQaI5QL35cTTAjsJAp85R+KAsOfuL9Z7
|
||||
// SIG // LFnjdcuPkZWjssMETFIueH69rxbFOUD64G+rUo7xFIdR
|
||||
// SIG // AuDNvWBsv0iGDPGaR2nZlY24tz5fISYk1sPY4gir99aX
|
||||
// SIG // AGnoo0vX3Okew4MsiyBn5ZnUDMKzUcQrpVavGacrIkmD
|
||||
// SIG // Yu/bcOUR1mVBIZ0X7P4bKf38JF7Mp7tY3LFF/h7hvBS2
|
||||
// SIG // tgTYXlD7TnIMPrxyXCfB5yQq3FFoXRXM3/DvqQ4shoVW
|
||||
// SIG // F/mwwz9xoRku05iphp22fTfjKRIVpm4gFT24JKspEpM8
|
||||
// SIG // mFa9eTgKWWCvAgMBAAGjggFcMIIBWDAfBgNVHSMEGDAW
|
||||
// SIG // gBT2d2rdP/0BE/8WoWyCAi/QCj0UJTAdBgNVHQ4EFgQU
|
||||
// SIG // X1jtTDF6omFCjVKAurNhlxmiMpswDgYDVR0PAQH/BAQD
|
||||
// SIG // AgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwEwYDVR0lBAww
|
||||
// SIG // CgYIKwYBBQUHAwgwEQYDVR0gBAowCDAGBgRVHSAAMEwG
|
||||
// SIG // A1UdHwRFMEMwQaA/oD2GO2h0dHA6Ly9jcmwuc2VjdGln
|
||||
// SIG // by5jb20vU2VjdGlnb1B1YmxpY1RpbWVTdGFtcGluZ1Jv
|
||||
// SIG // b3RSNDYuY3JsMHwGCCsGAQUFBwEBBHAwbjBHBggrBgEF
|
||||
// SIG // BQcwAoY7aHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0
|
||||
// SIG // aWdvUHVibGljVGltZVN0YW1waW5nUm9vdFI0Ni5wN2Mw
|
||||
// SIG // IwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28u
|
||||
// SIG // Y29tMA0GCSqGSIb3DQEBDAUAA4ICAQAS13sgrQ41WAye
|
||||
// SIG // gR0lWP1MLWd0r8diJiH2VVRpxqFGhnZbaF+IQ7JATGce
|
||||
// SIG // TWOS+kgnMAzGYRzpm8jIcjlSQ8JtcqymKhgx1s6cFZBS
|
||||
// SIG // fvfeoyigF8iCGlH+SVSo3HHr98NepjSFJTU5KSRKK+3n
|
||||
// SIG // VSWYkSVQgJlgGh3MPcz9IWN4I/n1qfDGzqHCPWZ+/Mb5
|
||||
// SIG // vVyhgaeqxLPbBIqv6cM74Nvyo1xNsllECJJrOvsrJQka
|
||||
// SIG // jVz4xJwZ8blAdX5umzwFfk7K/0K3fpjgiXpqNOpXaJ+K
|
||||
// SIG // SRW0HdE0FSDC7+ZKJJSJx78mn+rwEyT+A3z7Ss0gT5Cp
|
||||
// SIG // TrcmhUwIw9jbvnYuYRKxFVWjKklW3z83epDVzoWJttxF
|
||||
// SIG // pujdrNmRwh1YZVIB2guAAjEQoF42H0BA7WBCueHVMDyV
|
||||
// SIG // 1e4nM9K4As7PVSNvQ8LI1WRaTuGSFUd9y8F8jw22BZC6
|
||||
// SIG // mJoB40d7SlZIYfaildlgpgbgtu6SDsek2L8qomG57Yp5
|
||||
// SIG // qTqof0DwJ4Q4HsShvRl/59T4IJBovRwmqWafH0cIPEX7
|
||||
// SIG // cEttS5+tXrgRtMjjTOp6A9l0D6xcKZtxnLqiTH9KPCy6
|
||||
// SIG // xZEi0UDcMTww5Fl4VvoGbMG2oonuX3f1tsoHLaO/Fwkj
|
||||
// SIG // 3xVr3lDkmeUqivebQTvGkx5hGuJaSVQ+x60xJ/Y29RBr
|
||||
// SIG // 8Tm9XJ59AjCCBoIwggRqoAMCAQICEDbCsL18Gzrno7Pd
|
||||
// SIG // NsvJdWgwDQYJKoZIhvcNAQEMBQAwgYgxCzAJBgNVBAYT
|
||||
// SIG // AlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQH
|
||||
// SIG // EwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJU
|
||||
// SIG // UlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3Qg
|
||||
// SIG // UlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTIx
|
||||
// SIG // MDMyMjAwMDAwMFoXDTM4MDExODIzNTk1OVowVzELMAkG
|
||||
// SIG // A1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRl
|
||||
// SIG // ZDEuMCwGA1UEAxMlU2VjdGlnbyBQdWJsaWMgVGltZSBT
|
||||
// SIG // dGFtcGluZyBSb290IFI0NjCCAiIwDQYJKoZIhvcNAQEB
|
||||
// SIG // BQADggIPADCCAgoCggIBAIid2LlFZ50d3ei5JoGaVFTA
|
||||
// SIG // fEkFm8xaFQ/ZlBBEtEFAgXcUmanU5HYsyAhTXiDQkiUv
|
||||
// SIG // pVdYqZ1uYoZEMgtHES1l1Cc6HaqZzEbOOp6YiTx63ywT
|
||||
// SIG // on434aXVydmhx7Dx4IBrAou7hNGsKioIBPy5GMN7KmgY
|
||||
// SIG // muu4f92sKKjbxqohUSfjk1mJlAjthgF7Hjx4vvyVDQGs
|
||||
// SIG // d5KarLW5d73E3ThobSkob2SL48LpUR/O627pDchxll+b
|
||||
// SIG // TSv1gASn/hp6IuHJorEu6EopoB1CNFp/+HpTXeNARXUm
|
||||
// SIG // dRMKbnXWflq+/g36NJXB35ZvxQw6zid61qmrlD/IbKJA
|
||||
// SIG // 6COw/8lFSPQwBP1ityZdwuCysCKZ9ZjczMqbUcLFyq6K
|
||||
// SIG // dOpuzVDR3ZUwxDKL1wCAxgL2Mpz7eZbrb/JWXiOcNzDp
|
||||
// SIG // QsmwGQ6Stw8tTCqPumhLRPb7YkzM8/6NnWH3T9ClmcGS
|
||||
// SIG // F22LEyJYNWCHrQqYubNeKolzqUbCqhSqmr/UdUeb49zY
|
||||
// SIG // Hr7ALL8bAJyPDmubNqMtuaobKASBqP84uhqcRY/pjnYd
|
||||
// SIG // +V5/dcu9ieERjiRKKsxCG1t6tG9oj7liwPddXEcYGOUi
|
||||
// SIG // WLm742st50jGwTzxbMpepmOP1mLnJskvZaN5e45NuzAH
|
||||
// SIG // teORlsSuDt5t4BBRCJL+5EZnnw0ezntk9R8QJyAkL6/b
|
||||
// SIG // AgMBAAGjggEWMIIBEjAfBgNVHSMEGDAWgBRTeb9aqitK
|
||||
// SIG // z1SA4dibwJ3ysgNmyzAdBgNVHQ4EFgQU9ndq3T/9ARP/
|
||||
// SIG // FqFsggIv0Ao9FCUwDgYDVR0PAQH/BAQDAgGGMA8GA1Ud
|
||||
// SIG // EwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwgw
|
||||
// SIG // EQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBD
|
||||
// SIG // oEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VU0VS
|
||||
// SIG // VHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNy
|
||||
// SIG // bDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0
|
||||
// SIG // dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcN
|
||||
// SIG // AQEMBQADggIBAA6+ZUHtaES45aHF1BGH5Lc7JYzrftrI
|
||||
// SIG // F5Ht2PFDxKKFOct/awAEWgHQMVHol9ZLSyd/pYMbaC0I
|
||||
// SIG // Z+XBW9xhdkkmUV/KbUOiL7g98M/yzRyqUOZ1/IY7Ay0Y
|
||||
// SIG // bMniIibJrPcgFp73WDnRDKtVutShPSZQZAdtFwXnuiWl
|
||||
// SIG // 8eFARK3PmLqEm9UsVX+55DbVIz33Mbhba0HUTEYv3yJ1
|
||||
// SIG // fwKGxPBsP/MgTECimh7eXomvMm0/GPxX2uhwCcs/YLxD
|
||||
// SIG // nBdVVlxvDjHjO1cuwbOpkiJGHmLXXVNbsdXUC2xBrq9f
|
||||
// SIG // Lrfe8IBsA4hopwsCj8hTuwKXJlSTrZcPRVSccP5i9U28
|
||||
// SIG // gZ7OMzoJGlxZ5384OKm0r568Mo9TYrqzKeKZgFo0fj2/
|
||||
// SIG // 0iHbj55hc20jfxvK3mQi+H7xpbzxZOFGm/yVQkpo+ffv
|
||||
// SIG // 5gdhp+hv1GDsvJOtJinJmgGbBFZIThbqI+MHvAmMmkfb
|
||||
// SIG // 3fTxmSkop2mSJL1Y2x/955S29Gu0gSJIkc3z30vU/iXr
|
||||
// SIG // MpWx2tS7UVfVP+5tKuzGtgkP7d/doqDrLF1u6Ci3TpjA
|
||||
// SIG // ZdeLLlRQZm867eVeXED58LXd1Dk6UvaAhvmWYXoiLz4J
|
||||
// SIG // A5gPBcz7J311uahxCweNxE+xxxR3kT0WKzASo5G/PyDe
|
||||
// SIG // z6NHdIUKBeE3jDPs2ACc6CkJ1Sji4PKWVT0/MYIEkTCC
|
||||
// SIG // BI0CAQEwaTBVMQswCQYDVQQGEwJHQjEYMBYGA1UEChMP
|
||||
// SIG // U2VjdGlnbyBMaW1pdGVkMSwwKgYDVQQDEyNTZWN0aWdv
|
||||
// SIG // IFB1YmxpYyBUaW1lIFN0YW1waW5nIENBIFIzNgIQOlJq
|
||||
// SIG // LITOVeYdZfzMEtjpiTANBglghkgBZQMEAgIFAKCCAfkw
|
||||
// SIG // GgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqG
|
||||
// SIG // SIb3DQEJBTEPFw0yNTAxMjcxOTAxNTBaMD8GCSqGSIb3
|
||||
// SIG // DQEJBDEyBDDMlfx5sdNr9s1tcMbUfaU6YPvNwRHEEhz2
|
||||
// SIG // l9V34zj5FDcdVXEo7CPfAt66ZgdV7WcwggF6BgsqhkiG
|
||||
// SIG // 9w0BCRACDDGCAWkwggFlMIIBYTAWBBT4YJgZpvuILPfo
|
||||
// SIG // UpfyoRlSGhZ3XzCBhwQUxq5U5HiG8Xw9VRJIjGnDSnr5
|
||||
// SIG // wt0wbzBbpFkwVzELMAkGA1UEBhMCR0IxGDAWBgNVBAoT
|
||||
// SIG // D1NlY3RpZ28gTGltaXRlZDEuMCwGA1UEAxMlU2VjdGln
|
||||
// SIG // byBQdWJsaWMgVGltZSBTdGFtcGluZyBSb290IFI0NgIQ
|
||||
// SIG // eiOu2lNplg+RyD5c9MfjPzCBvAQUhT1jLZOCgmF80JA1
|
||||
// SIG // xJHeksFC2scwgaMwgY6kgYswgYgxCzAJBgNVBAYTAlVT
|
||||
// SIG // MRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtK
|
||||
// SIG // ZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVT
|
||||
// SIG // VCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNB
|
||||
// SIG // IENlcnRpZmljYXRpb24gQXV0aG9yaXR5AhA2wrC9fBs6
|
||||
// SIG // 56Oz3TbLyXVoMA0GCSqGSIb3DQEBAQUABIICAFxiZz9E
|
||||
// SIG // iZR0ltwtxFyGj6rq1sVCbF1OBVPyDuBBoLLCtDYcFgrd
|
||||
// SIG // rsC7RSsGZKcs6yMe+CQGlqzfIbfRZKEphMa6c8x76siE
|
||||
// SIG // pvF3hakXQYVjAecPJLacRPi0fkmK2L8tSiE9lv6oXoD1
|
||||
// SIG // XltZTHdFwvMbCVt6FF64OjbgzK6z2ATm7JHXruxM91kI
|
||||
// SIG // xIKSS6Ot/pdh5aglPZbsRNRvYmxR0ynmUKu3pnlB4Dn3
|
||||
// SIG // Ppoht8CILAbWiKbdAkkymwwfcj3Ik8uk2XQbo5IcAZLY
|
||||
// SIG // UBnYuwTtmGemGAjyo5z7myR5647l1nqpnMjWXNHVThwp
|
||||
// SIG // qKo/3HwQPXAhtl1QXucmGtEFfpT46zaZqY8ALZzGLOd1
|
||||
// SIG // flsoTRrpcwUwAm3lVHwolqnr1pyewLyT6wGvjbQgyv7K
|
||||
// SIG // E4XhC9A/CP2egqb+lZPD/9UMiMZO32HX4d9s6y1oTyP5
|
||||
// SIG // tX6wQ0rm7UMXwpRuuQpTIqWX3MxV1dMd5O6rG5BuJSFi
|
||||
// SIG // QyIzx6o8SQvsE7nXh8tdT87eNU5JbXyoqwAXI2VPM02P
|
||||
// SIG // DeRDtffgmaiyG1Unl5/9NxPB32C9JYNYbYfqWAB/45Th
|
||||
// SIG // QkISVf4i5Sk5ukO8hR2H7QPfvhRFN2nnpwvhwSvbJi9s
|
||||
// SIG // 2cgKpGVsaMSb59wTJQ+U0kFzJoXc3HZIKc3tcyDSh3T8
|
||||
// SIG // pgxSbOcXyFoTSoMR
|
||||
// SIG // End signature block
|
||||
@ -0,0 +1,23 @@
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Copyright (C) Intel Corporation, 2022 All Rights Reserved.
|
||||
|
||||
File: HlapiScripts Readme.txt
|
||||
|
||||
Contents: Intel(R) Active Management Technology (Intel(R) AMT):
|
||||
A short description of the HLAPI sample scripts folder content
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
The SDK provides COM interface for the High Level API. This folder contains
|
||||
several JavaScript files that demonstrate how to use this COM interface.
|
||||
|
||||
The features supported via COM are:
|
||||
- Power
|
||||
- KVMSetup
|
||||
- AlarmClock
|
||||
- Redirection
|
||||
|
||||
Each JavaScript file is demonstrates the whole feature interface and not just a
|
||||
single call. Please read the comments within the scripts in order to understand
|
||||
the differences between the interfaces.
|
||||
403
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/Scripts/KVM.js
Normal file
403
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/Scripts/KVM.js
Normal file
@ -0,0 +1,403 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2010 All Rights Reserved.
|
||||
//
|
||||
// Contents: Demonstrate the KVM COM interface.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
var Screen = { "Monitor0": 0, "Monitor1": 1 }
|
||||
var PortsState = { "DisableAll": 0, "DefaultPortOnly": 1, "RedirectionPortOnly": 2, "EnableAll": 3 }
|
||||
var info = new ActiveXObject("Intel.Manageability.ConnectionInfo");
|
||||
if (typeof (info) != undefined)
|
||||
{
|
||||
info.Host = "10.0.0.15";
|
||||
info.UserName = "admin";
|
||||
info.Password = "Admin!98";
|
||||
|
||||
var amt = new ActiveXObject("Intel.Manageability.COM.AMTInstance");
|
||||
if (typeof (amt) != undefined)
|
||||
{
|
||||
try {
|
||||
amt.Create(info);
|
||||
amt.KVMSetup.SetDefaultMonitor(Screen.Monitor0);
|
||||
amt.KVMSetup.SetRFBPassword("P@ssw0rd");
|
||||
amt.KVMSetup.SetOptInTimeout(200);
|
||||
amt.KVMSetup.SetSessionTimeout(150);
|
||||
amt.KVMSetup.SetOptInPolicy(true);
|
||||
amt.KVMSetup.SetPortsState(PortsState.DisableAll);
|
||||
|
||||
//Get capabilities
|
||||
var capabilities = amt.KVMSetup.GetCapabilities();
|
||||
document.write("Is default port enabled: " + capabilities.IsDefaultPortEnable + "</br>");
|
||||
document.write("Is redirection port enabled: " + capabilities.IsRedirectionPortEnable + "</br>");
|
||||
}
|
||||
catch (Error)
|
||||
{
|
||||
alert(Error.Message);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("Failed to perform KVM call");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("Failed to initialize ConnectionInfo object");
|
||||
}
|
||||
// SIG // Begin signature block
|
||||
// SIG // MIItigYJKoZIhvcNAQcCoIItezCCLXcCAQExDzANBglg
|
||||
// SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
|
||||
// SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC
|
||||
// SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
|
||||
// SIG // H0DpeQ+HloorR2pPD4zmwLYKJIT4EiLF03TH+rCx0xqg
|
||||
// SIG // ghF+MIIFbzCCBFegAwIBAgIQSPyTtGBVlI02p8mKidaU
|
||||
// SIG // FjANBgkqhkiG9w0BAQwFADB7MQswCQYDVQQGEwJHQjEb
|
||||
// SIG // MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
|
||||
// SIG // VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
||||
// SIG // TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRl
|
||||
// SIG // IFNlcnZpY2VzMB4XDTIxMDUyNTAwMDAwMFoXDTI4MTIz
|
||||
// SIG // MTIzNTk1OVowVjELMAkGA1UEBhMCR0IxGDAWBgNVBAoT
|
||||
// SIG // D1NlY3RpZ28gTGltaXRlZDEtMCsGA1UEAxMkU2VjdGln
|
||||
// SIG // byBQdWJsaWMgQ29kZSBTaWduaW5nIFJvb3QgUjQ2MIIC
|
||||
// SIG // IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjeeU
|
||||
// SIG // EiIEJHQu/xYjApKKtq42haxH1CORKz7cfeIxoFFvrISR
|
||||
// SIG // 41KKteKW3tCHYySJiv/vEpM7fbu2ir29BX8nm2tl06UM
|
||||
// SIG // abG8STma8W1uquSggyfamg0rUOlLW7O4ZDakfko9qXGr
|
||||
// SIG // YbNzszwLDO/bM1flvjQ345cbXf0fEj2CA3bm+z9m0pQx
|
||||
// SIG // afptszSswXp43JJQ8mTHqi0Eq8Nq6uAvp6fcbtfo/9oh
|
||||
// SIG // q0C/ue4NnsbZnpnvxt4fqQx2sycgoda6/YDnAdLv64Ip
|
||||
// SIG // lXCN/7sVz/7RDzaiLk8ykHRGa0c1E3cFM09jLrgt4b9l
|
||||
// SIG // pwRrGNhx+swI8m2JmRCxrds+LOSqGLDGBwF1Z95t6WNj
|
||||
// SIG // HjZ/aYm+qkU+blpfj6Fby50whjDoA7NAxg0POM1nqFOI
|
||||
// SIG // +rgwZfpvx+cdsYN0aT6sxGg7seZnM5q2COCABUhA7vaC
|
||||
// SIG // ZEao9XOwBpXybGWfv1VbHJxXGsd4RnxwqpQbghesh+m2
|
||||
// SIG // yQ6BHEDWFhcp/FycGCvqRfXvvdVnTyheBe6QTHrnxvTQ
|
||||
// SIG // /PrNPjJGEyA2igTqt6oHRpwNkzoJZplYXCmjuQymMDg8
|
||||
// SIG // 0EY2NXycuu7D1fkKdvp+BRtAypI16dV60bV/AK6pkKrF
|
||||
// SIG // fwGcELEW/MxuGNxvYv6mUKe4e7idFT/+IAx1yCJaE5UZ
|
||||
// SIG // kADpGtXChvHjjuxf9OUCAwEAAaOCARIwggEOMB8GA1Ud
|
||||
// SIG // IwQYMBaAFKARCiM+lvEH7OKvKe+CpX/QMKS0MB0GA1Ud
|
||||
// SIG // DgQWBBQy65Ka/zWWSC8oQEJwIDaRXBeF5jAOBgNVHQ8B
|
||||
// SIG // Af8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zATBgNVHSUE
|
||||
// SIG // DDAKBggrBgEFBQcDAzAbBgNVHSAEFDASMAYGBFUdIAAw
|
||||
// SIG // CAYGZ4EMAQQBMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6
|
||||
// SIG // Ly9jcmwuY29tb2RvY2EuY29tL0FBQUNlcnRpZmljYXRl
|
||||
// SIG // U2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr
|
||||
// SIG // BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29t
|
||||
// SIG // MA0GCSqGSIb3DQEBDAUAA4IBAQASv6Hvi3SamES4aUa1
|
||||
// SIG // qyQKDKSKZ7g6gb9Fin1SB6iNH04hhTmja14tIIa/ELiu
|
||||
// SIG // eTtTzbT72ES+BtlcY2fUQBaHRIZyKtYyFfUSg8L54V0R
|
||||
// SIG // QGf2QidyxSPiAjgaTCDi2wH3zUZPJqJ8ZsBRNraJAlTH
|
||||
// SIG // /Fj7bADu/pimLpWhDFMpH2/YGaZPnvesCepdgsaLr4Cn
|
||||
// SIG // vYFIUoQx2jLsFeSmTD1sOXPUC4U5IOCFGmjhp0g4qdE2
|
||||
// SIG // JXfBjRkWxYhMZn0vY86Y6GnfrDyoXZ3JHFuu2PMvdM+4
|
||||
// SIG // fvbXg50RlmKarkUT2n/cR/vfw1Kf5gZV6Z2M8jpiUbzs
|
||||
// SIG // JA8p1FiAhORFe1rYMIIF6TCCBFGgAwIBAgIRAP5c1JUB
|
||||
// SIG // imUXpNBO+HtrkzowDQYJKoZIhvcNAQEMBQAwVDELMAkG
|
||||
// SIG // A1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRl
|
||||
// SIG // ZDErMCkGA1UEAxMiU2VjdGlnbyBQdWJsaWMgQ29kZSBT
|
||||
// SIG // aWduaW5nIENBIFIzNjAeFw0yNDAzMTMwMDAwMDBaFw0y
|
||||
// SIG // NTAzMTMyMzU5NTlaMFoxCzAJBgNVBAYTAlVTMRMwEQYD
|
||||
// SIG // VQQIDApDYWxpZm9ybmlhMRowGAYDVQQKDBFJbnRlbCBD
|
||||
// SIG // b3Jwb3JhdGlvbjEaMBgGA1UEAwwRSW50ZWwgQ29ycG9y
|
||||
// SIG // YXRpb24wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK
|
||||
// SIG // AoIBgQCOvQs9ebKrmAXTOWV54xQTZ76syOFlIGkPz4wS
|
||||
// SIG // qINrfyJEgclyvtytZuAsELU4KqTAg9fdxNwP8Qx5llRL
|
||||
// SIG // 6QilAfsXPHP/BROk8pqyCgP9FB+41XrC4AqNAMXzNHZH
|
||||
// SIG // Kq7yyr53IbHnpHWjNm/hONTUowIYVoBqdS6E2cqwDiTa
|
||||
// SIG // RrDyH4AP9PiekQhAofQQEW1wkVwJ807j7Vg13ypTsEmu
|
||||
// SIG // PqNrSTO0zzQC0yUix6GW731DqYDoftJVsePYYpqFupXw
|
||||
// SIG // 7eXGQzzk/MDcKXeQ1sAfDIcy3zRKW70f/ObPEj/3Vkaw
|
||||
// SIG // FZEkcUtcKiGWvTrMQ/q4wQSHvCQ0dWPYYxgVCsmzAGN9
|
||||
// SIG // D6fKw6RXh9WGtQPIDXmnvCkUpWnK6MqMYUb4i/Z/JwmS
|
||||
// SIG // IYqi+kNELvXCRsJWIi/ZgDEclTyNwR39LOq+gUarfMgW
|
||||
// SIG // D/9nbIHOM/WFfQxiVGis9pI8LndTiWbqRQ2YqPrIc2zv
|
||||
// SIG // 4e/IiUkIjFR4DFRRFTmRRERN3VUhBbFnTwMCAwEAAaOC
|
||||
// SIG // Aa4wggGqMB8GA1UdIwQYMBaAFA8qyyCHKLjsb0iuK1Sm
|
||||
// SIG // KaoXpM0MMB0GA1UdDgQWBBQo7T1qfzp1FOdWlwIgcHEP
|
||||
// SIG // 4L2HxjAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIw
|
||||
// SIG // ADATBgNVHSUEDDAKBggrBgEFBQcDAzBKBgNVHSAEQzBB
|
||||
// SIG // MDUGDCsGAQQBsjEBAgEDAjAlMCMGCCsGAQUFBwIBFhdo
|
||||
// SIG // dHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBBAEw
|
||||
// SIG // SQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybC5zZWN0
|
||||
// SIG // aWdvLmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdD
|
||||
// SIG // QVIzNi5jcmwweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUF
|
||||
// SIG // BzAChjhodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3Rp
|
||||
// SIG // Z29QdWJsaWNDb2RlU2lnbmluZ0NBUjM2LmNydDAjBggr
|
||||
// SIG // BgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20w
|
||||
// SIG // IwYDVR0RBBwwGoEYcGtpZW5naW5lZXJpbmdAaW50ZWwu
|
||||
// SIG // Y29tMA0GCSqGSIb3DQEBDAUAA4IBgQAdNVhldXFo7Uwk
|
||||
// SIG // BpDbQ0aZktPDblIrNRdvtHMCK5NnWPLVyomeUbLqZASl
|
||||
// SIG // n6YzUh3Vu/Q71QqLQW8kWFHQ0nhZEPI0T5vr5c8hYUVr
|
||||
// SIG // luKkmHCJceqomqRmRBbL5hBFzJ8BvcxBHirGJZzP2UiN
|
||||
// SIG // t7i2Ql8oScd+Rtj6Qa97TMpuoCL7WuQ5peEv1xCSSP2b
|
||||
// SIG // yCoTzuUFHpgktO0vUDe0jinhJJNS3VdXHAgTbUaQM5hl
|
||||
// SIG // a+ImEuKW1a/MorIWHtuU0gD3lhMvT2BDJ42W0EEvJQ/F
|
||||
// SIG // xQeoH4kySxQgsyCrB8zCJPhbiZcFZauHnP1q8dPn6VXq
|
||||
// SIG // NkjyWSP4hPNoLQ+aMsKLaawuOzHb1ZXL23j2Jx6Caqkb
|
||||
// SIG // Z4V/hOo5RkbZ4VAj1fgbEUnKeL/AyFCRnVeQM0ua2Lt2
|
||||
// SIG // ISRgyYE4DxrwbZr2j3ibcXCs11JzKT7Wp7iYFt6NbnEq
|
||||
// SIG // PUim/XTahXC3DlFQ9pQ44fOWdGpyaJvduMYVZuHBjVkh
|
||||
// SIG // e2s/HFQOsx/0XOgwggYaMIIEAqADAgECAhBiHW0MUgGe
|
||||
// SIG // O5B5FSCJIRwKMA0GCSqGSIb3DQEBDAUAMFYxCzAJBgNV
|
||||
// SIG // BAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQx
|
||||
// SIG // LTArBgNVBAMTJFNlY3RpZ28gUHVibGljIENvZGUgU2ln
|
||||
// SIG // bmluZyBSb290IFI0NjAeFw0yMTAzMjIwMDAwMDBaFw0z
|
||||
// SIG // NjAzMjEyMzU5NTlaMFQxCzAJBgNVBAYTAkdCMRgwFgYD
|
||||
// SIG // VQQKEw9TZWN0aWdvIExpbWl0ZWQxKzApBgNVBAMTIlNl
|
||||
// SIG // Y3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYw
|
||||
// SIG // ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCb
|
||||
// SIG // K51T+jU/jmAGQ2rAz/V/9shTUxjIztNsfvxYB5UXeWUz
|
||||
// SIG // CxEeAEZGbEN4QMgCsJLZUKhWThj/yPqy0iSZhXkZ6Pg2
|
||||
// SIG // A2NVDgFigOMYzB2OKhdqfWGVoYW3haT29PSTahYkwmMv
|
||||
// SIG // 0b/83nbeECbiMXhSOtbam+/36F09fy1tsB8je/RV0mIk
|
||||
// SIG // 8XL/tfCK6cPuYHE215wzrK0h1SWHTxPbPuYkRdkP05Zw
|
||||
// SIG // mRmTnAO5/arnY83jeNzhP06ShdnRqtZlV59+8yv+KIhE
|
||||
// SIG // 5ILMqgOZYAENHNX9SJDm+qxp4VqpB3MV/h53yl41aHU5
|
||||
// SIG // pledi9lCBbH9JeIkNFICiVHNkRmq4TpxtwfvjsUedyz8
|
||||
// SIG // rNyfQJy/aOs5b4s+ac7IH60B+Ja7TVM+EKv1WuTGwcLm
|
||||
// SIG // oU3FpOFMbmPj8pz44MPZ1f9+YEQIQty/NQd/2yGgW+uf
|
||||
// SIG // flcZ/ZE9o1M7a5Jnqf2i2/uMSWymR8r2oQBMdlyh2n5H
|
||||
// SIG // irY4jKnFH/9gRvd+QOfdRrJZb1sCAwEAAaOCAWQwggFg
|
||||
// SIG // MB8GA1UdIwQYMBaAFDLrkpr/NZZILyhAQnAgNpFcF4Xm
|
||||
// SIG // MB0GA1UdDgQWBBQPKssghyi47G9IritUpimqF6TNDDAO
|
||||
// SIG // BgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIB
|
||||
// SIG // ADATBgNVHSUEDDAKBggrBgEFBQcDAzAbBgNVHSAEFDAS
|
||||
// SIG // MAYGBFUdIAAwCAYGZ4EMAQQBMEsGA1UdHwREMEIwQKA+
|
||||
// SIG // oDyGOmh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
|
||||
// SIG // b1B1YmxpY0NvZGVTaWduaW5nUm9vdFI0Ni5jcmwwewYI
|
||||
// SIG // KwYBBQUHAQEEbzBtMEYGCCsGAQUFBzAChjpodHRwOi8v
|
||||
// SIG // Y3J0LnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNDb2Rl
|
||||
// SIG // U2lnbmluZ1Jvb3RSNDYucDdjMCMGCCsGAQUFBzABhhdo
|
||||
// SIG // dHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0B
|
||||
// SIG // AQwFAAOCAgEABv+C4XdjNm57oRUgmxP/BP6YdURhw1aV
|
||||
// SIG // cdGRP4Wh60BAscjW4HL9hcpkOTz5jUug2oeunbYAowbF
|
||||
// SIG // C2AKK+cMcXIBD0ZdOaWTsyNyBBsMLHqafvIhrCymlaS9
|
||||
// SIG // 8+QpoBCyKppP0OcxYEdU0hpsaqBBIZOtBajjcw5+w/Ke
|
||||
// SIG // FvPYfLF/ldYpmlG+vd0xqlqd099iChnyIMvY5HexjO2A
|
||||
// SIG // mtsbpVn0OhNcWbWDRF/3sBp6fWXhz7DcML4iTAWS+MVX
|
||||
// SIG // eNLj1lJziVKEoroGs9Mlizg0bUMbOalOhOfCipnx8CaL
|
||||
// SIG // ZeVme5yELg09Jlo8BMe80jO37PU8ejfkP9/uPak7VLwE
|
||||
// SIG // LKxAMcJszkyeiaerlphwoKx1uHRzNyE6bxuSKcutisqm
|
||||
// SIG // KL5OTunAvtONEoteSiabkPVSZ2z76mKnzAfZxCl/3dq3
|
||||
// SIG // dUNw4rg3sTCggkHSRqTqlLMS7gjrhTqBmzu1L90Y1KWN
|
||||
// SIG // /Y5JKdGvspbOrTfOXyXvmPL6E52z1NZJ6ctuMFBQZH3p
|
||||
// SIG // wWvqURR8AgQdULUvrxjUYbHHj95Ejza63zdrEcxWLDX6
|
||||
// SIG // xWls/GDnVNueKjWUH3fTv1Y8Wdho698YADR7TNx8X8z2
|
||||
// SIG // Bev6SivBBOHY+uqiirZtg0y9ShQoPzmCcn63Syatatvx
|
||||
// SIG // 157YK9hlcPmVoa1oDE5/L9Uo2bC5a4CH2RwxghtkMIIb
|
||||
// SIG // YAIBATBpMFQxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9T
|
||||
// SIG // ZWN0aWdvIExpbWl0ZWQxKzApBgNVBAMTIlNlY3RpZ28g
|
||||
// SIG // UHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYCEQD+XNSV
|
||||
// SIG // AYplF6TQTvh7a5M6MA0GCWCGSAFlAwQCAQUAoHwwEAYK
|
||||
// SIG // KwYBBAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisG
|
||||
// SIG // AQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQB
|
||||
// SIG // gjcCARUwLwYJKoZIhvcNAQkEMSIEIFVp5lhkYWkWzX1M
|
||||
// SIG // Cu68682Gef5liMmgsxwYtOgTEYIEMA0GCSqGSIb3DQEB
|
||||
// SIG // AQUABIIBgC/5ebuG9H5XHtNMUWD5N2W7VtEnFVgesFug
|
||||
// SIG // RcPRjXw74Pcie4ZOVXxDSUCTZFdrCC0cXqcApAKP9I9Y
|
||||
// SIG // Oy2Bs4PYTViiMnjBc5H7TeCb2KI7cqMr3YEV+wNA7qE+
|
||||
// SIG // 6rFZvhIHhTcLt5STVUS2LcF2ivnrtyGfU9Hc2DXrUksl
|
||||
// SIG // n8lnDwvXzdqvqxVbzcOQOvGX3qnF6dmZF3607o7DAb/z
|
||||
// SIG // 9puBC+TuNYbTwcl1aCmmiL5QkJBZ32xAHeBr3Hf4b8XS
|
||||
// SIG // nRSZIhOtGbXXJfU+HkVbKaIITEtGVjeDzXL3dzM9uZpb
|
||||
// SIG // eegUpT3AOxJz7BFT45N71ZPiTMDgSB7fssf+bcVFat1X
|
||||
// SIG // lWorp4Ou3/DaDbyiGEBSXptBEyQjEcuW4iBrVDGZNXSI
|
||||
// SIG // zHp8dYEAh1w3hM17H+J12W61J9ruhWKdomDzEbEH4ezU
|
||||
// SIG // G2X1a2aPt/Ou85ZvLJOPzeBFui/zk1/SJ+WROzCtPume
|
||||
// SIG // pe2OoErvTr8Ei3h9vU3DfoyruWgu0BHoeyOmmKGCGM4w
|
||||
// SIG // ghjKBgorBgEEAYI3AwMBMYIYujCCGLYGCSqGSIb3DQEH
|
||||
// SIG // AqCCGKcwghijAgEDMQ8wDQYJYIZIAWUDBAICBQAwgfQG
|
||||
// SIG // CyqGSIb3DQEJEAEEoIHkBIHhMIHeAgEBBgorBgEEAbIx
|
||||
// SIG // AgEBMDEwDQYJYIZIAWUDBAIBBQAEIFDSoYEDbiZMqHyK
|
||||
// SIG // wL83lK2U0T/M8YXok4QpckNb+RsHAhUA/jVmNrA5jBoP
|
||||
// SIG // Fk6Vnto95CSYGJIYDzIwMjUwMTI3MTkwMTU0WqBypHAw
|
||||
// SIG // bjELMAkGA1UEBhMCR0IxEzARBgNVBAgTCk1hbmNoZXN0
|
||||
// SIG // ZXIxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDEwMC4G
|
||||
// SIG // A1UEAxMnU2VjdGlnbyBQdWJsaWMgVGltZSBTdGFtcGlu
|
||||
// SIG // ZyBTaWduZXIgUjM1oIIS/zCCBl0wggTFoAMCAQICEDpS
|
||||
// SIG // aiyEzlXmHWX8zBLY6YkwDQYJKoZIhvcNAQEMBQAwVTEL
|
||||
// SIG // MAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGlt
|
||||
// SIG // aXRlZDEsMCoGA1UEAxMjU2VjdGlnbyBQdWJsaWMgVGlt
|
||||
// SIG // ZSBTdGFtcGluZyBDQSBSMzYwHhcNMjQwMTE1MDAwMDAw
|
||||
// SIG // WhcNMzUwNDE0MjM1OTU5WjBuMQswCQYDVQQGEwJHQjET
|
||||
// SIG // MBEGA1UECBMKTWFuY2hlc3RlcjEYMBYGA1UEChMPU2Vj
|
||||
// SIG // dGlnbyBMaW1pdGVkMTAwLgYDVQQDEydTZWN0aWdvIFB1
|
||||
// SIG // YmxpYyBUaW1lIFN0YW1waW5nIFNpZ25lciBSMzUwggIi
|
||||
// SIG // MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCN0Wf0
|
||||
// SIG // wUibvf04STpNYYGbw9jcRaVhBDaNBp7jmJaA9dQZW5ig
|
||||
// SIG // hrXGNMYjK7Dey5RIHMqLIbT9z9if753mYbojJrKWO4ZP
|
||||
// SIG // 0N5dBT2TwZZaPb8E+hqaDZ8Vy2c+x1NiEwbEzTrPX4W3
|
||||
// SIG // QFq/zJvDDbWKL99qLL42GJQzX3n5wWo60KklfFn+Wb22
|
||||
// SIG // mOZWYSqkCVGl8aYuE12SqIS4MVO4PUaxXeO+4+48YpQl
|
||||
// SIG // Nqbc/ndTgszRQLF4MjxDPjRDD1M9qvpLTZcTGVzxfViy
|
||||
// SIG // IToRNxPP6DUiZDU6oXARrGwyP9aglPXwYbkqI2dLuf9f
|
||||
// SIG // iIzBugCDciOly8TPDgBkJmjAfILNiGcVEzg+40xUdhxN
|
||||
// SIG // caC+6r0juPiR7bzXHh7v/3RnlZuT3ZGstxLfmE7fRMAF
|
||||
// SIG // wbHdDz5gtHLqjSTXDiNF58IxPtvmZPG2rlc+Yq+2B8+5
|
||||
// SIG // pY+QZn+1vEifI0MDtiA6BxxQuOnj4PnqDaK7NEKwtD1p
|
||||
// SIG // zoA3jJFuoJiwbatwhDkg1PIjYnMDbDW+wAc9FtRN6pUs
|
||||
// SIG // O405jaBgigoFZCw9hWjLNqgFVTo7lMb5rVjJ9aSBVVL2
|
||||
// SIG // dcqzyFW2LdWk5Xdp65oeeOALod7YIIMv1pbqC15R7QCY
|
||||
// SIG // LxcK1bCl4/HpBbdE5mjy9JR70BHuYx27n4XNOZbwrXcG
|
||||
// SIG // 3wZf9gEUk7stbPAoBQIDAQABo4IBjjCCAYowHwYDVR0j
|
||||
// SIG // BBgwFoAUX1jtTDF6omFCjVKAurNhlxmiMpswHQYDVR0O
|
||||
// SIG // BBYEFGjvpDJJabZSOB3qQzks9BRqngyFMA4GA1UdDwEB
|
||||
// SIG // /wQEAwIGwDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQM
|
||||
// SIG // MAoGCCsGAQUFBwMIMEoGA1UdIARDMEEwNQYMKwYBBAGy
|
||||
// SIG // MQECAQMIMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2Vj
|
||||
// SIG // dGlnby5jb20vQ1BTMAgGBmeBDAEEAjBKBgNVHR8EQzBB
|
||||
// SIG // MD+gPaA7hjlodHRwOi8vY3JsLnNlY3RpZ28uY29tL1Nl
|
||||
// SIG // Y3RpZ29QdWJsaWNUaW1lU3RhbXBpbmdDQVIzNi5jcmww
|
||||
// SIG // egYIKwYBBQUHAQEEbjBsMEUGCCsGAQUFBzAChjlodHRw
|
||||
// SIG // Oi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNU
|
||||
// SIG // aW1lU3RhbXBpbmdDQVIzNi5jcnQwIwYIKwYBBQUHMAGG
|
||||
// SIG // F2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMA0GCSqGSIb3
|
||||
// SIG // DQEBDAUAA4IBgQCw3C7J+k82TIov9slP1e8YTx+fDsa/
|
||||
// SIG // /hJ62Y6SMr2E89rv82y/n8we5W6z5pfBEWozlW7nWp+s
|
||||
// SIG // dPCdUTFw/YQcqvshH6b9Rvs9qZp5Z+V7nHwPTH8yzKwg
|
||||
// SIG // KzTTG1I1XEXLAK9fHnmXpaDeVeI8K6Lw3iznWZdLQe3z
|
||||
// SIG // l+Rejdq5l2jU7iUfMkthfhFmi+VVYPkR/BXpV7Ub1Qyy
|
||||
// SIG // WebqkjSHJHRmv3lBYbQyk08/S7TlIeOr9iQ+UN57fJg4
|
||||
// SIG // QI0yqdn6PyiehS1nSgLwKRs46T8A6hXiSn/pCXaASnds
|
||||
// SIG // 0LsM5OVoKYfbgOOlWCvKfwUySWoSgrhncihSBXxH2pAu
|
||||
// SIG // DV2vr8GOCEaePZc0Dy6O1rYnKjGmqm/IRNkJghSMizr1
|
||||
// SIG // iIOPN+23futBXAhmx8Ji/4NTmyH9K0UvXHiuA2Pa3wZx
|
||||
// SIG // xR9r9XeIUVb2V8glZay+2ULlc445CzCvVSZV01ZB6bgv
|
||||
// SIG // CuUuBx079gCcepjnZDCcEuIC5Se4F6yFaZ8RvmiJ4hgw
|
||||
// SIG // ggYUMIID/KADAgECAhB6I67aU2mWD5HIPlz0x+M/MA0G
|
||||
// SIG // CSqGSIb3DQEBDAUAMFcxCzAJBgNVBAYTAkdCMRgwFgYD
|
||||
// SIG // VQQKEw9TZWN0aWdvIExpbWl0ZWQxLjAsBgNVBAMTJVNl
|
||||
// SIG // Y3RpZ28gUHVibGljIFRpbWUgU3RhbXBpbmcgUm9vdCBS
|
||||
// SIG // NDYwHhcNMjEwMzIyMDAwMDAwWhcNMzYwMzIxMjM1OTU5
|
||||
// SIG // WjBVMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGln
|
||||
// SIG // byBMaW1pdGVkMSwwKgYDVQQDEyNTZWN0aWdvIFB1Ymxp
|
||||
// SIG // YyBUaW1lIFN0YW1waW5nIENBIFIzNjCCAaIwDQYJKoZI
|
||||
// SIG // hvcNAQEBBQADggGPADCCAYoCggGBAM2Y2ENBq26CK+z2
|
||||
// SIG // M34mNOSJjNPvIhKAVD7vJq+MDoGD46IiM+b83+3ecLvB
|
||||
// SIG // hStSVjeYXIjfa3ajoW3cS3ElcJzkyZlBnwDEJuHlzpbN
|
||||
// SIG // 4kMH2qRBVrjrGJgSlzzUqcGQBaCxpectRGhhnOSwcjPM
|
||||
// SIG // I3G0hedv2eNmGiUbD12OeORN0ADzdpsQ4dDi6M4YhoGE
|
||||
// SIG // 9cbY11XxM2AVZn0GiOUC9+XE0wI7CQKfOUfigLDn7i/W
|
||||
// SIG // eyxZ43XLj5GVo7LDBExSLnh+va8WxTlA+uBvq1KO8RSH
|
||||
// SIG // UQLgzb1gbL9Ihgzxmkdp2ZWNuLc+XyEmJNbD2OIIq/fW
|
||||
// SIG // lwBp6KNL19zpHsODLIsgZ+WZ1AzCs1HEK6VWrxmnKyJJ
|
||||
// SIG // g2Lv23DlEdZlQSGdF+z+Gyn9/CRezKe7WNyxRf4e4bwU
|
||||
// SIG // trYE2F5Q+05yDD68clwnweckKtxRaF0VzN/w76kOLIaF
|
||||
// SIG // Vhf5sMM/caEZLtOYqYadtn034ykSFaZuIBU9uCSrKRKT
|
||||
// SIG // PJhWvXk4CllgrwIDAQABo4IBXDCCAVgwHwYDVR0jBBgw
|
||||
// SIG // FoAU9ndq3T/9ARP/FqFsggIv0Ao9FCUwHQYDVR0OBBYE
|
||||
// SIG // FF9Y7UwxeqJhQo1SgLqzYZcZojKbMA4GA1UdDwEB/wQE
|
||||
// SIG // AwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMBMGA1UdJQQM
|
||||
// SIG // MAoGCCsGAQUFBwMIMBEGA1UdIAQKMAgwBgYEVR0gADBM
|
||||
// SIG // BgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLnNlY3Rp
|
||||
// SIG // Z28uY29tL1NlY3RpZ29QdWJsaWNUaW1lU3RhbXBpbmdS
|
||||
// SIG // b290UjQ2LmNybDB8BggrBgEFBQcBAQRwMG4wRwYIKwYB
|
||||
// SIG // BQUHMAKGO2h0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2Vj
|
||||
// SIG // dGlnb1B1YmxpY1RpbWVTdGFtcGluZ1Jvb3RSNDYucDdj
|
||||
// SIG // MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdv
|
||||
// SIG // LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAEtd7IK0ONVgM
|
||||
// SIG // noEdJVj9TC1ndK/HYiYh9lVUacahRoZ2W2hfiEOyQExn
|
||||
// SIG // Hk1jkvpIJzAMxmEc6ZvIyHI5UkPCbXKspioYMdbOnBWQ
|
||||
// SIG // Un733qMooBfIghpR/klUqNxx6/fDXqY0hSU1OSkkSivt
|
||||
// SIG // 51UlmJElUICZYBodzD3M/SFjeCP59anwxs6hwj1mfvzG
|
||||
// SIG // +b1coYGnqsSz2wSKr+nDO+Db8qNcTbJZRAiSazr7KyUJ
|
||||
// SIG // Go1c+MScGfG5QHV+bps8BX5Oyv9Ct36Y4Il6ajTqV2if
|
||||
// SIG // ikkVtB3RNBUgwu/mSiSUice/Jp/q8BMk/gN8+0rNIE+Q
|
||||
// SIG // qU63JoVMCMPY2752LmESsRVVoypJVt8/N3qQ1c6Fibbc
|
||||
// SIG // Rabo3azZkcIdWGVSAdoLgAIxEKBeNh9AQO1gQrnh1TA8
|
||||
// SIG // ldXuJzPSuALOz1Ujb0PCyNVkWk7hkhVHfcvBfI8NtgWQ
|
||||
// SIG // upiaAeNHe0pWSGH2opXZYKYG4Lbukg7HpNi/KqJhue2K
|
||||
// SIG // eak6qH9A8CeEOB7Eob0Zf+fU+CCQaL0cJqlmnx9HCDxF
|
||||
// SIG // +3BLbUufrV64EbTI40zqegPZdA+sXCmbcZy6okx/Sjws
|
||||
// SIG // usWRItFA3DE8MORZeFb6BmzBtqKJ7l939bbKBy2jvxcJ
|
||||
// SIG // I98Va95Q5JnlKor3m0E7xpMeYRriWklUPsetMSf2NvUQ
|
||||
// SIG // a/E5vVyefQIwggaCMIIEaqADAgECAhA2wrC9fBs656Oz
|
||||
// SIG // 3TbLyXVoMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
|
||||
// SIG // EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UE
|
||||
// SIG // BxMLSmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VS
|
||||
// SIG // VFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0
|
||||
// SIG // IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0y
|
||||
// SIG // MTAzMjIwMDAwMDBaFw0zODAxMTgyMzU5NTlaMFcxCzAJ
|
||||
// SIG // BgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
|
||||
// SIG // ZWQxLjAsBgNVBAMTJVNlY3RpZ28gUHVibGljIFRpbWUg
|
||||
// SIG // U3RhbXBpbmcgUm9vdCBSNDYwggIiMA0GCSqGSIb3DQEB
|
||||
// SIG // AQUAA4ICDwAwggIKAoICAQCIndi5RWedHd3ouSaBmlRU
|
||||
// SIG // wHxJBZvMWhUP2ZQQRLRBQIF3FJmp1OR2LMgIU14g0JIl
|
||||
// SIG // L6VXWKmdbmKGRDILRxEtZdQnOh2qmcxGzjqemIk8et8s
|
||||
// SIG // E6J+N+Gl1cnZocew8eCAawKLu4TRrCoqCAT8uRjDeypo
|
||||
// SIG // GJrruH/drCio28aqIVEn45NZiZQI7YYBex48eL78lQ0B
|
||||
// SIG // rHeSmqy1uXe9xN04aG0pKG9ki+PC6VEfzutu6Q3IcZZf
|
||||
// SIG // m00r9YAEp/4aeiLhyaKxLuhKKaAdQjRaf/h6U13jQEV1
|
||||
// SIG // JnUTCm511n5avv4N+jSVwd+Wb8UMOs4netapq5Q/yGyi
|
||||
// SIG // QOgjsP/JRUj0MAT9YrcmXcLgsrAimfWY3MzKm1HCxcqu
|
||||
// SIG // inTqbs1Q0d2VMMQyi9cAgMYC9jKc+3mW62/yVl4jnDcw
|
||||
// SIG // 6ULJsBkOkrcPLUwqj7poS0T2+2JMzPP+jZ1h90/QpZnB
|
||||
// SIG // khdtixMiWDVgh60KmLmzXiqJc6lGwqoUqpq/1HVHm+Pc
|
||||
// SIG // 2B6+wCy/GwCcjw5rmzajLbmqGygEgaj/OLoanEWP6Y52
|
||||
// SIG // Hflef3XLvYnhEY4kSirMQhtberRvaI+5YsD3XVxHGBjl
|
||||
// SIG // Ili5u+NrLedIxsE88WzKXqZjj9Zi5ybJL2WjeXuOTbsw
|
||||
// SIG // B7XjkZbErg7ebeAQUQiS/uRGZ58NHs57ZPUfECcgJC+v
|
||||
// SIG // 2wIDAQABo4IBFjCCARIwHwYDVR0jBBgwFoAUU3m/Wqor
|
||||
// SIG // Ss9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFPZ3at0//QET
|
||||
// SIG // /xahbIICL9AKPRQlMA4GA1UdDwEB/wQEAwIBhjAPBgNV
|
||||
// SIG // HRMBAf8EBTADAQH/MBMGA1UdJQQMMAoGCCsGAQUFBwMI
|
||||
// SIG // MBEGA1UdIAQKMAgwBgYEVR0gADBQBgNVHR8ESTBHMEWg
|
||||
// SIG // Q6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVNF
|
||||
// SIG // UlRydXN0UlNBQ2VydGlmaWNhdGlvbkF1dGhvcml0eS5j
|
||||
// SIG // cmwwNQYIKwYBBQUHAQEEKTAnMCUGCCsGAQUFBzABhhlo
|
||||
// SIG // dHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3
|
||||
// SIG // DQEBDAUAA4ICAQAOvmVB7WhEuOWhxdQRh+S3OyWM637a
|
||||
// SIG // yBeR7djxQ8SihTnLf2sABFoB0DFR6JfWS0snf6WDG2gt
|
||||
// SIG // CGflwVvcYXZJJlFfym1Doi+4PfDP8s0cqlDmdfyGOwMt
|
||||
// SIG // GGzJ4iImyaz3IBae91g50QyrVbrUoT0mUGQHbRcF57ol
|
||||
// SIG // pfHhQEStz5i6hJvVLFV/ueQ21SM99zG4W2tB1ExGL98i
|
||||
// SIG // dX8ChsTwbD/zIExAopoe3l6JrzJtPxj8V9rocAnLP2C8
|
||||
// SIG // Q5wXVVZcbw4x4ztXLsGzqZIiRh5i111TW7HV1AtsQa6v
|
||||
// SIG // Xy633vCAbAOIaKcLAo/IU7sClyZUk62XD0VUnHD+YvVN
|
||||
// SIG // vIGezjM6CRpcWed/ODiptK+evDKPU2K6synimYBaNH49
|
||||
// SIG // v9Ih24+eYXNtI38byt5kIvh+8aW88WThRpv8lUJKaPn3
|
||||
// SIG // 7+YHYafob9Rg7LyTrSYpyZoBmwRWSE4W6iPjB7wJjJpH
|
||||
// SIG // 29308ZkpKKdpkiS9WNsf/eeUtvRrtIEiSJHN899L1P4l
|
||||
// SIG // 6zKVsdrUu1FX1T/ubSrsxrYJD+3f3aKg6yxdbugot06Y
|
||||
// SIG // wGXXiy5UUGZvOu3lXlxA+fC13dQ5OlL2gIb5lmF6Ii8+
|
||||
// SIG // CQOYDwXM+yd9dbmocQsHjcRPsccUd5E9FiswEqORvz8g
|
||||
// SIG // 3s+jR3SFCgXhN4wz7NgAnOgpCdUo4uDyllU9PzGCBJEw
|
||||
// SIG // ggSNAgEBMGkwVTELMAkGA1UEBhMCR0IxGDAWBgNVBAoT
|
||||
// SIG // D1NlY3RpZ28gTGltaXRlZDEsMCoGA1UEAxMjU2VjdGln
|
||||
// SIG // byBQdWJsaWMgVGltZSBTdGFtcGluZyBDQSBSMzYCEDpS
|
||||
// SIG // aiyEzlXmHWX8zBLY6YkwDQYJYIZIAWUDBAICBQCgggH5
|
||||
// SIG // MBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkq
|
||||
// SIG // hkiG9w0BCQUxDxcNMjUwMTI3MTkwMTU0WjA/BgkqhkiG
|
||||
// SIG // 9w0BCQQxMgQw/uzIyNO5OttdOtW79hwRCXL/48zFTRT1
|
||||
// SIG // +f4lvWsh8sWYetcAO+k2CbFYMPEEoa4cMIIBegYLKoZI
|
||||
// SIG // hvcNAQkQAgwxggFpMIIBZTCCAWEwFgQU+GCYGab7iCz3
|
||||
// SIG // 6FKX8qEZUhoWd18wgYcEFMauVOR4hvF8PVUSSIxpw0p6
|
||||
// SIG // +cLdMG8wW6RZMFcxCzAJBgNVBAYTAkdCMRgwFgYDVQQK
|
||||
// SIG // Ew9TZWN0aWdvIExpbWl0ZWQxLjAsBgNVBAMTJVNlY3Rp
|
||||
// SIG // Z28gUHVibGljIFRpbWUgU3RhbXBpbmcgUm9vdCBSNDYC
|
||||
// SIG // EHojrtpTaZYPkcg+XPTH4z8wgbwEFIU9Yy2TgoJhfNCQ
|
||||
// SIG // NcSR3pLBQtrHMIGjMIGOpIGLMIGIMQswCQYDVQQGEwJV
|
||||
// SIG // UzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML
|
||||
// SIG // SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJV
|
||||
// SIG // U1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJT
|
||||
// SIG // QSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQIQNsKwvXwb
|
||||
// SIG // Ouejs902y8l1aDANBgkqhkiG9w0BAQEFAASCAgBxUFm6
|
||||
// SIG // nqBA63gIGDvsjbju0zDn8k3VbRViuksmRyvSml1O6798
|
||||
// SIG // l2EJPDkBqgm3p/eEt/EgtHeTwW93h/lLptzb7pugqYvo
|
||||
// SIG // 9aK23Xj2YQ+bU3rwagpijCPoBmqJSd9ffNTQaDMLqovM
|
||||
// SIG // WzLyO/jOTsnTF5IDrTr6kgnS25YD6S/jx/TSd1m8lyDN
|
||||
// SIG // iz7WMikzWZ/ewMBzpeP151E+6mqEuMPQI084NQsChZRs
|
||||
// SIG // 6UQZE9Q8XxURuSip3pF9cCSjuKpx0j/f0DRwVJs9mixg
|
||||
// SIG // dxnfk2FeicezdWulBbODaJ/SHwee45knv3Xfy0FnQTfJ
|
||||
// SIG // 5L8byz7vbNz40oK1Fxf/XTz5XZmOSAB9ZV48RouMOipx
|
||||
// SIG // baHqkeFuG+I2BXNBZsqRMdUqIdcCMdh5FCZK7EfyKOvM
|
||||
// SIG // hkLRI8oLC0v+/hkNbRuAhSC2w8FsWiz37ZXy1toiMYfK
|
||||
// SIG // Wrdoif5RAiX+Ko2eFz20BqZeikzrRXXeTEOOg1hZjRan
|
||||
// SIG // qO6nmn5bIx/S7vS1VLCWOLHpBrddOn1wiIaoIL4PkgqE
|
||||
// SIG // Ie7lu6troEpC5xbOEZLcyQt44Nvb3VSoIKDKYWHLjS0K
|
||||
// SIG // 0e2tRTDeWQDqdnV2AR5DqdRTMFCNfW72DVZr4FC89VE8
|
||||
// SIG // etEMafQ73SE0yfQsEuWRwsuOkArQoo+Pti3vpJhNmYe6
|
||||
// SIG // CjryNuxWeB56H5GIdw==
|
||||
// SIG // End signature block
|
||||
401
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/Scripts/Power.js
Normal file
401
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/Scripts/Power.js
Normal file
@ -0,0 +1,401 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2010 All Rights Reserved.
|
||||
//
|
||||
// Contents: Demonstrate the PowerOperation COM interface.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
var info = new ActiveXObject("Intel.Manageability.ConnectionInfo");
|
||||
if (typeof (info) != undefined)
|
||||
{
|
||||
info.Host = "10.0.0.15";
|
||||
info.UserName = "admin";
|
||||
info.Password = "Admin!98";
|
||||
var PowerState = { "Unknown": 0, "On": 1, "S0": 1, "S3": 2, " StandBy": 2, "Hibernate": 3, "S4": 3, "Off": 4, "S5": 4, "Unexpected": 5 }
|
||||
|
||||
var amt = new ActiveXObject("Intel.Manageability.COM.AMTInstance");
|
||||
if (typeof (amt) != undefined)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.Create(info);
|
||||
|
||||
//Get current power state
|
||||
var pState = amt.Power.CurrentPowerState();
|
||||
alert("Current state: " + pState + "</br>");
|
||||
|
||||
//Power down
|
||||
amt.Power.PowerDown();
|
||||
|
||||
}
|
||||
catch (Error)
|
||||
{
|
||||
alert(Error.Message);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("Failed to perform Power call");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("Failed to initialize ConnectionInfo object");
|
||||
}
|
||||
// SIG // Begin signature block
|
||||
// SIG // MIItiQYJKoZIhvcNAQcCoIItejCCLXYCAQExDzANBglg
|
||||
// SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor
|
||||
// SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC
|
||||
// SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg
|
||||
// SIG // 7vC9T+SmU5MfK6uKdKqAHdMKJ5I3DB1cZqAKLnSket2g
|
||||
// SIG // ghF+MIIFbzCCBFegAwIBAgIQSPyTtGBVlI02p8mKidaU
|
||||
// SIG // FjANBgkqhkiG9w0BAQwFADB7MQswCQYDVQQGEwJHQjEb
|
||||
// SIG // MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
|
||||
// SIG // VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
||||
// SIG // TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRl
|
||||
// SIG // IFNlcnZpY2VzMB4XDTIxMDUyNTAwMDAwMFoXDTI4MTIz
|
||||
// SIG // MTIzNTk1OVowVjELMAkGA1UEBhMCR0IxGDAWBgNVBAoT
|
||||
// SIG // D1NlY3RpZ28gTGltaXRlZDEtMCsGA1UEAxMkU2VjdGln
|
||||
// SIG // byBQdWJsaWMgQ29kZSBTaWduaW5nIFJvb3QgUjQ2MIIC
|
||||
// SIG // IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjeeU
|
||||
// SIG // EiIEJHQu/xYjApKKtq42haxH1CORKz7cfeIxoFFvrISR
|
||||
// SIG // 41KKteKW3tCHYySJiv/vEpM7fbu2ir29BX8nm2tl06UM
|
||||
// SIG // abG8STma8W1uquSggyfamg0rUOlLW7O4ZDakfko9qXGr
|
||||
// SIG // YbNzszwLDO/bM1flvjQ345cbXf0fEj2CA3bm+z9m0pQx
|
||||
// SIG // afptszSswXp43JJQ8mTHqi0Eq8Nq6uAvp6fcbtfo/9oh
|
||||
// SIG // q0C/ue4NnsbZnpnvxt4fqQx2sycgoda6/YDnAdLv64Ip
|
||||
// SIG // lXCN/7sVz/7RDzaiLk8ykHRGa0c1E3cFM09jLrgt4b9l
|
||||
// SIG // pwRrGNhx+swI8m2JmRCxrds+LOSqGLDGBwF1Z95t6WNj
|
||||
// SIG // HjZ/aYm+qkU+blpfj6Fby50whjDoA7NAxg0POM1nqFOI
|
||||
// SIG // +rgwZfpvx+cdsYN0aT6sxGg7seZnM5q2COCABUhA7vaC
|
||||
// SIG // ZEao9XOwBpXybGWfv1VbHJxXGsd4RnxwqpQbghesh+m2
|
||||
// SIG // yQ6BHEDWFhcp/FycGCvqRfXvvdVnTyheBe6QTHrnxvTQ
|
||||
// SIG // /PrNPjJGEyA2igTqt6oHRpwNkzoJZplYXCmjuQymMDg8
|
||||
// SIG // 0EY2NXycuu7D1fkKdvp+BRtAypI16dV60bV/AK6pkKrF
|
||||
// SIG // fwGcELEW/MxuGNxvYv6mUKe4e7idFT/+IAx1yCJaE5UZ
|
||||
// SIG // kADpGtXChvHjjuxf9OUCAwEAAaOCARIwggEOMB8GA1Ud
|
||||
// SIG // IwQYMBaAFKARCiM+lvEH7OKvKe+CpX/QMKS0MB0GA1Ud
|
||||
// SIG // DgQWBBQy65Ka/zWWSC8oQEJwIDaRXBeF5jAOBgNVHQ8B
|
||||
// SIG // Af8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zATBgNVHSUE
|
||||
// SIG // DDAKBggrBgEFBQcDAzAbBgNVHSAEFDASMAYGBFUdIAAw
|
||||
// SIG // CAYGZ4EMAQQBMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6
|
||||
// SIG // Ly9jcmwuY29tb2RvY2EuY29tL0FBQUNlcnRpZmljYXRl
|
||||
// SIG // U2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr
|
||||
// SIG // BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29t
|
||||
// SIG // MA0GCSqGSIb3DQEBDAUAA4IBAQASv6Hvi3SamES4aUa1
|
||||
// SIG // qyQKDKSKZ7g6gb9Fin1SB6iNH04hhTmja14tIIa/ELiu
|
||||
// SIG // eTtTzbT72ES+BtlcY2fUQBaHRIZyKtYyFfUSg8L54V0R
|
||||
// SIG // QGf2QidyxSPiAjgaTCDi2wH3zUZPJqJ8ZsBRNraJAlTH
|
||||
// SIG // /Fj7bADu/pimLpWhDFMpH2/YGaZPnvesCepdgsaLr4Cn
|
||||
// SIG // vYFIUoQx2jLsFeSmTD1sOXPUC4U5IOCFGmjhp0g4qdE2
|
||||
// SIG // JXfBjRkWxYhMZn0vY86Y6GnfrDyoXZ3JHFuu2PMvdM+4
|
||||
// SIG // fvbXg50RlmKarkUT2n/cR/vfw1Kf5gZV6Z2M8jpiUbzs
|
||||
// SIG // JA8p1FiAhORFe1rYMIIF6TCCBFGgAwIBAgIRAP5c1JUB
|
||||
// SIG // imUXpNBO+HtrkzowDQYJKoZIhvcNAQEMBQAwVDELMAkG
|
||||
// SIG // A1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRl
|
||||
// SIG // ZDErMCkGA1UEAxMiU2VjdGlnbyBQdWJsaWMgQ29kZSBT
|
||||
// SIG // aWduaW5nIENBIFIzNjAeFw0yNDAzMTMwMDAwMDBaFw0y
|
||||
// SIG // NTAzMTMyMzU5NTlaMFoxCzAJBgNVBAYTAlVTMRMwEQYD
|
||||
// SIG // VQQIDApDYWxpZm9ybmlhMRowGAYDVQQKDBFJbnRlbCBD
|
||||
// SIG // b3Jwb3JhdGlvbjEaMBgGA1UEAwwRSW50ZWwgQ29ycG9y
|
||||
// SIG // YXRpb24wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGK
|
||||
// SIG // AoIBgQCOvQs9ebKrmAXTOWV54xQTZ76syOFlIGkPz4wS
|
||||
// SIG // qINrfyJEgclyvtytZuAsELU4KqTAg9fdxNwP8Qx5llRL
|
||||
// SIG // 6QilAfsXPHP/BROk8pqyCgP9FB+41XrC4AqNAMXzNHZH
|
||||
// SIG // Kq7yyr53IbHnpHWjNm/hONTUowIYVoBqdS6E2cqwDiTa
|
||||
// SIG // RrDyH4AP9PiekQhAofQQEW1wkVwJ807j7Vg13ypTsEmu
|
||||
// SIG // PqNrSTO0zzQC0yUix6GW731DqYDoftJVsePYYpqFupXw
|
||||
// SIG // 7eXGQzzk/MDcKXeQ1sAfDIcy3zRKW70f/ObPEj/3Vkaw
|
||||
// SIG // FZEkcUtcKiGWvTrMQ/q4wQSHvCQ0dWPYYxgVCsmzAGN9
|
||||
// SIG // D6fKw6RXh9WGtQPIDXmnvCkUpWnK6MqMYUb4i/Z/JwmS
|
||||
// SIG // IYqi+kNELvXCRsJWIi/ZgDEclTyNwR39LOq+gUarfMgW
|
||||
// SIG // D/9nbIHOM/WFfQxiVGis9pI8LndTiWbqRQ2YqPrIc2zv
|
||||
// SIG // 4e/IiUkIjFR4DFRRFTmRRERN3VUhBbFnTwMCAwEAAaOC
|
||||
// SIG // Aa4wggGqMB8GA1UdIwQYMBaAFA8qyyCHKLjsb0iuK1Sm
|
||||
// SIG // KaoXpM0MMB0GA1UdDgQWBBQo7T1qfzp1FOdWlwIgcHEP
|
||||
// SIG // 4L2HxjAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIw
|
||||
// SIG // ADATBgNVHSUEDDAKBggrBgEFBQcDAzBKBgNVHSAEQzBB
|
||||
// SIG // MDUGDCsGAQQBsjEBAgEDAjAlMCMGCCsGAQUFBwIBFhdo
|
||||
// SIG // dHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBBAEw
|
||||
// SIG // SQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybC5zZWN0
|
||||
// SIG // aWdvLmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdD
|
||||
// SIG // QVIzNi5jcmwweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUF
|
||||
// SIG // BzAChjhodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3Rp
|
||||
// SIG // Z29QdWJsaWNDb2RlU2lnbmluZ0NBUjM2LmNydDAjBggr
|
||||
// SIG // BgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20w
|
||||
// SIG // IwYDVR0RBBwwGoEYcGtpZW5naW5lZXJpbmdAaW50ZWwu
|
||||
// SIG // Y29tMA0GCSqGSIb3DQEBDAUAA4IBgQAdNVhldXFo7Uwk
|
||||
// SIG // BpDbQ0aZktPDblIrNRdvtHMCK5NnWPLVyomeUbLqZASl
|
||||
// SIG // n6YzUh3Vu/Q71QqLQW8kWFHQ0nhZEPI0T5vr5c8hYUVr
|
||||
// SIG // luKkmHCJceqomqRmRBbL5hBFzJ8BvcxBHirGJZzP2UiN
|
||||
// SIG // t7i2Ql8oScd+Rtj6Qa97TMpuoCL7WuQ5peEv1xCSSP2b
|
||||
// SIG // yCoTzuUFHpgktO0vUDe0jinhJJNS3VdXHAgTbUaQM5hl
|
||||
// SIG // a+ImEuKW1a/MorIWHtuU0gD3lhMvT2BDJ42W0EEvJQ/F
|
||||
// SIG // xQeoH4kySxQgsyCrB8zCJPhbiZcFZauHnP1q8dPn6VXq
|
||||
// SIG // NkjyWSP4hPNoLQ+aMsKLaawuOzHb1ZXL23j2Jx6Caqkb
|
||||
// SIG // Z4V/hOo5RkbZ4VAj1fgbEUnKeL/AyFCRnVeQM0ua2Lt2
|
||||
// SIG // ISRgyYE4DxrwbZr2j3ibcXCs11JzKT7Wp7iYFt6NbnEq
|
||||
// SIG // PUim/XTahXC3DlFQ9pQ44fOWdGpyaJvduMYVZuHBjVkh
|
||||
// SIG // e2s/HFQOsx/0XOgwggYaMIIEAqADAgECAhBiHW0MUgGe
|
||||
// SIG // O5B5FSCJIRwKMA0GCSqGSIb3DQEBDAUAMFYxCzAJBgNV
|
||||
// SIG // BAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQx
|
||||
// SIG // LTArBgNVBAMTJFNlY3RpZ28gUHVibGljIENvZGUgU2ln
|
||||
// SIG // bmluZyBSb290IFI0NjAeFw0yMTAzMjIwMDAwMDBaFw0z
|
||||
// SIG // NjAzMjEyMzU5NTlaMFQxCzAJBgNVBAYTAkdCMRgwFgYD
|
||||
// SIG // VQQKEw9TZWN0aWdvIExpbWl0ZWQxKzApBgNVBAMTIlNl
|
||||
// SIG // Y3RpZ28gUHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYw
|
||||
// SIG // ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCb
|
||||
// SIG // K51T+jU/jmAGQ2rAz/V/9shTUxjIztNsfvxYB5UXeWUz
|
||||
// SIG // CxEeAEZGbEN4QMgCsJLZUKhWThj/yPqy0iSZhXkZ6Pg2
|
||||
// SIG // A2NVDgFigOMYzB2OKhdqfWGVoYW3haT29PSTahYkwmMv
|
||||
// SIG // 0b/83nbeECbiMXhSOtbam+/36F09fy1tsB8je/RV0mIk
|
||||
// SIG // 8XL/tfCK6cPuYHE215wzrK0h1SWHTxPbPuYkRdkP05Zw
|
||||
// SIG // mRmTnAO5/arnY83jeNzhP06ShdnRqtZlV59+8yv+KIhE
|
||||
// SIG // 5ILMqgOZYAENHNX9SJDm+qxp4VqpB3MV/h53yl41aHU5
|
||||
// SIG // pledi9lCBbH9JeIkNFICiVHNkRmq4TpxtwfvjsUedyz8
|
||||
// SIG // rNyfQJy/aOs5b4s+ac7IH60B+Ja7TVM+EKv1WuTGwcLm
|
||||
// SIG // oU3FpOFMbmPj8pz44MPZ1f9+YEQIQty/NQd/2yGgW+uf
|
||||
// SIG // flcZ/ZE9o1M7a5Jnqf2i2/uMSWymR8r2oQBMdlyh2n5H
|
||||
// SIG // irY4jKnFH/9gRvd+QOfdRrJZb1sCAwEAAaOCAWQwggFg
|
||||
// SIG // MB8GA1UdIwQYMBaAFDLrkpr/NZZILyhAQnAgNpFcF4Xm
|
||||
// SIG // MB0GA1UdDgQWBBQPKssghyi47G9IritUpimqF6TNDDAO
|
||||
// SIG // BgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIB
|
||||
// SIG // ADATBgNVHSUEDDAKBggrBgEFBQcDAzAbBgNVHSAEFDAS
|
||||
// SIG // MAYGBFUdIAAwCAYGZ4EMAQQBMEsGA1UdHwREMEIwQKA+
|
||||
// SIG // oDyGOmh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
|
||||
// SIG // b1B1YmxpY0NvZGVTaWduaW5nUm9vdFI0Ni5jcmwwewYI
|
||||
// SIG // KwYBBQUHAQEEbzBtMEYGCCsGAQUFBzAChjpodHRwOi8v
|
||||
// SIG // Y3J0LnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNDb2Rl
|
||||
// SIG // U2lnbmluZ1Jvb3RSNDYucDdjMCMGCCsGAQUFBzABhhdo
|
||||
// SIG // dHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0B
|
||||
// SIG // AQwFAAOCAgEABv+C4XdjNm57oRUgmxP/BP6YdURhw1aV
|
||||
// SIG // cdGRP4Wh60BAscjW4HL9hcpkOTz5jUug2oeunbYAowbF
|
||||
// SIG // C2AKK+cMcXIBD0ZdOaWTsyNyBBsMLHqafvIhrCymlaS9
|
||||
// SIG // 8+QpoBCyKppP0OcxYEdU0hpsaqBBIZOtBajjcw5+w/Ke
|
||||
// SIG // FvPYfLF/ldYpmlG+vd0xqlqd099iChnyIMvY5HexjO2A
|
||||
// SIG // mtsbpVn0OhNcWbWDRF/3sBp6fWXhz7DcML4iTAWS+MVX
|
||||
// SIG // eNLj1lJziVKEoroGs9Mlizg0bUMbOalOhOfCipnx8CaL
|
||||
// SIG // ZeVme5yELg09Jlo8BMe80jO37PU8ejfkP9/uPak7VLwE
|
||||
// SIG // LKxAMcJszkyeiaerlphwoKx1uHRzNyE6bxuSKcutisqm
|
||||
// SIG // KL5OTunAvtONEoteSiabkPVSZ2z76mKnzAfZxCl/3dq3
|
||||
// SIG // dUNw4rg3sTCggkHSRqTqlLMS7gjrhTqBmzu1L90Y1KWN
|
||||
// SIG // /Y5JKdGvspbOrTfOXyXvmPL6E52z1NZJ6ctuMFBQZH3p
|
||||
// SIG // wWvqURR8AgQdULUvrxjUYbHHj95Ejza63zdrEcxWLDX6
|
||||
// SIG // xWls/GDnVNueKjWUH3fTv1Y8Wdho698YADR7TNx8X8z2
|
||||
// SIG // Bev6SivBBOHY+uqiirZtg0y9ShQoPzmCcn63Syatatvx
|
||||
// SIG // 157YK9hlcPmVoa1oDE5/L9Uo2bC5a4CH2RwxghtjMIIb
|
||||
// SIG // XwIBATBpMFQxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9T
|
||||
// SIG // ZWN0aWdvIExpbWl0ZWQxKzApBgNVBAMTIlNlY3RpZ28g
|
||||
// SIG // UHVibGljIENvZGUgU2lnbmluZyBDQSBSMzYCEQD+XNSV
|
||||
// SIG // AYplF6TQTvh7a5M6MA0GCWCGSAFlAwQCAQUAoHwwEAYK
|
||||
// SIG // KwYBBAGCNwIBDDECMAAwGQYJKoZIhvcNAQkDMQwGCisG
|
||||
// SIG // AQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQB
|
||||
// SIG // gjcCARUwLwYJKoZIhvcNAQkEMSIEIH/NDvOEuA7+4mWU
|
||||
// SIG // idDsJ4F5pqmhQdGAfIP1VICq7o8BMA0GCSqGSIb3DQEB
|
||||
// SIG // AQUABIIBgGRJ2oh/K3chxJSxTIZYD2S969tnl7j44N7v
|
||||
// SIG // 0QtU9//OzOkIaTi+AovDE1Kn0CrFxy9sMMhq62YagmA7
|
||||
// SIG // 5Fm52SB7ZwI5ObjpngRDuaG48uhaEi4rse48PnEgv1x7
|
||||
// SIG // 24KMtvhXny6noQ+vpJrfnZvKovEbfAVoew3aD0CZC5wk
|
||||
// SIG // ICTJM8W6VfWN1AZeJN2ekGAcsCEx7TsATE4JoKML8SlB
|
||||
// SIG // q6q6tcAsE1qK0k1+wTIHA08t8JIesqnW3JBIWb0qi6eo
|
||||
// SIG // hunvf1v7EctnjFbU5jzyvTk6mvQp1EJp6YO0oPqhjMA+
|
||||
// SIG // 0tAk/cufxtF2c69awZ6eYPBY5njqrhwNLrHPLWpHdZJl
|
||||
// SIG // XskfvzkU/3tQI0/xY1RxKRwuwlRsczPaXYYilcERAnXR
|
||||
// SIG // N1nP2grpuEqrGJo1uTOD6/shXyn0iOBZM3DZ7yj7I1Kp
|
||||
// SIG // 0JQEC0TbmZS+UL4LX6nGEn+L2xT/e0DWXHxm+QJgkiWY
|
||||
// SIG // aM04sppUOPj6XjJn2DtCDCLPWj9za4sAp3IrtaGCGM0w
|
||||
// SIG // ghjJBgorBgEEAYI3AwMBMYIYuTCCGLUGCSqGSIb3DQEH
|
||||
// SIG // AqCCGKYwghiiAgEDMQ8wDQYJYIZIAWUDBAICBQAwgfMG
|
||||
// SIG // CyqGSIb3DQEJEAEEoIHjBIHgMIHdAgEBBgorBgEEAbIx
|
||||
// SIG // AgEBMDEwDQYJYIZIAWUDBAIBBQAEIOp4RqzYlhaj8LZI
|
||||
// SIG // DMJ1tnrYQZmDX5/ZdJSPd30e4OgFAhQOsTKqJ/FpsgAg
|
||||
// SIG // E1HA8XqJSP3LxhgPMjAyNTAxMjcxOTAxNThaoHKkcDBu
|
||||
// SIG // MQswCQYDVQQGEwJHQjETMBEGA1UECBMKTWFuY2hlc3Rl
|
||||
// SIG // cjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTAwLgYD
|
||||
// SIG // VQQDEydTZWN0aWdvIFB1YmxpYyBUaW1lIFN0YW1waW5n
|
||||
// SIG // IFNpZ25lciBSMzWgghL/MIIGXTCCBMWgAwIBAgIQOlJq
|
||||
// SIG // LITOVeYdZfzMEtjpiTANBgkqhkiG9w0BAQwFADBVMQsw
|
||||
// SIG // CQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1p
|
||||
// SIG // dGVkMSwwKgYDVQQDEyNTZWN0aWdvIFB1YmxpYyBUaW1l
|
||||
// SIG // IFN0YW1waW5nIENBIFIzNjAeFw0yNDAxMTUwMDAwMDBa
|
||||
// SIG // Fw0zNTA0MTQyMzU5NTlaMG4xCzAJBgNVBAYTAkdCMRMw
|
||||
// SIG // EQYDVQQIEwpNYW5jaGVzdGVyMRgwFgYDVQQKEw9TZWN0
|
||||
// SIG // aWdvIExpbWl0ZWQxMDAuBgNVBAMTJ1NlY3RpZ28gUHVi
|
||||
// SIG // bGljIFRpbWUgU3RhbXBpbmcgU2lnbmVyIFIzNTCCAiIw
|
||||
// SIG // DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAI3RZ/TB
|
||||
// SIG // SJu9/ThJOk1hgZvD2NxFpWEENo0GnuOYloD11BlbmKCG
|
||||
// SIG // tcY0xiMrsN7LlEgcyoshtP3P2J/vneZhuiMmspY7hk/Q
|
||||
// SIG // 3l0FPZPBllo9vwT6GpoNnxXLZz7HU2ITBsTNOs9fhbdA
|
||||
// SIG // Wr/Mm8MNtYov32osvjYYlDNfefnBajrQqSV8Wf5ZvbaY
|
||||
// SIG // 5lZhKqQJUaXxpi4TXZKohLgxU7g9RrFd477j7jxilCU2
|
||||
// SIG // ptz+d1OCzNFAsXgyPEM+NEMPUz2q+ktNlxMZXPF9WLIh
|
||||
// SIG // OhE3E8/oNSJkNTqhcBGsbDI/1qCU9fBhuSojZ0u5/1+I
|
||||
// SIG // jMG6AINyI6XLxM8OAGQmaMB8gs2IZxUTOD7jTFR2HE1x
|
||||
// SIG // oL7qvSO4+JHtvNceHu//dGeVm5Pdkay3Et+YTt9EwAXB
|
||||
// SIG // sd0PPmC0cuqNJNcOI0XnwjE+2+Zk8bauVz5ir7YHz7ml
|
||||
// SIG // j5Bmf7W8SJ8jQwO2IDoHHFC46ePg+eoNors0QrC0PWnO
|
||||
// SIG // gDeMkW6gmLBtq3CEOSDU8iNicwNsNb7ABz0W1E3qlSw7
|
||||
// SIG // jTmNoGCKCgVkLD2FaMs2qAVVOjuUxvmtWMn1pIFVUvZ1
|
||||
// SIG // yrPIVbYt1aTld2nrmh544Auh3tgggy/WluoLXlHtAJgv
|
||||
// SIG // FwrVsKXj8ekFt0TmaPL0lHvQEe5jHbufhc05lvCtdwbf
|
||||
// SIG // Bl/2ARSTuy1s8CgFAgMBAAGjggGOMIIBijAfBgNVHSME
|
||||
// SIG // GDAWgBRfWO1MMXqiYUKNUoC6s2GXGaIymzAdBgNVHQ4E
|
||||
// SIG // FgQUaO+kMklptlI4HepDOSz0FGqeDIUwDgYDVR0PAQH/
|
||||
// SIG // BAQDAgbAMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAww
|
||||
// SIG // CgYIKwYBBQUHAwgwSgYDVR0gBEMwQTA1BgwrBgEEAbIx
|
||||
// SIG // AQIBAwgwJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0
|
||||
// SIG // aWdvLmNvbS9DUFMwCAYGZ4EMAQQCMEoGA1UdHwRDMEEw
|
||||
// SIG // P6A9oDuGOWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2Vj
|
||||
// SIG // dGlnb1B1YmxpY1RpbWVTdGFtcGluZ0NBUjM2LmNybDB6
|
||||
// SIG // BggrBgEFBQcBAQRuMGwwRQYIKwYBBQUHMAKGOWh0dHA6
|
||||
// SIG // Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1B1YmxpY1Rp
|
||||
// SIG // bWVTdGFtcGluZ0NBUjM2LmNydDAjBggrBgEFBQcwAYYX
|
||||
// SIG // aHR0cDovL29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcN
|
||||
// SIG // AQEMBQADggGBALDcLsn6TzZMii/2yU/V7xhPH58Oxr/+
|
||||
// SIG // EnrZjpIyvYTz2u/zbL+fzB7lbrPml8ERajOVbudan6x0
|
||||
// SIG // 8J1RMXD9hByq+yEfpv1G+z2pmnln5XucfA9MfzLMrCAr
|
||||
// SIG // NNMbUjVcRcsAr18eeZeloN5V4jwrovDeLOdZl0tB7fOX
|
||||
// SIG // 5F6N2rmXaNTuJR8yS2F+EWaL5VVg+RH8FelXtRvVDLJZ
|
||||
// SIG // 5uqSNIckdGa/eUFhtDKTTz9LtOUh46v2JD5Q3nt8mDhA
|
||||
// SIG // jTKp2fo/KJ6FLWdKAvApGzjpPwDqFeJKf+kJdoBKd2zQ
|
||||
// SIG // uwzk5Wgph9uA46VYK8p/BTJJahKCuGdyKFIFfEfakC4N
|
||||
// SIG // Xa+vwY4IRp49lzQPLo7WticqMaaqb8hE2QmCFIyLOvWI
|
||||
// SIG // g4837bd+60FcCGbHwmL/g1ObIf0rRS9ceK4DY9rfBnHF
|
||||
// SIG // H2v1d4hRVvZXyCVlrL7ZQuVzjjkLMK9VJlXTVkHpuC8K
|
||||
// SIG // 5S4HHTv2AJx6mOdkMJwS4gLlJ7gXrIVpnxG+aIniGDCC
|
||||
// SIG // BhQwggP8oAMCAQICEHojrtpTaZYPkcg+XPTH4z8wDQYJ
|
||||
// SIG // KoZIhvcNAQEMBQAwVzELMAkGA1UEBhMCR0IxGDAWBgNV
|
||||
// SIG // BAoTD1NlY3RpZ28gTGltaXRlZDEuMCwGA1UEAxMlU2Vj
|
||||
// SIG // dGlnbyBQdWJsaWMgVGltZSBTdGFtcGluZyBSb290IFI0
|
||||
// SIG // NjAeFw0yMTAzMjIwMDAwMDBaFw0zNjAzMjEyMzU5NTla
|
||||
// SIG // MFUxCzAJBgNVBAYTAkdCMRgwFgYDVQQKEw9TZWN0aWdv
|
||||
// SIG // IExpbWl0ZWQxLDAqBgNVBAMTI1NlY3RpZ28gUHVibGlj
|
||||
// SIG // IFRpbWUgU3RhbXBpbmcgQ0EgUjM2MIIBojANBgkqhkiG
|
||||
// SIG // 9w0BAQEFAAOCAY8AMIIBigKCAYEAzZjYQ0GrboIr7PYz
|
||||
// SIG // fiY05ImM0+8iEoBUPu8mr4wOgYPjoiIz5vzf7d5wu8GF
|
||||
// SIG // K1JWN5hciN9rdqOhbdxLcSVwnOTJmUGfAMQm4eXOls3i
|
||||
// SIG // QwfapEFWuOsYmBKXPNSpwZAFoLGl5y1EaGGc5LByM8wj
|
||||
// SIG // cbSF52/Z42YaJRsPXY545E3QAPN2mxDh0OLozhiGgYT1
|
||||
// SIG // xtjXVfEzYBVmfQaI5QL35cTTAjsJAp85R+KAsOfuL9Z7
|
||||
// SIG // LFnjdcuPkZWjssMETFIueH69rxbFOUD64G+rUo7xFIdR
|
||||
// SIG // AuDNvWBsv0iGDPGaR2nZlY24tz5fISYk1sPY4gir99aX
|
||||
// SIG // AGnoo0vX3Okew4MsiyBn5ZnUDMKzUcQrpVavGacrIkmD
|
||||
// SIG // Yu/bcOUR1mVBIZ0X7P4bKf38JF7Mp7tY3LFF/h7hvBS2
|
||||
// SIG // tgTYXlD7TnIMPrxyXCfB5yQq3FFoXRXM3/DvqQ4shoVW
|
||||
// SIG // F/mwwz9xoRku05iphp22fTfjKRIVpm4gFT24JKspEpM8
|
||||
// SIG // mFa9eTgKWWCvAgMBAAGjggFcMIIBWDAfBgNVHSMEGDAW
|
||||
// SIG // gBT2d2rdP/0BE/8WoWyCAi/QCj0UJTAdBgNVHQ4EFgQU
|
||||
// SIG // X1jtTDF6omFCjVKAurNhlxmiMpswDgYDVR0PAQH/BAQD
|
||||
// SIG // AgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwEwYDVR0lBAww
|
||||
// SIG // CgYIKwYBBQUHAwgwEQYDVR0gBAowCDAGBgRVHSAAMEwG
|
||||
// SIG // A1UdHwRFMEMwQaA/oD2GO2h0dHA6Ly9jcmwuc2VjdGln
|
||||
// SIG // by5jb20vU2VjdGlnb1B1YmxpY1RpbWVTdGFtcGluZ1Jv
|
||||
// SIG // b3RSNDYuY3JsMHwGCCsGAQUFBwEBBHAwbjBHBggrBgEF
|
||||
// SIG // BQcwAoY7aHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0
|
||||
// SIG // aWdvUHVibGljVGltZVN0YW1waW5nUm9vdFI0Ni5wN2Mw
|
||||
// SIG // IwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28u
|
||||
// SIG // Y29tMA0GCSqGSIb3DQEBDAUAA4ICAQAS13sgrQ41WAye
|
||||
// SIG // gR0lWP1MLWd0r8diJiH2VVRpxqFGhnZbaF+IQ7JATGce
|
||||
// SIG // TWOS+kgnMAzGYRzpm8jIcjlSQ8JtcqymKhgx1s6cFZBS
|
||||
// SIG // fvfeoyigF8iCGlH+SVSo3HHr98NepjSFJTU5KSRKK+3n
|
||||
// SIG // VSWYkSVQgJlgGh3MPcz9IWN4I/n1qfDGzqHCPWZ+/Mb5
|
||||
// SIG // vVyhgaeqxLPbBIqv6cM74Nvyo1xNsllECJJrOvsrJQka
|
||||
// SIG // jVz4xJwZ8blAdX5umzwFfk7K/0K3fpjgiXpqNOpXaJ+K
|
||||
// SIG // SRW0HdE0FSDC7+ZKJJSJx78mn+rwEyT+A3z7Ss0gT5Cp
|
||||
// SIG // TrcmhUwIw9jbvnYuYRKxFVWjKklW3z83epDVzoWJttxF
|
||||
// SIG // pujdrNmRwh1YZVIB2guAAjEQoF42H0BA7WBCueHVMDyV
|
||||
// SIG // 1e4nM9K4As7PVSNvQ8LI1WRaTuGSFUd9y8F8jw22BZC6
|
||||
// SIG // mJoB40d7SlZIYfaildlgpgbgtu6SDsek2L8qomG57Yp5
|
||||
// SIG // qTqof0DwJ4Q4HsShvRl/59T4IJBovRwmqWafH0cIPEX7
|
||||
// SIG // cEttS5+tXrgRtMjjTOp6A9l0D6xcKZtxnLqiTH9KPCy6
|
||||
// SIG // xZEi0UDcMTww5Fl4VvoGbMG2oonuX3f1tsoHLaO/Fwkj
|
||||
// SIG // 3xVr3lDkmeUqivebQTvGkx5hGuJaSVQ+x60xJ/Y29RBr
|
||||
// SIG // 8Tm9XJ59AjCCBoIwggRqoAMCAQICEDbCsL18Gzrno7Pd
|
||||
// SIG // NsvJdWgwDQYJKoZIhvcNAQEMBQAwgYgxCzAJBgNVBAYT
|
||||
// SIG // AlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQH
|
||||
// SIG // EwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJU
|
||||
// SIG // UlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3Qg
|
||||
// SIG // UlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTIx
|
||||
// SIG // MDMyMjAwMDAwMFoXDTM4MDExODIzNTk1OVowVzELMAkG
|
||||
// SIG // A1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRl
|
||||
// SIG // ZDEuMCwGA1UEAxMlU2VjdGlnbyBQdWJsaWMgVGltZSBT
|
||||
// SIG // dGFtcGluZyBSb290IFI0NjCCAiIwDQYJKoZIhvcNAQEB
|
||||
// SIG // BQADggIPADCCAgoCggIBAIid2LlFZ50d3ei5JoGaVFTA
|
||||
// SIG // fEkFm8xaFQ/ZlBBEtEFAgXcUmanU5HYsyAhTXiDQkiUv
|
||||
// SIG // pVdYqZ1uYoZEMgtHES1l1Cc6HaqZzEbOOp6YiTx63ywT
|
||||
// SIG // on434aXVydmhx7Dx4IBrAou7hNGsKioIBPy5GMN7KmgY
|
||||
// SIG // muu4f92sKKjbxqohUSfjk1mJlAjthgF7Hjx4vvyVDQGs
|
||||
// SIG // d5KarLW5d73E3ThobSkob2SL48LpUR/O627pDchxll+b
|
||||
// SIG // TSv1gASn/hp6IuHJorEu6EopoB1CNFp/+HpTXeNARXUm
|
||||
// SIG // dRMKbnXWflq+/g36NJXB35ZvxQw6zid61qmrlD/IbKJA
|
||||
// SIG // 6COw/8lFSPQwBP1ityZdwuCysCKZ9ZjczMqbUcLFyq6K
|
||||
// SIG // dOpuzVDR3ZUwxDKL1wCAxgL2Mpz7eZbrb/JWXiOcNzDp
|
||||
// SIG // QsmwGQ6Stw8tTCqPumhLRPb7YkzM8/6NnWH3T9ClmcGS
|
||||
// SIG // F22LEyJYNWCHrQqYubNeKolzqUbCqhSqmr/UdUeb49zY
|
||||
// SIG // Hr7ALL8bAJyPDmubNqMtuaobKASBqP84uhqcRY/pjnYd
|
||||
// SIG // +V5/dcu9ieERjiRKKsxCG1t6tG9oj7liwPddXEcYGOUi
|
||||
// SIG // WLm742st50jGwTzxbMpepmOP1mLnJskvZaN5e45NuzAH
|
||||
// SIG // teORlsSuDt5t4BBRCJL+5EZnnw0ezntk9R8QJyAkL6/b
|
||||
// SIG // AgMBAAGjggEWMIIBEjAfBgNVHSMEGDAWgBRTeb9aqitK
|
||||
// SIG // z1SA4dibwJ3ysgNmyzAdBgNVHQ4EFgQU9ndq3T/9ARP/
|
||||
// SIG // FqFsggIv0Ao9FCUwDgYDVR0PAQH/BAQDAgGGMA8GA1Ud
|
||||
// SIG // EwEB/wQFMAMBAf8wEwYDVR0lBAwwCgYIKwYBBQUHAwgw
|
||||
// SIG // EQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBD
|
||||
// SIG // oEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VU0VS
|
||||
// SIG // VHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNy
|
||||
// SIG // bDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0
|
||||
// SIG // dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcN
|
||||
// SIG // AQEMBQADggIBAA6+ZUHtaES45aHF1BGH5Lc7JYzrftrI
|
||||
// SIG // F5Ht2PFDxKKFOct/awAEWgHQMVHol9ZLSyd/pYMbaC0I
|
||||
// SIG // Z+XBW9xhdkkmUV/KbUOiL7g98M/yzRyqUOZ1/IY7Ay0Y
|
||||
// SIG // bMniIibJrPcgFp73WDnRDKtVutShPSZQZAdtFwXnuiWl
|
||||
// SIG // 8eFARK3PmLqEm9UsVX+55DbVIz33Mbhba0HUTEYv3yJ1
|
||||
// SIG // fwKGxPBsP/MgTECimh7eXomvMm0/GPxX2uhwCcs/YLxD
|
||||
// SIG // nBdVVlxvDjHjO1cuwbOpkiJGHmLXXVNbsdXUC2xBrq9f
|
||||
// SIG // Lrfe8IBsA4hopwsCj8hTuwKXJlSTrZcPRVSccP5i9U28
|
||||
// SIG // gZ7OMzoJGlxZ5384OKm0r568Mo9TYrqzKeKZgFo0fj2/
|
||||
// SIG // 0iHbj55hc20jfxvK3mQi+H7xpbzxZOFGm/yVQkpo+ffv
|
||||
// SIG // 5gdhp+hv1GDsvJOtJinJmgGbBFZIThbqI+MHvAmMmkfb
|
||||
// SIG // 3fTxmSkop2mSJL1Y2x/955S29Gu0gSJIkc3z30vU/iXr
|
||||
// SIG // MpWx2tS7UVfVP+5tKuzGtgkP7d/doqDrLF1u6Ci3TpjA
|
||||
// SIG // ZdeLLlRQZm867eVeXED58LXd1Dk6UvaAhvmWYXoiLz4J
|
||||
// SIG // A5gPBcz7J311uahxCweNxE+xxxR3kT0WKzASo5G/PyDe
|
||||
// SIG // z6NHdIUKBeE3jDPs2ACc6CkJ1Sji4PKWVT0/MYIEkTCC
|
||||
// SIG // BI0CAQEwaTBVMQswCQYDVQQGEwJHQjEYMBYGA1UEChMP
|
||||
// SIG // U2VjdGlnbyBMaW1pdGVkMSwwKgYDVQQDEyNTZWN0aWdv
|
||||
// SIG // IFB1YmxpYyBUaW1lIFN0YW1waW5nIENBIFIzNgIQOlJq
|
||||
// SIG // LITOVeYdZfzMEtjpiTANBglghkgBZQMEAgIFAKCCAfkw
|
||||
// SIG // GgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqG
|
||||
// SIG // SIb3DQEJBTEPFw0yNTAxMjcxOTAxNThaMD8GCSqGSIb3
|
||||
// SIG // DQEJBDEyBDDKQzt33olgvJsppQUyFags4wyy3TSosnG7
|
||||
// SIG // dPBMIegkzN3hR1lghJsnp4hSSl9rOgkwggF6BgsqhkiG
|
||||
// SIG // 9w0BCRACDDGCAWkwggFlMIIBYTAWBBT4YJgZpvuILPfo
|
||||
// SIG // UpfyoRlSGhZ3XzCBhwQUxq5U5HiG8Xw9VRJIjGnDSnr5
|
||||
// SIG // wt0wbzBbpFkwVzELMAkGA1UEBhMCR0IxGDAWBgNVBAoT
|
||||
// SIG // D1NlY3RpZ28gTGltaXRlZDEuMCwGA1UEAxMlU2VjdGln
|
||||
// SIG // byBQdWJsaWMgVGltZSBTdGFtcGluZyBSb290IFI0NgIQ
|
||||
// SIG // eiOu2lNplg+RyD5c9MfjPzCBvAQUhT1jLZOCgmF80JA1
|
||||
// SIG // xJHeksFC2scwgaMwgY6kgYswgYgxCzAJBgNVBAYTAlVT
|
||||
// SIG // MRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtK
|
||||
// SIG // ZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVT
|
||||
// SIG // VCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNB
|
||||
// SIG // IENlcnRpZmljYXRpb24gQXV0aG9yaXR5AhA2wrC9fBs6
|
||||
// SIG // 56Oz3TbLyXVoMA0GCSqGSIb3DQEBAQUABIICAGxCt1WQ
|
||||
// SIG // vxif80+bVrhm9L+wIT7teW1o22YCmPI//wAVxmTP5grL
|
||||
// SIG // L/TVEm8kjUO/QkWMacjyQvObK6yki02IJeWeQmFBcnHV
|
||||
// SIG // xqOLmGb2C5DX/rBDXtObNuhJ+KORxmEoHTKx5zuY5/OB
|
||||
// SIG // Utcea+H3vXdVutmDrIEiWcAMerzBjvWU2EqoVKKSyciF
|
||||
// SIG // o9UohKkbNtvPgbsGnpFx88mFW+Rc1VLhAXXHeWVdfa74
|
||||
// SIG // eISMxfx/5TgyQonZUbBVUbo5nXp6HuQsk20pl5yfi8Qo
|
||||
// SIG // M5ZHUGvxXaxJNuQ5394YbSyyg63Kle/qK4TnEFG3LX2f
|
||||
// SIG // B/BI64nXRgB5qZMetAmGZDDOREEueTwav5llpygkF5a+
|
||||
// SIG // zqB1HMQrLA174zY5XaADDMjcmwxqotiwDN7qO3bscaxp
|
||||
// SIG // u0ezIYybV73Bih3Iqe8mmpjOZY2qtm5voEOPgG5wNaf2
|
||||
// SIG // gtwcdbv84g+x9Q+REX8hKo1fADmboKvJ5NujpGS2CD0v
|
||||
// SIG // nbqC/eMf+x6yABSuhn19hYhyzakt4qN4cwoYlkS00iov
|
||||
// SIG // eTMELIkiEBhaR8mNKb8Ugqr+snJ0ud1VokRiFFBL1Jm8
|
||||
// SIG // BCX6vFyczkc4MhH1Qq9osYeW8jCAo9DJZ/KOrlkzZrfO
|
||||
// SIG // XjlvedFwYqOyBQNlDiTAyINAoMeNh/nV8HotFkM19stj
|
||||
// SIG // F6clWNxZI6hCFX9i
|
||||
// SIG // End signature block
|
||||
@ -0,0 +1,229 @@
|
||||
<!-- //----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2010 All Rights Reserved.
|
||||
//
|
||||
// Contents: Demonstrate the Redirection COM interface.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
-->
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" >
|
||||
<head>
|
||||
<title>Redirection COM interface </title>
|
||||
<style type="text/css">
|
||||
#Button1
|
||||
{
|
||||
height: 31px;
|
||||
width: 147px;
|
||||
}
|
||||
#PowerDown
|
||||
{
|
||||
width: 101px;
|
||||
background-color: #FFFFFF;
|
||||
font-weight: 700;
|
||||
color: #3366CC;
|
||||
}
|
||||
#PowerUp
|
||||
{
|
||||
width: 108px;
|
||||
background-color: #FFFFFF;
|
||||
color: #3366CC;
|
||||
font-weight: 700;
|
||||
}
|
||||
.style1
|
||||
{
|
||||
font-size: medium;
|
||||
}
|
||||
.style2
|
||||
{
|
||||
text-align: center;
|
||||
height: 363px;
|
||||
}
|
||||
.style3
|
||||
{
|
||||
text-align: center;
|
||||
font-family: Calibri;
|
||||
font-size: medium;
|
||||
}
|
||||
.style4
|
||||
{
|
||||
font-family: Calibri;
|
||||
font-size: medium;
|
||||
}
|
||||
</style>
|
||||
<!-- The AMT instance must be defined as global to register to the redirection events -->
|
||||
<script language="javascript" type="text/javascript">
|
||||
var amt = new ActiveXObject("Intel.Manageability.COM.AMTInstance");
|
||||
</script>
|
||||
<script language="javascript" type="text/javascript">
|
||||
// <![CDATA[
|
||||
function SOLSession_onclick()
|
||||
{
|
||||
var info = new ActiveXObject("Intel.Manageability.ConnectionInfo");
|
||||
var SolStatus = { "Alive": 0, "Closed": 1, "Dropped": 2, "Data Availiable":3 }
|
||||
if (typeof (info) != undefined)
|
||||
{
|
||||
info.Host = Host.value;
|
||||
info.UserName = UserName.value;
|
||||
info.Password = Password.value;
|
||||
if (typeof (amt) != undefined)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.Create(info);
|
||||
|
||||
// Move the interface to TRUE
|
||||
amt.RedirectionSOL.SetInterfaceState(true);
|
||||
|
||||
//Get interface state
|
||||
IGet = amt.RedirectionSOL.GetInterfaceState();
|
||||
alert("The current interface state is: " + IGet);
|
||||
|
||||
//Get current session state
|
||||
CSession = amt.RedirectionSOL.CurrentSessionState;
|
||||
alert("Session state is: "+CSession);
|
||||
|
||||
//Start session
|
||||
amt.RedirectionSOL.StartSOL();
|
||||
|
||||
//Need to wait for the event to raise
|
||||
|
||||
//Stop session
|
||||
amt.RedirectionSOL.StopSOL();
|
||||
|
||||
}
|
||||
catch (Error)
|
||||
{
|
||||
alert(Error.Message);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("Interface undefined - failed");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("SOL Interface test failed");
|
||||
}
|
||||
}
|
||||
function IDERSession_onclick()
|
||||
{
|
||||
Cd = "c:\\iso.iso";
|
||||
Floppy = "c:\\img.img";
|
||||
var EredirectState = { "IDER_SET_ONRESET": 0, "IDER_SET_GRACEFULLY": 1, "IDER_SET_IMMEDIATELY": 2 }
|
||||
var hlaTimeout = new ActiveXObject("Intel.Manageability.Redirection.IDERTimeouts");
|
||||
var hlaStatistic = new ActiveXObject("Intel.Manageability.Redirection.IDERStatistics");
|
||||
try
|
||||
{
|
||||
hlaTimeout.RxTimeout = 15000;
|
||||
hlaTimeout.TxTimeout = 17000;
|
||||
hlaTimeout.HBTimeout = 25000;
|
||||
}
|
||||
catch (Error)
|
||||
{
|
||||
alert(Error.description);
|
||||
}
|
||||
var info = new ActiveXObject("Intel.Manageability.ConnectionInfo");
|
||||
if (typeof (info) != undefined)
|
||||
{
|
||||
info.Host = Host.value;
|
||||
info.UserName = UserName.value;
|
||||
info.Password = Password.value;
|
||||
|
||||
if (typeof (amt) != undefined)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.Create(info);
|
||||
//Set interface state to TRUE
|
||||
amt.RedirectionIDER.SetInterfaceState(true);
|
||||
|
||||
//Get interface state
|
||||
IGet = amt.RedirectionIDER.GetInterfaceState;
|
||||
alert("The current interface state is: " + IGet);
|
||||
|
||||
//Get current session state
|
||||
CSession = amt.RedirectionIDER.CurrentSessionState;
|
||||
alert("Session state is: "+CSession);
|
||||
|
||||
//Start session
|
||||
amt.RedirectionIDER.StartIDERWithTimeoutAndState(Cd, Floppy, hlaTimeout, EredirectState.IDER_SET_IMMEDIATELY);
|
||||
|
||||
//Get Statistic
|
||||
IDERStatistic = amt.RedirectionIDER.GetStatistics();
|
||||
document.write("ErrorState: " + IDERStatistic.ErrorState + "</br>");
|
||||
document.write("DataTransfer: " + IDERStatistic.DataTransfer + "</br>");
|
||||
|
||||
//Stop session
|
||||
amt.RedirectionIDER.StopIDER();
|
||||
|
||||
|
||||
}
|
||||
catch (Error)
|
||||
{
|
||||
alert(Error.Message);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("Interface undefined - failed");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("SOL Interface test failed");
|
||||
}
|
||||
}
|
||||
function amt::OnSOLStatusChange(a,e) {
|
||||
alert("The session status changed to: " + e.state);
|
||||
}
|
||||
function amt::OnIDERStatusChange(a,e) {
|
||||
alert("The session status changed to: " + e.state);
|
||||
}
|
||||
// ]]>
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body style="background-color: #003366" background="background.bmp">
|
||||
<div class="style2">
|
||||
|
||||
|
||||
<center>
|
||||
<table style="height: 252px; font-family: Calibri; font-weight: 700">
|
||||
<tr>
|
||||
<td style="color: #FFFFFF">
|
||||
<span class="style1">Host Name: </span>
|
||||
<input id="Host" type="text" class="style1" /><span class="style1"> </span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="color: #FFFFFF">
|
||||
<span class="style1">User Name: </span>
|
||||
<input id="UserName" type="text" class="style1" /><span class="style1"> </span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td style="color: #FFFFFF">
|
||||
<span class="style1">Password: </span>
|
||||
<input id="Password" type="password" class="style1" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
<span class="style4"> </span><br class="style4" />
|
||||
<span class="style1">
|
||||
<input id="SOLSession" type="button" value="SOL Session"
|
||||
onclick="return SOLSession_onclick()" class="style3" /></span><span
|
||||
class="style4"> </span>
|
||||
<input id="IDERSession" type="button" value="IDER Session"
|
||||
onclick="return IDERSession_onclick()" class="style3" /></span><span
|
||||
class="style4"> </span>
|
||||
<p>
|
||||
<marquee loop="-1" scrollamount="5" width="100%"
|
||||
|
||||
style="color: #FFFFFF; font-family: 'MV Boli'; font-size: x-large; font-weight: 700; height: 35px;">This script demonstrate the Intel High Level API COM Interface :)</marquee></p>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
11
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/UnRegHLAPI.bat
Normal file
11
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/UnRegHLAPI.bat
Normal file
@ -0,0 +1,11 @@
|
||||
ECHO.
|
||||
ECHO ****************************************************
|
||||
ECHO Register IWSManClient.dll
|
||||
ECHO ****************************************************
|
||||
call "C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm" "IWSManClient.dll" /u
|
||||
|
||||
ECHO.
|
||||
ECHO ****************************************************
|
||||
ECHO Register HLAPI.dll
|
||||
ECHO ****************************************************
|
||||
call "C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm" "HLAPI.dll" /u
|
||||
BIN
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/WebStorage.dll
Normal file
BIN
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/WebStorage.dll
Normal file
Binary file not shown.
BIN
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/imrsdk.dll
Normal file
BIN
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/imrsdk.dll
Normal file
Binary file not shown.
BIN
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/imrsdk_x64.dll
Normal file
BIN
backend/amt-sdk-20-0-0-1/HLAPI_Module/Bin/imrsdk_x64.dll
Normal file
Binary file not shown.
74
backend/amt-sdk-20-0-0-1/HLAPI_Module/Docs/HLAPI Readme.txt
Normal file
74
backend/amt-sdk-20-0-0-1/HLAPI_Module/Docs/HLAPI Readme.txt
Normal file
@ -0,0 +1,74 @@
|
||||
Copyright (C) 2007 Intel Corporation
|
||||
|
||||
Intel(R) Active Management Technology (Intel AMT):
|
||||
A brief overview of the Intel AMT® High-level API module
|
||||
|
||||
Introduction:
|
||||
-------------
|
||||
The Intel AMT® High Level Application Programming Interface (HLAPI) provides
|
||||
software developers with a simple interface to the Intel AMT features. This zip
|
||||
includes the HLAPI library, and the HLAPI samples. The HLAPI is using other AMT
|
||||
SDK compiled libraries, which are also included in this zip. Their sources can
|
||||
be found in separate zip folders in the AMT SDK kit.
|
||||
|
||||
Note: Once an object in this library is given a reference to a SecureString
|
||||
password that object becomes that password instance's owner and shouldn't
|
||||
be changed, disposed or given to another object. If the same password is
|
||||
needed by more than one object use the SecureString.Copy method.
|
||||
|
||||
More info about the HLAPI Library and HLAPI samples can be found here:
|
||||
https://software.intel.com/sites/manageability/HLAPI_Documentation/default.htm
|
||||
|
||||
The zip includes:
|
||||
1) Bin folder:
|
||||
a) HLAPI compiled library: HLAPI.dll
|
||||
b) Other AMT SDK compiled libraries (referenced by HLAPI code):
|
||||
*DotNetWSManClient.dll
|
||||
*imrsdk.dll
|
||||
*imrsdk_x64.dll
|
||||
*Intel.Wsman.Scripting.dll
|
||||
*IWSManClient.dll
|
||||
*WebStorage.dll
|
||||
c) Scripts folder: Containing JavaScript scripts.
|
||||
For more info, see Src\Scripts\HlapiScriptsReadme.txt
|
||||
|
||||
2) Src folder:
|
||||
a) Intel_Manageability_Library folder contains C# code for the
|
||||
HLAPI.dll
|
||||
b) HLAPI_Samples folder contains C# code for the HLAPI samples.
|
||||
Each sample has a VS project, which can be compiled to an .exe file.
|
||||
All samples' projects are included into one solution:
|
||||
HLAPI Samples.sln
|
||||
|
||||
|
||||
How to Build:
|
||||
-------------
|
||||
|
||||
In order to compile the HLAPI library:
|
||||
1) Use Visual Studio and the latest windows SDK toolkit.
|
||||
2) Open solution from this path:
|
||||
Src\Intel_Manageability_Library.sln
|
||||
3) Invoke build from the Visual Studio menu.
|
||||
|
||||
In order to run a sample:
|
||||
|
||||
Note: To ensure that security is maintained, the samples should be run from a directory that can be accessed
|
||||
only by the Administrator user. This is to prevent unauthorized manipulation of files in the directory.
|
||||
|
||||
1) Open HLAPI Samples.sln in Visual Studio.
|
||||
2) Right click on the project of the sample you want to run, and select
|
||||
"Set as StartUp Project".
|
||||
3) In Common\SampleArgs.json, fill the ConnectionInfoEx settings with your
|
||||
AMT system settings (IP address / host name, user name, proxy, etc.).
|
||||
4) Change/set any other input needed for this specific sample in the
|
||||
Program.cs file.
|
||||
5) Build the sample from Visual Studio.
|
||||
6) An .exe file will be compiled into the output folder:
|
||||
bin\<configuration> where <configuration> is either Debug or Release.
|
||||
7) Run the .exe file from command-line.
|
||||
8) Enter the password to your AMT system when prompted.
|
||||
9) Get the sample output.
|
||||
|
||||
|
||||
------------------------------------------------------------------
|
||||
* Other names and brands may be claimed as the property of others.
|
||||
Binary file not shown.
1
backend/amt-sdk-20-0-0-1/HLAPI_Module/Docs/redist.txt
Normal file
1
backend/amt-sdk-20-0-0-1/HLAPI_Module/Docs/redist.txt
Normal file
@ -0,0 +1 @@
|
||||
All vPro SDK files from this package with the following extensions are eligible for redistribution: .cpp, .cs, .dll, .lib, .exe., .ps1.
|
||||
@ -0,0 +1,23 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) .NET Foundation and Contributors
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@ -0,0 +1,11 @@
|
||||
Copyright and Licensing Information for ACE(TM), TAO(TM), CIAO(TM), and CoSMIC(TM)
|
||||
ACE(TM), TAO(TM), CIAO(TM), and CoSMIC(TM) (henceforth referred to as "DOC software") are copyrighted by Douglas C. Schmidt and his research group at Washington University, University of California, Irvine, and Vanderbilt University, Copyright (c) 1993-2007, all rights reserved. Since DOC software is open-source, freely available software, you are free to use, modify, copy, and distribute--perpetually and irrevocably--the DOC software source code and object code produced from the source, as well as copy and distribute modified versions of this software. You must, however, include this copyright statement along with any code built using DOC software that you release. No copyright statement needs to be provided if you just ship binary executables of your software products.
|
||||
You can use DOC software in commercial and/or binary software releases and are under no obligation to redistribute any of your source code that is built using DOC software. Note, however, that you may not do anything to the DOC software code, such as copyrighting it yourself or claiming authorship of the DOC software code, that will prevent DOC software from being distributed freely using an open-source development model. You needn't inform anyone that you're using DOC software in your software, though we encourage you to let us know so we can promote your project in the DOC software success stories.
|
||||
|
||||
The ACE, TAO, CIAO, and CoSMIC web sites are maintained by the DOC Group at the Institute for Software Integrated Systems (ISIS) and the Center for Distributed Object Computing of Washington University, St. Louis for the development of open-source software as part of the open-source software community. Submissions are provided by the submitter ``as is'' with no warranties whatsoever, including any warranty of merchantability, noninfringement of third party intellectual property, or fitness for any particular purpose. In no event shall the submitter be liable for any direct, indirect, special, exemplary, punitive, or consequential damages, including without limitation, lost profits, even if advised of the possibility of such damages. Likewise, DOC software is provided as is with no warranties of any kind, including the warranties of design, merchantability, and fitness for a particular purpose, noninfringement, or arising from a course of dealing, usage or trade practice. Washington University, UC Irvine, Vanderbilt University, their employees, and students shall have no liability with respect to the infringement of copyrights, trade secrets or any patents by DOC software or any part thereof. Moreover, in no event will Washington University, UC Irvine, or Vanderbilt University, their employees, or students be liable for any lost revenue or profits or other special, indirect and consequential damages.
|
||||
|
||||
DOC software is provided with no support and without any obligation on the part of Washington University, UC Irvine, Vanderbilt University, their employees, or students to assist in its use, correction, modification, or enhancement. A number of companies around the world provide commercial support for DOC software, however.
|
||||
|
||||
DOC software is Y2K-compliant, as long as the underlying OS platform is Y2K-compliant. Likewise, DOC software is compliant with the new US daylight savings rule passed by Congress as "The Energy Policy Act of 2005," which established new daylight savings times (DST) rules for the United States that expand DST as of March 2007. Since DOC software obtains time/date and calendaring information from operating systems users will not be affected by the new DST rules as long as they upgrade their operating systems accordingly.
|
||||
|
||||
The names ACE(TM), TAO(TM), CIAO(TM), CoSMIC(TM), Washington University, UC Irvine, and Vanderbilt University, may not be used to endorse or promote products or services derived from this source without express written permission from Washington University, UC Irvine, or Vanderbilt University. Further, products or services derived from this source may not be called ACE(TM), TAO(TM), CIAO(TM), or CoSMIC(TM) nor may the name Washington University, UC Irvine, or Vanderbilt University appear in their names, without express written permission from Washington University, UC Irvine, and Vanderbilt University.
|
||||
@ -0,0 +1,21 @@
|
||||
Boost Software License - Version 1.0
|
||||
August 17th, 2003
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
@ -0,0 +1,20 @@
|
||||
Copyright (c) 2011-2022 Twitter, Inc.
|
||||
Copyright (c) 2011-2022 The Bootstrap Authors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@ -0,0 +1,157 @@
|
||||
GENIVIA, INC., SOURCE CODE LICENSE AGREEMENT FOR COMMERCIAL USE
|
||||
|
||||
Rationale: This source code license for commercial use shall replace the gSOAP public license and GPL license for Customer's use of the Software, thereby rendering the terms and conditions imposed by the gSOAP public license and GPL license on Customer inactive during the term of this commercial license as set forth in this Agreement. This license covers the entire gSOAP source distribution, including, but not limited to, the runtime library, compiler, WSDL importer, example applications, and documentation.
|
||||
|
||||
THIS SOURCE CODE LICENSE AGREEMENT ("Agreement") is made and entered into as of the last date executed by the parties below (the "Effective Date") by and between GENIVIA, INC., a Florida corporation having a principal place of business at 3178 Shamrock East, Tallahassee, Florida 32309, USA, ("Genivia"), and Intel Corporation, a Delaware corporation having a principal place of business at 2200 Mission College Blvd., Santa Clara, CA 95052 ("Customer"). The parties agree as follows:
|
||||
|
||||
1. DEFINITIONS.
|
||||
|
||||
"Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code.
|
||||
|
||||
"Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: (i) any addition to or deletion from the contents of a file containing Original Code or previous Modifications; (ii) any new file that contains any part of the Original Code, or previous Modifications.
|
||||
|
||||
"Covered Code" means the Original Code, or Modifications or the combination of the Original Code, and Modifications, in each case including portions thereof.
|
||||
|
||||
"Software" means the Covered Code and accompanying documentation, including Updates (if any), provided by Genivia under this Agreement.
|
||||
|
||||
"Updates" means any patches, bug fixes, and upgrades made generally available during the term and provided by Genivia under this Agreement.
|
||||
|
||||
"Source Code" means computer programming code in human readable form that is not suitable for machine execution without the intervening steps of interpretation or compilation, meaning the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable Object Code, or source code differential comparisons against the Original Code. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
|
||||
|
||||
"Executable Object Code" means the computer programming code in any other form than Source Code that is not readily perceivable by humans and suitable for machine execution without the intervening steps of interpretation or compilation.
|
||||
|
||||
"Authorized Site" means the specific address of Customer’s facility consisting of a single building or multiple buildings on a contiguous campus as specified in Exhibit A.
|
||||
|
||||
"Project" means a concerted undertaking by an identified Customer development team to design or produce a Target Application.
|
||||
|
||||
"Run-Time Module" means the Executable Object Code derived from compiling the Software to be incorporated into a Target Application as inseparably embedded code.
|
||||
|
||||
"Target Application" means an end-user item, such as a software product that is possibly replicated in identical form and offered for sale to third parties, or a device or system developed by Customer pursuant to a Project that contains a Run-Time Module, or any portion thereof, as specified in Exhibit A.
|
||||
|
||||
2. SOURCE CODE LICENSE.
|
||||
|
||||
Subject to Customer’s compliance with the terms and conditions of this Agreement and payment of any applicable fees, Genivia hereby grants to Customer a non-transferable, non-exclusive, worldwide, royalty-free license: (i) to use the Software, solely at the Authorized Site in connection with the Project; (ii) to create Modifications of the Software, solely to the extent necessary to support the development of the Target Application; (iii) to compile the Software, including any Modifications thereof, into a Run-Time Module; (iv) to reproduce an unlimited number of Run-Time Modules for physical incorporation into the Target Application; and (v) to distribute the Target Application.
|
||||
In addition to the licenses granted above, Genivia hereby grants to Customer a non-transferable,
|
||||
nonexclusive, worldwide, perpetual, royalty-free, paid-up license to reproduce, market, sublicense
|
||||
and distribute the Applications solely in connection with Customer's Intel® AMT SDK.
|
||||
Customer's Sub-licensees shall, in turn, be granted a royalty free, paid up license to reproduce,
|
||||
market and distribute Target Applications developed utilizing the Software and Applications
|
||||
licensed by Customer. Sublicensees' rights to utilize the Applications, however, shall be limited to
|
||||
uses directly related to the Intel® AMT SDK. Further, Genivia agrees that all recipients of
|
||||
Customer's Intel® AMT SDK shall be granted royalty free access to all updates of the Software
|
||||
made generally available on Genivia's website.
|
||||
|
||||
|
||||
3. RESTRICTIONS.
|
||||
|
||||
Customer shall reproduce and include any and all copyright notices and proprietary rights legends, as such notices and legends appear in the original Software, on any copy of the Software, or portion thereof, with the exception of the gSOAP public license and GPL license notices.
|
||||
|
||||
The Software shall be handled, used and stored, solely at the Authorized Site identified in Exhibit A. The Software may be used from a single machine, a set of machines, or a network file server, but there shall be no access to the Software from any external network not located at the Authorized Site.
|
||||
|
||||
A function of the Software is to create Run-Time Modules for incorporation into Target Applications. Except as set forth in Section 2 above, no license is granted hereunder to reproduce or distribute the gSOAP soapcpp2 compiler and wsdl2h importer as part of such Target Application.
|
||||
|
||||
4. OWNERSHIP.
|
||||
|
||||
Genivia represents and warrants to Customer that Genivia has all rights in the Software necessary to grant the rights and license granted to Customer in this Agreement.
|
||||
|
||||
Without limiting the foregoing, Genivia represents and warrants that Genivia acquires an assignment of all intellectual property rights in and to all portions of the Software that are delivered to Customer under this Agreement, including any Modifications made by GPL or gSOAP Public License licensees of such Software.
|
||||
|
||||
Customer shall not have any obligation to provide, assign, or disclose to Genivia or any other party any Modifications. Notwithstanding the foregoing, Genivia and its licensors shall retain exclusive ownership of all worldwide Intellectual Property Rights in and to the Software. Customer acknowledges that this Agreement does not grant to Customer any Intellectual Property Rights in or to the Software other than the limited right to use the Software as set forth in Section 2. Customer hereby assigns to Genivia all Intellectual Property Rights it may have or obtain in and to the Modifications that Customer makes to the Software. If Customer has or obtains any rights to the foregoing that cannot be assigned to Genivia, Customer unconditionally and irrevocably waives the enforcement of such rights, and if such rights cannot be waived, Customer hereby grants to Genivia an exclusive, irrevocable, perpetual, worldwide, fully paid and royalty-free license, with rights to sublicense through one or more levels of sublicensees, to reproduce, create derivative works of, distribute, publicly perform, publicly display, make, use, sell and import such Modifications and other intellectual property noted above by all means now known or later developed. All rights in and to the Software not expressly granted to Customer in this Agreement are expressly reserved for Genivia and its licensors.
|
||||
|
||||
5. DELIVERY AND PAYMENT.
|
||||
|
||||
Immediately following the Effective Date, Genivia grants Costumer the right to download the Software from the Approved Software Download Site specified in Exhibit A, and install the Software at the Authorized Site and use the Software as set forth in Section 2 subject to the restrictions listed in Section 3. Notwithstanding any terms or other agreements posted on the Approved Software Download Site, this Agreement shall be the sole and exclusive agreement governing Customer's use of the Software.
|
||||
|
||||
Customer shall pay to Genivia the Software license fees set forth in Genivia’s current price list, unless otherwise specified in Exhibit A. License fees will be invoiced with shipment of this License Agreement. Payment of all amounts invoiced shall be due thirty (30) days after receipt of the invoice.
|
||||
|
||||
All payments and amounts shall be paid without deduction, set-off or counter claim, free and clear of any restrictions or conditions, and without deduction for any taxes, levies, imposts, duties, fees, deductions, withholdings or other governmental charges. If any deduction is required to be made by law, Customer shall pay in the manner and at the same time such additional amounts as will result in receipt by Genivia of such amount as would have been received by Genivia had no such amount been required to be deducted. If Customer is claiming sales or use tax exemption, a certified Tax Exempt Certificate must be attached to this Agreement or applicable purchase order submitted by Customer.
|
||||
|
||||
6. TERM AND TERMINATION.
|
||||
|
||||
This Agreement shall commence upon the Effective Date and continue until terminated as set forth in this Agreement. This Agreement will immediately terminate upon Customer’s breach of this Agreement, unless such breach is curable and is cured by Customer within thirty (30) days after notice of such breach is provided by Genivia. Upon termination Customer agrees not to use the Software for any purpose whatsoever. The following Sections shall survive any termination of this Agreement: Sections 1, 4, 6, and 8.
|
||||
|
||||
7. LIMITED WARRANTY.
|
||||
|
||||
Genivia warrants that the Software, installation scripts, and future Updates will be provided to Customer. Customer assumes full responsibility for: (i) the selection, download, and installation of the Software from the Approved Software Download Site specified in Exhibit A; (ii) the proper use of the Software; (iii) verifying the results obtained from the use of the Software; and (iv) taking appropriate measures to prevent loss of data. Genivia does not warrant that the operation of the Software will meet Customer’s requirements or that Customer will be able to achieve any particular results from use or modification of the Software or that the Software will operate free from error.
|
||||
|
||||
EXCEPT AS EXPRESSLY SET FORTH IN SECTIONS 7 AND 8 OF THIS AGREEMENT, GENIVIA AND ITS LICENSORS DISCLAIM ALL WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY RIGHTS, AND ANY WARRANTY THAT MAY ARISE BY REASON OF TRADE USAGE, CUSTOM, OR COURSE OF DEALING. WITHOUT LIMITING THE FOREGOING, CUSTOMER ACKNOWLEDGES THAT THE SOFTWARE IS PROVIDED "AS IS" AND THAT GENIVIA DOES NOT WARRANT THE SOFTWARE WILL RUN UNINTERRUPTED OR ERROR FREE. THE ENTIRE RISK AS TO RESULTS AND PERFORMANCE OF THE SOFTWARE IS ASSUMED BY CUSTOMER. UNDER NO CIRCUMSTANCES WILL GENIVIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY KIND OR NATURE WHATSOEVER, WHETHER BASED ON CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, ARISING OUT OF OR IN ANY WAY RELATED TO THE SOFTWARE, EVEN IF GENIVIA HAS BEEN ADVISED ON THE POSSIBILITY OF SUCH DAMAGE OR IF SUCH DAMAGE COULD HAVE BEEN REASONABLY FORESEEN, AND NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY EXCLUSIVE REMEDY PROVIDED. SUCH LIMITATION ON DAMAGES INCLUDES, BUT IS NOT LIMITED TO, DAMAGES FOR LOSS OF GOODWILL, LOST PROFITS, LOSS OF DATA OR SOFTWARE, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION OR IMPAIRMENT OF OTHER GOODS. IN NO EVENT WILL GENIVIA BE LIABLE FOR THE COSTS OF PROCUREMENT OF SUBSTITUTE SOFTWARE OR SERVICES. COSTUMER ACKNOWLEDGE THAT THIS SOFTWARE IS NOT DESIGNED FOR USE IN ON-LINE EQUIPMENT IN HAZARDOUS ENVIRONMENTS SUCH AS OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR CONTROL, OR LIFE-CRITICAL APPLICATIONS. GENIVIA EXPRESSLY DISCLAIM ANY LIABILITY RESULTING FROM USE OF THE SOFTWARE IN ANY SUCH ON-LINE EQUIPMENT IN HAZARDOUS ENVIRONMENTS AND ACCEPTS NO LIABILITY IN RESPECT OF ANY ACTIONS OR CLAIMS BASED ON THE USE OF THE SOFTWARE IN ANY SUCH ON-LINE EQUIPMENT IN HAZARDOUS ENVIRONMENTS BY CUSTOMER. FOR PURPOSES OF THIS PARAGRAPH, THE TERM "LIFE-CRITICAL APPLICATION" MEANS AN APPLICATION IN WHICH THE FUNCTIONING OR MALFUNCTIONING OF THE SOFTWARE MAY RESULT DIRECTLY OR INDIRECTLY IN PHYSICAL INJURY OR LOSS OF HUMAN LIFE. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
|
||||
|
||||
8. INFRINGEMENT INDEMNITY.
|
||||
|
||||
Genivia will defend at its expense any suit brought against Customer and will pay all damages finally awarded in such suit insofar as such suit is based on a claim that the Software as provided to Customer infringes a previously issued patent or copyright, provided that Genivia is notified promptly of such claim and is given full and complete authority (including settlement authority), information and assistance by Customer for such defense. In the event that the Software is held in any such suit to infringe such a right and its use is enjoined, or if in the opinion of Genivia the Software is likely to become the subject of such a claim, Genivia at its own election and expense will either (i) procure for Customer the right to continue using the Software or (ii) modify or replace the Software so that it becomes non-infringing while giving substantially equivalent performance. In the event that (i) or (ii) above are not, in Genivia’s sole determination, obtainable using reasonable commercial efforts, then Genivia may terminate this Agreement and refund amount Customer paid Genivia under this Agreement for the Software which is the subject of such claim. The indemnification obligation shall not apply to infringement actions or claims to the extent that such actions or claims are caused solely by: (i) modifications made to the Software by a party other than Genivia; and (ii) the combination of the Software with items not supplied or approved by Genivia.
|
||||
|
||||
9. GENERAL.
|
||||
|
||||
Neither party shall be liable hereunder by reason of any failure or delay in the performance of its obligations hereunder (except for the payment of money) on account of strikes, shortages, riots, insurrection, fires, flood, storm, explosions, acts of God, war, governmental action, labor conditions, earthquakes, material shortages or any other cause which is beyond the reasonable control of such party.
|
||||
|
||||
The Software is a "commercial item" as that term is defined at 48 C.F.R. 2.101, consisting of "commercial computer software" and "commercial computer software documentation" as such terms are used in 48 C.F.R. 12.212. Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4, Customer will provide the Software to U.S. Government End Users only pursuant to the terms and conditions therein.
|
||||
|
||||
Customer may not delegate, assign or transfer this Agreement, the license(s) granted or any of Customer’s rights or duties hereunder, including by way of merger (regardless of whether Customer or Genivia is the surviving entity) or acquisition, and any attempt to do so, without Genivia’s express prior written consent, shall be void. Genivia may assign this Agreement, and its rights and obligations hereunder, in its sole discretion.
|
||||
|
||||
All Software and technical information delivered under this Agreement are subject to U.S. export control laws and may be subject to export or import regulations in other countries. Customer agrees to strictly comply with all such laws and regulations.
|
||||
|
||||
This Agreement is governed by California law, excluding any principle or provision that would call for the application of the law of any jurisdiction other than California. Any action regarding this Agreement shall be brought in a court of competent jurisdiction, federal or state, in the County of Santa Clara, California, and Genivia consents to venue and jurisdiction in and service of process from such court.
|
||||
|
||||
EXHIBIT A
|
||||
|
||||
1. Genivia gSOAP Source Code Products.
|
||||
|
||||
Original Source Code files suitable for compilation into Run-Time Modules for integration into a Target Application:
|
||||
dom.h
|
||||
dom++.h
|
||||
dom.c
|
||||
dom++.cpp
|
||||
dom.cpp
|
||||
soapdoc2.pdf
|
||||
soapdoc2.html
|
||||
stdsoap2.h
|
||||
stdsoap2.c
|
||||
stdsoap2.cpp
|
||||
stl.h
|
||||
stldeque.h
|
||||
stllist.h
|
||||
stlvector.h
|
||||
stlset.h
|
||||
samples/* (all example files included in the package under 'samples')
|
||||
|
||||
Updates to any of the Original Source Code files listed above and distributed by Genivia are also covered under this Agreement.
|
||||
|
||||
Original Source Code files of the Software with development functionality not suitable for compilation and integration into Target Applications:
|
||||
src/error2.c
|
||||
src/error2.h
|
||||
src/init2.c
|
||||
src/soapcpp2.c
|
||||
src/soapcpp2.h
|
||||
src/soapcpp2_lex.l
|
||||
src/soapcpp2_yacc.y
|
||||
src/symbol2.c
|
||||
wsdl/dime.h
|
||||
wsdl/gwsdl.h
|
||||
wsdl/http.h
|
||||
wsdl/imports.h
|
||||
wsdl/includes.h
|
||||
wsdl/mime.h
|
||||
wsdl/schema.cpp
|
||||
wsdl/schema.h
|
||||
wsdl/service.cpp
|
||||
wsdl/service.h
|
||||
wsdl/soap.cpp
|
||||
wsdl/soap.h
|
||||
wsdl/typemap.dat
|
||||
wsdl/types.cpp
|
||||
wsdl/types.h
|
||||
wsdl/wsdl.cpp
|
||||
wsdl/wsdl.h
|
||||
wsdl/wsdl2h.cpp
|
||||
|
||||
The source codes above are part of the software development toolkit. The development toolkit generates source code that is suitable for compilation and integration into the Target Application as set forth by Sections 2 and 3.
|
||||
|
||||
2. Approved Software Download Site
|
||||
|
||||
http://sourceforge.net/projects/gsoap2
|
||||
|
||||
3. Description of the Customer's Project and the Intended Functionality of the Target Application.
|
||||
|
||||
Intel® Active Management Technology ,a network management stack that provides out-of-band management in the realms of asset management, diagnostics, security, circuit breaker, and similar features.
|
||||
___________________________________________________
|
||||
|
||||
@ -0,0 +1,23 @@
|
||||
Except where otherwise noted in the source code (e.g. the files hash.c,
|
||||
list.c and the trio files, which are covered by a similar licence but
|
||||
with different Copyright notices) all the files are:
|
||||
|
||||
Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is fur-
|
||||
nished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
|
||||
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@ -0,0 +1,27 @@
|
||||
Copyright (C) 2004-2006 Intel Corp. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
- Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
|
||||
- Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
- Neither the name of Intel Corp. nor the names of its
|
||||
contributors may be used to endorse or promote products derived from this
|
||||
software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL Intel Corp. OR THE CONTRIBUTORS
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
@ -0,0 +1,25 @@
|
||||
Copyright (C) The Internet Society (1999). All Rights Reserved.
|
||||
|
||||
This document and translations of it may be copied and furnished to
|
||||
others, and derivative works that comment on or otherwise explain it
|
||||
or assist in its implementation may be prepared, copied, published
|
||||
and distributed, in whole or in part, without restriction of any
|
||||
kind, provided that the above copyright notice and this paragraph are
|
||||
included on all such copies and derivative works. However, this
|
||||
document itself may not be modified in any way, such as by removing
|
||||
the copyright notice or references to the Internet Society or other
|
||||
Internet organizations, except as needed for the purpose of
|
||||
developing Internet standards in which case the procedures for
|
||||
copyrights defined in the Internet Standards process must be
|
||||
followed, or as required to translate it into languages other than
|
||||
English.
|
||||
|
||||
The limited permissions granted above are perpetual and will not be
|
||||
revoked by the Internet Society or its successors or assigns.
|
||||
|
||||
This document and the information contained herein is provided on an
|
||||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
|
||||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
|
||||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
|
||||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||
168
backend/amt-sdk-20-0-0-1/HLAPI_Module/HLAPI Release-notes.txt
Normal file
168
backend/amt-sdk-20-0-0-1/HLAPI_Module/HLAPI Release-notes.txt
Normal file
@ -0,0 +1,168 @@
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (C) 2004 Intel Corporation
|
||||
|
||||
Release notes file for Intel AMT(R) High-level API module
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
HLAPI Module release 20.0.0.1:
|
||||
------------------------------
|
||||
# The Intel(R) AMT SDK has been updated from version 18.x to 20.x.
|
||||
This update indicates that the SDK now supports Intel(R) CSME version 20.x,
|
||||
which is used on Intel(R) Lunar Lake platforms.
|
||||
# Bug fix: Fixed the PTHI command marshaling
|
||||
# Bug fix: Added option to load configuration file from working directory
|
||||
|
||||
HLAPI Module release 18.0.1.1:
|
||||
------------------------------
|
||||
# Updated HardwareAsset to support DMTF SMBIOS release 3.8.0.
|
||||
# Added user input for timeout in agent presence samples.
|
||||
# Added thread blocking warning in AgentPresenceLocal sample.
|
||||
# Bug fix: Fix all agent presence samples.
|
||||
# Bug fix: Fix sample password input backspace usage.
|
||||
# Bug fix: Add sample input file serialization errors.
|
||||
# Bug fix: Add error message if AMT server was not found.
|
||||
|
||||
HLAPI Module release 18.0.0.1:
|
||||
------------------------------
|
||||
# Updated the Intel(R) AMT SDK version from 16.x to 18.x to indicate that the
|
||||
SDK also supports Intel(R) CSME version 18.x, used on Intel(R) Meteor Lake platforms.
|
||||
# This module adds support for the new features in Intel(R) Remote Platform Erase 3.0
|
||||
# Bug fix: Fix dispose error in AMTInstanceManager
|
||||
# Static code analysis fixes
|
||||
|
||||
HLAPI Module release 16.0.7.1:
|
||||
------------------------------
|
||||
# This release changes all HLAPI samples to compile to .NET Framework 4.8
|
||||
instead of .NET Framework 4.6.1.
|
||||
# This release changes the connection to Intel(R) AMT to use a SecureString for
|
||||
storing passwords in memory. All password references in the HLAPI library and
|
||||
samples have been modified to support this capability.
|
||||
As a result:
|
||||
- All APIs that used a string to reference a password were replaced with a
|
||||
SecureString.
|
||||
- ConnectionInfoEX, SocksProxy, were converted from structs into Disposable
|
||||
classes.
|
||||
- Updated Readme to note SecureString password ownership.
|
||||
# Changed ConnectionInfoEX usage in HLAPI Samples to be created by an external
|
||||
argument file with the password given when prompted by the sample.
|
||||
# Updated the Readme with new argument passing method.
|
||||
# Updated versions using SecureStrings for passwords of these dlls:
|
||||
DotNetWSManClient.dll
|
||||
IWSManClient.dll
|
||||
Intel.Wsman.Scripting.dll
|
||||
WebStorage.dll
|
||||
# Bug fix: Allow usage of AgentPresence without proxy.
|
||||
# Bug fix: Fix usage of AgentPresence with a LAN-less configuration.
|
||||
# Bug fix: Update event codes in AccessMonitorManager.
|
||||
# Bug fix: Remove OCR enablement when enabling RPE in AMT.
|
||||
# Bug fix: Fix fetched event logs in RPE sample.
|
||||
# Bug fix: Fix use of self-signed certificates.
|
||||
|
||||
HLAPI Module release 16.0.5.1:
|
||||
------------------------------
|
||||
# This release changes the HLAPI to compile to .NET Standard 2.0 instead of
|
||||
.NET Framework 4.6.1 - meaning that it can now be used as a part of either of
|
||||
the following target frameworks:
|
||||
.NET Standard starting from version 2.0
|
||||
.NET Framework starting from version 4.6.1
|
||||
.NET Core starting from version 2.0
|
||||
.NET starting from version 5.0
|
||||
# Updated versions compiled to .NET Standard 2.0 of these dlls:
|
||||
DotNetWSManClient.dll
|
||||
IWSManClient.dll
|
||||
Intel.Wsman.Scripting.dll
|
||||
WebStorage.dll
|
||||
# All samples were changed to compile using an SDK style project file, allowing
|
||||
users to easily compile the samples to .NET (Core) if they wish.
|
||||
# Updated the Power sample with basic CLI to change power options in runtime.
|
||||
# Bug fix: Added support for the GCMP-256 encryption method in the WiFi
|
||||
Configurations.
|
||||
# Bug fix: Fixed HLAPI WebStorage flow implementation.
|
||||
# Updated HardwareAsset to support DMTF SMBIOS release 3.6.0.
|
||||
# Cleanup of the SOAP APIs as they are deprecated since AMT 6.0.
|
||||
|
||||
HLAPI Module release 16.0.4.1:
|
||||
------------------------------
|
||||
This release includes:
|
||||
# Support for Intel AMT connectivity over TLS with an option to accept a
|
||||
self-signed certificate. Using a self-signed certificate allows the developer
|
||||
to initially enable a TLS connection with untrusted self-signed certificates.
|
||||
When moving towards productization, the developer should switch to use
|
||||
certificates provided by a trusted certificate authority. In absence of
|
||||
deployment of a trusted certificate authority, the WSMAN AMTAuthenticate()
|
||||
command must be used to verify that the endpoint is authentic AMT Firmware.
|
||||
# Bug fix: Added support for WPA3 wireless authentication method in the WiFi
|
||||
Configuration Samples
|
||||
# Bug fix in the HardwareAsset sample
|
||||
# Static code analysis fixes
|
||||
# Updated versions of these dlls:
|
||||
imrsdk.dll
|
||||
imrsdk_x64.dll
|
||||
DotNetWSManClient.dll
|
||||
IWSManClient.dll
|
||||
Intel.Wsman.Scripting.dll
|
||||
WebStorage.dll
|
||||
|
||||
HLAPI Module release 16.0.3.1:
|
||||
------------------------------
|
||||
# A new addition to the AMT HLAPI package: Remote Platform Erase sample, for the
|
||||
new 'Remote Platform Erase' feature added to AMT starting ME16. This
|
||||
sample introduces the flows and the commands of the RPE feature.
|
||||
This sample includes RPE 2.0 options.
|
||||
# This release contains a bug-fix in the WiFi Configuration Remote sample
|
||||
# This version includes code changes resulting from an additional static code
|
||||
analysis.
|
||||
# This package contains an updated version of these dlls:
|
||||
DotNetWSManClient.dll
|
||||
IWSManClient.dll
|
||||
Intel.Wsman.Scripting.dll
|
||||
WebStorage.dll
|
||||
|
||||
HLAPI Module release 16.0.0.1:
|
||||
------------------------------
|
||||
# Updated the version of the AMT SDK from 15.x to 16.x to reflect that the AMT
|
||||
SDK also supports CSME version 16.x that is used on Intel* Alderlake platforms
|
||||
# This release contains bug-fixes for the HardwareAsset sample; added display of
|
||||
OCR and RPE capabilities; processor family, processor upgrade, and form factor
|
||||
fields lists were updated
|
||||
|
||||
HLAPI Module release 15.0.2.1:
|
||||
------------------------------
|
||||
# This release contains a bug-fix for the HardwareAsset sample
|
||||
# This release contains a bug-fix for the Redirection sample
|
||||
# This package contains an updated version of these dlls:
|
||||
DotNetWSManClient.dll
|
||||
IWSManClient.dll
|
||||
|
||||
HLAPI Module release 15.0.1.1:
|
||||
------------------------------
|
||||
# This release contains a bug-fix for the HardwareAsset sample
|
||||
# This package contains an updated version of these dlls:
|
||||
imrsdk.dll
|
||||
imrsdk_x64.dll
|
||||
DotNetWSManClient.dll
|
||||
Intel.Wsman.Scripting.dll
|
||||
IWSManClient.dll
|
||||
|
||||
HLAPI Module release 15.0.0.2:
|
||||
------------------------------
|
||||
# Updated the version of the AMT SDK from 14.x to 15.x to reflect that the AMT
|
||||
SDK also supports CSME version 15.x that is used on Intel* Tigerlake platforms
|
||||
# This release contains bug fixes for Redirection Sample, and HardwareAsset
|
||||
Sample
|
||||
|
||||
HLAPI Module release 14.0.2.1:
|
||||
------------------------------
|
||||
This release contains bug fixes for some of the HLAPI samples.
|
||||
|
||||
HLAPI Module release 14.0.1.1:
|
||||
------------------------------
|
||||
# First release since AMT SDK 12.0.0.9 was removed for maintenance
|
||||
# Module contains: Bin folder with compiled dlls. It includes the C# source code
|
||||
in the Src folder. This module also includes sample code.
|
||||
# See Readme file for more details.
|
||||
|
||||
------------------------------------------------------------------
|
||||
* Other names and brands may be claimed as the property of others.
|
||||
137
backend/amt-sdk-20-0-0-1/HLAPI_Module/Src/Common/ProgramInput.cs
Normal file
137
backend/amt-sdk-20-0-0-1/HLAPI_Module/Src/Common/ProgramInput.cs
Normal file
@ -0,0 +1,137 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (C) 2023 Intel Corporation
|
||||
//
|
||||
// File: ProgramInput.cs
|
||||
//
|
||||
// Contents: Program input getting functions.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using Newtonsoft.Json;
|
||||
using System.IO;
|
||||
using Intel.Manageability;
|
||||
using System.Security;
|
||||
using System;
|
||||
|
||||
namespace Common.Utils
|
||||
{
|
||||
public static class ProgramInput
|
||||
{
|
||||
#region Consts
|
||||
|
||||
private const string sampleArgsFileName = "SampleArgs.json";
|
||||
private const string defaultSampleArgsPath = @"..\..\..\..\Common\";
|
||||
private const string fallBackSampleArgsPath = @"..\..\..\..\..\..\Common\Utils\C#\";
|
||||
|
||||
#endregion
|
||||
|
||||
#region Enum
|
||||
|
||||
public enum PASSWORD_TYPE
|
||||
{
|
||||
AMT_USER,
|
||||
PROXY,
|
||||
REDIRECTION_PROXY
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public Static Functions
|
||||
|
||||
public static ConnectionInfoEX DeserializeJsonToStruct(string jsonPath = null)
|
||||
{
|
||||
// config location = input;
|
||||
if (jsonPath == null)
|
||||
{
|
||||
// config location = working directory;
|
||||
jsonPath = Path.Combine(Directory.GetCurrentDirectory(), sampleArgsFileName);
|
||||
if (!File.Exists(jsonPath))
|
||||
{
|
||||
// location = ..\..\..\..\Common\
|
||||
jsonPath = Path.GetFullPath(Path.Combine(defaultSampleArgsPath, sampleArgsFileName));
|
||||
|
||||
|
||||
if (!File.Exists(jsonPath))
|
||||
{
|
||||
// location = ..\..\..\..\..\..\Common\Utils\C#\
|
||||
jsonPath = Path.GetFullPath(Path.Combine(fallBackSampleArgsPath, sampleArgsFileName));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!File.Exists(jsonPath))
|
||||
{
|
||||
throw new IOException($"The file {jsonPath} does not exist.");
|
||||
}
|
||||
|
||||
Console.WriteLine($"Loading config file from: {jsonPath}");
|
||||
|
||||
string json = File.ReadAllText(jsonPath);
|
||||
ConnectionInfoEX connection;
|
||||
try
|
||||
{
|
||||
connection = JsonConvert.DeserializeObject<ConnectionInfoEX>(json);
|
||||
}
|
||||
catch (JsonReaderException e)
|
||||
{
|
||||
throw new IOException(e.Message);
|
||||
}
|
||||
|
||||
//check if Json has UserName
|
||||
if (connection?.UserName != null)
|
||||
{
|
||||
connection.Password = PasswordPrompt(PASSWORD_TYPE.AMT_USER.ToString());
|
||||
}
|
||||
|
||||
//check if Proxy param was provided
|
||||
if (connection?.Proxy != null)
|
||||
{
|
||||
connection.Proxy.Password = PasswordPrompt(PASSWORD_TYPE.PROXY.ToString());
|
||||
}
|
||||
|
||||
//check if RedirectionProxy param was provided
|
||||
if (connection?.RedirectionProxy != null)
|
||||
{
|
||||
connection.RedirectionProxy.Password = PasswordPrompt(PASSWORD_TYPE.REDIRECTION_PROXY.ToString());
|
||||
}
|
||||
|
||||
return connection;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Prompts for Password, does not display the password on the console, and returns a Secure String password
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static SecureString PasswordPrompt(string passwordType)
|
||||
{
|
||||
SecureString secPass = new SecureString();
|
||||
Console.WriteLine($"Please enter {passwordType} password:");
|
||||
ConsoleKeyInfo nextPassKey = Console.ReadKey(true);
|
||||
while (nextPassKey.Key != ConsoleKey.Enter)
|
||||
{
|
||||
if (nextPassKey.Key == ConsoleKey.Backspace)
|
||||
{
|
||||
if (secPass.Length > 0)
|
||||
{
|
||||
secPass.RemoveAt(secPass.Length - 1);
|
||||
Console.Write("\b \b");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
secPass.AppendChar(nextPassKey.KeyChar);
|
||||
Console.Write('*');
|
||||
}
|
||||
|
||||
nextPassKey = Console.ReadKey(true);
|
||||
}
|
||||
|
||||
secPass.MakeReadOnly();
|
||||
Console.Write('\n');
|
||||
return secPass;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (C) 2023 Intel Corporation
|
||||
//
|
||||
// File: SampleArgs.Json
|
||||
//
|
||||
// Contents: User input for connection
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
|
||||
{
|
||||
"Host": "dut.vprodemo.com",
|
||||
"UserName": "admin",
|
||||
"Secure": true,
|
||||
"Certificate": null,
|
||||
"Auth": "Digest",
|
||||
"Proxy": null,
|
||||
"RedirectionProxy": null,
|
||||
"Forwarder": null,
|
||||
"UseDigestMasterPassword": false,
|
||||
"Timeout": 10000,
|
||||
"AcceptSelfSignedCertificate": false
|
||||
|
||||
/* Struct values can be assigned as the following example:
|
||||
"Proxy": {
|
||||
"DropAtEnd": true,
|
||||
"Host": "proxy.vprodemo.com",
|
||||
"Port": 10,
|
||||
"UserName": "admin2"
|
||||
},
|
||||
|
||||
"RedirectionProxy": {
|
||||
"DropAtEnd": true,
|
||||
"Host": "redirectionProxy.vprodemo.com",
|
||||
"Port": 10,
|
||||
"UserName": "admin2"
|
||||
},
|
||||
|
||||
"Forwarder": {
|
||||
"Host": "forwarder.vprodemo.com",
|
||||
"MainPort": 1992,
|
||||
"RedirectionPort": 1992,
|
||||
"RfbPort": 1992
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
@ -0,0 +1,192 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security;
|
||||
using System.Text;
|
||||
|
||||
|
||||
namespace Common.Utils
|
||||
{
|
||||
/// <summary>
|
||||
/// An extension class to handle SecureString conversion
|
||||
/// </summary>
|
||||
internal static class SecureStringExtensions
|
||||
{
|
||||
public static readonly Encoding ENCODING = Encoding.UTF8;
|
||||
|
||||
#region methods
|
||||
|
||||
/// <summary>
|
||||
/// Convert the content of the SecureString as an array of bytes
|
||||
/// </summary>
|
||||
/// <param name="password"></param>
|
||||
/// <returns> A Byte Array representation of a secure string </returns>
|
||||
public static byte[] ConvertToByteArray(this SecureString password)
|
||||
{
|
||||
if (password == null)
|
||||
{
|
||||
throw new SecureStringConversionException("Cannot convert a null password");
|
||||
}
|
||||
|
||||
IntPtr stringTempPass = IntPtr.Zero;
|
||||
string convertedPass;
|
||||
try
|
||||
{
|
||||
stringTempPass = Marshal.SecureStringToGlobalAllocUnicode(password);
|
||||
convertedPass = Marshal.PtrToStringUni(stringTempPass);
|
||||
|
||||
if (convertedPass != null)
|
||||
return ENCODING.GetBytes(convertedPass);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Marshal.ZeroFreeGlobalAllocUnicode(stringTempPass);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert the content of a byte array to a secure string
|
||||
/// </summary>
|
||||
/// <param name="arrayToConvert"></param>
|
||||
/// <returns> The representation of the byte array in a secure string </returns>
|
||||
public static SecureString ConvertByteArrayToSecureString(this byte[] arrayToConvert)
|
||||
{
|
||||
IntPtr stringPointer = IntPtr.Zero;
|
||||
|
||||
if (arrayToConvert.Length == 0)
|
||||
throw new ArgumentException("Password is empty");
|
||||
stringPointer = Marshal.StringToBSTR(ENCODING.GetString(arrayToConvert));
|
||||
|
||||
try
|
||||
{
|
||||
return ConvertToSecureString(Marshal.PtrToStringBSTR(stringPointer));
|
||||
}
|
||||
|
||||
finally
|
||||
{
|
||||
Marshal.ZeroFreeBSTR(stringPointer);
|
||||
GC.Collect();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert a secure string to a char array
|
||||
/// </summary>
|
||||
/// <param name="password"></param>
|
||||
/// <returns> A representation of the secure string in a char array </returns>
|
||||
public static char[] ConvertToCharArray(this SecureString password)
|
||||
{
|
||||
char[] charArray = new char[password.Length];
|
||||
IntPtr charPass = IntPtr.Zero;
|
||||
|
||||
try
|
||||
{
|
||||
charPass = Marshal.SecureStringToCoTaskMemUnicode(password);
|
||||
Marshal.Copy(charPass, charArray, 0, password.Length);
|
||||
return charArray;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (charPass != IntPtr.Zero)
|
||||
{
|
||||
Marshal.ZeroFreeGlobalAllocUnicode(charPass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert a SecureString to string. Used for compliancy with MSFT WINRM DLL
|
||||
/// </summary>
|
||||
/// <param name="password"></param>
|
||||
/// <returns>a string represetation of a secure string </returns>
|
||||
public static string ConvertToString(this SecureString password)
|
||||
{
|
||||
IntPtr stringPointer = IntPtr.Zero;
|
||||
|
||||
if (password == null)
|
||||
throw new ArgumentNullException("Password is empty");
|
||||
stringPointer = Marshal.SecureStringToBSTR(password);
|
||||
|
||||
try
|
||||
{
|
||||
return Marshal.PtrToStringBSTR(stringPointer);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Marshal.ZeroFreeBSTR(stringPointer);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert a String object to SecureString
|
||||
/// </summary>
|
||||
/// <param name="password"></param>
|
||||
/// <returns>A secure string representation of a string object</returns>
|
||||
public static SecureString ConvertToSecureString(this string password)
|
||||
{
|
||||
var securePass = new SecureString();
|
||||
|
||||
foreach (var c in password)
|
||||
securePass.AppendChar(c);
|
||||
|
||||
securePass.MakeReadOnly();
|
||||
return securePass;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Compare the value of secure string object
|
||||
/// </summary>
|
||||
/// <param name="password"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <returns>true/false according to the values equality</returns>
|
||||
public static bool ValueEquals(this SecureString password, SecureString value)
|
||||
{
|
||||
IntPtr passBstr = IntPtr.Zero;
|
||||
IntPtr valueBstr = IntPtr.Zero;
|
||||
try
|
||||
{
|
||||
passBstr = Marshal.SecureStringToBSTR(password);
|
||||
valueBstr = Marshal.SecureStringToBSTR(value);
|
||||
int passLength = Marshal.ReadInt32(passBstr, -4);
|
||||
int valueLength = Marshal.ReadInt32(valueBstr, -4);
|
||||
|
||||
if (passLength != valueLength)
|
||||
return false;
|
||||
for (int x = 0; x < passLength; ++x)
|
||||
{
|
||||
byte passByte = Marshal.ReadByte(passBstr, x);
|
||||
byte valueByte = Marshal.ReadByte(valueBstr, x);
|
||||
if (passByte != valueByte)
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (passBstr != IntPtr.Zero)
|
||||
Marshal.ZeroFreeBSTR(passBstr);
|
||||
if (valueBstr != IntPtr.Zero)
|
||||
Marshal.ZeroFreeBSTR(valueBstr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class SecureStringConversionException : Exception
|
||||
{
|
||||
public SecureStringConversionException()
|
||||
{
|
||||
}
|
||||
|
||||
public SecureStringConversionException(string message) : base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public SecureStringConversionException(string message, Exception innerException) : base(message, innerException)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -0,0 +1,302 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Reflection;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.ACL;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using System.Security;
|
||||
|
||||
namespace ACLSample
|
||||
{
|
||||
public static class ACLFunctionality
|
||||
{
|
||||
|
||||
|
||||
public static void CreateOrUpdateDigestUser(IAMTInstance amt)
|
||||
{
|
||||
//------------------------
|
||||
// Create DigestEntry
|
||||
//------------------------
|
||||
|
||||
List<Realm> realms = new List<Realm>
|
||||
{
|
||||
Realm.HardwareAsset,
|
||||
Realm.Storage
|
||||
};
|
||||
|
||||
// Create SecureString by password.
|
||||
using (SecureString secureString = new SecureString())
|
||||
{
|
||||
foreach (char c in "P@ssw0rd")
|
||||
secureString.AppendChar(c);
|
||||
|
||||
var digestEntry = new DigestEntry("DigestUser", secureString, realms, AccessPermission.Network);
|
||||
try
|
||||
{
|
||||
amt.Config.ACL.CreateOrUpdateDigestUser(digestEntry);
|
||||
Console.WriteLine("Create digest user completed successfully.");
|
||||
}
|
||||
catch (ACLManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} ACLFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1}\n", e.Source, e.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void GetAllDigestUsers(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
var digestUsers = amt.Config.ACL.GetAllDigestUsers();
|
||||
Console.WriteLine("\n DigestUsers Details");
|
||||
Console.WriteLine(" -------------------");
|
||||
// Display DigestUser details.
|
||||
digestUsers.ForEach(e => DisplayDigestUser(e));
|
||||
}
|
||||
catch (ACLManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} ACLFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1}\n", e.Source, e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void GetDigestUser(IAMTInstance amt, string userName)
|
||||
{
|
||||
try
|
||||
{
|
||||
var digestEntry = amt.Config.ACL.GetDigestUser(userName);
|
||||
Console.WriteLine("\n DigestUser Details");
|
||||
// Display DigestUser details.
|
||||
Console.WriteLine(" ------------------");
|
||||
DisplayDigestUser(digestEntry);
|
||||
}
|
||||
catch (ACLManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} ACLFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1}\n", e.Source, e.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void DeleteDigestUser(IAMTInstance amt, string userNameOrSid)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.Config.ACL.DeleteDigestUser(userNameOrSid);
|
||||
Console.WriteLine("Delete digest user completed successfully.");
|
||||
}
|
||||
catch (ACLManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} ACLFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1}\n", e.Source, e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void CreateOrUpdateKerberosUser(IAMTInstance amt, string userNameOrSid)
|
||||
{
|
||||
//------------------------
|
||||
// Create KerberosEntry
|
||||
//------------------------
|
||||
|
||||
List<Realm> realms = new List<Realm> { Realm.Administration };
|
||||
|
||||
KerberosEntry kerberosEntry = new KerberosEntry(userNameOrSid, realms, AccessPermission.Any);
|
||||
|
||||
try
|
||||
{
|
||||
amt.Config.ACL.CreateOrUpdateKerberosUser(kerberosEntry);
|
||||
Console.WriteLine("Create kerberos user completed successfully.");
|
||||
}
|
||||
catch (ACLManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} ACLFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1}\n", e.Source, e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void GetAllKerberosUsers(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
var kerberosUsers = amt.Config.ACL.GetAllKerberosUsers();
|
||||
Console.WriteLine("\n KerberosUsers Details");
|
||||
Console.WriteLine(" ---------------------");
|
||||
kerberosUsers.ForEach(e => DisplayKerberosUser(e));
|
||||
}
|
||||
catch (ACLManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} ACLFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1}\n", e.Source, e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void GetKerberosUser(IAMTInstance amt, string userNameOrSid)
|
||||
{
|
||||
try
|
||||
{
|
||||
// If UserNameOrSid equals to Domain\\UserName calculate the appropriate SID.
|
||||
var kerberosUser = amt.Config.ACL.GetKerberosUser(userNameOrSid);
|
||||
Console.WriteLine("\n KerberosUser Details");
|
||||
Console.WriteLine(" --------------------");
|
||||
DisplayKerberosUser(kerberosUser);
|
||||
}
|
||||
catch (ACLManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} ACLFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1}\n", e.Source, e.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void DeleteKerberosUser(IAMTInstance amt, string userNameOrSid)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.Config.ACL.DeleteKerberosUser(userNameOrSid);
|
||||
Console.WriteLine("Delete kerberos user completed successfully.");
|
||||
}
|
||||
catch (ACLManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} ACLFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
catch(ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1}\n", e.Source, e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void UpdateAdminUser(IAMTInstance amt, string UserName, string password)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Create SecureString by password.
|
||||
if (password == null)
|
||||
{
|
||||
Console.WriteLine("UpdateAdmin failed with error: Failed to update Admin user. ACLFailor: InvalidPassword");
|
||||
return;
|
||||
}
|
||||
|
||||
using (SecureString secureString = new SecureString())
|
||||
{
|
||||
foreach (char c in password)
|
||||
secureString.AppendChar(c);
|
||||
|
||||
amt.Config.ACL.UpdateAdmin(UserName, secureString);
|
||||
}
|
||||
Console.WriteLine("Update admin user completed successfully.");
|
||||
}
|
||||
catch (ACLManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} ACLFailor: {2}\n",e.Source ,e.Message, e.Failure);
|
||||
}
|
||||
catch(ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1}\n", e.Source, e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void GetAdminUser(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
string adminUser = amt.Config.ACL.GetAdminUser();
|
||||
Console.WriteLine("The name of the admin user is "+adminUser);
|
||||
}
|
||||
catch (ACLManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} ACLFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1}\n", e.Source, e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DisplayDigestUser(DigestEntry user)
|
||||
{
|
||||
Console.WriteLine("\n * Name : " + user.UserName);
|
||||
|
||||
// Get description attribute of AccessPermission.
|
||||
Type type = user.Access.GetType();
|
||||
MemberInfo[] memInfo = type.GetMember(user.Access.ToString());
|
||||
object[] attributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
|
||||
string accessPermission = ((DescriptionAttribute)attributes[0]).Description;
|
||||
Console.WriteLine(" Permission : " + accessPermission);
|
||||
|
||||
// Get description attribute of Realms.
|
||||
Console.Write(" Realms : ");
|
||||
foreach (Realm realm in user.Realms)
|
||||
{
|
||||
if ((uint)realm != 23 && (uint)realm != 22 && (uint)realm != 1)
|
||||
{
|
||||
type = realm.GetType();
|
||||
memInfo = type.GetMember(realm.ToString());
|
||||
attributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
|
||||
string realmString = ((DescriptionAttribute)attributes[0]).Description;
|
||||
Console.Write(realmString + ", ");
|
||||
}
|
||||
}
|
||||
Console.Write("\b\b \n");
|
||||
}
|
||||
|
||||
public static void DisplayKerberosUser(KerberosEntry user)
|
||||
{
|
||||
Console.WriteLine("\n * SID : " + user.UserNameOrSID);
|
||||
|
||||
// Get description attribute of AccessPermission.
|
||||
Type type = user.Access.GetType();
|
||||
MemberInfo[] memInfo = type.GetMember(user.Access.ToString());
|
||||
object[] attributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
|
||||
string accessPermission = ((DescriptionAttribute)attributes[0]).Description;
|
||||
Console.WriteLine(" Permission : " + accessPermission);
|
||||
|
||||
// Get description attribute of Realms.
|
||||
Console.Write(" Realms : ");
|
||||
foreach (Realm realm in user.Realms)
|
||||
{
|
||||
if ((uint)realm != 23 && (uint)realm != 22 && (uint)realm != 1)
|
||||
{
|
||||
type = realm.GetType();
|
||||
memInfo = type.GetMember(realm.ToString());
|
||||
attributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
|
||||
string realmString = ((DescriptionAttribute)attributes[0]).Description;
|
||||
Console.Write(realmString + ", ");
|
||||
}
|
||||
}
|
||||
Console.Write("\b\b \n");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,29 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
<PackageReference Include="System.Security.Principal.Windows" Version="5.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,95 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 - 2014 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Common.Utils;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace ACLSample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Create or update digest user.
|
||||
ACLFunctionality.CreateOrUpdateDigestUser(amt);
|
||||
|
||||
// Get digest user by his name.
|
||||
ACLFunctionality.GetDigestUser(amt, "DigestUser");
|
||||
|
||||
// Get all digest users.
|
||||
ACLFunctionality.GetAllDigestUsers(amt);
|
||||
|
||||
// Delete digest user by his name.
|
||||
ACLFunctionality.DeleteDigestUser(amt, "DigestUser");
|
||||
|
||||
// Create a kerberos user with the user's domain\username.
|
||||
// The user must already be defined in Active Directory when creating the ACL Kerberos entry.
|
||||
ACLFunctionality.CreateOrUpdateKerberosUser(amt, "Intel\\KerberosUser");
|
||||
|
||||
// Get kerberos user by his Domain\UserName
|
||||
ACLFunctionality.GetKerberosUser(amt, "Intel\\KerberosUser");
|
||||
|
||||
// Get all kerberos users
|
||||
ACLFunctionality.GetAllKerberosUsers(amt);
|
||||
|
||||
// Delete kerberos user by his SID
|
||||
ACLFunctionality.DeleteKerberosUser(amt, "Intel\\KerberosUser");
|
||||
|
||||
// Update Admin user
|
||||
ACLFunctionality.UpdateAdminUser(amt, "Admin", "p@ssw0rd");
|
||||
|
||||
// Get user name of the Admin user
|
||||
ACLFunctionality.GetAdminUser(amt);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
amt?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("ACLSample")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Intel Corporation")]
|
||||
[assembly: AssemblyProduct("ACLSample")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("102b502a-3a25-4bf5-9b9c-4b1afb2a091f")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,291 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.AccessMonitor;
|
||||
using Intel.Manageability.Exceptions;
|
||||
|
||||
namespace AccessMonitorSample
|
||||
{
|
||||
public static class AccessMonitorFunctionality
|
||||
{
|
||||
private const string ROOT_CERT = @"..\..\RootCert.cer";
|
||||
private const string LEAF_CERT = @"..\..\LeafCert.p12";
|
||||
|
||||
public static void GetAccessMonitorSettings(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
AccessMonitorSettings settings = amt.AccessMonitor.GetAccessMonitorSettings();
|
||||
PrintSettings(settings);
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
}
|
||||
|
||||
public static void GetRegisteredEvents(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
List<EventDetails> registeredEvents = amt.AccessMonitor.GetRegisteredEvents();
|
||||
PrintEvents(registeredEvents);
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
}
|
||||
|
||||
public static void RegisterToLog(IAMTInstance amt, List<EventDetails> eventDetails)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.AccessMonitor.RegisterToLog(eventDetails);
|
||||
Console.WriteLine("Registered to log successfully.");
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
}
|
||||
|
||||
public static void UnregisterToLog(IAMTInstance amt, string eventName)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.AccessMonitor.UnregisterToLog(eventName);
|
||||
Console.WriteLine("Unregistered to log successfully.");
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReadLog(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
string fqdn;
|
||||
Guid guid;
|
||||
List<AuditRecord> logRecords = amt.AccessMonitor.ReadLog(out guid, out fqdn);
|
||||
Console.WriteLine("UUID:{0} FQDN:{1} Log Records:", guid.ToString(), fqdn);
|
||||
|
||||
PrintLogRecords(logRecords);
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
}
|
||||
|
||||
public static uint LockLog(IAMTInstance amt, LogLockType lockType, int timeOut)
|
||||
{
|
||||
try
|
||||
{
|
||||
uint lockHandle = amt.AccessMonitor.LockLog(lockType, timeOut);
|
||||
Console.WriteLine("Locked log successfully.");
|
||||
return lockHandle;
|
||||
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static void UnlockLog(IAMTInstance amt, uint lockHandle)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.AccessMonitor.UnlockLog(lockHandle);
|
||||
Console.WriteLine("Unlocked log successfully.");
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
}
|
||||
|
||||
public static void ClearLog(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.AccessMonitor.ClearLog();
|
||||
Console.WriteLine("Cleared log successfully.");
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetEventStoragePolicy(IAMTInstance amt, EventsStoragePolicy eventsStoragePolicy)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.AccessMonitor.SetEventsStoragePolicy(eventsStoragePolicy);
|
||||
Console.WriteLine("Events storage policy was set successfully.");
|
||||
}
|
||||
catch (NotSupportedException e)
|
||||
{
|
||||
Console.WriteLine("SetEventStoragePolicy failed with error: {0} \n", e.Message);
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetEventStoragePolicy(IAMTInstance amt, EventsStoragePolicy eventsStoragePolicy, int keepDays)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.AccessMonitor.SetEventsStoragePolicy(eventsStoragePolicy, keepDays);
|
||||
Console.WriteLine("Events storage policy was set successfully.");
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetLogSignature(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Set log signature with one certificate that contains public key and private key:
|
||||
using (X509Certificate2 x509Certificate2 = new X509Certificate2(LEAF_CERT, "q", X509KeyStorageFlags.Exportable))
|
||||
{
|
||||
amt.AccessMonitor.SetLogSignature(x509Certificate2);
|
||||
Console.WriteLine("Set log signature passed successfully.");
|
||||
}
|
||||
// Set log signature with chain of trusted certificates:
|
||||
// 1. Create X509Chain object.
|
||||
// 2. Set to X509Chain object additional certificates store from which the chain will be built.
|
||||
// 3. Build certificates chain.
|
||||
// 4. Set Access Monitor log signature.
|
||||
|
||||
using (X509Certificate2 rootCertificate = new X509Certificate2(ROOT_CERT))
|
||||
using (X509Certificate2 leafCertificate = new X509Certificate2(LEAF_CERT, "q", X509KeyStorageFlags.Exportable))
|
||||
using (X509Chain trustedChain = new X509Chain())
|
||||
{
|
||||
trustedChain.ChainPolicy.ExtraStore.Add(rootCertificate);
|
||||
trustedChain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags;
|
||||
trustedChain.Build(leafCertificate);
|
||||
|
||||
amt.AccessMonitor.SetLogSignature(trustedChain);
|
||||
Console.WriteLine("Set log signature with certificates chain passed successfully.");
|
||||
}
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
catch (CryptographicException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReadLogSignature(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
X509Chain amtCertificates;
|
||||
Guid guid;
|
||||
string fqdn;
|
||||
List<AuditRecord> auditRecords = amt.AccessMonitor.ReadLogSignature(out amtCertificates, out guid, out fqdn, SignatureMechanism.SHA2_256);
|
||||
Console.WriteLine("The log signature was read successfully, but it is still necessary to verify the trustworthiness of the AMT certificates chain used to sign the log......");
|
||||
Console.WriteLine("Guid:{0} FQDN:{1} Log Records:", guid, fqdn);
|
||||
PrintLogRecords(auditRecords);
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReadLogAuthentication(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (X509Certificate2 trustedCertificate = new X509Certificate2(ROOT_CERT))
|
||||
{
|
||||
Guid guid;
|
||||
string fqdn;
|
||||
|
||||
// Read the log and check the signature againt the trustedCertificate.
|
||||
List<AuditRecord> auditRecords = amt.AccessMonitor.ReadLogAuthentication(trustedCertificate, out guid, out fqdn, SignatureMechanism.SHA2_256);
|
||||
Console.WriteLine("The log was read successfully. The authentication of the trusted certificate against AMT certificates passed.");
|
||||
Console.WriteLine("Guid:{0} FQDN:{1} Log Records:", guid, fqdn);
|
||||
PrintLogRecords(auditRecords);
|
||||
}
|
||||
}
|
||||
catch (AccessMonitorManageabilityException e)
|
||||
{
|
||||
Console.WriteLine("{0} failed with error: {1} AccessMonitorFailure: {2}\n", e.Source, e.Message, e.Failure);
|
||||
}
|
||||
catch (CryptographicException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#region Helper Methods
|
||||
|
||||
private static void PrintLogRecords(List<AuditRecord> logRecords)
|
||||
{
|
||||
logRecords.ForEach(e =>
|
||||
{
|
||||
Console.WriteLine(string.Format("\t* Event Name : {0}", e.EventName));
|
||||
Console.WriteLine(string.Format("\t Event Trigger : {0}", e.EventTrigger));
|
||||
Console.WriteLine(string.Format("\t UserName Or SID : {0}", e.UserNameOrSID));
|
||||
Console.WriteLine(string.Format("\t Host Name : {0}", e.HostName));
|
||||
Console.WriteLine(string.Format("\t Domain : {0}", e.Domain));
|
||||
Console.WriteLine(string.Format("\t Time Stamp : {0}", e.TimeStamp));
|
||||
Console.WriteLine();
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
private static void PrintEvents(List<EventDetails> registeredEvents)
|
||||
{
|
||||
Console.WriteLine("Registered Events:");
|
||||
registeredEvents.ForEach(e =>
|
||||
{
|
||||
Console.WriteLine(string.Format("\t* Event Name : {0}", e.EventName));
|
||||
Console.WriteLine(string.Format("\t Event Policy: {0}", e.EventPolicy));
|
||||
Console.WriteLine();
|
||||
});
|
||||
}
|
||||
|
||||
private static void PrintSettings(AccessMonitorSettings settings)
|
||||
{
|
||||
Console.WriteLine("Access Monitor Settings:");
|
||||
Console.WriteLine("========================");
|
||||
Console.WriteLine(string.Format("\tEnabled State : {0}", settings.EnabledState));
|
||||
Console.WriteLine(string.Format("\tAudit State : {0}", settings.LogState));
|
||||
Console.WriteLine(string.Format("\tPercentage Log Free : {0}", settings.PercentageFree));
|
||||
Console.WriteLine(string.Format("\tRecords Number : {0}", settings.CurrentRecordsNumber));
|
||||
Console.WriteLine(string.Format("\tEvents Storage Policy: {0}", settings.EventsStoragePolicy));
|
||||
if (settings.EventsStoragePolicy == EventsStoragePolicy.RestrictedRollOver)
|
||||
Console.WriteLine(string.Format("\tMin Days To Keep : {0}", settings.MinDaysToKeep));
|
||||
Console.WriteLine(string.Format("\tTime Of Last Record : {0}", settings.TimeOfLastRecord));
|
||||
Console.WriteLine(string.Format("\tMax Allowed Auditors : {0}", settings.MaxAllowedAuditors));
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Binary file not shown.
@ -0,0 +1,98 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 - 2014 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.AccessMonitor;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Common.Utils;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace AccessMonitorSample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
AccessMonitorFunctionality.SetLogSignature(amt);
|
||||
|
||||
AccessMonitorFunctionality.GetAccessMonitorSettings(amt);
|
||||
|
||||
AccessMonitorFunctionality.SetEventStoragePolicy(amt, EventsStoragePolicy.NoRollOver);
|
||||
|
||||
AccessMonitorFunctionality.GetRegisteredEvents(amt);
|
||||
|
||||
// Register AuditEvents.NetworkTime.AMTTimeSet event.
|
||||
List<EventDetails> eventsDetails = new List<EventDetails>();
|
||||
eventsDetails.Add(new EventDetails(AuditEvents.NetworkTime.AMTTimeSet, EventPolicy.None));
|
||||
AccessMonitorFunctionality.RegisterToLog(amt, eventsDetails);
|
||||
|
||||
// Create AMTTimeSet event record in the log.
|
||||
amt.TimeSynchronization.SetUtcNetworkTime();
|
||||
|
||||
AccessMonitorFunctionality.ReadLog(amt);
|
||||
|
||||
AccessMonitorFunctionality.ReadLogSignature(amt);
|
||||
|
||||
AccessMonitorFunctionality.ReadLogAuthentication(amt);
|
||||
|
||||
AccessMonitorFunctionality.UnregisterToLog(amt, AuditEvents.NetworkTime.AMTTimeSet);
|
||||
|
||||
AccessMonitorFunctionality.ClearLog(amt);
|
||||
|
||||
uint lockHandle = AccessMonitorFunctionality.LockLog(amt, LogLockType.UnprovisioningLock, 30);
|
||||
|
||||
// Perform unprovisioning AMT....
|
||||
|
||||
AccessMonitorFunctionality.UnlockLog(amt, lockHandle);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
amt?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("AccessMonitorSample")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Intel Corporation")]
|
||||
[assembly: AssemblyProduct("AccessMonitorSample")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("6efe2964-4077-44ae-942a-16a76c1b156d")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDEzCCAfugAwIBAgIJAPM8vkQAJQqRMA0GCSqGSIb3DQEBBQUAMDgxGzAZBgNV
|
||||
BAMTEkRlbW8gUm9vdCBDQSBzZXZlcjELMAkGA1UEBhMCSUwxDDAKBgNVBAsTA0ZU
|
||||
TDAeFw0xMzA0MzAwODQzMTdaFw0xNDA0MzAwODQzMTdaMDgxGzAZBgNVBAMTEkRl
|
||||
bW8gUm9vdCBDQSBzZXZlcjELMAkGA1UEBhMCSUwxDDAKBgNVBAsTA0ZUTDCCASIw
|
||||
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALDlTPkkMYZ4NLigO9GdEr9S2jPI
|
||||
0eBKiPpIWjr3nESvNsweNMhhZYD1ZY3EYpExGi7NZM0hiQ0numpCT9TKKlqloh2C
|
||||
1WN/94hilmx/q07AL5ghbU9IW/m/wljnpSw3ogK/25T9FlyFkU+5HXO4lwM9tDFJ
|
||||
lRFZgioNzE8r5yEFzLqrGzuMtqbOplElJPwq2GMYKZUYY5x5pGdcBNynpAy8n7FZ
|
||||
ytXvhr6YhTt/Cy2kS8FUqtLyLQVx5kiPAZL2mt7O1vG8/z8fIngtlo3qlFRKZ2vT
|
||||
/RZ+iBdYIyk7jQ1ARHANDRRMNn1ZFWyz9/6UxWUPJnXIJrLmY4Xil4V2PCcCAwEA
|
||||
AaMgMB4wDwYDVR0TAQH/BAUwAwEB/zALBgNVHQ8EBAMCAbYwDQYJKoZIhvcNAQEF
|
||||
BQADggEBAKW1f7UZefJtoV8KocV60z71D+VBM/pZSPbISIoiu4BjhY9IVitJaUhF
|
||||
UmCRc6htN4f/SPOeeUB3FNVFptcEzMXo2sydUCgIM++Jb/Nn7TvBLwX40+VkF80K
|
||||
FXJFG6rFFXMW1EXAuvdFEjWGAsfAIg0mtInS9+MzBsiyG1Bg1JOdZYTAT12mCpe7
|
||||
PKalJMOXQChxP2Dqz1ABeCl9UXG9+Mjj8tJQz/06tP9gQCI3BxvWNVNV9gRXhGT6
|
||||
jiSGRIKeiZMoqU2mFO2MDHgtu/Fp+6G3180NdeHaynaql3cxlPMHl9jGxcrkl7uH
|
||||
eEqQ6OuFQqtWaxDICdZHyvezLf2RLjw=
|
||||
-----END CERTIFICATE-----
|
||||
@ -0,0 +1,88 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.AgentPresence;
|
||||
using Intel.Manageability.Exceptions;
|
||||
|
||||
namespace AgentPresenceLocalSample
|
||||
{
|
||||
static class AgentPresenceLocalFunctionality
|
||||
{
|
||||
public static void CreateOrUpdateAgent(IAMTInstance amt, string agentName)
|
||||
{
|
||||
// --------------------
|
||||
// Create Agent
|
||||
// --------------------
|
||||
|
||||
var actions = new List<AgentAction>
|
||||
{
|
||||
new AgentAction(AgentState.NotStarted, AgentState.Running, true, ActionSystemDefense.DeactivatePolicy,
|
||||
false),
|
||||
new AgentAction(AgentState.Stopped, AgentState.Expired | AgentState.Stopped, false,
|
||||
ActionSystemDefense.ActivatePolicy, false)
|
||||
};
|
||||
|
||||
Console.Write("Enter agent startup timeout in seconds (default is 120): ");
|
||||
if (!ushort.TryParse(Console.ReadLine(), out var startupTimer))
|
||||
startupTimer = 120;
|
||||
Console.WriteLine();
|
||||
|
||||
Console.Write("Enter agent heartbeat timeout in seconds (default is 120): ");
|
||||
if (!ushort.TryParse(Console.ReadLine(), out var intervalTimer))
|
||||
intervalTimer = 120;
|
||||
Console.WriteLine();
|
||||
|
||||
// Create policy and pass the action list as a parameter
|
||||
Agent agent = new Agent(agentName, actions, startupTimer, intervalTimer);
|
||||
|
||||
// -------------------------------------------
|
||||
// Add the agent to the Intel AMT instance
|
||||
// -------------------------------------------
|
||||
|
||||
try
|
||||
{
|
||||
amt.AgentPresence.Remote.CreateOrUpdateAgent(agent);
|
||||
Console.WriteLine("Create agent completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Create agent failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void Start(IAMTInstance amt, string applicationName)
|
||||
{
|
||||
CreateOrUpdateAgent(amt, applicationName);
|
||||
Console.WriteLine("Starting presence. The heartbeats will block this program's thread.");
|
||||
Console.WriteLine("For an unblocking solution use any of the other agent presence samples.");
|
||||
try
|
||||
{
|
||||
amt.AgentPresence.Local.StartPresence(applicationName);
|
||||
Console.WriteLine("Start presence completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Start presence failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void Shutdown(IAMTInstance amt, string applicationName)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.AgentPresence.Local.ShutdownPresence(applicationName);
|
||||
Console.WriteLine("Shutdown presence completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Shutdown presence failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,62 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using Common.Utils;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
|
||||
namespace AgentPresenceLocalSample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
// Start Presence.
|
||||
AgentPresenceLocalFunctionality.Start(amt, "MyAgent");
|
||||
|
||||
Console.WriteLine("Press enter to stop the agent");
|
||||
Console.ReadLine();
|
||||
|
||||
// Shutdown Presence.
|
||||
AgentPresenceLocalFunctionality.Shutdown(amt, "MyAgent");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("AgentPresenceLocalSample")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("AgentPresenceLocalSample")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2020")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("a9b8c01f-6f33-416e-a033-b57003ea315a")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,107 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 - 2012 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.AgentPresence;
|
||||
|
||||
namespace AgentPresenceLocalSample1
|
||||
{
|
||||
static class AgentPresenceLocalFunctionality1
|
||||
{
|
||||
public static void CreateOrUpdateAgent(IAMTInstance amt, string agentName)
|
||||
{
|
||||
// --------------------
|
||||
// Create Agent
|
||||
// --------------------
|
||||
|
||||
var actions = new List<AgentAction>
|
||||
{
|
||||
new AgentAction(AgentState.NotStarted, AgentState.Running, true, ActionSystemDefense.DeactivatePolicy,
|
||||
false),
|
||||
new AgentAction(AgentState.Stopped, AgentState.Expired | AgentState.Stopped, false,
|
||||
ActionSystemDefense.ActivatePolicy, false)
|
||||
};
|
||||
|
||||
Console.Write("Enter agent startup timeout in seconds (default is 120): ");
|
||||
if (!ushort.TryParse(Console.ReadLine(), out var startupTimer))
|
||||
startupTimer = 120;
|
||||
Console.WriteLine();
|
||||
|
||||
Console.Write("Enter agent heartbeat timeout in seconds (default is 120): ");
|
||||
if (!ushort.TryParse(Console.ReadLine(), out var intervalTimer))
|
||||
intervalTimer = 120;
|
||||
Console.WriteLine();
|
||||
|
||||
// Create policy and pass the action list as a parameter
|
||||
Agent agent = new Agent(agentName, actions, startupTimer, intervalTimer);
|
||||
|
||||
// -------------------------------------------
|
||||
// Add the agent to the Intel AMT instance
|
||||
// -------------------------------------------
|
||||
|
||||
try
|
||||
{
|
||||
amt.AgentPresence.Remote.CreateOrUpdateAgent(agent);
|
||||
Console.WriteLine("Create agent completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
if ((ex.InnerException is AgentPresenceManageabilityException ex1) && (ex1.Failure == AgentPresenceFailure.DuplicateAgent))
|
||||
{
|
||||
// Ignore the error, agent already exists
|
||||
Console.WriteLine("Agent already exists");
|
||||
return;
|
||||
}
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public static void Start(IAMTInstance amt, string applicationName)
|
||||
{
|
||||
// To start an agent, do the following:
|
||||
// 1. Create the Agent by invoking IAMTInstance.AgentPresence.Remote.CreateOrUpdateAgent(string)
|
||||
// with AgentName (see AgentPresenceRemoteSample sample).
|
||||
// 2. From AMT - local, register to watchdog and send heartbeats by invoking amt.AgentPresence.Local.StartPresence().
|
||||
// When the StartPresence function sends heartbeats, it activates an endless loop that sends a heartbeat each agent.TimeoutInterval,
|
||||
// So, to avoid getting stuck on the StartPresence function, perform it in another thread.
|
||||
|
||||
CreateOrUpdateAgent(amt, applicationName);
|
||||
|
||||
ThreadPool.QueueUserWorkItem(agent =>
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("Start presence: " + applicationName.ToString());
|
||||
amt.AgentPresence.Local.StartPresence(applicationName);
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Start presence failed with exception: " + ex.Message);
|
||||
}
|
||||
});
|
||||
Console.WriteLine(applicationName + " is sending hearbeats, to stop press any key....");
|
||||
Console.ReadKey();
|
||||
}
|
||||
|
||||
public static void Shutdown(IAMTInstance amt, string applicationName)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.AgentPresence.Local.ShutdownPresence(applicationName);
|
||||
Console.WriteLine("Shutdown " + applicationName + " completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Shutdown " + applicationName + " failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,75 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 - 2014 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using HLAPI;
|
||||
using Common.Utils;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace AgentPresenceLocalSample1
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// StartPresence causes the agent to start sends heartbeats.
|
||||
AgentPresenceLocalFunctionality1.Start(amt, "Agent1");
|
||||
|
||||
// ShutdownPresence causes the StartPresence to stop sending heartbeats. The thread that performs it was finished
|
||||
// and the agent's state was changed to "stop".
|
||||
AgentPresenceLocalFunctionality1.Shutdown(amt, "Agent1");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
amt?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("AgentPresenceLocalSample1")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Intel Corporation")]
|
||||
[assembly: AssemblyProduct("AgentPresenceLocalSample1")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("68f024e8-5635-4938-9bd0-8ff2e61f57ed")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,108 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 - 2012 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.AgentPresence;
|
||||
|
||||
namespace AgentPresenceLocalSample2
|
||||
{
|
||||
static class AgentPresenceLocalFunctionality2
|
||||
{
|
||||
public static void CreateOrUpdateAgent(IAMTInstance amt, string agentName)
|
||||
{
|
||||
// --------------------
|
||||
// Create Agent
|
||||
// --------------------
|
||||
|
||||
var actions = new List<AgentAction>
|
||||
{
|
||||
new AgentAction(AgentState.NotStarted, AgentState.Running, true, ActionSystemDefense.DeactivatePolicy,
|
||||
false),
|
||||
new AgentAction(AgentState.Stopped, AgentState.Expired | AgentState.Stopped, false,
|
||||
ActionSystemDefense.ActivatePolicy, false)
|
||||
};
|
||||
|
||||
Console.Write("Enter agent startup timeout in seconds (default is 120): ");
|
||||
if (!ushort.TryParse(Console.ReadLine(), out var startupTimer))
|
||||
startupTimer = 120;
|
||||
Console.WriteLine();
|
||||
|
||||
Console.Write("Enter agent heartbeat timeout in seconds (default is 120): ");
|
||||
if (!ushort.TryParse(Console.ReadLine(), out var intervalTimer))
|
||||
intervalTimer = 120;
|
||||
Console.WriteLine();
|
||||
|
||||
// Create policy and pass the action list as a parameter
|
||||
Agent agent = new Agent(agentName, actions, startupTimer, intervalTimer);
|
||||
|
||||
// -------------------------------------------
|
||||
// Add the agent to the Intel AMT instance
|
||||
// -------------------------------------------
|
||||
|
||||
try
|
||||
{
|
||||
amt.AgentPresence.Remote.CreateOrUpdateAgent(agent);
|
||||
Console.WriteLine("Create agent completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
if ((ex.InnerException is AgentPresenceManageabilityException ex1) && (ex1.Failure == AgentPresenceFailure.DuplicateAgent))
|
||||
{
|
||||
// Ignore the error, agent already exists
|
||||
Console.WriteLine("Agent already exists");
|
||||
return;
|
||||
}
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
public static void Start(IAMTInstance amt, string applicationName)
|
||||
{
|
||||
// To start an agent, do the following:
|
||||
// 1. Create the Agent by invoking IAMTInstance.AgentPresence.Remote.CreateOrUpdateAgent(string)
|
||||
// with AgentName (see AgentPresenceRemoteSample sample).
|
||||
// 2. From AMT - local, register to watchdog and send heartbeats by invoking amt.AgentPresence.Local.StartPresence().
|
||||
// When the StartPresence function sends heartbeats, it activates an endless loop that sends a heartbeat each agent.TimeoutInterval,
|
||||
// So, to avoid getting stuck on the StartPresence function, perform it in another thread.
|
||||
|
||||
CreateOrUpdateAgent(amt, applicationName);
|
||||
|
||||
ThreadPool.QueueUserWorkItem(agent =>
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("Start presence: " + applicationName.ToString());
|
||||
amt.AgentPresence.Local.StartPresence(applicationName);
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Start presence failed with exception: " + ex.Message);
|
||||
}
|
||||
});
|
||||
Console.WriteLine(applicationName + " is sending hearbeats, to stop press any key....");
|
||||
Console.ReadKey();
|
||||
}
|
||||
|
||||
public static void Expire(IAMTInstance amt, string applicationName)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.AgentPresence.Local.ExpirePresence(applicationName);
|
||||
Console.WriteLine("Expire " + applicationName + " completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Expire " + applicationName + " failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,74 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 - 2014 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using HLAPI;
|
||||
using Common.Utils;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace AgentPresenceLocalSample2
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
ci?.Dispose();
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// StartPresence causes the agent to start sends heartbeats.
|
||||
AgentPresenceLocalFunctionality2.Start(amt, "Agent1");
|
||||
|
||||
// ExpirePresence causes the StartPresence to stop sending heartbeats. The thread that performs it was finished
|
||||
// and the agent's state was changed to "expire".
|
||||
AgentPresenceLocalFunctionality2.Expire(amt, "Agent1");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
amt?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("AgentPresenceLocalSample2")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Intel Corporation")]
|
||||
[assembly: AssemblyProduct("AgentPresenceLocalSample2")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("60e221c1-b614-4d5d-85a8-f1a4bd4775e7")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,341 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 - 2015 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.AgentPresence;
|
||||
using Intel.Manageability.SystemDefense;
|
||||
using System.Collections.ObjectModel;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using System.Collections;
|
||||
|
||||
|
||||
namespace AgentPresenceRemoteSample
|
||||
{
|
||||
static class AgentPresenceRemoteFunctionality
|
||||
{
|
||||
public static void CreateOrUpdateAgent(IAMTInstance amt, string agentName)
|
||||
{
|
||||
// --------------------
|
||||
// Create Agent
|
||||
// --------------------
|
||||
|
||||
var actions = new List<AgentAction>
|
||||
{
|
||||
new AgentAction(AgentState.NotStarted, AgentState.Running, true, ActionSystemDefense.DeactivatePolicy,
|
||||
false),
|
||||
new AgentAction(AgentState.Stopped, AgentState.Expired | AgentState.Stopped, false,
|
||||
ActionSystemDefense.ActivatePolicy, false)
|
||||
};
|
||||
|
||||
Console.Write("Enter agent startup timeout in seconds (default is 120): ");
|
||||
if (!ushort.TryParse(Console.ReadLine(), out var startupTimer))
|
||||
startupTimer = 120;
|
||||
Console.WriteLine();
|
||||
|
||||
Console.Write("Enter agent heartbeat timeout in seconds (default is 120): ");
|
||||
if (!ushort.TryParse(Console.ReadLine(), out var intervalTimer))
|
||||
intervalTimer = 120;
|
||||
Console.WriteLine();
|
||||
|
||||
// Create policy and pass the action list as a parameter
|
||||
Agent agent = new Agent(agentName, actions, startupTimer, intervalTimer);
|
||||
|
||||
// -------------------------------------------
|
||||
// Add the agent to the Intel AMT instance
|
||||
// -------------------------------------------
|
||||
|
||||
try
|
||||
{
|
||||
amt.AgentPresence.Remote.CreateOrUpdateAgent(agent);
|
||||
Console.WriteLine("Create agent completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Create agent failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DisplayAgents(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve all agents
|
||||
List<Agent> agents = amt.AgentPresence.Remote.GetAllAgents();
|
||||
|
||||
Console.WriteLine("Agents:");
|
||||
Console.WriteLine("-------");
|
||||
|
||||
// Go over the agents and display their capabilities
|
||||
IEnumerator agentEnumerator = agents.GetEnumerator();
|
||||
while (agentEnumerator.MoveNext())
|
||||
{
|
||||
PrintAgentContent(agentEnumerator.Current as Agent);
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Display agents failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void GetAgent(IAMTInstance amt, string agentName)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Retrieve all agents
|
||||
Agent agent = amt.AgentPresence.Remote.GetAgent(agentName);
|
||||
Console.WriteLine("\nAgent:");
|
||||
Console.WriteLine("-------");
|
||||
|
||||
PrintAgentContent(agent);
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Display agent failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DisplayCapabalities(IAMTInstance amt)
|
||||
{
|
||||
// Display general agent presence capabilities
|
||||
AgentPresenceCapabilities generalCapabilities = amt.AgentPresence.Remote.GetGeneralCapabilities();
|
||||
Console.WriteLine("\nGeneral capabilities:");
|
||||
Console.WriteLine("\tMax Supported Agents: {0} ", generalCapabilities.MaxTotalAgents);
|
||||
Console.WriteLine("\tMax Supported Actions: {0} ", generalCapabilities.MaxTotalActions);
|
||||
Console.WriteLine("\tMax Supported EAC Agents: {0} ", generalCapabilities.MaxToatalEacAgents);
|
||||
Console.WriteLine("\tMin Supported Actions: {0} ", generalCapabilities.MinAgentActions);
|
||||
}
|
||||
|
||||
public static void DeleteAgent(IAMTInstance amt, string agentName)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.AgentPresence.Remote.DeleteAgent(agentName);
|
||||
Console.WriteLine("Delete agent completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Delete agent failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DeleteAllAgent(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.AgentPresence.Remote.DeleteAllAgents();
|
||||
Console.WriteLine("Delete all agents completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Delete agents failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetAgentPresencePolicy(IAMTInstance amt)
|
||||
{
|
||||
Collection<Policy> policies = new Collection<Policy>();
|
||||
Collection<UserFilter> filters = new Collection<UserFilter>();
|
||||
|
||||
// ----------------------
|
||||
// Create Policy #1
|
||||
// ----------------------
|
||||
|
||||
// Prepare filter list (create ipfilter for block ipv4 packets and ethernet filter for rarp packets)
|
||||
IPFilter ipFilter = FilterFactory.CreateIPFilter("ipFilter", FilterType.Drop, FilterDirection.Both, true, IPVersion.IPv4);
|
||||
EthernetFilter etherFilter = FilterFactory.CreateEthernetFilter("etherFilter", FilterType.StatisticsAndDrop, FilterDirection.Incoming, false, (ushort)EtherTypes.ETH_TYPE_RARP);
|
||||
|
||||
// Add the filters we just created to the filter list
|
||||
filters.Add(ipFilter);
|
||||
filters.Add(etherFilter);
|
||||
|
||||
// Create policy and pass the filters list as a parameter
|
||||
policies.Add(new Policy("MyPolicy", 10, 150, filters));
|
||||
|
||||
// Add the policy to the Intel AMT instance
|
||||
try
|
||||
{
|
||||
amt.SystemDefense.PolicyStore.CreateOrUpdatePolicies(policies);
|
||||
Console.WriteLine("Create policy completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Create policy failed with exception: " + ex.Message);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Set the policy to agent presence on the supported interface
|
||||
amt.AgentPresence.Remote.SetSystemDefensePolicy("MyPolicy", Intel.Manageability.AgentPresence.NetworkInterface.Wired);
|
||||
Console.WriteLine("Set the policy to Agent Presence completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Set the policy to Agent Presence failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void GetAgentPresencePolicy(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Get the policy from agent presence on the supported interface
|
||||
Policy policy = amt.AgentPresence.Remote.GetSystemDefensePolicy(Intel.Manageability.AgentPresence.NetworkInterface.Wired);
|
||||
Console.WriteLine("\nAgent Presence Policy:");
|
||||
Console.WriteLine("----------------------");
|
||||
PrintAgentPolicy(policy);
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Get the policy from Agent Presence failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void RemoveAgentPresencePolicy(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Remove the policy from agent presence on the supported interface
|
||||
amt.AgentPresence.Remote.RemoveSystemDefensePolicy(Intel.Manageability.AgentPresence.NetworkInterface.Wired);
|
||||
Console.WriteLine("Remove the policy from Agent Presence completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Remove the policy from Agent Presence failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetExpirationActionOnAgentPresenceWatchDog(IAMTInstance amt,string agentName)
|
||||
{
|
||||
try
|
||||
{
|
||||
//set expiration action properties
|
||||
WatchDogExpirationAction expirationAction = new WatchDogExpirationAction(ExpirationAction.Reboot, ExpirationAction.Reboot, 60, true);
|
||||
amt.AgentPresence.Remote.SetExpirationAction(expirationAction);
|
||||
//apply expiration action on specific agent
|
||||
amt.AgentPresence.Remote.ApplyActionOnWatchDog(agentName, true);
|
||||
Console.WriteLine("Set expiration action completed successfully.");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Set expiration action failed with exception: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private static void PrintAgentContent(Agent agent)
|
||||
{
|
||||
Console.WriteLine("Agent Name: {0} \n", agent.ApplicationName);
|
||||
Console.WriteLine("\tDevice ID: {0} ", agent.DeviceID);
|
||||
Console.WriteLine("\tState: {0} ", agent.CurrentState);
|
||||
Console.WriteLine("\tStartup Interval: {0} ", agent.StartupInterval);
|
||||
Console.WriteLine("\tTimeout Interval: {0} ", agent.TimeoutInterval);
|
||||
|
||||
// Go over the actions and display their capabilities
|
||||
IEnumerator actionEnumerator = agent.Actions.GetEnumerator();
|
||||
Console.WriteLine("Actions:");
|
||||
while (actionEnumerator.MoveNext())
|
||||
{
|
||||
var action = actionEnumerator.Current as AgentAction;
|
||||
if (action == null)
|
||||
{
|
||||
Console.WriteLine("\tError: Failed to convert action to AgentAction");
|
||||
break;
|
||||
}
|
||||
PrintAction(actionEnumerator.Current as AgentAction);
|
||||
}
|
||||
}
|
||||
|
||||
private static void PrintAction(AgentAction action)
|
||||
{
|
||||
Console.WriteLine("\n\t* Old State: {0} ", action.OldState);
|
||||
Console.WriteLine("\t New State: {0} ", action.NewState);
|
||||
Console.WriteLine("\t Create Event: {0} ", action.EventOnTransition);
|
||||
Console.WriteLine("\t System Defense Action: {0} ", action.ActionSystemDefense);
|
||||
Console.WriteLine("\t EAC Action: {0} \n", action.ActionEAC);
|
||||
}
|
||||
|
||||
private static void PrintAgentPolicy(Policy policy)
|
||||
{
|
||||
Console.WriteLine("Policy Name: {0} ", policy.Name);
|
||||
Console.WriteLine("\tPrecedence: {0} ", policy.Precedence);
|
||||
Console.WriteLine("\tantiSpoofingSupport: {0} ", policy.antiSpoofingSupport);
|
||||
Console.WriteLine("\tTimeout: {0} ", policy.Timeout);
|
||||
Console.WriteLine("\tTx filter:\n\t\tDefaultCount: {0}\n\t\tDefaultDrop: {1}\n\t\tDefaultMatchEvent: {2}", policy.TxFilter.DefaultCount, policy.TxFilter.DefaultDrop, policy.TxFilter.DefaultMatchEvent);
|
||||
Console.WriteLine("\tRx filter:\n\t\tDefaultCount: {0}\n\t\tDefaultDrop: {1}\n\t\tDefaultMatchEvent: {2}", policy.RxFilter.DefaultCount, policy.RxFilter.DefaultDrop, policy.RxFilter.DefaultMatchEvent);
|
||||
|
||||
// Go over the filters and display their capabilities
|
||||
IEnumerator filterEnumerator = policy.Filters.GetEnumerator();
|
||||
while (filterEnumerator.MoveNext())
|
||||
{
|
||||
Filter curFilter = filterEnumerator.Current as Filter;
|
||||
|
||||
if (curFilter is IPFilter)
|
||||
{
|
||||
PrintIPFilter(curFilter as IPFilter);
|
||||
}
|
||||
else if (curFilter is EthernetFilter)
|
||||
{
|
||||
PrintEthernetFilter(curFilter as EthernetFilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void PrintEthernetFilter(EthernetFilter ethernetFilter)
|
||||
{
|
||||
Console.WriteLine("\tFilter Name: {0} ", ethernetFilter.Name);
|
||||
Console.WriteLine("\t\tFilter Direction: {0}", ethernetFilter.Direction.ToString());
|
||||
Console.WriteLine("\t\tCreate Event: {0}", ethernetFilter.CreateEvent);
|
||||
Console.WriteLine("\t\tFilter Profile: {0}", ethernetFilter.Profile.ToString());
|
||||
if (ethernetFilter.Profile == FilterType.RateLimit)
|
||||
Console.WriteLine("\t\tEvents Per Second: {0}", ethernetFilter.EventsPerSecond);
|
||||
|
||||
Console.WriteLine("\t\tProtocol ID: {0}", ethernetFilter.ProtocolID);
|
||||
}
|
||||
|
||||
private static void PrintIPFilter(IPFilter ipFilter)
|
||||
{
|
||||
Console.WriteLine("\tFilter Name: {0} ", ipFilter.Name);
|
||||
Console.WriteLine("\t\tFilter Direction: {0}", ipFilter.Direction.ToString());
|
||||
Console.WriteLine("\t\tCreate Event: {0}", ipFilter.CreateEvent);
|
||||
Console.WriteLine("\t\tFilter Profile: {0}", ipFilter.Profile.ToString());
|
||||
if (ipFilter.Profile == FilterType.RateLimit)
|
||||
Console.WriteLine("\t\tEvents Per Second: {0}", ipFilter.EventsPerSecond);
|
||||
|
||||
Console.WriteLine("\t\tIP Version: {0}", ipFilter.IpVersion.ToString());
|
||||
if (ipFilter.IPAddress != null)
|
||||
{
|
||||
Console.WriteLine("\t\tIP Header Address: {0}", ipFilter.IPHeaderAddress.ToString());
|
||||
Console.WriteLine("\t\tIP Address: {0}", ipFilter.IPAddress.ToString());
|
||||
}
|
||||
if (ipFilter.IPMask != null)
|
||||
Console.WriteLine("\t\tIP Mask: {0}", ipFilter.IPMask.ToString());
|
||||
|
||||
if (ipFilter is ProtocolFilter)
|
||||
Console.WriteLine("\t\tProtocol ID: {0}", ((ProtocolFilter)ipFilter).ProtocolID);
|
||||
else if (ipFilter is TCPFilter)
|
||||
{
|
||||
Console.WriteLine("\t\tProtocol: TCP");
|
||||
if (((TCPFilter)ipFilter).PortFilterExists)
|
||||
{
|
||||
Console.WriteLine("\t\tHeader Port Address: {0}", ((TCPFilter)ipFilter).HeaderPortAddress);
|
||||
Console.WriteLine("\t\tPort1: {0}", ((TCPFilter)ipFilter).Port1);
|
||||
Console.WriteLine("\t\tPort2: {0}", ((TCPFilter)ipFilter).Port2);
|
||||
}
|
||||
Console.WriteLine("\t\tFlags On: {0}", ((TCPFilter)ipFilter).FlagsOn);
|
||||
Console.WriteLine("\t\tFlags Off: {0}", ((TCPFilter)ipFilter).FlagsOff);
|
||||
}
|
||||
else if (ipFilter is UDPFilter)
|
||||
{
|
||||
Console.WriteLine("\t\tProtocol: UDP");
|
||||
Console.WriteLine("\t\tHeader Port Address: {0}", ((UDPFilter)ipFilter).HeaderPortAddress);
|
||||
Console.WriteLine("\t\tPort1: {0}", ((UDPFilter)ipFilter).Port1);
|
||||
Console.WriteLine("\t\tPort2: {0}", ((UDPFilter)ipFilter).Port2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,105 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 - 2015 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Common.Utils;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace AgentPresenceRemoteSample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
ci?.Dispose();
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// When creating an agent that is related to the EventManager feature, EventManager sends an event when Agent.eventOnTransition equals true.
|
||||
// The event that was sent contains only the first 6 characters of the agent's name.
|
||||
// Therefore, we recommend naming an agent with max length of 6 characters,
|
||||
// otherwise the event that will be sent will include only the first part of the agent's name.
|
||||
|
||||
// Create Agent
|
||||
AgentPresenceRemoteFunctionality.CreateOrUpdateAgent(amt, "Agent1");
|
||||
|
||||
// Create second Agent
|
||||
AgentPresenceRemoteFunctionality.CreateOrUpdateAgent(amt, "Agent2");
|
||||
|
||||
// Get all Agents
|
||||
AgentPresenceRemoteFunctionality.DisplayAgents(amt);
|
||||
|
||||
// Get Agent Presence capabilities
|
||||
AgentPresenceRemoteFunctionality.DisplayCapabalities(amt);
|
||||
|
||||
// Get Agent by name
|
||||
AgentPresenceRemoteFunctionality.GetAgent(amt, "Agent1");
|
||||
|
||||
// Set the policy for agent presence
|
||||
AgentPresenceRemoteFunctionality.SetAgentPresencePolicy(amt);
|
||||
|
||||
// Get the policy from agent presence
|
||||
AgentPresenceRemoteFunctionality.GetAgentPresencePolicy(amt);
|
||||
|
||||
// Remove the policy from agent presence
|
||||
AgentPresenceRemoteFunctionality.RemoveAgentPresencePolicy(amt);
|
||||
|
||||
//Set expiration action on agent
|
||||
AgentPresenceRemoteFunctionality.SetExpirationActionOnAgentPresenceWatchDog(amt, "Agent1");
|
||||
|
||||
// Delete specific agent
|
||||
AgentPresenceRemoteFunctionality.DeleteAgent(amt, "Agent1");
|
||||
|
||||
// Delete specific agent
|
||||
AgentPresenceRemoteFunctionality.DeleteAgent(amt, "Agent2");
|
||||
|
||||
// Delete all agents
|
||||
AgentPresenceRemoteFunctionality.DeleteAllAgent(amt);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
amt?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("AgentPrenceImpl")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Intel Corporation")]
|
||||
[assembly: AssemblyProduct("AgentPrenceImpl")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("f6633285-7cfa-4980-882a-a6fb6778f2e3")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,102 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2009-2013 All Rights Reserved.
|
||||
//
|
||||
// File: AlarmClockFunctionality.cs
|
||||
//
|
||||
// Contents: Demonstrate the IAlarmClock interface.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.AlarmClock;
|
||||
using Intel.Manageability.Exceptions;
|
||||
|
||||
namespace AlarmClockSample
|
||||
{
|
||||
public class AlarmClockFunctionality
|
||||
{
|
||||
/// <summary>
|
||||
/// Display the current alarm clock settings
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void DisplaySettings(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
AlarmClockSettings settings = amt.AlarmClock.GetAlarmClockSettings();
|
||||
Console.WriteLine("Alarm Clock Settings:\n=====================\n");
|
||||
Console.WriteLine("Next Alarm Time: {0}", (settings.NextAlarmTime != DateTime.MinValue) ? settings.NextAlarmTime.ToString() : @"N\A");
|
||||
Console.WriteLine("Alarm Clock Interval: {0}", (settings.AlarmInterval != null) ? settings.AlarmInterval.ToString() : @"N\A");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Get alarm clock settings failed");
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Configure a single wake up event
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void SetSingleAlarmTime(IAMTInstance amt)
|
||||
{
|
||||
DateTime date;
|
||||
try
|
||||
{
|
||||
date = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day + 1);
|
||||
Console.Write("Setting next alarm time to: "+date.ToString()+"...\t");
|
||||
amt.AlarmClock.SetSingleAlarm(date);
|
||||
Console.WriteLine("Success");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Configure a recurring wake up event
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void SetRecurringAlarm(IAMTInstance amt)
|
||||
{
|
||||
DateTime date;
|
||||
try
|
||||
{
|
||||
date = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day + 1);
|
||||
Console.Write("Setting recurring alarm to:" + date.ToString()+", with interval of 1 day...\t");
|
||||
amt.AlarmClock.SetRecurringAlarm(date, new AlarmInterval(1,0,0));
|
||||
Console.WriteLine("Success");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Disable the Alarm Clock
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void Disable(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.Write("Disable the alarm clock...\t");
|
||||
amt.AlarmClock.DisableAll();
|
||||
Console.WriteLine("Success");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,76 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2010-2014 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Common.Utils;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace AlarmClockSample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
ci?.Dispose();
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Get the current alarm clock settings
|
||||
AlarmClockFunctionality.DisplaySettings(amt);
|
||||
|
||||
// Set a recurring alarm
|
||||
AlarmClockFunctionality.SetRecurringAlarm(amt);
|
||||
|
||||
// Set a single alarm
|
||||
AlarmClockFunctionality.SetSingleAlarmTime(amt);
|
||||
|
||||
// Disable the alarm clock
|
||||
AlarmClockFunctionality.Disable(amt);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
amt?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("AlarmClockSample")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Intel Corporation")]
|
||||
[assembly: AssemblyProduct("AlarmClockSample")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("84826e89-3928-4baf-a3ef-48c3bbf42bd1")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,215 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2009-2012 All Rights Reserved.
|
||||
//
|
||||
// File: BootControlFunctionality.cs
|
||||
//
|
||||
// Contents: Demonstrate the IBootControl interface.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.BootControl;
|
||||
using Intel.Manageability.Exceptions;
|
||||
|
||||
namespace BootControlSample
|
||||
{
|
||||
class BootControlFunctionality
|
||||
{
|
||||
/// <summary>
|
||||
/// Prints the boot capabilities of the Intel AMT system.
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void GetCapabilities(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
BootCapabilities bootCapabilities = amt.BootControl.BootCapabilities;
|
||||
|
||||
Console.WriteLine("Boot Capabilities:");
|
||||
Console.WriteLine("BiosReflash: " + bootCapabilities.BiosReflash);
|
||||
Console.WriteLine("BiosSetup: " + bootCapabilities.BiosSetup);
|
||||
Console.WriteLine("BiosPause: " + bootCapabilities.BiosPause);
|
||||
Console.WriteLine("LockPowerButton: " + bootCapabilities.LockPowerButton);
|
||||
Console.WriteLine("LockResetButton: " + bootCapabilities.LockResetButton);
|
||||
Console.WriteLine("LockKeyboard: " + bootCapabilities.LockKeyboard);
|
||||
Console.WriteLine("LockSleepButton: " + bootCapabilities.LockSleepButton);
|
||||
Console.WriteLine("UserPasswordBypass: " + bootCapabilities.UserPasswordBypass);
|
||||
Console.WriteLine("ForceProgressEvents: " + bootCapabilities.ForceProgressEvents);
|
||||
Console.WriteLine("ConfigurationDataReset: " + bootCapabilities.ConfigurationDataReset);
|
||||
Console.WriteLine("IDER: " + bootCapabilities.IDER);
|
||||
Console.WriteLine("SOL: " + bootCapabilities.SOL);
|
||||
|
||||
Console.WriteLine("SafeMode: " + bootCapabilities.SafeMode);
|
||||
Console.WriteLine("HardDriveBoot: " + bootCapabilities.HardDriveBoot);
|
||||
Console.WriteLine("CdOrDvdBoot: " + bootCapabilities.CdOrDvdBoot);
|
||||
Console.WriteLine("PXEBoot: " + bootCapabilities.PXEBoot);
|
||||
Console.WriteLine("DiagnosticsBoot: " + bootCapabilities.DiagnosticsBoot);
|
||||
|
||||
Console.WriteLine("FirmwareVerbosityScreenBlank: " + bootCapabilities.FirmwareVerbosityScreenBlank);
|
||||
Console.WriteLine("FirmwareVerbosityVerbose: " + bootCapabilities.FirmwareVerbosityVerbose);
|
||||
Console.WriteLine("FirmwareVerbosityQuiet: " + bootCapabilities.FirmwareVerbosityQuiet);
|
||||
|
||||
//The Enforce Secure Boot option is enabled in Intel AMT version 8.1 and above.
|
||||
if (CompareVersions(amt.MajorVersion + "." + amt.MinorVersion, "8.0") > 0)
|
||||
Console.WriteLine("BiosSecureBoot: " + bootCapabilities.BiosSecureBoot);
|
||||
|
||||
//The Enforce Secure Erase option is enabled in Intel AMT version 11.0 and above.
|
||||
if (CompareVersions(amt.MajorVersion + "." + amt.MinorVersion, "11.0") >= 0)
|
||||
Console.WriteLine("SecureErase: " + bootCapabilities.SecureErase);
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Get capabilities failed");
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Prints the current boot settings of the Intel AMT system.
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void GetCurrentSetting(IAMTInstance amt)
|
||||
{
|
||||
BootOptionsFlags bootOptions;
|
||||
BootSource bootSource;
|
||||
FirmwareVerbosityEnum FWVerbosity;
|
||||
|
||||
try
|
||||
{
|
||||
amt.BootControl.GetCurrentSettings(out bootSource, out bootOptions, out FWVerbosity);
|
||||
|
||||
Console.WriteLine("Current boot Options: " + bootOptions.ToString());
|
||||
Console.Write("Current boot Source: " + bootSource.Source.ToString());
|
||||
Console.WriteLine(". index: " + bootSource.Index.ToString());
|
||||
Console.WriteLine("Current Firmware Verbosity: " + FWVerbosity.ToString());
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Get current settings failed");
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the next boot to boot from a CD\DVD
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void SetNextBoot1(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
BootSource bootSource = new BootSource(BootSourceEnum.CdOrDvdBoot, 1);
|
||||
amt.BootControl.SetNextBoot(bootSource);
|
||||
Console.WriteLine("Set next boot Succeed");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Set next boot failed");
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the next boot to use IDE-R, SOL, and boot to the BIOS according to the capabilities.
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void SetNextBoot2(IAMTInstance amt)
|
||||
{
|
||||
BootCapabilities bootCapabilities = amt.BootControl.BootCapabilities;
|
||||
BootSource bootSource;
|
||||
|
||||
if (bootCapabilities.IDER)
|
||||
bootSource = new BootSource(BootSourceEnum.IDERCD);
|
||||
else
|
||||
bootSource = new BootSource(BootSourceEnum.NONE);
|
||||
BootOptionsFlags flags = BootOptionsFlags.NONE;
|
||||
if (bootCapabilities.SOL)
|
||||
flags |= BootOptionsFlags.UseSOL;
|
||||
if (bootCapabilities.BiosSetup)
|
||||
flags |= BootOptionsFlags.BiosSetup;
|
||||
FirmwareVerbosityEnum FWverbosity = FirmwareVerbosityEnum.NONE;
|
||||
if (bootCapabilities.FirmwareVerbosityVerbose)
|
||||
FWverbosity = FirmwareVerbosityEnum.Verbose;
|
||||
|
||||
try
|
||||
{
|
||||
amt.BootControl.SetNextBoot(bootSource, flags, FWverbosity);
|
||||
Console.WriteLine("Set next boot succeed");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Set next boot failed");
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enforce Secure Boot for the next boot.
|
||||
/// The Enforce Secure Boot ability is enabled in Intel AMT version 8.1 and above. It is enabled only on a machine that was burned specially with the BiosSecureBoot option.
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void SetNextBoot3(IAMTInstance amt)
|
||||
{
|
||||
BootCapabilities bootCapabilities = amt.BootControl.BootCapabilities;
|
||||
BootOptionsFlags flags = BootOptionsFlags.NONE;
|
||||
if(bootCapabilities.BiosSecureBoot)
|
||||
flags |= BootOptionsFlags.EnforceSecureBoot;
|
||||
|
||||
try
|
||||
{
|
||||
amt.BootControl.SetNextBoot(flags);
|
||||
Console.WriteLine("Enforce Secure Boot for next boot succeed");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Enforce Secure Boot for next boot failed");
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clear the boot options for the next boot.
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void Clear(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.BootControl.ClearBootOptions();
|
||||
Console.WriteLine("Clear boot options succeed");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Clear boot options failed");
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Compare versions of the Intel AMT instance.
|
||||
/// </summary>
|
||||
/// <param name="amtversion">The version of the Intel AMT.</param>
|
||||
/// <param name="version">The version to compare with.</param>
|
||||
/// <returns> Less than zero -The current Intel AMT version is a version before version.</returns>
|
||||
/// <returns> Zero - The current Intel AMT version is the same version as version.</returns>
|
||||
/// <returns> Greater than zero - The current Intel AMT Version is a version subsequent to version.</returns>
|
||||
private static int CompareVersions(string amtversion, string version)
|
||||
{
|
||||
try
|
||||
{
|
||||
Version amtVersion = new Version(amtversion);
|
||||
Version versionToCopmare = new Version(version);
|
||||
return amtVersion.CompareTo(versionToCopmare);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new Exception("Compare versions failed. "+e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,82 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2010-2014 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Common.Utils;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace BootControlSample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
ci?.Dispose();
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
//Get Boot Capabilities
|
||||
BootControlFunctionality.GetCapabilities(amt);
|
||||
|
||||
//Get Current Setting
|
||||
BootControlFunctionality.GetCurrentSetting(amt);
|
||||
|
||||
//Set next boot to boot from CD
|
||||
BootControlFunctionality.SetNextBoot1(amt);
|
||||
|
||||
//Set the next boot to use IDER + SOL and boot to BIOS according to the capabilities.
|
||||
BootControlFunctionality.SetNextBoot2(amt);
|
||||
|
||||
//Enforce Secure Boot
|
||||
BootControlFunctionality.SetNextBoot3(amt);
|
||||
|
||||
//Clear the boot options
|
||||
BootControlFunctionality.Clear(amt);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
amt?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("BootControlSample")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Intel Corporation")]
|
||||
[assembly: AssemblyProduct("BootControlSample")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("455b2575-5958-4771-97f3-d5bf53a24ca1")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,285 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2012 - 2013 All Rights Reserved.
|
||||
//
|
||||
// File: CertificateManagementFunctionality.cs
|
||||
//
|
||||
// Contents: Example that shows how to use CertificateManagement High Level API
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
|
||||
namespace CertificateManagementSample
|
||||
{
|
||||
class CertificateManagementFunctionality
|
||||
{
|
||||
private const string LEAF_CERT = @"..\..\LeafCert.p12";
|
||||
private const string ROOT_CA = @"..\..\rootCA.cer";
|
||||
private const string ROOT_CERT = @"..\..\RootCert.cer";
|
||||
|
||||
public static void AddCertificate(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("\nAdd a certificate to Intel AMT:");
|
||||
Console.WriteLine("===============================\n");
|
||||
|
||||
// Read certificate with X509Certificate2 from .p12 file. The given property X509KeyStorageFlags.Exportable
|
||||
// gives the X509Certificate2 object the instruction to export also the private key.
|
||||
using (X509Certificate2 certificate = new X509Certificate2(LEAF_CERT, "q", X509KeyStorageFlags.Exportable))
|
||||
{
|
||||
amt.Config.CertificateManagement.AddCertificate(certificate);
|
||||
}
|
||||
Console.WriteLine("A certificate including a private key added successfully.");
|
||||
}
|
||||
catch (CertificateManagementManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
catch(CryptographicException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void AddTrustedRootCertificate(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("\nAdd a trusted root certificate to Intel AMT:");
|
||||
Console.WriteLine("============================================\n");
|
||||
// Read trusted root certificate with X509Certificate2 from .cer file.
|
||||
using (X509Certificate2 certificate = new X509Certificate2(ROOT_CA))
|
||||
{
|
||||
amt.Config.CertificateManagement.AddCertificate(certificate);
|
||||
}
|
||||
Console.WriteLine("A trusted root certificate added successfully");
|
||||
}
|
||||
catch (CertificateManagementManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
catch (CryptographicException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void AddCertificateChain(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("\nAdd a certificate chain to Intel AMT:");
|
||||
Console.WriteLine("=====================================\n");
|
||||
|
||||
using (X509Certificate2 rootCertificate = new X509Certificate2(ROOT_CERT))
|
||||
{
|
||||
using (X509Certificate2 leafCertificate = new X509Certificate2(LEAF_CERT, "q", X509KeyStorageFlags.Exportable)) //*****
|
||||
{
|
||||
// Create X509Chain object.
|
||||
using (X509Chain trustedChain = new X509Chain())
|
||||
{
|
||||
// Set to the X509Chain object an additional certificates store from which the chain will be built.
|
||||
trustedChain.ChainPolicy.ExtraStore.Add(rootCertificate);
|
||||
// Ignore when determining certificate verification invalid certificates like:
|
||||
// expired certificates, certificate with invalid policy, etc.
|
||||
// Set this policy to AllFlags is necessary to the attached certificates in this sample only (The
|
||||
// attached certificates are not valid).
|
||||
trustedChain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags;
|
||||
// Build certificates chain.
|
||||
trustedChain.Build(leafCertificate);
|
||||
// Add the chain elements to the certificate store in the Intel AMT.
|
||||
amt.Config.CertificateManagement.AddCertificate(trustedChain);
|
||||
}
|
||||
}
|
||||
}
|
||||
Console.WriteLine("Certificate chain added successfully.");
|
||||
}
|
||||
catch (CertificateManagementManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
catch (CryptographicException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void GetAllCertificates(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("\nGet all certificates:");
|
||||
Console.WriteLine("=====================\n");
|
||||
|
||||
List<X509Certificate2> certificates = amt.Config.CertificateManagement.GetAllCertificates();
|
||||
foreach (X509Certificate2 certificate in certificates)
|
||||
{
|
||||
PrintCertificate(certificate);
|
||||
}
|
||||
|
||||
Console.WriteLine("Get all certificates completed successfully.");
|
||||
}
|
||||
catch (CertificateManagementManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void GetTrustedRootCertificates(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("\nGet all trusted root certificates:");
|
||||
Console.WriteLine("==================================\n");
|
||||
|
||||
List<X509Certificate2> certificates = amt.Config.CertificateManagement.GetTrustedRootCertificates();
|
||||
foreach (X509Certificate2 certificate in certificates)
|
||||
{
|
||||
PrintCertificate(certificate);
|
||||
}
|
||||
Console.WriteLine("Get all trusted root certificates completed successfully.");
|
||||
}
|
||||
catch (CertificateManagementManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void GetNonTrustedRootCertificates(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("\nGet all non trusted root certificates:");
|
||||
Console.WriteLine("======================================\n");
|
||||
|
||||
List<X509Certificate2> certificates = amt.Config.CertificateManagement.GetNonTrustedRootCertificates();
|
||||
foreach (X509Certificate2 certificate in certificates)
|
||||
{
|
||||
PrintCertificate(certificate);
|
||||
}
|
||||
|
||||
Console.WriteLine("Get all non trusted root certificates completed successfully.");
|
||||
}
|
||||
catch (CertificateManagementManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void GetCertificateChain(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("\nGet certificates chain:");
|
||||
Console.WriteLine("=======================\n");
|
||||
|
||||
// Get certificates chain of certificate leaf.
|
||||
using (X509Certificate2 leaf = new X509Certificate2(LEAF_CERT, "q", X509KeyStorageFlags.Exportable))
|
||||
{
|
||||
X509Chain chain = amt.Config.CertificateManagement.GetChain(leaf);
|
||||
foreach (X509ChainElement x509ChainElement in chain.ChainElements)
|
||||
{
|
||||
PrintCertificate(x509ChainElement.Certificate);
|
||||
}
|
||||
}
|
||||
Console.WriteLine("Get certificates chain completed successfully.");
|
||||
}
|
||||
catch (CertificateManagementManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
catch (CryptographicException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static void RemoveCertificate(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("\nRemove certificate:");
|
||||
Console.WriteLine("===================\n");
|
||||
|
||||
// Remove certificate including its private key.
|
||||
using (X509Certificate2 certificate = new X509Certificate2(LEAF_CERT, "q", X509KeyStorageFlags.Exportable))
|
||||
{
|
||||
amt.Config.CertificateManagement.RemoveCertificate(certificate);
|
||||
}
|
||||
Console.WriteLine("Remove certificate including its private key completed successfully.");
|
||||
|
||||
}
|
||||
catch (CertificateManagementManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
catch (CryptographicException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void RemoveNonTrustedRootCertificates(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("\nRemove non trusted root certificates:");
|
||||
Console.WriteLine("=====================================\n");
|
||||
|
||||
// Delete non trusted roots certificates including their private keys.
|
||||
amt.Config.CertificateManagement.RemoveNonTrustedRootCertificates(true);
|
||||
|
||||
Console.WriteLine("Remove non trusted root certificates completed successfully.");
|
||||
|
||||
}
|
||||
catch (CertificateManagementManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void RemoveTrustedRootCertificates(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("\nRemove trusted root certificates:");
|
||||
Console.WriteLine("=================================\n");
|
||||
|
||||
amt.Config.CertificateManagement.RemoveTrustedRootCertificates();
|
||||
|
||||
Console.WriteLine("Remove trusted root certificates completed successfully.");
|
||||
}
|
||||
catch (CertificateManagementManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void PrintCertificate(X509Certificate2 certificate)
|
||||
{
|
||||
Console.WriteLine("Name : {0}", certificate.FriendlyName);
|
||||
Console.WriteLine("Issuer : {0}", certificate.Issuer);
|
||||
Console.WriteLine("Subject : {0}", certificate.Subject);
|
||||
Console.WriteLine("Has Private Key : {0}", certificate.HasPrivateKey);
|
||||
Console.WriteLine("=================================================\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Binary file not shown.
@ -0,0 +1,85 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2012 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Common.Utils;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace CertificateManagementSample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
ci?.Dispose();
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Add a certificate including a private key.
|
||||
CertificateManagementFunctionality.AddCertificate(amt);
|
||||
// Add a trusted root certificate.
|
||||
CertificateManagementFunctionality.AddTrustedRootCertificate(amt);
|
||||
// Add a certificate chain.
|
||||
CertificateManagementFunctionality.AddCertificateChain(amt);
|
||||
// Get All Certificates.
|
||||
CertificateManagementFunctionality.GetAllCertificates(amt);
|
||||
// Get Trusted Root Certificates.
|
||||
CertificateManagementFunctionality.GetTrustedRootCertificates(amt);
|
||||
// Get Non Trusted Root Certificates.
|
||||
CertificateManagementFunctionality.GetNonTrustedRootCertificates(amt);
|
||||
// Get certificate chain.
|
||||
CertificateManagementFunctionality.GetCertificateChain(amt);
|
||||
// Remove a certificate.
|
||||
CertificateManagementFunctionality.RemoveCertificate(amt);
|
||||
// Remove all NonTrustedRoot certificates.
|
||||
CertificateManagementFunctionality.RemoveNonTrustedRootCertificates(amt);
|
||||
// Remove all TrustedRoot certificates.
|
||||
CertificateManagementFunctionality.RemoveTrustedRootCertificates(amt);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
amt?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("CertificateManagementSample")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("CertificateManagementSample")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("b6677e67-7999-4343-b231-20dc40e9c42c")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,81 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 1 (0x1)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer: CN=Demo Sub CA #5
|
||||
Validity
|
||||
Not Before: Nov 9 11:59:48 2011 GMT
|
||||
Not After : Nov 8 11:59:48 2012 GMT
|
||||
Subject: CN=Demo Sub CA #6
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (2048 bit)
|
||||
Modulus (2048 bit):
|
||||
00:c9:78:1e:f2:c9:c9:fb:93:b3:f6:6f:31:1c:9a:
|
||||
2a:f9:12:0b:23:7b:ca:ac:53:2c:fe:db:4d:7d:84:
|
||||
91:f9:2b:19:cf:02:dc:fc:22:30:a6:51:09:17:58:
|
||||
4c:d1:eb:65:38:b1:25:7a:29:16:35:3b:28:2e:27:
|
||||
16:be:de:06:ef:10:8d:41:56:bd:99:5d:23:05:7b:
|
||||
15:5c:dc:0f:b7:5d:e6:e2:3d:1f:9c:9b:69:6d:d9:
|
||||
66:2d:b8:24:f5:c1:96:57:c7:49:2c:ee:1c:d9:c0:
|
||||
0c:91:50:87:74:9b:72:e6:a8:c6:52:55:09:75:c0:
|
||||
ff:72:2c:08:31:bf:db:62:35:67:48:c7:43:fa:7f:
|
||||
c2:27:8d:19:7a:25:5b:66:96:03:f6:c4:8d:f8:87:
|
||||
80:d2:fe:e5:d2:11:bb:0d:0b:86:39:e2:e8:06:ef:
|
||||
be:43:14:aa:7b:3a:84:c3:c4:f5:14:37:40:5f:98:
|
||||
89:c9:d4:c7:bb:01:c0:20:10:de:d2:68:d5:fb:45:
|
||||
98:20:1b:59:43:cf:20:8c:94:1e:f2:50:8c:66:43:
|
||||
e9:2e:fc:d0:0c:0f:2c:b4:dd:10:34:df:38:e0:84:
|
||||
a3:ee:26:d7:83:48:6c:5d:89:14:b4:40:fd:d6:57:
|
||||
e4:37:34:91:ee:37:33:b9:b7:75:e5:42:82:cd:ca:
|
||||
aa:cd
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Subject Key Identifier:
|
||||
20:CC:F1:DF:45:3D:7A:6A:D2:E1:E2:69:EA:96:FF:0C:AF:86:B0:8E
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:F6:0C:12:F6:5A:EA:33:E9:A7:84:B5:A8:57:B5:D4:3A:AF:BB:48:E1
|
||||
DirName:/CN=Demo Sub CA #4
|
||||
serial:01
|
||||
|
||||
X509v3 Key Usage:
|
||||
Digital Signature, Certificate Sign, CRL Sign
|
||||
X509v3 Basic Constraints: critical
|
||||
CA:TRUE, pathlen:1
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
38:3e:10:6f:27:0f:39:ca:9f:2b:10:6d:3f:1d:fb:49:97:ba:
|
||||
bf:8c:ae:c6:d4:58:0f:16:92:f3:5a:61:31:72:f8:a3:60:04:
|
||||
63:fb:27:64:18:aa:f5:3b:a5:12:4a:c2:1d:c6:c6:30:1c:5a:
|
||||
a4:06:e6:60:41:42:06:8d:47:86:97:d8:38:79:c8:10:a9:91:
|
||||
7a:14:7b:8e:97:f4:d2:15:ed:c1:7a:62:4b:cd:81:85:20:3d:
|
||||
88:f8:b7:fc:66:b3:0b:f6:0b:b7:0e:70:c9:66:66:db:f4:ac:
|
||||
5a:93:76:96:79:cd:55:d2:28:8a:31:17:ec:e5:f3:89:82:62:
|
||||
d5:51:27:2f:b8:87:73:81:fc:24:84:11:3e:d5:42:15:d9:c8:
|
||||
90:44:62:62:f7:b2:c6:a7:ed:12:2c:50:16:52:e7:da:63:36:
|
||||
4e:3f:20:ec:16:e8:f3:fb:0d:87:a5:c4:c2:c1:dd:ec:91:6f:
|
||||
6f:ff:3a:05:5a:dc:ca:fd:6d:81:5d:b9:e0:19:98:19:fb:48:
|
||||
6a:06:6f:96:07:45:96:24:71:09:23:c7:72:3f:49:82:ad:31:
|
||||
87:d9:c8:2b:20:81:32:e2:77:14:11:83:e5:f1:21:a5:84:28:
|
||||
5a:64:67:55:4c:0c:63:0c:64:b3:e8:41:7f:e6:ab:89:3c:be:
|
||||
2a:bf:94:14
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDNDCCAhygAwIBAgIBATANBgkqhkiG9w0BAQUFADAZMRcwFQYDVQQDFA5EZW1v
|
||||
IFN1YiBDQSAjNTAeFw0xMTExMDkxMTU5NDhaFw0xMjExMDgxMTU5NDhaMBkxFzAV
|
||||
BgNVBAMUDkRlbW8gU3ViIENBICM2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
||||
CgKCAQEAyXge8snJ+5Oz9m8xHJoq+RILI3vKrFMs/ttNfYSR+SsZzwLc/CIwplEJ
|
||||
F1hM0etlOLEleikWNTsoLicWvt4G7xCNQVa9mV0jBXsVXNwPt13m4j0fnJtpbdlm
|
||||
Lbgk9cGWV8dJLO4c2cAMkVCHdJty5qjGUlUJdcD/ciwIMb/bYjVnSMdD+n/CJ40Z
|
||||
eiVbZpYD9sSN+IeA0v7l0hG7DQuGOeLoBu++QxSqezqEw8T1FDdAX5iJydTHuwHA
|
||||
IBDe0mjV+0WYIBtZQ88gjJQe8lCMZkPpLvzQDA8stN0QNN844ISj7ibXg0hsXYkU
|
||||
tED91lfkNzSR7jczubd15UKCzcqqzQIDAQABo4GGMIGDMB0GA1UdDgQWBBQgzPHf
|
||||
RT16atLh4mnqlv8Mr4awjjBBBgNVHSMEOjA4gBT2DBL2Wuoz6aeEtahXtdQ6r7tI
|
||||
4aEdpBswGTEXMBUGA1UEAxQORGVtbyBTdWIgQ0EgIzSCAQEwCwYDVR0PBAQDAgGG
|
||||
MBIGA1UdEwEB/wQIMAYBAf8CAQEwDQYJKoZIhvcNAQEFBQADggEBADg+EG8nDznK
|
||||
nysQbT8d+0mXur+MrsbUWA8WkvNaYTFy+KNgBGP7J2QYqvU7pRJKwh3GxjAcWqQG
|
||||
5mBBQgaNR4aX2Dh5yBCpkXoUe46X9NIV7cF6YkvNgYUgPYj4t/xmswv2C7cOcMlm
|
||||
Ztv0rFqTdpZ5zVXSKIoxF+zl84mCYtVRJy+4h3OB/CSEET7VQhXZyJBEYmL3ssan
|
||||
7RIsUBZS59pjNk4/IOwW6PP7DYelxMLB3eyRb2//OgVa3Mr9bYFdueAZmBn7SGoG
|
||||
b5YHRZYkcQkjx3I/SYKtMYfZyCsggTLidxQRg+XxIaWEKFpkZ1VMDGMMZLPoQX/m
|
||||
q4k8viq/lBQ=
|
||||
-----END CERTIFICATE-----
|
||||
@ -0,0 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDBzCCAe+gAwIBAgIJANOlD6v9jiMPMA0GCSqGSIb3DQEBCwUAMDIxFTATBgNV
|
||||
BAMTDERlbW8gUm9vdCBDQTELMAkGA1UEBhMCSUwxDDAKBgNVBAsTA0ZUTDAeFw0x
|
||||
MTA0MjUwODIwNDBaFw0xMTA0MjYwODIwNDBaMDIxFTATBgNVBAMTDERlbW8gUm9v
|
||||
dCBDQTELMAkGA1UEBhMCSUwxDDAKBgNVBAsTA0ZUTDCCASIwDQYJKoZIhvcNAQEB
|
||||
BQADggEPADCCAQoCggEBANxI7o63gycb1+Cq6WpHtsJiFDC7mN620P+A+kBopTPy
|
||||
z0WYLxK8827YwxTmi7zRN96SBYWMpS1SnJ8/rmNMILiVIXPyHn1E1usqGgxifckg
|
||||
RwgZbzNdaO9mi/G/mP3EG/vvk7ERAPc9bB8xWtV+s7nVzLdt/Bayq2UIYZj6yvH0
|
||||
1qFh6Mw6rQGPuVM+WUADOdv+y4+DF/WA88OjicOnhYaELJuW4mXZVz0DP8PoouPy
|
||||
N15ePml7v+Iuj8TUcn1C8BpsfLDtOYsZVrOVkzfXrjO0mfgGJnop8pp1bn/GbSKF
|
||||
G0ZlsXNoiJezXNq0f2ONUougC1JGdkWqWC2677OhfG0CAwEAAaMgMB4wDwYDVR0T
|
||||
AQH/BAUwAwEB/zALBgNVHQ8EBAMCAbYwDQYJKoZIhvcNAQELBQADggEBAC+3TpES
|
||||
wnlF+c/0L+Hf7z0huqMpTroadnBWjWNLBfcRAQnXI3iC7ANg6E6s/Evfc45A7ZyF
|
||||
lGTmw2MVIj/GdCtRuf8kpVK9hNOaLK1nnByW8pWP1Mcg/Ai5JY6odvgcSHpsGUA4
|
||||
4t9Xfg3a5vPV+tWyccHMknd3wzhTEwQqZ+Cxb5uD2jbA9JS5Jmhtdbk6sVbiusis
|
||||
NV2Jx5zuhycVK9nc49kZNv6c8YnnSDxcw7B9a99NYKRo9TXJbCsnLnghkwRTMCbz
|
||||
RcaFfjnFQCx85XeoNo2zLIYCZ6k93EhJz12FFYu1CR4vkYlINvhsFFPeuSEVdt+w
|
||||
rx6KN5172jtMg+Y=
|
||||
-----END CERTIFICATE-----
|
||||
@ -0,0 +1,64 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2009-2011 All Rights Reserved.
|
||||
//
|
||||
// File: LogEventFunctionality.cs
|
||||
//
|
||||
// Contents: Example that shows how to use event log High Level API
|
||||
//
|
||||
// Notes:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using HLAPI.GeneralInfo;
|
||||
|
||||
namespace DiscoverySample
|
||||
{
|
||||
public class DiscoveryFunctionality
|
||||
{
|
||||
public static void Discovery(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Get SKU version.
|
||||
SKU skuVersion = amt.GeneralInfo.GetSkuVersion();
|
||||
|
||||
// Get host + domain name.
|
||||
string hostName = amt.GeneralInfo.GetFQDN(FQDN.Host);
|
||||
|
||||
// Print the FQDN and the SKU version for the AMT.
|
||||
Console.WriteLine("The supported features in AMT platform for host {1} with {0} SKU:", skuVersion, hostName);
|
||||
|
||||
// Print AMT's supported features list.
|
||||
foreach (AMTFeatures supportedFeature in amt.SupportedFeatures)
|
||||
{
|
||||
Console.WriteLine(" * {0}", supportedFeature);
|
||||
}
|
||||
}
|
||||
catch (GeneralInfoException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void CheckForSupportedFeature(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
// If KVM feature is supported in this AMT, get KVM interface state.
|
||||
if (true == amt.SupportedFeatures.Contains(AMTFeatures.KVM))
|
||||
{
|
||||
bool intefaceState = amt.KVMSetup.GetInterfaceState();
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,59 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Common.Utils;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace DiscoverySample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
ci?.Dispose();
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
// Discovery on AMT platform.
|
||||
DiscoveryFunctionality.Discovery(amt);
|
||||
|
||||
// Wake up AMT machine, only if Power feature is supported.
|
||||
DiscoveryFunctionality.CheckForSupportedFeature(amt);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("PowerSample")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("PowerSample")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2020")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("c21e166e-42a8-4a39-b80f-db15769af506")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,355 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2009-2014 All Rights Reserved.
|
||||
//
|
||||
// File: LogEventFunctionality.cs
|
||||
//
|
||||
// Contents: Example that shows how to use event log High Level API
|
||||
//
|
||||
// Notes:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Intel.Manageability.Events;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace EventLogSample
|
||||
{
|
||||
public class LogEventFunctionality
|
||||
{
|
||||
public static void RegisterToLog(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
// #1 - Register events so that they will be logged in the event log by using filter name (type string)
|
||||
// Use a filter name from the "Event" class
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
|
||||
//Register events using the event string from Events class, which contains strings of the filter names.
|
||||
amt.Events.Log.RegisterToLog(Events.Battery.All_Battery_Events);
|
||||
Console.WriteLine("\nFirst RegisterToLog operation completed successfully");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Attempt to register filter with filter's name (type string) failed.\n" +
|
||||
"Failure reason: {0}", ex.Message);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
//-----------------------------------------------------------------------------------------------
|
||||
//#2 Register events using Filter object
|
||||
//-----------------------------------------------------------------------------------------------
|
||||
|
||||
//Register events with Filter object, which contains the values that define
|
||||
//the desired events to be logged to the event log.
|
||||
|
||||
//Create new filter:
|
||||
Filter filter = new Filter(255, 4, 18, 254, 0, 150, 0, 0, 44, 255);
|
||||
|
||||
//Register events with the filter
|
||||
amt.Events.Log.RegisterToLog(filter);
|
||||
Console.WriteLine("\nSecond RegisterToLog operation completed successfully");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Attempt to register events with Filter object failed.\n" +
|
||||
"Failure reason: {0}", ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void UnRegisterToLog(IAMTInstance amt)
|
||||
{
|
||||
bool error = false;
|
||||
try
|
||||
{
|
||||
//-----------------------------------------------------------------------------------------------
|
||||
//Unegister events using filter name (type string) from the "Event" class (registered in step #1)
|
||||
//-----------------------------------------------------------------------------------------------
|
||||
|
||||
//Unegister events with received event string from Events class, which contains strings of the filter names.
|
||||
amt.Events.Log.UnRegisterToLog(Events.Battery.All_Battery_Events);
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Attempt to Unregister filter with filter's name (type string) failed.\n" +
|
||||
"Failure reason: {0}", ex.Message);
|
||||
error = true;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
//-----------------------------------------------------------------------------------------------
|
||||
//Unregister event policy, using PolicyId = 44, which was the policy defined in step #2
|
||||
//-----------------------------------------------------------------------------------------------
|
||||
|
||||
//To register events with PolicyId, need to make sure that the Filter exists.
|
||||
//If the filter with this PolicyId does not exist, create new Filter with the desired PolicyId.
|
||||
|
||||
//Unregister event policy, in case that the PolicyId of the filter is known to the user.
|
||||
amt.Events.Log.UnRegisterToLog(44);
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Attempt to unregister event log policy with PolicyId failed.\n" +
|
||||
"Failure reason: {0}", ex.Message);
|
||||
error = true;
|
||||
}
|
||||
if(!error)
|
||||
Console.WriteLine("\nUnRegisterToLog operation completed successfully");
|
||||
}
|
||||
|
||||
public static void ClearLog(IAMTInstance amt)
|
||||
{
|
||||
int percentageLog;
|
||||
try
|
||||
{
|
||||
//Get the percentage of log entries.
|
||||
percentageLog = amt.Events.Log.GetPercentageLog();
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
|
||||
if (percentageLog > 90)
|
||||
{
|
||||
//If the log is frozen, modifications are not allowed and log records cannot be deleted.
|
||||
if (amt.Events.Log.IsLogFrozen() == false)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.Events.Log.ClearLog();
|
||||
Console.WriteLine("\nClearLog operation completed successfully");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Attempt to clear the entire log failed.\n" +
|
||||
"Failure reason: {0}", ex.Message);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Can not clear the log when it is frozen.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("There is no need to clear the log. Percentage of log entries is: {0}", percentageLog);
|
||||
}
|
||||
}
|
||||
|
||||
public static void FreezeLog(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
//Freeze the event log.
|
||||
amt.Events.Log.FreezeLog(true);
|
||||
Console.WriteLine("\nFreezeLog operation completed successfully");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Attempt to Freeze the log failed.\n" +
|
||||
"Failure reason: {0}", ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void UnFreezeLog(IAMTInstance amt)
|
||||
{
|
||||
//Unfreeze the event log.
|
||||
try
|
||||
{
|
||||
amt.Events.Log.FreezeLog(false);
|
||||
Console.WriteLine("\nUnFreezeLog operation completed successfully");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Attempt to unfreeze the log failed.\n" +
|
||||
"Failure reason: {0}", ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void GetRecords(IAMTInstance amt, uint identifier, uint num)
|
||||
{
|
||||
//Defined array from Record type.
|
||||
IEnumerable<Record> log = new List<Record>();
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
//Get the all the records from the log into the array named "log".
|
||||
log = amt.Events.Log.GetRecords(identifier, num);
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Attempt to get the specific records from the log failed.\n" + ex.Message);
|
||||
}
|
||||
|
||||
parseLog(log, (int)identifier);
|
||||
}
|
||||
|
||||
public static void GetAllRecords(IAMTInstance amt)
|
||||
{
|
||||
//Defined array from Record type.
|
||||
IEnumerable<Record> log = new List<Record>();
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
//Get the all the records from the log into the array named "log".
|
||||
log = (IEnumerable<Record>)amt.Events.Log.GetAllRecords();
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Attempt to get the records from the log failed.\n" +
|
||||
"Failure reason: {0}", ex.Message);
|
||||
}
|
||||
|
||||
parseLog(log, 0);
|
||||
}
|
||||
|
||||
private static void parseLog(IEnumerable<Record> log, int start)
|
||||
{
|
||||
if (log.Count() != 0)
|
||||
{
|
||||
|
||||
//------------------------------
|
||||
//#1 Filter records, using LINQ, by timestamp.
|
||||
//------------------------------
|
||||
|
||||
//Select the records from the last day.
|
||||
IEnumerable<Record> query = from r in log
|
||||
where DateTime.Compare(r.TimeStamp, DateTime.Today.AddDays(-1)) >= 0
|
||||
select r;
|
||||
|
||||
//Print the records
|
||||
PrintRecords(query, start);
|
||||
|
||||
//------------------------------
|
||||
//#2 Filter records, using LINQ, by Severity.
|
||||
//------------------------------
|
||||
|
||||
//Select the records where the severity is "Information",
|
||||
//using the value in the id.
|
||||
query = from r in log
|
||||
where r.Severity.Id == 255
|
||||
select r;
|
||||
|
||||
//Print the records
|
||||
PrintRecords(query, start);
|
||||
|
||||
//------------------------------
|
||||
//#3 Filter records, using LINQ, by Entity.
|
||||
//------------------------------
|
||||
|
||||
//Select the records where the Entity is "Bios",
|
||||
//using Entity.Description property.
|
||||
query = from r in log
|
||||
where r.Entity.Description == "Peripheral Bay"
|
||||
select r;
|
||||
|
||||
//Print the records
|
||||
PrintRecords(query, start);
|
||||
|
||||
//------------------------------
|
||||
//#4 Filter records, using LINQ, by Sensor Type
|
||||
//------------------------------
|
||||
|
||||
//Select the records where the Sensor Type is "AMT_Agent_Presence",
|
||||
//using enum "Entity".
|
||||
query = from r in log
|
||||
where r.Entity.Id == 1
|
||||
select r;
|
||||
|
||||
//Print the records.
|
||||
PrintRecords(query, start);
|
||||
|
||||
//------------------------------
|
||||
//#5 Filter records, using LINQ, by Message.
|
||||
//------------------------------
|
||||
|
||||
//Select the records where the Message is "AMT_Password_Attack".
|
||||
query = from r in log
|
||||
where r.Message == "AMT_Password_Attack"
|
||||
select r;
|
||||
|
||||
//Print the records
|
||||
PrintRecords(query, start);
|
||||
|
||||
//------------------------------
|
||||
//#6 Filter records, using LINQ, by EventOffset.Description property.
|
||||
//------------------------------
|
||||
|
||||
//Select the records where the EventOffset.Description is "Lower Non-critical - going low".
|
||||
//This value appears when EventType = 1 and EventOffset = 1.
|
||||
query = from r in log
|
||||
where r.EventOffset.Description == "Lower Non-critical - going low"
|
||||
select r;
|
||||
|
||||
//Print the records
|
||||
PrintRecords(query, start);
|
||||
|
||||
//------------------------------
|
||||
//#7 Filter records, using LINQ, by SensorType.Id property.
|
||||
//------------------------------
|
||||
|
||||
//Select the records where the EventOffset.Id is 3. (stands for "Voltage")
|
||||
query = from r in log
|
||||
where r.SensorType.Id == 3
|
||||
select r;
|
||||
|
||||
//Print the records
|
||||
PrintRecords(query, start);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("There are no records in the log");
|
||||
}
|
||||
}
|
||||
|
||||
public static void CurrentNumberOfRecord(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.WriteLine("Current number of records in the log: {0}", amt.Events.Log.GetCurrentNumberOfRecords());
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get current number of records. Failure reason: {0}", ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private static void PrintRecords(IEnumerable<Record> query, int startFrom)
|
||||
{
|
||||
//Give template id to record.
|
||||
int numRecord = startFrom;
|
||||
//Print the records
|
||||
foreach (Record record in query)
|
||||
{
|
||||
//Console.WriteLine("Record Id | Timestamp | Severity | Sensor Type | Entity | Message | ");
|
||||
//string byteString = Convert.ToString(bytes[ctr], 2);
|
||||
//byteString = new String('0', 8 - byteString.Length) + byteString;
|
||||
//_binarString += byteString;
|
||||
Console.WriteLine("record number: {0}", numRecord++);
|
||||
Console.WriteLine("Timestamp: {0}", record.TimeStamp);
|
||||
Console.WriteLine("Severity: {0}", record.Severity.Description);
|
||||
Console.WriteLine("Sensor Type: {0}", record.SensorType.Description);
|
||||
Console.WriteLine("Sensor Number: {0}", record.SensorNumber);
|
||||
Console.WriteLine("Entity: {0}", record.Entity);
|
||||
Console.WriteLine("Entity Instance: {0}", record.EntityInstance);
|
||||
Console.WriteLine("Message: {0}", record.Message);
|
||||
Console.WriteLine("Event Type: {0}", record.EventType.Description);
|
||||
Console.WriteLine("Event Source: {0}", record.EventSource);
|
||||
Console.WriteLine("Device Address: {0}", record.DeviceAddress);
|
||||
Console.WriteLine("------------------------------------------------------------");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,92 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 - 2014 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Security;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Common.Utils;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace EventLogSample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// check if JSON path was provided in CMD. If empty, default directory file will be selected
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
ci?.Dispose();
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
//Getting the current number of record in the log.
|
||||
LogEventFunctionality.CurrentNumberOfRecord(amt);
|
||||
|
||||
//Getting existing records in the log.
|
||||
LogEventFunctionality.GetAllRecords(amt);
|
||||
|
||||
//Getting existing specific records in the log.
|
||||
LogEventFunctionality.GetRecords(amt, 3, 20);
|
||||
|
||||
|
||||
//Register Event Filter to recorded in the log.
|
||||
LogEventFunctionality.RegisterToLog(amt);
|
||||
|
||||
//Unegister Event Filter that recorded in the log.
|
||||
LogEventFunctionality.UnRegisterToLog(amt);
|
||||
|
||||
//Freeze the log. so, modifications in the log, are not allowed
|
||||
LogEventFunctionality.FreezeLog(amt);
|
||||
|
||||
////Unfreeze the log. so, modifications in the log, are allowed
|
||||
LogEventFunctionality.UnFreezeLog(amt);
|
||||
|
||||
//Delete all records from the log.
|
||||
LogEventFunctionality.ClearLog(amt);
|
||||
}
|
||||
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
amt?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("EventLogSample")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Intel Corporation")]
|
||||
[assembly: AssemblyProduct("EventLogSample")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("c21e166e-42a8-4a39-b80f-db15769af506")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,95 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Intel.Manageability.Events;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Intel.Manageability;
|
||||
|
||||
namespace PETEventsSample
|
||||
{
|
||||
class GeneralEventsFunctionality
|
||||
{
|
||||
/// <summary>
|
||||
/// Subscribe for events
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void Subscribe(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
//Subscribe for Power_Supply_Failed event
|
||||
GeneralSubscription subscription = new GeneralSubscription("http://192.168.0.1:16997", Events.Power_Supply.Power_Supply_Failed, SenderIDType.UUID);
|
||||
amt.Events.Subscribe(subscription);
|
||||
Console.WriteLine("\nSubscription operation completed successfully");
|
||||
}
|
||||
catch (EventsManageabilityException e)
|
||||
{
|
||||
PrintException("Subscribe", e);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
//Subscribe for Battery_added event
|
||||
GeneralSubscription subscription = new GeneralSubscription("http://192.168.0.1:16997", Events.Battery.Battery_Added, "MyAMT");
|
||||
amt.Events.Subscribe(subscription);
|
||||
Console.WriteLine("\nSubscription operation completed successfully");
|
||||
}
|
||||
catch (EventsManageabilityException e)
|
||||
{
|
||||
PrintException("Subscribe", e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// UnSubscribe for Power_Supply_Failed event
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void UnSubscribe(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
GeneralSubscription subscription = new GeneralSubscription("http://192.168.0.1:16997", Events.Power_Supply.Power_Supply_Failed, SenderIDType.UUID);
|
||||
amt.Events.UnSubscribe(subscription);
|
||||
Console.WriteLine("\nUnSubscribe operation completed successfully");
|
||||
}
|
||||
catch (EventsManageabilityException e)
|
||||
{
|
||||
PrintException("UnSubscribe", e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Unsubscribe all existing subscriptions
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void UnSubscribeAll(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.Events.UnSubscribeAll();
|
||||
Console.WriteLine("\nUnSubscribe all subscribers completed successfully");
|
||||
}
|
||||
catch (EventsManageabilityException e)
|
||||
{
|
||||
PrintException("UnSubscribeAll", e);
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintException(string methodName, EventsManageabilityException e)
|
||||
{
|
||||
Console.WriteLine(methodName + " throw: " + e.Message);
|
||||
Console.WriteLine("Details:");
|
||||
Console.WriteLine("========");
|
||||
Console.WriteLine("\t- Machine Origin : {0}", e.MachineOrigin);
|
||||
Console.WriteLine("\t- HLAPI Source Function: {0}", e.Source);
|
||||
if (e.PT_STATUS != null)
|
||||
Console.WriteLine("\t- Return Value : {0}", e.PT_STATUS);
|
||||
if (e.Tip != string.Empty)
|
||||
Console.WriteLine("\t- Counsel : {0}", e.Tip);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,73 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 - 2014 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Common.Utils;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace PETEventsSample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
ci?.Dispose();
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
//Subscribe for an event
|
||||
GeneralEventsFunctionality.Subscribe(amt);
|
||||
|
||||
//UnSubscribe for specific event
|
||||
GeneralEventsFunctionality.UnSubscribe(amt);
|
||||
|
||||
//Un subscribe all existing subscriptions.
|
||||
GeneralEventsFunctionality.UnSubscribeAll(amt);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
amt?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("GeneralEventsSample")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Intel Corporation")]
|
||||
[assembly: AssemblyProduct("GeneralEventsSample")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("45b7bc9a-43d7-467a-b05e-755bfac0950d")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,27 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,69 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using HLAPI.Services;
|
||||
using System.Net;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
|
||||
namespace GeneralListenerSample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
#region Members
|
||||
|
||||
static GeneralEventListener listener;
|
||||
static readonly int PORT = 16997;
|
||||
static object thisLock = new object();
|
||||
|
||||
#endregion
|
||||
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main()
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
try
|
||||
{
|
||||
listener = new GeneralEventListener(IPAddress.Any, PORT);
|
||||
|
||||
|
||||
listener.OnNewEventArrived += listener_OnNewEventArrived;
|
||||
listener.StartListening();
|
||||
|
||||
Console.WriteLine("Start Listening on ports 162 and {0}, Press any key to exit...", PORT);
|
||||
|
||||
Console.ReadLine();
|
||||
|
||||
// Stop the listener
|
||||
listener.StopListening();
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
static void listener_OnNewEventArrived(object sender, GeneralEventArgs eventArgs)
|
||||
{
|
||||
//In this case the lock operation is unnecessary because the console manages the threads by itself.
|
||||
//But if this function will do complicated code with some data, might be collision between
|
||||
//the threads (of WS listener and PET listener). Therefore, recommended to protect the code with
|
||||
//using the lock operation.
|
||||
lock (thisLock)
|
||||
{
|
||||
// Handle the event data...
|
||||
Console.WriteLine("Address: " + eventArgs.Sender + " Message: " + eventArgs.MessageDescription);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("GeneralListenerSample")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Intel Corporation")]
|
||||
[assembly: AssemblyProduct("GeneralListenerSample")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("08f817e8-e977-4dd2-999a-a096f0c28cc3")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,649 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2009-2013 All Rights Reserved.
|
||||
//
|
||||
// File: HardwareAssetFunctionality.cs
|
||||
//
|
||||
// Contents: High Level API command line sample: HardwareAsset Functionality
|
||||
//
|
||||
// Notes:
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.HardwareAssets;
|
||||
using Intel.Manageability.Exceptions;
|
||||
|
||||
namespace HardwareAssetSample
|
||||
{
|
||||
public class HardwareAssetFunctionality
|
||||
{
|
||||
public static void PrintBIOSes_Info(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
BIOSInfo[] bi = amt.HardwareAsset.BIOSesInfo;
|
||||
Console.WriteLine("\nBIOSes Info\n~~~~~~~~~~~");
|
||||
for (int i = 0; i < bi.Length; i++)
|
||||
{
|
||||
Console.WriteLine("--- BIOS Info #{0} ---", i + 1);
|
||||
Console.WriteLine("\tVendor = {0}", bi[i].Vendor);
|
||||
Console.WriteLine("\tVersion = {0}", bi[i].Version);
|
||||
Console.WriteLine("\tReleaseDate = {0}", bi[i].ReleaseDate);
|
||||
Console.WriteLine("\tBIOS_characteristics_not_supported = {0}", bi[i].BIOS_characteristics_not_supported);
|
||||
Console.WriteLine("\tISA = {0}", bi[i].ISA);
|
||||
Console.WriteLine("\tMCA = {0}", bi[i].MCA);
|
||||
Console.WriteLine("\tEISA = {0}", bi[i].EISA);
|
||||
Console.WriteLine("\tPCI = {0}", bi[i].PCI);
|
||||
Console.WriteLine("\tPC_card = {0}", bi[i].PC_card);
|
||||
Console.WriteLine("\tPnP = {0}", bi[i].PnP);
|
||||
Console.WriteLine("\tAPM = {0}", bi[i].APM);
|
||||
Console.WriteLine("\tBIOS_upgradeable = {0}", bi[i].BIOS_upgradeable);
|
||||
Console.WriteLine("\tBIOS_shadowing_allowed = {0}", bi[i].BIOS_shadowing_allowed);
|
||||
Console.WriteLine("\tVL_VESA = {0}", bi[i].VL_VESA);
|
||||
Console.WriteLine("\tESCD = {0}", bi[i].ESCD);
|
||||
Console.WriteLine("\tCD_Boot = {0}", bi[i].CD_Boot);
|
||||
Console.WriteLine("\tSelectable_boot = {0}", bi[i].Selectable_boot);
|
||||
Console.WriteLine("\tBIOS_ROM_socketed = {0}", bi[i].BIOS_ROM_socketed);
|
||||
Console.WriteLine("\tBoot_from_PC_card = {0}", bi[i].Boot_from_PC_card);
|
||||
Console.WriteLine("\tEDD_spec = {0}", bi[i].EDD_spec);
|
||||
Console.WriteLine("\tNEC_PC_98 = {0}", bi[i].NEC_PC_98);
|
||||
Console.WriteLine("\tPCMCIA = {0}", bi[i].PCMCIA);
|
||||
Console.WriteLine("\tLS_120_Boot = {0}", bi[i].LS_120_Boot);
|
||||
Console.WriteLine("\tACPI = {0}", bi[i].ACPI);
|
||||
Console.WriteLine("\tI2O_Boot = {0}", bi[i].I2O_Boot);
|
||||
Console.WriteLine("\tUSB_Legacy = {0}", bi[i].USB_Legacy);
|
||||
Console.WriteLine("\tAGP = {0}", bi[i].AGP);
|
||||
Console.WriteLine("\tIR = {0}", bi[i].IR);
|
||||
Console.WriteLine("\tIEEE_1394 = {0}", bi[i].IEEE_1394);
|
||||
Console.WriteLine("\tI2C = {0}", bi[i].I2C);
|
||||
Console.WriteLine("\tSmart_Battery = {0}", bi[i].Smart_Battery);
|
||||
Console.WriteLine("\tATAPI_ZIP_Drive_Boot = {0}", bi[i].ATAPI_ZIP_Drive_Boot);
|
||||
Console.WriteLine("\tIEEE_1394_Boot = {0}", bi[i].IEEE_1394_Boot);
|
||||
Console.WriteLine("\tEnable_Targeted_Content_Distribution = {0}", bi[i].Enable_Targeted_Content_Distribution);
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintComputerSystem(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
ComputerSystem cs = amt.HardwareAsset.ComputerSystem;
|
||||
Console.WriteLine("\nComputer System \n~~~~~~~~~~~~~~~");
|
||||
|
||||
Console.WriteLine("\tManufacturer = {0}", cs.Manufacturer);
|
||||
Console.WriteLine("\tProduct = {0}", cs.Product);
|
||||
Console.WriteLine("\tVersion = {0}", cs.Version);
|
||||
Console.WriteLine("\tSerialNumber = {0}", cs.SerialNumber);
|
||||
Console.WriteLine("\tUUID = {0}", cs.UUID);
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintBaseboards(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
BaseBoard[] bb = amt.HardwareAsset.BaseBoards;
|
||||
Console.WriteLine("\nBaseboards\n~~~~~~~~~~~");
|
||||
|
||||
for (int i = 0; i < bb.Length; i++)
|
||||
{
|
||||
Console.WriteLine("--- Baseboard #{0} ---", i + 1);
|
||||
Console.WriteLine("\tManufacturer = {0}", bb[i].Manufacturer);
|
||||
Console.WriteLine("\tProduct = {0}", bb[i].Product);
|
||||
Console.WriteLine("\tVersion = {0}", bb[i].Version);
|
||||
Console.WriteLine("\tSerialNumber = {0}", bb[i].SerialNumber);
|
||||
Console.WriteLine("\tAssetTag = {0}", bb[i].AssetTag);
|
||||
Console.WriteLine("\tReplaceable = {0}", bb[i].Replaceable);
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintProcessors(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Processor[] CPUs = amt.HardwareAsset.CPUs;
|
||||
Console.WriteLine("\nCPUs\n~~~~");
|
||||
for (int i = 0; i < CPUs.Length; i++)
|
||||
{
|
||||
Console.WriteLine("--- CPU #{0} ---", i + 1);
|
||||
Console.WriteLine("\tStatus = {0}", CPUs[i].Status);
|
||||
Console.WriteLine("\tRole = {0}", CPUs[i].Role);
|
||||
Console.WriteLine("\tFamily = {0}", CPUs[i].Family);
|
||||
Console.WriteLine("\tUpgradeInformation = {0}", CPUs[i].UpgradeInformation);
|
||||
Console.WriteLine("\tManufacturer = {0}", CPUs[i].Manufacturer);
|
||||
Console.WriteLine("\tVersion = {0}", CPUs[i].Version);
|
||||
Console.WriteLine("\tPhysicalPosition = {0}", CPUs[i].PhysicalPosition);
|
||||
Console.WriteLine("\tMaxClockSpeed = {0}", CPUs[i].MaxClockSpeed);
|
||||
Console.WriteLine("\tCurrentClockSpeed = {0}", CPUs[i].CurrentClockSpeed);
|
||||
Console.WriteLine("\tStepping = {0}", CPUs[i].Stepping);
|
||||
Console.WriteLine("\tExternalBusClockSpeed = {0}", CPUs[i].ExternalBusClockSpeed);
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintMemoryModules(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
MemoryModule[] MemoryModules = amt.HardwareAsset.MemoryModules;
|
||||
Console.WriteLine("\nMemory Modules\n~~~~~~~~~~~~~~");
|
||||
for (int i = 0; i < MemoryModules.Length; i++)
|
||||
{
|
||||
Console.WriteLine("--- Memory Module #{0} ---", i + 1);
|
||||
Console.WriteLine("\tForm factor = {0}", MemoryModules[i].FormFactor);
|
||||
Console.WriteLine("\tMemory type = {0}", MemoryModules[i].Type);
|
||||
Console.WriteLine("\tSpeed = {0} nanoseconds", MemoryModules[i].Speed);
|
||||
Console.WriteLine("\tManufacturer = {0}", MemoryModules[i].Manufacturer);
|
||||
Console.WriteLine("\tSerialNumber = {0}", MemoryModules[i].SerialNumber);
|
||||
Console.WriteLine("\tAssetTag = {0}", MemoryModules[i].AssetTag);
|
||||
Console.WriteLine("\tPartNumber = {0}", MemoryModules[i].PartNumber);
|
||||
Console.WriteLine("\tCapacity = {0} bytes", MemoryModules[i].Capacity);
|
||||
Console.WriteLine("\tBankLabel = {0}", MemoryModules[i].BankLabel);
|
||||
Console.WriteLine("\tConfiguredMemoryClockSpeed = {0}", MemoryModules[i].ConfiguredMemoryClockSpeed);
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintFRUs(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
FieldReplaceableUnit[] FRUs = amt.HardwareAsset.FRUs;
|
||||
Console.WriteLine("\nFRUs\n~~~~");
|
||||
if (FRUs == null || FRUs.Length == 0)
|
||||
{
|
||||
Console.WriteLine("--- No Field Replaceable Units Information Available ---\n");
|
||||
return;
|
||||
}
|
||||
for (int i = 0; i < FRUs.Length; i++)
|
||||
{
|
||||
Console.WriteLine("--- Field Replaceable Unit #{0} ---", i + 1);
|
||||
Console.WriteLine("\tProtocol Supported = {0}", FRUs[i].ProtocolSupported);
|
||||
Console.WriteLine("\tVendorID = {0}", FRUs[i].VendorID);
|
||||
Console.WriteLine("\tDeviceID = {0}", FRUs[i].DeviceID);
|
||||
Console.WriteLine("\tRevisionID = {0}", FRUs[i].RevisionID);
|
||||
Console.WriteLine("\tProgIf = {0}", FRUs[i].ProgIf);
|
||||
Console.WriteLine("\tSubclass = {0}", FRUs[i].Subclass);
|
||||
Console.WriteLine("\tClassCode = {0}", FRUs[i].ClassCode);
|
||||
Console.WriteLine("\tSubvendorID = {0}", FRUs[i].SubvendorID);
|
||||
Console.WriteLine("\tSubsystemID = {0}", FRUs[i].SubsystemID);
|
||||
Console.WriteLine("\tDeviceLocation = {0}", FRUs[i].DeviceLocation);
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintMediaDevices(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
MediaDevice[] MediaDevices = amt.HardwareAsset.MediaDevices;
|
||||
Console.WriteLine("\nMedia Devices\n~~~~~~~~~~~~~");
|
||||
for (int i = 0; i < MediaDevices.Length; i++)
|
||||
{
|
||||
Console.WriteLine("--- Media Device #{0} ---", i + 1);
|
||||
Console.WriteLine("\tMaxMediaSize = {0} bytes", MediaDevices[i].MaxMediaSize);
|
||||
Console.WriteLine("\tSerialNumber = {0}", MediaDevices[i].SerialNumber);
|
||||
Console.WriteLine("\tModelNumber = {0}", MediaDevices[i].ModelNumber);
|
||||
Console.WriteLine("\tCapabilities:");
|
||||
if (MediaDevices[i].Capabilities.Unknown)
|
||||
Console.WriteLine("\t\tUnknown");
|
||||
if (MediaDevices[i].Capabilities.Other)
|
||||
Console.WriteLine("\t\tOther");
|
||||
if (MediaDevices[i].Capabilities.Sequential_Access)
|
||||
Console.WriteLine("\t\tSequential_Access");
|
||||
if (MediaDevices[i].Capabilities.Random_Access)
|
||||
Console.WriteLine("\t\tRandom_Access");
|
||||
if (MediaDevices[i].Capabilities.Writable)
|
||||
Console.WriteLine("\t\tWritable");
|
||||
if (MediaDevices[i].Capabilities.Encryption)
|
||||
Console.WriteLine("\t\tEncryption");
|
||||
if (MediaDevices[i].Capabilities.Compression)
|
||||
Console.WriteLine("\t\tCompression");
|
||||
if (MediaDevices[i].Capabilities.Removable_Media)
|
||||
Console.WriteLine("\t\tRemovable_Media");
|
||||
if (MediaDevices[i].Capabilities.Manual_Cleaning)
|
||||
Console.WriteLine("\t\tManual_Cleaning");
|
||||
if (MediaDevices[i].Capabilities.Automatic_Cleaning)
|
||||
Console.WriteLine("\t\tAutomatic_Cleaning");
|
||||
if (MediaDevices[i].Capabilities.SMART_Notification)
|
||||
Console.WriteLine("\t\tSMART_Notification");
|
||||
if (MediaDevices[i].Capabilities.Dual_Sided_Media)
|
||||
Console.WriteLine("\t\tDual_Sided_Media");
|
||||
if (MediaDevices[i].Capabilities.Predismount_Eject_Not_Required)
|
||||
Console.WriteLine("\t\tPredismount_Eject_Not_Required");
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintSensors(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Sensor[] Sensors = amt.HardwareAsset.Sensors;
|
||||
Console.WriteLine("\nSensors\n~~~~~~~~");
|
||||
for (int i = 0; i < Sensors.Length; i++)
|
||||
{
|
||||
Console.WriteLine("--- Sensor #{0} ---", i + 1);
|
||||
Console.WriteLine("\tName = {0}", Sensors[i].Name);
|
||||
Console.WriteLine("\tID = {0}", Sensors[i].ID);
|
||||
Console.WriteLine("\tSensorType = {0}", Sensors[i].SensorType);
|
||||
for (int j = 0; j < Sensors[i].PossibleStates.Length; j++)
|
||||
{
|
||||
Console.WriteLine("\tPossibleStates[{0}] = {1}", j, Sensors[i].PossibleStates[j]);
|
||||
}
|
||||
Console.WriteLine("\tCurrentState = {0}", Sensors[i].CurrentState);
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintFans(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Fan[] fans = amt.HardwareAsset.Fans;
|
||||
Console.WriteLine("\nFans\n~~~~");
|
||||
|
||||
for (int i = 0; i < fans.Length; i++)
|
||||
{
|
||||
if (fans[i] != null)
|
||||
{
|
||||
Console.WriteLine("--- Fan #{0} ---", i + 1);
|
||||
if (!fans[i].DataValid)
|
||||
{
|
||||
Console.WriteLine("\tNo fan data avaliable");
|
||||
return;
|
||||
}
|
||||
Console.WriteLine("\tDeviceID = {0}", fans[i].DeviceID);
|
||||
Console.WriteLine("\tDesiredSpeed = {0} RPM", fans[i].DesiredSpeed);
|
||||
if (fans[i].ActiveCooling)
|
||||
Console.WriteLine("\tActiveCooling");
|
||||
if (fans[i].VariableSpeed)
|
||||
Console.WriteLine("\tVariableSpeed");
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintPowerSupplies(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
PowerSupply[] ps = amt.HardwareAsset.PowerSupplies;
|
||||
Console.WriteLine("\nPowerSupplies\n~~~~~~~~~~~~~");
|
||||
for (int i = 0; i < ps.Length; i++)
|
||||
{
|
||||
Console.WriteLine("--- nPowerSupply #{0} ---", i + 1);
|
||||
if (!ps[i].DataValid)
|
||||
{
|
||||
Console.WriteLine("\tNo power supply data avaliable");
|
||||
return;
|
||||
}
|
||||
Console.WriteLine("\tDeviceID = {0}", ps[i].DeviceID);
|
||||
Console.WriteLine("\tTotalOutputPower = {0} milliwatts", ps[i].TotalOutputPower);
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintBatteriesEx(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
PortableBatteryEx[] batteries = amt.HardwareAsset.BatteriesEx;
|
||||
Console.WriteLine("\nBatteries\n~~~~~~~~~~~~~");
|
||||
if (batteries != null)
|
||||
{
|
||||
for (int i = 0; i < batteries.Length; i++)
|
||||
{
|
||||
Console.WriteLine("--- Batteries #{0} ---", i + 1);
|
||||
Console.WriteLine("\tStatus = {0}", batteries[i].Status.ToString());
|
||||
Console.WriteLine("\tChemistry = {0}", batteries[i].Chemistry.ToString());
|
||||
Console.WriteLine("\tManufacturer = {0}", batteries[i].Manufacturer);
|
||||
Console.WriteLine("\tSerialNumber = {0}", batteries[i].SerialNumber);
|
||||
Console.WriteLine("\tDesignVoltage = {0}", batteries[i].DesignVoltage);
|
||||
Console.WriteLine("\tEstimatedChargeRemaining = {0}", batteries[i].EstimatedChargeRemaining);
|
||||
Console.WriteLine("\tFullChargeCapacity = {0}", batteries[i].FullChargeCapacity);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get battery information from the Intel AMT.");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintBatteries(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
PortableBattery[] batteries = amt.HardwareAsset.Batteries;
|
||||
Console.WriteLine("\nBatteries\n~~~~~~~~~~~~~");
|
||||
if (batteries != null)
|
||||
{
|
||||
for (int i = 0; i < batteries.Length; i++)
|
||||
{
|
||||
Console.WriteLine("--- Batteries #{0} ---", i + 1);
|
||||
Console.WriteLine("\tDeviceName = {0}", batteries[i].DeviceName);
|
||||
Console.WriteLine("\tManufacturer = {0}", batteries[i].Manufacturer);
|
||||
Console.WriteLine("\tManufactureDate = {0}", batteries[i].ManufactureDate);
|
||||
Console.WriteLine("\tLocation = {0}", batteries[i].Location);
|
||||
Console.WriteLine("\tSerialNumber = {0}", batteries[i].SerialNumber);
|
||||
Console.WriteLine("\tSBDSVersionNumber = {0}", batteries[i].SBDSVersionNumber);
|
||||
Console.WriteLine("\tSBDSSerialNumber = {0}", batteries[i].SBDSSerialNumber);
|
||||
Console.WriteLine("\tSBDSDeviceChemistry = {0}", batteries[i].SBDSDeviceChemistry);
|
||||
Console.WriteLine("\tOEMSpecific = {0}", batteries[i].OEMSpecific);
|
||||
Console.WriteLine("\tMaximumErrorInBatteryData = {0}",
|
||||
batteries[i].MaximumErrorInBatteryData);
|
||||
Console.WriteLine("\tDeviceChemistryX = {0}", batteries[i].DeviceChemistryX);
|
||||
Console.WriteLine("\tDesignVoltage = {0}", batteries[i].DesignVoltage);
|
||||
Console.WriteLine("\tDesignCapacityMultiplier = {0}", batteries[i].DesignCapacityMultiplier);
|
||||
Console.WriteLine("\tDesignCapacity = {0}", batteries[i].DesignCapacity);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("There is no Batteries data.");
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintVproVerificationTable(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
VproVerificationTable VproTable = amt.HardwareAsset.VproTable;
|
||||
Console.WriteLine("\nvPro Verification Table\n~~~~~~~~~~~~~~~~~~~~~~~");
|
||||
|
||||
if (!VproTable.TableValid)
|
||||
{
|
||||
Console.WriteLine("\tNo information available.");
|
||||
return;
|
||||
}
|
||||
|
||||
Console.WriteLine("\t--- CPU Capabilities ---");
|
||||
Console.WriteLine("\t\tVMX_enabled = {0}", VproTable.Cpu.VMX_enabled);
|
||||
Console.WriteLine("\t\tSMX_enabled = {0}", VproTable.Cpu.SMX_enabled);
|
||||
Console.WriteLine("\t\tLT_TXT_available = {0}", VproTable.Cpu.LT_TXT_available);
|
||||
Console.WriteLine("\t\tLT_TXT_enabled = {0}", VproTable.Cpu.LT_TXT_enabled);
|
||||
Console.WriteLine("\t\tVTx_available = {0}", VproTable.Cpu.VTx_available);
|
||||
Console.WriteLine("\t\tVTx_enabled = {0}", VproTable.Cpu.VTx_enabled);
|
||||
Console.WriteLine("\t\tNumReserved = {0}", VproTable.Cpu.NumReserved);
|
||||
|
||||
Console.WriteLine("\t--- Chipset Capabilities ---");
|
||||
Console.WriteLine("\t\tPCI_Device_Function_Number = {0}", VproTable.Chipset.PCI_Device_Function_Number);
|
||||
Console.WriteLine("\t\tPCI_Device_Device_Number = {0}", VproTable.Chipset.PCI_Device_Device_Number);
|
||||
Console.WriteLine("\t\tPCI_Device_Bus_Number = {0}", VproTable.Chipset.PCI_Device_Bus_Number);
|
||||
Console.WriteLine("\t\tPCI_Device_ID_Number = {0}", VproTable.Chipset.PCI_Device_ID_Number);
|
||||
Console.WriteLine("\t\tVTd_available = {0}", VproTable.Chipset.VTd_available);
|
||||
Console.WriteLine("\t\tVTd_enabled = {0}", VproTable.Chipset.VTd_enabled);
|
||||
Console.WriteLine("\t\tTXT_available = {0}", VproTable.Chipset.TXT_available);
|
||||
Console.WriteLine("\t\tTXT_enabled = {0}", VproTable.Chipset.TXT_enabled);
|
||||
|
||||
Console.WriteLine("\t--- ICH Capabilities ---");
|
||||
Console.WriteLine("\t\tPCI_Device_Function_Number = {0}", VproTable.Ich.PCI_Device_Function_Number);
|
||||
Console.WriteLine("\t\tPCI_Device_Device_Number = {0}", VproTable.Ich.PCI_Device_Device_Number);
|
||||
Console.WriteLine("\t\tPCI_Device_Bus_Number = {0}", VproTable.Ich.PCI_Device_Bus_Number);
|
||||
Console.WriteLine("\t\tPCI_Device_ID_Number = {0}", VproTable.Ich.PCI_Device_ID_Number);
|
||||
|
||||
Console.WriteLine("\t--- ME Capabilities ---");
|
||||
Console.WriteLine("\t\tMeEnabled = {0}", VproTable.Me.MeEnabled);
|
||||
Console.WriteLine("\t\tQST_FW_supported = {0}", VproTable.Me.QST_FW_supported);
|
||||
Console.WriteLine("\t\tASF_FW_supported = {0}", VproTable.Me.ASF_FW_supported);
|
||||
Console.WriteLine("\t\tAMT_FW_supported = {0}", VproTable.Me.AMT_FW_supported);
|
||||
Console.WriteLine("\t\tStandard_Manageability_supported = {0}", VproTable.Me.Standard_Manageability_supported);
|
||||
Console.WriteLine("\t\tSmall_Buisness_supported = {0}", VproTable.Me.Small_Buisness_supported);
|
||||
Console.WriteLine("\t\tManageability_Upgrade_supported = {0}", VproTable.Me.Manageability_Upgrade_supported);
|
||||
Console.WriteLine("\t\tAT_supported = {0}", VproTable.Me.AT_supported);
|
||||
Console.WriteLine("\t\tKVM_supported = {0}", VproTable.Me.KVM_supported);
|
||||
Console.WriteLine("\t\tLocal_Wakeup_Timer_supported = {0}", VproTable.Me.Local_Wakeup_Timer_supported);
|
||||
Console.WriteLine("\t\t--- Firmware Version ---");
|
||||
Console.WriteLine("\t\t\tMajorVersion = {0}", VproTable.Me.FWVersion.MajorVersion);
|
||||
Console.WriteLine("\t\t\tMinorVersion = {0}", VproTable.Me.FWVersion.MinorVersion);
|
||||
Console.WriteLine("\t\t\tBuild = {0}", VproTable.Me.FWVersion.Build);
|
||||
Console.WriteLine("\t\t\tHotfix = {0}", VproTable.Me.FWVersion.Hotfix);
|
||||
|
||||
Console.WriteLine("\t--- TPM Capabilities ---");
|
||||
Console.WriteLine("\t\tTPM_on_board = {0}", VproTable.Tpm.TPM_on_board);
|
||||
Console.WriteLine("\t\tTPM_enabled = {0}", VproTable.Tpm.TPM_enabled);
|
||||
Console.WriteLine("\t\tTCG_Spec_Major_Version = {0}", VproTable.Tpm.TCG_Spec_Major_Version);
|
||||
Console.WriteLine("\t\tTCG_Spec_Minor_Version = {0}", VproTable.Tpm.TCG_Spec_Minor_Version);
|
||||
|
||||
if (amt.MajorVersion >= 8)
|
||||
{
|
||||
Console.WriteLine("\t--- MEBX Version ---");
|
||||
Console.WriteLine("\t\tMajorVersion = {0}", VproTable.MebxVersion.MajorVersion);
|
||||
Console.WriteLine("\t\tMinorVersion = {0}", VproTable.MebxVersion.MinorVersion);
|
||||
Console.WriteLine("\t\tBuild = {0}", VproTable.MebxVersion.Build);
|
||||
Console.WriteLine("\t\tHotfix = {0}", VproTable.MebxVersion.Hotfix);
|
||||
|
||||
Console.WriteLine("\t--- Platform Configuration State ---");
|
||||
Console.WriteLine("\t\tATConfigurationState = {0}", VproTable.ConfigurationState.AT);
|
||||
|
||||
}
|
||||
|
||||
Console.WriteLine("\t--- Network Devices ---");
|
||||
Console.WriteLine("\t\tPCI_Device_Function_Number = {0}", VproTable.NetDevs.PCI_Device_Function_Number);
|
||||
Console.WriteLine("\t\tPCI_Device_Device_Number = {0}", VproTable.NetDevs.PCI_Device_Device_Number);
|
||||
Console.WriteLine("\t\tPCI_Device_Bus_Number = {0}", VproTable.NetDevs.PCI_Device_Bus_Number);
|
||||
Console.WriteLine("\t\tPCI_Device_ID_Number = {0}", VproTable.NetDevs.PCI_Device_ID_Number);
|
||||
Console.WriteLine("\t\tWiredNIC = {0}", VproTable.NetDevs.WiredNIC);
|
||||
Console.WriteLine("\t\tWirelessNIC1 = {0}", VproTable.NetDevs.WirelessNIC1);
|
||||
Console.WriteLine("\t\tWirelessNIC2 = {0}", VproTable.NetDevs.WirelessNIC2);
|
||||
|
||||
Console.WriteLine("\t--- BIOS Capabilities ---");
|
||||
Console.WriteLine("\t\tCan_Setup_VTd = {0}", VproTable.Bios.Can_Setup_VTd);
|
||||
Console.WriteLine("\t\tCan_Setup_VTx = {0}", VproTable.Bios.Can_Setup_VTx);
|
||||
Console.WriteLine("\t\tCan_Setup_TXT = {0}", VproTable.Bios.Can_Setup_TXT);
|
||||
Console.WriteLine("\t\tCan_Setup_TPM = {0}", VproTable.Bios.Can_Setup_TPM);
|
||||
Console.WriteLine("\t\tCan_Setup_ME = {0}", VproTable.Bios.Can_Setup_ME);
|
||||
Console.WriteLine("\t\tVA_Extensions = {0}", VproTable.Bios.VA_Extensions);
|
||||
Console.WriteLine("\t\tSPI_Flash_Reserves_Platform_Data_Region = {0}",
|
||||
VproTable.Bios.SPI_Flash_Reserves_Platform_Data_Region);
|
||||
if (VproTable.Bios.VA_Version == VproVerificationTable.BiosCapabilities.VA_VersionEnum.Other)
|
||||
{
|
||||
Console.WriteLine("\t\tVA_Version = {0}, Raw_VA_Version = {1}",
|
||||
VproTable.Bios.VA_Version, VproTable.Bios.Raw_VA_Version);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("\t\tVA_Version = {0}", VproTable.Bios.VA_Version);
|
||||
}
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrintAmtInformation(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
AmtInformation AmtInfo = amt.HardwareAsset.AmtInfo;
|
||||
Console.WriteLine("\nAmtInfo\n~~~~~~~");
|
||||
if (!AmtInfo.InformationValid)
|
||||
{
|
||||
Console.WriteLine("\tNo AmtInfo information available");
|
||||
return;
|
||||
}
|
||||
|
||||
if (AmtInfo.AmtSupported)
|
||||
Console.WriteLine("\tAMT Supported");
|
||||
else
|
||||
Console.WriteLine("\tAMT Not Supported");
|
||||
|
||||
if (AmtInfo.AmtEnabled)
|
||||
Console.WriteLine("\tAMT Enabled");
|
||||
else
|
||||
Console.WriteLine("\tAMT Disabled");
|
||||
|
||||
if (AmtInfo.IDEREnabled)
|
||||
Console.WriteLine("\tIDER Enabled");
|
||||
else
|
||||
Console.WriteLine("\tIDER Disabled");
|
||||
|
||||
if (AmtInfo.SOLEnabled)
|
||||
Console.WriteLine("\tSOL Enabled");
|
||||
else
|
||||
Console.WriteLine("\tSOL Disabled");
|
||||
|
||||
if (AmtInfo.NetworkEnabled)
|
||||
Console.WriteLine("\tNetwork Enabled");
|
||||
else
|
||||
Console.WriteLine("\tNetwork Disabled");
|
||||
|
||||
Console.WriteLine("\tExtended Data = {0}", AmtInfo.ExtendedData);
|
||||
|
||||
// OEMCapabities:
|
||||
if (AmtInfo.IDE_Redirection_available)
|
||||
Console.WriteLine("\tIDE_Redirection_available");
|
||||
if (AmtInfo.SOL_available)
|
||||
Console.WriteLine("\tSOL_available");
|
||||
if (AmtInfo.BIOS_Reflash_available)
|
||||
Console.WriteLine("\tBIOS_Reflash_available");
|
||||
if (AmtInfo.BIOS_Boot_Into_Setup_Screen_available)
|
||||
Console.WriteLine("\tBIOS_Boot_Into_Setup_Screen_available");
|
||||
if (AmtInfo.BIOS_Pause_Before_Booting_available)
|
||||
Console.WriteLine("\tBIOS_Pause_Before_Booting_available");
|
||||
if (AmtInfo.BIOS_Boot_From_Floppy_available)
|
||||
Console.WriteLine("\tBIOS_Boot_From_Floppy_availalble");
|
||||
if (AmtInfo.BIOS_Boot_From_CD_available)
|
||||
Console.WriteLine("\tBIOS_Boot_From_CD_available");
|
||||
if (AmtInfo.KVM_available)
|
||||
Console.WriteLine("\tKVM_available");
|
||||
|
||||
if (AmtInfo.BIOS_Screen != AmtInformation.BIOS_ScreenEnum.Unsupported)
|
||||
Console.WriteLine("\tBIOS Screen: {0}", AmtInfo.BIOS_Screen);
|
||||
|
||||
//OCR Capabilities
|
||||
if (AmtInfo.TbtDock_enabled)
|
||||
Console.WriteLine("\tThunderbolt_Dock_enabled");
|
||||
if (AmtInfo.ForceUEFIHTTPSBoot_supported)
|
||||
Console.WriteLine("\tForce_UEFI_HTTPS_Boot_supported");
|
||||
if (AmtInfo.ForceUEFIPBABoot_supported)
|
||||
Console.WriteLine("\tForce_UEFI_PBA_Boot_supported");
|
||||
if (AmtInfo.ForceWinREBoot_supported)
|
||||
Console.WriteLine("\tForce_UEFI_WinRE_Boot_supported");
|
||||
if (AmtInfo.AMTSecureBootControl_supported)
|
||||
Console.WriteLine("\tAMT_Secure_Boot_Control_supported");
|
||||
if (AmtInfo.WifiProfileShare_supported)
|
||||
Console.WriteLine("\tWifi_Profile_Share_supported");
|
||||
|
||||
if (AmtInfo.KVMEnabled)
|
||||
Console.WriteLine("\tKVM Enabled");
|
||||
else
|
||||
Console.WriteLine("\tKVM Disabled");
|
||||
|
||||
//RPE Capabilities
|
||||
if (AmtInfo.PyriteRevert_available)
|
||||
Console.WriteLine("\tPyrite_Revert_available");
|
||||
if (AmtInfo.SecureEraseAllSSDs_available)
|
||||
Console.WriteLine("\tSecure_Erase_All_SSDs_available");
|
||||
if (AmtInfo.TPMClear_available)
|
||||
Console.WriteLine("\tTPM_Clear_available");
|
||||
if (AmtInfo.OEMCustomAction_available)
|
||||
Console.WriteLine("\tOEM_Custom_Action_available");
|
||||
if (AmtInfo.ClearBIOSKVMVariables_available)
|
||||
Console.WriteLine("\tClear_BIOS_KVM_Variables_available");
|
||||
if (AmtInfo.BIOSReloadOfGoldenConfig_available)
|
||||
Console.WriteLine("\tBIOS_Reload_Of_Golden_Config_available");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get information from the Intel AMT");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void EnableUpdateMediaTable(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Enable the update in all subsequent boots.
|
||||
amt.HardwareAsset.SetUpdateMediaDeviceTableState(true, true);
|
||||
Console.WriteLine("\nEnableUpdateMediaTable operation completed successfully");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to enable table update");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DisableUpdateMediaTable(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Disable the update in all subsequent boots.
|
||||
amt.HardwareAsset.SetUpdateMediaDeviceTableState(false, true);
|
||||
Console.WriteLine("\nDisableUpdateMediaTable operation completed successfully");
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to disable table update");
|
||||
Console.WriteLine("\n" + ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,109 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2010-2014 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Common.Utils;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace HardwareAssetSample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetDefaultDllDirectories(int directoryFlags);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
// set default dll lookup directory to system
|
||||
SetDefaultDllDirectories(0x00000800); //LOAD_LIBRARY_SEARCH_SYSTEM32
|
||||
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
ci?.Dispose();
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Set that the tables will be updated on the next boot.
|
||||
HardwareAssetFunctionality.EnableUpdateMediaTable(amt);
|
||||
|
||||
// Print the BIOS info
|
||||
HardwareAssetFunctionality.PrintBIOSes_Info(amt);
|
||||
|
||||
// Print the Baseboard info
|
||||
HardwareAssetFunctionality.PrintBaseboards(amt);
|
||||
|
||||
// Print the Computer System info
|
||||
HardwareAssetFunctionality.PrintComputerSystem(amt);
|
||||
|
||||
// Print the Fans info
|
||||
HardwareAssetFunctionality.PrintFans(amt);
|
||||
|
||||
// Print the FRUs info
|
||||
HardwareAssetFunctionality.PrintFRUs(amt);
|
||||
|
||||
// Print the Media Devices info
|
||||
HardwareAssetFunctionality.PrintMediaDevices(amt);
|
||||
|
||||
// Print the Memory Modules info
|
||||
HardwareAssetFunctionality.PrintMemoryModules(amt);
|
||||
|
||||
// Print the Power Supplies info
|
||||
HardwareAssetFunctionality.PrintPowerSupplies(amt);
|
||||
|
||||
// Print the Processors info
|
||||
HardwareAssetFunctionality.PrintProcessors(amt);
|
||||
|
||||
// Print the Sensors info
|
||||
HardwareAssetFunctionality.PrintSensors(amt);
|
||||
|
||||
// Print the Batteries info (Supported from AMT 12.0 and later)
|
||||
HardwareAssetFunctionality.PrintBatteriesEx(amt);
|
||||
|
||||
// Print the Vpro Verification Table
|
||||
HardwareAssetFunctionality.PrintVproVerificationTable(amt);
|
||||
|
||||
// Print the Amt Information
|
||||
HardwareAssetFunctionality.PrintAmtInformation(amt);
|
||||
|
||||
// Disable table update.
|
||||
HardwareAssetFunctionality.DisableUpdateMediaTable(amt);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
amt?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("HardwareAssetSample")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Intel Corporation")]
|
||||
[assembly: AssemblyProduct("HardwareSample")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("0c038cba-46e7-477c-88ec-c0630a5f7844")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,192 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2009-2014 All Rights Reserved.
|
||||
//
|
||||
// File: KVMFunctionality.cs
|
||||
//
|
||||
// Contents: Demonstrate the IKVM interface.
|
||||
//
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.KVM;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using System.Security;
|
||||
|
||||
namespace KVMSample
|
||||
{
|
||||
public class KVMFunctionality
|
||||
{
|
||||
/// <summary>
|
||||
/// Get KVM capabilities
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void DisplayCapabilities(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
KVMCapabilities capabilities = amt.KVMSetup.GetCapabilities();
|
||||
Console.WriteLine("KVM Capabilities:\n=================\n");
|
||||
Console.WriteLine("Default port (5900): {0}", (capabilities.IsDefaultPortEnable) ? "enable" : "disable");
|
||||
Console.WriteLine("Redirection port: {0}", (capabilities.IsRedirectionPortEnable) ? "enable" : "disable");
|
||||
Console.WriteLine("Opt-In policy: {0}", (capabilities.OptInPolicyEnable) ? "enable" : "disable");
|
||||
Console.WriteLine("Opt-In policy timeout: {0}", capabilities.OptInPolicyTimeout);
|
||||
Console.WriteLine("TCP Session timeout: {0}", capabilities.TcpSessionTimeout);
|
||||
Console.WriteLine("Default visible screen: {0}", capabilities.VisibleScreen);
|
||||
}
|
||||
catch (KVMManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed to get KVM Capabilities with status: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the state of the KVM ports
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
/// <param name="ports">The ports to set. Default port is no longer supported. See remarks.</param>
|
||||
/// <remarks>
|
||||
/// NOTE:KVM Default port (5900) is no longer supported, starting from the following releases.
|
||||
/// KabyLake: 11.8.94
|
||||
/// CannonLake: 12.0.93
|
||||
/// CometLake: 14.1.70
|
||||
/// TigerLake: 15.0.45
|
||||
/// AlderLake, RaptorLake: 16.1.25
|
||||
/// Attempting to configure a RFB password or enabling the port via IPS_KVMRedirectionSettingData.PUT
|
||||
/// will return unsupported message.
|
||||
/// </remarks>
|
||||
public static void SetPortsState(IAMTInstance amt, KVMPortsState ports)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.Write("Setting port state...\t");
|
||||
amt.KVMSetup.SetPortsState(ports);
|
||||
Console.WriteLine("Success");
|
||||
}
|
||||
catch (KVMManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed with status: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Set the default monitor
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void SetDefaultMonitor(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.Write("Setting default monitor...\t");
|
||||
List<VisibleScreen> screens = amt.KVMSetup.GetAvailableMonitors();
|
||||
if (screens.Contains(VisibleScreen.Monitor0))
|
||||
amt.KVMSetup.SetDefaultMonitor(VisibleScreen.Monitor0);
|
||||
Console.WriteLine("Success");
|
||||
}
|
||||
catch (KVMManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed with status: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Set the RFB password
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
/// <param name="password">The new RFB password</param>
|
||||
/// <remarks>
|
||||
/// NOTE: KVM Default port (5900) and configuring an RFB password are no longer supported, starting from the following releases.
|
||||
/// KabyLake: 11.8.94
|
||||
/// CannonLake: 12.0.93
|
||||
/// CometLake: 14.1.70
|
||||
/// TigerLake: 15.0.45
|
||||
/// AlderLake, RaptorLake: 16.1.25
|
||||
/// Attempting to configure a RFB password or enabling the port via IPS_KVMRedirectionSettingData.PUT
|
||||
/// will return unsupported message.
|
||||
/// </remarks>
|
||||
public static void SetNewRFBPass(IAMTInstance amt, SecureString password)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.Write("Setting RFB Password...\t");
|
||||
amt.KVMSetup.SetRFBPassword(password);
|
||||
Console.WriteLine("Success");
|
||||
}
|
||||
catch (KVMManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed with status: " + ex.Message);
|
||||
}
|
||||
catch (ManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed with status: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the opt-in timeout
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
/// <param name="timeout">The timeout to set</param>
|
||||
public static void SetOptInTimeout(IAMTInstance amt, ushort timeout)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.Write("Setting Opt-In timeout...\t");
|
||||
amt.KVMSetup.SetOptInTimeout(timeout);
|
||||
Console.WriteLine("Success");
|
||||
}
|
||||
catch (KVMManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed with status: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the TCP session timeout
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
/// <param name="timeout">The timeout to set</param>
|
||||
public static void SetTCPSessionTimeout(IAMTInstance amt, ushort timeout)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.Write("Setting TCP session timeout...\t");
|
||||
amt.KVMSetup.SetSessionTimeout(timeout);
|
||||
Console.WriteLine("Success");
|
||||
}
|
||||
catch (KVMManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed with status: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enable the KVM interface
|
||||
/// </summary>
|
||||
/// <param name="amt">The Intel AMT instance</param>
|
||||
public static void EnableKVMInterface(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
Console.Write("Enable KVM interface...\t");
|
||||
if (amt.KVMSetup.GetInterfaceState())
|
||||
Console.WriteLine("\nKVM Interface is already enable.");
|
||||
else
|
||||
{
|
||||
amt.KVMSetup.SetInterfaceState(true);
|
||||
Console.WriteLine("Success");
|
||||
}
|
||||
}
|
||||
catch (KVMManageabilityException ex)
|
||||
{
|
||||
Console.WriteLine("Failed with status: " + ex.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,28 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -0,0 +1,91 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2010-2014 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.Exceptions;
|
||||
using Intel.Manageability.KVM;
|
||||
using Common.Utils;
|
||||
using System.IO;
|
||||
using System.Security;
|
||||
|
||||
namespace KVMSample
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
IAMTInstance amt = null;
|
||||
ConnectionInfoEX ci = null;
|
||||
SecureString rfbPass = null;
|
||||
|
||||
try
|
||||
{
|
||||
// Check if JSON path was provided as an argument. If not, default path would be used.
|
||||
try
|
||||
{
|
||||
ci = ProgramInput.DeserializeJsonToStruct(args.Length > 0 ? args[0] : null);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
Console.WriteLine($"Could not read argument file: {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
amt = AMTInstanceFactory.CreateEX(ci);
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
ci?.Dispose();
|
||||
Console.WriteLine(e.Message);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Enable KVM interface
|
||||
KVMFunctionality.EnableKVMInterface(amt);
|
||||
|
||||
// Set the RFB password
|
||||
Console.WriteLine("Setting new RFB Password \n");
|
||||
rfbPass = ProgramInput.PasswordPrompt("new RFB");
|
||||
try
|
||||
{
|
||||
KVMFunctionality.SetNewRFBPass(amt, rfbPass);
|
||||
}
|
||||
catch
|
||||
{
|
||||
rfbPass?.Dispose();
|
||||
throw;
|
||||
}
|
||||
|
||||
// Set the opt-in timeout
|
||||
KVMFunctionality.SetOptInTimeout(amt, 1000);
|
||||
|
||||
// Set the KVM ports state
|
||||
KVMFunctionality.SetPortsState(amt, KVMPortsState.EnableAllPorts);
|
||||
|
||||
// Set the TCP session timeout
|
||||
KVMFunctionality.SetTCPSessionTimeout(amt, 100);
|
||||
|
||||
// Set the default monitor
|
||||
KVMFunctionality.SetDefaultMonitor(amt);
|
||||
|
||||
// Get KVM capabilities
|
||||
KVMFunctionality.DisplayCapabilities(amt);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
rfbPass?.Dispose();
|
||||
amt?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("KVMSample")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Intel Corporation")]
|
||||
[assembly: AssemblyProduct("KVMSample")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020 Intel Corporation")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("d49da73d-5506-48ae-af43-7d48663ab903")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@ -0,0 +1,169 @@
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) Intel Corporation, 2011 All Rights Reserved.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Intel.Manageability;
|
||||
using Intel.Manageability.AlarmClock;
|
||||
using Intel.Manageability.Exceptions;
|
||||
|
||||
namespace MultipleAlarmClocksSample
|
||||
{
|
||||
public class AlarmClockFunctionality
|
||||
{
|
||||
public static void CreateOrUpdateAlarms(IAMTInstance amt)
|
||||
{
|
||||
// Create basic alarm, this alarm will be initialized on all Intel AMT generations that support alarm clock.
|
||||
DefaultAlarm defaultAlarm = new DefaultAlarm(new DateTime(2013, 1, 1), TimeZoneInfo.Local, new TimeSpan(1,12,0,0));
|
||||
|
||||
// Create improved alarm, this alarm will be initialized only for Intel AMT Release 8.0 later releases.
|
||||
OptionalAlarm optionalAlarm1 = new OptionalAlarm("OptionalAlarm1", new DateTime(2013, 1, 1), TimeZoneInfo.Local, new TimeSpan(0, 12, 0));
|
||||
OptionalAlarm optionalAlarm2 = new OptionalAlarm("OptionalAlarm2", new DateTime(2013, 2, 2), TimeZoneInfo.Local, DeleteOptions.AutoDeleteOnCompletion);
|
||||
|
||||
|
||||
List<OptionalAlarm> alarms = new List<OptionalAlarm>();
|
||||
alarms.Add(optionalAlarm1);
|
||||
alarms.Add(optionalAlarm2);
|
||||
|
||||
AlarmClockList alarmClockList = new AlarmClockList(defaultAlarm, alarms);
|
||||
|
||||
try
|
||||
{
|
||||
amt.AlarmClock.CreateOrUpdateAlarms(alarmClockList);
|
||||
Console.WriteLine("Create alarms successfully");
|
||||
}
|
||||
catch (AlarmClockManageabilityException e)
|
||||
{
|
||||
PrintException("CreateOrUpdateAlarms", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetAMTNetworkTime(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Set Intel AMT network time to UTC.
|
||||
amt.TimeSynchronization.SetUtcNetworkTime();
|
||||
Console.WriteLine("Set Intel AMT network time successfully");
|
||||
}
|
||||
catch (ManageabilityException e)
|
||||
{
|
||||
Console.WriteLine(e.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void DeleteOptionalAlarm(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
amt.AlarmClock.DeleteOptionalAlarm("OptionalAlarm1");
|
||||
Console.WriteLine("Delete Optional Alarm successfully");
|
||||
}
|
||||
catch (AlarmClockManageabilityException e)
|
||||
{
|
||||
PrintException("DeleteOptionalAlarm", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DeleteDefaultAlarm(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
amt.AlarmClock.DeleteDefaultAlarm();
|
||||
Console.WriteLine("Delete Default Alarm successfully");
|
||||
|
||||
}
|
||||
catch (AlarmClockManageabilityException e)
|
||||
{
|
||||
PrintException("DeleteDefaultAlarm", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DisplayAllAlarms(IAMTInstance amt)
|
||||
{
|
||||
AlarmClockList allAmtAlarms;
|
||||
try
|
||||
{
|
||||
// Get all alarms.
|
||||
allAmtAlarms = amt.AlarmClock.GetAllAlarmsSettings();
|
||||
Console.WriteLine();
|
||||
if (allAmtAlarms.DefaultAlarm.HasValue)
|
||||
{
|
||||
Console.WriteLine("Default Alarm Details:");
|
||||
Console.WriteLine("======================");
|
||||
PrintDefaultAlarm(allAmtAlarms.DefaultAlarm.Value);
|
||||
}
|
||||
Console.WriteLine("Optional Alarms Details:");
|
||||
Console.WriteLine("========================");
|
||||
allAmtAlarms.OptionalAlarms.ForEach(PrintOptionalAlarm);
|
||||
}
|
||||
catch (AlarmClockManageabilityException e)
|
||||
{
|
||||
PrintException("DisplayAllAlarms", e);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void DeleteAllAlarms(IAMTInstance amt)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Delete all alarms.
|
||||
amt.AlarmClock.DeleteAllAlarms();
|
||||
Console.WriteLine("Delete all Alarms successfully");
|
||||
|
||||
}
|
||||
catch (AlarmClockManageabilityException e)
|
||||
{
|
||||
PrintException("DeleteAllAlarms", e);
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintException(string methodName, AlarmClockManageabilityException e)
|
||||
{
|
||||
Console.WriteLine(methodName + " throw: " + e.Message);
|
||||
Console.WriteLine("Details:");
|
||||
Console.WriteLine("========");
|
||||
Console.WriteLine("\t- Machine Origin : {0}", e.MachineOrigin);
|
||||
Console.WriteLine("\t- HLAPI Source Function: {0}", e.Source);
|
||||
if (e.PT_STATUS != null)
|
||||
Console.WriteLine("\t- Return Value : {0}", e.PT_STATUS);
|
||||
if (e.Tip != string.Empty)
|
||||
Console.WriteLine("\t- Counsel : {0}", e.Tip);
|
||||
}
|
||||
|
||||
static void PrintOptionalAlarm(OptionalAlarm alarmClock)
|
||||
{
|
||||
string alarmOption = string.Empty;
|
||||
switch (alarmClock.DeleteOption)
|
||||
{
|
||||
case DeleteOptions.AutoDeleteOnCompletion:
|
||||
alarmOption = "AutoDeleteOnCompletion";
|
||||
break;
|
||||
case DeleteOptions.ManualDelete:
|
||||
alarmOption = "ManualDelete";
|
||||
break;
|
||||
}
|
||||
|
||||
Console.WriteLine("\t* Name : {0}" ,alarmClock.AlarmName);
|
||||
Console.WriteLine("\t StartTime : {0}", alarmClock.StartTime);
|
||||
Console.WriteLine("\t Interval : {0}", alarmClock.Interval);
|
||||
Console.WriteLine("\t Alarm Option: {0}", alarmOption);
|
||||
Console.WriteLine();
|
||||
}
|
||||
|
||||
static void PrintDefaultAlarm(DefaultAlarm alarmClock)
|
||||
{
|
||||
Console.WriteLine("\t StartTime : {0}", alarmClock.StartTime);
|
||||
Console.WriteLine("\t Interval : {0}", alarmClock.Interval);
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,32 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Update="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.*" />
|
||||
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Label="Kit">
|
||||
<Kit>$([System.Convert]::ToBoolean(true))</Kit>
|
||||
<Bin />
|
||||
<Bin Condition="Exists('..\..\..\Bin')">..\..\..\Bin</Bin>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition="$(Kit)" Label="Kit References">
|
||||
<Reference Include="HLAPI">
|
||||
<HintPath>$(Bin)\HLAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Compile Include="..\..\Common\ProgramInput.cs" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user