Compare commits
63 Commits
snyk-fix-1
...
main
Author | SHA1 | Date | |
---|---|---|---|
|
098ba37907 | ||
|
2a2d6a807b | ||
|
6b7bbbf079 | ||
|
2b3166dfa0 | ||
|
926b8d7064 | ||
|
62e0b4f037 | ||
|
24b18f6422 | ||
|
052dff7d6f | ||
|
2c4c42851d | ||
|
d4df37c500 | ||
|
6c7443e7e4 | ||
|
d6db3c32cc | ||
|
e06d4cbe29 | ||
|
d596186fea | ||
|
61678dc9f6 | ||
|
739992cf29 | ||
|
a9b8d8e5f8 | ||
|
2a460e90dc | ||
|
59a8d29ac4 | ||
|
cb9539639a | ||
|
a151146e8a | ||
|
bb8211ae03 | ||
|
ed5480c7d1 | ||
|
c9a2ab44dd | ||
|
fb29227f9d | ||
|
26629a1a68 | ||
|
db924a9b2e | ||
|
f0682c4588 | ||
|
913fa41b17 | ||
|
f6666d857b | ||
|
e51dc9f1f7 | ||
|
a4929a2d08 | ||
|
615e9156dc | ||
|
373a560b1a | ||
|
0f8050b6bf | ||
|
c70335ae2e | ||
|
d94302543b | ||
|
dea97dec64 | ||
|
cd2887a992 | ||
|
33abb9d2d2 | ||
|
34981ad2c7 | ||
|
17efe70b4e | ||
|
c2be90c8a7 | ||
|
b4c12d63b5 | ||
|
bea1eb22ef | ||
|
ec1374280b | ||
|
f7dc3f4faa | ||
|
491f5087de | ||
|
a968777550 | ||
|
db9605ab82 | ||
|
91d7481264 | ||
|
cb24fae43a | ||
|
4d551ef09d | ||
|
39ddea389a | ||
|
9aa745e5a2 | ||
|
38c8bc2384 | ||
|
584ca67799 | ||
|
cf7fac325f | ||
|
8569684593 | ||
|
1e72b281a5 | ||
|
75673aa373 | ||
|
5772e831ad | ||
|
67202dc5d3 |
16
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
16
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
## PR Checklist
|
||||||
|
<!-- Please check if your PR fulfills the following requirements: -->
|
||||||
|
|
||||||
|
- [ ] Unit Tests have been added for new changes
|
||||||
|
- [ ] API tests have been updated if applicable
|
||||||
|
- [ ] All commented code has been removed
|
||||||
|
- [ ] If you've added a dependency, you've ensured license is compatible with Apache 2.0 and clearly outlined the added dependency.
|
||||||
|
|
||||||
|
|
||||||
|
## What are you changing?
|
||||||
|
<!-- Please provide a short description of the updates that are in the PR -->
|
||||||
|
|
||||||
|
|
||||||
|
## Anything the reviewer should know when reviewing this PR?
|
||||||
|
|
||||||
|
### If the there are associated PRs in other repositories, please link them here (i.e. open-amt-cloud-toolkit/repo#365 )
|
4
.github/workflows/build_all.yml
vendored
4
.github/workflows/build_all.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
|||||||
- name: Create Build Dir
|
- name: Create Build Dir
|
||||||
run: mkdir build
|
run: mkdir build
|
||||||
- name: Clone
|
- name: Clone
|
||||||
run: git clone --branch 2020.11-1 https://github.com/microsoft/vcpkg.git
|
run: git clone https://github.com/microsoft/vcpkg.git && cd vcpkg && git checkout 772d435ba18bf2f342458e0187ab7b48b84fe3f0
|
||||||
- name: Build VCPKG
|
- name: Build VCPKG
|
||||||
run: cd vcpkg && bootstrap-vcpkg.bat
|
run: cd vcpkg && bootstrap-vcpkg.bat
|
||||||
shell: cmd
|
shell: cmd
|
||||||
@@ -71,7 +71,7 @@ jobs:
|
|||||||
- name: Create Build Dir
|
- name: Create Build Dir
|
||||||
run: mkdir build
|
run: mkdir build
|
||||||
- name: Clone
|
- name: Clone
|
||||||
run: git clone --branch 2020.11-1 https://github.com/microsoft/vcpkg.git
|
run: git clone https://github.com/microsoft/vcpkg.git && cd vcpkg && git checkout 772d435ba18bf2f342458e0187ab7b48b84fe3f0
|
||||||
- name: Build VCPKG
|
- name: Build VCPKG
|
||||||
run: cd vcpkg && ./bootstrap-vcpkg.sh
|
run: cd vcpkg && ./bootstrap-vcpkg.sh
|
||||||
shell: bash
|
shell: bash
|
||||||
|
20
.github/workflows/changelog.yml
vendored
Normal file
20
.github/workflows/changelog.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: Changelog Generator
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: [ main ]
|
||||||
|
workflow_dispatch:
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- run: docker run -v $PWD:/workdir quay.io/git-chglog/git-chglog --next-tag vNext --output CHANGELOG-new.md vNext..
|
||||||
|
- name: GitHub Upload Release Artifacts
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: CHANGELOG-new.md
|
||||||
|
path: |
|
||||||
|
./CHANGELOG-new.md
|
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
@@ -7,7 +7,7 @@ name: Build RPC (Native)
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ master ]
|
branches: [ main ]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
BUILD_TYPE: Release
|
BUILD_TYPE: Release
|
||||||
@@ -21,7 +21,7 @@ jobs:
|
|||||||
- name: Create Build Dir
|
- name: Create Build Dir
|
||||||
run: mkdir build
|
run: mkdir build
|
||||||
- name: Clone
|
- name: Clone
|
||||||
run: git clone --branch 2020.11-1 https://github.com/microsoft/vcpkg.git
|
run: git clone https://github.com/microsoft/vcpkg.git && cd vcpkg && git checkout 772d435ba18bf2f342458e0187ab7b48b84fe3f0
|
||||||
- name: Build VCPKG
|
- name: Build VCPKG
|
||||||
run: cd vcpkg && bootstrap-vcpkg.bat
|
run: cd vcpkg && bootstrap-vcpkg.bat
|
||||||
shell: cmd
|
shell: cmd
|
||||||
@@ -54,7 +54,7 @@ jobs:
|
|||||||
- name: Create Build Dir
|
- name: Create Build Dir
|
||||||
run: mkdir build
|
run: mkdir build
|
||||||
- name: Clone
|
- name: Clone
|
||||||
run: git clone --branch 2020.11-1 https://github.com/microsoft/vcpkg.git
|
run: git clone https://github.com/microsoft/vcpkg.git && cd vcpkg && git checkout 772d435ba18bf2f342458e0187ab7b48b84fe3f0
|
||||||
- name: Build VCPKG
|
- name: Build VCPKG
|
||||||
run: cd vcpkg && ./bootstrap-vcpkg.sh
|
run: cd vcpkg && ./bootstrap-vcpkg.sh
|
||||||
shell: bash
|
shell: bash
|
||||||
|
2
.github/workflows/docker-ci.yml
vendored
2
.github/workflows/docker-ci.yml
vendored
@@ -7,7 +7,7 @@ name: Docker Image CI
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ master ]
|
branches: [ main ]
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
6
Build.md
6
Build.md
@@ -25,8 +25,9 @@ sudo apt install git cmake build-essential curl zip unzip tar pkg-config
|
|||||||
Open a Terminal window.
|
Open a Terminal window.
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone -b 2020.11-1 https://github.com/microsoft/vcpkg.git
|
git clone https://github.com/microsoft/vcpkg.git
|
||||||
cd vcpkg
|
cd vcpkg
|
||||||
|
git checkout 772d435ba18bf2f342458e0187ab7b48b84fe3f0
|
||||||
./bootstrap-vcpkg.sh
|
./bootstrap-vcpkg.sh
|
||||||
./vcpkg install cpprestsdk[websockets]
|
./vcpkg install cpprestsdk[websockets]
|
||||||
```
|
```
|
||||||
@@ -68,8 +69,9 @@ Steps below are for Windows 10 and Visual Studio 2019 Professional.
|
|||||||
Open an x64 Native Tools Command Prompt for Visual Studio 2019.
|
Open an x64 Native Tools Command Prompt for Visual Studio 2019.
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone -b 2020.11-1 https://github.com/microsoft/vcpkg.git
|
git clone https://github.com/microsoft/vcpkg.git
|
||||||
cd vcpkg
|
cd vcpkg
|
||||||
|
git checkout 772d435ba18bf2f342458e0187ab7b48b84fe3f0
|
||||||
bootstrap-vcpkg.bat
|
bootstrap-vcpkg.bat
|
||||||
vcpkg install cpprestsdk[websockets]:x64-windows-static
|
vcpkg install cpprestsdk[websockets]:x64-windows-static
|
||||||
```
|
```
|
||||||
|
59
CHANGELOG.md
59
CHANGELOG.md
@@ -1,3 +1,62 @@
|
|||||||
|
<a name="v2.0.0"></a>
|
||||||
|
## v2.0.0
|
||||||
|
|
||||||
|
### Build
|
||||||
|
- bump version to v1.3.0
|
||||||
|
- bump version to v2.0.0
|
||||||
|
|
||||||
|
### Ci
|
||||||
|
- update scanning
|
||||||
|
|
||||||
|
### Docs
|
||||||
|
- **readme:** wording
|
||||||
|
- **readme:** update readme
|
||||||
|
- **security:** added SECURITY.md file
|
||||||
|
|
||||||
|
### Feat
|
||||||
|
- update to OpenSSL 1.1.1l
|
||||||
|
- update workflows and Docker build.
|
||||||
|
- Update to latest vcpkg
|
||||||
|
- Update docs and scripts for Windows and Ubuntu.
|
||||||
|
- format json status messages
|
||||||
|
- add AMT wireless adapter info to amtinfo LAN settings.
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
- klockwork reported success / failure check fix
|
||||||
|
- **spelling:** lan inteface -> lan interface in amtinfo
|
||||||
|
|
||||||
|
<a name="v1.2.2"></a>
|
||||||
|
## [v1.2.2] - 2021-06-22
|
||||||
|
### Ci
|
||||||
|
- remove Jenkins chron
|
||||||
|
- **changelog:** add automation for changelog generation
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
- update examples text and version
|
||||||
|
|
||||||
|
<a name="v1.2.1"></a>
|
||||||
|
## [v1.2.1] - 2021-05-06
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
**docker:** add missing ca-certs
|
||||||
|
|
||||||
|
<a name="v1.2.0"></a>
|
||||||
|
## v1.2.0
|
||||||
|
|
||||||
|
### Ci
|
||||||
|
- breakout docker build for merge only
|
||||||
|
|
||||||
|
### Feat
|
||||||
|
- update RPC version to 1.2.0.
|
||||||
|
- BREAKING CHANGE: add heartbeat capability, bump RPC Protocol version to 4.0.0
|
||||||
|
- add unit test framework
|
||||||
|
- add hostname to activation info
|
||||||
|
- **docker:** add dockerfile support for RPC
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
- use message status instead, cleanup message fields.
|
||||||
|
|
||||||
|
|
||||||
<a name="v1.1.0"></a>
|
<a name="v1.1.0"></a>
|
||||||
## [v1.1.0] - 2021-02-09
|
## [v1.1.0] - 2021-02-09
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required (VERSION 3.1)
|
cmake_minimum_required (VERSION 3.1)
|
||||||
|
|
||||||
project (rpc VERSION 1.2.0)
|
project (rpc VERSION 2.0.0)
|
||||||
|
|
||||||
set (CMAKE_CXX_STANDARD 11)
|
set (CMAKE_CXX_STANDARD 11)
|
||||||
|
|
||||||
|
101
CONTRIBUTING.MD
Normal file
101
CONTRIBUTING.MD
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
## <a name="commit"></a> Commit Message Guidelines
|
||||||
|
|
||||||
|
We have precise rules over how our git commit messages should be formatted. This leads to more readable messages that are easy to follow when looking through the project history.
|
||||||
|
|
||||||
|
### Commit Message Format
|
||||||
|
Each commit message consists of a **header**, a **body** and a **footer**. The header has a special format that includes a **type**, a **scope** and a **subject**:
|
||||||
|
|
||||||
|
```
|
||||||
|
<type>(<scope>): <subject>
|
||||||
|
<BLANK LINE>
|
||||||
|
<body>
|
||||||
|
<BLANK LINE>
|
||||||
|
<footer>
|
||||||
|
```
|
||||||
|
|
||||||
|
The **header** with **type** is mandatory. The **scope** of the header is optional as far as the automated PR checks are concerned, but be advised that PR reviewers **may request** you provide an applicable scope.
|
||||||
|
|
||||||
|
Any line of the commit message should no be longer 72 characters! This allows the message to be easier to read on GitHub as well as in various git tools.
|
||||||
|
|
||||||
|
The footer should contain a reference to an Azure Boards ticket (e.g. AB#[number]).
|
||||||
|
|
||||||
|
Example 1:
|
||||||
|
```
|
||||||
|
feat(telemetry): Add new MQTT events
|
||||||
|
|
||||||
|
Events are now emitted over various /mps topics on MQTT for success/failures
|
||||||
|
as they occur throughout the service.
|
||||||
|
|
||||||
|
Resolves: AB#2222
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Revert
|
||||||
|
If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted.
|
||||||
|
|
||||||
|
### Type
|
||||||
|
|
||||||
|
Must be one of the following:
|
||||||
|
|
||||||
|
* **feat**: A new feature
|
||||||
|
* **fix**: A bug fix
|
||||||
|
* **docs**: Documentation only changes
|
||||||
|
* **style**: Changes that do not affect the meaning of the code (white-space, formatting, etc)
|
||||||
|
* **refactor**: A code change that neither fixes a bug nor adds a feature
|
||||||
|
* **perf**: A code change that improves performance
|
||||||
|
* **test**: Adding missing tests or correcting existing tests
|
||||||
|
* **build**: Changes that affect the CI/CD pipeline or build system or external dependencies (example scopes: travis, jenkins, makefile)
|
||||||
|
* **ci**: Changes provided by DevOps for CI purposes.
|
||||||
|
* **revert**: Reverts a previous commit.
|
||||||
|
|
||||||
|
### Scope
|
||||||
|
|
||||||
|
Should be one of the following:
|
||||||
|
Modules:
|
||||||
|
* **common**: A change or addition to the common module
|
||||||
|
* **tracker**: A change or addition to the tracker module
|
||||||
|
* **server**: A change or addition to the server module
|
||||||
|
* **msgs**: A change or addition to msgs module
|
||||||
|
* **eval**: Any change to benchmark tools
|
||||||
|
* **deps**: A change to any dependency or 3rd-party library
|
||||||
|
* **all**: A change that affects all modules
|
||||||
|
* *no scope*: If no scope is provided, it is assumed the PR does not apply to the above scopes
|
||||||
|
|
||||||
|
### Body
|
||||||
|
Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
|
||||||
|
Here is detailed guideline on how to write the body of the commit message ([Reference](https://chris.beams.io/posts/git-commit/)):
|
||||||
|
```
|
||||||
|
More detailed explanatory text, if necessary. Wrap it to about 72
|
||||||
|
characters or so. In some contexts, the first line is treated as the
|
||||||
|
subject of the commit and the rest of the text as the body. The
|
||||||
|
blank line separating the summary from the body is critical (unless
|
||||||
|
you omit the body entirely); various tools like `log`, `shortlog`
|
||||||
|
and `rebase` can get confused if you run the two together.
|
||||||
|
|
||||||
|
Explain the problem that this commit is solving. Focus on why you
|
||||||
|
are making this change as opposed to how (the code explains that).
|
||||||
|
Are there side effects or other unintuitive consequences of this
|
||||||
|
change? Here's the place to explain them.
|
||||||
|
|
||||||
|
Further paragraphs come after blank lines.
|
||||||
|
|
||||||
|
- Bullet points are okay, too
|
||||||
|
|
||||||
|
- Typically a hyphen or asterisk is used for the bullet, preceded
|
||||||
|
by a single space, with blank lines in between, but conventions
|
||||||
|
vary here
|
||||||
|
```
|
||||||
|
|
||||||
|
### Footer
|
||||||
|
|
||||||
|
The footer should contain a reference to JIRA ticket (e.g. SL6-0000) that this commit **Closes** or **Resolves**.
|
||||||
|
The footer should contain any information about **Breaking Changes**.
|
||||||
|
|
||||||
|
**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines.
|
||||||
|
|
||||||
|
|
||||||
|
### Pull Requests practices
|
||||||
|
|
||||||
|
* PR author is responsible to merge its own PR after review has been done and CI has passed.
|
||||||
|
* When merging, make sure git linear history is preserved. PR author should select a merge option (`Rebase and merge` or `Squash and merge`) based on which option will fit the best to the git linear history.
|
||||||
|
* PR topic should follow the same guidelines as the header of the [Git Commit Message](#commit-message-format)
|
@@ -50,8 +50,9 @@ export PATH=/home/user/Downloads/git:$PATH
|
|||||||
Using a Terminal window with the PATH and devtoolset enabled per the Dependencies.
|
Using a Terminal window with the PATH and devtoolset enabled per the Dependencies.
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone -b 2020.11-1 https://github.com/microsoft/vcpkg.git
|
git clone https://github.com/microsoft/vcpkg.git
|
||||||
cd vcpkg
|
cd vcpkg
|
||||||
|
git checkout 772d435ba18bf2f342458e0187ab7b48b84fe3f0
|
||||||
./bootstrap-vcpkg.sh
|
./bootstrap-vcpkg.sh
|
||||||
./vcpkg install cpprestsdk[websockets]
|
./vcpkg install cpprestsdk[websockets]
|
||||||
```
|
```
|
||||||
|
@@ -28,8 +28,9 @@ sudo yum install cmake
|
|||||||
Using a Terminal window with the PATH and devtoolset enabled per the Dependencies.
|
Using a Terminal window with the PATH and devtoolset enabled per the Dependencies.
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone -b 2020.11-1 https://github.com/microsoft/vcpkg.git
|
git clone https://github.com/microsoft/vcpkg.git
|
||||||
cd vcpkg
|
cd vcpkg
|
||||||
|
git checkout 772d435ba18bf2f342458e0187ab7b48b84fe3f0
|
||||||
./bootstrap-vcpkg.sh
|
./bootstrap-vcpkg.sh
|
||||||
./vcpkg install cpprestsdk[websockets]
|
./vcpkg install cpprestsdk[websockets]
|
||||||
```
|
```
|
||||||
|
@@ -11,11 +11,11 @@ RUN \
|
|||||||
apt-get update -y -qq && \
|
apt-get update -y -qq && \
|
||||||
apt install -y -qq \
|
apt install -y -qq \
|
||||||
git cmake build-essential libssl-dev zlib1g-dev \
|
git cmake build-essential libssl-dev zlib1g-dev \
|
||||||
curl unzip zip pkg-config
|
curl unzip zip pkg-config ca-certificates
|
||||||
RUN git clone https://github.com/open-amt-cloud-toolkit/rpc.git
|
RUN git clone https://github.com/open-amt-cloud-toolkit/rpc.git
|
||||||
WORKDIR /rpc
|
WORKDIR /rpc
|
||||||
RUN mkdir -p build
|
RUN mkdir -p build
|
||||||
RUN git clone --branch 2020.11-1 https://github.com/microsoft/vcpkg.git
|
RUN git clone https://github.com/microsoft/vcpkg.git && cd vcpkg && git checkout 772d435ba18bf2f342458e0187ab7b48b84fe3f0
|
||||||
RUN cd vcpkg && ./bootstrap-vcpkg.sh
|
RUN cd vcpkg && ./bootstrap-vcpkg.sh
|
||||||
RUN ./vcpkg/vcpkg install cpprestsdk[websockets]
|
RUN ./vcpkg/vcpkg install cpprestsdk[websockets]
|
||||||
|
|
||||||
|
159
Jenkinsfile
vendored
Normal file
159
Jenkinsfile
vendored
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
pipeline {
|
||||||
|
agent {
|
||||||
|
label 'docker-amt'
|
||||||
|
}
|
||||||
|
options {
|
||||||
|
buildDiscarder(logRotator(numToKeepStr: '5', daysToKeepStr: '30'))
|
||||||
|
timestamps()
|
||||||
|
timeout(unit: 'HOURS', time: 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage ('Cloning Repository') {
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
scmCheckout {
|
||||||
|
clean = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Static Code Scan - Protex') {
|
||||||
|
environment{
|
||||||
|
PROJECT_NAME = 'OpenAMT - RPC'
|
||||||
|
SCANNERS = 'protex'
|
||||||
|
}
|
||||||
|
when {
|
||||||
|
anyOf {
|
||||||
|
branch 'main';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
rbheStaticCodeScan()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage ('Parallel Builds') {
|
||||||
|
parallel {
|
||||||
|
stage ('Linux') {
|
||||||
|
agent { label 'docker-amt' }
|
||||||
|
stages {
|
||||||
|
stage('Build') {
|
||||||
|
agent {
|
||||||
|
docker {
|
||||||
|
image 'ubuntu:18.04'
|
||||||
|
reuseNode true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
sh './scripts/jenkins-pre-build.sh'
|
||||||
|
sh './scripts/jenkins-build.sh'
|
||||||
|
stash includes: 'build/rpc', name: 'linux-rpc-app'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage ('Archive') {
|
||||||
|
steps {
|
||||||
|
archiveArtifacts allowEmptyArchive: true, artifacts: 'build/rpc', caseSensitive: false, onlyIfSuccessful: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage ('Windows') {
|
||||||
|
agent { label 'openamt-win' }
|
||||||
|
stages{
|
||||||
|
stage ('Build') {
|
||||||
|
steps {
|
||||||
|
bat 'scripts\\jenkins-pre-build.cmd'
|
||||||
|
bat 'scripts\\jenkins-build.cmd'
|
||||||
|
// prepare stash for the binary scan
|
||||||
|
stash includes: '**/*.exe', name: 'win-rpc-app'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage ('Archive') {
|
||||||
|
steps {
|
||||||
|
archiveArtifacts allowEmptyArchive: true, artifacts: 'build\\Release\\rpc.exe', caseSensitive: false, onlyIfSuccessful: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Prep Binary') {
|
||||||
|
steps {
|
||||||
|
sh 'mkdir -p ./bin'
|
||||||
|
dir('./bin') {
|
||||||
|
unstash 'linux-rpc-app'
|
||||||
|
unstash 'win-rpc-app'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Linux Scans') {
|
||||||
|
environment{
|
||||||
|
PROJECT_NAME = 'OpenAMT - RPC - Linux'
|
||||||
|
SCANNERS = 'bdba,klocwork'
|
||||||
|
|
||||||
|
// protecode details
|
||||||
|
PROTECODE_BIN_DIR = './bin'
|
||||||
|
PROTECODE_INCLUDE_SUB_DIRS = true
|
||||||
|
|
||||||
|
// klocwork details
|
||||||
|
KLOCWORK_SCAN_TYPE = 'c++'
|
||||||
|
KLOCWORK_PRE_BUILD_SCRIPT = './scripts/jenkins-pre-build.sh'
|
||||||
|
KLOCWORK_BUILD_COMMAND = './scripts/jenkins-build.sh'
|
||||||
|
KLOCWORK_IGNORE_COMPILE_ERRORS = true
|
||||||
|
|
||||||
|
// publishArtifacts details
|
||||||
|
PUBLISH_TO_ARTIFACTORY = true
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
rbheStaticCodeScan()
|
||||||
|
dir('artifacts/Klockwork'){
|
||||||
|
sh 'cp kw_report.html kw_report_linux.html'
|
||||||
|
sh 'cp kw_report.csv kw_report_linux.csv'
|
||||||
|
archiveArtifacts allowEmptyArchive: true, artifacts: 'kw_report_linux.html'
|
||||||
|
archiveArtifacts allowEmptyArchive: true, artifacts: 'kw_report_linux.csv'
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Windows Scans'){
|
||||||
|
agent { label 'openamt-win' }
|
||||||
|
stages{
|
||||||
|
stage ('Windows Scans - klocwork') {
|
||||||
|
environment {
|
||||||
|
PROJECT_NAME = 'OpenAMT - RPC - Windows'
|
||||||
|
SCANNERS = 'klocwork'
|
||||||
|
|
||||||
|
// klocwork details
|
||||||
|
KLOCWORK_SCAN_TYPE = 'c++'
|
||||||
|
KLOCWORK_PRE_BUILD_SCRIPT = 'scripts\\jenkins-pre-build.cmd'
|
||||||
|
KLOCWORK_BUILD_COMMAND = 'scripts\\jenkins-build.cmd'
|
||||||
|
KLOCWORK_IGNORE_COMPILE_ERRORS = true
|
||||||
|
|
||||||
|
// publishArtifacts details
|
||||||
|
PUBLISH_TO_ARTIFACTORY = true
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
rbheStaticCodeScan()
|
||||||
|
dir('artifacts\\Klockwork'){
|
||||||
|
bat 'copy kw_report.html kw_report_windows.html'
|
||||||
|
bat 'copy kw_report.csv kw_report_windows.csv'
|
||||||
|
stash includes: 'kw_report_windows.*', name: 'win-kwreports'
|
||||||
|
archiveArtifacts allowEmptyArchive: true, artifacts: 'kw_report_windows.html'
|
||||||
|
archiveArtifacts allowEmptyArchive: true, artifacts: 'kw_report_windows.csv'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Publish Artifacts'){
|
||||||
|
steps{
|
||||||
|
dir('artifacts/Klockwork'){
|
||||||
|
unstash 'win-kwreports'
|
||||||
|
}
|
||||||
|
publishArtifacts()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
README.md
31
README.md
@@ -4,26 +4,43 @@
|
|||||||
|
|
||||||
The Remote Provisioning Client (RPC) is an application that enables remote capabilities for Intel® AMT, such as as device activation and configuration. To accomplish this, RPC communicates with the Remote Provisioning Server (RPS) to activate and connect the edge device.
|
The Remote Provisioning Client (RPC) is an application that enables remote capabilities for Intel® AMT, such as as device activation and configuration. To accomplish this, RPC communicates with the Remote Provisioning Server (RPS) to activate and connect the edge device.
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
**For detailed documentation** about RPC or other features of the Open AMT Cloud Toolkit, see the [docs](https://open-amt-cloud-toolkit.github.io/docs/).
|
**For detailed documentation** about RPC or other features of the Open AMT Cloud Toolkit, see the [docs](https://open-amt-cloud-toolkit.github.io/docs/).
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
We leverage GitHub Actions as a means to build RPC automatically leveraging Github's CI/CD Infrastructure. This avoids having to deal with the challenges of getting your build environment just right on your local machine and allows you to get up and running much faster. Read more about GitHub Actions [here](https://github.blog/2019-08-08-github-actions-now-supports-ci-cd/#:~:text=GitHub%20Actions%20is%20an%20API,every%20step%20along%20the%20way.)
|
We leverage GitHub Actions as a means to build RPC automatically leveraging Github's CI/CD Infrastructure. This avoids having to deal with the challenges of getting your build environment just right on your local machine and allows you to get up and running much faster. Read more about GitHub Actions [here](https://github.blog/2019-08-08-github-actions-now-supports-ci-cd/#:~:text=GitHub%20Actions%20is%20an%20API,every%20step%20along%20the%20way.)
|
||||||
|
|
||||||
## Build the Remote Provisioning Client (RPC)
|
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="assets/animations/forkandbuild.gif" width="650" />
|
<img src="assets/animations/forkandbuild.gif" width="650" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
1. Create a fork of the rpc repository [here](https://github.com/open-amt-cloud-toolkit/rpc/fork) or via the Fork button in the top-right corner of the rpc repository.
|
## Build the Remote Provisioning Client (RPC)
|
||||||
|
|
||||||
2. Click on "Actions" and Select "Build RPC (Native)" Workflow.
|
1. <a href="https://github.com/open-amt-cloud-toolkit/rpc/fork" target="_blank">Create a fork of rpc on GitHub.</a>
|
||||||
|
|
||||||
3. Click "Run Workflow", select branch "master", and click "Run Workflow".
|
2. Click on the **Actions** tab at the top and select **Build RPC (Native) Debug/Release**.
|
||||||
|
|
||||||
4. Grab a coffee. The build for Windows will take approximately 30 minutes and the build for Linux will take approximately 5 minutes.
|
3. Click the **Run Workflow** dropdown.
|
||||||
|
|
||||||
5. Once complete, click the completed job, and download the appropriate RPC for your OS under the "Artifacts" section.
|
4. Select the **Branch: main**, or a preferred version, from the **Use workflow from** dropdown.
|
||||||
|
|
||||||
For detailed documentation about RPC and using it to activate a device, see the [docs](https://open-amt-cloud-toolkit.github.io/docs/)
|
5. By default, the Build Type should be **release**.
|
||||||
|
|
||||||
|
6. Click the **Run Workflow** button. Grab a coffee and take a break! The build time ranges from 15 to 20 minutes.
|
||||||
|
|
||||||
|
8. Once the download is complete, click the completed job which will feature a green checkmark.
|
||||||
|
|
||||||
|
9. Download the appropriate RPC for your managed device's OS under the **Artifacts** section.
|
||||||
|
|
||||||
|
### To Delete your workflow run
|
||||||
|
|
||||||
|
1. Click the ellipsis ( **...** ) menu for the workflow.
|
||||||
|
|
||||||
|
2. Choose the **Delete workflow run** option.
|
||||||
|
|
||||||
|
For detailed documentation about RPC and using it to activate a device, see the [docs](https://open-amt-cloud-toolkit.github.io/docs/)
|
5
SECURITY.md
Normal file
5
SECURITY.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Security Policy
|
||||||
|
Intel is committed to rapidly addressing security vulnerabilities affecting our customers and providing clear guidance on the solution, impact, severity and mitigation.
|
||||||
|
|
||||||
|
## Reporting a Vulnerability
|
||||||
|
Please report any security vulnerabilities in this project utilizing the guidelines [here](https://www.intel.com/content/www/us/en/security-center/vulnerability-handling-guidelines.html).
|
89
commands.cpp
89
commands.cpp
@@ -282,51 +282,54 @@ bool cmd_get_certificate_hashes(std::vector<cert_hash_entry>& hash_entries)
|
|||||||
for (int i = 0; i < (int) amt_hash_handles.Length; i++)
|
for (int i = 0; i < (int) amt_hash_handles.Length; i++)
|
||||||
{
|
{
|
||||||
// get each entry
|
// get each entry
|
||||||
AMT_STATUS status = pthi_GetCertificateHashEntry(amt_hash_handles.Handles[i], &certhash_entry);
|
AMT_STATUS amt_status = pthi_GetCertificateHashEntry(amt_hash_handles.Handles[i], &certhash_entry);
|
||||||
|
|
||||||
int hashSize;
|
if (amt_status == 0)
|
||||||
cert_hash_entry tmp;
|
|
||||||
switch (certhash_entry.HashAlgorithm) {
|
|
||||||
case 0: // MD5
|
|
||||||
hashSize = 16;
|
|
||||||
tmp.algorithm = "MD5";
|
|
||||||
break;
|
|
||||||
case 1: // SHA1
|
|
||||||
hashSize = 20;
|
|
||||||
tmp.algorithm = "SHA1";
|
|
||||||
break;
|
|
||||||
case 2: // SHA256
|
|
||||||
hashSize = 32;
|
|
||||||
tmp.algorithm = "SHA256";
|
|
||||||
break;
|
|
||||||
case 3: // SHA512
|
|
||||||
hashSize = 64;
|
|
||||||
tmp.algorithm = "SHA512";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
hashSize = 0;
|
|
||||||
tmp.algorithm = "UNKNOWN";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (certhash_entry.IsActive == 1)
|
|
||||||
{
|
{
|
||||||
std::string cert_name(certhash_entry.Name.Buffer, certhash_entry.Name.Length);
|
int hashSize;
|
||||||
tmp.name = cert_name;
|
cert_hash_entry tmp;
|
||||||
tmp.is_default = certhash_entry.IsDefault;
|
switch (certhash_entry.HashAlgorithm) {
|
||||||
tmp.is_active = certhash_entry.IsActive;
|
case 0: // MD5
|
||||||
|
hashSize = 16;
|
||||||
std::string hashString;
|
tmp.algorithm = "MD5";
|
||||||
for (int i = 0; i < hashSize; i++)
|
break;
|
||||||
{
|
case 1: // SHA1
|
||||||
char hex[10];
|
hashSize = 20;
|
||||||
snprintf(hex, 10, "%02x", certhash_entry.CertificateHash[i]);
|
tmp.algorithm = "SHA1";
|
||||||
hashString += hex;
|
break;
|
||||||
|
case 2: // SHA256
|
||||||
|
hashSize = 32;
|
||||||
|
tmp.algorithm = "SHA256";
|
||||||
|
break;
|
||||||
|
case 3: // SHA512
|
||||||
|
hashSize = 64;
|
||||||
|
tmp.algorithm = "SHA512";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
hashSize = 0;
|
||||||
|
tmp.algorithm = "UNKNOWN";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp.hash = hashString;
|
if (certhash_entry.IsActive == 1)
|
||||||
|
{
|
||||||
|
std::string cert_name(certhash_entry.Name.Buffer, certhash_entry.Name.Length);
|
||||||
|
tmp.name = cert_name;
|
||||||
|
tmp.is_default = certhash_entry.IsDefault;
|
||||||
|
tmp.is_active = certhash_entry.IsActive;
|
||||||
|
|
||||||
hash_entries.push_back(tmp);
|
std::string hashString;
|
||||||
|
for (int i = 0; i < hashSize; i++)
|
||||||
|
{
|
||||||
|
char hex[10];
|
||||||
|
snprintf(hex, 10, "%02x", certhash_entry.CertificateHash[i]);
|
||||||
|
hashString += hex;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp.hash = hashString;
|
||||||
|
|
||||||
|
hash_entries.push_back(tmp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -377,14 +380,14 @@ bool cmd_get_remote_access_connection_status(int& network_status, int& remote_st
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cmd_get_lan_interface_settings(lan_interface_settings& lan_interface_settings)
|
bool cmd_get_lan_interface_settings(lan_interface_settings& lan_interface_settings, bool wired_interface)
|
||||||
{
|
{
|
||||||
// initialize HECI interface
|
// initialize HECI interface
|
||||||
if (heci_Init(NULL, PTHI_CLIENT) == 0) return false;
|
if (heci_Init(NULL, PTHI_CLIENT) == 0) return false;
|
||||||
|
|
||||||
// get wired interface
|
// get wired interface
|
||||||
LAN_SETTINGS lan_settings;
|
LAN_SETTINGS lan_settings;
|
||||||
UINT32 interface_settings = 0; // wired=0, wireless=1
|
UINT32 interface_settings = (wired_interface) ? 0 : 1; // wired=0, wireless=1
|
||||||
AMT_STATUS amt_status = pthi_GetLanInterfaceSettings(interface_settings, &lan_settings);
|
AMT_STATUS amt_status = pthi_GetLanInterfaceSettings(interface_settings, &lan_settings);
|
||||||
if (amt_status == 0)
|
if (amt_status == 0)
|
||||||
{
|
{
|
||||||
@@ -393,11 +396,13 @@ bool cmd_get_lan_interface_settings(lan_interface_settings& lan_interface_settin
|
|||||||
lan_interface_settings.dhcp_enabled = lan_settings.DhcpEnabled;
|
lan_interface_settings.dhcp_enabled = lan_settings.DhcpEnabled;
|
||||||
lan_interface_settings.link_status = lan_settings.LinkStatus;
|
lan_interface_settings.link_status = lan_settings.LinkStatus;
|
||||||
|
|
||||||
|
lan_interface_settings.ip_address.clear();
|
||||||
lan_interface_settings.ip_address.push_back((lan_settings.Ipv4Address >> 24) & 0xff);
|
lan_interface_settings.ip_address.push_back((lan_settings.Ipv4Address >> 24) & 0xff);
|
||||||
lan_interface_settings.ip_address.push_back((lan_settings.Ipv4Address >> 16) & 0xff);
|
lan_interface_settings.ip_address.push_back((lan_settings.Ipv4Address >> 16) & 0xff);
|
||||||
lan_interface_settings.ip_address.push_back((lan_settings.Ipv4Address >> 8) & 0xff);
|
lan_interface_settings.ip_address.push_back((lan_settings.Ipv4Address >> 8) & 0xff);
|
||||||
lan_interface_settings.ip_address.push_back((lan_settings.Ipv4Address) & 0xff);
|
lan_interface_settings.ip_address.push_back((lan_settings.Ipv4Address) & 0xff);
|
||||||
|
|
||||||
|
lan_interface_settings.mac_address.clear();
|
||||||
lan_interface_settings.mac_address.push_back(lan_settings.MacAddress[0]);
|
lan_interface_settings.mac_address.push_back(lan_settings.MacAddress[0]);
|
||||||
lan_interface_settings.mac_address.push_back(lan_settings.MacAddress[1]);
|
lan_interface_settings.mac_address.push_back(lan_settings.MacAddress[1]);
|
||||||
lan_interface_settings.mac_address.push_back(lan_settings.MacAddress[2]);
|
lan_interface_settings.mac_address.push_back(lan_settings.MacAddress[2]);
|
||||||
|
@@ -49,6 +49,6 @@ bool cmd_get_dns_suffix(std::string& suffix);
|
|||||||
bool cmd_get_wired_mac_address(std::vector<unsigned char>& address);
|
bool cmd_get_wired_mac_address(std::vector<unsigned char>& address);
|
||||||
bool cmd_get_certificate_hashes(std::vector<cert_hash_entry>& hash_entries);
|
bool cmd_get_certificate_hashes(std::vector<cert_hash_entry>& hash_entries);
|
||||||
bool cmd_get_remote_access_connection_status(int& network_status, int& remote_status, int& remote_trigger, std::string& mps_hostname);
|
bool cmd_get_remote_access_connection_status(int& network_status, int& remote_status, int& remote_trigger, std::string& mps_hostname);
|
||||||
bool cmd_get_lan_interface_settings(lan_interface_settings& lan_interface_settings);
|
bool cmd_get_lan_interface_settings(lan_interface_settings& lan_interface_settings, bool wired_interface = true);
|
||||||
|
|
||||||
#endif
|
#endif
|
44
info.cpp
44
info.cpp
@@ -20,7 +20,7 @@ void out_text(const std::string name, const std::vector<unsigned char> value, co
|
|||||||
for (unsigned char tmp : value)
|
for (unsigned char tmp : value)
|
||||||
{
|
{
|
||||||
(hex) ? std::cout << std::setfill('0') << std::setw(2) << std::hex << (unsigned int)tmp
|
(hex) ? std::cout << std::setfill('0') << std::setw(2) << std::hex << (unsigned int)tmp
|
||||||
: std::cout << (unsigned int)tmp;
|
: std::cout << std::dec << (unsigned int)tmp;
|
||||||
|
|
||||||
if (char_count++ < value.size())
|
if (char_count++ < value.size())
|
||||||
{
|
{
|
||||||
@@ -270,15 +270,41 @@ bool info_get_lan_interface_settings()
|
|||||||
tmp.ip_address.clear();
|
tmp.ip_address.clear();
|
||||||
tmp.mac_address.clear();
|
tmp.mac_address.clear();
|
||||||
|
|
||||||
if (!cmd_get_lan_interface_settings(tmp)) return false;
|
bool hasWired = cmd_get_lan_interface_settings(tmp);
|
||||||
|
if (hasWired)
|
||||||
|
{
|
||||||
|
out_text("LAN Interface", "wired");
|
||||||
|
out_text("DHCP Enabled", (tmp.dhcp_enabled) ? "true" : "false");
|
||||||
|
out_text("DHCP Mode", (tmp.dhcp_mode == 1) ? "active" : "passive");
|
||||||
|
out_text("Link Status", (tmp.link_status) ? "up" : "down");
|
||||||
|
out_text("IP Address", tmp.ip_address, '.', false);
|
||||||
|
out_text("MAC Address", tmp.mac_address, ':');
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp.is_enabled = false;
|
||||||
|
tmp.link_status = false;
|
||||||
|
tmp.dhcp_enabled = false;
|
||||||
|
tmp.dhcp_mode = 0;
|
||||||
|
tmp.ip_address.clear();
|
||||||
|
tmp.mac_address.clear();
|
||||||
|
|
||||||
out_text("DHCP Enabled", (tmp.dhcp_enabled) ? "true" : "false");
|
bool hasWireless = cmd_get_lan_interface_settings(tmp, false);
|
||||||
out_text("DHCP Mode", (tmp.dhcp_mode == 1) ? "active" : "passive");
|
if (hasWireless)
|
||||||
out_text("Link Status", (tmp.link_status) ? "up" : "down");
|
{
|
||||||
out_text("IP Address", tmp.ip_address, '.', false);
|
out_text("LAN Interface", "wireless");
|
||||||
out_text("MAC Address", tmp.mac_address, ':');
|
out_text("DHCP Enabled", (tmp.dhcp_enabled) ? "true" : "false");
|
||||||
|
out_text("DHCP Mode", (tmp.dhcp_mode == 1) ? "active" : "passive");
|
||||||
|
out_text("Link Status", (tmp.link_status) ? "up" : "down");
|
||||||
|
out_text("IP Address", tmp.ip_address, '.', false);
|
||||||
|
out_text("MAC Address", tmp.mac_address, ':');
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
if (hasWired || hasWireless)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool info_get(const std::string info)
|
bool info_get(const std::string info)
|
||||||
@@ -342,4 +368,4 @@ bool info_get_verify(const std::string info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
35
main.cpp
35
main.cpp
@@ -7,6 +7,7 @@
|
|||||||
#include <thread>
|
#include <thread>
|
||||||
#include <cpprest/ws_client.h>
|
#include <cpprest/ws_client.h>
|
||||||
#include <cpprest/json.h>
|
#include <cpprest/json.h>
|
||||||
|
#include <algorithm>
|
||||||
#include "port.h"
|
#include "port.h"
|
||||||
#include "lms.h"
|
#include "lms.h"
|
||||||
#include "commands.h"
|
#include "commands.h"
|
||||||
@@ -271,7 +272,22 @@ int main(int argc, char* argv[])
|
|||||||
g_timeout_val = 0;
|
g_timeout_val = 0;
|
||||||
|
|
||||||
// exit
|
// exit
|
||||||
std::cout << std::endl << msgMessage << std::endl;
|
try {
|
||||||
|
std::cout << std::endl;
|
||||||
|
utility::string_t tmp = utility::conversions::convertstring(msgMessage);
|
||||||
|
web::json::value parsed = web::json::value::parse(tmp);
|
||||||
|
for (const auto& obj : parsed.as_object()) {
|
||||||
|
std::string key = utility::conversions::to_utf8string(obj.first);
|
||||||
|
std::string value = utility::conversions::to_utf8string(obj.second.serialize());
|
||||||
|
value.erase(std::remove(value.begin(), value.end(), '"'), value.end());
|
||||||
|
std::cout << key << ": " << value << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
std::cout << std::endl << msgMessage << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (msgStatus.compare("failed")==0)
|
else if (msgStatus.compare("failed")==0)
|
||||||
@@ -280,7 +296,22 @@ int main(int argc, char* argv[])
|
|||||||
g_timeout_val = 0;
|
g_timeout_val = 0;
|
||||||
|
|
||||||
// exit
|
// exit
|
||||||
std::cout << std::endl << msgMessage << std::endl;
|
try {
|
||||||
|
std::cout << std::endl;
|
||||||
|
utility::string_t tmp = utility::conversions::convertstring(msgMessage);
|
||||||
|
web::json::value parsed = web::json::value::parse(tmp);
|
||||||
|
for (const auto& obj : parsed.as_object()) {
|
||||||
|
std::string key = utility::conversions::to_utf8string(obj.first);
|
||||||
|
std::string value = utility::conversions::to_utf8string(obj.second.serialize());
|
||||||
|
value.erase(std::remove(value.begin(), value.end(), '"'), value.end());
|
||||||
|
std::cout << key << ": " << value << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
std::cout << std::endl << msgMessage << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -14,7 +14,7 @@ set BASE_DIR=%cd%
|
|||||||
set VCPKG_DIR=C:\opt\vcpkg-source
|
set VCPKG_DIR=C:\opt\vcpkg-source
|
||||||
|
|
||||||
REM build RPC
|
REM build RPC
|
||||||
cd %BASE_DIR%/rpc
|
|
||||||
|
|
||||||
if exist "build" rd /q /s "build"
|
if exist "build" rd /q /s "build"
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ cd build
|
|||||||
echo %VCPKG_DIR%\vcpkg\scripts\buildsystems\vcpkg.cmake
|
echo %VCPKG_DIR%\vcpkg\scripts\buildsystems\vcpkg.cmake
|
||||||
cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_TOOLCHAIN_FILE=%VCPKG_DIR%\vcpkg\scripts\buildsystems\vcpkg.cmake ..
|
cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_TOOLCHAIN_FILE=%VCPKG_DIR%\vcpkg\scripts\buildsystems\vcpkg.cmake ..
|
||||||
cmake --build . --config Release
|
cmake --build . --config Release
|
||||||
dir %BASE_DIR%\rpc\build
|
dir %BASE_DIR%\build
|
@@ -5,9 +5,9 @@ set -x
|
|||||||
# Jenkins Build script
|
# Jenkins Build script
|
||||||
# - Ubuntu 18.04
|
# - Ubuntu 18.04
|
||||||
#
|
#
|
||||||
|
export BASE_DIR="$PWD"
|
||||||
export CMAKE_CXX_FLAGS="-isystem /usr/lib/gcc/x86_64-linux-gnu/7/include"
|
export CMAKE_CXX_FLAGS="-isystem /usr/lib/gcc/x86_64-linux-gnu/7/include"
|
||||||
cd "$BASE_DIR"/rpc
|
|
||||||
|
|
||||||
if [ -d "build" ]; then
|
if [ -d "build" ]; then
|
||||||
rm -rf build
|
rm -rf build
|
||||||
@@ -15,5 +15,5 @@ fi
|
|||||||
|
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
cmake -DCMAKE_TOOLCHAIN_FILE="$BASE_DIR"/rpc/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release ..
|
cmake -DCMAKE_TOOLCHAIN_FILE="$BASE_DIR"/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release ..
|
||||||
cmake --build .
|
cmake --build .
|
||||||
|
@@ -15,8 +15,9 @@ set VCPKG_DIR=C:\opt\vcpkg-source
|
|||||||
cd %VCPKG_DIR%
|
cd %VCPKG_DIR%
|
||||||
|
|
||||||
REM build vcpkg
|
REM build vcpkg
|
||||||
git clone --branch 2020.11-1 https://github.com/microsoft/vcpkg.git
|
git clone https://github.com/microsoft/vcpkg.git
|
||||||
cd vcpkg
|
cd vcpkg
|
||||||
|
git checkout 772d435ba18bf2f342458e0187ab7b48b84fe3f0
|
||||||
cmd /c bootstrap-vcpkg.bat
|
cmd /c bootstrap-vcpkg.bat
|
||||||
|
|
||||||
REM install CPPRestSDK
|
REM install CPPRestSDK
|
||||||
|
@@ -4,15 +4,17 @@
|
|||||||
# - Ubuntu 18.04
|
# - Ubuntu 18.04
|
||||||
#
|
#
|
||||||
|
|
||||||
sudo apt install git cmake build-essential curl zip unzip tar pkg-config
|
apt update
|
||||||
|
apt install git cmake build-essential curl zip unzip tar pkg-config -y
|
||||||
|
|
||||||
## current dir - RPC source directory
|
## current dir - RPC source directory
|
||||||
export BASE_DIR="$PWD"
|
#export BASE_DIR="$PWD"
|
||||||
|
|
||||||
cd "$BASE_DIR"/rpc
|
#cd "$BASE_DIR"/rpc
|
||||||
## build vcpkg
|
## build vcpkg
|
||||||
git clone --branch 2020.11-1 https://github.com/microsoft/vcpkg.git
|
git -C vcpkg pull || git clone https://github.com/microsoft/vcpkg.git vcpkg
|
||||||
cd vcpkg
|
cd vcpkg
|
||||||
|
git checkout 772d435ba18bf2f342458e0187ab7b48b84fe3f0
|
||||||
./bootstrap-vcpkg.sh
|
./bootstrap-vcpkg.sh
|
||||||
|
|
||||||
## install CPPRestSDK
|
## install CPPRestSDK
|
||||||
|
@@ -49,15 +49,15 @@ void usage_show_help()
|
|||||||
std::cout << "Examples:" << std::endl;
|
std::cout << "Examples:" << std::endl;
|
||||||
std::cout << " # Activate platform using profile1" << std::endl;
|
std::cout << " # Activate platform using profile1" << std::endl;
|
||||||
std::cout << " " << PROJECT_NAME << \
|
std::cout << " " << PROJECT_NAME << \
|
||||||
" --url wss://localhost:8080 --cmd \"-t activate --profile profile1\"" << std::endl;
|
" --url wss://192.168.86.100/activate --cmd \"-t activate --profile profile1\"" << std::endl;
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
std::cout << " # Activate platform using profile1 and override DNS detection" << std::endl;
|
std::cout << " # Activate platform using profile1 and override DNS detection" << std::endl;
|
||||||
std::cout << " " << PROJECT_NAME << \
|
std::cout << " " << PROJECT_NAME << \
|
||||||
" --url wss://localhost:8080 --cmd \"-t activate --profile profile1\" --dns corp.com" << std::endl;
|
" --url wss://mycloud.com/activate --cmd \"-t activate --profile profile1\" --dns corp.com" << std::endl;
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
std::cout << " # Deactivate platform and connect through a proxy" << std::endl;
|
std::cout << " # Deactivate platform and connect through a proxy" << std::endl;
|
||||||
std::cout << " " << PROJECT_NAME << \
|
std::cout << " " << PROJECT_NAME << \
|
||||||
" -u wss://localhost:8080 -c \"-t deactivate --password P@ssw0rd\" -p http://proxy.com:1000" << std::endl;
|
" -u wss://mycloud.com/activate -c \"-t deactivate --password P@ssw0rd\" -p http://proxy.com:1000" << std::endl;
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
std::cout << " # Show all informational items" << std::endl;
|
std::cout << " # Show all informational items" << std::endl;
|
||||||
std::cout << " " << PROJECT_NAME << " --amtinfo all" << std::endl;
|
std::cout << " " << PROJECT_NAME << " --amtinfo all" << std::endl;
|
||||||
|
1
vcpkg
Submodule
1
vcpkg
Submodule
Submodule vcpkg added at 5568f110b5
Reference in New Issue
Block a user