From 6abaf1abbbf8b8c4439b5393a959688ef0947bff Mon Sep 17 00:00:00 2001 From: swirl Date: Sat, 28 Aug 2021 17:40:36 -0400 Subject: [PATCH] switch to FS-based storage removed all SQLite stuff, and switched to a fully filesystem-based storage system, which just uses plain files. also moved self-host instructions to README --- README.md | 120 +- doc/link.conf | 5 +- doc/link.service | 2 +- go.mod | 6 - go.sum | 14 - index.html | 92 +- main.go | 338 +- makefile | 8 +- vendor/github.com/jinzhu/inflection/LICENSE | 21 - vendor/github.com/jinzhu/inflection/README.md | 55 - vendor/github.com/jinzhu/inflection/go.mod | 1 - .../jinzhu/inflection/inflections.go | 273 - .../github.com/jinzhu/inflection/wercker.yml | 23 - vendor/github.com/jinzhu/now/Guardfile | 3 - vendor/github.com/jinzhu/now/License | 21 - vendor/github.com/jinzhu/now/README.md | 131 - vendor/github.com/jinzhu/now/go.mod | 3 - vendor/github.com/jinzhu/now/main.go | 194 - vendor/github.com/jinzhu/now/now.go | 212 - vendor/github.com/jinzhu/now/time.go | 9 - vendor/github.com/jinzhu/now/wercker.yml | 23 - .../github.com/mattn/go-sqlite3/.codecov.yml | 4 - vendor/github.com/mattn/go-sqlite3/.gitignore | 14 - vendor/github.com/mattn/go-sqlite3/LICENSE | 21 - vendor/github.com/mattn/go-sqlite3/README.md | 590 - vendor/github.com/mattn/go-sqlite3/backup.go | 85 - .../github.com/mattn/go-sqlite3/callback.go | 392 - vendor/github.com/mattn/go-sqlite3/convert.go | 299 - vendor/github.com/mattn/go-sqlite3/doc.go | 135 - vendor/github.com/mattn/go-sqlite3/error.go | 150 - vendor/github.com/mattn/go-sqlite3/go.mod | 3 - vendor/github.com/mattn/go-sqlite3/go.sum | 0 .../mattn/go-sqlite3/sqlite3-binding.c | 230877 --------------- .../mattn/go-sqlite3/sqlite3-binding.h | 12275 - vendor/github.com/mattn/go-sqlite3/sqlite3.go | 2157 - .../mattn/go-sqlite3/sqlite3_context.go | 103 - .../mattn/go-sqlite3/sqlite3_func_crypt.go | 120 - .../mattn/go-sqlite3/sqlite3_go18.go | 70 - .../mattn/go-sqlite3/sqlite3_libsqlite3.go | 19 - .../go-sqlite3/sqlite3_load_extension.go | 84 - .../go-sqlite3/sqlite3_load_extension_omit.go | 24 - .../sqlite3_opt_allow_uri_authority.go | 15 - .../mattn/go-sqlite3/sqlite3_opt_app_armor.go | 16 - .../go-sqlite3/sqlite3_opt_foreign_keys.go | 15 - .../mattn/go-sqlite3/sqlite3_opt_fts5.go | 14 - .../mattn/go-sqlite3/sqlite3_opt_icu.go | 17 - .../go-sqlite3/sqlite3_opt_introspect.go | 15 - .../mattn/go-sqlite3/sqlite3_opt_json1.go | 13 - .../mattn/go-sqlite3/sqlite3_opt_preupdate.go | 20 - .../go-sqlite3/sqlite3_opt_preupdate_hook.go | 112 - .../go-sqlite3/sqlite3_opt_preupdate_omit.go | 21 - .../go-sqlite3/sqlite3_opt_secure_delete.go | 15 - .../sqlite3_opt_secure_delete_fast.go | 15 - .../mattn/go-sqlite3/sqlite3_opt_stat4.go | 15 - .../go-sqlite3/sqlite3_opt_unlock_notify.c | 85 - .../go-sqlite3/sqlite3_opt_unlock_notify.go | 93 - .../mattn/go-sqlite3/sqlite3_opt_userauth.go | 289 - .../go-sqlite3/sqlite3_opt_userauth_omit.go | 152 - .../go-sqlite3/sqlite3_opt_vacuum_full.go | 15 - .../go-sqlite3/sqlite3_opt_vacuum_incr.go | 15 - .../mattn/go-sqlite3/sqlite3_opt_vtable.go | 660 - .../mattn/go-sqlite3/sqlite3_other.go | 17 - .../mattn/go-sqlite3/sqlite3_solaris.go | 14 - .../mattn/go-sqlite3/sqlite3_trace.go | 287 - .../mattn/go-sqlite3/sqlite3_type.go | 62 - .../go-sqlite3/sqlite3_usleep_windows.go | 39 - .../mattn/go-sqlite3/sqlite3_windows.go | 18 - .../github.com/mattn/go-sqlite3/sqlite3ext.h | 664 - .../mattn/go-sqlite3/static_mock.go | 37 - vendor/gorm.io/driver/sqlite/License | 21 - vendor/gorm.io/driver/sqlite/README.md | 17 - vendor/gorm.io/driver/sqlite/errors.go | 7 - vendor/gorm.io/driver/sqlite/go.mod | 8 - vendor/gorm.io/driver/sqlite/go.sum | 8 - vendor/gorm.io/driver/sqlite/migrator.go | 285 - vendor/gorm.io/driver/sqlite/sqlite.go | 180 - vendor/gorm.io/gorm/.gitignore | 5 - vendor/gorm.io/gorm/License | 21 - vendor/gorm.io/gorm/README.md | 42 - vendor/gorm.io/gorm/association.go | 513 - vendor/gorm.io/gorm/callbacks.go | 327 - vendor/gorm.io/gorm/callbacks/associations.go | 390 - vendor/gorm.io/gorm/callbacks/callbacks.go | 83 - vendor/gorm.io/gorm/callbacks/callmethod.go | 23 - vendor/gorm.io/gorm/callbacks/create.go | 370 - vendor/gorm.io/gorm/callbacks/delete.go | 168 - vendor/gorm.io/gorm/callbacks/helper.go | 95 - vendor/gorm.io/gorm/callbacks/interfaces.go | 39 - vendor/gorm.io/gorm/callbacks/preload.go | 164 - vendor/gorm.io/gorm/callbacks/query.go | 228 - vendor/gorm.io/gorm/callbacks/raw.go | 16 - vendor/gorm.io/gorm/callbacks/row.go | 21 - vendor/gorm.io/gorm/callbacks/transaction.go | 31 - vendor/gorm.io/gorm/callbacks/update.go | 261 - vendor/gorm.io/gorm/chainable_api.go | 293 - vendor/gorm.io/gorm/clause/clause.go | 88 - vendor/gorm.io/gorm/clause/delete.go | 23 - vendor/gorm.io/gorm/clause/expression.go | 344 - vendor/gorm.io/gorm/clause/from.go | 37 - vendor/gorm.io/gorm/clause/group_by.go | 48 - vendor/gorm.io/gorm/clause/insert.go | 39 - vendor/gorm.io/gorm/clause/joins.go | 47 - vendor/gorm.io/gorm/clause/limit.go | 48 - vendor/gorm.io/gorm/clause/locking.go | 31 - vendor/gorm.io/gorm/clause/on_conflict.go | 52 - vendor/gorm.io/gorm/clause/order_by.go | 54 - vendor/gorm.io/gorm/clause/returning.go | 30 - vendor/gorm.io/gorm/clause/select.go | 45 - vendor/gorm.io/gorm/clause/set.go | 60 - vendor/gorm.io/gorm/clause/update.go | 38 - vendor/gorm.io/gorm/clause/values.go | 45 - vendor/gorm.io/gorm/clause/where.go | 177 - vendor/gorm.io/gorm/clause/with.go | 4 - vendor/gorm.io/gorm/errors.go | 42 - vendor/gorm.io/gorm/finisher_api.go | 649 - vendor/gorm.io/gorm/go.mod | 8 - vendor/gorm.io/gorm/go.sum | 4 - vendor/gorm.io/gorm/gorm.go | 441 - vendor/gorm.io/gorm/interfaces.go | 63 - vendor/gorm.io/gorm/logger/logger.go | 187 - vendor/gorm.io/gorm/logger/sql.go | 133 - vendor/gorm.io/gorm/migrator.go | 81 - vendor/gorm.io/gorm/migrator/migrator.go | 758 - vendor/gorm.io/gorm/model.go | 15 - vendor/gorm.io/gorm/prepare_stmt.go | 169 - vendor/gorm.io/gorm/scan.go | 251 - vendor/gorm.io/gorm/schema/check.go | 37 - vendor/gorm.io/gorm/schema/field.go | 834 - vendor/gorm.io/gorm/schema/index.go | 141 - vendor/gorm.io/gorm/schema/interfaces.go | 25 - vendor/gorm.io/gorm/schema/naming.go | 154 - vendor/gorm.io/gorm/schema/relationship.go | 616 - vendor/gorm.io/gorm/schema/schema.go | 283 - vendor/gorm.io/gorm/schema/utils.go | 197 - vendor/gorm.io/gorm/soft_delete.go | 138 - vendor/gorm.io/gorm/statement.go | 674 - vendor/gorm.io/gorm/utils/utils.go | 113 - vendor/modules.txt | 20 - 138 files changed, 294 insertions(+), 262291 deletions(-) delete mode 100644 vendor/github.com/jinzhu/inflection/LICENSE delete mode 100644 vendor/github.com/jinzhu/inflection/README.md delete mode 100644 vendor/github.com/jinzhu/inflection/go.mod delete mode 100644 vendor/github.com/jinzhu/inflection/inflections.go delete mode 100644 vendor/github.com/jinzhu/inflection/wercker.yml delete mode 100644 vendor/github.com/jinzhu/now/Guardfile delete mode 100644 vendor/github.com/jinzhu/now/License delete mode 100644 vendor/github.com/jinzhu/now/README.md delete mode 100644 vendor/github.com/jinzhu/now/go.mod delete mode 100644 vendor/github.com/jinzhu/now/main.go delete mode 100644 vendor/github.com/jinzhu/now/now.go delete mode 100644 vendor/github.com/jinzhu/now/time.go delete mode 100644 vendor/github.com/jinzhu/now/wercker.yml delete mode 100644 vendor/github.com/mattn/go-sqlite3/.codecov.yml delete mode 100644 vendor/github.com/mattn/go-sqlite3/.gitignore delete mode 100644 vendor/github.com/mattn/go-sqlite3/LICENSE delete mode 100644 vendor/github.com/mattn/go-sqlite3/README.md delete mode 100644 vendor/github.com/mattn/go-sqlite3/backup.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/callback.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/convert.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/doc.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/error.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/go.mod delete mode 100644 vendor/github.com/mattn/go-sqlite3/go.sum delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_context.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension_omit.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_allow_uri_authority.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_app_armor.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_foreign_keys.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_fts5.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_icu.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_introspect.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_json1.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_hook.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_omit.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete_fast.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_stat4.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth_omit.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_full.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_incr.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vtable.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_other.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_type.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go delete mode 100644 vendor/github.com/mattn/go-sqlite3/sqlite3ext.h delete mode 100644 vendor/github.com/mattn/go-sqlite3/static_mock.go delete mode 100644 vendor/gorm.io/driver/sqlite/License delete mode 100644 vendor/gorm.io/driver/sqlite/README.md delete mode 100644 vendor/gorm.io/driver/sqlite/errors.go delete mode 100644 vendor/gorm.io/driver/sqlite/go.mod delete mode 100644 vendor/gorm.io/driver/sqlite/go.sum delete mode 100644 vendor/gorm.io/driver/sqlite/migrator.go delete mode 100644 vendor/gorm.io/driver/sqlite/sqlite.go delete mode 100644 vendor/gorm.io/gorm/.gitignore delete mode 100644 vendor/gorm.io/gorm/License delete mode 100644 vendor/gorm.io/gorm/README.md delete mode 100644 vendor/gorm.io/gorm/association.go delete mode 100644 vendor/gorm.io/gorm/callbacks.go delete mode 100644 vendor/gorm.io/gorm/callbacks/associations.go delete mode 100644 vendor/gorm.io/gorm/callbacks/callbacks.go delete mode 100644 vendor/gorm.io/gorm/callbacks/callmethod.go delete mode 100644 vendor/gorm.io/gorm/callbacks/create.go delete mode 100644 vendor/gorm.io/gorm/callbacks/delete.go delete mode 100644 vendor/gorm.io/gorm/callbacks/helper.go delete mode 100644 vendor/gorm.io/gorm/callbacks/interfaces.go delete mode 100644 vendor/gorm.io/gorm/callbacks/preload.go delete mode 100644 vendor/gorm.io/gorm/callbacks/query.go delete mode 100644 vendor/gorm.io/gorm/callbacks/raw.go delete mode 100644 vendor/gorm.io/gorm/callbacks/row.go delete mode 100644 vendor/gorm.io/gorm/callbacks/transaction.go delete mode 100644 vendor/gorm.io/gorm/callbacks/update.go delete mode 100644 vendor/gorm.io/gorm/chainable_api.go delete mode 100644 vendor/gorm.io/gorm/clause/clause.go delete mode 100644 vendor/gorm.io/gorm/clause/delete.go delete mode 100644 vendor/gorm.io/gorm/clause/expression.go delete mode 100644 vendor/gorm.io/gorm/clause/from.go delete mode 100644 vendor/gorm.io/gorm/clause/group_by.go delete mode 100644 vendor/gorm.io/gorm/clause/insert.go delete mode 100644 vendor/gorm.io/gorm/clause/joins.go delete mode 100644 vendor/gorm.io/gorm/clause/limit.go delete mode 100644 vendor/gorm.io/gorm/clause/locking.go delete mode 100644 vendor/gorm.io/gorm/clause/on_conflict.go delete mode 100644 vendor/gorm.io/gorm/clause/order_by.go delete mode 100644 vendor/gorm.io/gorm/clause/returning.go delete mode 100644 vendor/gorm.io/gorm/clause/select.go delete mode 100644 vendor/gorm.io/gorm/clause/set.go delete mode 100644 vendor/gorm.io/gorm/clause/update.go delete mode 100644 vendor/gorm.io/gorm/clause/values.go delete mode 100644 vendor/gorm.io/gorm/clause/where.go delete mode 100644 vendor/gorm.io/gorm/clause/with.go delete mode 100644 vendor/gorm.io/gorm/errors.go delete mode 100644 vendor/gorm.io/gorm/finisher_api.go delete mode 100644 vendor/gorm.io/gorm/go.mod delete mode 100644 vendor/gorm.io/gorm/go.sum delete mode 100644 vendor/gorm.io/gorm/gorm.go delete mode 100644 vendor/gorm.io/gorm/interfaces.go delete mode 100644 vendor/gorm.io/gorm/logger/logger.go delete mode 100644 vendor/gorm.io/gorm/logger/sql.go delete mode 100644 vendor/gorm.io/gorm/migrator.go delete mode 100644 vendor/gorm.io/gorm/migrator/migrator.go delete mode 100644 vendor/gorm.io/gorm/model.go delete mode 100644 vendor/gorm.io/gorm/prepare_stmt.go delete mode 100644 vendor/gorm.io/gorm/scan.go delete mode 100644 vendor/gorm.io/gorm/schema/check.go delete mode 100644 vendor/gorm.io/gorm/schema/field.go delete mode 100644 vendor/gorm.io/gorm/schema/index.go delete mode 100644 vendor/gorm.io/gorm/schema/interfaces.go delete mode 100644 vendor/gorm.io/gorm/schema/naming.go delete mode 100644 vendor/gorm.io/gorm/schema/relationship.go delete mode 100644 vendor/gorm.io/gorm/schema/schema.go delete mode 100644 vendor/gorm.io/gorm/schema/utils.go delete mode 100644 vendor/gorm.io/gorm/soft_delete.go delete mode 100644 vendor/gorm.io/gorm/statement.go delete mode 100644 vendor/gorm.io/gorm/utils/utils.go delete mode 100644 vendor/modules.txt diff --git a/README.md b/README.md index 90f58aa..6bba28f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,121 @@ -Fork of [link](https://fsh.ee/) which adds query-string support. +Fork of [link](https://fsh.ee/) with extra features, a filesystem-based backend, and more. Please access this project on my [Gitea](https://git.swurl.xyz/swirl/link) instance, NOT GitHub. + +# Self-Hosting +You can host this yourself. + +Note: all commands here are done as root. + +## Building & Installing +To build this project, you'll need [Go](https://golang.org/doc/install) and [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). Most Linux distributions should have these in their repositories, i.e.: +- `pacman -S go git` +- `emerge --ask dev-lang/go dev-vcs/git` +- `apt install go git` + +1. Clone this repository: + +```bash +git clone https://git.swurl.xyz/swirl/link && cd link +``` + +2. Compile: +```bash +make +``` + +3. Now, you need to install. NGINX and systemd files are provided in this project; you may choose not to install them. + +For all install commands, you may optionally provide `prefix` and `DESTDIR` options. This is useful for packagers; i.e. for a PKGBUILD: `make prefix=/usr DESTDIR=${pkgdir} install`. + +Available install commands are as follows: +- `make install` installs the executable, NGINX, and systemd files. +- `make install-bin` installs the executable file. +- `make install-systemd` installs the systemd file, as well as its environment file. +- `make install-nginx` installs the NGINX file. + +For example, on a non-systemd system using NGINX, you would run `make install-bin install-nginx`. + +4. If using systemd, change the environment file to reflect your desired options: +```bash +vim /etc/link.conf +``` + +5. You can now enable and start the service: +```bash +systemctl enable --now link +``` + +The server should now be running on localhost at port 8080. + +## NGINX Reverse Proxy +An NGINX file is provided with this project. Sorry, no support for Apache or lighttpd or anything else; should've chosen a better HTTP server. + +For this, you'll need [NGINX](https://nginx.org/en/download.html) (obviously), certbot, and its NGINX plugin. Most Linux distributions should have these in their repositories, i.e.: +- `pacman -S nginx certbot-nginx` +- `emerge --ask www-servers/nginx app-crypt/certbot-nginx` +- `apt install nginx python-certbot-nginx` + +This section assumes you've already followed the last. + +1. Change the domain in the NGINX file: +```bash +sed -i 's/your.doma.in/[DOMAIN HERE]' /etc/nginx/sites-available/link +``` + +2. Enable the site: +```bash +ln -s /etc/nginx/sites-{available,enabled}/link +``` + +3. Enable HTTPS for the site: +```bash +certbot --nginx -d [DOMAIN HERE] +``` + +4. Enable and start NGINX: +```bash +systemctl enable --now nginx +``` + +If it's already running, reload: +```bash +systemctl reload nginx +``` + +Your site should be running at https://your.doma.in. Test it by going there, and trying the examples. If they don't work, open an issue. + +# Contributions +Contributions are always welcome. + +# FAQ +## A user has made a link to a bad site! What do I do? +Clean it up, janny! + +Deleting a link can be done simply by running: +```bash +rm /srv/link/*/BADLINKHERE +``` + +Replace `/srv/link` with whatever your data directory is. + +## Can I prevent users from making links to specific sites (i.e. illegal content)? +Not currently. Might implement this in the future. + +## Can I run this in a subdirectory of my site? +Yes. Simply put the `proxy_pass` directive in a subdirectory, i.e.: +``` +location /shortener { + proxy_pass http://localhost:8080; +} +``` + +## Why'd you make this fork? +While link was by far the best link shortener I could find, it had a few problems: +- No query-string support: had to make POST requests +- Didn't decode URLs +- SQLite is not the greatest storage method out there +- No pre-provided systemd or NGINX files +- No `install` target for the makefile + +The first two are mostly problems when using them with specific services; i.e. PrivateBin, which expects to be able to use query-strings and encoded URLs. diff --git a/doc/link.conf b/doc/link.conf index 2a9a4dd..c64367a 100644 --- a/doc/link.conf +++ b/doc/link.conf @@ -1,6 +1,7 @@ -BIN="BINDIR/BINNAME" # replace this with the path to link (usually /usr/local/bin/linkserv by default) +BIN="BINDIR/BINNAME" +# replace this with the path to link (usually /usr/local/bin/linkserv by default) COPY="2021 you@your.doma.in" -DB="/srv/link/link.db" +DIR="/srv/link/" PORT=8080 SEED="secret" URL="https://your.doma.in" diff --git a/doc/link.service b/doc/link.service index 22576d9..5ed94a8 100644 --- a/doc/link.service +++ b/doc/link.service @@ -4,7 +4,7 @@ After=network.target [Service] EnvironmentFile=/etc/link.conf -ExecStart=/bin/sh -c '"${BIN}" -copy "${COPY}" -db "${DB}" -port ${PORT} -seed "${SEED}" -url "${URL}"' +ExecStart=/bin/sh -c '"${BIN}" -copy "${COPY}" -path "${DIR}" -port ${PORT} -seed "${SEED}" -url "${URL}"' [Install] WantedBy=multi-user.target diff --git a/go.mod b/go.mod index 0e543fc..1075be3 100644 --- a/go.mod +++ b/go.mod @@ -1,9 +1,3 @@ module git.swurl.xyz/swirl/link go 1.16 - -require ( - golang.org/dl v0.0.0-20210805175753-70f86bf65abd // indirect - gorm.io/driver/sqlite v1.1.4 - gorm.io/gorm v1.21.9 -) diff --git a/go.sum b/go.sum index 1231ce5..e69de29 100644 --- a/go.sum +++ b/go.sum @@ -1,14 +0,0 @@ -github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= -github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= -github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jinzhu/now v1.1.2 h1:eVKgfIdy9b6zbWBMgFpfDPoAMifwSZagU9HmEU6zgiI= -github.com/jinzhu/now v1.1.2/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/mattn/go-sqlite3 v1.14.5 h1:1IdxlwTNazvbKJQSxoJ5/9ECbEeaTTyeU7sEAZ5KKTQ= -github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= -golang.org/dl v0.0.0-20210805175753-70f86bf65abd h1:zTi7rOU7NMmBInGr/IFQrDXBgYZ2VCO7BlylmxGpQTs= -golang.org/dl v0.0.0-20210805175753-70f86bf65abd/go.mod h1:IUMfjQLJQd4UTqG1Z90tenwKoCX93Gn3MAQJMOSBsDQ= -gorm.io/driver/sqlite v1.1.4 h1:PDzwYE+sI6De2+mxAneV9Xs11+ZyKV6oxD3wDGkaNvM= -gorm.io/driver/sqlite v1.1.4/go.mod h1:mJCeTFr7+crvS+TRnWc5Z3UvwxUN1BGBLMrf5LA9DYw= -gorm.io/gorm v1.20.7/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= -gorm.io/gorm v1.21.9 h1:INieZtn4P2Pw6xPJ8MzT0G4WUOsHq3RhfuDF1M6GW0E= -gorm.io/gorm v1.21.9/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0= diff --git a/index.html b/index.html index c93ce1b..f88b866 100644 --- a/index.html +++ b/index.html @@ -1,17 +1,17 @@ - A Minimal, SQLite-Backed URL Shortener + A Minimal, Filesystem-Backed URL Shortener - +
-A Minimal, SQLite-Backed URL Shortener +A Minimal, Filesystem-Backed URL Shortener