feat(irc): support optional SASL and NickServ auth (#511)

* feat(irc): support SASL and NickServ auth

* feat(irc): add missing fields

* feat(irc): support SASL and NickServ auth

* feat(irc): add missing fields

* feat(irc): add validation

* feat(indexers): unify and set required values

* feat(irc): add postgres migrations

* feat(irc): use nick as handlerkey

* feat(irc): use account for nickserv

* fix(irc): pg db migration
This commit is contained in:
ze0s 2022-10-27 22:25:58 +02:00 committed by GitHub
parent 4ef0408f33
commit 4bf023d030
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
65 changed files with 1404 additions and 631 deletions

View file

@ -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)

View file

@ -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';`,
}

View file

@ -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;
`,
}

View file

@ -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"`

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 <KEY>"
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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 <IRC_KEY>"
default: "PS-Info pass IRCKEY"
required: true
label: Invite command
help: Invite auth with PS-Info. Replace <IRC_KEY> with your IRC key.
help: Invite auth with PS-Info. Replace IRCKEY with your IRC key.
parse:

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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 <IRC_KEY> #annnonce"
default: "SceneHD .invite IRCKEY #annnonce"
required: true
label: Invite command
help: Invite auth with SceneHD. Replace <IRC_KEY> with your IRC key
help: Invite auth with SceneHD. Replace IRCKEY with your IRC key
parse:
type: single

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 }}"

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
}

View file

@ -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)