fix web stuff
This commit is contained in:
parent
c722a77dcd
commit
1899b3fb5a
8 changed files with 214 additions and 3 deletions
|
|
@ -18,7 +18,7 @@ defmodule MicrowavepropWeb do
|
|||
"""
|
||||
|
||||
@spec static_paths :: [String.t()]
|
||||
def static_paths, do: ~w(assets fonts images downloads favicon.ico robots.txt sitemap.xml)
|
||||
def static_paths, do: ~w(assets fonts images downloads favicon.ico favicon.svg robots.txt sitemap.xml)
|
||||
|
||||
@spec router :: Macro.t()
|
||||
def router do
|
||||
|
|
|
|||
|
|
@ -172,6 +172,14 @@ defmodule MicrowavepropWeb.Layouts do
|
|||
"""
|
||||
end
|
||||
|
||||
@spec page_title(map()) :: String.t()
|
||||
def page_title(assigns) do
|
||||
case assigns[:page_title] do
|
||||
nil -> "NTMS Microwave Propagation"
|
||||
title -> title <> " · NTMS Microwave Propagation"
|
||||
end
|
||||
end
|
||||
|
||||
defp format_time_ago(%DateTime{} = dt) do
|
||||
diff = max(DateTime.diff(DateTime.utc_now(), dt, :second), 0)
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,44 @@
|
|||
the Referer if a future browser default changes.
|
||||
--%>
|
||||
<meta name="referrer" content="strict-origin-when-cross-origin" />
|
||||
<meta name="color-scheme" content="light dark" />
|
||||
<meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)" />
|
||||
<meta name="theme-color" content="#1d232a" media="(prefers-color-scheme: dark)" />
|
||||
<meta
|
||||
name="description"
|
||||
content={
|
||||
assigns[:meta_description] ||
|
||||
"North Texas Microwave Society's propagation prediction service for amateur radio bands 10–241 GHz. Real-time CONUS propagation scores using HRRR numerical weather prediction, ITU-R atmospheric models, and calibration against 58,000+ recorded QSOs."
|
||||
}
|
||||
/>
|
||||
<link rel="canonical" href={assigns[:canonical_url]} />
|
||||
<link rel="icon" href={~p"/favicon.svg"} type="image/svg+xml" />
|
||||
<link rel="icon" href={~p"/favicon.ico"} sizes="any" />
|
||||
<link rel="apple-touch-icon" href={~p"/favicon.svg"} />
|
||||
<meta property="og:title" content={page_title(assigns)} />
|
||||
<meta
|
||||
property="og:description"
|
||||
content={
|
||||
assigns[:meta_description] ||
|
||||
"North Texas Microwave Society's propagation prediction service for amateur radio bands 10–241 GHz."
|
||||
}
|
||||
/>
|
||||
<meta property="og:url" content={assigns[:canonical_url]} />
|
||||
<meta property="og:type" content={assigns[:og_type] || "website"} />
|
||||
<meta property="og:site_name" content="NTMS Microwave Propagation" />
|
||||
<meta property="og:image" content={assigns[:og_image] || ~p"/images/og-default.svg"} />
|
||||
<meta property="og:image:width" content="1200" />
|
||||
<meta property="og:image:height" content="675" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content={page_title(assigns)} />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content={
|
||||
assigns[:meta_description] ||
|
||||
"North Texas Microwave Society's propagation prediction service for amateur radio bands 10–241 GHz."
|
||||
}
|
||||
/>
|
||||
<meta name="twitter:image" content={assigns[:og_image] || ~p"/images/og-default.svg"} />
|
||||
<.live_title default="NTMS Microwave Propagation" suffix=" · NTMS Microwave Propagation">
|
||||
{assigns[:page_title]}
|
||||
</.live_title>
|
||||
|
|
@ -39,10 +77,26 @@
|
|||
setTheme(localStorage.getItem("phx:theme") || "system");
|
||||
}
|
||||
window.addEventListener("storage", (e) => e.key === "phx:theme" && setTheme(e.newValue || "system"));
|
||||
|
||||
|
||||
window.addEventListener("phx:set-theme", (e) => setTheme(e.target.dataset.phxTheme));
|
||||
})();
|
||||
</script>
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebApplication",
|
||||
"name": "NTMS Microwave Propagation",
|
||||
"url": "https://prop.w5isp.com",
|
||||
"description": "North Texas Microwave Society's propagation prediction service for amateur radio bands 10–241 GHz. Scores propagation conditions across CONUS using HRRR numerical weather prediction, sounding data, ITU-R atmospheric models, and calibration against 58,000+ recorded QSOs.",
|
||||
"applicationCategory": "ScienceApplication",
|
||||
"operatingSystem": "All",
|
||||
"author": {
|
||||
"@type": "Organization",
|
||||
"name": "North Texas Microwave Society",
|
||||
"url": "https://ntms.org"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
{@inner_content}
|
||||
|
|
|
|||
|
|
@ -12,4 +12,49 @@ defmodule MicrowavepropWeb.PageController do
|
|||
def redirect_contact(conn, %{"id" => id}) do
|
||||
redirect(conn, to: ~p"/contacts/#{id}")
|
||||
end
|
||||
|
||||
@llms_txt """
|
||||
# NTMS Microwave Propagation
|
||||
|
||||
> The North Texas Microwave Society's propagation prediction service for amateur radio bands 10–241 GHz. Scores propagation conditions across CONUS using HRRR numerical weather prediction, sounding data, ITU-R atmospheric models, and calibration against 58,000+ recorded QSOs.
|
||||
|
||||
A real-time propagation prediction system for microwave amateur radio bands, built and operated by the North Texas Microwave Society.
|
||||
|
||||
## Tools and maps
|
||||
|
||||
- [Propagation map](/map) — real-time CONUS propagation scores with 18-hour forecast overlay.
|
||||
- [Weather map](/weather) — HRRR weather data overlay (temperature, dewpoint, refractivity, ducting).
|
||||
- [Weather map (Canada)](/weather-ca) — HRDPS/RDPS-based weather for Canadian coverage.
|
||||
- [Contact map](/contacts/map) — geographic view of 58,000+ recorded QSOs.
|
||||
- [Path calculator](/path) — point-to-point propagation prediction between two locations.
|
||||
- [EME calculator](/eme) — Earth-Moon-Earth communication prediction for 144–10 GHz.
|
||||
- [Skew-T diagram](/skewt) — atmospheric sounding visualization from HRRR profiles and RAOB data.
|
||||
- [Rover planner](/rover) — propagation heatmap with ranked drive-to candidates.
|
||||
- [Rover locations](/rover-locations) — shared directory of rover-friendly parking spots.
|
||||
- [Rover planning](/rover-planning) — planned rover missions and their paths.
|
||||
|
||||
## Data
|
||||
|
||||
- [Algorithm documentation](/algo) — full scoring methodology, factor weights, ITU-R model references.
|
||||
- [Contact database](/contacts) — 58,000+ historical QSOs used for calibration.
|
||||
- [Beacon directory](/beacons) — microwave beacon listings across North America.
|
||||
|
||||
## About
|
||||
|
||||
- [About](/about) — project background.
|
||||
- [Privacy](/privacy) — data collection and usage policy.
|
||||
|
||||
## API
|
||||
|
||||
- [API documentation](/docs/api) — REST API reference.
|
||||
- [OpenAPI spec](/openapi.json) — machine-readable API description.
|
||||
- [Contact map data](/api/contacts/map) — JSON dump of all map contacts.
|
||||
"""
|
||||
|
||||
@spec llms_txt(Plug.Conn.t(), map()) :: Plug.Conn.t()
|
||||
def llms_txt(conn, _params) do
|
||||
conn
|
||||
|> put_resp_content_type("text/markdown", "utf-8")
|
||||
|> send_resp(200, @llms_txt)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -17,10 +17,11 @@ defmodule MicrowavepropWeb.Router do
|
|||
plug :fetch_live_flash
|
||||
plug :put_root_layout, html: {MicrowavepropWeb.Layouts, :root}
|
||||
plug :protect_from_forgery
|
||||
plug :put_secure_browser_headers
|
||||
plug :put_secure_browser_headers, %{"referrer-policy" => "strict-origin-when-cross-origin"}
|
||||
plug :serve_markdown_if_requested
|
||||
plug :accepts, ["html"]
|
||||
plug :put_agent_link_headers
|
||||
plug :put_seo_assigns
|
||||
plug :fetch_current_scope_for_user
|
||||
end
|
||||
|
||||
|
|
@ -42,6 +43,14 @@ defmodule MicrowavepropWeb.Router do
|
|||
Plug.Conn.put_resp_header(conn, "link", @agent_link_header)
|
||||
end
|
||||
|
||||
defp put_seo_assigns(conn, _opts) do
|
||||
url = MicrowavepropWeb.Endpoint.url()
|
||||
|
||||
conn
|
||||
|> assign(:canonical_url, url <> conn.request_path)
|
||||
|> assign(:og_image, url <> "/images/og-default.svg")
|
||||
end
|
||||
|
||||
# Markdown for Agents: if the client prefers `text/markdown`, serve real
|
||||
# markdown for the paths where we have markdown source. Other paths fall
|
||||
# through to the `:accepts` plug and 406 — we don't synthesize markdown
|
||||
|
|
@ -202,6 +211,10 @@ defmodule MicrowavepropWeb.Router do
|
|||
MicrowavepropWeb.AgentSkillsController,
|
||||
:skill
|
||||
|
||||
# llms.txt — a curated markdown index for LLMs (llmstxt.org proposal).
|
||||
# Serves direct content; no pipeline needed.
|
||||
get "/llms.txt", MicrowavepropWeb.PageController, :llms_txt
|
||||
|
||||
# Admin-only routes must come first so that literal segments like
|
||||
# `/beacons/:id/edit` are registered before the public `/beacons/:id`.
|
||||
scope "/", MicrowavepropWeb do
|
||||
|
|
|
|||
3
priv/static/favicon.svg
Normal file
3
priv/static/favicon.svg
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 71 48" width="71" height="48">
|
||||
<path d="m26.371 33.477-.552-.1c-3.92-.729-6.397-3.1-7.57-6.829-.733-2.324.597-4.035 3.035-4.148 1.995-.092 3.362 1.055 4.57 2.39 1.557 1.72 2.984 3.558 4.514 5.305 2.202 2.515 4.797 4.134 8.347 3.634 3.183-.448 5.958-1.725 8.371-3.828.363-.316.761-.592 1.144-.886l-.241-.284c-2.027.63-4.093.841-6.205.735-3.195-.16-6.24-.828-8.964-2.582-2.486-1.601-4.319-3.746-5.19-6.611-.704-2.315.736-3.934 3.135-3.6.948.133 1.746.56 2.463 1.165.583.493 1.143 1.015 1.738 1.493 2.8 2.25 6.712 2.375 10.265-.068-5.842-.026-9.817-3.24-13.308-7.313-1.366-1.594-2.7-3.216-4.095-4.785-2.698-3.036-5.692-5.71-9.79-6.623C12.8-.623 7.745.14 2.893 2.361 1.926 2.804.997 3.319 0 4.149c.494 0 .763.006 1.032 0 2.446-.064 4.28 1.023 5.602 3.024.962 1.457 1.415 3.104 1.761 4.798.513 2.515.247 5.078.544 7.605.761 6.494 4.08 11.026 10.26 13.346 2.267.852 4.591 1.135 7.172.555ZM10.751 3.852c-.976.246-1.756-.148-2.56-.962 1.377-.343 2.592-.476 3.897-.528-.107.848-.607 1.306-1.336 1.49Zm32.002 37.924c-.085-.626-.62-.901-1.04-1.228-1.857-1.446-4.03-1.958-6.333-2-1.375-.026-2.735-.128-4.031-.61-.595-.22-1.26-.505-1.244-1.272.015-.78.693-1 1.31-1.184.505-.15 1.026-.247 1.6-.382-1.46-.936-2.886-1.065-4.787-.3-2.993 1.202-5.943 1.06-8.926-.017-1.684-.608-3.179-1.563-4.735-2.408l-.077.057c1.29 2.115 3.034 3.817 5.004 5.271 3.793 2.8 7.936 4.471 12.784 3.73A66.714 66.714 0 0 1 37 40.877c1.98-.16 3.866.398 5.753.899Zm-9.14-30.345c-.105-.076-.206-.266-.42-.069 1.745 2.36 3.985 4.098 6.683 5.193 4.354 1.767 8.773 2.07 13.293.51 3.51-1.21 6.033-.028 7.343 3.38.19-3.955-2.137-6.837-5.843-7.401-2.084-.318-4.01.373-5.962.94-5.434 1.575-10.485.798-15.094-2.553Zm27.085 15.425c.708.059 1.416.123 2.124.185-1.6-1.405-3.55-1.517-5.523-1.404-3.003.17-5.167 1.903-7.14 3.972-1.739 1.824-3.31 3.87-5.903 4.604.043.078.054.117.066.117.35.005.699.021 1.047.005 3.768-.17 7.317-.965 10.14-3.7.89-.86 1.685-1.817 2.544-2.71.716-.746 1.584-1.159 2.645-1.07Zm-8.753-4.67c-2.812.246-5.254 1.409-7.548 2.943-1.766 1.18-3.654 1.738-5.776 1.37-.374-.066-.75-.114-1.124-.17l-.013.156c.135.07.265.151.405.207.354.14.702.308 1.07.395 4.083.971 7.992.474 11.516-1.803 2.221-1.435 4.521-1.707 7.013-1.336.252.038.503.083.756.107.234.022.479.255.795.003-2.179-1.574-4.526-2.096-7.094-1.872Zm-10.049-9.544c1.475.051 2.943-.142 4.486-1.059-.452.04-.643.04-.827.076-2.126.424-4.033-.04-5.733-1.383-.623-.493-1.257-.974-1.889-1.457-2.503-1.914-5.374-2.555-8.514-2.5.05.154.054.26.108.315 3.417 3.455 7.371 5.836 12.369 6.008Zm24.727 17.731c-2.114-2.097-4.952-2.367-7.578-.537 1.738.078 3.043.632 4.101 1.728a13 13 0 0 0 1.182 1.106c1.6 1.29 4.311 1.352 5.896.155-1.861-.726-1.861-.726-3.601-2.452Zm-21.058 16.06c-1.858-3.46-4.981-4.24-8.59-4.008a9.667 9.667 0 0 1 2.977 1.39c.84.586 1.547 1.311 2.243 2.055 1.38 1.473 3.534 2.376 4.962 2.07-.656-.412-1.238-.848-1.592-1.507Zl-.006.006-.036-.004.021.018.012.053Za.127.127 0 0 0 .015.043c.005.008.038 0 .058-.002Zl-.008.01.005.026.024.014Z" fill="#FD4F00"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3 KiB |
23
priv/static/images/og-default.svg
Normal file
23
priv/static/images/og-default.svg
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 675" width="1200" height="675">
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#0a1628"/>
|
||||
<stop offset="100%" stop-color="#1a1a2e"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1200" height="675" fill="url(#bg)"/>
|
||||
<g transform="translate(100, 300)">
|
||||
<g transform="scale(2.5)">
|
||||
<path d="m26.371 33.477-.552-.1c-3.92-.729-6.397-3.1-7.57-6.829-.733-2.324.597-4.035 3.035-4.148 1.995-.092 3.362 1.055 4.57 2.39 1.557 1.72 2.984 3.558 4.514 5.305 2.202 2.515 4.797 4.134 8.347 3.634 3.183-.448 5.958-1.725 8.371-3.828.363-.316.761-.592 1.144-.886l-.241-.284c-2.027.63-4.093.841-6.205.735-3.195-.16-6.24-.828-8.964-2.582-2.486-1.601-4.319-3.746-5.19-6.611-.704-2.315.736-3.934 3.135-3.6.948.133 1.746.56 2.463 1.165.583.493 1.143 1.015 1.738 1.493 2.8 2.25 6.712 2.375 10.265-.068-5.842-.026-9.817-3.24-13.308-7.313-1.366-1.594-2.7-3.216-4.095-4.785-2.698-3.036-5.692-5.71-9.79-6.623C12.8-.623 7.745.14 2.893 2.361 1.926 2.804.997 3.319 0 4.149c.494 0 .763.006 1.032 0 2.446-.064 4.28 1.023 5.602 3.024.962 1.457 1.415 3.104 1.761 4.798.513 2.515.247 5.078.544 7.605.761 6.494 4.08 11.026 10.26 13.346 2.267.852 4.591 1.135 7.172.555ZM10.751 3.852c-.976.246-1.756-.148-2.56-.962 1.377-.343 2.592-.476 3.897-.528-.107.848-.607 1.306-1.336 1.49Zm32.002 37.924c-.085-.626-.62-.901-1.04-1.228-1.857-1.446-4.03-1.958-6.333-2-1.375-.026-2.735-.128-4.031-.61-.595-.22-1.26-.505-1.244-1.272.015-.78.693-1 1.31-1.184.505-.15 1.026-.247 1.6-.382-1.46-.936-2.886-1.065-4.787-.3-2.993 1.202-5.943 1.06-8.926-.017-1.684-.608-3.179-1.563-4.735-2.408l-.077.057c1.29 2.115 3.034 3.817 5.004 5.271 3.793 2.8 7.936 4.471 12.784 3.73A66.714 66.714 0 0 1 37 40.877c1.98-.16 3.866.398 5.753.899Zm-9.14-30.345c-.105-.076-.206-.266-.42-.069 1.745 2.36 3.985 4.098 6.683 5.193 4.354 1.767 8.773 2.07 13.293.51 3.51-1.21 6.033-.028 7.343 3.38.19-3.955-2.137-6.837-5.843-7.401-2.084-.318-4.01.373-5.962.94-5.434 1.575-10.485.798-15.094-2.553Zm27.085 15.425c.708.059 1.416.123 2.124.185-1.6-1.405-3.55-1.517-5.523-1.404-3.003.17-5.167 1.903-7.14 3.972-1.739 1.824-3.31 3.87-5.903 4.604.043.078.054.117.066.117.35.005.699.021 1.047.005 3.768-.17 7.317-.965 10.14-3.7.89-.86 1.685-1.817 2.544-2.71.716-.746 1.584-1.159 2.645-1.07Zm-8.753-4.67c-2.812.246-5.254 1.409-7.548 2.943-1.766 1.18-3.654 1.738-5.776 1.37-.374-.066-.75-.114-1.124-.17l-.013.156c.135.07.265.151.405.207.354.14.702.308 1.07.395 4.083.971 7.992.474 11.516-1.803 2.221-1.435 4.521-1.707 7.013-1.336.252.038.503.083.756.107.234.022.479.255.795.003-2.179-1.574-4.526-2.096-7.094-1.872Zm-10.049-9.544c1.475.051 2.943-.142 4.486-1.059-.452.04-.643.04-.827.076-2.126.424-4.033-.04-5.733-1.383-.623-.493-1.257-.974-1.889-1.457-2.503-1.914-5.374-2.555-8.514-2.5.05.154.054.26.108.315 3.417 3.455 7.371 5.836 12.369 6.008Zm24.727 17.731c-2.114-2.097-4.952-2.367-7.578-.537 1.738.078 3.043.632 4.101 1.728a13 13 0 0 0 1.182 1.106c1.6 1.29 4.311 1.352 5.896.155-1.861-.726-1.861-.726-3.601-2.452Zm-21.058 16.06c-1.858-3.46-4.981-4.24-8.59-4.008a9.667 9.667 0 0 1 2.977 1.39c.84.586 1.547 1.311 2.243 2.055 1.38 1.473 3.534 2.376 4.962 2.07-.656-.412-1.238-.848-1.592-1.507Zl-.006.006-.036-.004.021.018.012.053Za.127.127 0 0 0 .015.043c.005.008.038 0 .058-.002Zl-.008.01.005.026.024.014Z" fill="#FD4F00"/>
|
||||
</g>
|
||||
<text x="300" y="-10" font-family="system-ui, -apple-system, sans-serif" font-size="42" font-weight="700" fill="#e5e7eb">
|
||||
NTMS Microwave Propagation
|
||||
</text>
|
||||
<text x="300" y="48" font-family="system-ui, -apple-system, sans-serif" font-size="22" fill="#9ca3af">
|
||||
Real-time propagation prediction for amateur radio bands 10–241 GHz
|
||||
</text>
|
||||
<text x="300" y="82" font-family="system-ui, -apple-system, sans-serif" font-size="18" fill="#6b7280">
|
||||
prop.w5isp.com
|
||||
</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
|
|
@ -10,6 +10,46 @@
|
|||
<changefreq>hourly</changefreq>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/weather</loc>
|
||||
<changefreq>hourly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/weather-ca</loc>
|
||||
<changefreq>hourly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/path</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/eme</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/skewt</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.6</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/rover</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.7</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/rover-locations</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.6</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/rover-planning</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.6</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/submit</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
|
|
@ -20,9 +60,34 @@
|
|||
<changefreq>daily</changefreq>
|
||||
<priority>0.6</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/contacts/map</loc>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>0.6</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/beacons</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.6</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/algo</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.5</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/about</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.4</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/privacy</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.3</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://prop.w5isp.com/docs/api</loc>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.4</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue