From 1d1714e7d21a85af7385ee62fead99606f054840 Mon Sep 17 00:00:00 2001 From: bel Date: Tue, 14 Sep 2021 06:52:08 -0600 Subject: [PATCH] cytube --- cytube/.DS_Store | Bin 0 -> 6148 bytes cytube/cytube-docker | 1 + cytube/own/Dockerfile | 50 ++++++ cytube/own/build_and_run.sh | 23 +++ cytube/own/mnt/config.template.yaml | 217 ++++++++++++++++++++++++++ cytube/own/mnt/cytube.config.yaml | 228 ++++++++++++++++++++++++++++ cytube/own/mnt/server.crt | 30 ++++ cytube/own/mnt/server.key | 51 +++++++ cytube/own/mnt/server.pkcs12 | Bin 0 -> 4085 bytes 9 files changed, 600 insertions(+) create mode 100755 cytube/.DS_Store create mode 160000 cytube/cytube-docker create mode 100755 cytube/own/Dockerfile create mode 100755 cytube/own/build_and_run.sh create mode 100755 cytube/own/mnt/config.template.yaml create mode 100755 cytube/own/mnt/cytube.config.yaml create mode 100755 cytube/own/mnt/server.crt create mode 100755 cytube/own/mnt/server.key create mode 100755 cytube/own/mnt/server.pkcs12 diff --git a/cytube/.DS_Store b/cytube/.DS_Store new file mode 100755 index 0000000000000000000000000000000000000000..e3455a0bcd6da52f4ed0c939bcbd807737423e6d GIT binary patch literal 6148 zcmeHK%Sr=55Ukc50usp4R+`4v9&J)$n0;v( /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"] diff --git a/cytube/own/build_and_run.sh b/cytube/own/build_and_run.sh new file mode 100755 index 0000000..261847e --- /dev/null +++ b/cytube/own/build_and_run.sh @@ -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 diff --git a/cytube/own/mnt/config.template.yaml b/cytube/own/mnt/config.template.yaml new file mode 100755 index 0000000..6eae8bb --- /dev/null +++ b/cytube/own/mnt/config.template.yaml @@ -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 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 diff --git a/cytube/own/mnt/cytube.config.yaml b/cytube/own/mnt/cytube.config.yaml new file mode 100755 index 0000000..975c4a1 --- /dev/null +++ b/cytube/own/mnt/cytube.config.yaml @@ -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 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 diff --git a/cytube/own/mnt/server.crt b/cytube/own/mnt/server.crt new file mode 100755 index 0000000..0bdf741 --- /dev/null +++ b/cytube/own/mnt/server.crt @@ -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----- diff --git a/cytube/own/mnt/server.key b/cytube/own/mnt/server.key new file mode 100755 index 0000000..78ece12 --- /dev/null +++ b/cytube/own/mnt/server.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/cytube/own/mnt/server.pkcs12 b/cytube/own/mnt/server.pkcs12 new file mode 100755 index 0000000000000000000000000000000000000000..e0ffe79227f9c919f28e9f2cc01c818167b04087 GIT binary patch literal 4085 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 literal 0 HcmV?d00001