diff --git a/internal/database/irc.go b/internal/database/irc.go index 1c87075..fdc2f96 100644 --- a/internal/database/irc.go +++ b/internal/database/irc.go @@ -26,7 +26,7 @@ func NewIrcRepo(log logger.Logger, db *DB) domain.IrcRepo { func (r *IrcRepo) GetNetworkByID(ctx context.Context, id int64) (*domain.IrcNetwork, error) { queryBuilder := r.db.squirrel. - Select("id", "enabled", "name", "server", "port", "tls", "pass", "invite_command", "nickserv_account", "nickserv_password"). + Select("id", "enabled", "name", "server", "port", "tls", "pass", "nick", "auth_mechanism", "auth_account", "auth_password", "invite_command"). From("irc_network"). Where("id = ?", id) @@ -38,20 +38,21 @@ func (r *IrcRepo) GetNetworkByID(ctx context.Context, id int64) (*domain.IrcNetw var n domain.IrcNetwork - var pass, inviteCmd sql.NullString - var nsAccount, nsPassword sql.NullString + var pass, nick, inviteCmd sql.NullString + var account, password sql.NullString var tls sql.NullBool row := r.db.handler.QueryRowContext(ctx, query, args...) - if err := row.Scan(&n.ID, &n.Enabled, &n.Name, &n.Server, &n.Port, &tls, &pass, &inviteCmd, &nsAccount, &nsPassword); err != nil { + if err := row.Scan(&n.ID, &n.Enabled, &n.Name, &n.Server, &n.Port, &tls, &pass, &nick, &n.Auth.Mechanism, &account, &password, &inviteCmd); err != nil { return nil, errors.Wrap(err, "error scanning row") } n.TLS = tls.Bool n.Pass = pass.String + n.Nick = nick.String n.InviteCommand = inviteCmd.String - n.NickServ.Account = nsAccount.String - n.NickServ.Password = nsPassword.String + n.Auth.Account = account.String + n.Auth.Password = password.String return &n, nil } @@ -103,7 +104,7 @@ func (r *IrcRepo) DeleteNetwork(ctx context.Context, id int64) error { func (r *IrcRepo) FindActiveNetworks(ctx context.Context) ([]domain.IrcNetwork, error) { queryBuilder := r.db.squirrel. - Select("id", "enabled", "name", "server", "port", "tls", "pass", "invite_command", "nickserv_account", "nickserv_password"). + Select("id", "enabled", "name", "server", "port", "tls", "pass", "nick", "auth_mechanism", "auth_account", "auth_password", "invite_command"). From("irc_network"). Where("enabled = ?", true) @@ -123,20 +124,21 @@ func (r *IrcRepo) FindActiveNetworks(ctx context.Context) ([]domain.IrcNetwork, for rows.Next() { var net domain.IrcNetwork - var pass, inviteCmd sql.NullString - var nsAccount, nsPassword sql.NullString + var pass, nick, inviteCmd sql.NullString + var account, password sql.NullString var tls sql.NullBool - if err := rows.Scan(&net.ID, &net.Enabled, &net.Name, &net.Server, &net.Port, &tls, &pass, &inviteCmd, &nsAccount, &nsPassword); err != nil { + if err := rows.Scan(&net.ID, &net.Enabled, &net.Name, &net.Server, &net.Port, &tls, &pass, &nick, &net.Auth.Mechanism, &account, &password, &inviteCmd); err != nil { return nil, errors.Wrap(err, "error scanning row") } net.TLS = tls.Bool net.Pass = pass.String + net.Nick = nick.String net.InviteCommand = inviteCmd.String - net.NickServ.Account = nsAccount.String - net.NickServ.Password = nsPassword.String + net.Auth.Account = account.String + net.Auth.Password = password.String networks = append(networks, net) } @@ -149,7 +151,7 @@ func (r *IrcRepo) FindActiveNetworks(ctx context.Context) ([]domain.IrcNetwork, func (r *IrcRepo) ListNetworks(ctx context.Context) ([]domain.IrcNetwork, error) { queryBuilder := r.db.squirrel. - Select("id", "enabled", "name", "server", "port", "tls", "pass", "invite_command", "nickserv_account", "nickserv_password"). + Select("id", "enabled", "name", "server", "port", "tls", "pass", "nick", "auth_mechanism", "auth_account", "auth_password", "invite_command"). From("irc_network"). OrderBy("name ASC") @@ -169,20 +171,21 @@ func (r *IrcRepo) ListNetworks(ctx context.Context) ([]domain.IrcNetwork, error) for rows.Next() { var net domain.IrcNetwork - var pass, inviteCmd sql.NullString - var nsAccount, nsPassword sql.NullString + var pass, nick, inviteCmd sql.NullString + var account, password sql.NullString var tls sql.NullBool - if err := rows.Scan(&net.ID, &net.Enabled, &net.Name, &net.Server, &net.Port, &tls, &pass, &inviteCmd, &nsAccount, &nsPassword); err != nil { + if err := rows.Scan(&net.ID, &net.Enabled, &net.Name, &net.Server, &net.Port, &tls, &pass, &nick, &net.Auth.Mechanism, &account, &password, &inviteCmd); err != nil { return nil, errors.Wrap(err, "error scanning row") } net.TLS = tls.Bool net.Pass = pass.String + net.Nick = nick.String net.InviteCommand = inviteCmd.String - net.NickServ.Account = nsAccount.String - net.NickServ.Password = nsPassword.String + net.Auth.Account = account.String + net.Auth.Password = password.String networks = append(networks, net) } @@ -232,10 +235,10 @@ func (r *IrcRepo) ListChannels(networkID int64) ([]domain.IrcChannel, error) { func (r *IrcRepo) CheckExistingNetwork(ctx context.Context, network *domain.IrcNetwork) (*domain.IrcNetwork, error) { queryBuilder := r.db.squirrel. - Select("id", "enabled", "name", "server", "port", "tls", "pass", "invite_command", "nickserv_account", "nickserv_password"). + Select("id", "enabled", "name", "server", "port", "tls", "pass", "nick", "auth_mechanism", "auth_account", "auth_password", "invite_command"). From("irc_network"). Where("server = ?", network.Server). - Where("nickserv_account = ?", network.NickServ.Account) + Where("auth_account = ?", network.Auth.Account) query, args, err := queryBuilder.ToSql() if err != nil { @@ -247,10 +250,11 @@ func (r *IrcRepo) CheckExistingNetwork(ctx context.Context, network *domain.IrcN var net domain.IrcNetwork - var pass, inviteCmd, nickPass sql.NullString + var pass, nick, inviteCmd sql.NullString + var account, password sql.NullString var tls sql.NullBool - err = row.Scan(&net.ID, &net.Enabled, &net.Name, &net.Server, &net.Port, &tls, &pass, &inviteCmd, &net.NickServ.Account, &nickPass) + err = row.Scan(&net.ID, &net.Enabled, &net.Name, &net.Server, &net.Port, &tls, &pass, &nick, &net.Auth.Mechanism, &account, &password, &inviteCmd) if err == sql.ErrNoRows { // no result is not an error in our case return nil, nil @@ -260,8 +264,10 @@ func (r *IrcRepo) CheckExistingNetwork(ctx context.Context, network *domain.IrcN net.TLS = tls.Bool net.Pass = pass.String + net.Nick = nick.String net.InviteCommand = inviteCmd.String - net.NickServ.Password = nickPass.String + net.Auth.Account = account.String + net.Auth.Password = password.String return &net, nil } @@ -269,10 +275,11 @@ func (r *IrcRepo) CheckExistingNetwork(ctx context.Context, network *domain.IrcN func (r *IrcRepo) StoreNetwork(network *domain.IrcNetwork) error { netName := toNullString(network.Name) pass := toNullString(network.Pass) + nick := toNullString(network.Nick) inviteCmd := toNullString(network.InviteCommand) - nsAccount := toNullString(network.NickServ.Account) - nsPassword := toNullString(network.NickServ.Password) + account := toNullString(network.Auth.Account) + password := toNullString(network.Auth.Password) var err error var retID int64 @@ -286,9 +293,11 @@ func (r *IrcRepo) StoreNetwork(network *domain.IrcNetwork) error { "port", "tls", "pass", + "nick", + "auth_mechanism", + "auth_account", + "auth_password", "invite_command", - "nickserv_account", - "nickserv_password", ). Values( network.Enabled, @@ -297,9 +306,11 @@ func (r *IrcRepo) StoreNetwork(network *domain.IrcNetwork) error { network.Port, network.TLS, pass, + nick, + network.Auth.Mechanism, + account, + password, inviteCmd, - nsAccount, - nsPassword, ). Suffix("RETURNING id"). RunWith(r.db.handler) @@ -317,10 +328,11 @@ func (r *IrcRepo) StoreNetwork(network *domain.IrcNetwork) error { func (r *IrcRepo) UpdateNetwork(ctx context.Context, network *domain.IrcNetwork) error { netName := toNullString(network.Name) pass := toNullString(network.Pass) + nick := toNullString(network.Nick) inviteCmd := toNullString(network.InviteCommand) - nsAccount := toNullString(network.NickServ.Account) - nsPassword := toNullString(network.NickServ.Password) + account := toNullString(network.Auth.Account) + password := toNullString(network.Auth.Password) var err error @@ -332,9 +344,11 @@ func (r *IrcRepo) UpdateNetwork(ctx context.Context, network *domain.IrcNetwork) Set("port", network.Port). Set("tls", network.TLS). Set("pass", pass). + Set("nick", nick). + Set("auth_mechanism", network.Auth.Mechanism). + Set("auth_account", account). + Set("auth_password", password). Set("invite_command", inviteCmd). - Set("nickserv_account", nsAccount). - Set("nickserv_password", nsPassword). Set("updated_at", time.Now().Format(time.RFC3339)). Where("id = ?", network.ID) diff --git a/internal/database/postgres_migrate.go b/internal/database/postgres_migrate.go index aaf0c93..b567dc6 100644 --- a/internal/database/postgres_migrate.go +++ b/internal/database/postgres_migrate.go @@ -36,14 +36,16 @@ CREATE TABLE irc_network port INTEGER NOT NULL, tls BOOLEAN, pass TEXT, + nick TEXT, + auth_mechanism TEXT, + auth_account TEXT, + auth_password TEXT, invite_command TEXT, - nickserv_account TEXT, - nickserv_password TEXT, connected BOOLEAN, connected_since TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - UNIQUE (server, port, nickserv_account) + UNIQUE (server, port, nick) ); CREATE TABLE irc_channel @@ -589,4 +591,28 @@ CREATE INDEX indexer_identifier_index ALTER TABLE filter ADD COLUMN use_regex_release_tags BOOLEAN DEFAULT FALSE; `, + `ALTER TABLE irc_network + RENAME COLUMN nickserv_account TO auth_account; + + ALTER TABLE irc_network + RENAME COLUMN nickserv_password TO auth_password; + + ALTER TABLE irc_network + ADD nick TEXT; + + ALTER TABLE irc_network + ADD auth_mechanism TEXT DEFAULT 'SASL_PLAIN'; + + ALTER TABLE irc_network + DROP CONSTRAINT irc_network_server_port_nickserv_account_key; + + ALTER TABLE irc_network + ADD CONSTRAINT irc_network_server_port_nick_key + UNIQUE (server, port, nick); + + UPDATE irc_network + SET nick = irc_network.auth_account; + + UPDATE irc_network + SET auth_mechanism = 'SASL_PLAIN';`, } diff --git a/internal/database/sqlite_migrate.go b/internal/database/sqlite_migrate.go index f72e4e0..4f421d6 100644 --- a/internal/database/sqlite_migrate.go +++ b/internal/database/sqlite_migrate.go @@ -36,14 +36,16 @@ CREATE TABLE irc_network port INTEGER NOT NULL, tls BOOLEAN, pass TEXT, + nick TEXT, + auth_mechanism TEXT, + auth_account TEXT, + auth_password TEXT, invite_command TEXT, - nickserv_account TEXT, - nickserv_password TEXT, connected BOOLEAN, connected_since TIMESTAMP, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - UNIQUE (server, port, nickserv_account) + UNIQUE (server, port, nick) ); CREATE TABLE irc_channel @@ -909,4 +911,52 @@ CREATE INDEX indexer_identifier_index ALTER TABLE filter ADD COLUMN use_regex_release_tags BOOLEAN DEFAULT FALSE; `, + ` +CREATE TABLE irc_network_dg_tmp +( + id INTEGER + primary key, + enabled BOOLEAN, + name TEXT not null, + server TEXT not null, + port INTEGER not null, + tls BOOLEAN, + pass TEXT, + nick TEXT, + auth_mechanism TEXT, + auth_account TEXT, + auth_password TEXT, + invite_command TEXT, + connected BOOLEAN, + connected_since TIMESTAMP, + created_at TIMESTAMP default CURRENT_TIMESTAMP, + updated_at TIMESTAMP default CURRENT_TIMESTAMP, + unique (server, port, nick) +); + +INSERT INTO irc_network_dg_tmp(id, enabled, name, server, port, tls, pass, nick, auth_mechanism, auth_account, auth_password, invite_command, + connected, connected_since, created_at, updated_at) +SELECT id, + enabled, + name, + server, + port, + tls, + pass, + nickserv_account, + 'SASL_PLAIN', + nickserv_account, + nickserv_password, + invite_command, + connected, + connected_since, + created_at, + updated_at +FROM irc_network; + +DROP TABLE irc_network; + +ALTER TABLE irc_network_dg_tmp + RENAME TO irc_network; + `, } diff --git a/internal/domain/irc.go b/internal/domain/irc.go index dd5f0c5..ec4fedf 100644 --- a/internal/domain/irc.go +++ b/internal/domain/irc.go @@ -14,9 +14,18 @@ type IrcChannel struct { Monitoring bool `json:"monitoring"` } -type NickServ struct { - Account string `json:"account,omitempty"` - Password string `json:"password,omitempty"` +type IRCAuthMechanism string + +const ( + IRCAuthMechanismNone IRCAuthMechanism = "NONE" + IRCAuthMechanismSASLPlain IRCAuthMechanism = "SASL_PLAIN" + IRCAuthMechanismNickServ IRCAuthMechanism = "NICKSERV" +) + +type IRCAuth struct { + Mechanism IRCAuthMechanism `json:"mechanism,omitempty"` + Account string `json:"account,omitempty"` + Password string `json:"password,omitempty"` } type IrcNetwork struct { @@ -27,8 +36,9 @@ type IrcNetwork struct { Port int `json:"port"` TLS bool `json:"tls"` Pass string `json:"pass"` + Nick string `json:"nick"` + Auth IRCAuth `json:"auth,omitempty"` InviteCommand string `json:"invite_command"` - NickServ NickServ `json:"nickserv,omitempty"` Channels []IrcChannel `json:"channels"` Connected bool `json:"connected"` ConnectedSince *time.Time `json:"connected_since"` @@ -42,8 +52,9 @@ type IrcNetworkWithHealth struct { Port int `json:"port"` TLS bool `json:"tls"` Pass string `json:"pass"` + Nick string `json:"nick"` + Auth IRCAuth `json:"auth,omitempty"` InviteCommand string `json:"invite_command"` - NickServ NickServ `json:"nickserv,omitempty"` CurrentNick string `json:"current_nick"` PreferredNick string `json:"preferred_nick"` Channels []ChannelWithHealth `json:"channels"` diff --git a/internal/indexer/definitions/acidlounge.yaml b/internal/indexer/definitions/acidlounge.yaml index 7e3fd52..2700ad5 100644 --- a/internal/indexer/definitions/acidlounge.yaml +++ b/internal/indexer/definitions/acidlounge.yaml @@ -15,11 +15,14 @@ source: custom settings: - name: passkey type: secret + required: true label: Pass key help: "Your passkey" regex: /([\da-z]{32}) + - name: uid type: secret + required: true label: User ID help: "Your User ID" regex: /(\d+) @@ -34,12 +37,19 @@ irc: announcers: - ACiD-BaBy settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.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 + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/alpharatio.yaml b/internal/indexer/definitions/alpharatio.yaml index f8ed73f..8e99afe 100644 --- a/internal/indexer/definitions/alpharatio.yaml +++ b/internal/indexer/definitions/alpharatio.yaml @@ -15,10 +15,13 @@ source: gazelle settings: - name: authkey type: secret + required: true label: Auth key help: Right click DL on a torrent and get the authkey. + - name: torrent_pass type: secret + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. @@ -32,22 +35,30 @@ irc: announcers: - Voyager settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.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 + help: NickServ account. Make sure to group your main user and bot. + + - name: auth.password type: secret required: true label: NickServ Password help: NickServ password + - name: invite_command type: secret - default: "Voyager autobot USERNAME IRCKey" - required: false + default: "Voyager autobot USERNAME IRCKEY" + required: true label: Invite command - help: Invite auth with Voyager. + help: Invite auth with Voyager. Replace USERNAME with site nick and set IRCKEY. parse: type: multi diff --git a/internal/indexer/definitions/animebytes.yaml b/internal/indexer/definitions/animebytes.yaml index 4469fb3..eaffc5d 100644 --- a/internal/indexer/definitions/animebytes.yaml +++ b/internal/indexer/definitions/animebytes.yaml @@ -15,6 +15,7 @@ source: gazelle settings: - name: passkey type: secret + required: true label: PassKey help: Settings -> Account -> Passkey. @@ -28,22 +29,30 @@ irc: announcers: - Satsuki settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user|autodl + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user|autodl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password help: NickServ password + - name: invite_command type: secret - default: "/msg Satsuki enter #announce {AB username} ircKey" + default: "Satsuki enter #announce USERNAME IRCKEY" required: true label: Invite command - help: Invite auth with Satsuki, animebytes.tv/irc + help: Invite auth with Satsuki, animebytes.tv/irc. Replace USERNAME and IRCKEY. parse: type: single diff --git a/internal/indexer/definitions/beyondhd.yaml b/internal/indexer/definitions/beyondhd.yaml index 98129e5..177ef43 100644 --- a/internal/indexer/definitions/beyondhd.yaml +++ b/internal/indexer/definitions/beyondhd.yaml @@ -15,6 +15,7 @@ source: UNIT3D (F3NIX) settings: - name: rsskey type: secret + required: true label: RSS key help: "Go to your profile, My Security, RSS Key and copy RSS key." @@ -29,22 +30,30 @@ irc: - Willie - Millie settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. MUST follow format user|autodl + + - name: auth.account type: text required: true label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user|autodl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password help: NickServ password + - name: invite_command type: secret - default: "Millie announce ircKey" + default: "Millie announce IRCKEY" required: true label: Invite command - help: Invite auth with Millie. + help: Invite auth with Millie. Replace IRCKEY. parse: type: single diff --git a/internal/indexer/definitions/bit-hdtv.yaml b/internal/indexer/definitions/bit-hdtv.yaml index 3707b4a..2d2041d 100644 --- a/internal/indexer/definitions/bit-hdtv.yaml +++ b/internal/indexer/definitions/bit-hdtv.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: passkey type: secret + required: true label: Pass key help: "Your passkey" regex: /([\da-z]{32}) @@ -29,12 +30,19 @@ irc: announcers: - BHD-bot settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.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 + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/btfiles.yaml b/internal/indexer/definitions/btfiles.yaml index 155d43a..743467a 100644 --- a/internal/indexer/definitions/btfiles.yaml +++ b/internal/indexer/definitions/btfiles.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: rsskey type: secret + required: true label: RSS key help: "The rsskey in your RSS feed link" @@ -28,12 +29,19 @@ irc: announcers: - Tracer settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account type: text required: true label: NickServ Account help: NickServ account. Make sure to group your user and bot. Ask staff to unlock it! - - name: nickserv.password + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/btn.yaml b/internal/indexer/definitions/btn.yaml index 7ecc4f9..1b54648 100644 --- a/internal/indexer/definitions/btn.yaml +++ b/internal/indexer/definitions/btn.yaml @@ -16,14 +16,19 @@ source: gazelle settings: - name: authkey type: secret + required: true label: Auth key help: Right click DL on a torrent and get the authkey. + - name: torrent_pass type: secret + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. + - name: api_key type: secret + required: true label: API Key help: Username -> Edit Profile -> API @@ -49,12 +54,19 @@ irc: announcers: - Barney settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user|autodl + + - name: auth.account type: text required: true label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user|autodl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/danishbytes.yaml b/internal/indexer/definitions/danishbytes.yaml index fa35337..cf4462b 100644 --- a/internal/indexer/definitions/danishbytes.yaml +++ b/internal/indexer/definitions/danishbytes.yaml @@ -15,7 +15,8 @@ source: UNIT3D settings: - name: passkey type: secret - label: Passkey + required: true + label: RSS key help: "Go to your profile tab under safety, copy RSS Key (RID)" irc: @@ -28,22 +29,30 @@ irc: announcers: - DBBot settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user|autodl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password help: NickServ password + - name: invite_command type: secret - default: "DBBot announce ircKey" + default: "DBBot announce IRCKEY" required: true label: Invite command - help: Invite auth with DBBot. + help: Invite auth with DBBot. Replace IRCKEY with your key. parse: type: single diff --git a/internal/indexer/definitions/digitalcore.yaml b/internal/indexer/definitions/digitalcore.yaml index 2d3e57b..800ed50 100644 --- a/internal/indexer/definitions/digitalcore.yaml +++ b/internal/indexer/definitions/digitalcore.yaml @@ -15,6 +15,7 @@ source: gazelle settings: - name: passkey type: secret + required: true label: PassKey help: Settings -> Security -> Passkey. @@ -28,16 +29,24 @@ irc: announcers: - ENDOR settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user|autodl + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user|autodl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password help: NickServ password + - name: invite_command type: secret default: "ENDOR !invite USERNAME IRCKEY" diff --git a/internal/indexer/definitions/emp.yaml b/internal/indexer/definitions/emp.yaml index 73b1660..53c31c2 100644 --- a/internal/indexer/definitions/emp.yaml +++ b/internal/indexer/definitions/emp.yaml @@ -15,10 +15,13 @@ source: gazelle settings: - name: authkey type: secret + required: true label: Auth key help: Right click DL on a torrent and get the authkey. + - name: torrent_pass type: secret + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. @@ -32,12 +35,19 @@ irc: announcers: - "^Wizard^" settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot. Must have staff permission first. + + - name: auth.account type: text required: true label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_bot. Must have staff permission first. - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/enthralled.yaml b/internal/indexer/definitions/enthralled.yaml index 703ffc8..2d5081d 100644 --- a/internal/indexer/definitions/enthralled.yaml +++ b/internal/indexer/definitions/enthralled.yaml @@ -15,10 +15,13 @@ source: gazelle settings: - name: authkey type: secret + required: true label: Auth key help: Right click DL on a torrent and get the authkey. + - name: torrent_pass type: secret + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. @@ -32,12 +35,19 @@ irc: announcers: - TheGimp settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user|bot + + - name: auth.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 + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/filelist.yaml b/internal/indexer/definitions/filelist.yaml index 688dfbd..9efff55 100644 --- a/internal/indexer/definitions/filelist.yaml +++ b/internal/indexer/definitions/filelist.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: passkey type: secret + required: true label: Passkey help: "The passkey in your profile." @@ -28,12 +29,19 @@ irc: announcers: - Announce settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user_dl + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_dl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password diff --git a/internal/indexer/definitions/fuzer.yaml b/internal/indexer/definitions/fuzer.yaml index 587b6da..beb9b73 100644 --- a/internal/indexer/definitions/fuzer.yaml +++ b/internal/indexer/definitions/fuzer.yaml @@ -13,10 +13,13 @@ source: gazelle settings: - name: uid type: text + required: true label: User ID help: Create rss link at https://www.fuzer.me/getrss.php and find at &u=11111 + - name: passkey type: secret + required: true label: PassKey help: Create rss link at https://www.fuzer.me/getrss.php and find at &torrent_pass=... @@ -30,15 +33,22 @@ irc: announcers: - Fuzer settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account + type: text + required: false label: NickServ Account - - name: nickserv.password + + - name: auth.password type: secret required: false label: NickServ Password - help: A password of your choice to be used for the bot identification. Save it! + help: NickServ password parse: type: single diff --git a/internal/indexer/definitions/gazellegames.yaml b/internal/indexer/definitions/gazellegames.yaml index c70fb6d..045413a 100644 --- a/internal/indexer/definitions/gazellegames.yaml +++ b/internal/indexer/definitions/gazellegames.yaml @@ -16,14 +16,19 @@ source: gazelle settings: - name: authkey type: secret + required: true label: Auth key help: Right click DL on a torrent and get the authkey. + - name: torrent_pass type: secret + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. + - name: api_key type: secret + required: true label: API Key help: Username -> Edit / Settings -> API Keys @@ -49,22 +54,30 @@ irc: announcers: - Vertigo settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user|bot + + - name: auth.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 + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password help: NickServ password + - name: invite_command type: secret - default: "Vertigo ENTER #GGn-Announce USERNAME IRCKey" + default: "Vertigo ENTER #GGn-Announce USERNAME IRCKEY" required: true label: Invite command - help: Invite auth with Vertigo. + help: Invite auth with Vertigo. Replace USERNAME and IRCKEY. parse: type: single diff --git a/internal/indexer/definitions/hd-space.yaml b/internal/indexer/definitions/hd-space.yaml index 8adb0c9..8cfdc39 100644 --- a/internal/indexer/definitions/hd-space.yaml +++ b/internal/indexer/definitions/hd-space.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: rsskey type: secret + required: true label: RSS key help: "Go to My Panel and then Change PID. It will show the PID, but don't click it!" @@ -28,12 +29,19 @@ irc: announcers: - hdspace settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account type: text required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_bot - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password diff --git a/internal/indexer/definitions/hd-torrents.yaml b/internal/indexer/definitions/hd-torrents.yaml index 942ef88..2e74df4 100644 --- a/internal/indexer/definitions/hd-torrents.yaml +++ b/internal/indexer/definitions/hd-torrents.yaml @@ -16,10 +16,12 @@ source: xbtit settings: - name: key type: secret + required: true label: RSS key help: "Generate a RSS feed and copy key from URL" - name: token type: secret + required: true label: RSS Token help: "Generate a RSS feed and copy token from URL" @@ -33,12 +35,19 @@ irc: announcers: - HoboLarry settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user-bot + + - name: auth.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 + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/hdb.yaml b/internal/indexer/definitions/hdb.yaml index d5898c3..da339ed 100644 --- a/internal/indexer/definitions/hdb.yaml +++ b/internal/indexer/definitions/hdb.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: passkey type: secret + required: true label: Passkey help: Copy the passkey from your profile page @@ -28,22 +29,30 @@ irc: announcers: - midgards settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user|autodl + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user|autodl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password help: NickServ password + - name: invite_command type: secret - default: "midgards announce IRCKey" + default: "midgards announce IRCKEY" required: true label: Invite command - help: Invite auth with the key from https://hdbits.org/bot_invite.php + help: Invite auth with the key from https://hdbits.org/bot_invite.php. Replace IRCKEY. parse: type: single diff --git a/internal/indexer/definitions/hebits.yaml b/internal/indexer/definitions/hebits.yaml index 9c3b7e9..11f9ea0 100644 --- a/internal/indexer/definitions/hebits.yaml +++ b/internal/indexer/definitions/hebits.yaml @@ -13,10 +13,13 @@ source: gazelle settings: - name: passkey type: secret + required: true label: PassKey help: Right click download on a torrent and get the passkey. + - name: authkey type: secret + required: true label: Auth key help: Right click download on a torrent and get the authkey. @@ -30,22 +33,30 @@ irc: announcers: - HeBoT settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: "Bot nick. Make sure you follow the naming scheme: username|bot" + + - name: auth.account type: text required: true label: NickServ Account - help: "NickServ account name. Make sure you follow the naming scheme: HebitsNickname|bot" - - name: nickserv.password + help: NickServ account. Make sure to group your main user and bot. + + - name: auth.password type: secret required: true label: NickServ Password - help: A password of your choice to be used for the bot identification. Save it! + help: NickServ password + - name: invite_command type: secret - default: "HeBoT !invite IRCKey" + default: "HeBoT !invite IRCKEY" required: true label: Invite command - help: "Replace IRCKey with: Edit Profile -> Access Settings -> IRC Key" + help: "Replace IRCKEY with: Edit Profile -> Access Settings -> IRC Key" parse: type: multi diff --git a/internal/indexer/definitions/immortalseed.yaml b/internal/indexer/definitions/immortalseed.yaml index 9c68022..e494528 100644 --- a/internal/indexer/definitions/immortalseed.yaml +++ b/internal/indexer/definitions/immortalseed.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: passkey type: secret + required: true label: Passkey help: "Go to https://immortalseed.me/getrss.php to get the RSS feed link and extract passkey from secret_key" regex: '[\?&;]secret_key=([\da-fA-F]{32})' @@ -29,15 +30,21 @@ irc: announcers: - thoth settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account type: text required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_bot + help: NickServ account. Make sure to group your user and bot. - - name: nickserv.password + - name: auth.password type: secret - required: true + required: false label: NickServ Password help: NickServ password @@ -46,7 +53,7 @@ irc: default: "immortal invite USERNAME IRCKEY" required: true label: Invite command - help: Invite auth with immortal. + help: Invite auth with immortal. Replace USERNAME and IRCKEY. parse: type: single diff --git a/internal/indexer/definitions/iplay.yaml b/internal/indexer/definitions/iplay.yaml index e27bb22..89525c4 100644 --- a/internal/indexer/definitions/iplay.yaml +++ b/internal/indexer/definitions/iplay.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: passkey type: secret + required: true label: Passkey help: "Go to your profile and copy your passkey" @@ -28,12 +29,19 @@ irc: announcers: - Metal settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.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 + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/iptorrents.yaml b/internal/indexer/definitions/iptorrents.yaml index f9575a7..a9ea70d 100644 --- a/internal/indexer/definitions/iptorrents.yaml +++ b/internal/indexer/definitions/iptorrents.yaml @@ -16,6 +16,7 @@ source: unknown settings: - name: passkey type: secret + required: true label: Passkey help: "Copy the passkey from your details page." @@ -30,12 +31,19 @@ irc: - IPT - FunTimes settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user_autodl + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_autodl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password diff --git a/internal/indexer/definitions/milkie.yaml b/internal/indexer/definitions/milkie.yaml index 165f367..e372644 100644 --- a/internal/indexer/definitions/milkie.yaml +++ b/internal/indexer/definitions/milkie.yaml @@ -1,61 +1,69 @@ ---- -#id: Milkie -name: Milkie -identifier: milkie -description: Milkie is a private torrent tracker for GENERAL. -language: en-us -urls: - - https://www.milkie.cc -privacy: private -protocol: torrent -supports: - - irc - - rss -source: custom -settings: - - name: apikey - type: secret - label: Api key - help: "Go to your profile and copy your Api key from settings" - regex: /([a-zA-Z0-9\+]) - -irc: - network: P2P-Network - server: irc.p2p-network.net - port: 6697 - tls: true - channels: - - "#milkie-announce" - announcers: - - the_cow - - the_cow1 - - the_cow2 - 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: - - "{tv} :: The.Great.Xmas.Show.S00E00.1080p.WEB.H264-TEST :: [1080p, web] :: https://milkie.cc/browse/xxxxxxxxxxxx" - pattern: '{(.*)}\s::\s(.*)\s::\s\[(.*)\]\s::\s(https?\:\/\/[^\/]+\/)browse\/(.*)' - vars: - - category - - torrentName - - releaseTags - - baseUrl - - torrentId - - match: - torrenturl: "{{ .baseUrl }}api/v1/torrents/{{ .torrentId }}/torrent?key={{ .apikey }}" - encode: - - apikey +--- +#id: Milkie +name: Milkie +identifier: milkie +description: Milkie is a private torrent tracker for GENERAL. +language: en-us +urls: + - https://www.milkie.cc +privacy: private +protocol: torrent +supports: + - irc + - rss +source: custom +settings: + - name: apikey + type: secret + required: true + label: Api key + help: "Go to your profile and copy your Api key from settings" + regex: /([a-zA-Z0-9\+]) + +irc: + network: P2P-Network + server: irc.p2p-network.net + port: 6697 + tls: true + channels: + - "#milkie-announce" + announcers: + - the_cow + - the_cow1 + - the_cow2 + settings: + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account + type: text + required: false + label: NickServ Account + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password + type: secret + required: false + label: NickServ Password + help: NickServ password + +parse: + type: single + lines: + - test: + - "{tv} :: The.Great.Xmas.Show.S00E00.1080p.WEB.H264-TEST :: [1080p, web] :: https://milkie.cc/browse/xxxxxxxxxxxx" + pattern: '{(.*)}\s::\s(.*)\s::\s\[(.*)\]\s::\s(https?\:\/\/[^\/]+\/)browse\/(.*)' + vars: + - category + - torrentName + - releaseTags + - baseUrl + - torrentId + + match: + torrenturl: "{{ .baseUrl }}api/v1/torrents/{{ .torrentId }}/torrent?key={{ .apikey }}" + encode: + - apikey diff --git a/internal/indexer/definitions/morethantv.yaml b/internal/indexer/definitions/morethantv.yaml index 4fc6b09..85d69ac 100644 --- a/internal/indexer/definitions/morethantv.yaml +++ b/internal/indexer/definitions/morethantv.yaml @@ -15,10 +15,13 @@ source: gazelle settings: - name: authkey type: secret + required: true label: Auth key help: Right click DL on a torrent and get the authkey. + - name: torrent_pass type: secret + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. @@ -32,12 +35,19 @@ irc: announcers: - Jarvis settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.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 + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/myanonamouse.yaml b/internal/indexer/definitions/myanonamouse.yaml index c73abf5..39d58bf 100644 --- a/internal/indexer/definitions/myanonamouse.yaml +++ b/internal/indexer/definitions/myanonamouse.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: cookie type: secret + required: true label: Cookie (mam_id) help: "Check how to get cookies in your browser and find the mam_id cookie. Changes monthly" @@ -28,12 +29,19 @@ irc: announcers: - MouseBot settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.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 + help: NickServ account. Make sure to group your user and bot. Use main nick here. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/ncore.yaml b/internal/indexer/definitions/ncore.yaml index 33afb67..4ad73ac 100644 --- a/internal/indexer/definitions/ncore.yaml +++ b/internal/indexer/definitions/ncore.yaml @@ -14,6 +14,7 @@ source: unknown settings: - name: passkey type: secret + required: true label: Passkey help: "Check a torrent download link. key='value' is your passkey." @@ -27,13 +28,19 @@ irc: announcers: - nCore settings: - - name: nickserv.account + - name: nick type: text required: true - label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user|autodl + label: Nick + help: Bot nick. Eg. user|autodl - - name: nickserv.password + - name: auth.account + type: text + required: false + label: NickServ Account + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password @@ -41,10 +48,10 @@ irc: - name: invite_command type: secret - default: "NBOT !invite " + default: "NBOT !invite IRCKEY" required: true label: Invite command - help: Invite auth with the key from https://ncore.pro/irc.php + help: Invite auth with the key from https://ncore.pro/irc.php. Replace IRCKEY parse: type: single diff --git a/internal/indexer/definitions/nebulance.yaml b/internal/indexer/definitions/nebulance.yaml index 60acf82..5f24c12 100644 --- a/internal/indexer/definitions/nebulance.yaml +++ b/internal/indexer/definitions/nebulance.yaml @@ -15,10 +15,13 @@ source: gazelle settings: - name: authkey type: secret + required: true label: Auth key help: Right click DL on a torrent and get the authkey. + - name: torrent_pass type: secret + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. @@ -32,24 +35,30 @@ irc: announcers: - DRADIS settings: - - name: nickserv.account + - name: nick type: text required: true - label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Like user|bot + label: Nick + help: Bot nick. Eg. user|bot - - name: nickserv.password + - name: auth.account + type: text + required: false + label: NickServ Account + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret - required: true + required: false label: NickServ Password help: NickServ password - name: invite_command type: secret - default: "Muffit bot #nbl-announce USERNAME IRCKey" + default: "Muffit bot #nbl-announce USERNAME IRCKEY" required: true label: Invite command - help: Invite auth with Muffit. + help: Invite auth with Muffit. Replace USERNAME and IRCKEY. parse: type: single diff --git a/internal/indexer/definitions/norbits.yaml b/internal/indexer/definitions/norbits.yaml index 2456e6c..facbda8 100644 --- a/internal/indexer/definitions/norbits.yaml +++ b/internal/indexer/definitions/norbits.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: passkey type: secret + required: true label: Passkey help: "Copy passkey from a download link" @@ -28,12 +29,19 @@ irc: announcers: - NB settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account type: text required: true label: NickServ Account help: NickServ account. Use primary nick or ask staff to allow grouped nick. - - name: nickserv.password + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/oppaitime.yaml b/internal/indexer/definitions/oppaitime.yaml index 4848663..22981ae 100644 --- a/internal/indexer/definitions/oppaitime.yaml +++ b/internal/indexer/definitions/oppaitime.yaml @@ -15,10 +15,13 @@ source: gazelle settings: - name: authkey type: secret + required: true label: Auth key help: Right click DL on a torrent and get the authkey. + - name: torrent_pass type: secret + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. @@ -32,22 +35,30 @@ irc: announcers: - Udon settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user|bot + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user|bot - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password help: NickServ password + - name: invite_command type: secret - default: "Udon KNOCK oppaitime-announce [username] [irckey]" + default: "Udon KNOCK oppaitime-announce USERNAME IRCKEY" required: true label: Invite command - help: Invite auth with Udon. Replace [username] site username and [irckey] with your IRC key. + help: Invite auth with Udon. Replace USERNAME site username and IRCKEY with your IRC key. # Categories # Movies diff --git a/internal/indexer/definitions/orpheus.yaml b/internal/indexer/definitions/orpheus.yaml index 2c0623c..d3b81d9 100644 --- a/internal/indexer/definitions/orpheus.yaml +++ b/internal/indexer/definitions/orpheus.yaml @@ -15,6 +15,7 @@ source: gazelle settings: - name: torrent_pass type: text + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. @@ -28,22 +29,30 @@ irc: announcers: - hermes settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user|bot + + - name: auth.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 + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password help: NickServ password + - name: invite_command type: secret - default: "hermes enter #announce USERNAME IRCKey" + default: "hermes enter #announce USERNAME IRCKEY" required: true label: Invite command - help: Invite auth with Hermes. + help: Invite auth with Hermes. Replace USERNAME and IRCKEY. parse: type: single diff --git a/internal/indexer/definitions/pbay.yaml b/internal/indexer/definitions/pbay.yaml index 0af9417..4631341 100644 --- a/internal/indexer/definitions/pbay.yaml +++ b/internal/indexer/definitions/pbay.yaml @@ -15,10 +15,13 @@ source: gazelle settings: - name: authkey type: secret + required: true label: Auth key help: Right click DL on a torrent and get the authkey. + - name: torrent_pass type: secret + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. @@ -32,12 +35,19 @@ irc: announcers: - "PB-Announcer" settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.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 + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/polishsource.yaml b/internal/indexer/definitions/polishsource.yaml index 8b19f6a..20071eb 100644 --- a/internal/indexer/definitions/polishsource.yaml +++ b/internal/indexer/definitions/polishsource.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: passkey type: secret + required: true label: Passkey help: "Copy your passkey from the RSS feed" @@ -28,13 +29,19 @@ irc: announcers: - PS-Info settings: - - name: nickserv.account + - name: nick type: text - required: false - label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_bot + required: true + label: Nick + help: Bot nick. Eg. user_bot - - name: nickserv.password + - name: auth.account + type: text + required: true + label: NickServ Account + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password @@ -42,10 +49,10 @@ irc: - name: invite_command type: secret - default: "PS-Info pass " + default: "PS-Info pass IRCKEY" required: true label: Invite command - help: Invite auth with PS-Info. Replace with your IRC key. + help: Invite auth with PS-Info. Replace IRCKEY with your IRC key. parse: diff --git a/internal/indexer/definitions/polishtracker.yaml b/internal/indexer/definitions/polishtracker.yaml index 7adfc1a..27e7408 100644 --- a/internal/indexer/definitions/polishtracker.yaml +++ b/internal/indexer/definitions/polishtracker.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: rsskey type: secret + required: true label: RSS key help: "Go to your profile and copy your RSS key" @@ -28,13 +29,19 @@ irc: announcers: - PT-BOT settings: - - name: nickserv.account + - name: nick type: text - required: false - label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_bot + required: true + label: Nick + help: Bot nick. Eg. user_bot - - name: nickserv.password + - name: auth.account + type: text + required: true + label: NickServ Account + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password @@ -42,10 +49,10 @@ irc: - name: invite_command type: secret - default: "PT-BOT invite IRC_KEY" + default: "PT-BOT invite IRCKEY" required: true label: Invite command - help: Invite auth with PT-BOT. Replace IRC_KEY with your IRC key. + help: Invite auth with PT-BOT. Replace IRCKEY with your IRC key. parse: type: single diff --git a/internal/indexer/definitions/ptm.yaml b/internal/indexer/definitions/ptm.yaml index 4273cd4..a3dc5ae 100644 --- a/internal/indexer/definitions/ptm.yaml +++ b/internal/indexer/definitions/ptm.yaml @@ -1,61 +1,69 @@ ---- -#id: tracker69 -name: PreToMe -identifier: pretome -description: PreToMe (PTM) is 0Day/General ratioless tracker with very good speed & Pretime. -language: en-us -urls: - - https://pretome.info/ -privacy: private -protocol: torrent -supports: - - irc - - rss -source: custom -settings: - - name: rsskey - type: secret - label: RSS key - help: "Copy your RSS key from the RSS feed" - regex: /([\da-fA-F]{32}) - -irc: - network: PreToMe - server: irc.pretome.info - port: 6697 - tls: true - channels: - - "#announce" - announcers: - - PTMbot - 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: true - label: NickServ Password - help: NickServ password - -parse: - type: single - lines: - - test: - - "tehFire: [Applications|Windows] Chen went to the Mall :: preGAP: 1m and 32s :: https://pretome.info/details.php?id=696969" - - "[Movies|x264] Orlando.Bloom.Had.A.Cow-ze0s :: preGAP: P2P source :: https://pretome.info/details.php?id=646321" - - "tehFIRE: [TV|XviD] Royal.Institution.Christmas.Lectures.2009.Part2.WS.PDTV.XviD-WATERS :: preGAP: 1m and 9s :: https://pretome.info/details.php?id=127107" - - "tehFIRE: [TV|x264] Newsreaders.S01E05.HDTV.x264-2HD https://pretome.info/details.php?id=333951" - pattern: '\[([^\]]+)\] ([^:]+)(?: :: [^:]+:.* :: )?(https?\:\/\/[^\/]+).*id=(\d+)' - vars: - - category - - torrentName - - baseUrl - - torrentId - - match: - torrenturl: "{{ .baseUrl }}/download.php/{{ .torrentId }}/{{ .rsskey }}/{{ .torrentName }}.torrent" - encode: - - torrentName +--- +#id: tracker69 +name: PreToMe +identifier: pretome +description: PreToMe (PTM) is 0Day/General ratioless tracker with very good speed & Pretime. +language: en-us +urls: + - https://pretome.info/ +privacy: private +protocol: torrent +supports: + - irc + - rss +source: custom +settings: + - name: rsskey + type: secret + required: true + label: RSS key + help: "Copy your RSS key from the RSS feed" + regex: /([\da-fA-F]{32}) + +irc: + network: PreToMe + server: irc.pretome.info + port: 6697 + tls: true + channels: + - "#announce" + announcers: + - PTMbot + settings: + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account + type: text + required: true + label: NickServ Account + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password + type: secret + required: true + label: NickServ Password + help: NickServ password + +parse: + type: single + lines: + - test: + - "tehFire: [Applications|Windows] Chen went to the Mall :: preGAP: 1m and 32s :: https://pretome.info/details.php?id=696969" + - "[Movies|x264] Orlando.Bloom.Had.A.Cow-ze0s :: preGAP: P2P source :: https://pretome.info/details.php?id=646321" + - "tehFIRE: [TV|XviD] Royal.Institution.Christmas.Lectures.2009.Part2.WS.PDTV.XviD-WATERS :: preGAP: 1m and 9s :: https://pretome.info/details.php?id=127107" + - "tehFIRE: [TV|x264] Newsreaders.S01E05.HDTV.x264-2HD https://pretome.info/details.php?id=333951" + pattern: '\[([^\]]+)\] ([^:]+)(?: :: [^:]+:.* :: )?(https?\:\/\/[^\/]+).*id=(\d+)' + vars: + - category + - torrentName + - baseUrl + - torrentId + + match: + torrenturl: "{{ .baseUrl }}/download.php/{{ .torrentId }}/{{ .rsskey }}/{{ .torrentName }}.torrent" + encode: + - torrentName diff --git a/internal/indexer/definitions/ptp.yaml b/internal/indexer/definitions/ptp.yaml index ebd3f22..67551b4 100644 --- a/internal/indexer/definitions/ptp.yaml +++ b/internal/indexer/definitions/ptp.yaml @@ -16,18 +16,25 @@ source: gazelle settings: - name: authkey type: secret + required: true label: Auth key help: Right click DL on a torrent and get the authkey. + - name: torrent_pass type: secret + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. + - name: api_user type: secret + required: true label: API User help: Edit profile -> Security -> Generate new api keys + - name: api_key type: secret + required: true label: API Key help: Edit profile -> Security -> Generate new api keys @@ -57,22 +64,30 @@ irc: announcers: - Hummingbird settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user|autodl + + - name: auth.account type: text required: true label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user|autodl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password help: NickServ password + - name: invite_command type: secret - default: "Hummingbird ENTER USERNAME IRCKey #ptp-announce-dev" + default: "Hummingbird ENTER USERNAME IRCKEY #ptp-announce-dev" required: true label: Invite command - help: Invite auth with Hummingbird. + help: Invite auth with Hummingbird. Replace USERNAME and IRCKEY. parse: type: single diff --git a/internal/indexer/definitions/pussytorrents.yaml b/internal/indexer/definitions/pussytorrents.yaml index 9bd0280..8e3d6b6 100644 --- a/internal/indexer/definitions/pussytorrents.yaml +++ b/internal/indexer/definitions/pussytorrents.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: rsskey type: secret + required: true label: RSS key help: "Copy your RSS key from the RSS feed" regex: /([\da-fA-F]{20}) @@ -29,12 +30,19 @@ irc: announcers: - _PussyBot_ settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account type: text required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_bot - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password diff --git a/internal/indexer/definitions/red.yaml b/internal/indexer/definitions/red.yaml index 5c77d2f..386134b 100644 --- a/internal/indexer/definitions/red.yaml +++ b/internal/indexer/definitions/red.yaml @@ -16,14 +16,19 @@ source: gazelle settings: - name: authkey type: secret + required: true label: Auth key help: Right click DL on a torrent and get the authkey. + - name: torrent_pass type: secret + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. + - name: api_key type: secret + required: true label: API Key help: Settings -> Account Settings -> API Keys - Generate new api keys. Scope (User, Torrents) @@ -49,22 +54,30 @@ irc: announcers: - Drone settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user-autodl + + - name: auth.account type: text required: true label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user-autodl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password help: NickServ password + - name: invite_command type: secret - default: "Drone enter #red-announce USERNAME IRCKey" + default: "Drone enter #red-announce USERNAME IRCKEY" required: true label: Invite command - help: Invite auth with Drone. + help: Invite auth with Drone. Replace USERNAME and IRCKEY. parse: type: single diff --git a/internal/indexer/definitions/retroflix.yaml b/internal/indexer/definitions/retroflix.yaml index d9ede5b..b0cfc2b 100644 --- a/internal/indexer/definitions/retroflix.yaml +++ b/internal/indexer/definitions/retroflix.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: passkey type: secret + required: true label: Passkey help: "Go to User CP, User CP Home and copy the passkey" @@ -31,12 +32,19 @@ irc: - retroflix-announcer2 - retroflix-announcer3 settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.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 + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/revolutiontt.yaml b/internal/indexer/definitions/revolutiontt.yaml index 05e053d..ea29929 100644 --- a/internal/indexer/definitions/revolutiontt.yaml +++ b/internal/indexer/definitions/revolutiontt.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: passkey type: secret + required: true label: Passkey help: "Copy the passkey from a download link" @@ -28,16 +29,24 @@ irc: announcers: - RevoTT settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user_autodl + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_autodl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password help: NickServ password + - name: invite_command type: secret default: "RevoTT !invite USERNAME PASSKEY" diff --git a/internal/indexer/definitions/scenehd.yaml b/internal/indexer/definitions/scenehd.yaml index edf11f1..4c96627 100644 --- a/internal/indexer/definitions/scenehd.yaml +++ b/internal/indexer/definitions/scenehd.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: passkey type: secret + required: true label: Passkey help: "Go to https://scenehd.org/getrss.php and extract your Passkey" @@ -28,12 +29,19 @@ irc: announcers: - SceneHD settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_bot - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password @@ -41,10 +49,10 @@ irc: - name: invite_command type: secret - default: "SceneHD .invite #annnonce" + default: "SceneHD .invite IRCKEY #annnonce" required: true label: Invite command - help: Invite auth with SceneHD. Replace with your IRC key + help: Invite auth with SceneHD. Replace IRCKEY with your IRC key parse: type: single diff --git a/internal/indexer/definitions/speedapp.yaml b/internal/indexer/definitions/speedapp.yaml index 9a23bca..15e93c0 100644 --- a/internal/indexer/definitions/speedapp.yaml +++ b/internal/indexer/definitions/speedapp.yaml @@ -14,6 +14,7 @@ source: unknown settings: - name: passkey type: secret + required: true label: PassKey help: Copy the passkey from your profile @@ -27,12 +28,19 @@ irc: announcers: - speedapp-announcer settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account type: text required: true label: NickServ Account + help: NickServ account. Make sure to group your main user and bot. - - name: nickserv.password + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/subsplease.yaml b/internal/indexer/definitions/subsplease.yaml index 66ff210..f81ffc1 100644 --- a/internal/indexer/definitions/subsplease.yaml +++ b/internal/indexer/definitions/subsplease.yaml @@ -23,12 +23,19 @@ irc: announcers: - "Katou" settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account type: text required: true label: NickServ Account - help: NickServ account. - - name: nickserv.password + help: NickServ account. Make sure to group your main user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/superbits.yaml b/internal/indexer/definitions/superbits.yaml index cf92c4c..5cb1a4d 100644 --- a/internal/indexer/definitions/superbits.yaml +++ b/internal/indexer/definitions/superbits.yaml @@ -15,6 +15,7 @@ source: rartracker settings: - name: passkey type: secret + required: true label: Passkey help: "Copy the passkey from the /rss page." @@ -28,12 +29,19 @@ irc: announcers: - SuperBits settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user-bot + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user-bot - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password diff --git a/internal/indexer/definitions/torrentbytes.yaml b/internal/indexer/definitions/torrentbytes.yaml index f134c21..bd01f0d 100644 --- a/internal/indexer/definitions/torrentbytes.yaml +++ b/internal/indexer/definitions/torrentbytes.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: cookie type: secret + required: true label: Cookie help: "Check how to get cookies in your browser and find the uid and pass cookies. Example: uid=1234; pass=asdf12347asdf13" @@ -28,16 +29,24 @@ irc: announcers: - ByteMe settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user-bot + + - name: auth.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 + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password help: NickServ password + - name: invite_command type: secret default: "erica letmeinannounce USERNAME IRCKEY" diff --git a/internal/indexer/definitions/torrentday.yaml b/internal/indexer/definitions/torrentday.yaml index a3cd7d3..fc55a8c 100644 --- a/internal/indexer/definitions/torrentday.yaml +++ b/internal/indexer/definitions/torrentday.yaml @@ -1,60 +1,68 @@ ---- -#id: torrentday -name: TorrentDay -identifier: torrentday -description: TorrentDay (TD) is a private torrent tracker for GENERAL. -language: en-us -urls: - - https://www.torrentday.com -privacy: private -protocol: torrent -supports: - - irc - - rss -source: custom -settings: - - name: passkey - type: secret - label: Passkey - help: "Create a RSS Link to find out your PASSKEY" - -irc: - network: TorrentDay - server: irc.torrentday.com - port: 6697 - tls: true - channels: - - "#td.announce" - announcers: - - TD_Announce - settings: - - name: nickserv.account - type: text - required: true - label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. username_autodl - - name: nickserv.password - type: secret - required: false - label: NickServ Password - help: NickServ password - -parse: - type: single - lines: - - test: - - "[Movie/4K] This is a Movie 2160p UHD BluRay x265-TEST - https://www.torrentday.com/details.php?id=0000000 - 5.83 GB" - - "[Movie/4K] This is a Movie 2160p UHD BluRay x265-TEST FREELEECH - https://www.torrentday.com/details.php?id=0000000 - 5.83 GB" - pattern: '\[([^\]]*)] (.*?)\s*(FREELEECH)*\s*-\s+(https?\:\/\/[^\/]+).*[&\?]id=(\d+)\s*- (.*)' - vars: - - category - - torrentName - - freeleech - - baseUrl - - torrentId - - torrentSize - - match: - torrenturl: "{{ .baseUrl }}/download.php/{{ .torrentId }}/{{ .torrentName }}.torrent?torrent_pass={{ .passkey }}" - encode: - - torrentName +--- +#id: torrentday +name: TorrentDay +identifier: torrentday +description: TorrentDay (TD) is a private torrent tracker for GENERAL. +language: en-us +urls: + - https://www.torrentday.com +privacy: private +protocol: torrent +supports: + - irc + - rss +source: custom +settings: + - name: passkey + type: secret + required: true + label: Passkey + help: "Create a RSS Link to find out your PASSKEY" + +irc: + network: TorrentDay + server: irc.torrentday.com + port: 6697 + tls: true + channels: + - "#td.announce" + announcers: + - TD_Announce + settings: + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_autodl + + - name: auth.account + type: text + required: false + label: NickServ Account + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password + type: secret + required: false + label: NickServ Password + help: NickServ password + +parse: + type: single + lines: + - test: + - "[Movie/4K] This is a Movie 2160p UHD BluRay x265-TEST - https://www.torrentday.com/details.php?id=0000000 - 5.83 GB" + - "[Movie/4K] This is a Movie 2160p UHD BluRay x265-TEST FREELEECH - https://www.torrentday.com/details.php?id=0000000 - 5.83 GB" + pattern: '\[([^\]]*)] (.*?)\s*(FREELEECH)*\s*-\s+(https?\:\/\/[^\/]+).*[&\?]id=(\d+)\s*- (.*)' + vars: + - category + - torrentName + - freeleech + - baseUrl + - torrentId + - torrentSize + + match: + torrenturl: "{{ .baseUrl }}/download.php/{{ .torrentId }}/{{ .torrentName }}.torrent?torrent_pass={{ .passkey }}" + encode: + - torrentName diff --git a/internal/indexer/definitions/torrentdb.yaml b/internal/indexer/definitions/torrentdb.yaml index f90bdad..614854a 100644 --- a/internal/indexer/definitions/torrentdb.yaml +++ b/internal/indexer/definitions/torrentdb.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: passkey type: secret + required: true label: Passkey help: "Go to your profile and copy the PID (passkey)" @@ -28,12 +29,19 @@ irc: announcers: - TDBot settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_bot - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password diff --git a/internal/indexer/definitions/torrentleech.yaml b/internal/indexer/definitions/torrentleech.yaml index 1d0762e..cdd80ba 100644 --- a/internal/indexer/definitions/torrentleech.yaml +++ b/internal/indexer/definitions/torrentleech.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: rsskey type: secret + required: true label: RSS key help: "Go to your profile and copy your RSS key" regex: /([\da-fA-F]{20}) @@ -29,12 +30,19 @@ irc: announcers: - _AnnounceBot_ settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account type: text required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_bot - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password diff --git a/internal/indexer/definitions/torrentnetwork.yaml b/internal/indexer/definitions/torrentnetwork.yaml index a6bfcfd..51ddc06 100644 --- a/internal/indexer/definitions/torrentnetwork.yaml +++ b/internal/indexer/definitions/torrentnetwork.yaml @@ -15,6 +15,7 @@ source: unknown settings: - name: passkey type: secret + required: true label: PassKey help: "Home -> RSS -> Extract PassKey from URL" @@ -28,12 +29,19 @@ irc: announcers: - "|TN|" settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user|bot + + - name: auth.account type: text required: true label: NickServ Account - help: NickServ account. Make sure to group your user and bot. E.g. user|bot - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/torrentseeds.yaml b/internal/indexer/definitions/torrentseeds.yaml index 258b4e1..d760ee4 100644 --- a/internal/indexer/definitions/torrentseeds.yaml +++ b/internal/indexer/definitions/torrentseeds.yaml @@ -1,63 +1,72 @@ ---- -#id: TorrentSeeds -name: TorrentSeeds -identifier: torrentseeds -description: TorrentSeeds (TS) is a GENERAL/0-DAY tracker with great pretimes. -language: en-us -urls: - - https://torrentseeds.org -privacy: private -protocol: torrent -supports: - - irc - - rss -source: UNIT3D -settings: - - name: rsskey - type: secret - label: Rss key - help: "Click on your nick / Go to Security / Copy the RID (RSS Key) and paste it here." - -irc: - network: Torrentseeds.org - server: irc.torrentseeds.org - port: 6697 - tls: true - channels: - - "#announce" - announcers: - - torrentseeds - 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 - - name: invite_command - type: secret - default: "Cerberus identify USERNAME IRCKEY" - required: true - label: Invite command - help: Invite auth with Cerberus. Replace USERNAME and IRCKEY - -parse: - type: single - lines: - - test: - - "New: This.Is.A.New.show.S00E00.720p.WEB.H264-Test .:. Category: TV/HD .:. Size: 364.82 MB .:. URL: https://www.torrentseeds.org/details.php?id=000000 .:. Uploaded by: George." - pattern: 'New: (.*) \.:\. Category: (.*) \.:\. Size: (.*) \.:\. URL: (https?\:\/\/[^\/]+).*\/(\d{6,9}) \.:\. Uploaded by: (.*)\.' - vars: - - torrentName - - category - - torrentSize - - baseUrl - - torrentId - - uploader - - match: - torrenturl: "{{ .baseUrl }}/torrent/download/{{ .torrentId }}.{{ .rsskey }}" +--- +#id: TorrentSeeds +name: TorrentSeeds +identifier: torrentseeds +description: TorrentSeeds (TS) is a GENERAL/0-DAY tracker with great pretimes. +language: en-us +urls: + - https://torrentseeds.org +privacy: private +protocol: torrent +supports: + - irc + - rss +source: UNIT3D +settings: + - name: rsskey + type: secret + required: true + label: RSS key + help: "Click on your nick / Go to Settings / Security / Copy the RID (RSS Key) and paste it here." + +irc: + network: Torrentseeds.org + server: irc.torrentseeds.org + port: 6697 + tls: true + channels: + - "#announce" + announcers: + - torrentseeds + settings: + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account + type: text + required: false + label: NickServ Account + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password + type: secret + required: false + label: NickServ Password + help: NickServ password + + - name: invite_command + type: secret + default: "Cerberus identify USERNAME PID" + required: true + label: Invite command + help: Invite auth with Cerberus. Replace USERNAME and PID (passkey). + +parse: + type: single + lines: + - test: + - "New: This.Is.A.New.show.S00E00.720p.WEB.H264-Test .:. Category: TV/HD .:. Size: 364.82 MB .:. URL: https://www.torrentseeds.org/details.php?id=000000 .:. Uploaded by: George." + pattern: 'New: (.*) \.:\. Category: (.*) \.:\. Size: (.*) \.:\. URL: (https?\:\/\/[^\/]+).*\/(\d{6,9}) \.:\. Uploaded by: (.*)\.' + vars: + - torrentName + - category + - torrentSize + - baseUrl + - torrentId + - uploader + + match: + torrenturl: "{{ .baseUrl }}/torrent/download/{{ .torrentId }}.{{ .rsskey }}" diff --git a/internal/indexer/definitions/torrentsyndikat.yaml b/internal/indexer/definitions/torrentsyndikat.yaml index 3436492..e9c03f3 100644 --- a/internal/indexer/definitions/torrentsyndikat.yaml +++ b/internal/indexer/definitions/torrentsyndikat.yaml @@ -15,6 +15,7 @@ source: unknown settings: - name: api_key type: secret + required: true label: Api-Key help: "Generate an apikey with download scope and copy it. Profileinstellungen -> API-Keys -> API-Key erzeugen" @@ -28,16 +29,24 @@ irc: announcers: - Synd1c4t3 settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user-bot + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user-bot - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password help: NickServ password + - name: invite_command type: secret default: "Synd1c4t3 invite IRCKEY" diff --git a/internal/indexer/definitions/trancetraffic.yaml b/internal/indexer/definitions/trancetraffic.yaml index f5e16c0..ec94910 100644 --- a/internal/indexer/definitions/trancetraffic.yaml +++ b/internal/indexer/definitions/trancetraffic.yaml @@ -15,6 +15,7 @@ source: unknown settings: - name: passkey type: secret + required: true label: Passkey help: "Go to https://www.trancetraffic.com/links.php, click on RSS Feed and copy your passkey from the url." @@ -28,12 +29,19 @@ irc: announcers: - TranceTraffic settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user|autodl + + - name: auth.account type: text required: true label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user|autodl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password diff --git a/internal/indexer/definitions/uhdbits.yaml b/internal/indexer/definitions/uhdbits.yaml index 097f586..09f1d9b 100644 --- a/internal/indexer/definitions/uhdbits.yaml +++ b/internal/indexer/definitions/uhdbits.yaml @@ -15,10 +15,13 @@ source: gazelle settings: - name: authkey type: secret + required: true label: Auth key help: Right click DL on a torrent and get the authkey. + - name: torrent_pass type: secret + required: true label: Torrent pass help: Right click DL on a torrent and get the torrent_pass. @@ -33,22 +36,30 @@ irc: - UHDBot - cr0nusbot settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user|autodl + + - name: auth.account type: text required: true label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user|autodl - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: true label: NickServ Password help: NickServ password + - name: invite_command type: secret - default: "UHDBot invite IRCKey" + default: "UHDBot invite IRCKEY" required: true label: Invite command - help: Invite auth with UHDBot. + help: Invite auth with UHDBot. Replace IRCKEY. parse: type: single diff --git a/internal/indexer/definitions/xspeeds.yaml b/internal/indexer/definitions/xspeeds.yaml index 88b15c0..5190f51 100644 --- a/internal/indexer/definitions/xspeeds.yaml +++ b/internal/indexer/definitions/xspeeds.yaml @@ -15,6 +15,7 @@ source: custom settings: - name: passkey type: secret + required: true label: Passkey help: "Go to your profile and copy your Passkey" @@ -28,12 +29,19 @@ irc: announcers: - Announce settings: - - name: nickserv.account + - name: nick type: text required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account + type: text + required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_bot - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password diff --git a/internal/irc/handler.go b/internal/irc/handler.go index afbe188..1241b23 100644 --- a/internal/irc/handler.go +++ b/internal/irc/handler.go @@ -153,13 +153,10 @@ func (h *Handler) Run() error { subLogger := zstdlog.NewStdLoggerWithLevel(h.log.With().Logger(), zerolog.TraceLevel) h.client = &ircevent.Connection{ - Nick: h.network.NickServ.Account, - User: h.network.NickServ.Account, - RealName: h.network.NickServ.Account, + Nick: h.network.Nick, + User: h.network.Auth.Account, + RealName: h.network.Auth.Account, Password: h.network.Pass, - SASLLogin: h.network.NickServ.Account, - SASLPassword: h.network.NickServ.Password, - SASLOptional: true, Server: addr, KeepAlive: 4 * time.Minute, Timeout: 2 * time.Minute, @@ -170,6 +167,15 @@ func (h *Handler) Run() error { Log: subLogger, } + if h.network.Auth.Mechanism == domain.IRCAuthMechanismSASLPlain { + if h.network.Auth.Account != "" && h.network.Auth.Password != "" { + h.client.SASLLogin = h.network.Auth.Account + h.client.SASLPassword = h.network.Auth.Password + h.client.SASLOptional = true + h.client.UseSASL = true + } + } + if h.network.TLS { h.client.UseTLS = true h.client.TLSConfig = &tls.Config{InsecureSkipVerify: true} @@ -226,7 +232,7 @@ func (h *Handler) Run() error { func (h *Handler) isOurNick(nick string) bool { h.m.RLock() defer h.m.RUnlock() - return h.network.NickServ.Account == nick + return h.network.Nick == nick } func (h *Handler) isOurCurrentNick(nick string) bool { @@ -440,7 +446,7 @@ func (h *Handler) handleNickServ(msg ircmsg.Message) { if contains(msg.Params[1], "invalid parameters", "help identify") { h.log.Debug().Msgf("NOTICE nickserv invalid: %v", msg.Params) - if err := h.client.Send("PRIVMSG", "NickServ", fmt.Sprintf("IDENTIFY %v %v", h.network.NickServ.Account, h.network.NickServ.Password)); err != nil { + if err := h.client.Send("PRIVMSG", "NickServ", fmt.Sprintf("IDENTIFY %v %v", h.network.Auth.Account, h.network.Auth.Password)); err != nil { return } } @@ -455,9 +461,9 @@ func (h *Handler) authenticate() bool { return true } - if !h.saslauthed && h.network.NickServ.Password != "" { + if !h.saslauthed && h.network.Auth.Password != "" { h.log.Trace().Msg("on connect not authenticated and password not empty: send nickserv identify") - if err := h.NickServIdentify(h.network.NickServ.Password); err != nil { + if err := h.NickServIdentify(h.network.Auth.Password); err != nil { h.log.Error().Stack().Err(err).Msg("error nickserv") return false } diff --git a/internal/irc/service.go b/internal/irc/service.go index 869b23a..9c94729 100644 --- a/internal/irc/service.go +++ b/internal/irc/service.go @@ -88,7 +88,7 @@ func (s *service) StartHandlers() { // use network.Server + nick to use multiple indexers with different nick per network // this allows for multiple handlers to one network - s.handlers[handlerKey{network.Server, network.NickServ.Account}] = handler + s.handlers[handlerKey{network.Server, network.Nick}] = handler s.lock.Unlock() s.log.Debug().Msgf("starting network: %+v", network.Name) @@ -112,7 +112,7 @@ func (s *service) StopHandlers() { func (s *service) startNetwork(network domain.IrcNetwork) error { // look if we have the network in handlers already, if so start it - if existingHandler, found := s.handlers[handlerKey{network.Server, network.NickServ.Account}]; found { + if existingHandler, found := s.handlers[handlerKey{network.Server, network.Nick}]; found { s.log.Debug().Msgf("starting network: %+v", network.Name) if !existingHandler.client.Connected() { @@ -138,7 +138,7 @@ func (s *service) startNetwork(network domain.IrcNetwork) error { // init new irc handler handler := NewHandler(s.log, network, definitions, s.releaseService, s.notificationService) - s.handlers[handlerKey{network.Server, network.NickServ.Account}] = handler + s.handlers[handlerKey{network.Server, network.Nick}] = handler s.lock.Unlock() s.log.Debug().Msgf("starting network: %+v", network.Name) @@ -155,7 +155,7 @@ func (s *service) startNetwork(network domain.IrcNetwork) error { func (s *service) checkIfNetworkRestartNeeded(network *domain.IrcNetwork) error { // look if we have the network in handlers, if so restart it - if existingHandler, found := s.handlers[handlerKey{network.Server, network.NickServ.Account}]; found { + if existingHandler, found := s.handlers[handlerKey{network.Server, network.Nick}]; found { s.log.Debug().Msgf("irc: decide if irc network handler needs restart or updating: %+v", network.Server) // if server, tls, invite command, port : changed - restart @@ -192,17 +192,17 @@ func (s *service) checkIfNetworkRestartNeeded(network *domain.IrcNetwork) error return nil } - if handler.NickServ.Account != network.NickServ.Account { + if handler.Nick != network.Nick { s.log.Debug().Msg("changing nick") - if err := existingHandler.NickChange(network.NickServ.Account); err != nil { - s.log.Error().Stack().Err(err).Msgf("failed to change nick %q", network.NickServ.Account) + if err := existingHandler.NickChange(network.Nick); err != nil { + s.log.Error().Stack().Err(err).Msgf("failed to change nick %q", network.Nick) } - } else if handler.NickServ.Password != network.NickServ.Password { + } else if handler.Auth.Password != network.Auth.Password { s.log.Debug().Msg("nickserv: changing password") - if err := existingHandler.NickServIdentify(network.NickServ.Password); err != nil { - s.log.Error().Stack().Err(err).Msgf("failed to identify with nickserv %q", network.NickServ.Account) + if err := existingHandler.NickServIdentify(network.Auth.Password); err != nil { + s.log.Error().Stack().Err(err).Msgf("failed to identify with nickserv %q", network.Nick) } } @@ -291,7 +291,7 @@ func (s *service) RestartNetwork(ctx context.Context, id int64) error { func (s *service) restartNetwork(network domain.IrcNetwork) error { // look if we have the network in handlers, if so restart it - if existingHandler, found := s.handlers[handlerKey{network.Server, network.NickServ.Account}]; found { + if existingHandler, found := s.handlers[handlerKey{network.Server, network.Nick}]; found { s.log.Info().Msgf("restarting network: %v", network.Name) if existingHandler.client.Connected() { @@ -396,14 +396,15 @@ func (s *service) GetNetworksWithHealth(ctx context.Context) ([]domain.IrcNetwor Port: n.Port, TLS: n.TLS, Pass: n.Pass, + Nick: n.Nick, + Auth: n.Auth, InviteCommand: n.InviteCommand, - NickServ: n.NickServ, Connected: false, Channels: []domain.ChannelWithHealth{}, ConnectionErrors: []string{}, } - handler, ok := s.handlers[handlerKey{n.Server, n.NickServ.Account}] + handler, ok := s.handlers[handlerKey{n.Server, n.Nick}] if ok { handler.m.RLock() @@ -484,7 +485,7 @@ func (s *service) DeleteNetwork(ctx context.Context, id int64) error { // Remove network and handler //if err = s.StopNetwork(network.Server); err != nil { - if err = s.StopAndRemoveNetwork(handlerKey{network.Server, network.NickServ.Account}); err != nil { + if err = s.StopAndRemoveNetwork(handlerKey{network.Server, network.Nick}); err != nil { s.log.Error().Stack().Err(err).Msgf("could not stop and delete network: %v", network.Name) return err } @@ -524,7 +525,7 @@ func (s *service) UpdateNetwork(ctx context.Context, network *domain.IrcNetwork) } else { // take into account multiple channels per network - err := s.StopAndRemoveNetwork(handlerKey{network.Server, network.NickServ.Account}) + err := s.StopAndRemoveNetwork(handlerKey{network.Server, network.Nick}) if err != nil { s.log.Error().Stack().Err(err).Msgf("could not stop network: %+v", network.Name) return errors.New("could not stop network: %v", network.Name) diff --git a/test/definitions/mock.yaml b/test/definitions/mock.yaml index 750741a..1031750 100644 --- a/test/definitions/mock.yaml +++ b/test/definitions/mock.yaml @@ -29,12 +29,19 @@ irc: announcers: - _AnnounceBot_ settings: - - name: nickserv.account + - name: nick + type: text + required: true + label: Nick + help: Bot nick. Eg. user_bot + + - name: auth.account type: text required: false label: NickServ Account - help: NickServ account. Make sure to group your user and bot. Eg. user_bot - - name: nickserv.password + help: NickServ account. Make sure to group your user and bot. + + - name: auth.password type: secret required: false label: NickServ Password diff --git a/web/src/components/inputs/input_wide.tsx b/web/src/components/inputs/input_wide.tsx index bb3fa20..f1f94e5 100644 --- a/web/src/components/inputs/input_wide.tsx +++ b/web/src/components/inputs/input_wide.tsx @@ -1,4 +1,4 @@ -import type { FieldProps } from "formik"; +import type { FieldProps, FieldValidator } from "formik"; import { Field } from "formik"; import { classNames } from "../../utils"; import { useToggle } from "../../hooks/hooks"; @@ -14,6 +14,7 @@ interface TextFieldWideProps { defaultValue?: string; required?: boolean; hidden?: boolean; + validate?: FieldValidator; } export const TextFieldWide = ({ @@ -23,7 +24,8 @@ export const TextFieldWide = ({ placeholder, defaultValue, required, - hidden + hidden, + validate }: TextFieldWideProps) => (