cytube
This commit is contained in:
BIN
cytube/.DS_Store
vendored
Executable file
BIN
cytube/.DS_Store
vendored
Executable file
Binary file not shown.
1
cytube/cytube-docker
Submodule
1
cytube/cytube-docker
Submodule
Submodule cytube/cytube-docker added at 8593da6b41
50
cytube/own/Dockerfile
Executable file
50
cytube/own/Dockerfile
Executable file
@@ -0,0 +1,50 @@
|
|||||||
|
FROM ubuntu:16.04
|
||||||
|
|
||||||
|
RUN useradd user; \
|
||||||
|
apt update; \
|
||||||
|
apt -y install \
|
||||||
|
build-essential \
|
||||||
|
git \
|
||||||
|
curl \
|
||||||
|
bash \
|
||||||
|
mariadb-server; \
|
||||||
|
curl -sL https://deb.nodesource.com/setup_11.x | bash -; \
|
||||||
|
apt install -y nodejs; \
|
||||||
|
mkdir -p /mnt /opt; \
|
||||||
|
chown -R user /mnt /opt;
|
||||||
|
|
||||||
|
RUN mysqld --socket=/tmp/mysql.sock --pid /tmp/mysql.pid & \
|
||||||
|
mysqldpid="${!}"; \
|
||||||
|
until [ -n "$(ps -C mysqld -o pid= | sed -e 's/^[ ]*//')" ]; do sleep 1; done; \
|
||||||
|
until [ -e /tmp/mysql.sock ]; do sleep 1; done; \
|
||||||
|
ps aux; \
|
||||||
|
echo "GRANT USAGE ON *.* TO cytube3@localhost \
|
||||||
|
IDENTIFIED BY 'super_secure_password'; \
|
||||||
|
GRANT ALL PRIVILEGES ON cytube3.* TO cytube3@localhost; \
|
||||||
|
CREATE DATABASE cytube3;" \
|
||||||
|
| mysql --socket /tmp/mysql.sock -u "root"; \
|
||||||
|
chmod -R 777 /var/lib/mysql; \
|
||||||
|
kill $mysqldpid;
|
||||||
|
|
||||||
|
WORKDIR /opt
|
||||||
|
USER user
|
||||||
|
RUN \
|
||||||
|
git clone -b 3.0 https://github.com/calzoneman/sync; \
|
||||||
|
cd sync; \
|
||||||
|
HOME=/opt npm install;
|
||||||
|
|
||||||
|
RUN echo ' \
|
||||||
|
set -e; \
|
||||||
|
mysqld --socket=/opt/mysql.sock --pid=/opt/mysql.pid & \
|
||||||
|
until test -n $(ps -C mysqld -o pid= | awk '"'"'{print $1}'"'"'); do sleep 1; done; \
|
||||||
|
until test -e /opt/mysql.sock; do sleep 1; done; \
|
||||||
|
if test -e /mnt/cytube.config.yaml; then cp /mnt/cytube.config.yaml ./config.yaml; else cp config.template.yaml /mnt/; exit 1; fi; \
|
||||||
|
HOME=/opt node index.js \
|
||||||
|
' > /opt/entrypoint.sh
|
||||||
|
|
||||||
|
#echo "UPDATE \"users\" SET global_rank=255 WHERE name=\"calzoneman\";" \
|
||||||
|
# | mysql --socket /opt/mysql.sock -ucytube3 -psuper_secure_password cytube3; \
|
||||||
|
|
||||||
|
WORKDIR /opt/sync
|
||||||
|
CMD []
|
||||||
|
ENTRYPOINT ["bash", "/opt/entrypoint.sh"]
|
||||||
23
cytube/own/build_and_run.sh
Executable file
23
cytube/own/build_and_run.sh
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
|
||||||
|
cd "$(dirname "${BASH_SOURCE[0]}")"
|
||||||
|
dir="$(pwd)"
|
||||||
|
|
||||||
|
#if [ ! -e $dir/mnt/proxy ]; then
|
||||||
|
# pushd $GOPATH/src/local/rproxy3
|
||||||
|
# CGO_ENABLED=0 GOOS=linux go build -o "$dir/mnt/proxy" -a -installsuffix cgo
|
||||||
|
# popd
|
||||||
|
#fi
|
||||||
|
|
||||||
|
docker build -t dev:dev .
|
||||||
|
docker run --rm -it \
|
||||||
|
--name cytube \
|
||||||
|
-v $PWD/mnt:/mnt \
|
||||||
|
-v $HOME/Movies:/movies:ro \
|
||||||
|
-p 8080:8080 \
|
||||||
|
-p 8443:8443 \
|
||||||
|
-p 1337:1337 \
|
||||||
|
dev:dev
|
||||||
217
cytube/own/mnt/config.template.yaml
Executable file
217
cytube/own/mnt/config.template.yaml
Executable file
@@ -0,0 +1,217 @@
|
|||||||
|
# MySQL server details
|
||||||
|
# server: domain or IP of MySQL server
|
||||||
|
# database: a MySQL database that the user specified has read/write access to
|
||||||
|
# user: username to authenticate as
|
||||||
|
# password: password for user
|
||||||
|
mysql:
|
||||||
|
server: 'localhost'
|
||||||
|
port: 3306
|
||||||
|
database: 'cytube3'
|
||||||
|
user: 'cytube3'
|
||||||
|
password: ''
|
||||||
|
pool-size: 10
|
||||||
|
|
||||||
|
# Define IPs/ports to listen on
|
||||||
|
# Each entry MUST define ip and port (ip can be '' to bind all available addresses)
|
||||||
|
# Each entry should set http, https, and/or io to true to listen for the corresponding
|
||||||
|
# service on that port. http/io and https/io can be combined, but if http and https
|
||||||
|
# are both specified, only https will be bound to that port.
|
||||||
|
#
|
||||||
|
# If you don't specify a url, the url io.domain:port or https.domain:port will be assumed
|
||||||
|
# for non-ssl and ssl websockets, respectively. You can override this by specifying the
|
||||||
|
# url for a websocket listener.
|
||||||
|
listen:
|
||||||
|
# Default HTTP server - default interface, port 8080
|
||||||
|
- ip: ''
|
||||||
|
port: 8080
|
||||||
|
http: true
|
||||||
|
# Uncomment below to enable HTTPS/SSL websockets
|
||||||
|
# Note that you must also set https->enabled = true in the https definition
|
||||||
|
# - ip: ''
|
||||||
|
# port: 8443
|
||||||
|
# https: true
|
||||||
|
# io: true
|
||||||
|
# Default Socket.IO server - default interface, port 1337
|
||||||
|
- ip: ''
|
||||||
|
port: 1337
|
||||||
|
io: true
|
||||||
|
# Example of how to bind an extra port to HTTP and Socket.IO
|
||||||
|
# - ip: ''
|
||||||
|
# port: 8081
|
||||||
|
# http: true
|
||||||
|
# io: true
|
||||||
|
# url: 'http://my-other-thing.site.com:8081'
|
||||||
|
|
||||||
|
# HTTP server details
|
||||||
|
http:
|
||||||
|
# Even though you may specify multiple ports to listen on for HTTP above,
|
||||||
|
# one port must be specified as default for the purposes of generating
|
||||||
|
# links with the appropriate port
|
||||||
|
default-port: 8080
|
||||||
|
# Specifies the root domain for cookies. If you have multiple domains
|
||||||
|
# e.g. a.example.com and b.example.com, the root domain is example.com
|
||||||
|
root-domain: 'localhost'
|
||||||
|
# Specify alternate domains/hosts that are allowed to set the login cookie
|
||||||
|
# Leave out the http://
|
||||||
|
alt-domains:
|
||||||
|
- '127.0.0.1'
|
||||||
|
# Use express-minify to minify CSS and Javascript
|
||||||
|
minify: false
|
||||||
|
# Max-Age for caching. Value should be an integer in milliseconds or a string accepted by
|
||||||
|
# the `ms` module. Set to 0 to disable caching.
|
||||||
|
max-age: '7d'
|
||||||
|
# Set to false to disable gzip compression
|
||||||
|
gzip: true
|
||||||
|
# Customize the threshold byte size for applying gzip
|
||||||
|
gzip-threshold: 1024
|
||||||
|
# Secret used for signed cookies. Can be anything, but make it unique and hard to guess
|
||||||
|
cookie-secret: 'change-me'
|
||||||
|
index:
|
||||||
|
# Maximum number of channels to display on the index page public channel list
|
||||||
|
max-entries: 50
|
||||||
|
# Configure trusted proxy addresses to map X-Forwarded-For to the client IP.
|
||||||
|
# See also: https://github.com/jshttp/proxy-addr
|
||||||
|
trust-proxies: ['loopback']
|
||||||
|
|
||||||
|
# HTTPS server details
|
||||||
|
https:
|
||||||
|
enabled: false
|
||||||
|
# Even though you may specify multiple ports to listen on for HTTPS above,
|
||||||
|
# one port must be specified as default for the purposes of generating
|
||||||
|
# links with the appropriate port
|
||||||
|
default-port: 8443
|
||||||
|
domain: 'https://localhost'
|
||||||
|
keyfile: 'localhost.key'
|
||||||
|
passphrase: ''
|
||||||
|
certfile: 'localhost.cert'
|
||||||
|
cafile: ''
|
||||||
|
ciphers: 'HIGH:!DSS:!aNULL@STRENGTH'
|
||||||
|
|
||||||
|
# Page template values
|
||||||
|
# title goes in the upper left corner, description goes in a <meta> tag
|
||||||
|
html-template:
|
||||||
|
title: 'Sync'
|
||||||
|
description: 'Free, open source synchtube'
|
||||||
|
|
||||||
|
# Socket.IO server details
|
||||||
|
io:
|
||||||
|
# In most cases this will be the same as the http.domain.
|
||||||
|
# However, if your HTTP traffic is going through a proxy (e.g. cloudflare)
|
||||||
|
# you will want to set up a passthrough domain for socket.io.
|
||||||
|
# If the root of this domain is not the same as the root of your HTTP domain
|
||||||
|
# (or HTTPS if SSL is enabled), logins won't work.
|
||||||
|
domain: 'http://localhost'
|
||||||
|
# Even though you may specify multiple ports to listen on for HTTP above,
|
||||||
|
# one port must be specified as default for the purposes of generating
|
||||||
|
# links with the appropriate port
|
||||||
|
default-port: 1337
|
||||||
|
# limit the number of concurrent socket connections per IP address
|
||||||
|
ip-connection-limit: 10
|
||||||
|
|
||||||
|
# YouTube v3 API key
|
||||||
|
# 1. Go to https://console.developers.google.com/, create a new "project" (or choose an existing one)
|
||||||
|
# 2. Make sure the YouTube Data v3 API is "enabled" for your project: https://console.developers.google.com/apis/library/youtube.googleapis.com
|
||||||
|
# 3. Go to "Credentials" on the sidebar of https://console.developers.google.com/, click "Create credentials" and choose type "API key"
|
||||||
|
# 4. Optionally restrict the key for security, or just copy the key.
|
||||||
|
# 5. Test your key (may take a few minutes to become active):
|
||||||
|
#
|
||||||
|
# $ export YOUTUBE_API_KEY="your key here"
|
||||||
|
# $ curl "https://www.googleapis.com/youtube/v3/search?key=$YOUTUBE_API_KEY&part=id&maxResults=1&q=test+video&type=video"
|
||||||
|
youtube-v3-key: ''
|
||||||
|
# Limit for the number of channels a user can register
|
||||||
|
max-channels-per-user: 5
|
||||||
|
# Limit for the number of accounts an IP address can register
|
||||||
|
max-accounts-per-ip: 5
|
||||||
|
# Minimum number of seconds between guest logins from the same IP
|
||||||
|
guest-login-delay: 60
|
||||||
|
|
||||||
|
# Allows you to customize the path divider. The /r/ in http://localhost/r/yourchannel
|
||||||
|
# Acceptable characters are a-z A-Z 0-9 _ and -
|
||||||
|
channel-path: 'r'
|
||||||
|
# Allows you to blacklist certain channels. Users will be automatically kicked
|
||||||
|
# upon trying to join one.
|
||||||
|
channel-blacklist: []
|
||||||
|
# Minutes between saving channel state to disk
|
||||||
|
channel-save-interval: 5
|
||||||
|
# Determines channel data storage mechanism.
|
||||||
|
channel-storage:
|
||||||
|
type: 'database'
|
||||||
|
|
||||||
|
# Configure periodic clearing of old alias data
|
||||||
|
aliases:
|
||||||
|
# Interval (in milliseconds) between subsequent runs of clearing
|
||||||
|
purge-interval: 3600000
|
||||||
|
# Maximum age of an alias (in milliseconds) - default 1 month
|
||||||
|
max-age: 2592000000
|
||||||
|
|
||||||
|
# Workaround for Vimeo blocking my domain
|
||||||
|
vimeo-workaround: false
|
||||||
|
|
||||||
|
# Regular expressions for defining reserved user and channel names and page titles
|
||||||
|
# The list of regular expressions will be joined with an OR, and compared without
|
||||||
|
# case sensitivity.
|
||||||
|
#
|
||||||
|
# Default: reserve any name containing "admin[istrator]" or "owner" as a word
|
||||||
|
# but only if it is separated by a dash or underscore (e.g. dadmin is not reserved
|
||||||
|
# but d-admin is)
|
||||||
|
reserved-names:
|
||||||
|
usernames:
|
||||||
|
- '^(.*?[-_])?admin(istrator)?([-_].*)?$'
|
||||||
|
- '^(.*?[-_])?owner([-_].*)?$'
|
||||||
|
channels:
|
||||||
|
- '^(.*?[-_])?admin(istrator)?([-_].*)?$'
|
||||||
|
- '^(.*?[-_])?owner([-_].*)?$'
|
||||||
|
pagetitles: []
|
||||||
|
|
||||||
|
# Provide a contact list for the /contact page
|
||||||
|
# Example:
|
||||||
|
# contacts:
|
||||||
|
# - name: 'my_name'
|
||||||
|
# title: 'administrator
|
||||||
|
# email: 'me@my.site'
|
||||||
|
contacts: []
|
||||||
|
|
||||||
|
playlist:
|
||||||
|
max-items: 4000
|
||||||
|
# How often (in seconds), mediaUpdate packets are broadcast to clients
|
||||||
|
update-interval: 5
|
||||||
|
|
||||||
|
# If set to true, when the ipThrottle and lastguestlogin rate limiters are cleared
|
||||||
|
# periodically, the garbage collector will be invoked immediately.
|
||||||
|
# The server must be invoked with node --expose-gc index.js for this to have any effect.
|
||||||
|
aggressive-gc: false
|
||||||
|
|
||||||
|
# If you have ffmpeg installed, you can query metadata from raw files, allowing
|
||||||
|
# server-synched raw file playback. This requires the following:
|
||||||
|
# * ffmpeg must be installed on the server
|
||||||
|
ffmpeg:
|
||||||
|
enabled: false
|
||||||
|
# Executable name for ffprobe if it is not "ffprobe". On Debian and Ubuntu (on which
|
||||||
|
# libav is used rather than ffmpeg proper), this is "avprobe"
|
||||||
|
ffprobe-exec: 'ffprobe'
|
||||||
|
|
||||||
|
link-domain-blacklist: []
|
||||||
|
|
||||||
|
# Drop root if started as root!!
|
||||||
|
setuid:
|
||||||
|
enabled: false
|
||||||
|
group: 'users'
|
||||||
|
user: 'user'
|
||||||
|
# how long to wait in ms before changing uid/gid
|
||||||
|
timeout: 15
|
||||||
|
|
||||||
|
# Allows for external services to access the system commandline
|
||||||
|
# Useful for setups where stdin isn't available such as when using PM2
|
||||||
|
service-socket:
|
||||||
|
enabled: false
|
||||||
|
socket: 'service.sock'
|
||||||
|
|
||||||
|
# Twitch Client ID for the data API (used for VOD lookups)
|
||||||
|
# https://github.com/justintv/Twitch-API/blob/master/authentication.md#developer-setup
|
||||||
|
twitch-client-id: null
|
||||||
|
|
||||||
|
# Mixer Client ID (https://mixer.com/lab)
|
||||||
|
mixer-client-id: null
|
||||||
|
|
||||||
|
poll:
|
||||||
|
max-options: 50
|
||||||
228
cytube/own/mnt/cytube.config.yaml
Executable file
228
cytube/own/mnt/cytube.config.yaml
Executable file
@@ -0,0 +1,228 @@
|
|||||||
|
# MySQL server details
|
||||||
|
# server: domain or IP of MySQL server
|
||||||
|
# database: a MySQL database that the user specified has read/write access to
|
||||||
|
# user: username to authenticate as
|
||||||
|
# password: password for user
|
||||||
|
mysql:
|
||||||
|
server: 'localhost'
|
||||||
|
port: 3306
|
||||||
|
database: 'cytube3'
|
||||||
|
user: 'cytube3'
|
||||||
|
password: 'super_secure_password'
|
||||||
|
pool-size: 10
|
||||||
|
db_version: 12
|
||||||
|
|
||||||
|
# Define IPs/ports to listen on
|
||||||
|
# Each entry MUST define ip and port (ip can be '' to bind all available addresses)
|
||||||
|
# Each entry should set http, https, and/or io to true to listen for the corresponding
|
||||||
|
# service on that port. http/io and https/io can be combined, but if http and https
|
||||||
|
# are both specified, only https will be bound to that port.
|
||||||
|
#
|
||||||
|
# If you don't specify a url, the url io.domain:port or https.domain:port will be assumed
|
||||||
|
# for non-ssl and ssl websockets, respectively. You can override this by specifying the
|
||||||
|
# url for a websocket listener.
|
||||||
|
listen:
|
||||||
|
# Default HTTP server - default interface, port 8080
|
||||||
|
- ip: ''
|
||||||
|
port: 8080
|
||||||
|
http: true
|
||||||
|
# Uncomment below to enable HTTPS/SSL websockets
|
||||||
|
# Note that you must also set https->enabled = true in the https definition
|
||||||
|
- ip: ''
|
||||||
|
port: 8443
|
||||||
|
https: true
|
||||||
|
io: true
|
||||||
|
# Default Socket.IO server - default interface, port 1337
|
||||||
|
- ip: ''
|
||||||
|
port: 1337
|
||||||
|
io: true
|
||||||
|
# Example of how to bind an extra port to HTTP and Socket.IO
|
||||||
|
# - ip: ''
|
||||||
|
# port: 8081
|
||||||
|
# http: true
|
||||||
|
# io: true
|
||||||
|
# url: 'http://my-other-thing.site.com:8081'
|
||||||
|
|
||||||
|
# HTTP server details
|
||||||
|
http:
|
||||||
|
enabled: true
|
||||||
|
default-port: 8080
|
||||||
|
root-domain: 'monolith.mac'
|
||||||
|
alt-domains:
|
||||||
|
- '127.0.0.1'
|
||||||
|
- '172.17.0.1'
|
||||||
|
- 'localhost'
|
||||||
|
- 'monolith.mac'
|
||||||
|
minify: false
|
||||||
|
max-age: '7d'
|
||||||
|
gzip: true
|
||||||
|
gzip-threshold: 1024
|
||||||
|
cookie-secret: 'changed_me'
|
||||||
|
index:
|
||||||
|
max-entries: 50
|
||||||
|
trust-proxies:
|
||||||
|
- 'loopback'
|
||||||
|
- '172.17.0.1'
|
||||||
|
- '127.0.0.1'
|
||||||
|
|
||||||
|
# HTTPS server details
|
||||||
|
https:
|
||||||
|
alt-domains:
|
||||||
|
- '127.0.0.1'
|
||||||
|
- '172.17.0.1'
|
||||||
|
- 'localhost'
|
||||||
|
- 'monolith.mac'
|
||||||
|
enabled: true
|
||||||
|
default-port: 8443
|
||||||
|
root-domain: 'monolith.mac'
|
||||||
|
domain: 'monolith.mac'
|
||||||
|
certfile: '/mnt/server.crt'
|
||||||
|
keyfile: '/mnt/server.key'
|
||||||
|
passphrase: ''
|
||||||
|
cafile: ''
|
||||||
|
ciphers: 'HIGH:!DSS:!aNULL@STRENGTH'
|
||||||
|
minify: false
|
||||||
|
max-age: '7d'
|
||||||
|
gzip: true
|
||||||
|
gzip-threshold: 1024
|
||||||
|
cookie-secret: 'changed_me'
|
||||||
|
index:
|
||||||
|
max-entries: 50
|
||||||
|
trust-proxies:
|
||||||
|
- 'loopback'
|
||||||
|
- '172.17.0.1'
|
||||||
|
- '127.0.0.1'
|
||||||
|
|
||||||
|
# Page template values
|
||||||
|
# title goes in the upper left corner, description goes in a <meta> tag
|
||||||
|
html-template:
|
||||||
|
title: 'Sync'
|
||||||
|
description: 'Free, open source synchtube'
|
||||||
|
|
||||||
|
# Socket.IO server details
|
||||||
|
io:
|
||||||
|
alt-domains:
|
||||||
|
- '127.0.0.1'
|
||||||
|
- '172.17.0.1'
|
||||||
|
- 'localhost'
|
||||||
|
- 'monolith.mac'
|
||||||
|
# In most cases this will be the same as the http.domain.
|
||||||
|
# However, if your HTTP traffic is going through a proxy (e.g. cloudflare)
|
||||||
|
# you will want to set up a passthrough domain for socket.io.
|
||||||
|
# If the root of this domain is not the same as the root of your HTTP domain
|
||||||
|
# (or HTTPS if SSL is enabled), logins won't work.
|
||||||
|
domain: 'monolith.mac'
|
||||||
|
# Even though you may specify multiple ports to listen on for HTTP above,
|
||||||
|
# one port must be specified as default for the purposes of generating
|
||||||
|
# links with the appropriate port
|
||||||
|
default-port: 1337
|
||||||
|
# limit the number of concurrent socket connections per IP address
|
||||||
|
ip-connection-limit: 10
|
||||||
|
|
||||||
|
# YouTube v3 API key
|
||||||
|
# 1. Go to https://console.developers.google.com/, create a new "project" (or choose an existing one)
|
||||||
|
# 2. Make sure the YouTube Data v3 API is "enabled" for your project: https://console.developers.google.com/apis/library/youtube.googleapis.com
|
||||||
|
# 3. Go to "Credentials" on the sidebar of https://console.developers.google.com/, click "Create credentials" and choose type "API key"
|
||||||
|
# 4. Optionally restrict the key for security, or just copy the key.
|
||||||
|
# 5. Test your key (may take a few minutes to become active):
|
||||||
|
#
|
||||||
|
# $ export YOUTUBE_API_KEY="your key here"
|
||||||
|
# $ curl "https://www.googleapis.com/youtube/v3/search?key=$YOUTUBE_API_KEY&part=id&maxResults=1&q=test+video&type=video"
|
||||||
|
youtube-v3-key: 'AIzaSyDxe_siDGe5jxCoBQKrH3Atj9Wxyp8BiVA'
|
||||||
|
# Limit for the number of channels a user can register
|
||||||
|
max-channels-per-user: 5
|
||||||
|
# Limit for the number of accounts an IP address can register
|
||||||
|
max-accounts-per-ip: 5
|
||||||
|
# Minimum number of seconds between guest logins from the same IP
|
||||||
|
guest-login-delay: 60
|
||||||
|
|
||||||
|
# Allows you to customize the path divider. The /r/ in http://localhost/r/yourchannel
|
||||||
|
# Acceptable characters are a-z A-Z 0-9 _ and -
|
||||||
|
channel-path: 'r'
|
||||||
|
# Allows you to blacklist certain channels. Users will be automatically kicked
|
||||||
|
# upon trying to join one.
|
||||||
|
channel-blacklist: []
|
||||||
|
# Minutes between saving channel state to disk
|
||||||
|
channel-save-interval: 5
|
||||||
|
# Determines channel data storage mechanism.
|
||||||
|
channel-storage:
|
||||||
|
type: 'database'
|
||||||
|
|
||||||
|
# Configure periodic clearing of old alias data
|
||||||
|
aliases:
|
||||||
|
# Interval (in milliseconds) between subsequent runs of clearing
|
||||||
|
purge-interval: 3600000
|
||||||
|
# Maximum age of an alias (in milliseconds) - default 1 month
|
||||||
|
max-age: 2592000000
|
||||||
|
|
||||||
|
# Workaround for Vimeo blocking my domain
|
||||||
|
vimeo-workaround: false
|
||||||
|
|
||||||
|
# Regular expressions for defining reserved user and channel names and page titles
|
||||||
|
# The list of regular expressions will be joined with an OR, and compared without
|
||||||
|
# case sensitivity.
|
||||||
|
#
|
||||||
|
# Default: reserve any name containing "admin[istrator]" or "owner" as a word
|
||||||
|
# but only if it is separated by a dash or underscore (e.g. dadmin is not reserved
|
||||||
|
# but d-admin is)
|
||||||
|
reserved-names:
|
||||||
|
usernames:
|
||||||
|
- '^(.*?[-_])?admin(istrator)?([-_].*)?$'
|
||||||
|
- '^(.*?[-_])?owner([-_].*)?$'
|
||||||
|
channels:
|
||||||
|
- '^(.*?[-_])?admin(istrator)?([-_].*)?$'
|
||||||
|
- '^(.*?[-_])?owner([-_].*)?$'
|
||||||
|
pagetitles: []
|
||||||
|
|
||||||
|
# Provide a contact list for the /contact page
|
||||||
|
# Example:
|
||||||
|
# contacts:
|
||||||
|
# - name: 'my_name'
|
||||||
|
# title: 'administrator
|
||||||
|
# email: 'me@my.site'
|
||||||
|
contacts: []
|
||||||
|
|
||||||
|
playlist:
|
||||||
|
max-items: 4000
|
||||||
|
# How often (in seconds), mediaUpdate packets are broadcast to clients
|
||||||
|
update-interval: 5
|
||||||
|
|
||||||
|
# If set to true, when the ipThrottle and lastguestlogin rate limiters are cleared
|
||||||
|
# periodically, the garbage collector will be invoked immediately.
|
||||||
|
# The server must be invoked with node --expose-gc index.js for this to have any effect.
|
||||||
|
aggressive-gc: false
|
||||||
|
|
||||||
|
# If you have ffmpeg installed, you can query metadata from raw files, allowing
|
||||||
|
# server-synched raw file playback. This requires the following:
|
||||||
|
# * ffmpeg must be installed on the server
|
||||||
|
ffmpeg:
|
||||||
|
enabled: false
|
||||||
|
# Executable name for ffprobe if it is not "ffprobe". On Debian and Ubuntu (on which
|
||||||
|
# libav is used rather than ffmpeg proper), this is "avprobe"
|
||||||
|
ffprobe-exec: 'ffprobe'
|
||||||
|
|
||||||
|
link-domain-blacklist: []
|
||||||
|
|
||||||
|
# Drop root if started as root!!
|
||||||
|
setuid:
|
||||||
|
enabled: false
|
||||||
|
group: 'users'
|
||||||
|
user: 'user'
|
||||||
|
# how long to wait in ms before changing uid/gid
|
||||||
|
timeout: 15
|
||||||
|
|
||||||
|
# Allows for external services to access the system commandline
|
||||||
|
# Useful for setups where stdin isn't available such as when using PM2
|
||||||
|
service-socket:
|
||||||
|
enabled: false
|
||||||
|
socket: 'service.sock'
|
||||||
|
|
||||||
|
# Twitch Client ID for the data API (used for VOD lookups)
|
||||||
|
# https://github.com/justintv/Twitch-API/blob/master/authentication.md#developer-setup
|
||||||
|
twitch-client-id: null
|
||||||
|
|
||||||
|
# Mixer Client ID (https://mixer.com/lab)
|
||||||
|
mixer-client-id: null
|
||||||
|
|
||||||
|
poll:
|
||||||
|
max-options: 50
|
||||||
30
cytube/own/mnt/server.crt
Executable file
30
cytube/own/mnt/server.crt
Executable file
@@ -0,0 +1,30 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIFMDCCAxigAwIBAgIJAOqP2VyjOP6+MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNV
|
||||||
|
BAYTAlVTMQswCQYDVQQIDAJVVDEOMAwGA1UECgwFYnJlZWwxFTATBgNVBAMMDG1v
|
||||||
|
bm9saXRoLm1hYzAeFw0xOTA0MTAxOTE5NTNaFw0yOTA0MDcxOTE5NTNaMEExCzAJ
|
||||||
|
BgNVBAYTAlVTMQswCQYDVQQIDAJVVDEOMAwGA1UECgwFYnJlZWwxFTATBgNVBAMM
|
||||||
|
DG1vbm9saXRoLm1hYzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALo1
|
||||||
|
yWNf4oXGI6HfCBAjwcH+izTIpdruxVFmUzHZO9ItxRjiy2ud88JLPEafcZG5ssx+
|
||||||
|
AC+uYdBmJMF19NCrEXKyKX1RRHHEimmJqU1LVoymf6NGUB0Cg5DKkns4G2CfJ9h4
|
||||||
|
BUxzQ0jn+CeacHfLZ6YtraUg2E30CTQfiReQ0ocJEN12gqHK4jGhdlirGsbHx+b7
|
||||||
|
+LkU7FjIIK44Vj944v+ax/wrUBDbke7CmTw1EYjsPvEXMLMTs+R3w7y2ym9a2Eps
|
||||||
|
Y2sLlZLfqyyhOc3a4o5Rn0AgxqKZJEX6WbMcaHJxPAApENzBb2csOkqVePYckdAe
|
||||||
|
07vxtVWeHLZkhTO7BNGzmrW0uGDEiDWgpLVrvRv/e20rMVrZ7Zz5xxwL988/GgsU
|
||||||
|
zkZu4OemSe2fx7u9iQ21o8y6xm8t/kf5V/LSLpZSa2cwZFC7q3pVvqROPvt1ORfN
|
||||||
|
HJFG8NB7hkcaAlGYfnzJTBN3/pBBrgYJVjqcQJGsALDyDFqVnWrj3P+2FZaXKIrN
|
||||||
|
RBzIylIyNOcUaJDx9qUjntddtwiosmgaO5OpLqwAxCNYWl3dCz89bdIY9vxyVol9
|
||||||
|
UZAbUGPHaLViYNkFYKWb537ld3E9CuaCWII0LFGzk9hLs9gHSxxjFUMP73j9Si4L
|
||||||
|
R1KEKqjuyJzkjgw2Qn0Mt1xrsmNlp1A3gfB45bSVAgMBAAGjKzApMCcGA1UdEQQg
|
||||||
|
MB6CDG1vbm9saXRoLm1hY4IOKi5tb25vbGl0aC5tYWMwDQYJKoZIhvcNAQELBQAD
|
||||||
|
ggIBAEPjF8HUh+01lsx3jsXkesu2D2OF73SQQf8+ixJ45/+Bq2wXaN3pAPUo2/Ox
|
||||||
|
i/iVZwG7SnQAwMwFOAiAA001fEIdJ2Zd0kAl1kLUq6WrYpjMMcn/5LeH4VH+dO99
|
||||||
|
XMXyWKISvdmmgWQVLqYmPnIef/OBDGbLveMI6Ifj3Ma2Es8khEf8DT1mVmv992N+
|
||||||
|
J+uoS3tTZNnZPdRFKOj+pmRNBOP7QXj9m/ywIO2uFhk6AULg82NYuYgcaDrS+4WO
|
||||||
|
JrYy/P/OKtQN2tjwzglbBt+VAE6V1ZWzGYU4++oXwIvPfO4VtzQNGuPaFJ24J5zt
|
||||||
|
WYgxW+JwIicHWpVa2OGa2nqWHGcjnuh8n6HRZq74MgzQZtR8zks1W2ymZcJ/j8e2
|
||||||
|
93Aqfmy99F3I6/sBms2/3CF7wpiohKX5x3fDFLlLEsdlDRGQ3cXVGYbRhHQus++1
|
||||||
|
ASJpqNG236W7rXoRyUbrZmb1sgxHpgy99hPg7TeHtF/YEqbOvJ247kC6GxOB5CMi
|
||||||
|
2pmYgAW7KT+aYyCvNqkrcx0dJpG7KLZ9Zmc9gburI1ZJWOTAorq15M/mbpFCPEz5
|
||||||
|
NU/Dt+NmhDtFW8Z7/DpekZJ5Y9cxMXdJPIf86jD9gZS+JDhmR/8vSOmv+PA28Cao
|
||||||
|
22Sby4OpDf80TbrIPaihbvAWMw/Bk0dl1EtkKZdrUkejO/BC
|
||||||
|
-----END CERTIFICATE-----
|
||||||
51
cytube/own/mnt/server.key
Executable file
51
cytube/own/mnt/server.key
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
BIN
cytube/own/mnt/server.pkcs12
Executable file
BIN
cytube/own/mnt/server.pkcs12
Executable file
Binary file not shown.
Reference in New Issue
Block a user