Skip to content

Commit 9461662

Browse files
committed
2 parents ea1ed47 + 472281f commit 9461662

File tree

10 files changed

+66
-112
lines changed

10 files changed

+66
-112
lines changed

.vscode/launch.json

Lines changed: 0 additions & 24 deletions
This file was deleted.

docs/URL-Shortener/Reference/Development/Workflow.md

Lines changed: 0 additions & 44 deletions
This file was deleted.

docs/URL-Shortener/Reference/Settings/Environment-Variables-Reference.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ Below is a list of all environmental variable configurations that the server can
1010

1111
The title of the section is the name of the environmental variable.
1212

13-
For authentication configuration, please see here for more environmental variables that are supported by SHI URL Shortener via the Microsoft Authentication Library for Node.JS (@azure/identity):
14-
<https://www.npmjs.com/package/@azure/identity#environment-variables>
13+
For authentication configuration, please see here for more environmental variables that are supported by SUS via the Microsoft Authentication Library for Node.JS [@azure/identity](https://www.npmjs.com/package/@azure/identity#environment-variables){:target="_blank"}.
1514

1615
---
1716

@@ -20,67 +19,77 @@ For authentication configuration, please see here for more environmental variabl
2019
- Mandatory: `true`
2120
- Expected string format: GUID
2221
- Allowed values: GUID
22+
- Default Value: `00000000-0000-0000-0000-000000000000`
2323
- Description: Tenant ID of the tenant that the app considers home/authenticates to. Defaults to NULL if not defined and should be overridden during authentication engine start.
2424

2525
## `SUS_DB_Host`
2626

2727
- Mandatory: `false`
2828
- Expected string format: string
2929
- Allowed values: string
30+
- Default Value: `localhost`
3031
- Description: Host name of the Azure SQL DB that should be used for storing simple data.
3132

3233
## `SUS_DB_Name`
3334

3435
- Mandatory: `false`
3536
- Expected string format: string
3637
- Allowed values: string
38+
- Default Value: `UrlShortener`
3739
- Description: Name of the DB to access and use for relational data storage. This is necessary for Azure SQL DBs as the DB has to be created ahead of time and shouldn't be created inline as a best practice.
3840

3941
## `SUS_Debug`
4042

4143
- Mandatory: `false`
4244
- Expected string format: boolean
4345
- Allowed values: true
46+
- Default Value: `false`
4447
- Description: Flag that indicates if the API service should be in debug mode.
4548

4649
## `SUS_Headless`
4750

4851
- Mandatory: `false`
4952
- Expected string format: boolean
5053
- Allowed values: true
54+
- Default Value: `false`
5155
- Description: Flag that indicates the system should run with no user interface render.
5256

5357
## `SUS_LocalDb`
5458

5559
- Mandatory: `false`
5660
- Expected string format: boolean
5761
- Allowed values: true
62+
- Default Value: `false`
5863
- Description: Flag that indicates the SQLite should be used for the ORM. All other functions are untouched.
5964

6065
## `SUS_Local`
6166

6267
- Mandatory: `false`
6368
- Expected string format: boolean
6469
- Allowed values: true
65-
- Description: Flag that controls if the server should run with local resources only. This uses SQLite and Azurite as the storage engines and endpoints.
70+
- Default Value: `false`
71+
- Description: Flag that controls if the server should run with local resources only. This uses SQLite and prevents external resource calls allowing for a true local only execution experience.
6672

6773
## `SUS_DefaultTarget`
6874

6975
- Mandatory: `false`
7076
- Expected string format: URL
7177
- Allowed values: URL
78+
- Default Value: `https://shi.com`
7279
- Description: Location that the service will redirect to if a match is not found.
7380

7481
## `SUS_AuthAudience`
7582

76-
- Mandatory: `false`
83+
- Mandatory: `true`
7784
- Expected string format: GUID
7885
- Allowed values: GUID
79-
- Description: Ensure that a client ID is provided if not in debug mode for authentication
86+
- Default Value: `00000000-0000-0000-0000-000000000000`
87+
- Description: Application ID of the app registration to use as the audience value in the access token validation. Not mandatory if in debug mode as auth is not enforced in debug mode.
8088

8189
## `SUS_Test`
8290

8391
- Mandatory: `false`
8492
- Expected string format: boolean
8593
- Allowed values: true
94+
- Default Value: `false`
8695
- Description: Flag that indicates if the application should have special behavior based on if the system is running through automated QA.

docs/URL-Shortener/index.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,21 @@
22

33
## Overview
44

5-
The **SHI - URL Shortener (SUS)** is a security-focused privacy, respecting, compliance-ready URL redirection service. SUS provides controlled creation and management of short URLs, delegated administration through RBAC, strong input validation, and guardrails to prevent misuse (e.g., banned terms, domain scoping).
5+
The **SHI - URL Shortener (SUS)** is a security-focused, privacy respecting, compliance-ready URL redirection service. SUS provides controlled creation and management of short URLs, delegated administration through RBAC, strong input validation, and guardrails to prevent misuse (e.g., banned terms, domain scoping).
66

77
## Audience
88

9-
This documentation is primarily intended for technical users who are responsible for deploying, configuring, and maintaining the URL Shortener and Redirector service within customer environments. While the content is geared toward technical implementation, it is written to be accessible to non-technical stakeholders as well.
9+
This documentation is primarily intended for technical users who are responsible for deploying, configuring, and maintaining the URL Shortener service within customer environments. While the content is geared toward technical implementation, it is written to be accessible to non-technical stakeholders as well.
1010

1111
## SUS in the Security Landscape
1212

1313
- Zero trust: Every request re‑validated (types, UUID formats, filter shapes).
1414
- Strong runtime validation: Uses structural equality/type guards to reject malformed inputs early (400).
1515
- Principle of least privilege: Distinct scopes required for privileged sets (e.g., domain & ban list modifications).
16-
- Protective lists: Banned terms and controlled domains mitigate phishing / brand abuse.
17-
- Deterministic errors: Explicit 400 (input), 404 (not found), 204 (successful deletes).
16+
- Protective lists: Banned terms and controlled domains for fine grained control over what is created by end users.
1817
- Separation of concerns: Routing layer delegates business logic to a Redirect Engine singleton.
19-
- Minimal disclosure: Nonexistent records yield 404 without leaking broader state.
20-
- Auditable mutation points: Create/Update/Delete paths are centralized for logging (implementation hook).
18+
- Minimal disclosure: Nonexistent management records yield 404 without leaking broader state.
19+
- Auditable mutation points: Create/Update/Delete paths are centralized for logging.
2120

2221
## Prerequisites
2322

docs/assets/Styles/common.css

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
.susIcon {
2+
/* Detaches the icon from being dependant on other HTML elements for its render. */
3+
display: inline-block;
4+
/* Size of the icon to be rendered. */
5+
font-size: 1.5em;
6+
/* Prevent the line from getting larger as the icon does. */
7+
line-height: 1;
8+
/* Prevent the line from getting larger as the icon does. */
9+
height: 1em;
10+
/* Ensure that the icon renders in the center of the line, equal with the following text. */
11+
vertical-align: middle;
12+
}
13+
114
/* Light mode */
215
[data-md-color-scheme="default"] {
316
--md-default-bg-color: white;
@@ -25,4 +38,4 @@
2538
[data-md-color-scheme="slate"] .md-tooltip--active {
2639
color: black;
2740
background-color: white;
28-
}
41+
}

docs/index.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,20 +46,20 @@ hide:
4646
</div>
4747

4848
<div class="grid cards" align="center" markdown>
49-
- :globe_with_meridians:{ .lg .middle } __SHI - Data Gateway__
49+
- :material-database-outline:{ .lg .middle } __SHI - Data Gateway__
5050

5151
---
5252

53-
Store and retrieve data for the various SHI Lab products.
53+
Stores and retrieves the data for various SHI Lab products.
5454

5555
[:octicons-arrow-right-24: Overview](Data-Gateway/index.md)
5656

5757
<div class="grid cards" align="center" markdown>
58-
- <span style="font-size: 2em;">ඞ</span> __SHI - URL Shortener__
58+
- <span class="susIcon">ඞ</span> __SHI - URL Shortener__
5959

6060
---
6161

62-
Issue short, governed redirect links that map friendly paths (sources) to vetted destination URLs.
62+
Issue short, compliant, governed redirect links that map friendly paths to destination URLs.
6363

6464
[:octicons-arrow-right-24: Overview](URL-Shortener/index.md)
6565
</div>

includes/abbreviations.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88
*[BYOK]: Bring Your Own Key
99
*[HYOK]: Hold Your Own Key
1010
*[CMK]: Customer-Managed Key
11+
*[SUS]: SHI - URL Shortener

mkdocs.yml

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -237,19 +237,17 @@ nav:
237237
- Overview: Data-Gateway/Reference/index.md
238238
- Troubleshooting: Data-Gateway/Troubleshooting.md
239239

240-
241240
- URL Shortener:
242-
- Overview: URL-Shortener/index.md
243-
- Prerequisites:
244-
- Overview: URL-Shortener/Prerequisites/index.md
245-
- Authorization & RBAC: URL-Shortener/Prerequisites/Authorization-&-RBAC.md
246-
- Graph API Permissions: URL-Shortener/Prerequisites/Graph-API-Permissions.md
247-
- Getting Started: URL-Shortener/Getting-Started.md
248-
- Usage Guide: URL-Shortener/Usage-Guide.md
249-
- Reference:
250-
- Settings:
251-
- Environment Variables: URL-Shortener/Reference/Settings/Environment-Variables-Reference.md
252-
- Development:
253-
- OpenAPI Spec: URL-Shortener/Reference/Development/OpenAPI.md
254-
- Workflow: URL-Shortener/Reference/Development/Workflow.md
255-
- Server Setup: URL-Shortener/Reference/Development/Server-Setup.md
241+
- Overview: URL-Shortener/index.md
242+
- Prerequisites:
243+
- Overview: URL-Shortener/Prerequisites/index.md
244+
- Authorization & RBAC: URL-Shortener/Prerequisites/Authorization-&-RBAC.md
245+
- Graph API Permissions: URL-Shortener/Prerequisites/Graph-API-Permissions.md
246+
- Getting Started: URL-Shortener/Getting-Started.md
247+
- Usage Guide: URL-Shortener/Usage-Guide.md
248+
- Reference:
249+
- Settings:
250+
- Environment Variables: URL-Shortener/Reference/Settings/Environment-Variables-Reference.md
251+
- Development:
252+
- OpenAPI Spec: URL-Shortener/Reference/Development/OpenAPI.md
253+
- Server Setup: URL-Shortener/Reference/Development/Server-Setup.md

overrides/main.html

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@
22

33
{% block extrahead %}
44

5-
<meta name="keywords" content="SHI,Microsoft,M365,License,Document,Security,Intune,Defender,Entra,Automation,SHIELD">
5+
<meta name="keywords"
6+
content="SHI,Microsoft,M365,License,Document,Security,Intune,Defender,Entra,Automation,SHIELD,SUS,Data Gateway">
67
<meta name="robots" content="index, follow">
78
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
89
<meta name="language" content="English">
910
<meta name="revisit-after" content="8 days">
1011
<meta name="author" content="SHI International Corp.">
11-
<meta property='og:title' content='SHI Orchestration Platform - Documentation' />
12-
<meta property='og:description' content='Documentation for the SHI Orchestration Platform (SOP). Part of SHI Lab.' />
12+
<meta property='og:title' content='SHI Lab - Product Documentation' />
13+
<meta property='og:description'
14+
content='Documentation for the SHI Lab suite of products, including: SHIELD, Data Gateway, SUS, and more...' />
1315
<meta property='og:image' content='https://docs.shilab.com/assets/Images/Favicon.png' />
1416
<meta property='og:url' content='https://shi.com/' />
1517
<meta property='og:image:width' content='980' />
@@ -19,19 +21,19 @@
1921

2022
<!-- Microsoft Clarity -->
2123
<script type="text/javascript">
22-
( function ( c, l, a, r, i, t, y ) {
23-
c[ a ] = c[ a ] || function () { ( c[ a ].q = c[ a ].q || [] ).push( arguments ); };
24-
t = l.createElement( r ); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i;
25-
y = l.getElementsByTagName( r )[ 0 ]; y.parentNode.insertBefore( t, y );
26-
} )( window, document, "clarity", "script", "mjm7g9aobr" );
24+
(function (c, l, a, r, i, t, y) {
25+
c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); };
26+
t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i;
27+
y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y);
28+
})(window, document, "clarity", "script", "mjm7g9aobr");
2729

2830
/** Contains the state of all consent as defined by the Material Theme. Used to see if consent has been granted for cookies. */
29-
var consent = __md_get( "__consent" );
31+
var consent = __md_get("__consent");
3032

3133
// Check if consent was granted for Microsoft Clarity
32-
if ( consent && consent.clarity ) {
34+
if (consent && consent.clarity) {
3335
/* The user accepted the cookie */
34-
window.clarity( 'consent' );
36+
window.clarity('consent');
3537
} else {
3638
/* The user rejected the cookie */
3739
// Do nothing
@@ -40,4 +42,4 @@
4042

4143

4244
{{ super() }}
43-
{% endblock %}
45+
{% endblock %}

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
mkdocs == 1.6.1
2-
mkdocs-material == 9.6.19
2+
mkdocs-material == 9.6.22
33
mkdocs-glightbox == 0.5.1
44

0 commit comments

Comments
 (0)