reorganized
i believe everything works
0
apps/certbot/.gitkeep
Normal file
0
apps/certbot/conf/.gitkeep
Normal file
0
apps/certbot/www/.gitkeep
Normal file
1
apps/dir2cast
Submodule
0
apps/filebrowser/.gitkeep
Normal file
4
apps/filebrowser/Dockerfile
Normal file
@@ -0,0 +1,4 @@
|
||||
FROM filebrowser/filebrowser
|
||||
COPY docker-entrypoint.sh /usr/local/bin
|
||||
RUN ln -s /usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh
|
||||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||
39
apps/filebrowser/docker-entrypoint.sh
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/bin/sh
|
||||
USERS_DIR=/srv/filebrowser/files/users/
|
||||
|
||||
echo "Initializing container"
|
||||
/filebrowser config init
|
||||
/filebrowser config set --auth.method=$AUTH_METHOD --auth.header=$AUTH_HEADER
|
||||
|
||||
mkdir -p $USERS_DIR
|
||||
|
||||
|
||||
USER=anthonyscorrea@gmail.com
|
||||
/filebrowser users add $USER "" --perm.admin
|
||||
/filebrowser users update $USER --scope "users/$USER"
|
||||
mkdir -p $USERS_DIR$USER
|
||||
ln -s /srv/foundry/Data/modules $USERS_DIR$USER/foundry-modules
|
||||
ln -s /srv/foundry/Data/worlds $USERS_DIR$USER/foundry-worlds
|
||||
ln -s /srv/foundry/Data/systems $USERS_DIR$USER/foundry-systems
|
||||
ln -s /srv/metube $USERS_DIR$USER/metube
|
||||
ln -s /srv/foundry/ $USERS_DIR$USER/foundry
|
||||
|
||||
USER=bcrase@gmail.com
|
||||
/filebrowser users add $USER ""
|
||||
/filebrowser users update $USER --scope "users/$USER"
|
||||
mkdir -p $USERS_DIR$USER
|
||||
ln -s /srv/foundry/Data/worlds $USERS_DIR$USER/foundry-worlds
|
||||
ln -s /srv/metube $USERS_DIR$USER/metube
|
||||
|
||||
USER=acorre20@gmail.com
|
||||
/filebrowser users add $USER ""
|
||||
/filebrowser users update $USER --scope "users/$USER"
|
||||
mkdir -p $USERS_DIR$USER
|
||||
ln -s /srv/foundry/Data/worlds $USERS_DIR$USER/foundry-worlds
|
||||
|
||||
/filebrowser users add $USER ""
|
||||
/filebrowser users update $USER --scope "users/$USER"
|
||||
mkdir -p $USERS_DIR$USER
|
||||
|
||||
|
||||
exec "/filebrowser"
|
||||
8
apps/filebrowser/filebrowser.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"port": 80,
|
||||
"baseURL": "/filebrowser",
|
||||
"address": "",
|
||||
"log": "stdout",
|
||||
"database": "/srv/filebrowser/database.db",
|
||||
"root": "/srv/filebrowser/files"
|
||||
}
|
||||
20
apps/filebrowser/filebrowser.nginx.conf
Normal file
@@ -0,0 +1,20 @@
|
||||
location /filebrowser/ {
|
||||
auth_request /vouch/validate;
|
||||
auth_request_set $auth_resp_x_vouch_user $upstream_http_x_vouch_user;
|
||||
proxy_set_header X-Vouch-User $auth_resp_x_vouch_user;
|
||||
add_header X-Vouch-User $auth_resp_x_vouch_user;
|
||||
client_max_body_size 2048m;
|
||||
proxy_read_timeout 86400s;
|
||||
proxy_send_timeout 86400s;
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_set_header X-Forwarded-Server $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_http_version 1.1;
|
||||
proxy_redirect off;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
||||
proxy_pass http://filebrowser:80/filebrowser/;
|
||||
}
|
||||
0
apps/foundry/.gitkeep
Normal file
1
apps/foundry/Dockerfile
Normal file
@@ -0,0 +1 @@
|
||||
FROM felddy/foundryvtt:release
|
||||
0
apps/foundry/container_cache/.gitkeep
Normal file
24
apps/foundry/foundry.nginx.conf
Normal file
@@ -0,0 +1,24 @@
|
||||
location ~ ^/foundry/$ {
|
||||
return 301 /foundry/game/;
|
||||
}
|
||||
|
||||
|
||||
location /foundry/ {
|
||||
auth_request /vouch/validate;
|
||||
auth_request_set $auth_resp_x_vouch_user $upstream_http_x_vouch_user;
|
||||
proxy_set_header X-Vouch-User $auth_resp_x_vouch_user;
|
||||
# Set proxy headers
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
# These are important to support WebSockets
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
# may need to set
|
||||
# auth_request_set $auth_resp_x_vouch_user $upstream_http_x_vouch_user;
|
||||
# in this bock as per https://github.com/vouch/vouch-proxy/issues/26#issuecomment-425215810
|
||||
# set user header (usually an email)
|
||||
proxy_pass http://foundry:30000/foundry/;
|
||||
}
|
||||
|
||||
3
apps/foundry/foundry_secrets_sample.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"foundry_admin_key": ""
|
||||
}
|
||||
21
apps/foundry/options.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"awsConfig": null,
|
||||
"compressStatic": false,
|
||||
"dataPath": "/srv/foundry",
|
||||
"fullscreen": false,
|
||||
"hostname": null,
|
||||
"language": "en.core",
|
||||
"localHostname": null,
|
||||
"passwordSalt": null,
|
||||
"port": 30000,
|
||||
"protocol": null,
|
||||
"proxyPort": 9090,
|
||||
"proxySSL": true,
|
||||
"routePrefix": "foundry",
|
||||
"sslCert": null,
|
||||
"sslKey": null,
|
||||
"updateChannel": "release",
|
||||
"upnp": false,
|
||||
"upnpLeaseDuration": null,
|
||||
"world": null
|
||||
}
|
||||
40
apps/html/01sw.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>Crew of the Kahuna</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,500,500i,600,600i,700,700i,800,800i&display=swap">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Oswald:200,300,400,500,600,700&display=swap">
|
||||
<link rel="stylesheet" href="assets/css/Articles-Cards-images.css">
|
||||
<link rel="stylesheet" href="assets/css/Features-Cards-icons.css">
|
||||
<link rel="stylesheet" href="assets/css/Navigation-Clean.css">
|
||||
<link rel="shortcut icon" type="image/jpg" href="favicon.png"/>
|
||||
</head>
|
||||
|
||||
<body style="background: #b3a48d;">
|
||||
<nav class="navbar navbar-light navbar-expand bg-light">
|
||||
<div class="container"><img src="assets/img/crew-of-the-kahuna-horiz.svg" width="400"></div>
|
||||
</nav>
|
||||
<div class="container-sm">
|
||||
<div class="row">
|
||||
<div class="col p-3">
|
||||
<div class="card"><img class="card-img-top w-100 d-block fit-cover" style="height: 200px;" src="assets/img/itunes_image-1.jpg">
|
||||
<div class="card-body p-4">
|
||||
<div class="list-group"><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/01sw/feed"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-rss" style="width: 32px;height: 32px;">
|
||||
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"></path>
|
||||
<path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1z"></path>
|
||||
</svg><span class="mx-2">Podcast Feed</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/01sw"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-list-ul" style="width: 32px;height: 32px;">
|
||||
<path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"></path>
|
||||
</svg><span class="mx-2">Podcast Episode List</span></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
19
apps/html/50x.html
Normal file
@@ -0,0 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Error</title>
|
||||
<style>
|
||||
html { color-scheme: light dark; }
|
||||
body { width: 35em; margin: 0 auto;
|
||||
font-family: Tahoma, Verdana, Arial, sans-serif; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>An error occurred.</h1>
|
||||
<p>Sorry, the page you are looking for is currently unavailable.<br/>
|
||||
Please try again later.</p>
|
||||
<p>If you are the system administrator of this resource then you should check
|
||||
the error log for details.</p>
|
||||
<p><em>Faithfully yours, nginx.</em></p>
|
||||
</body>
|
||||
</html>
|
||||
6
apps/html/assets/bootstrap/css/bootstrap.min.css
vendored
Normal file
6
apps/html/assets/bootstrap/js/bootstrap.min.js
vendored
Normal file
4
apps/html/assets/css/Articles-Cards-images.css
Normal file
@@ -0,0 +1,4 @@
|
||||
.fit-cover {
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
57
apps/html/assets/css/Features-Cards-icons.css
Normal file
@@ -0,0 +1,57 @@
|
||||
.bs-icon {
|
||||
--bs-icon-size: .75rem;
|
||||
display: flex;
|
||||
flex-shrink: 0;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: var(--bs-icon-size);
|
||||
width: calc(var(--bs-icon-size) * 2);
|
||||
height: calc(var(--bs-icon-size) * 2);
|
||||
color: var(--bs-primary);
|
||||
}
|
||||
|
||||
.bs-icon-xs {
|
||||
--bs-icon-size: 1rem;
|
||||
width: calc(var(--bs-icon-size) * 1.5);
|
||||
height: calc(var(--bs-icon-size) * 1.5);
|
||||
}
|
||||
|
||||
.bs-icon-sm {
|
||||
--bs-icon-size: 1rem;
|
||||
}
|
||||
|
||||
.bs-icon-md {
|
||||
--bs-icon-size: 1.5rem;
|
||||
}
|
||||
|
||||
.bs-icon-lg {
|
||||
--bs-icon-size: 2rem;
|
||||
}
|
||||
|
||||
.bs-icon-xl {
|
||||
--bs-icon-size: 2.5rem;
|
||||
}
|
||||
|
||||
.bs-icon.bs-icon-primary {
|
||||
color: var(--bs-white);
|
||||
background: var(--bs-primary);
|
||||
}
|
||||
|
||||
.bs-icon.bs-icon-primary-light {
|
||||
color: var(--bs-primary);
|
||||
background: rgba(var(--bs-primary-rgb), .2);
|
||||
}
|
||||
|
||||
.bs-icon.bs-icon-semi-white {
|
||||
color: var(--bs-primary);
|
||||
background: rgba(255, 255, 255, .5);
|
||||
}
|
||||
|
||||
.bs-icon.bs-icon-rounded {
|
||||
border-radius: .5rem;
|
||||
}
|
||||
|
||||
.bs-icon.bs-icon-circle {
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
77
apps/html/assets/css/Navigation-Clean.css
Normal file
@@ -0,0 +1,77 @@
|
||||
.navigation-clean {
|
||||
background: #fff;
|
||||
padding-top: .75rem;
|
||||
padding-bottom: .75rem;
|
||||
color: #333;
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
@media (min-width:768px) {
|
||||
.navigation-clean {
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.navigation-clean .navbar-brand {
|
||||
font-weight: bold;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.navigation-clean .navbar-brand:hover {
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.navigation-clean .navbar-toggler {
|
||||
border-color: #ddd;
|
||||
}
|
||||
|
||||
.navigation-clean .navbar-toggler:hover, .navigation-clean .navbar-toggler:focus {
|
||||
background: none;
|
||||
}
|
||||
|
||||
.navigation-clean .navbar-toggler {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
.navigation-clean.navbar-light .navbar-nav .nav-link.active, .navigation-clean.navbar-light .navbar-nav .nav-link.active:focus, .navigation-clean.navbar-light .navbar-nav .nav-link.active:hover {
|
||||
color: #8f8f8f;
|
||||
box-shadow: none;
|
||||
background: none;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.navigation-clean.navbar .navbar-nav .nav-link {
|
||||
padding-left: 18px;
|
||||
padding-right: 18px;
|
||||
}
|
||||
|
||||
.navigation-clean.navbar-light .navbar-nav .nav-link {
|
||||
color: #465765;
|
||||
}
|
||||
|
||||
.navigation-clean.navbar-light .navbar-nav .nav-link:focus, .navigation-clean.navbar-light .navbar-nav .nav-link:hover {
|
||||
color: #37434d !important;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.navigation-clean .navbar-nav > li > .dropdown-menu {
|
||||
margin-top: -5px;
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.navigation-clean .dropdown-menu .dropdown-item:focus, .navigation-clean .dropdown-menu .dropdown-item {
|
||||
line-height: 2;
|
||||
color: #37434d;
|
||||
}
|
||||
|
||||
.navigation-clean .dropdown-menu .dropdown-item:focus, .navigation-clean .dropdown-menu .dropdown-item:hover {
|
||||
background: #eee;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
0
apps/html/assets/css/styles.css
Normal file
65
apps/html/assets/img/crew-of-the-kahuna-horiz.svg
Normal file
@@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 1894 155" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g transform="matrix(1.5217,0,0,1.5217,-381.372,-182.583)">
|
||||
<g transform="matrix(1.40878,0,0,1.3437,427.462,-195.111)">
|
||||
<g transform="matrix(111.684,0,0,111.684,248.277,310)">
|
||||
<path d="M0.729,-0L0.554,-0C0.498,-0 0.443,-0.028 0.388,-0.083L0.271,-0.2L0.271,-0L0.021,-0L0.021,-0.667L0.271,-0.667L0.271,-0.448L0.424,-0.667L0.729,-0.667L0.486,-0.318L0.586,-0.218C0.592,-0.212 0.606,-0.208 0.626,-0.208L0.729,-0.208L0.729,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(111.684,0,0,111.684,332.039,310)">
|
||||
<path d="M0.771,-0L0.513,-0L0.491,-0.083L0.301,-0.083L0.279,-0L0.021,-0L0.196,-0.667L0.596,-0.667L0.771,-0ZM0.447,-0.25L0.396,-0.444L0.345,-0.25L0.447,-0.25Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(111.684,0,0,111.684,420.437,310)">
|
||||
<path d="M0.729,-0L0.479,-0L0.479,-0.246L0.271,-0.246L0.271,-0L0.021,-0L0.021,-0.667L0.271,-0.667L0.271,-0.421L0.479,-0.421L0.479,-0.667L0.729,-0.667L0.729,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(111.684,0,0,111.684,504.2,310)">
|
||||
<path d="M0.729,-0.333C0.729,-0.24 0.693,-0.161 0.621,-0.095C0.551,-0.032 0.469,-0 0.375,-0C0.281,-0 0.199,-0.032 0.129,-0.095C0.057,-0.161 0.021,-0.24 0.021,-0.333L0.021,-0.667L0.246,-0.667L0.246,-0.333C0.246,-0.3 0.258,-0.27 0.284,-0.246C0.31,-0.221 0.34,-0.208 0.375,-0.208C0.409,-0.208 0.439,-0.221 0.465,-0.246C0.491,-0.27 0.504,-0.3 0.504,-0.333L0.504,-0.667L0.729,-0.667L0.729,-0.333Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(111.684,0,0,111.684,587.963,310)">
|
||||
<path d="M0.729,-0L0.479,-0L0.271,-0.267L0.271,-0L0.021,-0L0.021,-0.667L0.271,-0.667L0.479,-0.4L0.479,-0.667L0.729,-0.667L0.729,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(111.684,0,0,111.684,671.726,310)">
|
||||
<path d="M0.771,-0L0.513,-0L0.491,-0.083L0.301,-0.083L0.279,-0L0.021,-0L0.196,-0.667L0.596,-0.667L0.771,-0ZM0.447,-0.25L0.396,-0.444L0.345,-0.25L0.447,-0.25Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.99857,0,0,1.54876,0.767782,-65.8514)">
|
||||
<rect x="704.901" y="120" width="69.099" height="10" style="fill:rgb(96,40,21);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.570335,0,0,0.438706,299.054,121.033)">
|
||||
<g transform="matrix(55.8419,0,0,55.8419,710,180)">
|
||||
<path d="M0.729,-0.458L0.5,-0.458L0.5,-0L0.25,-0L0.25,-0.458L0.021,-0.458L0.021,-0.667L0.729,-0.667L0.729,-0.458Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(55.8419,0,0,55.8419,751.881,180)">
|
||||
<path d="M0.729,-0L0.479,-0L0.479,-0.246L0.271,-0.246L0.271,-0L0.021,-0L0.021,-0.667L0.271,-0.667L0.271,-0.421L0.479,-0.421L0.479,-0.667L0.729,-0.667L0.729,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(55.8419,0,0,55.8419,793.763,180)">
|
||||
<path d="M0.688,-0L0.021,-0L0.021,-0.667L0.688,-0.667L0.688,-0.458L0.271,-0.458L0.271,-0.421L0.521,-0.421L0.521,-0.246L0.271,-0.246L0.271,-0.208L0.688,-0.208L0.688,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.872311,0,0,0.862479,84.2969,19.2979)">
|
||||
<g transform="matrix(55.8419,0,0,55.8419,710,180)">
|
||||
<path d="M0.729,-0.333C0.729,-0.24 0.693,-0.161 0.621,-0.095C0.551,-0.032 0.469,-0 0.375,-0C0.281,-0 0.199,-0.032 0.129,-0.095C0.057,-0.161 0.021,-0.24 0.021,-0.333C0.021,-0.426 0.057,-0.506 0.129,-0.572C0.199,-0.635 0.281,-0.667 0.375,-0.667C0.469,-0.667 0.551,-0.635 0.621,-0.572C0.693,-0.506 0.729,-0.426 0.729,-0.333ZM0.504,-0.333C0.504,-0.367 0.491,-0.396 0.465,-0.421C0.439,-0.446 0.409,-0.458 0.375,-0.458C0.34,-0.458 0.31,-0.446 0.284,-0.421C0.258,-0.397 0.246,-0.367 0.246,-0.333C0.246,-0.3 0.258,-0.27 0.284,-0.246C0.31,-0.221 0.34,-0.208 0.375,-0.208C0.41,-0.208 0.44,-0.221 0.465,-0.246C0.491,-0.271 0.504,-0.3 0.504,-0.333Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(55.8419,0,0,55.8419,751.881,180)">
|
||||
<path d="M0.688,-0.458L0.271,-0.458L0.271,-0.421L0.521,-0.421L0.521,-0.246L0.271,-0.246L0.271,-0L0.021,-0L0.021,-0.667L0.688,-0.667L0.688,-0.458Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(0.99857,0,0,1.54876,0.767782,18.661)">
|
||||
<rect x="704.901" y="120" width="69.099" height="10" style="fill:rgb(96,40,21);"/>
|
||||
</g>
|
||||
<g transform="matrix(1.00601,0,0,1.07473,-3.82916,-16.4396)">
|
||||
<g transform="matrix(139.605,0,0,139.605,250,220)">
|
||||
<path d="M0.646,-0L0.375,-0C0.281,-0 0.199,-0.032 0.129,-0.095C0.057,-0.161 0.021,-0.24 0.021,-0.333C0.021,-0.426 0.057,-0.506 0.129,-0.572C0.199,-0.635 0.281,-0.667 0.375,-0.667L0.646,-0.667L0.646,-0.458L0.375,-0.458C0.341,-0.458 0.311,-0.446 0.285,-0.421C0.259,-0.396 0.246,-0.367 0.246,-0.333C0.246,-0.3 0.258,-0.27 0.284,-0.246C0.31,-0.221 0.34,-0.208 0.375,-0.208L0.646,-0.208L0.646,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(139.605,0,0,139.605,343.047,220)">
|
||||
<path d="M0.771,-0L0.554,-0C0.498,-0 0.443,-0.028 0.388,-0.083L0.271,-0.2L0.271,-0L0.021,-0L0.021,-0.667L0.496,-0.667C0.557,-0.667 0.611,-0.644 0.659,-0.6C0.706,-0.555 0.729,-0.502 0.729,-0.442C0.729,-0.397 0.716,-0.355 0.689,-0.316C0.662,-0.278 0.628,-0.251 0.586,-0.235C0.596,-0.217 0.611,-0.208 0.629,-0.208L0.771,-0.208L0.771,-0ZM0.479,-0.433C0.479,-0.446 0.474,-0.458 0.464,-0.468C0.454,-0.478 0.443,-0.483 0.429,-0.483L0.271,-0.483L0.271,-0.383L0.429,-0.383C0.443,-0.383 0.454,-0.388 0.464,-0.398C0.474,-0.409 0.479,-0.42 0.479,-0.433Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(139.605,0,0,139.605,453.545,220)">
|
||||
<path d="M0.688,-0L0.021,-0L0.021,-0.667L0.688,-0.667L0.688,-0.458L0.271,-0.458L0.271,-0.421L0.521,-0.421L0.521,-0.246L0.271,-0.246L0.271,-0.208L0.688,-0.208L0.688,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
<g transform="matrix(139.605,0,0,139.605,552.454,220)">
|
||||
<path d="M1.054,-0.667L0.879,-0L0.596,-0L0.538,-0.223L0.479,-0L0.196,-0L0.021,-0.667L0.279,-0.667L0.337,-0.444L0.396,-0.667L0.679,-0.667L0.737,-0.444L0.796,-0.667L1.054,-0.667Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.0 KiB |
BIN
apps/html/assets/img/discord-512.webp
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 21 KiB |
BIN
apps/html/assets/img/favicon.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
apps/html/assets/img/fvtt-solid-512.png
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
apps/html/assets/img/itunes_image-1.jpg
Normal file
|
After Width: | Height: | Size: 296 KiB |
BIN
apps/html/assets/img/itunes_image-2.jpg
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
apps/html/assets/img/itunes_image.jpg
Normal file
|
After Width: | Height: | Size: 290 KiB |
BIN
apps/html/assets/img/logo-blue-white.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
apps/html/assets/img/podcast-art.jpg
Normal file
|
After Width: | Height: | Size: 228 KiB |
116
apps/html/index.html
Normal file
@@ -0,0 +1,116 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>Crew of the Kahuna</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,500,500i,600,600i,700,700i,800,800i&display=swap">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Oswald:200,300,400,500,600,700&display=swap">
|
||||
<link rel="stylesheet" href="assets/css/Articles-Cards-images.css">
|
||||
<link rel="stylesheet" href="assets/css/Features-Cards-icons.css">
|
||||
<link rel="stylesheet" href="assets/css/Navigation-Clean.css">
|
||||
<link rel="shortcut icon" type="image/jpg" href="favicon.png"/>
|
||||
</head>
|
||||
|
||||
<body style="background: #b3a48d;">
|
||||
<nav class="navbar navbar-light navbar-expand bg-light">
|
||||
<div class="container"><img src="assets/img/crew-of-the-kahuna-horiz.svg" width="400"></div>
|
||||
</nav>
|
||||
<div class="container-sm">
|
||||
<div class="row">
|
||||
<div class="col p-3">
|
||||
<div class="card">
|
||||
<div class="card-header d-lg-flex align-items-lg-center">
|
||||
<h5 class="text-uppercase" style="font-family: Oswald, sans-serif;">Links</h5>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
<div class="list-group list-group-flush"><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/foundry"><img src="assets/img/fvtt-solid-512.png" width="32" height="32"><span class="mx-2">Foundry</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="https://discord.com/channels/793158154871111681/1090411116003336212"><img src="assets/img/discord-512.webp" width="32" height="32"><span class="mx-2">Discord</span></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col p-3">
|
||||
<div class="card">
|
||||
<div class="card-header d-lg-flex align-items-lg-center">
|
||||
<h5 class="text-uppercase" style="font-family: Oswald, sans-serif;">Current Campaign</h5>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
<div class="list-group list-group-flush">
|
||||
<div class="accordion accordion-flush" role="tablist" id="accordion-1">
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" role="tab"><button class="accordion-button p-2" type="button" data-bs-toggle="collapse" data-bs-target="#accordion-1 .item-1" aria-expanded="true" aria-controls="accordion-1 .item-1"><a class="d-flex align-items-center text-decoration-none" href="#">
|
||||
<div class="d-inline-block rounded-3" style="background: url("assets/img/itunes_image-2.jpg") center / cover;height: 128px;width: 128px;"></div><span class="text-dark mx-3" style="font-family: 'Open Sans', sans-serif;">Blades in the Dark</span>
|
||||
</a></button></h2>
|
||||
<div class="accordion-collapse collapse show item-1" role="tabpanel" data-bs-parent="#accordion-1">
|
||||
<div class="accordion-body">
|
||||
<div class="list-group"><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/03bitd/feed"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-rss" style="width: 32px;height: 32px;">
|
||||
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"></path>
|
||||
<path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1z"></path>
|
||||
</svg><span class="mx-2">Podcast Feed</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/03bitd"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-list-ul" style="width: 32px;height: 32px;">
|
||||
<path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"></path>
|
||||
</svg><span class="mx-2">Podcast Episode List</span></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col p-3">
|
||||
<div class="card">
|
||||
<div class="card-header d-lg-flex align-items-lg-center">
|
||||
<h5 class="text-uppercase" style="font-family: Oswald, sans-serif;">Previous Campaigns</h5>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
<div class="list-group list-group-flush">
|
||||
<div class="accordion accordion-flush" role="tablist" id="accordion-2">
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" role="tab"><button class="accordion-button collapsed p-2" type="button" data-bs-toggle="collapse" data-bs-target="#accordion-2 .item-1" aria-expanded="false" aria-controls="accordion-2 .item-1"><a class="d-flex align-items-center text-decoration-none" href="/podcast/">
|
||||
<div class="d-inline-block rounded-3" style="background: url("assets/img/itunes_image.jpg") center / cover;height: 128px;width: 128px;"></div><span class="text-dark mx-3" style="font-family: 'Open Sans', sans-serif;">D&D vs. Rick and Morty</span>
|
||||
</a></button></h2>
|
||||
<div class="accordion-collapse collapse item-1" role="tabpanel" data-bs-parent="#accordion-2">
|
||||
<div class="accordion-body">
|
||||
<div class="list-group"><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/02ram/feed"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-rss" style="width: 32px;height: 32px;">
|
||||
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"></path>
|
||||
<path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1z"></path>
|
||||
</svg><span class="mx-2">Podcast Feed</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/02ram"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-list-ul" style="width: 32px;height: 32px;">
|
||||
<path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"></path>
|
||||
</svg><span class="mx-2">Podcast Episode List</span></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" role="tab"><button class="accordion-button collapsed p-2" type="button" data-bs-toggle="collapse" data-bs-target="#accordion-2 .item-2" aria-expanded="false" aria-controls="accordion-2 .item-2"><a class="d-flex align-items-center text-decoration-none" href="#">
|
||||
<div class="d-inline-block rounded-3" style="background: url("assets/img/itunes_image-1.jpg") center / cover;height: 128px;width: 128px;"></div><span class="text-dark mx-3" style="font-family: 'Open Sans', sans-serif;">Crew of the Kahuna</span>
|
||||
</a></button></h2>
|
||||
<div class="accordion-collapse collapse item-2" role="tabpanel" data-bs-parent="#accordion-2">
|
||||
<div class="accordion-body">
|
||||
<div class="list-group"><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="https://kanka.io/en/campaign/79412"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-journal" style="width: 32px;height: 32px;">
|
||||
<path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z"></path>
|
||||
<path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z"></path>
|
||||
</svg><span class="mx-2">Kanka</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/01sw/feed"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-rss" style="width: 32px;height: 32px;">
|
||||
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"></path>
|
||||
<path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1z"></path>
|
||||
</svg><span class="mx-2">Podcast Feed</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/01sw"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-list-ul" style="width: 32px;height: 32px;">
|
||||
<path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"></path>
|
||||
</svg><span class="mx-2">Podcast Episode List</span></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
7
apps/metube/metube.nginx.conf
Normal file
@@ -0,0 +1,7 @@
|
||||
location /metube/ {
|
||||
proxy_pass http://metube:8081;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
}
|
||||
35
apps/nginx/conf.d/default.conf
Normal file
@@ -0,0 +1,35 @@
|
||||
server {
|
||||
server_name _;
|
||||
# you can serve any number of redirects from here...
|
||||
listen 80;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name rpg.ascorrea.com;
|
||||
ssl_certificate /etc/nginx/ssl/live/rpg.ascorrea.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/nginx/ssl/live/rpg.ascorrea.com/privkey.pem;
|
||||
|
||||
ssl_stapling on;
|
||||
ssl_stapling_verify on;
|
||||
ssl_trusted_certificate /etc/nginx/ssl/live/rpg.ascorrea.com/fullchain.pem;
|
||||
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers HIGH:!aNULL:!MD5;
|
||||
|
||||
# include applications/vouch.conf;
|
||||
|
||||
root /var/www/html/;
|
||||
|
||||
error_page 401 = @error401;
|
||||
|
||||
location / {
|
||||
# This application is simply proxy-passed without any authentication
|
||||
index index.html index.htm;
|
||||
|
||||
}
|
||||
|
||||
include /etc/nginx/conf.d/apps-enabled/*.conf;
|
||||
|
||||
}
|
||||
15
apps/nginx/conf.d/swrpg.ascorrea.com.conf
Normal file
@@ -0,0 +1,15 @@
|
||||
server {
|
||||
server_name swrpg.ascorrea.com; # you can serve any number of redirects from here...
|
||||
listen 80;
|
||||
return 301 https://rpg.ascorrea.com$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
server_name swrpg.ascorrea.com; # you can serve any number of redirects from here...
|
||||
listen 443;
|
||||
|
||||
ssl_certificate /etc/nginx/ssl/live/swrpg.ascorrea.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/nginx/ssl/live/swrpg.ascorrea.com/privkey.pem;
|
||||
|
||||
return 301 https://rpg.ascorrea.com$request_uri;
|
||||
}
|
||||
32
apps/nginx/nginx.conf
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
user nginx;
|
||||
worker_processes auto;
|
||||
|
||||
error_log /var/log/nginx/error.log notice;
|
||||
pid /var/run/nginx.pid;
|
||||
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||
'$status $body_bytes_sent "$http_referer" '
|
||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||
|
||||
access_log /var/log/nginx/access.log main;
|
||||
|
||||
sendfile on;
|
||||
#tcp_nopush on;
|
||||
|
||||
keepalive_timeout 65;
|
||||
|
||||
#gzip on;
|
||||
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
}
|
||||
1
apps/podcast/01sw/description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Mack Skyblade, Sarn Turbo, RX-78 and Ghost participate in grim and gritty adventures in places where morality is gray and nothing is certain
|
||||
8
apps/podcast/01sw/dir2cast.ini
Normal file
@@ -0,0 +1,8 @@
|
||||
; Configuration for dir2cast by Ben XO. http://www.ben-xo.com/dir2cast
|
||||
; https://github.com/ben-xo/dir2cast/blob/main/dir2cast.ini
|
||||
|
||||
; *** INFORMATION ABOUT YOUR PODCAST - you SHOULD set this how you like it ***
|
||||
; The title of the feed.
|
||||
; This defaults to the name of the directory you're casting
|
||||
TITLE = "Kwave: Edge of the Empire"
|
||||
|
||||
BIN
apps/podcast/01sw/itunes_image.jpg
Normal file
|
After Width: | Height: | Size: 131 KiB |
1
apps/podcast/01sw/itunes_subtitle.txt
Normal file
@@ -0,0 +1 @@
|
||||
A FFG Star Wars RPG Story
|
||||
8
apps/podcast/02ram/dir2cast.ini
Normal file
@@ -0,0 +1,8 @@
|
||||
; Configuration for dir2cast by Ben XO. http://www.ben-xo.com/dir2cast
|
||||
; https://github.com/ben-xo/dir2cast/blob/main/dir2cast.ini
|
||||
|
||||
; *** INFORMATION ABOUT YOUR PODCAST - you SHOULD set this how you like it ***
|
||||
; The title of the feed.
|
||||
; This defaults to the name of the directory you're casting
|
||||
TITLE = "Kwave: D&D vs. Rick and Morty"
|
||||
|
||||
BIN
apps/podcast/02ram/itunes_image.jpg
Normal file
|
After Width: | Height: | Size: 290 KiB |
8
apps/podcast/03bitd/dir2cast.ini
Normal file
@@ -0,0 +1,8 @@
|
||||
; Configuration for dir2cast by Ben XO. http://www.ben-xo.com/dir2cast
|
||||
; https://github.com/ben-xo/dir2cast/blob/main/dir2cast.ini
|
||||
|
||||
; *** INFORMATION ABOUT YOUR PODCAST - you SHOULD set this how you like it ***
|
||||
; The title of the feed.
|
||||
; This defaults to the name of the directory you're casting
|
||||
TITLE = "Kwave: Blades in the Dark"
|
||||
|
||||
BIN
apps/podcast/03bitd/itunes_image.jpg
Normal file
|
After Width: | Height: | Size: 654 KiB |
54
apps/podcast/dir2cast.ini
Normal file
@@ -0,0 +1,54 @@
|
||||
; Configuration for dir2cast by Ben XO. http://www.ben-xo.com/dir2cast
|
||||
; https://github.com/ben-xo/dir2cast/blob/main/dir2cast.ini
|
||||
|
||||
|
||||
; *** INFORMATION ABOUT YOUR PODCAST - you SHOULD set this how you like it ***
|
||||
|
||||
; The copyright notice of the feed
|
||||
; This defaults to this year (e.g. '2008')
|
||||
; The string %YEAR% will be replaced with the current year.
|
||||
COPYRIGHT = "Anthony Correa (%YEAR%)"
|
||||
|
||||
; Webmaster of the feed. This must be an email address,
|
||||
WEBMASTER = "a@correa.co (Anthony Correa)"
|
||||
|
||||
; Name of the Owner of the podcast for iTunes
|
||||
; This defaults to empty
|
||||
ITUNES_OWNER_NAME = "Anthony Correa"
|
||||
|
||||
; Email of the Author of the podcast for iTunes
|
||||
; This defaults to empty
|
||||
;ITUNES_OWNER_EMAIL = "me-dir2cast@ben-xo.com"
|
||||
|
||||
; URL of the feed's home page (this is NOT where the MP3s are! It is
|
||||
; just the link to your "about" page).
|
||||
; This defaults to the URL of the script or http://www.example.com/
|
||||
LINK = "http://rpg.ascorrea.com/podcast"
|
||||
|
||||
; The Author of the podcast for iTunes
|
||||
; This defaults to whatever WEBMASTER is set to
|
||||
ITUNES_AUTHOR = "Anthony Correa"
|
||||
ITUNES_OWNER_EMAIL = "a@correa.co"
|
||||
|
||||
; Categories for iTunes
|
||||
;
|
||||
; You may add as many as you like from the category list at
|
||||
; https://help.apple.com/itc/podcasts_connect/#/itc9267a2f12
|
||||
;
|
||||
; Here is an example which means "Both the 'Music' category and
|
||||
; the 'Gadgets' subcategory of 'Technology'
|
||||
;
|
||||
; Please note that the entire setting must have double quotes ("")
|
||||
; like in the example, otherwise categories with '&' in the name won't work
|
||||
ITUNES_CATEGORIES = "Fiction, Comedy, Leisure, Games"
|
||||
; Whether or not the feed contains explicit content.
|
||||
ITUNES_EXPLICIT = "yes"
|
||||
|
||||
; *** CHECK THESE ARE OK. ***
|
||||
|
||||
; Language of the feed
|
||||
LANGUAGE = "en-us"
|
||||
|
||||
; Number of items to show in the feed
|
||||
; This defaults to 10
|
||||
ITEM_COUNT = 500
|
||||
57
apps/podcast/podcast.nginx.conf
Normal file
@@ -0,0 +1,57 @@
|
||||
location ~ ^/podcast/feed.xml$ {
|
||||
return 301 /podcast/01sw;
|
||||
}
|
||||
|
||||
#/podcast/media/2022-03-09-ep42.mp3
|
||||
location ~* /podcast/media/(?:.*)-(?<season_2>s02)?(?<episode_label>ep\d+)(\.mp3) {
|
||||
if ($season_2 = "s02") {
|
||||
return 301 /dir2cast/02ram/$season_2$episode_label.mp3;
|
||||
}
|
||||
|
||||
return 301 /dir2cast/01sw/$episode_label.mp3;
|
||||
}
|
||||
|
||||
#location /podcast/dir2cast.php {
|
||||
# rewrite /podcast/(dir2cast.php) /dir2cast/$1;
|
||||
#}
|
||||
|
||||
location /podcast {
|
||||
return 301 /podcast/;
|
||||
}
|
||||
|
||||
|
||||
location /podcast/ {
|
||||
alias /var/www/podcast/;
|
||||
autoindex on;
|
||||
|
||||
if ( $arg_name) {
|
||||
return 301 /podcast/media/$arg_name;
|
||||
}
|
||||
|
||||
location ~* (/podcast/)(?<dir>.*)/feed {
|
||||
|
||||
rewrite /podcast/ /dir2cast/dir2cast.php?dir=podcast/$dir;
|
||||
}
|
||||
|
||||
location ~ (\.php|\.ini|\.conf)$ {
|
||||
return 403;
|
||||
}
|
||||
}
|
||||
|
||||
location /dir2cast/ {
|
||||
alias /var/www/dir2cast/;
|
||||
|
||||
location ~ ^/dir2cast/dir2cast.php {
|
||||
# return 501;
|
||||
include fastcgi_params;
|
||||
fastcgi_pass php:9000;
|
||||
add_header x-test "$args" always;
|
||||
fastcgi_param SCRIPT_FILENAME $request_filename;
|
||||
}
|
||||
|
||||
location ~ (\.php|\.ini)$ {
|
||||
return 403;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
1
apps/rolladvantage
Submodule
57
apps/vouch/config.sample.yml
Normal file
@@ -0,0 +1,57 @@
|
||||
# https://github.com/vouch/vouch-proxy/blob/master/config/config.yml_example
|
||||
|
||||
vouch:
|
||||
# logLevel: debug # VOUCH_LOGLEVEL
|
||||
logLevel: debug
|
||||
|
||||
# testing: false - VOUCH_TESTING
|
||||
# force all 302 redirects to be rendered as a webpage with a link
|
||||
# if you're having problems, turn on testing
|
||||
# testing: true
|
||||
|
||||
listen: 0.0.0.0 # VOUCH_LISTEN
|
||||
port: 9090 # VOUCH_PORT
|
||||
|
||||
# document_root - VOUCH_DOCUMENT_ROOT
|
||||
# see README for `Vouch Proxy "in a path"` - https://github.com/vouch/vouch-proxy#vouch-proxy-in-a-path
|
||||
document_root: /vouch
|
||||
|
||||
# domains - VOUCH_DOMAINS
|
||||
# each of these domains must serve the url https://vouch.$domains[0] https://vouch.$domains[1] ...
|
||||
# so that the cookie which stores the JWT can be set in the relevant domain
|
||||
# you usually *don't* want to list every individual website that will be protected
|
||||
# if you have siteA.internal.yourdomain.com and siteB.internal.yourdomain.com
|
||||
# then your domains should be set as yourdomain.com or perhaps internal.yourdomain.com
|
||||
# usually you'll just have one.
|
||||
# Comment `domains:` out if you set allowAllUser:true
|
||||
domains:
|
||||
- rpg.ascorrea.com
|
||||
- localhost
|
||||
|
||||
# whiteList (optional) allows only the listed usernames - VOUCH_WHITELIST
|
||||
# usernames are usually email addresses (google, most oidc providers) or login/username for github and github enterprise
|
||||
whiteList:
|
||||
- anthonyscorrea@gmail.com
|
||||
- anthony@correa.co
|
||||
- bridgetcrase@gmail.com
|
||||
- brandonmboo@gmail.com
|
||||
- acorre20@gmail.com
|
||||
|
||||
oauth:
|
||||
|
||||
# Google
|
||||
provider: google
|
||||
# create new credentials at:
|
||||
# https://console.developers.google.com/apis/credentials
|
||||
client_id: ...
|
||||
client_secret: ...
|
||||
callback_urls:
|
||||
- https://rpg.ascorrea.com/vouch/auth
|
||||
- https://localhost/vouch/auth
|
||||
|
||||
# preferredDomain: yourdomain.com
|
||||
# optionally set scopes, defaults to 'email'
|
||||
# https://developers.google.com/identity/protocols/googlescopes#google_sign-in
|
||||
# scopes:
|
||||
# - email
|
||||
|
||||
22
apps/vouch/vouch.nginx.conf
Normal file
@@ -0,0 +1,22 @@
|
||||
# https://github.com/vouch/vouch-proxy#vouch-proxy-in-a-path
|
||||
|
||||
location /vouch {
|
||||
proxy_pass http://vouch:9090/vouch; # must not! have a slash at the end
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_pass_request_body off;
|
||||
proxy_set_header Content-Length "";
|
||||
|
||||
# optionally add X-Vouch-User as returned by Vouch Proxy along with the request
|
||||
auth_request_set $auth_resp_x_vouch_user $upstream_http_x_vouch_user;
|
||||
|
||||
# these return values are used by the @error401 call
|
||||
auth_request_set $auth_resp_jwt $upstream_http_x_vouch_jwt;
|
||||
auth_request_set $auth_resp_err $upstream_http_x_vouch_err;
|
||||
auth_request_set $auth_resp_failcount $upstream_http_x_vouch_failcount;
|
||||
}
|
||||
|
||||
|
||||
location @error401 {
|
||||
# redirect to Vouch Proxy for login
|
||||
return 302 https://$host/vouch/login?url=$scheme://$http_host$request_uri&vouch-failcount=$auth_resp_failcount&X-Vouch-Token=$auth_resp_jwt&error=$auth_resp_err;
|
||||
}
|
||||