13 Commits

Author SHA1 Message Date
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
6 changed files with 68 additions and 3511 deletions

View File

@@ -2,8 +2,40 @@
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.0](https://git.odit.services/kauft.es/linkylinky/compare/0.6.1...0.7.0)
- Push w/o lockfile [`231d8ca`](https://git.odit.services/kauft.es/linkylinky/commit/231d8ca7ee0da402322afd3ac8ddce58e14943c1)
- 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,7 +1,7 @@
FROM registry.odit.services/hub/library/node:16.6.2-alpine3.14 FROM registry.odit.services/hub/library/node:17.0.1-alpine3.14
WORKDIR /app WORKDIR /app
COPY package.json . COPY package.json .
COPY yarn.lock . # COPY yarn.lock .
RUN yarn --production --frozen-lockfile RUN yarn --production --frozen-lockfile
COPY migrations ./migrations COPY migrations ./migrations
COPY src ./src COPY src ./src
@@ -9,7 +9,7 @@ COPY knexfile.js ./
RUN mkdir db RUN mkdir db
# #
# FROM astefanutti/scratch-node:16.0.0 # FROM astefanutti/scratch-node:16.0.0
FROM registry.odit.services/hub/library/node:16.6.2-alpine3.14 FROM registry.odit.services/hub/library/node:17.0.1-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,20 @@
<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
| Provider | Pattern | Resolves to | Notes |
| - | - | - | - |
| YouTube (Video) | `/yt/id` | `https://youtu.be/id` | None |
| YouTube (Playlist) | `/ytpl/id` | `https://youtube.com/playlist?list=id` | Remember: Private playlists will result in user-side errors |
| Amazon | `/a/id` | `https://amazon.de/dp/id` | Recognizes all kind of cursed amazon urls (+smile and others) |
| eBay | `/e/id` | `https://ebay.de/itm/` | Only tested with German eBay |
| Reddit | `/r/id` | `https://redd.it/` | Powered by the awesome work of u/TheAppleFreak https://kauf.es/r/4vaqiw |
## 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.0",
"main": "index.js", "main": "index.js",
"license": "MIT", "license": "MIT",
"private": false, "private": false,
@@ -25,12 +25,12 @@
}, },
"dependencies": { "dependencies": {
"argon2": "^0.28.2", "argon2": "^0.28.2",
"dotenv": "^10.0.0", "dotenv": "^11.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",

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[9]) {
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