Commit graph

771 commits

Author SHA1 Message Date
ze0s
5328078b32
fix(filters): RED and OPS lossless parsing and filtering (#1373)
* fix(filters): RED and OPS lossless parsing and filtering

* fix(filters): logscore and EP parsing

* fix(filters): tests

* fix(filters): tests

* feat(definitions): RED parse title variable

* feat(indexers): setup indexer to filter tests

* feat(indexers): tests and improve parsing

* feat(indexers): improve tests
2024-01-28 22:03:25 +01:00
martylukyy
f979b9adc8
feat(indexers): add TorrentSeeds Music (#1363)
feat(indexers): torrentseeds-music.yaml
2024-01-27 21:55:34 +01:00
Kyle Sanderson
cdd91d27e5
feat(feeds): improve RSS size parsing (#1367)
* fix(feeds): Parse multiple sizes.

* refactor: Test_pullSizeFromDescription

* refactor: make test human readable

added helper function

* multi

* Agnewwwwww

* .

* humanize

* humanize

---------

Co-authored-by: soup <soup@r4tio.dev>
2024-01-27 12:52:11 -08:00
Vince Villamora
16bf2a52fd
feat(macros): add Group (#1378) 2024-01-26 16:26:18 +01:00
ze0s
fffd5bbf56
feat(indexers): GGn improve release name parsing (#1366)
* feat(indexers): GGn improve IRC parsing

* chore: organize imports
2024-01-24 17:58:46 +01:00
ze0s
ae4427175f
fix(notifications): Pushover and Telegram formatting (#1362)
* fix(notifications): Pushover and Telegram formatting

* fix(notifications): html builder

* fix(notifications): escape html

* fix(notifications): escaping
2024-01-23 13:03:20 +01:00
ze0s
f488c88f1b
fix(auth): force invalidate invalid session cookies in middleware (#1358)
* fix(auth): invalidate session cookies in middleware

* fix(auth): set path for invalid cookie
2024-01-20 20:10:26 +01:00
luckyboy
a86258aaa7
feat(filters): implement min and max seeders/leechers filtering for Torznab feeds (#1342)
* feat(filter):implement min and max seeders/leechers filtering

* chore: go fmt and reorder fields

---------

Co-authored-by: ze0s <ze0s@riseup.net>
2024-01-12 17:08:18 +01:00
Frederick Robinson
256fbb49ba
docs(filters): explain GetDownloadsByFilterId (#1345)
add comment about GetDownloadsByFilterId
2024-01-10 17:37:18 +01:00
ze0s
9992675971
feat(releases): show details in list view (#1337)
* feat(releases): show details in list view

* fix(releases): activitytable columns type

* fix(releases): incognito mode

* feat(releases): move details button

* do we wanna truncate?

* fix(web): release column width at full size

---------

Co-authored-by: martylukyy <35452459+martylukyy@users.noreply.github.com>
2024-01-02 21:53:38 +01:00
ze0s
7eaf499d66
fix(notifications): ntfy and shoutrrr enabled check (#1335) 2024-01-01 18:07:22 +01:00
ze0s
fbabdfb217
feat(clients): override arr download client by name (#1328)
* feat(clients): override arr client by name

* feat(clients): add missing file

* feat(clients): add section download client arr
2024-01-01 17:57:19 +01:00
ze0s
45b522abf8
chore: update license header year (#1332)
* chore: update license header year

* chore: update license header year tsx files

* chore: update license header
2024-01-01 16:21:02 +01:00
Kyle Sanderson
27827247d4
fix(indexers): DocsPedia adjust announcer name (#1330)
fix(indexers): fix adjuster name for docspedia
2024-01-01 16:17:02 +01:00
ze0s
a0a81ed34c
fix(filters): ensure sort by priority (#1325)
* fix(filters): sort filters from filtersMap

* fix(filters): use slices.SortStableFunc and fix tests

* fix(filters): add local cmp pkg before go 1.21
2023-12-31 14:59:12 +01:00
ze0s
57a91bb99a
feat(notifications): add Shoutrrr support (#1326) 2023-12-30 16:34:25 +01:00
ze0s
3dd1629a3f
feat(notifications): add ntfy support (#1323)
* feat(notifications): add ntfy support

* fix(test): update

* fix: added missing semicolon
2023-12-30 13:49:06 +01:00
Kyle Sanderson
3234f0d919
refactor(http): implement shared transport and clients (#1288)
* fix(http): flip to a shared transport and clients

* nice threads

* that is terrible

* fake uri for magnet

* lazy locking

* why bother with r's

* flip magic params to struct

* refactor(http-clients): use separate clients with shared transport

* refactor(http-clients): add missing license header

* refactor(http-clients): defer and fix errors

---------

Co-authored-by: ze0s <ze0s@riseup.net>
2023-12-29 23:49:22 +01:00
soup
2a4fb7750b
feat(actions): deluge v2 add skip recheck (#1321)
* feat(actions): add skip recheck for deluge v2

* chore(deps): update go-deluge to v1.2.0
2023-12-28 16:59:17 +01:00
soup
ebbd851a2e
feat(autobrrctl): add db migrate/seed/reset functionality (#934)
* add db seed/reset functionality

* speculative db migration support

* update postgresSchema

* refactor: only migrate data, no schema

* implement transaction in db migration function

* refactor db:seed and db:reset

added transaction to both and updated help message

* change table order

* skip on foreign key constraint violations

* skip feed_cache

* set constraints to null

* fix seed and reset

* simplify migrate func

This version of the function should behave similarly to the previous version, but with less repetition and by relying on PostgreSQL's automatic transaction handling, which starts a new transaction for each separate statement when not in a transaction block. Also, it prepares the insert statement only once for each table, which can significantly improve performance when there are many rows to insert.

* fixed release_action_status

* refactor db:seed and db:reset

* minor adjustment to const usage

* fixed usage examples

* refactor seed/migrate

* refactor(database): seed and convert

* refactor(database): make tables list sorted a-z

* chore(deps): go mod tidy

* refactor(database): convert improve log output

---------

Co-authored-by: ze0s <ze0s@riseup.net>
2023-12-28 14:05:51 +01:00
Kyle Sanderson
6a94ecacca
refactor(http): auth handlers (#1311)
* fix(auth): implement invalid cookie handling

* that escalated quickly

* refactor(http): auth handlers

* add tests for auth handler
* refactor methods

* chore(tests): add header and build tag

* add build tag integration

* chore(tests): run in ci

---------

Co-authored-by: ze0s <ze0s@riseup.net>
2023-12-28 02:04:25 +01:00
KaiserBh
df2612602b
feat(auth): change password and username (#1295)
* feat(backend): added change password api endpoint.

* feat(web): added profile UI to change password.

I think we can change the username too, but I don't know if we should for now disabled the username field.

* refactor: don't leak username or password.

* refactor: protect the route.

* generic

* feat: add ChangeUsername

* fix(tests): speculative fix for TestUserRepo_Update

* Revert "feat: add ChangeUsername"

This reverts commit d4c1645002883a278aa45dec3c8c19fa1cc75d9b.

* refactor into 1 endpoint that handles both

* feat: added option to change username as well. :pain:

* refactor: frontend

* refactor: function names in backend

I think this makes it more clear what their function is

* fix: change to 2 cols with separator

* refactor: update user

* fix: test db create user

---------

Co-authored-by: Kyle Sanderson <kyle.leet@gmail.com>
Co-authored-by: soup <soup@r4tio.dev>
Co-authored-by: martylukyy <35452459+martylukyy@users.noreply.github.com>
Co-authored-by: ze0s <ze0s@riseup.net>
2023-12-26 15:50:57 +01:00
Frederick Robinson
d898b3cd8d
refactor(filters): checkMaxDownloads (#1285)
* refactor

* fix: comment

---------

Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
2023-12-25 22:54:52 +01:00
soup
c6122dbc41
feat(actions): qBittorrent add priority handling (#1315)
* feat(qbittorrent): add priority handling

* fix: check if torrent queueing is enabled

* fix: only check for torrent queueing if priority is set

* fix: improve tooltip message

* feat: enable torrent queueing if disabled

* change to SetPreferencesQueueingEnabled

* feat(actions): rename field

* chore: bump pkg go-qbittorrent to v1.8.0

* chore(deps): update go-qbittorrent to v1.8.1

* chore(deps): go mod tidy

---------

Co-authored-by: ze0s <ze0s@riseup.net>
2023-12-25 22:39:31 +01:00
Rohit Vardam
1563ce5e9f
fix(filters): do not split commas inside valid Regexp (#1212)
* fix(filter): matchRegex

* fix(filter): matchRegex use new splitter
2023-12-25 15:45:50 +01:00
KaiserBh
e63aec1ab2
enhancement(feeds): change max age default value to 0 (#1313)
* refactor: update help text for RSS, TORZNAB, and NEWZNAB

* refactor: change default to 0.

* fix: update sqlite_migrate.go

---------

Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
2023-12-25 15:11:26 +01:00
soup
3b60365483
feat(web): link Dashboard stats to Releases page (#1281)
* feat(web): link stats to release table

- added Errored Pushes
- Made Recent Activity same color as Stats

* feat(releasetable): made links a separate row

https://i.imgur.com/ZoAOrXP.png

remove comment

* added LinkIcon to StatsItem

- Changed grid-cols to 2, as we now have 4 for narrow widths

* fix linting

* move some text modifier to parent element

* feat: add scale on hover with transition

deduplicated some classes

* adapt gap between StatsItems for mobile
remove border and title on stats divs

---------

Co-authored-by: Fabricio Silva <hi@fabricio.dev>
Co-authored-by: martylukyy <35452459+martylukyy@users.noreply.github.com>
2023-12-25 14:03:29 +01:00
Kuredant
937d62fb82
refactor(indexers): ANT improve freeleech support (#1302)
feat(indexers): add freeleech support for ANT
2023-12-25 13:48:58 +01:00
Kyle Sanderson
0b34efc753
fix(http): specify ip stack when listen fails (#1306)
* fix(http): specify ip stack when listen fails

* break your err

* fix(http): log msg

---------

Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
2023-12-25 13:29:20 +01:00
soup
80c2530116
fix(actions): qBit handle Ignore slow torrents rule correctly when disabled (#1309)
* fix(qbittorrent): handle 'Ignore slow torrents' rule correctly when disabled

* move IgnoreSlowTorrents bool check
2023-12-17 22:46:44 +01:00
soup
6e12654f6a
feat(filters): show enabled and disabled actions in list view (#1304)
* feat(filters): reflect enabled actions

* dont store release unless enabled action found

* store the release after the delay

* add new parameter to FindByFilterID method
2023-12-17 21:18:26 +01:00
soup
a89a1a55d9
feat(notifications): add LunaSea support (#1284)
* feat(notifications): add lunasea

* fix(web): truncate overflow in PasswordFieldWide

* refactor(notifications): centralize msg building

Left the building logic in discord.go and notifiarr.go as is because of their unique structure.

* refactor: moved components and swapped to outline

- Refactored the iconComponentMap to use a single iconStyle variable.

* upped size from 4 to 5

* rename NotificationBuilder function
2023-12-15 23:13:44 +01:00
Kyle Sanderson
3580472cbd
refactor(filters): optimize assignment to allocation (#1293)
nit(filters): move explicit assignment to allocation
2023-12-14 21:41:05 +01:00
soup
fc0bf33412
fix(config): PostgresExtraParams struct tag (#1294)
fix: PostgresExtraParams to lowercase in Config
2023-12-12 20:35:12 +01:00
Shivaram Lingamneni
b2c32a421e
fix(irc): improve IRC handler management (#1269)
* fix some races in IRC handler management

* remove go 1.21 and slices package

* chore: update deps

* fix: use exp/slices pkg and client callbacks

* fix(irc): remove deadlock mutex from authenticate

* restore locking in authenticate()

* fix(irc): data races

* fix(irc): do not allow restart of disabled network

* fix(irc): disable restart btn if net disabled

---------

Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
2023-12-12 20:29:43 +01:00
ze0s
17e97201fd
fix(config): log level change causes panic (#1296) 2023-12-02 17:23:08 +01:00
Frederick Robinson
365055fbe1
refactor(filters): move rejections from release to filter (#1272)
* refactor: size check

* refactor(filters): checkfilter rejections from release to filter

---------

Co-authored-by: ze0s <ze0s@riseup.net>
2023-12-01 18:04:23 +01:00
KaiserBh
c0f8ecfa9e
fix(filters): could not delete filter without actions (#1275)
* fix(database): hot fix for deleting filter.

This fixes the no sql row set, no idea why it does that but removing the row check I added fixes it, Not sure if it affects others rowsAffected in the delete function.

* fix: imports

---------

Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
2023-11-26 13:24:05 +01:00
Kuredant
f89a25d645
feat(irc): support optional bot mode (#1246)
* feat(irc): set bot mode when the server supports it

See https://ircv3.net/specs/extensions/bot-mode.

* feat(irc): add a config option per network for bot mode
2023-11-22 19:57:16 +01:00
Frederick Robinson
8d3921fd3b
feat(filters): validate filter size (#1263)
* update comments

* refactor, fail on malformed size constraints

* refactor validation, add failing test

* unify in ReleaseSizeOkay, refactor test

* validate filter limit parseability

* logging improvement

* refactor. more clear, explicit parsing step

* inline, add log

* comment tweak

* pass error with more info

* tweak parsedSizeLimits interface
2023-11-20 18:41:53 +01:00
Fabricio Silva
8a8069408a
fix(indexers): toggle state (#1214)
* fix(indexers): toggle state

* fix(indexers): toggle state

---------

Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
2023-11-19 23:11:12 +01:00
ze0s
8b5e08727b
fix(config): load from env vars (#995)
* fix(config): load from env and bind

* fix(config): remove unused imports

* feat: add new postgres config as vars
2023-11-19 22:16:46 +01:00
soup
d8c977b5ba
refactor(config): copylocks and staticcheck findings (#1261)
refactor: copylocks and staticcheck findings

Refactor mutex handling, optimize byte slice creation, and clean up code in accordance with go.staticcheck and copylocks guidelines.

- Changed AppConfig's mutex to *sync.Mutex, preventing mutex copying and enhancing thread safety.
- Simplified byte slice initialization in writeConfig for efficiency.
- Removed redundant return in DynamicReload for better code clarity.
2023-11-19 16:03:53 +01:00
Frederick Robinson
570af0940b
fix(indexers): AnimeBytes parsing (#1259)
* change test to expect correct output

* fix regex

* improve error message
2023-11-18 23:07:50 +01:00
soup
2bd1a68a94
feat(feeds): add force run (#1243)
* feat(feeds): add force run

* fix: simplify ForceRun

* add confirmation modal

* handle errors by using the test func

* require user input to run

* make sure to reschedule next job after forcerun

* refactor modal centering with grid

* refactor: Simplify startJob and forceRun logic

- Refactor `startJob` to accept a `runImmediately` flag. This flag controls whether the job should be run immediately or scheduled for later. This change simplifies the `ForceRun` function by allowing it to call `startJob` with `runImmediately` set to `true`.

- Remove redundant checks in `ForceRun` related to feed type. These checks are handled in `startJob`.

BREAKING CHANGE: The `startJob` function now requires a second argument, `runImmediately`. This change affects all calls to `startJob`.

* fix(web) Invalidate queries after forceRun

* refactor(feeds): init and test run

---------

Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
2023-11-18 21:54:53 +01:00
KaiserBh
666bdf68cd
feat(database): setup integration tests (#1118)
* refactor: this should be Debug() just like the rest.

* feat: catch error when updating client table.

Before if we provided the wrong ID it will just say it's successful when it shouldn't.

* chore: handle the errors.

* fix: defer tx.Rollback().

When I try handling the error we always hit the error no matter what even though there wasn't any error, This is due that defer block being executed unconditionally so even after we commit it successfully it will just give error. So add checking then commit it if all good.

* feat: added testing env.

This way we can use in memory sqlite.

* chore: Delete log should be debug as well.

* feat: enable foreign keys for testing for sqlite.

I recommend enabling all together. Not sure why it's commented but for now will keep it the same and only enable for testing.

* chore: catch error, if deleting a record fails.

* chore: catch error, if deleting a record fails.

* chore: catch error, when failed to enable toggle.

* chore: catch error, if updating failed.

* chore(filter): catch error, if deleting failed.

* chore(filter): catch error, if row is not modified for ToggleEnabled.

* chore(feed): Should be debug level to match with others.

* chore(feed): catch error when nothing is updated.

* chore: update docker-compose.yml add test_db for postgres.

* chore(ci): update include postgres db service before running tests.

* feat(database): Added database testing.

* feat(database): Added api integration testing.

* feat(database): Added action integration testing.

* feat(database): Added download_client integration testing.

* feat(database): Added filter integration testing.

* test(database): initial tests model (WIP)

* chore(feed): handle error when nothing is deleted.

* tests(feed): added delete testing.

* chore(feed): handle error when nothing is updated.

* chore(feed): handle error when nothing is updated.

* chore(feed): handle error when nothing is updated.

* feat(database): Added feed integration testing.

* fix(feed_cache): This should be time.Time not time.Duration.

* chore(feed_cache): handle error when deleting fails.

* feat(database): Added feed_cache integration testing.

* chore: add EOL

* feat: added indexer_test.go

* feat: added mock irc data

* fix: the column is not pass anymore it's password.

* chore: added assertion.

* fix: This is password column not pass test is failing because of it.

* feat: added tests cases for irc.

* feat: added test cases for release.

* feat: added test cases for notifications.

* feat: added Delete to the User DB that way it can be used for testing.

* feat: added user database tests.

* refactor: Make setupLogger and setupDatabase private also renamed them.

Changed the visibility of `setupLogger` to private based on feedback. Also renamed the function to `setupLoggerForTest` and `setupDatabaseForTest` to make its purpose more descriptive.

* fix(database): tests postgres ssl mode disable

* refactor(database): setup and teardown

---------

Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
2023-11-18 20:04:30 +01:00
Kuredant
14e12e7bc6
feat(indexers): add SugoiMusic (#1255)
* feat(indexers): add SugoiMusic

Regex tests: https://regex101.com/r/oRumE5/5

* fix(definitions): add tests to sugoimusic

---------

Co-authored-by: ze0s <ze0s@riseup.net>
2023-11-18 16:15:22 +01:00
Frederick Robinson
7cb2aaa8a5
feat(irc): log connection errors (#1239)
* add logline for failed connection

* modify logging, change debug -> error

* don't surface "client called Quit" errors

* irc: don't retry Connect() while stopped

* fix issue number

* don't unlock until state-change complete

* Revert "don't unlock until state-change complete"

This reverts commit bf107db99bc2758b729a5995c63067f8fdf16aec.

---------

Co-authored-by: Shivaram Lingamneni <slingamn@cs.stanford.edu>
2023-11-18 15:44:46 +01:00
Frederick Robinson
fef0da5711
feat(definitions): add expectations for test lines (#1257)
* factor out test helpers

* refactor, add tests for animebytes

* revert test refactor

* better name

* change format, migrate some examples

* migrated remaining test cases

* add comment about `Test` vs `Tests`

* refactor

* reorder expectations to match vars

* generate

* turn on strict unmarshalling, remove old `Test` from schema

* start modifying actual definitions

* done with the As

* Bs

* C, D

* E, F

* G, H, I, ... L

* M, N

* O, P

* R

* bonus error. without this, pattern/vars disagreement can panic.

* S

* T, U

* X.. Now we know our ABCs next time won't you sing with meeeee

* fix another test

* another driveby change

* be less strict parsing custom definitions

* fix(definitions): load custom definitions

---------

Co-authored-by: ze0s <ze0s@riseup.net>
2023-11-18 15:41:39 +01:00
stacksmash76
e842a7bd42
enhancement(web): ui overhaul (#1155)
* Various WebUI changes and fixes.

* feat(tooltip): make tooltip display upwards

* fix(tooltip): place tooltip to the right

* fix(web): add missing ml-px to SwitchGroup header

current: https://i.imgur.com/2WXstPV.png
new: https://i.imgur.com/QGQ49mP.png

* fix(web): collapse sections

* fix(web):  improve freeleech section

* fix(web): rename action to action_components

Renamed the 'action' folder to 'action_components' to resolve import issues due to case sensitivity.

* fix(web): align CollapsibleSection

Old Advanced tab: https://i.imgur.com/MXaJ5eJ.png
New Advanced tab: https://i.imgur.com/4nPJJRw.png
Music tab for comparison: https://i.imgur.com/I59X7ot.png

* fix(web): remove invalid CSS class

* revert: vertical padding on switchgroup

added py-0 on the freeleech part instead

* feat(settings): add back log files

* fix(settings): irc channels and font sizes

* fix(components): radio select roundness

* fix(styling): various minor changes

* fix(filters): remove jitter fields

---------

Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
Co-authored-by: soup <soup@r4tio.dev>
Co-authored-by: ze0s <ze0s@riseup.net>
2023-11-18 14:46:16 +01:00