(inlineArgs []string, cfg *config.Map)
| 104 | } |
| 105 | |
| 106 | func (store *Storage) Configure(inlineArgs []string, cfg *config.Map) error { |
| 107 | if len(inlineArgs) != 0 { |
| 108 | if len(inlineArgs) == 1 { |
| 109 | return errors.New("imapsql: expected at least 2 arguments") |
| 110 | } |
| 111 | |
| 112 | store.driver = inlineArgs[0] |
| 113 | store.dsn = inlineArgs[1:] |
| 114 | } |
| 115 | |
| 116 | var ( |
| 117 | driver string |
| 118 | dsn []string |
| 119 | appendlimitVal int64 = -1 |
| 120 | compression []string |
| 121 | authNormalize string |
| 122 | deliveryNormalize string |
| 123 | |
| 124 | blobStore module.BlobStore |
| 125 | ) |
| 126 | |
| 127 | opts := &imapsql.Opts{} |
| 128 | cfg.String("driver", false, false, store.driver, &driver) |
| 129 | cfg.StringList("dsn", false, false, store.dsn, &dsn) |
| 130 | cfg.Callback("fsstore", func(m *config.Map, node config.Node) error { |
| 131 | store.log.Msg("'fsstore' directive is deprecated, use 'msg_store fs' instead") |
| 132 | return modconfig.ModuleFromNode("storage.blob", append([]string{"fs"}, node.Args...), |
| 133 | node, m.Globals, &blobStore) |
| 134 | }) |
| 135 | cfg.Custom("msg_store", false, false, func() (interface{}, error) { |
| 136 | var store module.BlobStore |
| 137 | err := modconfig.ModuleFromNode("storage.blob", []string{"fs", "messages"}, |
| 138 | config.Node{}, nil, &store) |
| 139 | return store, err |
| 140 | }, func(m *config.Map, node config.Node) (interface{}, error) { |
| 141 | var store module.BlobStore |
| 142 | err := modconfig.ModuleFromNode("storage.blob", node.Args, |
| 143 | node, m.Globals, &store) |
| 144 | return store, err |
| 145 | }, &blobStore) |
| 146 | cfg.StringList("compression", false, false, []string{"off"}, &compression) |
| 147 | cfg.DataSize("appendlimit", false, false, 32*1024*1024, &appendlimitVal) |
| 148 | cfg.Bool("debug", true, false, &store.log.Debug) |
| 149 | cfg.Int("sqlite3_cache_size", false, false, 0, &opts.CacheSize) |
| 150 | cfg.Int("sqlite3_busy_timeout", false, false, 5000, &opts.BusyTimeout) |
| 151 | cfg.Bool("disable_recent", false, true, &opts.DisableRecent) |
| 152 | cfg.String("junk_mailbox", false, false, "Junk", &store.junkMbox) |
| 153 | cfg.Custom("imap_filter", false, false, func() (interface{}, error) { |
| 154 | return nil, nil |
| 155 | }, func(m *config.Map, node config.Node) (interface{}, error) { |
| 156 | var filter module.IMAPFilter |
| 157 | err := modconfig.GroupFromNode("imap_filters", node.Args, node, m.Globals, &filter) |
| 158 | return filter, err |
| 159 | }, &store.filters) |
| 160 | cfg.Custom("auth_map", false, false, func() (interface{}, error) { |
| 161 | return nil, nil |
| 162 | }, modconfig.TableDirective, &store.authMap) |
| 163 | cfg.String("auth_normalize", false, false, "auto", &authNormalize) |
nothing calls this directly
no test coverage detected