module.exports = { database: { owner: { host: '127.0.0.1', user: 'traxxx', password: 'password', database: 'traxxx', }, query: { host: '127.0.0.1', user: 'visitor', password: 'password', database: 'traxxx', }, manticore: { host: '127.0.0.1', sqlPort: 9306, httpPort: 9308, }, timeout: 5000, graphiql: false, pool: { min: 0, max: 20, acquireTimeoutMillis: 300000, createTimeoutMillis: 300000, destroyTimeoutMillis: 300000, }, }, redis: { host: 'localhost', port: 6379, username: null, password: null, }, location: { userAgent: 'contact via https://traxxx.me/', }, analytics: { enabled: false, address: 'http://localhost:3000/script.js', siteId: '1b28ac3b-d229-43bf-aec9-75cf0a72a466', }, s3: { enabled: false, bucket: 'traxxx', accessKey: 'ABCDEFGHIJ1234567890', secretKey: 'abcdefghijklmnopqrstuvwxyz1234567890ABCD', }, auth: { login: true, signup: true, usernameLength: [2, 24], usernamePattern: /^[a-zA-Z0-9_-]+$/, }, stashes: { viewRefreshCooldown: 60, // minutes }, exclude: { channels: [ // aylo 'pornhub', 'spicevids', // 21sextreme, no longer updated 'mightymistress', 'dominatedgirls', 'homepornreality', 'peeandblow', 'cummingmatures', 'mandyiskinky', 'speculumplays', 'creampiereality', // aziani 'amberathome', 'marycarey', 'racqueldevonshire', 'aziani', // blowpass 'sunlustxxx', // ddfnetwork 'fuckinhd', 'bustylover', // famedigital 'daringsex', 'lowartfilms', // freeones 'freeones', // new sesations 'tabutales', 'talesfromtheedge', 'shanedieselsbangingbabes', // pornpros 'milfhumiliation', 'humiliated', 'amateurviolations', 'cumdisgrace', 'webcamhackers', 'collegeteens', // score 'bigboobbundle', 'milfbundle', 'pornmegaload', 'scorelandtv', 'scoretv', // spizoo 'intimatelesbians', 'porngoespro', 'pornstartease', 'thestripperexperience', // teenscoreclub 'maiko', 'ncuksinners', 'ncversocinema', 'pussybabes', 'uksinners', // insex 'paintoy', 'aganmedon', 'sensualpain', // porn world '1byday', 'bustylover', 'ddfbusty', 'ddfnetworkvr', 'eurogirlsongirls', 'euroteenerotica', 'fuckinhd', 'handsonhardcore', 'hotlegsandfeet', 'houseoftaboo', 'onlyblowjob', // letsdoeit 'xchimera', 'scamangels', 'bitchesabroad', 'pornoacademie', 'bumsbus', 'kinkyinlaws', // killergram, no longer available on new Aylo site 'analrehab', 'bitchfunkers', 'bootypackers', 'brownsugar', 'burlesquexxx', 'chainsmokers', 'clubbabes', 'collegebabes', 'creammycunt', 'cumpartysluts', 'doggingmissions', 'fetishsexclinic', 'getshafted', 'girlyriders', 'gloryholegirls', 'hardfisex', 'killergramcuts', 'killergramplatinum', 'kinkycouples', 'letsgetslippy', 'nyloncumsluts', 'officeantics', 'pornostatic', 'pornstarsutd', 'rockchicks', 'ru4hire', 'spacehoppers', 'streetwalkers', 'tattooedsluts', 'thehandyman', 'theladypimp', 'voyeurcams', 'wifesluts', 'wishescumtrue', // hentaied 'somegore', // digital playground 'digitalplayground', // no longer updates, produces a bunch of garbage for some reason ], networks: [ // dummy network for testing 'traxxx', // porn doe 'forbondage', // prevent huge influx 'manyvids', ], }, profiles: null, interpolation: { excludeAvatarCredits: [ // never allow 'Pierre Woodman', ], avoidAvatarCredits: [ // only allow as last resort 'AnalVids', 'Bang!', 'Cherry Pimps', ], }, options: { traxxx: { // source: 'http://nsfw.unknown.name/random', }, }, webApi: { enabled: true, address: 'http://localhost:5100/api', apiUserId: 1, apiKey: null, }, proxy: { enable: false, test: 'https://api.ipify.org?format=json', host: '', port: 8888, hostnames: [], }, bypass: { browser: { clientRetirement: 20, remote: { enable: false, use: false, address: 'ws://10.0.0.1:3333/browser', key: null, }, }, }, limits: { default: { interval: 50, concurrency: 20, }, browser: { interval: 20, concurrency: 5, }, media: { interval: 50, concurrency: 20, }, }, apiKeys: { kellyCash: null, fiveKCash: null, }, fetchAfter: [1, 'week'], missingDateLimit: 3, upcomingMissingDateLimit: 20, memorySampling: { enabled: false, sampleDuration: 300000, // 5 minutes snapshotIntervals: [], }, media: { path: './media', transferSources: { local: 'http://localhost:5000/media', s3: 'https://cdn.traxxx.me', }, maxSize: 1000, quality: 80, thumbnailSize: 320, // width for 16:9 will be exactly 576px thumbnailQuality: 100, lazySize: 90, lazyQuality: 90, trailerQuality: [540, 720, 960, 480, 1080, 360, 320, 1440, 1600, 1920, 2160, 270, 240, 180], limit: 25, // max number of photos per release attempts: 2, flushOrphaned: false, flushWindow: 1000, streams: { enabled: true, // fetch streams concurrency: 2, excludeHostnames: [], selectIndex: {}, }, biometrics: { enabled: true, }, }, titleSlugLength: 50, };