Simple bookmark manager built with Go
Find a file
Tomi lla dde1b44e77
fix(log): record user real ip from headers (#603)
* fix(real_ip): get user real ip from headers of request

* fix(real_ip): compatible with those header with multiple IP values separated by commas

* test(real_ip): add benchmark for IPv4 and IPv6 private address check

* fix(real_ip): check empty, then remove leading and tailing comma char, finally locate first IP field

* test(real_ip): move checker logic into utils and add more unit test cases

* test(real_ip): write unit tests covering all code branches of the `util-ip` module

* refactor(real_ip): use one-line `testify.assert.Panics` to capture intended panic in test case

* chore(real_ip): add module private variable `UserRealIpHeaderCandidates`

put those headers together, make it easy to manage in one place

* doc(real_ip): write docstring for each function in the `utils-ip` module

* chore(real_ip): choose more concrete and unambiguous name for test helper function

It is to avoid polluting the module name-space with too general names.

* chore(naming): change function names according to code style

* refactor(real_ip): simplify the code indicated by 'gosimple' and `golangci`

* chore(naming): rename the `utils-ip` file to `utils_ip` to match with the rest of the file structure

---------

Co-authored-by: Felipe Martin <812088+fmartingr@users.noreply.github.com>
2023-06-11 21:25:23 +02:00
.githooks Add GitHub Action for tests & coverage 2020-08-06 21:08:43 +02:00
.github Update dependencies (#616) 2023-06-11 21:10:15 +02:00
docs Update dependencies (#616) 2023-06-11 21:10:15 +02:00
internal fix(log): record user real ip from headers (#603) 2023-06-11 21:25:23 +02:00
.dockerignore Setup new CI/CD workflows (#365) 2022-02-13 16:38:54 +01:00
.gitignore feat: sqlite migrations (#398) 2022-03-26 08:33:57 +01:00
.goreleaser.yaml Setup new CI/CD workflows (#365) 2022-02-13 16:38:54 +01:00
app.json Revert "Restructure build files" 2019-09-26 16:25:19 +07:00
CODE_OF_CONDUCT.md Update links and email addresses 2020-08-06 22:26:59 +02:00
docker-compose.yaml Update dependencies (#616) 2023-06-11 21:10:15 +02:00
Dockerfile feat: upgrade to go 1.19 (#469) 2022-08-11 14:22:10 +02:00
Dockerfile.compose Remove typo in post-run command (#527) 2022-10-28 09:03:48 +02:00
go.mod Update dependencies (#616) 2023-06-11 21:10:15 +02:00
go.sum Update dependencies (#616) 2023-06-11 21:10:15 +02:00
LICENSE Update LICENSE 2019-01-06 17:00:20 +07:00
main.go Add log args for root command (#565) 2023-03-17 13:37:23 +01:00
modd.conf Add GitHub Action for tests & coverage 2020-08-06 21:08:43 +02:00
Procfile Added Heroku deploy. Fixed go-shiori/shiori#45 2019-09-25 13:45:08 +03:00
README.md docs: migrate documentation from the wiki (#394) 2022-05-26 19:49:30 +02:00

Shiori

IC Go Report Card #shiori@libera.chat Containers

Check out our latest Announcements

Shiori is a simple bookmarks manager written in the Go language. Intended as a simple clone of Pocket. You can use it as a command line application or as a web application. This application is distributed as a single binary, which means it can be installed and used easily.

Screenshot

Features

  • Basic bookmarks management i.e. add, edit, delete and search.
  • Import and export bookmarks from and to Netscape Bookmark file.
  • Import bookmarks from Pocket.
  • Simple and clean command line interface.
  • Simple and pretty web interface for those who don't want to use a command line app.
  • Portable, thanks to its single binary format.
  • Support for sqlite3, PostgreSQL and MySQL as its database.
  • Where possible, by default shiori will parse the readable content and create an offline archive of the webpage.
  • [BETA] web extension support for Firefox and Chrome.

Comparison of reader mode and archive mode

Documentation

All documentation is available in the docs folder. If you think there is incomplete or incorrect information, feel free to edit it by submitting a pull request.

License

Shiori is distributed under the terms of the MIT license, which means you can use it and modify it however you want. However, if you make an enhancement for it, if possible, please send a pull request.