rustream/templates/
session.rs1pub fn get_content() -> String {
12 r###"<!DOCTYPE html>
13<html lang="en">
14<head>
15 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
16 <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
17 <meta http-equiv="Pragma" content="no-cache">
18 <meta http-equiv="Expires" content="0">
19 <title>RuStream - Self-hosted Streaming Engine - v{{ version }}</title>
20 <meta property="og:type" content="MediaStreaming">
21 <meta name="keywords" content="Python, streaming, fastapi, JavaScript, HTML, CSS">
22 <meta name="author" content="Vignesh Rao">
23 <meta content="width=device-width, initial-scale=1" name="viewport">
24 <!-- Favicon.ico and Apple Touch Icon -->
25 <link rel="icon" href="https://thevickypedia.github.io/open-source/images/logo/actix.ico">
26 <link rel="apple-touch-icon" href="https://thevickypedia.github.io/open-source/images/logo/actix.png">
27 <style>
28 /* Google fonts with a backup alternative */
29 @import url('https://fonts.googleapis.com/css2?family=Ubuntu:wght@400;500;700&display=swap');
30 * {
31 font-family: 'Ubuntu', 'PT Serif', sans-serif;
32 }
33 img {
34 display: block;
35 margin-left: auto;
36 margin-right: auto;
37 }
38
39 :is(h1, h2, h3, h4, h5, h6) {
40 text-align: center;
41 color: #F0F0F0;
42 }
43
44 button {
45 width: 100px;
46 margin: 0 auto;
47 display: block;
48 }
49
50 body {
51 background-color: #151515;
52 }
53 </style>
54 <noscript>
55 <style>
56 body {
57 width: 100%;
58 height: 100%;
59 overflow: hidden;
60 }
61 </style>
62 <div style="position: fixed; text-align:center; height: 100%; width: 100%; background-color: #151515">
63 <h2 style="margin-top:5%">This page requires JavaScript
64 to be enabled.
65 <br><br>
66 Please refer <a href="https://www.enable-javascript.com/">enable-javascript</a> for how to.
67 </h2>
68 <form>
69 <button type="submit" onClick="<meta httpEquiv='refresh' content='0'>">RETRY</button>
70 </form>
71 </div>
72 </noscript>
73</head>
74<body>
75<h2 style="margin-top:5%">{{ reason }}</h2>
76<h3>Authentication doesn't last forever ¯\_(ツ)_/¯ </h3>
77<p>
78 <img src="https://thevickypedia.github.io/open-source/images/gif/shattered_fusion.gif"
79 onerror="this.src='https://vigneshrao.com/open-source/images/gif/shattered_fusion.gif'"
80 width="200" height="200" alt="Image" class="center">
81</p>
82<button style="text-align:center" onClick="window.location.href = '/';">LOGIN</button>
83<br>
84<button style="text-align:center" onClick="alert('Forgot Password?\n\nRelax and try to remember your password.');">HELP
85</button>
86<h4>Click <a href="https://vigneshrao.com/contact">HERE</a> to reach out.</h4>
87</body>
88<!-- control the behavior of the browser's navigation without triggering a full page reload -->
89<script>
90 document.addEventListener('DOMContentLoaded', function() {
91 history.pushState(null, document.title, location.href);
92 window.addEventListener('popstate', function (event) {
93 history.pushState(null, document.title, location.href);
94 });
95 });
96</script>
97</html>
98"###.to_string()
99}