Commit graph

78 commits

Author SHA1 Message Date
Kyle Sanderson
e9cd6b0049
fix(sanitize): improve handling for newline tabs etc (#1733)
* fix(sanitize): filter properly \t,,, / etc

* jesus christ.

* bah. probably helps if a human reads the tests.

* k done.

* should be safe now?

* edna?

* real life man
2024-09-19 16:44:19 +02:00
Kyle Sanderson
e9f8730ca0
feat(filters): wildcard slice matching optimizations (#1716)
* chore(tests): add more test cases
* chore(tests): add code comments for matching patterns
* chore(tests): fix typos

---------

Co-authored-by: martylukyy <35452459+martylukyy@users.noreply.github.com>
2024-09-14 11:31:26 +02:00
Kyle Sanderson
982f7ddf68
refactor(wildcard): optimize and add caching (#1634)
* fix(wildcard): avoid excessive allocations every loop

* are you going to Scarborough Fair?

* ruby ruby ruby ruby

* ride on, little murphy

* shirley?

* to the moon

* reggie are you there?

* code 99

* my doctorate is in Art History

* helps to be consistent

* tidy

* slow and steady gets the clam

* oysters were better anyway

* DIAL TONE
2024-09-02 11:18:14 +02:00
ze0s
bc0f4cc055
feat: add support for proxies to use with IRC and Indexers (#1421)
* feat: add support for proxies

* fix(http): release handler

* fix(migrations): define proxy early

* fix(migrations): pg proxy

* fix(proxy): list update delete

* fix(proxy): remove log and imports

* feat(irc): use proxy

* feat(irc): tests

* fix(web): update imports for ProxyForms.tsx

* fix(database): migration

* feat(proxy): test

* feat(proxy): validate proxy type

* feat(proxy): validate and test

* feat(proxy): improve validate and test

* feat(proxy): fix db schema

* feat(proxy): add db tests

* feat(proxy): handle http errors

* fix(http): imports

* feat(proxy): use proxy for indexer downloads

* feat(proxy): indexerforms select proxy

* feat(proxy): handle torrent download

* feat(proxy): skip if disabled

* feat(proxy): imports

* feat(proxy): implement in Feeds

* feat(proxy): update helper text indexer proxy

* feat(proxy): add internal cache
2024-09-02 11:10:45 +02:00
Kyle Sanderson
cc0cca9f0d
refactor(http): implement bufio (#1604)
* fix: misc http fixes

* feat(io): implement bufio around syscalls

* peek-a-boo

* this can't be right.

* you better be wearing a helmet

* jesus christ.

* refactor(notifications): check err on non-ok status

* fix(notifications): add missing name method

* refactor(indexer): api clients

* fix(indexer): ptp test

---------

Co-authored-by: ze0s <ze0s@riseup.net>
2024-08-29 08:51:20 +02:00
ze0s
861f30c144
fix(actions): reject if client is disabled (#1626)
* fix(actions): error on disabled client

* fix(actions): sql scan args

* refactor: download client cache for actions

* fix: tests client store

* fix: tests client store and int conversion

* fix: tests revert findbyid ctx timeout

* fix: tests row.err

* feat: add logging to download client cache
2024-08-27 19:45:06 +02:00
ze0s
da53230077
feat(filters): validate existence of external exec cmd (#1501)
* feat(filters): check external cmd exists

* fix: imports

* Update internal/domain/filter.go

---------

Co-authored-by: s0up4200 <soup@r4tio.dev>
2024-04-12 13:56:57 +02:00
ze0s
c600f41e5a
feat(indexers): sanitize user input (#1420) 2024-02-26 18:06:00 +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
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
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
ze0s
d5d1cecc1b
feat(clients): Transmission support seedtime and ratiolimit (#1211)
* feat(clients): Transmission seedtime ratiolimit

* feat(clients): update client pkg

* feat(clients): update client pkg test

* feat(actions): update transmission
2023-10-31 00:38:23 +01:00
ze0s
2372c942b3
fix(indexers): BTN api handle errors (#1218) 2023-10-26 23:45:21 +02:00
Viktor Elofsson
1413cf9ff3
fix(downloadclient): Porla remove flags property (#1119)
Remove 'flags' property in the torrent item
2023-09-19 18:22:12 +02:00
Kyle Sanderson
08d7ecf329
feat(downloadclients): arrs increase timeout for release/push (#1083)
* fix(sonarr): increase timeout to 120s

* feat(arrs): increase timeouts
2023-09-07 23:47:31 +02:00
ze0s
0d3e10f094
feat(downloadclient): set downloadClientId for arr clients (#1081)
feat(downloadclient): arrs set downloadClientId
2023-09-03 15:34:55 +02:00
Viktor Elofsson
3d9839d234
feat(downloadclients): Porla support preset (#978)
* Correctly omit download/upload limits

* Prefix JWT correctly

* Allow setting Porla preset
2023-06-14 19:51:34 +02:00
ze0s
8925266104
feat(indexers): add API support for Orpheus to fetch size (#944)
* feat(indexers): add API support for Orpheus

* feat(filters): add ops to AdditionalSizeCheck
2023-05-21 16:55:10 +02:00
ze0s
604c7896bd
chore: add LICENSE GPLv2-or-later (#897)
* chore: add LICENSE

* chore: add LICENSE to README
2023-05-01 16:21:59 +02:00
ze0s
f3cfeed8cd
feat(indexers): test API from settings (#829)
* refactor(indexers): test api clients

* feat(indexers): test api connection

* fix(indexers): api client tests

* refactor: indexer api clients

* feat: add Toasts for indexer api tests

* fix: failing red tests
2023-04-15 23:34:27 +02:00
ze0s
64c2da591e
fix(feeds): torznab newznab pubdate parsing (#801)
fix(feeds): torznab newznab pubdate struct tag
2023-03-31 00:01:57 +02:00
ze0s
81d494ec5c
fix(feeds): torznab newznab category parsing (#775) 2023-03-19 23:35:33 +01:00
Kyle Sanderson
13a74f7cc8
feat: add usenet support (#543)
* feat(autobrr): implement usenet support

* feat(sonarr): implement usenet support

* feat(radarr): implement usenet support

* feat(announce): implement usenet support

* announce: cast a line

* feat(release): prevent unknown protocol transfer

* release: lines for days.

* feat: add newznab and sabnzbd support

* feat: add category to sabnzbd

* feat(newznab): map categories

* feat(newznab): map categories

---------

Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
Co-authored-by: ze0s <ze0s@riseup.net>
2023-03-04 20:27:18 +01:00
ze0s
ca196f0bf1
feat(releases): support magnet links (#730)
* feat(releases): support magnet links

* feat(feeds): support magnet links

* feat(actions): log messages

* fix: component warning

* fix: check hasprefix instead of hassuffix for magnet

* feat(release): resolve magnet uri from link

* fix(actions): deluge use magnet uri

* fix(macros): add `MagnetURI` var

* fix(actions): run magnet resolving before macros

* feat(feeds): set download type on creation
2023-02-28 22:16:10 +01:00
ze0s
d100703784
feat(download-clients): porla implement rules (#711)
* feat(downloadclients): Porla implement rules

* feat(downloadclients): Porla add basic auth support

* feat(porla): use new token for auth

* feat(porla): update check can download rules
2023-02-24 19:17:02 +01:00
ze0s
2917a7d42d
feat: show new updates in dashboard (#690)
* feat: show new update banner

* feat(http): add request logger

* refactor: updates checker

* feat: make update check optional

* fix: empty releases

* add toggle switch for update checks

* feat: toggle updates check from settings

* feat: toggle updates check from settings

* feat: check on toggle enabled

---------

Co-authored-by: soup <soup@r4tio.dev>
2023-02-05 18:44:11 +01:00
Viktor Elofsson
870e109f6c
feat(download-client): add support for Porla (#553)
* Add support for the 'Test' button to work

* Make Porla show up in filter actions select

* Add an empty Porla action

* Make Porla action find download client

* Make implementation actually add torrent to Porla

* Fix qBittorrent import

* Finish up Porla action

* Check length on commitish before slicing

* Move Porla to the other DL clients

* Add Porla to type name map

* Move Porla to beneath the other download clients
2023-01-29 18:17:01 +01:00
ze0s
5c402b6d6c
feat(filters): support Language filtering (#632)
* feat(filters): add support for language

* feat(filters): add db migrations and repo

* feat(filters): fix failing tests

* feat(filters): fix failing tests
2023-01-09 00:33:08 +01:00
ze0s
fd67a7b24e
feat(feeds): view latest RSS and Torznab feed (#609)
feat(feeds): view latest run
2023-01-02 23:00:11 +01:00
ze0s
839eb9f3f3
feat(actions): simplify macro parsing (#560)
* refactor(action): parse macros

* feat(action): add ctx to arr clients and test
2022-12-10 21:48:19 +01:00
ze0s
29da2416ec
feat(clients): add support for qBittorrent 4.4.0+ (#558)
* refactor: move client to go-qbittorrent

* refactor: move client to go-qbittorrent

* feat(downloadclient): cache qbittorrent client

* feat(downloadclient): update qbit

* feat(downloadclient): client test and remove pkg qbit

* feat(downloadclient): update pkg qbit

* fix(release): method

* feat(release): make GetCachedClient concurrent safe

* feat(release): add additional tests for buildLegacyHost

* feat(release): remove branching

* chore: update pkg autobrr/go-qbittorrent to v.1.2.0
2022-12-10 19:25:04 +01:00
ze0s
301180e55b
feat(download-clients): improve arr error handling (#549) 2022-11-19 16:20:48 +01:00
ze0s
e2bb14afa4
feat(feeds): improve RSS (#502)
* feat(feeds): improve rss

* save last_run time
* remove interval check
* refactor feed job keys
* add rss test
* add max_age check

* feat(feeds): rss basic freeleech parsing

* feat(feeds): rss cookie support

* feat(feeds): db get max_age

* feat(feeds): update log messages

* feat(feeds): pass cookie to release for download

* feat(feeds): improve size parsing

* feat(feeds): improve datetime check
2022-10-18 18:51:10 +02:00
voltron4lyfe
71d0424b61
feat(clients): add Readarr support (#490)
* Add initial Readarr support

* Readarr working with MaM

* feat(clients): readarr add tests
2022-10-14 19:56:42 +02:00
ze0s
b7d2161fdb
feat(feeds): torznab parse category and freeleech (#492)
* feat(feeds): torznab parse freeleech

* feat(feeds): torznab parse categories
2022-10-14 18:01:04 +02:00
paperclip-go-brr
72be86a34f
feat(feed): Configurable request timeout (#456)
* feat(feed): Add field for setting request timeout

* fix: missing type in interface

* feat: add postgres migration and column to base schema
2022-10-04 17:33:35 +02:00
ze0s
bbb8d2fe6e
fix(actions): cross platform watch dir file handling (#458)
* chore: update deps

* fix(actions): cross-platform file handling

* fix(qbittorrent): unrelated failing test
2022-09-10 20:31:46 +02:00
Kyle Sanderson
c1d2697e18
feat(qbit): implement errored filter (#447)
* feat(qbit): implement errored

* well, evidently there's some crashes.

* fix(qbit): contentlayout. 

reported by Vyerni a couple minutes ago

* fix(clients): qbit contentLayout
2022-08-30 22:09:56 +02:00
Kyle Sanderson
5a7614f954
feat(qbittorrent): Add more methods (#443)
* (feat): qbittorrent: Add funcs

* sync

* Delete go.mod

* more more more

* a cat for your trouble

* no pointers for you

* maybe they weren't so bad afterall.
2022-08-29 15:30:31 +02:00
ze0s
f258cdd42b
fix(actions): lidarr properly handle rejected (#404)
fix(actions): lidarr properly reject instead of error
2022-08-11 17:15:32 +02:00
ze0s
12e75e2604
fix(indexers): ggn fetch data from api (#397)
fix(indexers): fetch data from api
2022-08-03 14:27:13 +02:00
ze0s
9508cbb46c
feat(actions): qbit add options content layout and skip hash check (#393)
* feat(actions): qbit content layout and skip hash check

* feat(actions): qbit options
2022-08-02 18:06:45 +02:00
Kyle Sanderson
eefd1b576c
fix(torznab): Jackett support (#388)
* feat(torznab): add Jackett support

* Update torznab.go

* fix(feeds): unify jackett and prowlarr apikey
2022-08-01 15:21:29 +02:00
ze0s
ab8f25d56f
fix(server): exclude tags from version check (#382) 2022-07-29 15:21:55 +02:00
Kyle Sanderson
dfe2ac56a2
fix(qbittorrent): remove client cache (#357)
* fix(qbittorrent): permit multiple uploads again

* fix(qbittorrent): remove client cache
2022-07-17 17:47:42 +02:00
Ludvig Lundgren
2a3a839081
feat(notifications): on update available (#352) 2022-07-12 14:47:08 +02:00
Ludvig Lundgren
ebba72ec1f
feat(feeds): torznab add test button (#347) 2022-07-10 15:54:56 +02:00
Ludvig Lundgren
401c93a657
fix(download-clients): qbit nil logger panic (#344)
The logger wasn't set, so it was always nil. Change to always initialize and override if one is passed.
2022-07-08 22:12:19 +02:00
Ludvig Lundgren
0e88117702
feat(logging); improve messages and errors (#336)
* feat(logger): add module context

* feat(logger): change errors package

* feat(logger): update tests
2022-07-05 13:31:44 +02:00