diff --git a/labapp/app/markdown/lb.md b/labapp/app/markdown/lb.md deleted file mode 100644 index 3ca0a3e..0000000 --- a/labapp/app/markdown/lb.md +++ /dev/null @@ -1,168 +0,0 @@ - - -# **Load Balancing** - - - -Load balancing is the cornerstone of XC's App Connect functionality. -L7 MCN requires discovering services at one site and making those services available to another. -XC implements this functionality with origin pools and load balancers. -More complicated configurations (underlay networking, security services, observability, etc.) are built on these primitives. - -
- -### **Exercise 1: AWS Cloud App** - -For the initial exercise, make the cloud application running in AWS available to the UDF environment. -Build an origin pool and load balancer based on the exercise requirements. - - - -
- -#### **Test Criteria** - -```http -GET https://eph-ns.mcn-lab.f5demos.com/ HTTP/1.1 -Host: eph-ns.mcn-lab.f5demos.com - -{ - "env": "AWS", - ... -} -``` - -
- -
-
- - -
- -Since this is the first exercise, here are some hints (if you need them). - -
-

- - - -

-
- -
-
- temp - temp -
-
- - -
-
- temp -
-
- - -
-
- temp -
-
- -
-
- - - -### **Exercise 2: Azure Cloud App** - -For the second exercise, make the cloud application running in Azure available to the UDF environment. -Create a new origin pool for the Azure cloud app. Reuse your load balancer. - - - - -
- -#### **Test Criteria** - -```http -GET https://eph-ns.mcn-lab.f5demos.com/ HTTP/1.1 -Host: eph-ns.mcn-lab.f5demos.com - -{ - "env": "Azure", - ... -} -``` - - - -
- -
-
- - - - - - diff --git a/labapp/app/markdown/manipulation.md b/labapp/app/markdown/manipulation.md deleted file mode 100644 index f87135e..0000000 --- a/labapp/app/markdown/manipulation.md +++ /dev/null @@ -1,183 +0,0 @@ - - -# **Manipulation** - - - -Since web traffic has been traversing proxies, engineers have needed to alter HTTP content for increased observability (XFF), performance (Cache-Control), or core functionality (JWT). -"Proxy Pass" functionality has been part of web servers since the early Apache days. -Adding, removing, and altering Headers are tablestakes for ADCs, CDNs, and software-based load balancers. -F5 XC App Connect enables this functionality granularly on routes or broadly on the load balancer. - -
- -### **Exercise 1: Path Rewrite** - -Configure a path prefix rewrite to remove part of the request path when routing to an origin. - - - -
- -#### **Test Criteria** - -```http -GET https://eph-ns.mcn-lab.f5demos.com/aws/raw HTTP/1.1 -Host: eph-ns.mcn-lab.f5demos.com - -{ - "info": { - "path": "/raw" - } - ... -} -``` - -
- -
-
- - -Questions on this functionality are often asked on F5 DevCentral. Here's a hint. - -
-

- - -

-
-
- temp -
-
-
- temp -
-
-
-
- -
- -### **Exercise 2: Request Header Shenanigans** - -While blind header insertion or deletion is useful in some use cases, this exercise focuses on context aware header manipulation. -Use the XC Header Processing docs for reference. - -
- - - -
- -#### **Test Criteria** - -```http -GET https://eph-ns.mcn-lab.f5demos.com/ HTTP/1.1 -Host: eph-ns.mcn-lab.f5demos.com - -{ - ... - "request_headers": { - "x-mcn-namespace": "wiggly-yellowtail", - "x-mcn-src-site": "cluster-xxxxxxxx", - }, - ... -} -``` - -
- -
-
- - -
- -### **Exercise 3: Response Header Shenanigans** - -
- - - -
- -#### **Test Criteria** - -```http -GET https://eph-ns.mcn-lab.f5demos.com/aws HTTP/1.1 -Host: eph-ns.mcn-lab.f5demos.com - -{ - "x-mcn-dest-site": "student-awsnet" -} -``` - -```http -GET https://eph-ns.mcn-lab.f5demos.com/azure HTTP/1.1 -Host: eph-ns.mcn-lab.f5demos.com - -{ - "x-mcn-dest-site": "student-azurenet" -} -``` - - - -
- -
-
- - - - - - - diff --git a/labapp/app/markdown/overview.md b/labapp/app/markdown/overview.md deleted file mode 100644 index 2c1e801..0000000 --- a/labapp/app/markdown/overview.md +++ /dev/null @@ -1,172 +0,0 @@ - - -# **Overview** - - - -The lab environment, the service endpoints, and how you interact with the load balancer have been simplified in an effort to focus on concepts. -Understanding the environment, it's topology, and the rudimentary functionality of the cloud app will help in completing the exercises. - -
- -## **Architecture** - -The lab environment contains three distributed sites meshed using the F5 Distributed Cloud Global Network. - - - -
- -Arch diagram - -## **Cloud App** - -An instance of the cloud app is hosted in each remote cloud environment. -The cloud app is a simple application that echoes back an HTTP request. -While working through the lab, unless otherwise noted, test results display headers and info **from the request received by the app**. - -For testing, you can access an endpoint of each cloud app from your browser. - -

- - - - - -

- -
- -## **Lab Exercises** - -Lab exercises will ask you to create configuration in the lab tenant. -Exercise requirements are listed in a table along with an object type indicator. - - - -
- -#### **Test Criteria** - -To complete lab exercises, you will run tests against the load balancer advertised from the Customer Edge in your UDF site. -You will build this load balancer in the first exercise. -All tests will be run from this lab app. - -Each test will specify success criteria immediately before the button. - -Here are some examples to try. - -```http -GET https://foo.mcn-lab.f5demos.com/ HTTP/1.1 - -{ - "info": { - "foo": True - } -} -``` - -
- -
-
- - -The test made a request to https://foo.mcn-lab.f5demos.com. -The test succeeded because the response contained the ``JSON`` string ``{ "info": { "foo": True }}``. - -
- -```http -GET https://bar.mcn-lab.f5demos.com/ HTTP/1.1 - -{ - "info": { - "bar": True - } -} -``` - -
- -
-
- - -The test made a request to https://bar.mcn-lab.f5demos.com. -The test failed because the response did not contain the ``JSON`` string ``{ "info": { "bar": True}}``. - - -
- -#### **Other Tools** - -``curl`` and ``jq`` are provided on the UDF Runner instance. - -```shell -ubuntu@ubuntu:~$ curl -s https://foo.mcn-lab.f5demos.com/ | jq -{ - "info": "bar" -} -``` - - -
- -## **Issues** - -Use the lab repository issue tracker to report bugs, typos, or lab enhancements. - - - - - - - - - - diff --git a/labapp/app/markdown/portability.md b/labapp/app/markdown/portability.md deleted file mode 100644 index fd0df22..0000000 --- a/labapp/app/markdown/portability.md +++ /dev/null @@ -1,123 +0,0 @@ - - -# **Portability** - - - - -The configuration built so far handles load balancing, routing, and content manipulation. -XC refers to this object as a "load balancer" -- but it's really the holistic representation of an application whose service endpoints live across the distributed network. -The object is simple -- it doesn't yet include configuration for WAAP, API protection, or a service policy. - -What seperates XC from traditional ADCs is flexibility in defining where a load balancer is advertised. - -
- -### **Exercise 1: Advertise Policy** - - - -
- -#### **Test Criteria** - -```http -GET https://eph-ns.mcn-lab.f5demos.com/ HTTP/1.1 -Host: eph-ns.mcn-lab.f5demos.com - -{ - "info": { - "path": "/" - } - ... -} -``` - -
- -
-
- - - -
-

- -

-
-
- temp - temp -
-
-
- -
- -### **Exercise 2: Find a Friend** - -Do you have a friend working on the lab? -Have they updated their advertise policy to use the virtual site? -Find thier ephemeral namespace (or use the one provided). - - - -
- -#### **Test Criteria** - -```http -GET https://friend-eph-ns.mcn-lab.f5demos.com/ HTTP/1.1 -Host: friend-eph-ns.mcn-lab.f5demos.com - -{ - "info": { - "path": "/" - } - ... -} -``` - -
-
-
-
- - -
-
-
-
-
- - - - - \ No newline at end of file diff --git a/labapp/app/markdown/reference.md b/labapp/app/markdown/reference.md deleted file mode 100644 index e69de29..0000000 diff --git a/labapp/app/markdown/route.md b/labapp/app/markdown/route.md deleted file mode 100644 index 5988e98..0000000 --- a/labapp/app/markdown/route.md +++ /dev/null @@ -1,132 +0,0 @@ - - -# **HTTP Routing** - - - -Modern applications, and some classic ones, are often comprised of disparate services spread across sites. -MCN solutions must be able to make routing decisions based on characterstics of an HTTP request. -F5 XC App Connect is a distributed L7 proxy that provides intelligent routing, visibility, and strategic points of control. - -
- -### **Exercise 1: Path Routing** - -Build routing rules and configure your load balancer to route traffic between the two cloud apps based on the request url. - - - -
- -#### **Test Criteria** - -```http -GET https://eph-ns.mcn-lab.f5demos.com/aws/raw HTTP/1.1 -Host: eph-ns.mcn-lab.f5demos.com - -{ - "env": "aws", - ... -} -``` - -```http -GET https://eph-ns.mcn-lab.f5demos.com/azure/raw HTTP/1.1 -Host: eph-ns.mcn-lab.f5demos.com - -{ - "env": "azure", - ... -} -``` - -
- -
- -
-
- - - - -### **Exercise 2: Header Routing** - -Build rules to route traffic between the two cloud apps based on an arbitrary HTTP request header. - - - - -
- -#### **Test Criteria** - -```http -GET https://eph-ns.mcn-lab.f5demos.com/raw HTTP/1.1 -Host: eph-ns.mcn-lab.f5demos.com -X-MCN-lab: aws - -{ - "env": "aws", - ... -} -``` - -```http -GET https://eph-ns.mcn-lab.f5demos.com/raw HTTP/1.1 -Host: eph-ns.mcn-lab.f5demos.com -X-MCN-lab: azure - -{ - "env": "azure", - ... -} -``` - -
- -
-
- - - - - \ No newline at end of file diff --git a/labapp/app/markdown/score.md b/labapp/app/markdown/score.md deleted file mode 100644 index e69de29..0000000 diff --git a/labapp/app/markdown/setup.md b/labapp/app/markdown/setup.md deleted file mode 100644 index 58a0aaa..0000000 --- a/labapp/app/markdown/setup.md +++ /dev/null @@ -1,40 +0,0 @@ - - -# **Setup** - - - -Log in to the lab tenant and open any namespaced tile -- Multi-Cloud App Connect, Distributed Apps, etc. The ephemeral namespace is a randomly generated concatenation of adjective-animal in the navigation bar towards the top. - -eph-ns - - -The ephemeral namespace will be used to derive a unique URL for the load balancer used in the lab exercises. - - Cookies must be allowed for this site. - -
-
- - -
- - -
- - - diff --git a/labapp/app/markdown/welcome.md b/labapp/app/markdown/welcome.md deleted file mode 100644 index aa8ef9e..0000000 --- a/labapp/app/markdown/welcome.md +++ /dev/null @@ -1,81 +0,0 @@ -
- - -# **Welcome** - - - -This lab is a practical training activity. -Each exercise will ask you to configure F5 Distributed Cloud ("XC") objects to reinforce core XC Multi-Cloud Networking ("MCN") App Connect concepts. -Once configured, you will test the configuration using this web application. - -
- -## **Getting Started** - -When your UDF deployment launched, two automated processes started - Customer Edge ("CE") registration and account provisioning in the lab tenant. - -
- -### **Customer Edge** - -The CE in the UDF deployment will register with the lab tenant. -CEs on first launch update software and, often, their OS. This can take ~20 min from when the CE is booted. - -When the CE is ready, the status indicator in the navigation pane (👀 look to the left) will show . -Use the indicator to find the CE site name needed for configuring the load balancer's advertise policy. - -
- -### **Account Provisioning** - -Check the email used to launch your UDF deployment for a welcome or password reset email from the lab tenant. -Update your password to log into the tenant. - -

- - - - -

- -
- -### **While You Wait** - -Here's a few things you can do while waiting for the CE to be registered and provisioned: - - - - - - - - - diff --git a/labapp/app/static/404.png b/labapp/app/static/404.png deleted file mode 100644 index d88f9a7..0000000 Binary files a/labapp/app/static/404.png and /dev/null differ diff --git a/labapp/app/static/500.png b/labapp/app/static/500.png deleted file mode 100644 index 50460bf..0000000 Binary files a/labapp/app/static/500.png and /dev/null differ diff --git a/labapp/app/static/arch-base.png b/labapp/app/static/arch-base.png deleted file mode 100644 index 1ea20c0..0000000 Binary files a/labapp/app/static/arch-base.png and /dev/null differ diff --git a/labapp/app/static/ce.png b/labapp/app/static/ce.png deleted file mode 100644 index 867fd73..0000000 Binary files a/labapp/app/static/ce.png and /dev/null differ diff --git a/labapp/app/static/coming-soon.png b/labapp/app/static/coming-soon.png deleted file mode 100644 index 7bd491a..0000000 Binary files a/labapp/app/static/coming-soon.png and /dev/null differ diff --git a/labapp/app/static/helpers-old.js b/labapp/app/static/helpers-old.js deleted file mode 100644 index 8bcf234..0000000 --- a/labapp/app/static/helpers-old.js +++ /dev/null @@ -1,127 +0,0 @@ -function setCookie(name, value, days) { - var expires = ""; - if (days) { - var date = new Date(); - date.setTime(date.getTime() + (days*24*60*60*1000)); - expires = "; expires=" + date.toUTCString(); - } - document.cookie = name + "=" + (value || "") + expires + "; path=/"; -} - -function getCookie(name) { - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - for(var i=0; i < ca.length; i++) { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - return null; -} - -async function testHttpRequest(buttonId, requestUrl, resultDivId, buttonTxt) { - const button = document.getElementById(buttonId); - const resultDiv = document.getElementById(resultDivId); - - // Add spinner to button and disable it - button.innerHTML = `Testing...`; - button.disabled = true; - - try { - const response = await axios.get(requestUrl); - if (response.data.status === 'success') { - const prettyJson = JSON.stringify(response.data.data, null, 4); - resultDiv.innerHTML = `
Request Succeeded:
${prettyJson}
`; - updateScoreCookie(requestUrl, 'pass'); - } else { - const errJson = JSON.stringify(response.data.error, null, 4); - resultDiv.innerHTML = `
Request Failed:
${errJson}
`; - updateScoreCookie(requestUrl, 'fail'); - } - } catch (error) { - resultDiv.innerHTML = `
Error: ${error.message}
`; - updateScoreCookie(requestUrl, 'fail'); - } finally { - // Restore original button text and remove spinner - button.innerHTML = buttonTxt; - button.disabled = false; - resultDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); - } -} - -async function testPostRequest(buttonId, requestUrl, resultDivId, inputDataId, buttonTxt) { - const button = document.getElementById(buttonId); - const resultDiv = document.getElementById(resultDivId); - const inputData = document.getElementById(inputDataId).value; - - - // Add spinner and change button text - button.innerHTML = `Testing...`; - button.disabled = true; - - try { - const response = await axios.post(requestUrl, { userInput: inputData }); - if (response.data.status === 'success') { - const prettyJson = JSON.stringify(response.data.data, null, 4); - resultDiv.innerHTML = `
Request Succeeded:
${prettyJson}
`; - updateScoreCookie(requestUrl, 'pass'); - } else { - const errJson = JSON.stringify(response.data.error, null, 4); - resultDiv.innerHTML = `
Request Failed:
${errJson}
`; - updateScoreCookie(requestUrl, 'fail'); - } - } catch (error) { - resultDiv.innerHTML = `
Error: ${error.message}
`; - updateScoreCookie(requestUrl, 'fail'); - } finally { - // Restore original button text - button.innerHTML = buttonTxt; - button.disabled = false; - resultDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); - } -} - - function updateScoreCookie_old(requestUrl, status) { - // Get the current cookie, decode it, and parse it as JSON - const currentCookie = decodeURIComponent(getScoreCookie('mcnp_scoreboard') || '%7B%7D'); // Ensure the default value is an encoded empty JSON object - let progress = JSON.parse(currentCookie); - progress[encodeURIComponent(requestUrl)] = status; - document.cookie = `mcnp_scoreboard=${encodeURIComponent(JSON.stringify(progress))}; path=/; expires=${new Date(new Date().getTime() + 86400e3).toUTCString()};`; - } - - function getScoreCookie(name) { - let cookieArray = document.cookie.split(';'); - for(let i = 0; i < cookieArray.length; i++) { - let cookiePair = cookieArray[i].split('='); - if(name == cookiePair[0].trim()) { - return cookiePair[1]; - } - } - return null; - } - - function updateScoreCookie(requestUrl, status) { - // Retrieve the existing score cookie or initialize it to an empty JSON object. - // The cookie value retrieved is assumed to be URI-encoded since it was set as such. - let currentCookie = getCookie('mcnp_scoreboard') || '{}'; - - // Decode the retrieved cookie string to handle any URI-encoded characters. - let decodedCookie = decodeURIComponent(currentCookie); - - // Parse the decoded cookie string into an object. - let progress = JSON.parse(decodedCookie); - - // Update the progress object with the new status for the requestUrl. - // Using encodeURIComponent to ensure the URL is safely encoded. - progress[encodeURIComponent(requestUrl)] = status; - - // Serialize the progress object back into a JSON string. - let jsonString = JSON.stringify(progress); - - // Encode the entire JSON string to ensure all special characters are URI-safe. - let encodedJsonString = encodeURIComponent(jsonString); - - // Use the setCookie function to update the cookie with the URI-encoded JSON string. - setCookie('mcnp_scoreboard', encodedJsonString, 1); // Set for 1 day expiration -} - diff --git a/labapp/app/static/images/404-err.png b/labapp/app/static/images/banners/404-err.png similarity index 100% rename from labapp/app/static/images/404-err.png rename to labapp/app/static/images/banners/404-err.png diff --git a/labapp/app/static/images/500-err.png b/labapp/app/static/images/banners/500-err.png similarity index 100% rename from labapp/app/static/images/500-err.png rename to labapp/app/static/images/banners/500-err.png diff --git a/labapp/app/static/images/cookie-err.png b/labapp/app/static/images/banners/cookie-err.png similarity index 100% rename from labapp/app/static/images/cookie-err.png rename to labapp/app/static/images/banners/cookie-err.png diff --git a/labapp/app/static/images/lb-banner.png b/labapp/app/static/images/banners/lb-banner.png similarity index 100% rename from labapp/app/static/images/lb-banner.png rename to labapp/app/static/images/banners/lb-banner.png diff --git a/labapp/app/static/images/manip-banner.png b/labapp/app/static/images/banners/manip-banner.png similarity index 100% rename from labapp/app/static/images/manip-banner.png rename to labapp/app/static/images/banners/manip-banner.png diff --git a/labapp/app/static/images/overview-banner.png b/labapp/app/static/images/banners/overview-banner.png similarity index 100% rename from labapp/app/static/images/overview-banner.png rename to labapp/app/static/images/banners/overview-banner.png diff --git a/labapp/app/static/images/port-banner.png b/labapp/app/static/images/banners/port-banner.png similarity index 100% rename from labapp/app/static/images/port-banner.png rename to labapp/app/static/images/banners/port-banner.png diff --git a/labapp/app/static/images/practical.png b/labapp/app/static/images/banners/practical.png similarity index 100% rename from labapp/app/static/images/practical.png rename to labapp/app/static/images/banners/practical.png diff --git a/labapp/app/static/images/routing-banner.png b/labapp/app/static/images/banners/routing-banner.png similarity index 100% rename from labapp/app/static/images/routing-banner.png rename to labapp/app/static/images/banners/routing-banner.png diff --git a/labapp/app/static/images/score-banner.png b/labapp/app/static/images/banners/score-banner.png similarity index 100% rename from labapp/app/static/images/score-banner.png rename to labapp/app/static/images/banners/score-banner.png diff --git a/labapp/app/static/images/setup-banner.png b/labapp/app/static/images/banners/setup-banner.png similarity index 100% rename from labapp/app/static/images/setup-banner.png rename to labapp/app/static/images/banners/setup-banner.png diff --git a/labapp/app/static/bad.png b/labapp/app/static/images/common/bad.png similarity index 100% rename from labapp/app/static/bad.png rename to labapp/app/static/images/common/bad.png diff --git a/labapp/app/static/good.png b/labapp/app/static/images/common/good.png similarity index 100% rename from labapp/app/static/good.png rename to labapp/app/static/images/common/good.png diff --git a/labapp/app/static/lb-icon.png b/labapp/app/static/images/common/lb-icon.png similarity index 100% rename from labapp/app/static/lb-icon.png rename to labapp/app/static/images/common/lb-icon.png diff --git a/labapp/app/static/multi-cloud-app-connect.svg b/labapp/app/static/images/common/multi-cloud-app-connect.svg similarity index 100% rename from labapp/app/static/multi-cloud-app-connect.svg rename to labapp/app/static/images/common/multi-cloud-app-connect.svg diff --git a/labapp/app/static/origin-icon.png b/labapp/app/static/images/common/origin-icon.png similarity index 100% rename from labapp/app/static/origin-icon.png rename to labapp/app/static/images/common/origin-icon.png diff --git a/labapp/app/static/route-icon.png b/labapp/app/static/images/common/route-icon.png similarity index 100% rename from labapp/app/static/route-icon.png rename to labapp/app/static/images/common/route-icon.png diff --git a/labapp/app/static/unknown.png b/labapp/app/static/images/common/unknown.png similarity index 100% rename from labapp/app/static/unknown.png rename to labapp/app/static/images/common/unknown.png diff --git a/labapp/app/static/load-balancer1.png b/labapp/app/static/images/lb/load-balancer1.png similarity index 100% rename from labapp/app/static/load-balancer1.png rename to labapp/app/static/images/lb/load-balancer1.png diff --git a/labapp/app/static/load-balancer2.png b/labapp/app/static/images/lb/load-balancer2.png similarity index 100% rename from labapp/app/static/load-balancer2.png rename to labapp/app/static/images/lb/load-balancer2.png diff --git a/labapp/app/static/origin-pool.png b/labapp/app/static/images/lb/origin-pool.png similarity index 100% rename from labapp/app/static/origin-pool.png rename to labapp/app/static/images/lb/origin-pool.png diff --git a/labapp/app/static/origin-server.png b/labapp/app/static/images/lb/origin-server.png similarity index 100% rename from labapp/app/static/origin-server.png rename to labapp/app/static/images/lb/origin-server.png diff --git a/labapp/app/static/rewrite1.png b/labapp/app/static/images/manip/rewrite1.png similarity index 100% rename from labapp/app/static/rewrite1.png rename to labapp/app/static/images/manip/rewrite1.png diff --git a/labapp/app/static/rewrite2.png b/labapp/app/static/images/manip/rewrite2.png similarity index 100% rename from labapp/app/static/rewrite2.png rename to labapp/app/static/images/manip/rewrite2.png diff --git a/labapp/app/static/aws.png b/labapp/app/static/images/overview/aws.png similarity index 100% rename from labapp/app/static/aws.png rename to labapp/app/static/images/overview/aws.png diff --git a/labapp/app/static/azure.png b/labapp/app/static/images/overview/azure.png similarity index 100% rename from labapp/app/static/azure.png rename to labapp/app/static/images/overview/azure.png diff --git a/labapp/app/static/mcn-prac-arch-base.png b/labapp/app/static/images/overview/mcn-prac-arch-base.png similarity index 100% rename from labapp/app/static/mcn-prac-arch-base.png rename to labapp/app/static/images/overview/mcn-prac-arch-base.png diff --git a/labapp/app/static/mcnp-aws.png b/labapp/app/static/images/overview/mcnp-aws.png similarity index 100% rename from labapp/app/static/mcnp-aws.png rename to labapp/app/static/images/overview/mcnp-aws.png diff --git a/labapp/app/static/mcnp-azure.png b/labapp/app/static/images/overview/mcnp-azure.png similarity index 100% rename from labapp/app/static/mcnp-azure.png rename to labapp/app/static/images/overview/mcnp-azure.png diff --git a/labapp/app/static/mcnp-udf.png b/labapp/app/static/images/overview/mcnp-udf.png similarity index 100% rename from labapp/app/static/mcnp-udf.png rename to labapp/app/static/images/overview/mcnp-udf.png diff --git a/labapp/app/static/vsite.png b/labapp/app/static/images/port/vsite.png similarity index 100% rename from labapp/app/static/vsite.png rename to labapp/app/static/images/port/vsite.png diff --git a/labapp/app/static/vsite2.png b/labapp/app/static/images/port/vsite2.png similarity index 100% rename from labapp/app/static/vsite2.png rename to labapp/app/static/images/port/vsite2.png diff --git a/labapp/app/static/ms-forms.png b/labapp/app/static/images/score/ms-forms.png similarity index 100% rename from labapp/app/static/ms-forms.png rename to labapp/app/static/images/score/ms-forms.png diff --git a/labapp/app/static/eph-ns.png b/labapp/app/static/images/setup/eph-ns.png similarity index 100% rename from labapp/app/static/eph-ns.png rename to labapp/app/static/images/setup/eph-ns.png diff --git a/labapp/app/static/check.png b/labapp/app/static/images/welcome/check.png similarity index 100% rename from labapp/app/static/check.png rename to labapp/app/static/images/welcome/check.png diff --git a/labapp/app/static/email.png b/labapp/app/static/images/welcome/email.png similarity index 100% rename from labapp/app/static/email.png rename to labapp/app/static/images/welcome/email.png diff --git a/labapp/app/static/password.png b/labapp/app/static/images/welcome/password.png similarity index 100% rename from labapp/app/static/password.png rename to labapp/app/static/images/welcome/password.png diff --git a/labapp/app/templates/base.html b/labapp/app/templates/base.html index e478ad4..bf17eb2 100644 --- a/labapp/app/templates/base.html +++ b/labapp/app/templates/base.html @@ -30,7 +30,7 @@