first commit
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
WRENCHJOB_PORT=3000
|
||||||
|
WRENCHJOB_POSTGRE_URL='postgresql://wrenchboard:wrenchboard@10.20.30.60:5432/wrenchboard'
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
node_modules
|
||||||
|
*.log
|
||||||
|
config.json
|
||||||
|
.queues
|
||||||
|
*.txt
|
||||||
|
docs
|
||||||
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="WEB_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
Generated
+8
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/WrenchBoardMedia.iml" filepath="$PROJECT_DIR$/.idea/WrenchBoardMedia.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
Generated
+19
@@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="MessDetectorOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PHPCSFixerOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PHPCodeSnifferOptionsConfiguration">
|
||||||
|
<option name="highlightLevel" value="WARNING" />
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PhpStanOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
<component name="PsalmOptionsConfiguration">
|
||||||
|
<option name="transferred" value="true" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
+117
@@ -0,0 +1,117 @@
|
|||||||
|
# FROM node:erbium
|
||||||
|
# pull the base image
|
||||||
|
# FROM node:alpine
|
||||||
|
|
||||||
|
FROM alpine:3.15
|
||||||
|
|
||||||
|
# Build args
|
||||||
|
ARG NODE_ENV
|
||||||
|
|
||||||
|
ENV NODE_VERSION 14.19.0
|
||||||
|
ENV NODE_ENV=$NODE_ENV
|
||||||
|
|
||||||
|
# install nginx
|
||||||
|
RUN apk update
|
||||||
|
RUN apk add nginx
|
||||||
|
|
||||||
|
RUN addgroup -g 1000 node \
|
||||||
|
&& adduser -u 1000 -G node -s /bin/sh -D node \
|
||||||
|
&& apk add --no-cache \
|
||||||
|
libstdc++ \
|
||||||
|
&& apk add --no-cache --virtual .build-deps \
|
||||||
|
curl \
|
||||||
|
&& ARCH= && alpineArch="$(apk --print-arch)" \
|
||||||
|
&& case "${alpineArch##*-}" in \
|
||||||
|
x86_64) \
|
||||||
|
ARCH='x64' \
|
||||||
|
CHECKSUM="8d5e638d88b62de2f147dee812a5d74e4860a20468eb7ff32c41a02b58e2aebf" \
|
||||||
|
;; \
|
||||||
|
*) ;; \
|
||||||
|
esac \
|
||||||
|
&& if [ -n "${CHECKSUM}" ]; then \
|
||||||
|
set -eu; \
|
||||||
|
curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz"; \
|
||||||
|
echo "$CHECKSUM node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - \
|
||||||
|
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
|
||||||
|
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs; \
|
||||||
|
else \
|
||||||
|
echo "Building from source" \
|
||||||
|
# backup build
|
||||||
|
&& apk add --no-cache --virtual .build-deps-full \
|
||||||
|
binutils-gold \
|
||||||
|
g++ \
|
||||||
|
gcc \
|
||||||
|
gnupg \
|
||||||
|
libgcc \
|
||||||
|
linux-headers \
|
||||||
|
make \
|
||||||
|
python3 \
|
||||||
|
# gpg keys listed at https://github.com/nodejs/node#release-keys
|
||||||
|
&& for key in \
|
||||||
|
4ED778F539E3634C779C87C6D7062848A1AB005C \
|
||||||
|
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
|
||||||
|
74F12602B6F1C4E913FAA37AD3A89613643B6201 \
|
||||||
|
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
|
||||||
|
8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
|
||||||
|
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
|
||||||
|
C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \
|
||||||
|
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
|
||||||
|
A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
|
||||||
|
108F52B48DB57BB0CC439B2997B01419BD92F80A \
|
||||||
|
B9E2F5981AA6E0CD28160D9FF13993A75599653C \
|
||||||
|
; do \
|
||||||
|
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \
|
||||||
|
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \
|
||||||
|
done \
|
||||||
|
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
|
||||||
|
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
|
||||||
|
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
|
||||||
|
&& grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
|
||||||
|
&& tar -xf "node-v$NODE_VERSION.tar.xz" \
|
||||||
|
&& cd "node-v$NODE_VERSION" \
|
||||||
|
&& ./configure \
|
||||||
|
&& make -j$(getconf _NPROCESSORS_ONLN) V= \
|
||||||
|
&& make install \
|
||||||
|
&& apk del .build-deps-full \
|
||||||
|
&& cd .. \
|
||||||
|
&& rm -Rf "node-v$NODE_VERSION" \
|
||||||
|
&& rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; \
|
||||||
|
fi \
|
||||||
|
&& rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \
|
||||||
|
&& apk del .build-deps \
|
||||||
|
# smoke tests
|
||||||
|
&& node --version \
|
||||||
|
&& npm --version
|
||||||
|
|
||||||
|
ENV YARN_VERSION 1.22.17
|
||||||
|
|
||||||
|
RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \
|
||||||
|
&& for key in \
|
||||||
|
6A010C5166006599AA17F08146C2130DFD2497F5 \
|
||||||
|
; do \
|
||||||
|
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \
|
||||||
|
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \
|
||||||
|
done \
|
||||||
|
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
|
||||||
|
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
|
||||||
|
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
|
||||||
|
&& mkdir -p /opt \
|
||||||
|
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
|
||||||
|
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
|
||||||
|
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
|
||||||
|
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
|
||||||
|
&& apk del .build-deps-yarn \
|
||||||
|
# smoke test
|
||||||
|
&& yarn --version \
|
||||||
|
|
||||||
|
# Create app directory
|
||||||
|
RUN mkdir -p /usr/src/app
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
# Install app dependencies
|
||||||
|
COPY package.json /usr/src/app/
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
COPY . /usr/src/app
|
||||||
|
|
||||||
|
CMD [ "npm", "start" ]
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
wrenchboard-media-micro:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
restart: unless-stopped
|
||||||
|
# image: registry.chiefsoft.net/flutterwave-transfer-micro:latest
|
||||||
|
volumes:
|
||||||
|
- ./:/app
|
||||||
|
- '/app/node_modules'
|
||||||
|
ports:
|
||||||
|
- 3036:3000
|
||||||
|
environment:
|
||||||
|
- PORT=${WRENCHJOB_PORT}
|
||||||
|
- POSTGRE_URL=${WRENCHJOB_POSTGRE_URL}
|
||||||
|
volumes:
|
||||||
|
src:
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
const express = require('express')
|
||||||
|
const fs = require('fs')
|
||||||
|
|
||||||
|
const app = express()
|
||||||
|
//const cors = require("cors");
|
||||||
|
|
||||||
|
const videoFileMap={
|
||||||
|
'cdn':'videos/v1.mp4',
|
||||||
|
'generate-pass':'videos/v2.mp4',
|
||||||
|
'get-post':'videos/v3.mp4',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
app.get('/videos/:filename',(req, res)=>{
|
||||||
|
const fileName = req.params.filename;
|
||||||
|
const filePath = videoFileMap[fileName]
|
||||||
|
if(!filePath){
|
||||||
|
return res.status(404).send('File not found')
|
||||||
|
}
|
||||||
|
|
||||||
|
const stat = fs.statSync(filePath);
|
||||||
|
const fileSize = stat.size;
|
||||||
|
const range = req.headers.range;
|
||||||
|
|
||||||
|
if(range){
|
||||||
|
const parts = range.replace(/bytes=/, '').split('-')
|
||||||
|
const start = parseInt(parts[0], 10);
|
||||||
|
const end = parts[1] ? parseInt(parts[1], 10) : fileSize - 1;
|
||||||
|
|
||||||
|
const chunksize = end - start + 1;
|
||||||
|
const file = fs.createReadStream(filePath, {start, end});
|
||||||
|
const head = {
|
||||||
|
'Content-Range': `bytes ${start}-${end}/${fileSize}`,
|
||||||
|
'Accept-Ranges': 'bytes',
|
||||||
|
'Content-Length': chunksize,
|
||||||
|
'Content-Type': 'video/mp4'
|
||||||
|
};
|
||||||
|
res.writeHead(206, head);
|
||||||
|
file.pipe(res);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
const head = {
|
||||||
|
'Content-Length': fileSize,
|
||||||
|
'Content-Type': 'video/mp4'
|
||||||
|
};
|
||||||
|
res.writeHead(200, head);
|
||||||
|
fs.createReadStream(filePath).pipe(res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
app.listen(3036, ()=>{
|
||||||
|
console.log('server is listening on post 3036')
|
||||||
|
})
|
||||||
Generated
+3451
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"name": "node-video-server",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1",
|
||||||
|
"start": "node index.js",
|
||||||
|
"start:dev": "nodemon index.js"
|
||||||
|
},
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"axios": "^1.6.7",
|
||||||
|
"body-parser": "^1.19.0",
|
||||||
|
"openai": "^4.28.4",
|
||||||
|
"openapi-types": "^10.0.0",
|
||||||
|
"pg": "8.7.1",
|
||||||
|
"pg-pool": "^3.5.1",
|
||||||
|
"request": "^2.88.2",
|
||||||
|
"swagger-autogen": "^2.17.2",
|
||||||
|
"swagger-jsdoc": "^6.1.0",
|
||||||
|
"swagger-ui-express": "^4.3.0",
|
||||||
|
"underscore": "^1.8.3",
|
||||||
|
"url": "^0.11.0",
|
||||||
|
"winston": "^2.3.1",
|
||||||
|
"winston-papertrail": "^1.0.4",
|
||||||
|
"cors": "^2.8.5",
|
||||||
|
"express": "^4.18.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user