mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 08:49:13 +00:00
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:
parent
4ef0408f33
commit
4bf023d030
65 changed files with 1404 additions and 631 deletions
|
@ -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) {
|
func (r *IrcRepo) GetNetworkByID(ctx context.Context, id int64) (*domain.IrcNetwork, error) {
|
||||||
queryBuilder := r.db.squirrel.
|
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").
|
From("irc_network").
|
||||||
Where("id = ?", id)
|
Where("id = ?", id)
|
||||||
|
|
||||||
|
@ -38,20 +38,21 @@ func (r *IrcRepo) GetNetworkByID(ctx context.Context, id int64) (*domain.IrcNetw
|
||||||
|
|
||||||
var n domain.IrcNetwork
|
var n domain.IrcNetwork
|
||||||
|
|
||||||
var pass, inviteCmd sql.NullString
|
var pass, nick, inviteCmd sql.NullString
|
||||||
var nsAccount, nsPassword sql.NullString
|
var account, password sql.NullString
|
||||||
var tls sql.NullBool
|
var tls sql.NullBool
|
||||||
|
|
||||||
row := r.db.handler.QueryRowContext(ctx, query, args...)
|
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")
|
return nil, errors.Wrap(err, "error scanning row")
|
||||||
}
|
}
|
||||||
|
|
||||||
n.TLS = tls.Bool
|
n.TLS = tls.Bool
|
||||||
n.Pass = pass.String
|
n.Pass = pass.String
|
||||||
|
n.Nick = nick.String
|
||||||
n.InviteCommand = inviteCmd.String
|
n.InviteCommand = inviteCmd.String
|
||||||
n.NickServ.Account = nsAccount.String
|
n.Auth.Account = account.String
|
||||||
n.NickServ.Password = nsPassword.String
|
n.Auth.Password = password.String
|
||||||
|
|
||||||
return &n, nil
|
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) {
|
func (r *IrcRepo) FindActiveNetworks(ctx context.Context) ([]domain.IrcNetwork, error) {
|
||||||
queryBuilder := r.db.squirrel.
|
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").
|
From("irc_network").
|
||||||
Where("enabled = ?", true)
|
Where("enabled = ?", true)
|
||||||
|
|
||||||
|
@ -123,20 +124,21 @@ func (r *IrcRepo) FindActiveNetworks(ctx context.Context) ([]domain.IrcNetwork,
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var net domain.IrcNetwork
|
var net domain.IrcNetwork
|
||||||
|
|
||||||
var pass, inviteCmd sql.NullString
|
var pass, nick, inviteCmd sql.NullString
|
||||||
var nsAccount, nsPassword sql.NullString
|
var account, password sql.NullString
|
||||||
var tls sql.NullBool
|
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")
|
return nil, errors.Wrap(err, "error scanning row")
|
||||||
}
|
}
|
||||||
|
|
||||||
net.TLS = tls.Bool
|
net.TLS = tls.Bool
|
||||||
net.Pass = pass.String
|
net.Pass = pass.String
|
||||||
|
net.Nick = nick.String
|
||||||
net.InviteCommand = inviteCmd.String
|
net.InviteCommand = inviteCmd.String
|
||||||
|
|
||||||
net.NickServ.Account = nsAccount.String
|
net.Auth.Account = account.String
|
||||||
net.NickServ.Password = nsPassword.String
|
net.Auth.Password = password.String
|
||||||
|
|
||||||
networks = append(networks, net)
|
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) {
|
func (r *IrcRepo) ListNetworks(ctx context.Context) ([]domain.IrcNetwork, error) {
|
||||||
queryBuilder := r.db.squirrel.
|
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").
|
From("irc_network").
|
||||||
OrderBy("name ASC")
|
OrderBy("name ASC")
|
||||||
|
|
||||||
|
@ -169,20 +171,21 @@ func (r *IrcRepo) ListNetworks(ctx context.Context) ([]domain.IrcNetwork, error)
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var net domain.IrcNetwork
|
var net domain.IrcNetwork
|
||||||
|
|
||||||
var pass, inviteCmd sql.NullString
|
var pass, nick, inviteCmd sql.NullString
|
||||||
var nsAccount, nsPassword sql.NullString
|
var account, password sql.NullString
|
||||||
var tls sql.NullBool
|
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")
|
return nil, errors.Wrap(err, "error scanning row")
|
||||||
}
|
}
|
||||||
|
|
||||||
net.TLS = tls.Bool
|
net.TLS = tls.Bool
|
||||||
net.Pass = pass.String
|
net.Pass = pass.String
|
||||||
|
net.Nick = nick.String
|
||||||
net.InviteCommand = inviteCmd.String
|
net.InviteCommand = inviteCmd.String
|
||||||
|
|
||||||
net.NickServ.Account = nsAccount.String
|
net.Auth.Account = account.String
|
||||||
net.NickServ.Password = nsPassword.String
|
net.Auth.Password = password.String
|
||||||
|
|
||||||
networks = append(networks, net)
|
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) {
|
func (r *IrcRepo) CheckExistingNetwork(ctx context.Context, network *domain.IrcNetwork) (*domain.IrcNetwork, error) {
|
||||||
queryBuilder := r.db.squirrel.
|
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").
|
From("irc_network").
|
||||||
Where("server = ?", network.Server).
|
Where("server = ?", network.Server).
|
||||||
Where("nickserv_account = ?", network.NickServ.Account)
|
Where("auth_account = ?", network.Auth.Account)
|
||||||
|
|
||||||
query, args, err := queryBuilder.ToSql()
|
query, args, err := queryBuilder.ToSql()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -247,10 +250,11 @@ func (r *IrcRepo) CheckExistingNetwork(ctx context.Context, network *domain.IrcN
|
||||||
|
|
||||||
var net domain.IrcNetwork
|
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
|
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 {
|
if err == sql.ErrNoRows {
|
||||||
// no result is not an error in our case
|
// no result is not an error in our case
|
||||||
return nil, nil
|
return nil, nil
|
||||||
|
@ -260,8 +264,10 @@ func (r *IrcRepo) CheckExistingNetwork(ctx context.Context, network *domain.IrcN
|
||||||
|
|
||||||
net.TLS = tls.Bool
|
net.TLS = tls.Bool
|
||||||
net.Pass = pass.String
|
net.Pass = pass.String
|
||||||
|
net.Nick = nick.String
|
||||||
net.InviteCommand = inviteCmd.String
|
net.InviteCommand = inviteCmd.String
|
||||||
net.NickServ.Password = nickPass.String
|
net.Auth.Account = account.String
|
||||||
|
net.Auth.Password = password.String
|
||||||
|
|
||||||
return &net, nil
|
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 {
|
func (r *IrcRepo) StoreNetwork(network *domain.IrcNetwork) error {
|
||||||
netName := toNullString(network.Name)
|
netName := toNullString(network.Name)
|
||||||
pass := toNullString(network.Pass)
|
pass := toNullString(network.Pass)
|
||||||
|
nick := toNullString(network.Nick)
|
||||||
inviteCmd := toNullString(network.InviteCommand)
|
inviteCmd := toNullString(network.InviteCommand)
|
||||||
|
|
||||||
nsAccount := toNullString(network.NickServ.Account)
|
account := toNullString(network.Auth.Account)
|
||||||
nsPassword := toNullString(network.NickServ.Password)
|
password := toNullString(network.Auth.Password)
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
var retID int64
|
var retID int64
|
||||||
|
@ -286,9 +293,11 @@ func (r *IrcRepo) StoreNetwork(network *domain.IrcNetwork) error {
|
||||||
"port",
|
"port",
|
||||||
"tls",
|
"tls",
|
||||||
"pass",
|
"pass",
|
||||||
|
"nick",
|
||||||
|
"auth_mechanism",
|
||||||
|
"auth_account",
|
||||||
|
"auth_password",
|
||||||
"invite_command",
|
"invite_command",
|
||||||
"nickserv_account",
|
|
||||||
"nickserv_password",
|
|
||||||
).
|
).
|
||||||
Values(
|
Values(
|
||||||
network.Enabled,
|
network.Enabled,
|
||||||
|
@ -297,9 +306,11 @@ func (r *IrcRepo) StoreNetwork(network *domain.IrcNetwork) error {
|
||||||
network.Port,
|
network.Port,
|
||||||
network.TLS,
|
network.TLS,
|
||||||
pass,
|
pass,
|
||||||
|
nick,
|
||||||
|
network.Auth.Mechanism,
|
||||||
|
account,
|
||||||
|
password,
|
||||||
inviteCmd,
|
inviteCmd,
|
||||||
nsAccount,
|
|
||||||
nsPassword,
|
|
||||||
).
|
).
|
||||||
Suffix("RETURNING id").
|
Suffix("RETURNING id").
|
||||||
RunWith(r.db.handler)
|
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 {
|
func (r *IrcRepo) UpdateNetwork(ctx context.Context, network *domain.IrcNetwork) error {
|
||||||
netName := toNullString(network.Name)
|
netName := toNullString(network.Name)
|
||||||
pass := toNullString(network.Pass)
|
pass := toNullString(network.Pass)
|
||||||
|
nick := toNullString(network.Nick)
|
||||||
inviteCmd := toNullString(network.InviteCommand)
|
inviteCmd := toNullString(network.InviteCommand)
|
||||||
|
|
||||||
nsAccount := toNullString(network.NickServ.Account)
|
account := toNullString(network.Auth.Account)
|
||||||
nsPassword := toNullString(network.NickServ.Password)
|
password := toNullString(network.Auth.Password)
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
@ -332,9 +344,11 @@ func (r *IrcRepo) UpdateNetwork(ctx context.Context, network *domain.IrcNetwork)
|
||||||
Set("port", network.Port).
|
Set("port", network.Port).
|
||||||
Set("tls", network.TLS).
|
Set("tls", network.TLS).
|
||||||
Set("pass", pass).
|
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("invite_command", inviteCmd).
|
||||||
Set("nickserv_account", nsAccount).
|
|
||||||
Set("nickserv_password", nsPassword).
|
|
||||||
Set("updated_at", time.Now().Format(time.RFC3339)).
|
Set("updated_at", time.Now().Format(time.RFC3339)).
|
||||||
Where("id = ?", network.ID)
|
Where("id = ?", network.ID)
|
||||||
|
|
||||||
|
|
|
@ -36,14 +36,16 @@ CREATE TABLE irc_network
|
||||||
port INTEGER NOT NULL,
|
port INTEGER NOT NULL,
|
||||||
tls BOOLEAN,
|
tls BOOLEAN,
|
||||||
pass TEXT,
|
pass TEXT,
|
||||||
|
nick TEXT,
|
||||||
|
auth_mechanism TEXT,
|
||||||
|
auth_account TEXT,
|
||||||
|
auth_password TEXT,
|
||||||
invite_command TEXT,
|
invite_command TEXT,
|
||||||
nickserv_account TEXT,
|
|
||||||
nickserv_password TEXT,
|
|
||||||
connected BOOLEAN,
|
connected BOOLEAN,
|
||||||
connected_since TIMESTAMP,
|
connected_since TIMESTAMP,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
UNIQUE (server, port, nickserv_account)
|
UNIQUE (server, port, nick)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE irc_channel
|
CREATE TABLE irc_channel
|
||||||
|
@ -589,4 +591,28 @@ CREATE INDEX indexer_identifier_index
|
||||||
ALTER TABLE filter
|
ALTER TABLE filter
|
||||||
ADD COLUMN use_regex_release_tags BOOLEAN DEFAULT FALSE;
|
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';`,
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,14 +36,16 @@ CREATE TABLE irc_network
|
||||||
port INTEGER NOT NULL,
|
port INTEGER NOT NULL,
|
||||||
tls BOOLEAN,
|
tls BOOLEAN,
|
||||||
pass TEXT,
|
pass TEXT,
|
||||||
|
nick TEXT,
|
||||||
|
auth_mechanism TEXT,
|
||||||
|
auth_account TEXT,
|
||||||
|
auth_password TEXT,
|
||||||
invite_command TEXT,
|
invite_command TEXT,
|
||||||
nickserv_account TEXT,
|
|
||||||
nickserv_password TEXT,
|
|
||||||
connected BOOLEAN,
|
connected BOOLEAN,
|
||||||
connected_since TIMESTAMP,
|
connected_since TIMESTAMP,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
UNIQUE (server, port, nickserv_account)
|
UNIQUE (server, port, nick)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE irc_channel
|
CREATE TABLE irc_channel
|
||||||
|
@ -909,4 +911,52 @@ CREATE INDEX indexer_identifier_index
|
||||||
ALTER TABLE filter
|
ALTER TABLE filter
|
||||||
ADD COLUMN use_regex_release_tags BOOLEAN DEFAULT FALSE;
|
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;
|
||||||
|
`,
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,16 @@ type IrcChannel struct {
|
||||||
Monitoring bool `json:"monitoring"`
|
Monitoring bool `json:"monitoring"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type NickServ struct {
|
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"`
|
Account string `json:"account,omitempty"`
|
||||||
Password string `json:"password,omitempty"`
|
Password string `json:"password,omitempty"`
|
||||||
}
|
}
|
||||||
|
@ -27,8 +36,9 @@ type IrcNetwork struct {
|
||||||
Port int `json:"port"`
|
Port int `json:"port"`
|
||||||
TLS bool `json:"tls"`
|
TLS bool `json:"tls"`
|
||||||
Pass string `json:"pass"`
|
Pass string `json:"pass"`
|
||||||
|
Nick string `json:"nick"`
|
||||||
|
Auth IRCAuth `json:"auth,omitempty"`
|
||||||
InviteCommand string `json:"invite_command"`
|
InviteCommand string `json:"invite_command"`
|
||||||
NickServ NickServ `json:"nickserv,omitempty"`
|
|
||||||
Channels []IrcChannel `json:"channels"`
|
Channels []IrcChannel `json:"channels"`
|
||||||
Connected bool `json:"connected"`
|
Connected bool `json:"connected"`
|
||||||
ConnectedSince *time.Time `json:"connected_since"`
|
ConnectedSince *time.Time `json:"connected_since"`
|
||||||
|
@ -42,8 +52,9 @@ type IrcNetworkWithHealth struct {
|
||||||
Port int `json:"port"`
|
Port int `json:"port"`
|
||||||
TLS bool `json:"tls"`
|
TLS bool `json:"tls"`
|
||||||
Pass string `json:"pass"`
|
Pass string `json:"pass"`
|
||||||
|
Nick string `json:"nick"`
|
||||||
|
Auth IRCAuth `json:"auth,omitempty"`
|
||||||
InviteCommand string `json:"invite_command"`
|
InviteCommand string `json:"invite_command"`
|
||||||
NickServ NickServ `json:"nickserv,omitempty"`
|
|
||||||
CurrentNick string `json:"current_nick"`
|
CurrentNick string `json:"current_nick"`
|
||||||
PreferredNick string `json:"preferred_nick"`
|
PreferredNick string `json:"preferred_nick"`
|
||||||
Channels []ChannelWithHealth `json:"channels"`
|
Channels []ChannelWithHealth `json:"channels"`
|
||||||
|
|
|
@ -15,11 +15,14 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Pass key
|
label: Pass key
|
||||||
help: "Your passkey"
|
help: "Your passkey"
|
||||||
regex: /([\da-z]{32})
|
regex: /([\da-z]{32})
|
||||||
|
|
||||||
- name: uid
|
- name: uid
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: User ID
|
label: User ID
|
||||||
help: "Your User ID"
|
help: "Your User ID"
|
||||||
regex: /(\d+)
|
regex: /(\d+)
|
||||||
|
@ -34,12 +37,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- ACiD-BaBy
|
- ACiD-BaBy
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,10 +15,13 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click DL on a torrent and get the authkey.
|
help: Right click DL on a torrent and get the authkey.
|
||||||
|
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
|
@ -32,22 +35,30 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Voyager
|
- Voyager
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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 main user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "Voyager autobot USERNAME IRCKey"
|
default: "Voyager autobot USERNAME IRCKEY"
|
||||||
required: false
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: Invite auth with Voyager.
|
help: Invite auth with Voyager. Replace USERNAME with site nick and set IRCKEY.
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: multi
|
type: multi
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: PassKey
|
label: PassKey
|
||||||
help: Settings -> Account -> Passkey.
|
help: Settings -> Account -> Passkey.
|
||||||
|
|
||||||
|
@ -28,22 +29,30 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Satsuki
|
- Satsuki
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user|autodl
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user|autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "/msg Satsuki enter #announce {AB username} ircKey"
|
default: "Satsuki enter #announce USERNAME IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: Invite auth with Satsuki, animebytes.tv/irc
|
help: Invite auth with Satsuki, animebytes.tv/irc. Replace USERNAME and IRCKEY.
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: UNIT3D (F3NIX)
|
||||||
settings:
|
settings:
|
||||||
- name: rsskey
|
- name: rsskey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: RSS key
|
label: RSS key
|
||||||
help: "Go to your profile, My Security, RSS Key and copy RSS key."
|
help: "Go to your profile, My Security, RSS Key and copy RSS key."
|
||||||
|
|
||||||
|
@ -29,22 +30,30 @@ irc:
|
||||||
- Willie
|
- Willie
|
||||||
- Millie
|
- Millie
|
||||||
settings:
|
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
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user|autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "Millie announce ircKey"
|
default: "Millie announce IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: Invite auth with Millie.
|
help: Invite auth with Millie. Replace IRCKEY.
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Pass key
|
label: Pass key
|
||||||
help: "Your passkey"
|
help: "Your passkey"
|
||||||
regex: /([\da-z]{32})
|
regex: /([\da-z]{32})
|
||||||
|
@ -29,12 +30,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- BHD-bot
|
- BHD-bot
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: rsskey
|
- name: rsskey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: RSS key
|
label: RSS key
|
||||||
help: "The rsskey in your RSS feed link"
|
help: "The rsskey in your RSS feed link"
|
||||||
|
|
||||||
|
@ -28,12 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Tracer
|
- Tracer
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Ask staff to unlock it!
|
help: NickServ account. Make sure to group your user and bot. Ask staff to unlock it!
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -16,14 +16,19 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click DL on a torrent and get the authkey.
|
help: Right click DL on a torrent and get the authkey.
|
||||||
|
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
- name: api_key
|
- name: api_key
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: API Key
|
label: API Key
|
||||||
help: Username -> Edit Profile -> API
|
help: Username -> Edit Profile -> API
|
||||||
|
|
||||||
|
@ -49,12 +54,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Barney
|
- Barney
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user|autodl
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user|autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,7 +15,8 @@ source: UNIT3D
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
label: Passkey
|
required: true
|
||||||
|
label: RSS key
|
||||||
help: "Go to your profile tab under safety, copy RSS Key (RID)"
|
help: "Go to your profile tab under safety, copy RSS Key (RID)"
|
||||||
|
|
||||||
irc:
|
irc:
|
||||||
|
@ -28,22 +29,30 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- DBBot
|
- DBBot
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user|autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "DBBot announce ircKey"
|
default: "DBBot announce IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: Invite auth with DBBot.
|
help: Invite auth with DBBot. Replace IRCKEY with your key.
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: PassKey
|
label: PassKey
|
||||||
help: Settings -> Security -> Passkey.
|
help: Settings -> Security -> Passkey.
|
||||||
|
|
||||||
|
@ -28,16 +29,24 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- ENDOR
|
- ENDOR
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user|autodl
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user|autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "ENDOR !invite USERNAME IRCKEY"
|
default: "ENDOR !invite USERNAME IRCKEY"
|
||||||
|
|
|
@ -15,10 +15,13 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click DL on a torrent and get the authkey.
|
help: Right click DL on a torrent and get the authkey.
|
||||||
|
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
|
@ -32,12 +35,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- "^Wizard^"
|
- "^Wizard^"
|
||||||
settings:
|
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
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user_bot. Must have staff permission first.
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,10 +15,13 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click DL on a torrent and get the authkey.
|
help: Right click DL on a torrent and get the authkey.
|
||||||
|
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
|
@ -32,12 +35,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- TheGimp
|
- TheGimp
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user|bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "The passkey in your profile."
|
help: "The passkey in your profile."
|
||||||
|
|
||||||
|
@ -28,12 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Announce
|
- Announce
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_dl
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user_dl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -13,10 +13,13 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: uid
|
- name: uid
|
||||||
type: text
|
type: text
|
||||||
|
required: true
|
||||||
label: User ID
|
label: User ID
|
||||||
help: Create rss link at https://www.fuzer.me/getrss.php and find at &u=11111
|
help: Create rss link at https://www.fuzer.me/getrss.php and find at &u=11111
|
||||||
|
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: PassKey
|
label: PassKey
|
||||||
help: Create rss link at https://www.fuzer.me/getrss.php and find at &torrent_pass=...
|
help: Create rss link at https://www.fuzer.me/getrss.php and find at &torrent_pass=...
|
||||||
|
|
||||||
|
@ -30,15 +33,22 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Fuzer
|
- Fuzer
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: A password of your choice to be used for the bot identification. Save it!
|
help: NickServ password
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -16,14 +16,19 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click DL on a torrent and get the authkey.
|
help: Right click DL on a torrent and get the authkey.
|
||||||
|
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
- name: api_key
|
- name: api_key
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: API Key
|
label: API Key
|
||||||
help: Username -> Edit / Settings -> API Keys
|
help: Username -> Edit / Settings -> API Keys
|
||||||
|
|
||||||
|
@ -49,22 +54,30 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Vertigo
|
- Vertigo
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user|bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "Vertigo ENTER #GGn-Announce USERNAME IRCKey"
|
default: "Vertigo ENTER #GGn-Announce USERNAME IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: Invite auth with Vertigo.
|
help: Invite auth with Vertigo. Replace USERNAME and IRCKEY.
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: rsskey
|
- name: rsskey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: RSS key
|
label: RSS key
|
||||||
help: "Go to My Panel and then Change PID. It will show the PID, but don't click it!"
|
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:
|
announcers:
|
||||||
- hdspace
|
- hdspace
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -16,10 +16,12 @@ source: xbtit
|
||||||
settings:
|
settings:
|
||||||
- name: key
|
- name: key
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: RSS key
|
label: RSS key
|
||||||
help: "Generate a RSS feed and copy key from URL"
|
help: "Generate a RSS feed and copy key from URL"
|
||||||
- name: token
|
- name: token
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: RSS Token
|
label: RSS Token
|
||||||
help: "Generate a RSS feed and copy token from URL"
|
help: "Generate a RSS feed and copy token from URL"
|
||||||
|
|
||||||
|
@ -33,12 +35,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- HoboLarry
|
- HoboLarry
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user-bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: Copy the passkey from your profile page
|
help: Copy the passkey from your profile page
|
||||||
|
|
||||||
|
@ -28,22 +29,30 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- midgards
|
- midgards
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user|autodl
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user|autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "midgards announce IRCKey"
|
default: "midgards announce IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
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:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -13,10 +13,13 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: PassKey
|
label: PassKey
|
||||||
help: Right click download on a torrent and get the passkey.
|
help: Right click download on a torrent and get the passkey.
|
||||||
|
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click download on a torrent and get the authkey.
|
help: Right click download on a torrent and get the authkey.
|
||||||
|
|
||||||
|
@ -30,22 +33,30 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- HeBoT
|
- HeBoT
|
||||||
settings:
|
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
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: "NickServ account name. Make sure you follow the naming scheme: HebitsNickname|bot"
|
help: NickServ account. Make sure to group your main user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: A password of your choice to be used for the bot identification. Save it!
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "HeBoT !invite IRCKey"
|
default: "HeBoT !invite IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: "Replace IRCKey with: Edit Profile -> Access Settings -> IRC Key"
|
help: "Replace IRCKEY with: Edit Profile -> Access Settings -> IRC Key"
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: multi
|
type: multi
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Go to https://immortalseed.me/getrss.php to get the RSS feed link and extract passkey from secret_key"
|
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})'
|
regex: '[\?&;]secret_key=([\da-fA-F]{32})'
|
||||||
|
@ -29,15 +30,21 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- thoth
|
- thoth
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
|
@ -46,7 +53,7 @@ irc:
|
||||||
default: "immortal invite USERNAME IRCKEY"
|
default: "immortal invite USERNAME IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: Invite auth with immortal.
|
help: Invite auth with immortal. Replace USERNAME and IRCKEY.
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Go to your profile and copy your passkey"
|
help: "Go to your profile and copy your passkey"
|
||||||
|
|
||||||
|
@ -28,12 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Metal
|
- Metal
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -16,6 +16,7 @@ source: unknown
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Copy the passkey from your details page."
|
help: "Copy the passkey from your details page."
|
||||||
|
|
||||||
|
@ -30,12 +31,19 @@ irc:
|
||||||
- IPT
|
- IPT
|
||||||
- FunTimes
|
- FunTimes
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_autodl
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user_autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: apikey
|
- name: apikey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Api key
|
label: Api key
|
||||||
help: "Go to your profile and copy your Api key from settings"
|
help: "Go to your profile and copy your Api key from settings"
|
||||||
regex: /([a-zA-Z0-9\+])
|
regex: /([a-zA-Z0-9\+])
|
||||||
|
@ -31,12 +32,19 @@ irc:
|
||||||
- the_cow1
|
- the_cow1
|
||||||
- the_cow2
|
- the_cow2
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,10 +15,13 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click DL on a torrent and get the authkey.
|
help: Right click DL on a torrent and get the authkey.
|
||||||
|
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
|
@ -32,12 +35,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Jarvis
|
- Jarvis
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: cookie
|
- name: cookie
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Cookie (mam_id)
|
label: Cookie (mam_id)
|
||||||
help: "Check how to get cookies in your browser and find the mam_id cookie. Changes monthly"
|
help: "Check how to get cookies in your browser and find the mam_id cookie. Changes monthly"
|
||||||
|
|
||||||
|
@ -28,12 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- MouseBot
|
- MouseBot
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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. Use main nick here.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -14,6 +14,7 @@ source: unknown
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Check a torrent download link. key='value' is your passkey."
|
help: "Check a torrent download link. key='value' is your passkey."
|
||||||
|
|
||||||
|
@ -27,13 +28,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- nCore
|
- nCore
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: Nick
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user|autodl
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
@ -41,10 +48,10 @@ irc:
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "NBOT !invite <KEY>"
|
default: "NBOT !invite IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
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:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,10 +15,13 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click DL on a torrent and get the authkey.
|
help: Right click DL on a torrent and get the authkey.
|
||||||
|
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
|
@ -32,24 +35,30 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- DRADIS
|
- DRADIS
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: Nick
|
||||||
help: NickServ account. Make sure to group your user and bot. Like user|bot
|
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
|
type: secret
|
||||||
required: true
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "Muffit bot #nbl-announce USERNAME IRCKey"
|
default: "Muffit bot #nbl-announce USERNAME IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: Invite auth with Muffit.
|
help: Invite auth with Muffit. Replace USERNAME and IRCKEY.
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Copy passkey from a download link"
|
help: "Copy passkey from a download link"
|
||||||
|
|
||||||
|
@ -28,12 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- NB
|
- NB
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Use primary nick or ask staff to allow grouped nick.
|
help: NickServ account. Use primary nick or ask staff to allow grouped nick.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,10 +15,13 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click DL on a torrent and get the authkey.
|
help: Right click DL on a torrent and get the authkey.
|
||||||
|
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
|
@ -32,22 +35,30 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Udon
|
- Udon
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user|bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "Udon KNOCK oppaitime-announce [username] [irckey]"
|
default: "Udon KNOCK oppaitime-announce USERNAME IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
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
|
# Categories
|
||||||
# Movies
|
# Movies
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: text
|
type: text
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
|
@ -28,22 +29,30 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- hermes
|
- hermes
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user|bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "hermes enter #announce USERNAME IRCKey"
|
default: "hermes enter #announce USERNAME IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: Invite auth with Hermes.
|
help: Invite auth with Hermes. Replace USERNAME and IRCKEY.
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,10 +15,13 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click DL on a torrent and get the authkey.
|
help: Right click DL on a torrent and get the authkey.
|
||||||
|
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
|
@ -32,12 +35,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- "PB-Announcer"
|
- "PB-Announcer"
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Copy your passkey from the RSS feed"
|
help: "Copy your passkey from the RSS feed"
|
||||||
|
|
||||||
|
@ -28,13 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- PS-Info
|
- PS-Info
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: false
|
required: true
|
||||||
label: NickServ Account
|
label: Nick
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user_bot
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
@ -42,10 +49,10 @@ irc:
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "PS-Info pass <IRC_KEY>"
|
default: "PS-Info pass IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
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:
|
parse:
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: rsskey
|
- name: rsskey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: RSS key
|
label: RSS key
|
||||||
help: "Go to your profile and copy your RSS key"
|
help: "Go to your profile and copy your RSS key"
|
||||||
|
|
||||||
|
@ -28,13 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- PT-BOT
|
- PT-BOT
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: false
|
required: true
|
||||||
label: NickServ Account
|
label: Nick
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user_bot
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
@ -42,10 +49,10 @@ irc:
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "PT-BOT invite IRC_KEY"
|
default: "PT-BOT invite IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
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:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: rsskey
|
- name: rsskey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: RSS key
|
label: RSS key
|
||||||
help: "Copy your RSS key from the RSS feed"
|
help: "Copy your RSS key from the RSS feed"
|
||||||
regex: /([\da-fA-F]{32})
|
regex: /([\da-fA-F]{32})
|
||||||
|
@ -29,12 +30,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- PTMbot
|
- PTMbot
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -16,18 +16,25 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click DL on a torrent and get the authkey.
|
help: Right click DL on a torrent and get the authkey.
|
||||||
|
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
- name: api_user
|
- name: api_user
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: API User
|
label: API User
|
||||||
help: Edit profile -> Security -> Generate new api keys
|
help: Edit profile -> Security -> Generate new api keys
|
||||||
|
|
||||||
- name: api_key
|
- name: api_key
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: API Key
|
label: API Key
|
||||||
help: Edit profile -> Security -> Generate new api keys
|
help: Edit profile -> Security -> Generate new api keys
|
||||||
|
|
||||||
|
@ -57,22 +64,30 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Hummingbird
|
- Hummingbird
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user|autodl
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user|autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "Hummingbird ENTER USERNAME IRCKey #ptp-announce-dev"
|
default: "Hummingbird ENTER USERNAME IRCKEY #ptp-announce-dev"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: Invite auth with Hummingbird.
|
help: Invite auth with Hummingbird. Replace USERNAME and IRCKEY.
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: rsskey
|
- name: rsskey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: RSS key
|
label: RSS key
|
||||||
help: "Copy your RSS key from the RSS feed"
|
help: "Copy your RSS key from the RSS feed"
|
||||||
regex: /([\da-fA-F]{20})
|
regex: /([\da-fA-F]{20})
|
||||||
|
@ -29,12 +30,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- _PussyBot_
|
- _PussyBot_
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -16,14 +16,19 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click DL on a torrent and get the authkey.
|
help: Right click DL on a torrent and get the authkey.
|
||||||
|
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
- name: api_key
|
- name: api_key
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: API Key
|
label: API Key
|
||||||
help: Settings -> Account Settings -> API Keys - Generate new api keys. Scope (User, Torrents)
|
help: Settings -> Account Settings -> API Keys - Generate new api keys. Scope (User, Torrents)
|
||||||
|
|
||||||
|
@ -49,22 +54,30 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Drone
|
- Drone
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user-autodl
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user-autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "Drone enter #red-announce USERNAME IRCKey"
|
default: "Drone enter #red-announce USERNAME IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: Invite auth with Drone.
|
help: Invite auth with Drone. Replace USERNAME and IRCKEY.
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Go to User CP, User CP Home and copy the passkey"
|
help: "Go to User CP, User CP Home and copy the passkey"
|
||||||
|
|
||||||
|
@ -31,12 +32,19 @@ irc:
|
||||||
- retroflix-announcer2
|
- retroflix-announcer2
|
||||||
- retroflix-announcer3
|
- retroflix-announcer3
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Copy the passkey from a download link"
|
help: "Copy the passkey from a download link"
|
||||||
|
|
||||||
|
@ -28,16 +29,24 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- RevoTT
|
- RevoTT
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_autodl
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user_autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "RevoTT !invite USERNAME PASSKEY"
|
default: "RevoTT !invite USERNAME PASSKEY"
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Go to https://scenehd.org/getrss.php and extract your Passkey"
|
help: "Go to https://scenehd.org/getrss.php and extract your Passkey"
|
||||||
|
|
||||||
|
@ -28,12 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- SceneHD
|
- SceneHD
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
@ -41,10 +49,10 @@ irc:
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "SceneHD .invite <IRC_KEY> #annnonce"
|
default: "SceneHD .invite IRCKEY #annnonce"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
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:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -14,6 +14,7 @@ source: unknown
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: PassKey
|
label: PassKey
|
||||||
help: Copy the passkey from your profile
|
help: Copy the passkey from your profile
|
||||||
|
|
||||||
|
@ -27,12 +28,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- speedapp-announcer
|
- speedapp-announcer
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
|
help: NickServ account. Make sure to group your main user and bot.
|
||||||
|
|
||||||
- name: nickserv.password
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -23,12 +23,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- "Katou"
|
- "Katou"
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account.
|
help: NickServ account. Make sure to group your main user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: rartracker
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Copy the passkey from the /rss page."
|
help: "Copy the passkey from the /rss page."
|
||||||
|
|
||||||
|
@ -28,12 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- SuperBits
|
- SuperBits
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user-bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: cookie
|
- name: cookie
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Cookie
|
label: Cookie
|
||||||
help: "Check how to get cookies in your browser and find the uid and pass cookies. Example: uid=1234; pass=asdf12347asdf13"
|
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:
|
announcers:
|
||||||
- ByteMe
|
- ByteMe
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user-bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "erica letmeinannounce USERNAME IRCKEY"
|
default: "erica letmeinannounce USERNAME IRCKEY"
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Create a RSS Link to find out your PASSKEY"
|
help: "Create a RSS Link to find out your PASSKEY"
|
||||||
|
|
||||||
|
@ -28,12 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- TD_Announce
|
- TD_Announce
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_autodl
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. username_autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Go to your profile and copy the PID (passkey)"
|
help: "Go to your profile and copy the PID (passkey)"
|
||||||
|
|
||||||
|
@ -28,12 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- TDBot
|
- TDBot
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: rsskey
|
- name: rsskey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: RSS key
|
label: RSS key
|
||||||
help: "Go to your profile and copy your RSS key"
|
help: "Go to your profile and copy your RSS key"
|
||||||
regex: /([\da-fA-F]{20})
|
regex: /([\da-fA-F]{20})
|
||||||
|
@ -29,12 +30,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- _AnnounceBot_
|
- _AnnounceBot_
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: unknown
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: PassKey
|
label: PassKey
|
||||||
help: "Home -> RSS -> Extract PassKey from URL"
|
help: "Home -> RSS -> Extract PassKey from URL"
|
||||||
|
|
||||||
|
@ -28,12 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- "|TN|"
|
- "|TN|"
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user|bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. E.g. user|bot
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,8 +15,9 @@ source: UNIT3D
|
||||||
settings:
|
settings:
|
||||||
- name: rsskey
|
- name: rsskey
|
||||||
type: secret
|
type: secret
|
||||||
label: Rss key
|
required: true
|
||||||
help: "Click on your nick / Go to Security / Copy the RID (RSS Key) and paste it here."
|
label: RSS key
|
||||||
|
help: "Click on your nick / Go to Settings / Security / Copy the RID (RSS Key) and paste it here."
|
||||||
|
|
||||||
irc:
|
irc:
|
||||||
network: Torrentseeds.org
|
network: Torrentseeds.org
|
||||||
|
@ -28,22 +29,30 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- torrentseeds
|
- torrentseeds
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "Cerberus identify USERNAME IRCKEY"
|
default: "Cerberus identify USERNAME PID"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: Invite auth with Cerberus. Replace USERNAME and IRCKEY
|
help: Invite auth with Cerberus. Replace USERNAME and PID (passkey).
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: unknown
|
||||||
settings:
|
settings:
|
||||||
- name: api_key
|
- name: api_key
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Api-Key
|
label: Api-Key
|
||||||
help: "Generate an apikey with download scope and copy it. Profileinstellungen -> API-Keys -> API-Key erzeugen"
|
help: "Generate an apikey with download scope and copy it. Profileinstellungen -> API-Keys -> API-Key erzeugen"
|
||||||
|
|
||||||
|
@ -28,16 +29,24 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Synd1c4t3
|
- Synd1c4t3
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user-bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "Synd1c4t3 invite IRCKEY"
|
default: "Synd1c4t3 invite IRCKEY"
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: unknown
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Go to https://www.trancetraffic.com/links.php, click on RSS Feed and copy your passkey from the url."
|
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:
|
announcers:
|
||||||
- TranceTraffic
|
- TranceTraffic
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user|autodl
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user|autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -15,10 +15,13 @@ source: gazelle
|
||||||
settings:
|
settings:
|
||||||
- name: authkey
|
- name: authkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Auth key
|
label: Auth key
|
||||||
help: Right click DL on a torrent and get the authkey.
|
help: Right click DL on a torrent and get the authkey.
|
||||||
|
|
||||||
- name: torrent_pass
|
- name: torrent_pass
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Torrent pass
|
label: Torrent pass
|
||||||
help: Right click DL on a torrent and get the torrent_pass.
|
help: Right click DL on a torrent and get the torrent_pass.
|
||||||
|
|
||||||
|
@ -33,22 +36,30 @@ irc:
|
||||||
- UHDBot
|
- UHDBot
|
||||||
- cr0nusbot
|
- cr0nusbot
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user|autodl
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Account
|
label: NickServ Account
|
||||||
help: NickServ account. Make sure to group your user and bot. Eg. user|autodl
|
help: NickServ account. Make sure to group your user and bot.
|
||||||
- name: nickserv.password
|
|
||||||
|
- name: auth.password
|
||||||
type: secret
|
type: secret
|
||||||
required: true
|
required: true
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
help: NickServ password
|
help: NickServ password
|
||||||
|
|
||||||
- name: invite_command
|
- name: invite_command
|
||||||
type: secret
|
type: secret
|
||||||
default: "UHDBot invite IRCKey"
|
default: "UHDBot invite IRCKEY"
|
||||||
required: true
|
required: true
|
||||||
label: Invite command
|
label: Invite command
|
||||||
help: Invite auth with UHDBot.
|
help: Invite auth with UHDBot. Replace IRCKEY.
|
||||||
|
|
||||||
parse:
|
parse:
|
||||||
type: single
|
type: single
|
||||||
|
|
|
@ -15,6 +15,7 @@ source: custom
|
||||||
settings:
|
settings:
|
||||||
- name: passkey
|
- name: passkey
|
||||||
type: secret
|
type: secret
|
||||||
|
required: true
|
||||||
label: Passkey
|
label: Passkey
|
||||||
help: "Go to your profile and copy your Passkey"
|
help: "Go to your profile and copy your Passkey"
|
||||||
|
|
||||||
|
@ -28,12 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- Announce
|
- Announce
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
type: text
|
type: text
|
||||||
required: true
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
|
type: text
|
||||||
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -153,13 +153,10 @@ func (h *Handler) Run() error {
|
||||||
subLogger := zstdlog.NewStdLoggerWithLevel(h.log.With().Logger(), zerolog.TraceLevel)
|
subLogger := zstdlog.NewStdLoggerWithLevel(h.log.With().Logger(), zerolog.TraceLevel)
|
||||||
|
|
||||||
h.client = &ircevent.Connection{
|
h.client = &ircevent.Connection{
|
||||||
Nick: h.network.NickServ.Account,
|
Nick: h.network.Nick,
|
||||||
User: h.network.NickServ.Account,
|
User: h.network.Auth.Account,
|
||||||
RealName: h.network.NickServ.Account,
|
RealName: h.network.Auth.Account,
|
||||||
Password: h.network.Pass,
|
Password: h.network.Pass,
|
||||||
SASLLogin: h.network.NickServ.Account,
|
|
||||||
SASLPassword: h.network.NickServ.Password,
|
|
||||||
SASLOptional: true,
|
|
||||||
Server: addr,
|
Server: addr,
|
||||||
KeepAlive: 4 * time.Minute,
|
KeepAlive: 4 * time.Minute,
|
||||||
Timeout: 2 * time.Minute,
|
Timeout: 2 * time.Minute,
|
||||||
|
@ -170,6 +167,15 @@ func (h *Handler) Run() error {
|
||||||
Log: subLogger,
|
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 {
|
if h.network.TLS {
|
||||||
h.client.UseTLS = true
|
h.client.UseTLS = true
|
||||||
h.client.TLSConfig = &tls.Config{InsecureSkipVerify: true}
|
h.client.TLSConfig = &tls.Config{InsecureSkipVerify: true}
|
||||||
|
@ -226,7 +232,7 @@ func (h *Handler) Run() error {
|
||||||
func (h *Handler) isOurNick(nick string) bool {
|
func (h *Handler) isOurNick(nick string) bool {
|
||||||
h.m.RLock()
|
h.m.RLock()
|
||||||
defer h.m.RUnlock()
|
defer h.m.RUnlock()
|
||||||
return h.network.NickServ.Account == nick
|
return h.network.Nick == nick
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handler) isOurCurrentNick(nick string) bool {
|
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") {
|
if contains(msg.Params[1], "invalid parameters", "help identify") {
|
||||||
h.log.Debug().Msgf("NOTICE nickserv invalid: %v", msg.Params)
|
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
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -455,9 +461,9 @@ func (h *Handler) authenticate() bool {
|
||||||
return true
|
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")
|
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")
|
h.log.Error().Stack().Err(err).Msg("error nickserv")
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,7 @@ func (s *service) StartHandlers() {
|
||||||
|
|
||||||
// use network.Server + nick to use multiple indexers with different nick per network
|
// use network.Server + nick to use multiple indexers with different nick per network
|
||||||
// this allows for multiple handlers to one 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.lock.Unlock()
|
||||||
|
|
||||||
s.log.Debug().Msgf("starting network: %+v", network.Name)
|
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 {
|
func (s *service) startNetwork(network domain.IrcNetwork) error {
|
||||||
// look if we have the network in handlers already, if so start it
|
// 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)
|
s.log.Debug().Msgf("starting network: %+v", network.Name)
|
||||||
|
|
||||||
if !existingHandler.client.Connected() {
|
if !existingHandler.client.Connected() {
|
||||||
|
@ -138,7 +138,7 @@ func (s *service) startNetwork(network domain.IrcNetwork) error {
|
||||||
// init new irc handler
|
// init new irc handler
|
||||||
handler := NewHandler(s.log, network, definitions, s.releaseService, s.notificationService)
|
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.lock.Unlock()
|
||||||
|
|
||||||
s.log.Debug().Msgf("starting network: %+v", network.Name)
|
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 {
|
func (s *service) checkIfNetworkRestartNeeded(network *domain.IrcNetwork) error {
|
||||||
// look if we have the network in handlers, if so restart it
|
// 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)
|
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
|
// if server, tls, invite command, port : changed - restart
|
||||||
|
@ -192,17 +192,17 @@ func (s *service) checkIfNetworkRestartNeeded(network *domain.IrcNetwork) error
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if handler.NickServ.Account != network.NickServ.Account {
|
if handler.Nick != network.Nick {
|
||||||
s.log.Debug().Msg("changing nick")
|
s.log.Debug().Msg("changing nick")
|
||||||
|
|
||||||
if err := existingHandler.NickChange(network.NickServ.Account); err != nil {
|
if err := existingHandler.NickChange(network.Nick); err != nil {
|
||||||
s.log.Error().Stack().Err(err).Msgf("failed to change nick %q", network.NickServ.Account)
|
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")
|
s.log.Debug().Msg("nickserv: changing password")
|
||||||
|
|
||||||
if err := existingHandler.NickServIdentify(network.NickServ.Password); err != nil {
|
if err := existingHandler.NickServIdentify(network.Auth.Password); err != nil {
|
||||||
s.log.Error().Stack().Err(err).Msgf("failed to identify with nickserv %q", network.NickServ.Account)
|
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 {
|
func (s *service) restartNetwork(network domain.IrcNetwork) error {
|
||||||
// look if we have the network in handlers, if so restart it
|
// 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)
|
s.log.Info().Msgf("restarting network: %v", network.Name)
|
||||||
|
|
||||||
if existingHandler.client.Connected() {
|
if existingHandler.client.Connected() {
|
||||||
|
@ -396,14 +396,15 @@ func (s *service) GetNetworksWithHealth(ctx context.Context) ([]domain.IrcNetwor
|
||||||
Port: n.Port,
|
Port: n.Port,
|
||||||
TLS: n.TLS,
|
TLS: n.TLS,
|
||||||
Pass: n.Pass,
|
Pass: n.Pass,
|
||||||
|
Nick: n.Nick,
|
||||||
|
Auth: n.Auth,
|
||||||
InviteCommand: n.InviteCommand,
|
InviteCommand: n.InviteCommand,
|
||||||
NickServ: n.NickServ,
|
|
||||||
Connected: false,
|
Connected: false,
|
||||||
Channels: []domain.ChannelWithHealth{},
|
Channels: []domain.ChannelWithHealth{},
|
||||||
ConnectionErrors: []string{},
|
ConnectionErrors: []string{},
|
||||||
}
|
}
|
||||||
|
|
||||||
handler, ok := s.handlers[handlerKey{n.Server, n.NickServ.Account}]
|
handler, ok := s.handlers[handlerKey{n.Server, n.Nick}]
|
||||||
if ok {
|
if ok {
|
||||||
handler.m.RLock()
|
handler.m.RLock()
|
||||||
|
|
||||||
|
@ -484,7 +485,7 @@ func (s *service) DeleteNetwork(ctx context.Context, id int64) error {
|
||||||
|
|
||||||
// Remove network and handler
|
// Remove network and handler
|
||||||
//if err = s.StopNetwork(network.Server); err != nil {
|
//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)
|
s.log.Error().Stack().Err(err).Msgf("could not stop and delete network: %v", network.Name)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -524,7 +525,7 @@ func (s *service) UpdateNetwork(ctx context.Context, network *domain.IrcNetwork)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// take into account multiple channels per network
|
// 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 {
|
if err != nil {
|
||||||
s.log.Error().Stack().Err(err).Msgf("could not stop network: %+v", network.Name)
|
s.log.Error().Stack().Err(err).Msgf("could not stop network: %+v", network.Name)
|
||||||
return errors.New("could not stop network: %v", network.Name)
|
return errors.New("could not stop network: %v", network.Name)
|
||||||
|
|
|
@ -29,12 +29,19 @@ irc:
|
||||||
announcers:
|
announcers:
|
||||||
- _AnnounceBot_
|
- _AnnounceBot_
|
||||||
settings:
|
settings:
|
||||||
- name: nickserv.account
|
- name: nick
|
||||||
|
type: text
|
||||||
|
required: true
|
||||||
|
label: Nick
|
||||||
|
help: Bot nick. Eg. user_bot
|
||||||
|
|
||||||
|
- name: auth.account
|
||||||
type: text
|
type: text
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Account
|
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
|
type: secret
|
||||||
required: false
|
required: false
|
||||||
label: NickServ Password
|
label: NickServ Password
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import type { FieldProps } from "formik";
|
import type { FieldProps, FieldValidator } from "formik";
|
||||||
import { Field } from "formik";
|
import { Field } from "formik";
|
||||||
import { classNames } from "../../utils";
|
import { classNames } from "../../utils";
|
||||||
import { useToggle } from "../../hooks/hooks";
|
import { useToggle } from "../../hooks/hooks";
|
||||||
|
@ -14,6 +14,7 @@ interface TextFieldWideProps {
|
||||||
defaultValue?: string;
|
defaultValue?: string;
|
||||||
required?: boolean;
|
required?: boolean;
|
||||||
hidden?: boolean;
|
hidden?: boolean;
|
||||||
|
validate?: FieldValidator;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const TextFieldWide = ({
|
export const TextFieldWide = ({
|
||||||
|
@ -23,7 +24,8 @@ export const TextFieldWide = ({
|
||||||
placeholder,
|
placeholder,
|
||||||
defaultValue,
|
defaultValue,
|
||||||
required,
|
required,
|
||||||
hidden
|
hidden,
|
||||||
|
validate
|
||||||
}: TextFieldWideProps) => (
|
}: TextFieldWideProps) => (
|
||||||
<div hidden={hidden} className="space-y-1 p-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4">
|
<div hidden={hidden} className="space-y-1 p-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4">
|
||||||
<div>
|
<div>
|
||||||
|
@ -36,6 +38,7 @@ export const TextFieldWide = ({
|
||||||
name={name}
|
name={name}
|
||||||
value={defaultValue}
|
value={defaultValue}
|
||||||
required={required}
|
required={required}
|
||||||
|
validate={validate}
|
||||||
>
|
>
|
||||||
{({ field, meta }: FieldProps) => (
|
{({ field, meta }: FieldProps) => (
|
||||||
<input
|
<input
|
||||||
|
@ -66,6 +69,7 @@ interface PasswordFieldWideProps {
|
||||||
help?: string;
|
help?: string;
|
||||||
required?: boolean;
|
required?: boolean;
|
||||||
defaultVisible?: boolean;
|
defaultVisible?: boolean;
|
||||||
|
validate?: FieldValidator;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const PasswordFieldWide = ({
|
export const PasswordFieldWide = ({
|
||||||
|
@ -75,7 +79,8 @@ export const PasswordFieldWide = ({
|
||||||
defaultValue,
|
defaultValue,
|
||||||
help,
|
help,
|
||||||
required,
|
required,
|
||||||
defaultVisible
|
defaultVisible,
|
||||||
|
validate
|
||||||
}: PasswordFieldWideProps) => {
|
}: PasswordFieldWideProps) => {
|
||||||
const [isVisible, toggleVisibility] = useToggle(defaultVisible);
|
const [isVisible, toggleVisibility] = useToggle(defaultVisible);
|
||||||
|
|
||||||
|
@ -90,6 +95,7 @@ export const PasswordFieldWide = ({
|
||||||
<Field
|
<Field
|
||||||
name={name}
|
name={name}
|
||||||
defaultValue={defaultValue}
|
defaultValue={defaultValue}
|
||||||
|
validate={validate}
|
||||||
>
|
>
|
||||||
{({ field, meta }: FieldProps) => (
|
{({ field, meta }: FieldProps) => (
|
||||||
<div className="relative">
|
<div className="relative">
|
||||||
|
|
|
@ -306,6 +306,21 @@ export const NotificationTypeOptions: OptionBasicTyped<NotificationType>[] = [
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const IrcAuthMechanismTypeOptions: OptionBasicTyped<IrcAuthMechanism>[] = [
|
||||||
|
{
|
||||||
|
label: "None",
|
||||||
|
value: "NONE"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "SASL (plain)",
|
||||||
|
value: "SASL_PLAIN"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "NickServ",
|
||||||
|
value: "NICKSERV"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
export const downloadsPerUnitOptions: OptionBasic[] = [
|
export const downloadsPerUnitOptions: OptionBasic[] = [
|
||||||
{
|
{
|
||||||
label: "Select",
|
label: "Select",
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { Fragment, useState } from "react";
|
||||||
import { toast } from "react-hot-toast";
|
import { toast } from "react-hot-toast";
|
||||||
import { useMutation, useQuery } from "react-query";
|
import { useMutation, useQuery } from "react-query";
|
||||||
import Select, { components, ControlProps, InputProps, MenuProps, OptionProps } from "react-select";
|
import Select, { components, ControlProps, InputProps, MenuProps, OptionProps } from "react-select";
|
||||||
import type { FieldProps } from "formik";
|
import type { FieldProps, FormikErrors } from "formik";
|
||||||
import { Field, Form, Formik, FormikValues } from "formik";
|
import { Field, Form, Formik, FormikValues } from "formik";
|
||||||
|
|
||||||
import { XMarkIcon } from "@heroicons/react/24/solid";
|
import { XMarkIcon } from "@heroicons/react/24/solid";
|
||||||
|
@ -16,46 +16,53 @@ import { PasswordFieldWide, SwitchGroupWide, TextFieldWide } from "../../compone
|
||||||
import { SlideOver } from "../../components/panels";
|
import { SlideOver } from "../../components/panels";
|
||||||
import Toast from "../../components/notifications/Toast";
|
import Toast from "../../components/notifications/Toast";
|
||||||
|
|
||||||
const Input = (props: InputProps) => {
|
const Input = (props: InputProps) => (
|
||||||
return (
|
|
||||||
<components.Input
|
<components.Input
|
||||||
{...props}
|
{...props}
|
||||||
inputClassName="outline-none border-none shadow-none focus:ring-transparent"
|
inputClassName="outline-none border-none shadow-none focus:ring-transparent"
|
||||||
className="text-gray-400 dark:text-gray-100"
|
className="text-gray-400 dark:text-gray-100"
|
||||||
children={props.children}
|
children={props.children}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
|
||||||
|
|
||||||
const Control = (props: ControlProps) => {
|
const Control = (props: ControlProps) => (
|
||||||
return (
|
|
||||||
<components.Control
|
<components.Control
|
||||||
{...props}
|
{...props}
|
||||||
className="block w-full dark:bg-gray-800 border border-gray-300 dark:border-gray-700 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 dark:text-gray-100 sm:text-sm"
|
className="p-1 block w-full dark:bg-gray-800 border border-gray-300 dark:border-gray-700 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 dark:text-gray-100 sm:text-sm"
|
||||||
children={props.children}
|
children={props.children}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
|
||||||
|
|
||||||
const Menu = (props: MenuProps) => {
|
const Menu = (props: MenuProps) => (
|
||||||
return (
|
|
||||||
<components.Menu
|
<components.Menu
|
||||||
{...props}
|
{...props}
|
||||||
className="dark:bg-gray-800 border border-gray-300 dark:border-gray-700 dark:text-gray-400 rounded-md shadow-sm"
|
className="dark:bg-gray-800 border border-gray-300 dark:border-gray-700 dark:text-gray-400 rounded-md shadow-sm cursor-pointer"
|
||||||
children={props.children}
|
children={props.children}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
|
||||||
|
|
||||||
const Option = (props: OptionProps) => {
|
const Option = (props: OptionProps) => (
|
||||||
return (
|
|
||||||
<components.Option
|
<components.Option
|
||||||
{...props}
|
{...props}
|
||||||
className="dark:text-gray-400 dark:bg-gray-800 dark:hover:bg-gray-900 dark:focus:bg-gray-900"
|
className="dark:text-gray-400 dark:bg-gray-800 dark:hover:bg-gray-900 dark:focus:bg-gray-900 cursor-pointer"
|
||||||
children={props.children}
|
children={props.children}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
|
||||||
|
// const isRequired = (message: string) => (value?: string | undefined) => (!!value ? undefined : message);
|
||||||
|
|
||||||
|
function validateField(s: IndexerSetting) {
|
||||||
|
return (value?: string | undefined) => {
|
||||||
|
if (s.required) {
|
||||||
|
if (s.default !== "") {
|
||||||
|
if (value && s.default === value) {
|
||||||
|
return "Default value, please edit";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return !!value ? undefined : "Required";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
const IrcSettingFields = (ind: IndexerDefinition, indexer: string) => {
|
const IrcSettingFields = (ind: IndexerDefinition, indexer: string) => {
|
||||||
if (indexer !== "") {
|
if (indexer !== "") {
|
||||||
|
@ -66,18 +73,19 @@ const IrcSettingFields = (ind: IndexerDefinition, indexer: string) => {
|
||||||
<div className="px-4 space-y-1">
|
<div className="px-4 space-y-1">
|
||||||
<Dialog.Title className="text-lg font-medium text-gray-900 dark:text-white">IRC</Dialog.Title>
|
<Dialog.Title className="text-lg font-medium text-gray-900 dark:text-white">IRC</Dialog.Title>
|
||||||
<p className="text-sm text-gray-500 dark:text-gray-200">
|
<p className="text-sm text-gray-500 dark:text-gray-200">
|
||||||
Networks, channels and invite commands are configured automatically.
|
Networks and channels are configured automatically in the background.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{ind.irc.settings.map((f: IndexerSetting, idx: number) => {
|
{ind.irc.settings.map((f: IndexerSetting, idx: number) => {
|
||||||
switch (f.type) {
|
switch (f.type) {
|
||||||
case "text":
|
case "text":
|
||||||
return <TextFieldWide name={`irc.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} />;
|
return <TextFieldWide name={`irc.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} validate={validateField(f)} />;
|
||||||
case "secret":
|
case "secret":
|
||||||
if (f.name === "invite_command") {
|
if (f.name === "invite_command") {
|
||||||
return <PasswordFieldWide name={`irc.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} defaultVisible={true} defaultValue={f.default} />;
|
return <PasswordFieldWide name={`irc.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} defaultVisible={true} defaultValue={f.default} validate={validateField(f)} />;
|
||||||
}
|
}
|
||||||
return <PasswordFieldWide name={`irc.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} defaultValue={f.default} />;
|
return <PasswordFieldWide name={`irc.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} defaultValue={f.default} validate={validateField(f)} />;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
})}
|
})}
|
||||||
|
@ -101,14 +109,14 @@ const FeedSettingFields = (ind: IndexerDefinition, indexer: string) => {
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<TextFieldWide name="name" label="Name" defaultValue={""} />
|
<TextFieldWide name="name" label="Name" defaultValue="" />
|
||||||
|
|
||||||
{ind.torznab.settings.map((f: IndexerSetting, idx: number) => {
|
{ind.torznab.settings.map((f: IndexerSetting, idx: number) => {
|
||||||
switch (f.type) {
|
switch (f.type) {
|
||||||
case "text":
|
case "text":
|
||||||
return <TextFieldWide name={`feed.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} />;
|
return <TextFieldWide name={`feed.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} validate={validateField(f)} />;
|
||||||
case "secret":
|
case "secret":
|
||||||
return <PasswordFieldWide name={`feed.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} defaultValue={f.default} />;
|
return <PasswordFieldWide name={`feed.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} defaultValue={f.default} validate={validateField(f)} />;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
})}
|
})}
|
||||||
|
@ -132,14 +140,14 @@ const RSSFeedSettingFields = (ind: IndexerDefinition, indexer: string) => {
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<TextFieldWide name="name" label="Name" defaultValue={""} />
|
<TextFieldWide name="name" label="Name" defaultValue="" />
|
||||||
|
|
||||||
{ind.rss.settings.map((f: IndexerSetting, idx: number) => {
|
{ind.rss.settings.map((f: IndexerSetting, idx: number) => {
|
||||||
switch (f.type) {
|
switch (f.type) {
|
||||||
case "text":
|
case "text":
|
||||||
return <TextFieldWide name={`feed.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} />;
|
return <TextFieldWide name={`feed.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} validate={validateField(f)} />;
|
||||||
case "secret":
|
case "secret":
|
||||||
return <PasswordFieldWide name={`feed.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} defaultValue={f.default} />;
|
return <PasswordFieldWide name={`feed.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} defaultValue={f.default} validate={validateField(f)} />;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
})}
|
})}
|
||||||
|
@ -158,11 +166,11 @@ const SettingFields = (ind: IndexerDefinition, indexer: string) => {
|
||||||
switch (f.type) {
|
switch (f.type) {
|
||||||
case "text":
|
case "text":
|
||||||
return (
|
return (
|
||||||
<TextFieldWide name={`settings.${f.name}`} label={f.label} key={idx} help={f.help} defaultValue="" />
|
<TextFieldWide name={`settings.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} validate={validateField(f)} />
|
||||||
);
|
);
|
||||||
case "secret":
|
case "secret":
|
||||||
return (
|
return (
|
||||||
<PasswordFieldWide name={`settings.${f.name}`} label={f.label} key={idx} help={f.help} defaultValue="" />
|
<PasswordFieldWide name={`settings.${f.name}`} label={f.label} required={f.required} key={idx} help={f.help} validate={validateField(f)} />
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -184,16 +192,6 @@ function slugIdentifier(name: string, prefix?: string) {
|
||||||
return slugify(l);
|
return slugify(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
// interface initialValues {
|
|
||||||
// enabled: boolean;
|
|
||||||
// identifier: string;
|
|
||||||
// implementation: string;
|
|
||||||
// name: string;
|
|
||||||
// irc?: Record<string, unknown>;
|
|
||||||
// feed?: Record<string, unknown>;
|
|
||||||
// settings?: Record<string, unknown>;
|
|
||||||
// }
|
|
||||||
|
|
||||||
type SelectValue = {
|
type SelectValue = {
|
||||||
label: string;
|
label: string;
|
||||||
value: string;
|
value: string;
|
||||||
|
@ -238,6 +236,7 @@ export function IndexerAddForm({ isOpen, toggle }: AddProps) {
|
||||||
);
|
);
|
||||||
|
|
||||||
const onSubmit = (formData: FormikValues) => {
|
const onSubmit = (formData: FormikValues) => {
|
||||||
|
console.log("form: ", formData);
|
||||||
const ind = data && data.find(i => i.identifier === formData.identifier);
|
const ind = data && data.find(i => i.identifier === formData.identifier);
|
||||||
if (!ind)
|
if (!ind)
|
||||||
return;
|
return;
|
||||||
|
@ -319,11 +318,22 @@ export function IndexerAddForm({ isOpen, toggle }: AddProps) {
|
||||||
server: ind.irc.server,
|
server: ind.irc.server,
|
||||||
port: ind.irc.port,
|
port: ind.irc.port,
|
||||||
tls: ind.irc.tls,
|
tls: ind.irc.tls,
|
||||||
nickserv: formData.irc.nickserv,
|
nick: formData.irc.nick,
|
||||||
|
auth: {
|
||||||
|
mechanism: "NONE"
|
||||||
|
// account: formData.irc.auth.account,
|
||||||
|
// password: formData.irc.auth.password
|
||||||
|
},
|
||||||
invite_command: formData.irc.invite_command,
|
invite_command: formData.irc.invite_command,
|
||||||
channels: channels
|
channels: channels
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (formData.irc.auth.account !== "" && formData.irc.auth.password !== "") {
|
||||||
|
network.auth.mechanism = "SASL_PLAIN";
|
||||||
|
network.auth.account = formData.irc.auth.account;
|
||||||
|
network.auth.password = formData.irc.auth.password;
|
||||||
|
}
|
||||||
|
|
||||||
mutation.mutate(formData as Indexer, {
|
mutation.mutate(formData as Indexer, {
|
||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
ircMutation.mutate(network);
|
ircMutation.mutate(network);
|
||||||
|
@ -356,9 +366,7 @@ export function IndexerAddForm({ isOpen, toggle }: AddProps) {
|
||||||
identifier: "",
|
identifier: "",
|
||||||
implementation: "irc",
|
implementation: "irc",
|
||||||
name: "",
|
name: "",
|
||||||
irc: {
|
irc: {},
|
||||||
invite_command: ""
|
|
||||||
},
|
|
||||||
settings: {}
|
settings: {}
|
||||||
}}
|
}}
|
||||||
onSubmit={onSubmit}
|
onSubmit={onSubmit}
|
||||||
|
@ -369,9 +377,9 @@ export function IndexerAddForm({ isOpen, toggle }: AddProps) {
|
||||||
<div className="px-4 py-6 bg-gray-50 dark:bg-gray-900 sm:px-6">
|
<div className="px-4 py-6 bg-gray-50 dark:bg-gray-900 sm:px-6">
|
||||||
<div className="flex items-start justify-between space-x-3">
|
<div className="flex items-start justify-between space-x-3">
|
||||||
<div className="space-y-1">
|
<div className="space-y-1">
|
||||||
<Dialog.Title
|
<Dialog.Title className="text-lg font-medium text-gray-900 dark:text-white">
|
||||||
className="text-lg font-medium text-gray-900 dark:text-white">Add
|
Add indexer
|
||||||
indexer</Dialog.Title>
|
</Dialog.Title>
|
||||||
<p className="text-sm text-gray-500 dark:text-gray-200">
|
<p className="text-sm text-gray-500 dark:text-gray-200">
|
||||||
Add indexer.
|
Add indexer.
|
||||||
</p>
|
</p>
|
||||||
|
@ -425,6 +433,7 @@ export function IndexerAddForm({ isOpen, toggle }: AddProps) {
|
||||||
onChange={(option: unknown) => {
|
onChange={(option: unknown) => {
|
||||||
resetForm();
|
resetForm();
|
||||||
|
|
||||||
|
if (option != null) {
|
||||||
const opt = option as SelectValue;
|
const opt = option as SelectValue;
|
||||||
setFieldValue("name", opt.label ?? "");
|
setFieldValue("name", opt.label ?? "");
|
||||||
setFieldValue(field.name, opt.value ?? "");
|
setFieldValue(field.name, opt.value ?? "");
|
||||||
|
@ -440,6 +449,7 @@ export function IndexerAddForm({ isOpen, toggle }: AddProps) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
options={data && data.sort((a, b) => a.name.localeCompare(b.name)).map(v => ({
|
options={data && data.sort((a, b) => a.name.localeCompare(b.name)).map(v => ({
|
||||||
label: v.name,
|
label: v.name,
|
||||||
|
@ -517,6 +527,8 @@ export function IndexerUpdateForm({ isOpen, toggle, indexer }: UpdateProps) {
|
||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
queryClient.invalidateQueries(["indexer"]);
|
queryClient.invalidateQueries(["indexer"]);
|
||||||
toast.custom((t) => <Toast type="success" body={`${indexer.name} was deleted.`} t={t} />);
|
toast.custom((t) => <Toast type="success" body={`${indexer.name} was deleted.`} t={t} />);
|
||||||
|
|
||||||
|
toggle();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,8 @@ interface IrcNetworkAddFormValues {
|
||||||
port: number;
|
port: number;
|
||||||
tls: boolean;
|
tls: boolean;
|
||||||
pass: string;
|
pass: string;
|
||||||
nickserv: NickServ;
|
nick: string;
|
||||||
|
auth: IrcAuth;
|
||||||
channels: IrcChannel[];
|
channels: IrcChannel[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,6 +115,7 @@ export function IrcNetworkAddForm({ isOpen, toggle }: AddFormProps) {
|
||||||
const onSubmit = (data: unknown) => {
|
const onSubmit = (data: unknown) => {
|
||||||
mutation.mutate(data as IrcNetwork);
|
mutation.mutate(data as IrcNetwork);
|
||||||
};
|
};
|
||||||
|
|
||||||
const validate = (values: FormikValues) => {
|
const validate = (values: FormikValues) => {
|
||||||
const errors = {} as FormikErrors<FormikValues>;
|
const errors = {} as FormikErrors<FormikValues>;
|
||||||
if (!values.name)
|
if (!values.name)
|
||||||
|
@ -125,8 +127,11 @@ export function IrcNetworkAddForm({ isOpen, toggle }: AddFormProps) {
|
||||||
if (!values.server)
|
if (!values.server)
|
||||||
errors.server = "Required";
|
errors.server = "Required";
|
||||||
|
|
||||||
if (!values.nickserv || !values.nickserv.account)
|
if (!values.nick)
|
||||||
errors.nickserv = { account: "Required" };
|
errors.nick = "Required";
|
||||||
|
|
||||||
|
// if (!values.auth || !values.auth.account)
|
||||||
|
// errors.auth = { account: "Required" };
|
||||||
|
|
||||||
return errors;
|
return errors;
|
||||||
};
|
};
|
||||||
|
@ -138,7 +143,9 @@ export function IrcNetworkAddForm({ isOpen, toggle }: AddFormProps) {
|
||||||
port: 6667,
|
port: 6667,
|
||||||
tls: false,
|
tls: false,
|
||||||
pass: "",
|
pass: "",
|
||||||
nickserv: {
|
nick: "",
|
||||||
|
auth: {
|
||||||
|
mechanism: "SASL_PLAIN",
|
||||||
account: ""
|
account: ""
|
||||||
},
|
},
|
||||||
channels: []
|
channels: []
|
||||||
|
@ -185,14 +192,20 @@ export function IrcNetworkAddForm({ isOpen, toggle }: AddFormProps) {
|
||||||
help="Network password"
|
help="Network password"
|
||||||
/>
|
/>
|
||||||
<TextFieldWide
|
<TextFieldWide
|
||||||
name="nickserv.account"
|
name="nick"
|
||||||
label="NickServ Account"
|
label="Nick"
|
||||||
placeholder="NickServ Account"
|
placeholder="bot nick"
|
||||||
|
required={true}
|
||||||
|
/>
|
||||||
|
<TextFieldWide
|
||||||
|
name="auth.account"
|
||||||
|
label="Auth Account"
|
||||||
|
placeholder="Auth Account"
|
||||||
required={true}
|
required={true}
|
||||||
/>
|
/>
|
||||||
<PasswordFieldWide
|
<PasswordFieldWide
|
||||||
name="nickserv.password"
|
name="auth.password"
|
||||||
label="NickServ Password"
|
label="Auth Password"
|
||||||
/>
|
/>
|
||||||
<PasswordFieldWide name="invite_command" label="Invite command" />
|
<PasswordFieldWide name="invite_command" label="Invite command" />
|
||||||
|
|
||||||
|
@ -210,8 +223,9 @@ interface IrcNetworkUpdateFormValues {
|
||||||
server: string;
|
server: string;
|
||||||
port: number;
|
port: number;
|
||||||
tls: boolean;
|
tls: boolean;
|
||||||
nickserv?: NickServ;
|
|
||||||
pass: string;
|
pass: string;
|
||||||
|
nick: string;
|
||||||
|
auth?: IrcAuth;
|
||||||
invite_command: string;
|
invite_command: string;
|
||||||
channels: Array<IrcChannel>;
|
channels: Array<IrcChannel>;
|
||||||
}
|
}
|
||||||
|
@ -245,6 +259,7 @@ export function IrcNetworkUpdateForm({
|
||||||
});
|
});
|
||||||
|
|
||||||
const onSubmit = (data: unknown) => {
|
const onSubmit = (data: unknown) => {
|
||||||
|
console.log("submit: ", data);
|
||||||
mutation.mutate(data as IrcNetwork);
|
mutation.mutate(data as IrcNetwork);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -263,10 +278,8 @@ export function IrcNetworkUpdateForm({
|
||||||
errors.port = "Required";
|
errors.port = "Required";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!values.nickserv?.account) {
|
if (!values.nick) {
|
||||||
errors.nickserv = {
|
errors.nick = "Required";
|
||||||
account: "Required"
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return errors;
|
return errors;
|
||||||
|
@ -283,10 +296,11 @@ export function IrcNetworkUpdateForm({
|
||||||
server: network.server,
|
server: network.server,
|
||||||
port: network.port,
|
port: network.port,
|
||||||
tls: network.tls,
|
tls: network.tls,
|
||||||
nickserv: network.nickserv,
|
nick: network.nick,
|
||||||
pass: network.pass,
|
pass: network.pass,
|
||||||
channels: network.channels,
|
auth: network.auth,
|
||||||
invite_command: network.invite_command
|
invite_command: network.invite_command,
|
||||||
|
channels: network.channels
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -328,20 +342,45 @@ export function IrcNetworkUpdateForm({
|
||||||
<PasswordFieldWide
|
<PasswordFieldWide
|
||||||
name="pass"
|
name="pass"
|
||||||
label="Password"
|
label="Password"
|
||||||
help="Network password"
|
help="Network password, not commonly used."
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<TextFieldWide
|
<TextFieldWide
|
||||||
name="nickserv.account"
|
name="nick"
|
||||||
label="NickServ Account"
|
label="Nick"
|
||||||
placeholder="NickServ Account"
|
placeholder="nick"
|
||||||
required={true}
|
required={true}
|
||||||
/>
|
/>
|
||||||
<PasswordFieldWide
|
|
||||||
name="nickserv.password"
|
<div className="border-t border-gray-200 dark:border-gray-700 py-5">
|
||||||
label="NickServ Password"
|
<div className="px-4 space-y-1 mb-8">
|
||||||
|
<Dialog.Title className="text-lg font-medium text-gray-900 dark:text-white">Identification</Dialog.Title>
|
||||||
|
<p className="text-sm text-gray-500 dark:text-gray-400">
|
||||||
|
Identify with SASL or NickServ. Most networks support SASL but some don't.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<SelectField<IrcAuthMechanism>
|
||||||
|
name="auth.mechanism"
|
||||||
|
label="Mechanism"
|
||||||
|
options={IrcAuthMechanismTypeOptions}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<TextFieldWide
|
||||||
|
name="auth.account"
|
||||||
|
label="Account"
|
||||||
|
placeholder="Auth Account"
|
||||||
|
help="NickServ / SASL account. For grouped nicks try the main."
|
||||||
|
/>
|
||||||
|
|
||||||
|
<PasswordFieldWide
|
||||||
|
name="auth.password"
|
||||||
|
label="Password"
|
||||||
|
help="NickServ / SASL password."
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<PasswordFieldWide name="invite_command" label="Invite command" />
|
<PasswordFieldWide name="invite_command" label="Invite command" />
|
||||||
|
|
||||||
<ChannelsFieldArray channels={values.channels} />
|
<ChannelsFieldArray channels={values.channels} />
|
||||||
|
@ -350,3 +389,117 @@ export function IrcNetworkUpdateForm({
|
||||||
</SlideOver>
|
</SlideOver>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface SelectFieldProps<T> {
|
||||||
|
name: string;
|
||||||
|
label: string;
|
||||||
|
options: OptionBasicTyped<T>[]
|
||||||
|
}
|
||||||
|
|
||||||
|
function SelectField<T>({ name, label, options }: SelectFieldProps<T>) {
|
||||||
|
return (
|
||||||
|
<div className="flex items-center justify-between space-y-1 px-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4">
|
||||||
|
<div>
|
||||||
|
<label
|
||||||
|
htmlFor={name}
|
||||||
|
className="block text-sm font-medium text-gray-900 dark:text-white"
|
||||||
|
>
|
||||||
|
{label}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div className="sm:col-span-2">
|
||||||
|
<Field name={name} type="select">
|
||||||
|
{({
|
||||||
|
field,
|
||||||
|
form: { setFieldValue, resetForm }
|
||||||
|
}: FieldProps) => (
|
||||||
|
<Select
|
||||||
|
{...field}
|
||||||
|
id={name}
|
||||||
|
isClearable={true}
|
||||||
|
isSearchable={true}
|
||||||
|
components={{
|
||||||
|
Input,
|
||||||
|
Control,
|
||||||
|
Menu,
|
||||||
|
Option
|
||||||
|
}}
|
||||||
|
placeholder="Choose a type"
|
||||||
|
styles={{
|
||||||
|
singleValue: (base) => ({
|
||||||
|
...base,
|
||||||
|
color: "unset"
|
||||||
|
})
|
||||||
|
}}
|
||||||
|
theme={(theme) => ({
|
||||||
|
...theme,
|
||||||
|
spacing: {
|
||||||
|
...theme.spacing,
|
||||||
|
controlHeight: 30,
|
||||||
|
baseUnit: 2
|
||||||
|
}
|
||||||
|
})}
|
||||||
|
value={field?.value && options.find(o => o.value == field?.value)}
|
||||||
|
onChange={(option) => {
|
||||||
|
resetForm();
|
||||||
|
|
||||||
|
// const opt = option as SelectOption;
|
||||||
|
// setFieldValue("name", option?.label ?? "")
|
||||||
|
setFieldValue(
|
||||||
|
field.name,
|
||||||
|
option.value ?? ""
|
||||||
|
);
|
||||||
|
}}
|
||||||
|
options={options}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</Field>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
import Select, { components, ControlProps, InputProps, MenuProps, OptionProps } from "react-select";
|
||||||
|
import { IrcAuthMechanismTypeOptions, OptionBasicTyped } from "../../domain/constants";
|
||||||
|
import { Dialog } from "@headlessui/react";
|
||||||
|
|
||||||
|
const Input = (props: InputProps) => {
|
||||||
|
return (
|
||||||
|
<components.Input
|
||||||
|
{...props}
|
||||||
|
inputClassName="outline-none border-none shadow-none focus:ring-transparent"
|
||||||
|
className="text-gray-400 dark:text-gray-100"
|
||||||
|
children={props.children}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const Control = (props: ControlProps) => {
|
||||||
|
return (
|
||||||
|
<components.Control
|
||||||
|
{...props}
|
||||||
|
className="p-1 block w-full dark:bg-gray-800 border border-gray-300 dark:border-gray-700 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500 dark:text-gray-100 sm:text-sm"
|
||||||
|
children={props.children}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const Menu = (props: MenuProps) => {
|
||||||
|
return (
|
||||||
|
<components.Menu
|
||||||
|
{...props}
|
||||||
|
className="dark:bg-gray-800 border border-gray-300 dark:border-gray-700 dark:text-gray-400 rounded-md shadow-sm"
|
||||||
|
children={props.children}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const Option = (props: OptionProps) => {
|
||||||
|
return (
|
||||||
|
<components.Option
|
||||||
|
{...props}
|
||||||
|
className="dark:text-gray-400 dark:bg-gray-800 dark:hover:bg-gray-900 dark:focus:bg-gray-900"
|
||||||
|
children={props.children}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
|
@ -208,18 +208,14 @@ const ListItem = ({ idx, network, expanded }: ListItemProps) => {
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{network.nickserv && network.nickserv.account ? (
|
|
||||||
<div
|
<div
|
||||||
className="hidden sm:flex col-span-3 items-center sm:px-6 text-sm text-gray-500 dark:text-gray-400 cursor-pointer"
|
className="hidden sm:flex col-span-3 items-center sm:px-6 text-sm text-gray-500 dark:text-gray-400 cursor-pointer"
|
||||||
onClick={toggleEdit}
|
onClick={toggleEdit}
|
||||||
>
|
>
|
||||||
<div className="overflow-x-auto flex">
|
<div className="overflow-x-auto flex">
|
||||||
{network.nickserv.account}
|
{network.nick}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
|
||||||
<div className="col-span-3" />
|
|
||||||
)}
|
|
||||||
<div className="col-span-1 text-sm text-gray-500 dark:text-gray-400">
|
<div className="col-span-1 text-sm text-gray-500 dark:text-gray-400">
|
||||||
<ListItemDropdown network={network} toggleUpdate={toggleUpdate} />
|
<ListItemDropdown network={network} toggleUpdate={toggleUpdate} />
|
||||||
</div>
|
</div>
|
||||||
|
@ -311,6 +307,8 @@ const ListItemDropdown = ({
|
||||||
queryClient.invalidateQueries(["networks", network.id]);
|
queryClient.invalidateQueries(["networks", network.id]);
|
||||||
|
|
||||||
toast.custom((t) => <Toast type="success" body={`Network ${network.name} was deleted`} t={t}/>);
|
toast.custom((t) => <Toast type="success" body={`Network ${network.name} was deleted`} t={t}/>);
|
||||||
|
|
||||||
|
toggleDeleteModal();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
14
web/src/types/Irc.d.ts
vendored
14
web/src/types/Irc.d.ts
vendored
|
@ -5,9 +5,10 @@ interface IrcNetwork {
|
||||||
server: string;
|
server: string;
|
||||||
port: number;
|
port: number;
|
||||||
tls: boolean;
|
tls: boolean;
|
||||||
|
nick: string;
|
||||||
pass: string;
|
pass: string;
|
||||||
|
auth: IrcAuth; // optional
|
||||||
invite_command: string;
|
invite_command: string;
|
||||||
nickserv?: NickServ; // optional
|
|
||||||
channels: IrcChannel[];
|
channels: IrcChannel[];
|
||||||
connected: boolean;
|
connected: boolean;
|
||||||
connected_since: string;
|
connected_since: string;
|
||||||
|
@ -20,8 +21,9 @@ interface IrcNetworkCreate {
|
||||||
port: number;
|
port: number;
|
||||||
tls: boolean;
|
tls: boolean;
|
||||||
pass: string;
|
pass: string;
|
||||||
|
nick: string;
|
||||||
|
auth: IrcAuth; // optional
|
||||||
invite_command: string;
|
invite_command: string;
|
||||||
nickserv?: NickServ; // optional
|
|
||||||
channels: IrcChannel[];
|
channels: IrcChannel[];
|
||||||
connected: boolean;
|
connected: boolean;
|
||||||
}
|
}
|
||||||
|
@ -48,8 +50,9 @@ interface IrcNetworkWithHealth {
|
||||||
port: number;
|
port: number;
|
||||||
tls: boolean;
|
tls: boolean;
|
||||||
pass: string;
|
pass: string;
|
||||||
|
nick: string;
|
||||||
|
auth: IrcAuth; // optional
|
||||||
invite_command: string;
|
invite_command: string;
|
||||||
nickserv?: NickServ; // optional
|
|
||||||
channels: IrcChannelWithHealth[];
|
channels: IrcChannelWithHealth[];
|
||||||
connected: boolean;
|
connected: boolean;
|
||||||
connected_since: string;
|
connected_since: string;
|
||||||
|
@ -57,7 +60,10 @@ interface IrcNetworkWithHealth {
|
||||||
healthy: boolean;
|
healthy: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface NickServ {
|
type IrcAuthMechanism = "NONE" | "SASL_PLAIN" | "NICKSERV";
|
||||||
|
|
||||||
|
interface IrcAuth {
|
||||||
|
mechanism: IrcAuthMechanism; // optional
|
||||||
account?: string; // optional
|
account?: string; // optional
|
||||||
password?: string; // optional
|
password?: string; // optional
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue