Feature: Support multi user per irc network (#78)

* feat: delete irc network in transaction

* feat: use compound key for irc handlers

* chore: update deps

* refactor: start network

* refactor: init irc handler

* indexers: update network name
This commit is contained in:
Ludvig Lundgren 2022-01-13 21:26:23 +01:00 committed by GitHub
parent f466657ed4
commit 2daeedbdc7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 491 additions and 428 deletions

View file

@ -20,7 +20,7 @@ settings:
help: "Check how to get cookies in your browser and find the uid and pass cookies. Example: uid=1234; pass=asdf12347asdf13"
irc:
network: P2P-NET
network: P2P-Network
server: irc.p2p-network.net
port: 6697
tls: true

View file

@ -20,7 +20,7 @@ settings:
regex: /([a-zA-Z0-9\+])
irc:
network: p2p-network.net
network: P2P-Network
server: irc.p2p-network.net
port: 6697
tls: true

View file

@ -0,0 +1,63 @@
---
#id: tracker01
name: Mock1
identifier: mock1
description: Mock1 is just a mock indexer
language: en-us
urls:
- http://localhost.test
privacy: private
protocol: torrent
supports:
- irc
- rss
source: custom
settings:
- name: rsskey
type: secret
label: RSS key
help: "Go to your profile and copy your RSS key"
regex: /([\da-fA-F]{20})
irc:
network: LocalHost
server: localhost
port: 6697
tls: true
channels:
- "#announces"
announcers:
- _AnnounceBot_
settings:
- name: nickserv.account
type: text
required: true
label: NickServ Account
help: NickServ account. Make sure to group your user and bot. Eg. user_bot
- name: nickserv.password
type: secret
required: false
label: NickServ Password
help: NickServ password
parse:
type: single
lines:
- test:
- "New Torrent Announcement: <PC :: Iso> Name:'debian live 10 6 0 amd64 standard iso' uploaded by 'Anonymous' - http://www.tracker01.test/torrent/000000"
- "New Torrent Announcement: <PC :: Iso> Name:'debian live 10 6 0 amd64 standard iso' uploaded by 'Anonymous' freeleech - http://www.tracker01.test/torrent/000000"
pattern: New Torrent Announcement:\s*<([^>]*)>\s*Name:'(.*)' uploaded by '([^']*)'\s*(freeleech)*\s*-\s*(https?\:\/\/[^\/]+\/)torrent\/(\d+)
vars:
- category
- torrentName
- uploader
- freeleech
- baseUrl
- torrentId
match:
torrenturl: "{{ .baseUrl }}rss/download/{{ .torrentId }}/{{ .rsskey }}/{{ .torrentName }}.torrent"
encode:
- torrentName

View file

@ -0,0 +1,63 @@
---
#id: tracker01
name: Mock2
identifier: mock2
description: Mock2 is just a mock indexer
language: en-us
urls:
- http://localhost.test
privacy: private
protocol: torrent
supports:
- irc
- rss
source: custom
settings:
- name: rsskey
type: secret
label: RSS key
help: "Go to your profile and copy your RSS key"
regex: /([\da-fA-F]{20})
irc:
network: LocalHost
server: localhost
port: 6697
tls: true
channels:
- "#mannounces"
announcers:
- Jerry
settings:
- name: nickserv.account
type: text
required: true
label: NickServ Account
help: NickServ account. Make sure to group your user and bot. Eg. user_bot
- name: nickserv.password
type: secret
required: false
label: NickServ Password
help: NickServ password
parse:
type: single
lines:
- test:
- "New Torrent Announcement: <PC :: Iso> Name:'debian live 10 6 0 amd64 standard iso' uploaded by 'Anonymous' - http://www.tracker01.test/torrent/000000"
- "New Torrent Announcement: <PC :: Iso> Name:'debian live 10 6 0 amd64 standard iso' uploaded by 'Anonymous' freeleech - http://www.tracker01.test/torrent/000000"
pattern: New Torrent Announcement:\s*<([^>]*)>\s*Name:'(.*)' uploaded by '([^']*)'\s*(freeleech)*\s*-\s*(https?\:\/\/[^\/]+\/)torrent\/(\d+)
vars:
- category
- torrentName
- uploader
- freeleech
- baseUrl
- torrentId
match:
torrenturl: "{{ .baseUrl }}rss/download/{{ .torrentId }}/{{ .rsskey }}/{{ .torrentName }}.torrent"
encode:
- torrentName

View file

@ -19,7 +19,7 @@ settings:
help: "Go to https://www.trancetraffic.com/links.php, click on RSS Feed and copy your passkey from the url."
irc:
network: P2P-NET
network: P2P-Network
server: irc.p2p-network.net
port: 6697
tls: true
@ -35,7 +35,7 @@ irc:
help: NickServ account. Make sure to group your user and bot. Eg. user|autodl
- name: nickserv.password
type: secret
required: false
required: true
label: NickServ Password
help: NickServ password

View file

@ -243,6 +243,16 @@ func (s *service) addIndexer(indexer domain.Indexer) error {
s.mapIRCIndexerLookup(indexer.Identifier, *indexerDefinition)
// add to irc server lookup table
s.mapIRCServerDefinitionLookup(indexerDefinition.IRC.Server, *indexerDefinition)
// check if it has api and add to api service
if indexerDefinition.Enabled && indexerDefinition.HasApi() {
if err := s.apiService.AddClient(indexerDefinition.Identifier, indexerDefinition.SettingsMap); err != nil {
log.Error().Stack().Err(err).Msgf("indexer.start: could not init api client for: '%v'", indexer.Identifier)
}
}
return nil
}