# 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' database: 'cytube3' user: 'cytube3' password: '' # 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. # # NOTE: You can technically bind an IPv6 address this way, but much of the code has not # yet been updated to work with IPv6 addresses (ban ranges, IP masking, etc.) # IPv6 support is planned, and the below method of binding servers is one step in that # direction 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 # 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 domain: 'http://localhost' # 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 # Static content cache (in seconds) cache-ttl: 0 # 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: '' # Page template values # title goes in the upper left corner, description goes in a tag html-template: title: 'CyTube', 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 # Mailer details (used for sending password reset links) # see https://github.com/andris9/Nodemailer mail: enabled: false transport: 'SMTP' config: service: 'Gmail' auth: user: 'some.user@gmail.com' pass: 'supersecretpassword' from-address: 'some.user@gmail.com' # GData API v2 developer key (for non-anonymous youtube requests) youtube-v2-key: '' # Minutes between saving channel state to disk channel-save-interval: 5 # 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 # Block known Tor IP addresses enable-tor-blocker: true # Configure statistics tracking stats: # Interval (in milliseconds) between data points - default 1h interval: 3600000 # Maximum age of a datapoint (ms) before it is deleted - default 24h max-age: 86400000 # 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 # OPTIONAL: Use Vimeo's OAuth API instead of the anonymous API. # This allows you to add private videos that have embedding enabled. # See https://developer.vimeo.com/apps/new to register for this API. # Note that in order to use this feature you must agree to Vimeo's # Terms of Service and License Agreement. vimeo-oauth: enabled: false consumer-key: '' secret: '' # 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 contacts: - name: 'calzoneman' title: 'Developer' email: 'cyzon@cytu.be' # 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 # Allows you to blacklist certain channels. Users will be automatically kicked # upon trying to join one. channel-blacklist: []