Changeset 542 in code


Ignore:
Timestamp:
May 26, 2021, 8:51:02 AM (4 years ago)
Author:
contact
Message:

Allow networks to be disabled

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/contrib/znc-import.go

    r531 r542  
    182182                        n.Realname = netRealname
    183183                        n.Pass = pass
     184                        n.Enabled = section.Values.Get("IRCConnectEnabled") != "false"
    184185
    185186                        if err := db.StoreNetwork(userID, n); err != nil {
  • trunk/db.go

    r531 r542  
    6161        ConnectCommands []string
    6262        SASL            SASL
     63        Enabled         bool
    6364}
    6465
  • trunk/db_sqlite.go

    r531 r542  
    3535        sasl_external_cert BLOB DEFAULT NULL,
    3636        sasl_external_key BLOB DEFAULT NULL,
     37        enabled INTEGER NOT NULL DEFAULT 1,
    3738        FOREIGN KEY(user) REFERENCES User(id),
    3839        UNIQUE(user, addr, nick),
     
    132133        `,
    133134        "ALTER TABLE Channel ADD COLUMN detached_internal_msgid VARCHAR(255)",
     135        "ALTER TABLE Network ADD COLUMN enabled INTEGER NOT NULL DEFAULT 1",
    134136}
    135137
     
    313315        rows, err := db.db.Query(`SELECT id, name, addr, nick, username, realname, pass,
    314316                        connect_commands, sasl_mechanism, sasl_plain_username, sasl_plain_password,
    315                         sasl_external_cert, sasl_external_key
     317                        sasl_external_cert, sasl_external_key, enabled
    316318                FROM Network
    317319                WHERE user = ?`,
     
    329331                err := rows.Scan(&net.ID, &name, &net.Addr, &net.Nick, &username, &realname,
    330332                        &pass, &connectCommands, &saslMechanism, &saslPlainUsername, &saslPlainPassword,
    331                         &net.SASL.External.CertBlob, &net.SASL.External.PrivKeyBlob)
     333                        &net.SASL.External.CertBlob, &net.SASL.External.PrivKeyBlob, &net.Enabled)
    332334                if err != nil {
    333335                        return nil, err
     
    383385                        SET name = ?, addr = ?, nick = ?, username = ?, realname = ?, pass = ?, connect_commands = ?,
    384386                                sasl_mechanism = ?, sasl_plain_username = ?, sasl_plain_password = ?,
    385                                 sasl_external_cert = ?, sasl_external_key = ?
     387                                sasl_external_cert = ?, sasl_external_key = ?, enabled = ?
    386388                        WHERE id = ?`,
    387389                        netName, network.Addr, network.Nick, netUsername, realname, pass, connectCommands,
    388390                        saslMechanism, saslPlainUsername, saslPlainPassword,
    389                         network.SASL.External.CertBlob, network.SASL.External.PrivKeyBlob,
     391                        network.SASL.External.CertBlob, network.SASL.External.PrivKeyBlob, network.Enabled,
    390392                        network.ID)
    391393        } else {
     
    393395                res, err = db.db.Exec(`INSERT INTO Network(user, name, addr, nick, username,
    394396                                realname, pass, connect_commands, sasl_mechanism, sasl_plain_username,
    395                                 sasl_plain_password, sasl_external_cert, sasl_external_key)
    396                         VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
     397                                sasl_plain_password, sasl_external_cert, sasl_external_key, enabled)
     398                        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
    397399                        userID, netName, network.Addr, network.Nick, netUsername, realname, pass, connectCommands,
    398400                        saslMechanism, saslPlainUsername, saslPlainPassword, network.SASL.External.CertBlob,
    399                         network.SASL.External.PrivKeyBlob)
     401                        network.SASL.External.PrivKeyBlob, network.Enabled)
    400402                if err != nil {
    401403                        return err
  • trunk/doc/soju.1.scd

    r539 r542  
    159159                is used.
    160160
     161        *-enabled* true|false
     162                Enable or disable the network. If the network is disabled, the bouncer
     163                won't connect to it. By default, the network is enabled.
     164
    161165        *-connect-command* <command>
    162166                Send the specified command as a raw IRC message right after connecting
  • trunk/downstream.go

    r540 r542  
    10021002                var err error
    10031003                network, err = dc.user.createNetwork(&Network{
    1004                         Addr: dc.networkName,
    1005                         Nick: nick,
     1004                        Addr:    dc.networkName,
     1005                        Nick:    nick,
     1006                        Enabled: true,
    10061007                })
    10071008                if err != nil {
     
    21752176                                Realname: realname,
    21762177                                Pass:     pass,
     2178                                Enabled:  true,
    21772179                        }
    21782180                        network, err := dc.user.createNetwork(record)
  • trunk/service.go

    r539 r542  
    1919        "math/big"
    2020        "sort"
     21        "strconv"
    2122        "strings"
    2223        "time"
     
    150151                        children: serviceCommandSet{
    151152                                "create": {
    152                                         usage:  "-addr <addr> [-name name] [-username username] [-pass pass] [-realname realname] [-nick nick] [-connect-command command]...",
     153                                        usage:  "-addr <addr> [-name name] [-username username] [-pass pass] [-realname realname] [-nick nick] [-enabled enabled] [-connect-command command]...",
    153154                                        desc:   "add a new network",
    154155                                        handle: handleServiceNetworkCreate,
     
    159160                                },
    160161                                "update": {
    161                                         usage:  "<name> [-addr addr] [-name name] [-username username] [-pass pass] [-realname realname] [-nick nick] [-connect-command command]...",
     162                                        usage:  "<name> [-addr addr] [-name name] [-username username] [-pass pass] [-realname realname] [-nick nick] [-enabled enabled] [-connect-command command]...",
    162163                                        desc:   "update a network",
    163164                                        handle: handleServiceNetworkUpdate,
     
    318319}
    319320
     321type boolPtrFlag struct {
     322        ptr **bool
     323}
     324
     325func (f boolPtrFlag) String() string {
     326        if f.ptr == nil || *f.ptr == nil {
     327                return "<nil>"
     328        }
     329        return strconv.FormatBool(**f.ptr)
     330}
     331
     332func (f boolPtrFlag) Set(s string) error {
     333        v, err := strconv.ParseBool(s)
     334        if err != nil {
     335                return err
     336        }
     337        *f.ptr = &v
     338        return nil
     339}
     340
    320341type networkFlagSet struct {
    321342        *flag.FlagSet
    322343        Addr, Name, Nick, Username, Pass, Realname *string
     344        Enabled                                    *bool
    323345        ConnectCommands                            []string
    324346}
     
    332354        fs.Var(stringPtrFlag{&fs.Pass}, "pass", "")
    333355        fs.Var(stringPtrFlag{&fs.Realname}, "realname", "")
     356        fs.Var(boolPtrFlag{&fs.Enabled}, "enabled", "")
    334357        fs.Var((*stringSliceFlag)(&fs.ConnectCommands), "connect-command", "")
    335358        return fs
     
    362385        if fs.Realname != nil {
    363386                network.Realname = *fs.Realname
     387        }
     388        if fs.Enabled != nil {
     389                network.Enabled = *fs.Enabled
    364390        }
    365391        if fs.ConnectCommands != nil {
     
    389415
    390416        record := &Network{
    391                 Addr: *fs.Addr,
    392                 Nick: dc.nick,
     417                Addr:    *fs.Addr,
     418                Nick:    dc.nick,
     419                Enabled: true,
    393420        }
    394421        if err := fs.update(record); err != nil {
     
    416443                        }
    417444                        details = fmt.Sprintf("%v channels", uc.channels.Len())
     445                } else if !net.Enabled {
     446                        statuses = append(statuses, "disabled")
    418447                } else {
    419448                        statuses = append(statuses, "disconnected")
  • trunk/user.go

    r540 r542  
    173173
    174174func (net *network) run() {
     175        if !net.Enabled {
     176                return
     177        }
     178
    175179        var lastTry time.Time
    176180        for {
Note: See TracChangeset for help on using the changeset viewer.