Skip to content

Commit eae4945

Browse files
authored
Merge branch 'main' into repo_sync_working_branch
2 parents 4f3ebb4 + 525206f commit eae4945

File tree

124 files changed

+1241
-867
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

124 files changed

+1241
-867
lines changed

articles/azure-relay/includes/relay-hybrid-connections-websocket-requests-Python-get-started-client.md

Lines changed: 35 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -6,92 +6,47 @@ ms.date: 05/16/2024
66
ms.author: samurp
77
---
88

9-
### Create a Python Script
10-
11-
If you disabled the "Requires Client Authorization" option when creating the Relay,
12-
you can send requests to the Hybrid Connections URL with any browser. For accessing
13-
protected endpoints, you need to create and pass a SAS Token, which is shown here.
14-
15-
Here's a simple Python script that demonstrates sending requests to
16-
a Hybrid Connections URL with SAS Tokens utilizing WebSockets.
17-
18-
### Dependencies
19-
20-
1. Install the following Python libraries using pip before running the client application
21-
22-
`asyncio`, `json`, `logging`, `websockets`
23-
24-
These libraries can be installed using the following command:
25-
26-
```bash
27-
pip install <package name>
28-
```
29-
2. Generate a `config.json` file to store your connection details
30-
31-
```json
32-
{
33-
"namespace": "HYBRID_CONNECTION_NAMESPACE",
34-
"path": "HYBRID_CONNECTION_ENTITY_NAME",
35-
"keyrule": "SHARED_ACCESS_KEY_NAME",
36-
"key": "SHARED_ACCESS_PRIMARY_KEY"
37-
}
38-
```
39-
Replace the placeholders in brackets with the values you obtained when you created the hybrid connection.
40-
41-
- `namespace` - The Relay namespace. Be sure to use the fully qualified namespace name; for example, `{namespace}.servicebus.windows.net`.
42-
- `path` - The name of the hybrid connection.
43-
- `keyrule` - Name of your Shared Access Policies key, which is `RootManageSharedAccessKey` by default.
44-
- `key` - The primary key of the namespace you saved earlier.
45-
46-
3. Generate a helper function file for helper functions
47-
48-
The following file is used as `relaylib.py` and have helper functions for WebSocket URL generation and SAS tokens
49-
50-
[!INCLUDE [relay-python-helper-functions](relay-python-helper-functions.md)]
51-
529
### Write some code to send messages
5310

5411
1. Ensure your dependency `config.json` and `relaylib.py` are available in your path
55-
56-
5712
2. Here's what your `sender.py` file should look like:
5813

5914
```python
60-
import asyncio
61-
import json
62-
import logging
63-
import relaylib
64-
import websockets
65-
66-
async def run_application(message, config):
67-
service_namespace = config["namespace"]
68-
entity_path = config["path"]
69-
sas_key_name = config["keyrule"]
70-
sas_key = config["key"]
71-
service_namespace += ".servicebus.windows.net"
72-
73-
# Configure logging
74-
logging.basicConfig(level=logging.DEBUG) # Enable debug logging
75-
76-
token = relaylib.createSasToken(service_namespace, entity_path, sas_key_name, sas_key)
77-
logging.debug("Token: %s", token)
78-
wss_uri = relaylib.createListenUrl(service_namespace, entity_path, token)
79-
logging.debug("WssURI: %s", wss_uri)
80-
81-
try:
82-
async with websockets.connect(wss_uri) as websocket:
83-
logging.info("Sending message to Azure Relay WebSocket...")
84-
await websocket.send(json.dumps({"message": message}))
85-
logging.info("Message sent: %s", message)
86-
except Exception as e:
87-
logging.error("An error occurred: %s", str(e))
88-
89-
if __name__ == "__main__":
90-
# Load configuration from JSON file
91-
with open("config.json") as config_file:
92-
config = json.load(config_file)
93-
94-
asyncio.run(run_application("This is a message to Azure Relay Hybrid Connections!", config))
15+
import asyncio
16+
import json
17+
import logging
18+
import relaylib
19+
import websockets
20+
21+
async def run_application(message, config):
22+
service_namespace = config["namespace"]
23+
entity_path = config["path"]
24+
sas_key_name = config["keyrule"]
25+
sas_key = config["key"]
26+
service_namespace += ".servicebus.windows.net"
27+
28+
# Configure logging
29+
logging.basicConfig(level=logging.DEBUG) # Enable debug logging
30+
31+
token = relaylib.createSasToken(service_namespace, entity_path, sas_key_name, sas_key)
32+
logging.debug("Token: %s", token)
33+
wss_uri = relaylib.createSendUrl(service_namespace, entity_path, token)
34+
logging.debug("WssURI: %s", wss_uri)
35+
36+
try:
37+
async with websockets.connect(wss_uri) as websocket:
38+
logging.info("Sending message to Azure Relay WebSocket...")
39+
await websocket.send(json.dumps({"message": message}))
40+
logging.info("Message sent: %s", message)
41+
except Exception as e:
42+
logging.error("An error occurred: %s", str(e))
43+
44+
if __name__ == "__main__":
45+
# Load configuration from JSON file
46+
with open("config.json") as config_file:
47+
config = json.load(config_file)
48+
49+
asyncio.run(run_application("This is a message to Azure Relay Hybrid Connections!", config))
9550
```
9651

9752
> [!NOTE]

articles/azure-relay/includes/relay-hybrid-connections-websocket-requests-Python-get-started-server.md

Lines changed: 38 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ a Hybrid Connections URL with SAS Tokens utilizing WebSockets.
2929
2. Generate a `config.json` file to store your connection details
3030

3131
```json
32-
{
33-
"namespace": "HYBRID_CONNECTION_NAMESPACE",
34-
"path": "HYBRID_CONNECTION_ENTITY_NAME",
35-
"keyrule": "SHARED_ACCESS_KEY_NAME",
36-
"key": "SHARED_ACCESS_PRIMARY_KEY"
32+
{
33+
"namespace": "HYBRID_CONNECTION_NAMESPACE",
34+
"path": "HYBRID_CONNECTION_ENTITY_NAME",
35+
"keyrule": "SHARED_ACCESS_KEY_NAME",
36+
"key": "SHARED_ACCESS_PRIMARY_KEY"
3737
}
3838
```
3939
Replace the placeholders in brackets with the values you obtained when you created the hybrid connection.
@@ -42,54 +42,51 @@ a Hybrid Connections URL with SAS Tokens utilizing WebSockets.
4242
- `path` - The name of the hybrid connection.
4343
- `keyrule` - Name of your Shared Access Policies key, which is `RootManageSharedAccessKey` by default.
4444
- `key` - The primary key of the namespace you saved earlier.
45-
4645
3. Generate a helper function file for helper functions
4746

4847
The following file is used as `relaylib.py` and have helper functions for WebSocket URL generation and SAS tokens
4948

5049
[!INCLUDE [relay-python-helper-functions](relay-python-helper-functions.md)]
5150

52-
### Write some code to send messages
51+
### Write some code to receive messages
5352

5453
1. Ensure your dependency `config.json` and `relaylib.py` are available in your path
55-
56-
5754
2. Here's what your `listener.py` file should look like:
5855

5956
```python
60-
import asyncio
61-
import json
62-
import logging
63-
import relaylib
64-
import websockets
65-
66-
async def run_application(config):
67-
serviceNamespace = config["namespace"]
68-
entityPath = config["path"]
69-
sasKeyName = config["keyrule"]
70-
sasKey = config["key"]
71-
serviceNamespace += ".servicebus.windows.net"
72-
# Configure logging
73-
logging.basicConfig(level=logging.INFO) # Enable DEBUG/INFO logging as appropriate
74-
75-
try:
76-
logging.debug("Generating SAS Token for: %s", serviceNamespace)
77-
token = relaylib.createSasToken(serviceNamespace, entityPath, sasKeyName, sasKey)
78-
logging.debug("Generating WebSocket URI")
79-
wssUri = relaylib.createListenUrl(serviceNamespace, entityPath, token)
80-
async with websockets.connect(wssUri) as websocket:
81-
logging.info("Listening for messages on Azure Relay WebSocket...")
82-
while True:
83-
message = await websocket.recv()
84-
logging.info("Received message: %s", message)
85-
except KeyboardInterrupt:
86-
logging.info("Exiting listener.")
87-
88-
if __name__ == "__main__":
89-
# Load configuration from JSON file
90-
with open("config.json") as config_file:
57+
import asyncio
58+
import json
59+
import logging
60+
import relaylib
61+
import websockets
62+
63+
async def run_application(config):
64+
serviceNamespace = config["namespace"]
65+
entityPath = config["path"]
66+
sasKeyName = config["keyrule"]
67+
sasKey = config["key"]
68+
serviceNamespace += ".servicebus.windows.net"
69+
# Configure logging
70+
logging.basicConfig(level=logging.INFO) # Enable DEBUG/INFO logging as appropriate
71+
72+
try:
73+
logging.debug("Generating SAS Token for: %s", serviceNamespace)
74+
token = relaylib.createSasToken(serviceNamespace, entityPath, sasKeyName, sasKey)
75+
logging.debug("Generating WebSocket URI")
76+
wssUri = relaylib.createListenUrl(serviceNamespace, entityPath, token)
77+
async with websockets.connect(wssUri) as websocket:
78+
logging.info("Listening for messages on Azure Relay WebSocket...")
79+
while True:
80+
message = await websocket.recv()
81+
logging.info("Received message: %s", message)
82+
except KeyboardInterrupt:
83+
logging.info("Exiting listener.")
84+
85+
if __name__ == "__main__":
86+
# Load configuration from JSON file
87+
with open("config.json") as config_file:
9188
config = json.load(config_file)
9289

93-
asyncio.run(run_application(config))
90+
asyncio.run(run_application(config))
9491
```
9592

articles/azure-relay/includes/relay-python-helper-functions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def createListenUrl(serviceNamespace, entityPath, token = None):
5050
def createSendUrl(serviceNamespace, entityPath, token = None):
5151
url = 'wss://' + serviceNamespace + '/$hc/' + entityPath + '?sb-hc-action=connect&sb-hc-id=123456'
5252
if token is not None:
53-
url = url + '&sb-hc-token=' + urllib.parse.quote(token)
53+
url = url + '&sb-hc-token=' + urllib.parse.quote(token)
5454
return url
5555

5656
# Function which creates the Service Bus SAS token.
@@ -72,7 +72,7 @@ def createSasToken(serviceNamespace, entityPath, sasKeyName, sasKey):
7272
hashBytes = hmac_sha256(sasKeyBytes, plainSignatureBytes)
7373
base64HashValue = base64.b64encode(hashBytes)
7474

75-
# Construct the SAS token string
75+
# Construct the SAS token string
7676
token = "SharedAccessSignature sr=" + encodedResourceUri + "&sig=" + urllib.parse.quote(base64HashValue) + "&se=" + str(expiryInSeconds) + "&skn=" + sasKeyName
7777
return token
7878
```

articles/azure-relay/relay-hybrid-connections-python-get-started.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Azure Relay Hybrid Connections - WebSocket requests in Python
33
description: Write a Python console application for Azure Relay Hybrid Connections WebSocket requests.
44
ms.topic: tutorial
5-
ms.date: 05/16/2024
5+
ms.date: 01/30/2025
66
ms.custom: devx-track-Python, mode-ui, mode-api, devx-track-extended-Python
77
---
88

@@ -23,7 +23,7 @@ In this quickstart, you take the following steps:
2323
1. Execute the server (listener) script and optionally the client (sender) script.
2424

2525
## Prerequisites
26-
- [Python](https://www.Python.com/en/). Ensure that you're running Python 3.10+
26+
- [Python](https://www.python.org/). Ensure that you're running Python 3.10+
2727
- An Azure subscription. If you don't have one, [create a free account](https://azure.microsoft.com/free/) before you begin.
2828

2929
## Create a namespace using the Azure portal
@@ -32,9 +32,6 @@ In this quickstart, you take the following steps:
3232
## Create a hybrid connection using the Azure portal
3333
[!INCLUDE [relay-create-hybrid-connection-portal](./includes/relay-create-hybrid-connection-portal.md)]
3434

35-
## Develop helper functions
36-
[!INCLUDE [relay-python-helper-functions](./includes/relay-python-helper-functions.md)]
37-
3835
## Create a server application (listener)
3936
To listen and receive messages from the Relay, write a Python WebSocket Server script.
4037

articles/cloud-services/cloud-services-guestos-msrc-releases.md

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,65 @@ author: jejackson
77
ms.assetid: d0a272a9-ed01-4f4c-a0b3-bd5e841bdd77
88
ms.service: azure-cloud-services-classic
99
ms.topic: article
10-
ms.date: 12/11/2024
10+
ms.date: 03/02/2025
1111
ms.author: jejackson
1212
ms.custom: compute-evergreen
1313
---
1414

1515
# Azure Guest OS
1616
The following tables show the Microsoft Security Response Center (MSRC) updates applied to the Azure Guest OS. Search this article to determine if a particular update applies to your Guest OS. Updates always carry forward for the particular [family][family-explain] they were introduced in.
1717

18+
## November 2024 Guest OS
19+
| Product Category | Parent KB Article | Vulnerability Description | Guest OS | Date First Introduced |
20+
| --- | --- | --- | --- | --- |
21+
| Rel 24-11 | 5046616 | Latest Cumulative Update(LCU) | [7.47] | 12-Nov-24
22+
| Rel 24-11 | 5046615 | Latest Cumulative Update(LCU) | [6.77] | 12-Nov-24
23+
| Rel 24-11 | 5046612 | Latest Cumulative Update(LCU) | [5.101] | 12-Nov-24
24+
| Rel 24-11 | 5044011 | .NET Framework 3.5 Security and Quality Rollup | [2.157] | 12-Nov-24
25+
| Rel 24-11 | 5044019 | .NET Framework 4.7.2 Cumulative Update LKG | [2.157] | 08-Oct-24
26+
| Rel 24-11 | 5044012 | .NET Framework 3.5 Security and Quality Rollup LKG | [4.137] | 08-Oct-24
27+
| Rel 24-11 | 5044018 | .NET Framework 4.7.2 Cumulative Update LKG | [4.137] | 08-Oct-24
28+
| Rel 24-11 | 5044009 | .NET Framework 3.5 Security and Quality Rollup LKG | [3.145] | 08-Oct-24
29+
| Rel 24-11 | 5044017 | .NET Framework 4.7.2 Cumulative Update LKG | [3.145] | 08-Oct-24
30+
| Rel 24-11 | 5044016 | .NET Framework Dot Net | [6.77] | 08-Oct-24
31+
| Rel 24-11 | 5044025 | .NET Framework 4.8 Security and Quality Rollup LKG | [7.47] | 08-Oct-24
32+
| Rel 24-11 | 5046687 | Monthly Rollup | [2.157] | 12-Nov-24
33+
| Rel 24-11 | 5046697 | Monthly Rollup | [3.145] | 12-Nov-24
34+
| Rel 24-11 | 5046682 | Monthly Rollup | [4.137] | 12-Nov-24
35+
| Rel 24-11 | 5044413 | Servicing Stack Update | [3.145] | 08-Oct-24
36+
| Rel 24-11 | 5044411 | Servicing Stack Update | [4.137] | 08-Oct-24
37+
| Rel 24-11 | 5043124 | Servicing Stack Update | [5.101] | 10-Sep-24
38+
| Rel 24-11 | 5039339 | Servicing Stack Update LKG | [2.157] | 11-Jun-24
39+
| Rel 24-11 | 4494175 | January '20 Microcode | [5.101] | 1-Sep-20
40+
| Rel 24-11 | 4494175 | January '20 Microcode | [6.77] | 1-Sep-20
41+
42+
[5046616]: https://support.microsoft.com/kb/5046616
43+
[5046615]: https://support.microsoft.com/kb/5046615
44+
[5046612]: https://support.microsoft.com/kb/5046612
45+
[5044011]: https://support.microsoft.com/kb/5044011
46+
[5044019]: https://support.microsoft.com/kb/5044019
47+
[5044012]: https://support.microsoft.com/kb/5044012
48+
[5044018]: https://support.microsoft.com/kb/5044018
49+
[5044009]: https://support.microsoft.com/kb/5044009
50+
[5044017]: https://support.microsoft.com/kb/5044017
51+
[5044016]: https://support.microsoft.com/kb/5044016
52+
[5044025]: https://support.microsoft.com/kb/5044025
53+
[5046687]: https://support.microsoft.com/kb/5046687
54+
[5046697]: https://support.microsoft.com/kb/5046697
55+
[5046682]: https://support.microsoft.com/kb/5046682
56+
[5044413]: https://support.microsoft.com/kb/5044413
57+
[5044411]: https://support.microsoft.com/kb/5044411
58+
[5043124]: https://support.microsoft.com/kb/5043124
59+
[5039339]: https://support.microsoft.com/kb/5039339
60+
[4494175]: https://support.microsoft.com/kb/4494175
61+
62+
[2.157]: ./cloud-services-guestos-update-matrix.md#family-2-releases
63+
[3.145]: ./cloud-services-guestos-update-matrix.md#family-3-releases
64+
[4.137]: ./cloud-services-guestos-update-matrix.md#family-4-releases
65+
[5.101]: ./cloud-services-guestos-update-matrix.md#family-5-releases
66+
[6.77]: ./cloud-services-guestos-update-matrix.md#family-6-releases
67+
[7.47]: ./cloud-services-guestos-update-matrix.md#family-7-releases
68+
1869
## October 2024 Guest OS
1970
| Product Category | Parent KB Article | Vulnerability Description | Guest OS | Date First Introduced |
2071
| --- | --- | --- | --- | --- |

articles/cloud-services/cloud-services-guestos-update-matrix.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ author: jejackson
77
ms.assetid: 6306cafe-1153-44c7-8554-623b03d59a34
88
ms.service: azure-cloud-services-classic
99
ms.topic: article
10-
ms.date: 12/11/2024
10+
ms.date: 03/02/2025
1111
ms.author: jejackson
1212
ms.custom: compute-evergreen
1313
---
@@ -34,6 +34,9 @@ Unsure about how to update your Guest OS? Check [this][cloud updates] out.
3434

3535
## News updates
3636

37+
###### **Jan 17, 2025**
38+
The November 2024 Guest OS released.
39+
3740
###### **Dec 10, 2024**
3841
The October 2024 Guest OS released.
3942

0 commit comments

Comments
 (0)