diff --git a/assets/index.ejs b/assets/index.ejs
new file mode 100644
index 00000000..acb13ff8
--- /dev/null
+++ b/assets/index.ejs
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+ traxxx
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/js/main.js b/assets/js/main.js
index 03868b7e..0f34be82 100644
--- a/assets/js/main.js
+++ b/assets/js/main.js
@@ -13,6 +13,10 @@ import Icon from '../components/icon/icon.vue';
function init() {
const store = initStore(router);
+ if (window.env.sfw) {
+ store.dispatch('setSfw', true);
+ }
+
Vue.mixin({
components: {
Icon,
diff --git a/assets/js/router.js b/assets/js/router.js
index 08391020..15bb66d8 100644
--- a/assets/js/router.js
+++ b/assets/js/router.js
@@ -84,9 +84,6 @@ const routes = [
const router = new VueRouter({
mode: 'history',
routes,
- afterEach(to, from) {
- console.log(to, from);
- },
});
export default router;
diff --git a/config/default.js b/config/default.js
index 7165b2b1..226528c8 100644
--- a/config/default.js
+++ b/config/default.js
@@ -8,6 +8,8 @@ module.exports = {
web: {
host: '0.0.0.0',
port: 5000,
+ sfwHost: '0.0.0.0',
+ sfwPort: 5001,
},
// include: [],
// exclude: [],
diff --git a/package-lock.json b/package-lock.json
index 206458f6..0a399e6f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3445,6 +3445,11 @@
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
+ "ejs": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.1.tgz",
+ "integrity": "sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw=="
+ },
"electron-to-chromium": {
"version": "1.3.360",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.360.tgz",
diff --git a/package.json b/package.json
index 566d8834..f0abf7e2 100644
--- a/package.json
+++ b/package.json
@@ -81,6 +81,7 @@
"config": "^3.2.5",
"csv-stringify": "^5.3.6",
"dayjs": "^1.8.21",
+ "ejs": "^3.0.1",
"express": "^4.17.1",
"express-promise-router": "^3.0.3",
"express-react-views": "^0.11.0",
diff --git a/seeds/04_media.js b/seeds/04_media.js
index 6d89baec..b8d52992 100644
--- a/seeds/04_media.js
+++ b/seeds/04_media.js
@@ -13,7 +13,7 @@ const tagPosters = [
['blowbang', 'poster', 'Marsha May in "Feeding Frenzy 12" for Jules Jordan'],
['blowjob', 0, 'Adriana Chechik in "The Dinner Party" for Real Wife Stories (Brazzers)'],
['brunette', 0, 'Nicole Black in GIO971 for LegalPorno'],
- ['bukkake', 'poster'],
+ ['bukkake', 'poster', 'Mia Malkova in "Facialized 2" for HardX'],
['caucasian', 0, 'Remy Lacroix for HardX'],
['creampie', 'poster'],
['da-tp', 0, 'Natasha Teen in LegalPorno SZ2164'],
@@ -28,15 +28,15 @@ const tagPosters = [
['facial', 0, 'Brooklyn Gray in "All About Ass 4" for Evil Angel'],
['gangbang', 'poster', 'Kristen Scott in "Interracial Gangbang!" for Jules Jordan'],
['gaping', 1, 'Vina Sky in "Vina Sky Does Anal" for HardX'],
- ['interracial', 'poster'],
+ ['interracial', 'poster', 'Khloe Kapri and Jax Slayher in "First Interracial Anal" for Hussie Pass'],
['latina', 'poster', 'Alexis Love for Penthouse'],
['lesbian', 0, 'Reena Sky and Sarah Banks for Brazzers'],
['maid', 0, 'Whitney Wright in "Dredd Up Your Ass 2" for Jules Jordan'],
['milf', 0, 'Olivia Austin in "Dredd 3" for Jules Jordan'],
- ['mff', 0, 'Madison Ivy and Adriana Chechik in "Day With A Pornstar" for Brazzers'],
- ['mfm', 5, 'Vina Sky in "Slut Puppies 15" for Jules Jordan'],
+ ['mff', 0, 'Madison Ivy, Adriana Chechik and Keiran Lee in "Day With A Pornstar" for Brazzers'],
+ ['mfm', 5, 'Vina Sky, Jules Jordan and Steve Holmes in "Slut Puppies 15" for Jules Jordan'],
['cum-in-mouth', 1, 'Keisha Grey in Brazzers House'],
- ['orgy', 1, 'Jessa Rhodes, Melissa moore, Kimmy Granger, Megan Rain and Morgan Lee in "Orgy Masters 8" for Jules Jordan'],
+ ['orgy', 1, 'Megan Rain (DP), Morgan Lee (anal), Jessa Rhodes, Melissa Moore, Kimmy Granger, Mick Blue and Markus Dupree in "Orgy Masters 8" for Jules Jordan'],
['pussy-eating', 0, 'Elena Kosha and Ivy Wolfe in "Bare" for Jules Jordan'],
['redhead', 0, 'Penny Pax in "The Submission of Emma Marx: Boundaries" for New Sensations'],
['schoolgirl', 1, 'Eliza Ibarra for Brazzers'],
@@ -95,7 +95,7 @@ const tagPhotos = [
['gaping', 2, 'Alex Grey in "DP Masters 5" for Jules Jordan'],
// ['mfm', 0, 'Vina Sky in "Jules Jordan\'s Three Ways" for Jules Jordan'],
['mfm', 1, 'Jynx Maze in "Don\'t Make Me Beg 4" for Evil Angel'],
- ['orgy', 'poster', 'Frida Sante, Jillian Janson, Zoey Monroe, Katerina Kay and Natasha Starr in "Orgy Masters 6" for Jules Jordan'],
+ ['orgy', 'poster', 'Zoey Mornoe (DP), Jillian Janson (sex), Frida Sante, Katerina Kay, Natasha Starr, Mick Blue and Ramon Nomar in "Orgy Masters 6" for Jules Jordan'],
['trainbang', 0, 'Nicole Black in GIO971 for LegalPorno'],
['triple-anal', 1, 'Natasha Teen in SZ2098 for LegalPorno'],
['triple-anal', 2, 'Kira Thorn in GIO1018 for LegalPorno'],
diff --git a/src/app.js b/src/app.js
index e9fc1171..0edcfad4 100644
--- a/src/app.js
+++ b/src/app.js
@@ -1,6 +1,5 @@
'use strict';
-// const knex = require('./knex');
const argv = require('./argv');
const initServer = require('./web/server');
@@ -9,7 +8,6 @@ const fetchUpdates = require('./updates');
const { fetchScenes, fetchMovies } = require('./deep');
const { storeReleases } = require('./store-releases');
const { updateReleasesSearch } = require('./releases');
-// const { storeReleaseActors } = require('./actors');
async function init() {
if (argv.server) {
@@ -41,55 +39,4 @@ async function init() {
knex.destroy();
}
-/*
-const scrapeSites = require('./scrape-sites');
-const { scrapeScenes, scrapeMovies, deepFetchReleases } = require('./scrape-releases');
-const { storeReleases, updateReleasesSearch } = require('./releases');
-const { scrapeActors, scrapeBasicActors } = require('./actors');
-
-if (process.env.NODE_ENV === 'development') {
- require('longjohn'); // eslint-disable-line global-require
-}
-
-async function init() {
- if (argv.scene) {
- await scrapeScenes(argv.scene);
-
-
- if (argv.movie) {
- await scrapeMovies(argv.movie);
- }
-
- if (argv.scrape || argv.networks || argv.sites) {
- await scrapeSites();
- }
-
- if (argv.actors && argv.actors.length > 0) {
- const actors = await scrapeActors();
-
- if (argv.withReleases) {
- const baseReleases = actors.map(actor => actor?.releases || []).flat();
- const releases = await deepFetchReleases(baseReleases, null);
-
- await storeReleases(releases);
- }
- }
-
- if (argv.actors && argv.actors.length === 0) {
- await scrapeBasicActors();
- }
-
- if (argv.updateSearch) {
- await updateReleasesSearch();
- }
-
- if (argv.server) {
- await initServer();
- return;
- }
-
- knex.destroy();
-}
-*/
-
module.exports = init;
diff --git a/src/web/server.js b/src/web/server.js
index f7db980d..7f765160 100644
--- a/src/web/server.js
+++ b/src/web/server.js
@@ -63,6 +63,8 @@ function initServer() {
},
));
+ app.set('view engine', 'ejs');
+
router.use('/media', express.static(config.media.path));
router.use(express.static('public'));
@@ -93,7 +95,11 @@ function initServer() {
router.get('/api/tags/:tagId/releases', fetchTagReleases);
router.get('*', (req, res) => {
- res.sendFile(path.join(__dirname, '../../public/index.html'));
+ res.render(path.join(__dirname, '../../assets/index.ejs'), {
+ env: JSON.stringify({
+ sfw: !!req.headers.sfw || Object.prototype.hasOwnProperty.call(req.query, 'sfw'),
+ }),
+ });
});
app.use(router);