22 Commits

Author SHA1 Message Date
28087400b7 🚀RELEASE 0.7.2
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-16 17:57:33 +01:00
9cf8248522 Pinned knex version (thx sqlite) 2022-01-16 17:57:07 +01:00
35fafa337b Merge pull request 'Update dependency dotenv to v12' (#14) from renovate/dotenv-12.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #14
2022-01-15 11:56:58 +00:00
d0eed67697 Update dependency dotenv to v12
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2022-01-15 00:01:56 +00:00
36ce64a79d Docker speedbuild
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-12 18:26:49 +01:00
4da3cea59f 🚀RELEASE 0.7.1
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-12 18:19:24 +01:00
e06f9253cf Smol bugfix 2022-01-12 18:19:15 +01:00
93a931830f Added examples to readme
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-12 18:17:50 +01:00
85249e83b1 Updated readme w/ native provider
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-12 18:12:33 +01:00
4ee8de47cf 🚀RELEASE 0.7.0
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-12 18:04:27 +01:00
8abaabbe51 Added the new providers to the readme 2022-01-12 18:04:14 +01:00
0fa043f0df Now recognizing r/ pattern
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-12 17:54:50 +01:00
7211133aba Implemented reddit name recognition 2022-01-12 17:51:21 +01:00
d957ca52ea Removed yarn lock copy
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-12 17:40:29 +01:00
231d8ca7ee Push w/o lockfile
Some checks failed
continuous-integration/drone/push Build is failing
2022-01-12 17:33:48 +01:00
4a476e93af 🚀RELEASE 0.6.1
Some checks failed
continuous-integration/drone/push Build is failing
2022-01-12 17:31:58 +01:00
3bfcd64589 Merge pull request 'Update dependency fastify-jwt to v4' (#12) from renovate/fastify-jwt-4.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #12
2022-01-12 16:30:00 +00:00
d17825cabf Merge pull request 'Update registry.odit.services/hub/library/node Docker tag to v17' (#11) from renovate/registry.odit.services-hub-library-node-17.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #11
2022-01-12 16:29:36 +00:00
6205151d53 Merge pull request 'Update dependency dotenv to v11' (#13) from renovate/dotenv-11.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #13
2022-01-12 16:29:24 +00:00
4861ca7f3e Update dependency dotenv to v11
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2022-01-11 07:02:02 +00:00
575685f24d Update dependency fastify-jwt to v4
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2021-11-25 09:00:46 +00:00
0e9f7a526c Update registry.odit.services/hub/library/node Docker tag to v17
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2021-11-18 19:00:32 +00:00
7 changed files with 118 additions and 3515 deletions

View File

@@ -12,6 +12,20 @@ get:
path: odit-registry-builder path: odit-registry-builder
name: password name: password
---
kind: secret
name: npmjs_domain
get:
path: odit-npm-bot
name: domain
---
kind: secret
name: npmjs_token
get:
path: odit-npm-bot
name: token
--- ---
kind: pipeline kind: pipeline
type: kubernetes type: kubernetes
@@ -30,6 +44,11 @@ steps:
tags: tags:
- latest - latest
registry: registry.odit.services registry: registry.odit.services
build_args:
- NPM_REGISTRY_DOMAIN:
from_secret: npmjs_domain
- NPM_REGISTRY_TOKEN:
from_secret: npmjs_token
mtu: 1000 mtu: 1000
when: when:
branch: branch:
@@ -53,6 +72,11 @@ steps:
tags: tags:
- '${DRONE_TAG}' - '${DRONE_TAG}'
registry: registry.odit.services registry: registry.odit.services
build_args:
- NPM_REGISTRY_DOMAIN:
from_secret: npmjs_domain
- NPM_REGISTRY_TOKEN:
from_secret: npmjs_token
mtu: 1000 mtu: 1000
trigger: trigger:
event: event:

View File

@@ -2,8 +2,59 @@
All notable changes to this project will be documented in this file. Dates are displayed in UTC. All notable changes to this project will be documented in this file. Dates are displayed in UTC.
#### [0.7.2](https://git.odit.services/kauft.es/linkylinky/compare/0.7.1...0.7.2)
- Pinned knex version (thx sqlite) [`9cf8248`](https://git.odit.services/kauft.es/linkylinky/commit/9cf8248522b31e14c4f6f304f620a3040cc2f496)
- Merge pull request 'Update dependency dotenv to v12' (#14) from renovate/dotenv-12.x into main [`35fafa3`](https://git.odit.services/kauft.es/linkylinky/commit/35fafa337b81ad79a9f0f3501624ece40bda7967)
- Docker speedbuild [`36ce64a`](https://git.odit.services/kauft.es/linkylinky/commit/36ce64a79dec5e98dbc90f5d9dbb366bbaaed049)
- Update dependency dotenv to v12 [`d0eed67`](https://git.odit.services/kauft.es/linkylinky/commit/d0eed676971488b2207a05b2200283033d132cba)
#### [0.7.1](https://git.odit.services/kauft.es/linkylinky/compare/0.7.0...0.7.1)
> 12 January 2022
- Added examples to readme [`93a9318`](https://git.odit.services/kauft.es/linkylinky/commit/93a931830f853cea4502b9c74e0d74202efb23ce)
- 🚀RELEASE 0.7.1 [`4da3cea`](https://git.odit.services/kauft.es/linkylinky/commit/4da3cea59f69fe7714323935d2f2e14ba3210f13)
- Updated readme w/ native provider [`85249e8`](https://git.odit.services/kauft.es/linkylinky/commit/85249e83b1ec349d740d72394dfbda4ab4d5984e)
- Smol bugfix [`e06f925`](https://git.odit.services/kauft.es/linkylinky/commit/e06f9253cf39cd76205da448e6758ca3b51130d6)
#### [0.7.0](https://git.odit.services/kauft.es/linkylinky/compare/0.6.1...0.7.0)
> 12 January 2022
- Push w/o lockfile [`231d8ca`](https://git.odit.services/kauft.es/linkylinky/commit/231d8ca7ee0da402322afd3ac8ddce58e14943c1)
- 🚀RELEASE 0.7.0 [`4ee8de4`](https://git.odit.services/kauft.es/linkylinky/commit/4ee8de47cf227a58e8d2a2eedfc06575a1e5a1c0)
- Added the new providers to the readme [`8abaabb`](https://git.odit.services/kauft.es/linkylinky/commit/8abaabbe5170372ca35ff469cee25c65a8f3d729)
- Implemented reddit name recognition [`7211133`](https://git.odit.services/kauft.es/linkylinky/commit/7211133aba22315919443d5314594b7ec027c02b)
- Now recognizing r/ pattern [`0fa043f`](https://git.odit.services/kauft.es/linkylinky/commit/0fa043f0dfbae8b4095375b39c220a901cc6051f)
- Removed yarn lock copy [`d957ca5`](https://git.odit.services/kauft.es/linkylinky/commit/d957ca52ea2332f6cd1c5608467be6245f5082b8)
#### [0.6.1](https://git.odit.services/kauft.es/linkylinky/compare/0.6.0...0.6.1)
> 12 January 2022
- Working clientside stuff [`#3`](https://git.odit.services/kauft.es/linkylinky/issues/3)
- 🚀RELEASE 0.6.1 [`4a476e9`](https://git.odit.services/kauft.es/linkylinky/commit/4a476e93af43c8920448fcfeff3f13edc0bc0681)
- Merge pull request 'Update dependency fastify-jwt to v4' (#12) from renovate/fastify-jwt-4.x into main [`3bfcd64`](https://git.odit.services/kauft.es/linkylinky/commit/3bfcd645890253813cc2e4c740f67d577682934b)
- Merge pull request 'Update registry.odit.services/hub/library/node Docker tag to v17' (#11) from renovate/registry.odit.services-hub-library-node-17.x into main [`d17825c`](https://git.odit.services/kauft.es/linkylinky/commit/d17825cabf2d46d040bd33a3d1ad5a9d0bccfbe5)
- Merge pull request 'Update dependency dotenv to v11' (#13) from renovate/dotenv-11.x into main [`6205151`](https://git.odit.services/kauft.es/linkylinky/commit/6205151d53b374d890276d294d0abc6e6114abe5)
- Update dependency knex to ^0.95.0 [`2b93f3e`](https://git.odit.services/kauft.es/linkylinky/commit/2b93f3ea8a9b2f4be73829fb1041e6233d81fa91)
- Preleminary emoji support [`3ca5f6b`](https://git.odit.services/kauft.es/linkylinky/commit/3ca5f6b3b468ca739bc77e1d9b751625e03f300d)
- Update dependency fastify-jwt to v4 [`575685f`](https://git.odit.services/kauft.es/linkylinky/commit/575685f24d1d0a2c0574741e540f448642990cd5)
- Update dependency dotenv to v11 [`4861ca7`](https://git.odit.services/kauft.es/linkylinky/commit/4861ca7f3e3ed3e62ee774d59cb13a38d5e5e1e1)
- Update registry.odit.services/hub/library/node Docker tag to v17 [`0e9f7a5`](https://git.odit.services/kauft.es/linkylinky/commit/0e9f7a526ce5188e964e7beb78a5fb63870b473f)
- Enabled dep dashboard [`efb11f6`](https://git.odit.services/kauft.es/linkylinky/commit/efb11f6047e37901e20c613393d435f869e8a1f9)
- Merge pull request 'Update dependency knex to ^0.95.0' (#5) from renovate/knex-0.x into main [`e95ca80`](https://git.odit.services/kauft.es/linkylinky/commit/e95ca8045af6afcbc9dfcc9976d107a231d12953)
- Merge pull request 'Configure Renovate' (#4) from renovate/configure into main [`2a7a32f`](https://git.odit.services/kauft.es/linkylinky/commit/2a7a32fda615fa01751deffadafa6df1a5d0fede)
- Added 'clientside' flag to getters and setters [`11bd1b4`](https://git.odit.services/kauft.es/linkylinky/commit/11bd1b4f1f4d079b3ca047472da9da34fb64732d)
- Added migration for clientside redirects [`e321408`](https://git.odit.services/kauft.es/linkylinky/commit/e3214084f6dbf3e1595c54a9594e6d5f12323991)
- Add renovate.json [`d7428af`](https://git.odit.services/kauft.es/linkylinky/commit/d7428af1d81c820fdca7220959485f361956b86e)
#### [0.6.0](https://git.odit.services/kauft.es/linkylinky/compare/0.5.1...0.6.0) #### [0.6.0](https://git.odit.services/kauft.es/linkylinky/compare/0.5.1...0.6.0)
> 25 September 2021
- 🚀RELEASE 0.6.0 [`3803ac9`](https://git.odit.services/kauft.es/linkylinky/commit/3803ac9197a1d4c6535606cde43b1e04b3056f9c)
- Now with custom opengraph (tm) [`9d7125a`](https://git.odit.services/kauft.es/linkylinky/commit/9d7125a31186f3b7f33df4875db12c67cf91f536) - Now with custom opengraph (tm) [`9d7125a`](https://git.odit.services/kauft.es/linkylinky/commit/9d7125a31186f3b7f33df4875db12c67cf91f536)
- Added rudementary page content [`e1621b7`](https://git.odit.services/kauft.es/linkylinky/commit/e1621b72ade1fce381f30bcf310a6dcf8d1c65ea) - Added rudementary page content [`e1621b7`](https://git.odit.services/kauft.es/linkylinky/commit/e1621b72ade1fce381f30bcf310a6dcf8d1c65ea)
- Added migration for disallowing bot previews [`0a500f1`](https://git.odit.services/kauft.es/linkylinky/commit/0a500f16cde0b0e38a115dd4e76185a2a45dda49) - Added migration for disallowing bot previews [`0a500f1`](https://git.odit.services/kauft.es/linkylinky/commit/0a500f16cde0b0e38a115dd4e76185a2a45dda49)

View File

@@ -1,15 +1,16 @@
FROM registry.odit.services/hub/library/node:16.6.2-alpine3.14 FROM registry.odit.services/hub/library/node:17.0.1-alpine3.14
ARG NPM_REGISTRY_DOMAIN=registry.npmjs.org
ARG NPM_REGISTRY_TOKEN=null
WORKDIR /app WORKDIR /app
COPY package.json . COPY package.json .
COPY yarn.lock . RUN npm config set registry https://$NPM_REGISTRY_DOMAIN && npm config set //$NPM_REGISTRY_DOMAIN/:_authToken $NPM_REGISTRY_TOKEN
RUN yarn --production --frozen-lockfile RUN npm i -g pnpm && pnpm i
COPY migrations ./migrations COPY migrations ./migrations
COPY src ./src COPY src ./src
COPY knexfile.js ./ COPY knexfile.js ./
RUN mkdir db RUN mkdir db
#
# FROM astefanutti/scratch-node:16.0.0 FROM registry.odit.services/hub/library/node:17.0.1-alpine3.14
FROM registry.odit.services/hub/library/node:16.6.2-alpine3.14
WORKDIR /app WORKDIR /app
COPY --from=0 /app /app COPY --from=0 /app /app
ENV NODE_ENV production ENV NODE_ENV production

View File

@@ -4,6 +4,22 @@
<h3 align="center">A small url shortener, originaly developed for kauft.es</h3> <h3 align="center">A small url shortener, originaly developed for kauft.es</h3>
</p> </p>
## Features
* Url shortinging to 18-byte hex ids
* Special shortening "providers" for well-used services
### Provider patterns
> The base pattern is always baseurl/providerOrShortCode
| Provider | Pattern | Resolves to | Example | Notes |
| - | - | - | - | - |
| Native (Shortcode) | `/id` | Whatever the database entry points to | https://kauft.es/den-hut | None |
| YouTube (Video) | `/yt/id` | `https://youtu.be/id` | https://kauft.es/yt/dQw4w9WgXcQ | None |
| YouTube (Playlist) | `/ytpl/id` | `https://youtube.com/playlist?list=id` | https://kauft.es/ytpl/PLKIxB9vhdS_3x0A5za3mmu1wdoolgRQ65 | Remember: Private playlists will result in user-side errors |
| Amazon | `/a/id` | `https://amazon.de/dp/id` | https://kauft.es/a/B08Z2TXCPY | Recognizes all kind of cursed amazon urls (+smile and others) |
| eBay | `/e/id` | `https://ebay.de/itm/id` | https://kauft.es/e/373831556670 | Only tested with German eBay |
| Reddit | `/r/id` | `https://redd.it/id` | https://kauft.es/r/4vapin | Powered by the awesome work of u/TheAppleFreak https://kauft.es/r/4vapin |
## Dev Setup 🛠 ## Dev Setup 🛠
> Runs on port 3000 > Runs on port 3000

View File

@@ -1,6 +1,6 @@
{ {
"name": "@odit/shortener-backend", "name": "@odit/shortener-backend",
"version": "0.6.0", "version": "0.7.2",
"main": "index.js", "main": "index.js",
"license": "MIT", "license": "MIT",
"private": false, "private": false,
@@ -25,14 +25,14 @@
}, },
"dependencies": { "dependencies": {
"argon2": "^0.28.2", "argon2": "^0.28.2",
"dotenv": "^10.0.0", "dotenv": "^12.0.0",
"fastify": "^3.20.1", "fastify": "^3.20.1",
"fastify-auth": "^1.1.0", "fastify-auth": "^1.1.0",
"fastify-basic-auth": "^2.1.0", "fastify-basic-auth": "^2.1.0",
"fastify-cors": "^6.0.2", "fastify-cors": "^6.0.2",
"fastify-jwt": "^3.0.1", "fastify-jwt": "^4.0.0",
"isbot": "^3.3.3", "isbot": "^3.3.3",
"knex": "^0.95.0", "knex": "0.95.0",
"sqlite3": "^5.0.2", "sqlite3": "^5.0.2",
"uniqid": "^5.3.0" "uniqid": "^5.3.0"
}, },

View File

@@ -96,6 +96,12 @@ fastify.get('/e/:id', async (req, res) => {
await knex('visits').insert({ shortcode: req.params.id, provider: 'e' }); await knex('visits').insert({ shortcode: req.params.id, provider: 'e' });
}) })
//Automagic reddit redirects on /r/
fastify.get('/r/:id', async (req, res) => {
res.redirect(302, `https://redd.it/${req.params.id}`)
await knex('visits').insert({ shortcode: req.params.id, provider: 'r' });
})
//Normal shorturls //Normal shorturls
fastify.get('/:shortcode', async (req, res) => { fastify.get('/:shortcode', async (req, res) => {
const shortcode = req.params.shortcode; const shortcode = req.params.shortcode;
@@ -437,6 +443,16 @@ function checkKnownProviders(target) {
target target
} }
} }
const redditID = target.match(/(((((?:https?:)?\/\/)((?!about\.)[\w-]+?\.)?([rc]edd(?:it\.com|\.it)))(?!\/(?:blog|about|code|advertising|jobs|rules|wiki|contact|buttons|gold|page|help|prefs|user|message|widget)\b)((?:\/r\/[\w-]+\b(?<!\/pcmasterrace))|(?:\/tb))?(\/comments)??(\/\w{2,7}\b(?<!\/46ijrl)(?<!\/wiki))((?:(?!\))\S)*)))/);
if (redditID) {
const shortcode = `r${redditID[9]}`
return {
url: `${config.getBaseUrl()}/${shortcode}`,
shortcode,
target
}
}
return null; return null;
} }

3505
yarn.lock

File diff suppressed because it is too large Load Diff