69 lines
1.5 KiB
Go
69 lines
1.5 KiB
Go
package main
|
||
|
||
import (
|
||
"strings"
|
||
|
||
go_ora "github.com/sijms/go-ora/v2"
|
||
"gopkg.in/ini.v1"
|
||
)
|
||
|
||
// Server - экземпляр сервера
|
||
type Server struct {
|
||
// Полная ссылка на БД, вкючая логин/пароль
|
||
Url string
|
||
|
||
// Наименование филиала
|
||
Name string
|
||
|
||
// Статус работы с сервером
|
||
Status string
|
||
|
||
// Ошибка работы с сервером
|
||
Error error
|
||
}
|
||
|
||
// loadConfig считывает конфиг и возвращает список параметров серверов
|
||
func loadConfig(filePath string) ([]Server, error) {
|
||
servers := make([]Server, 0)
|
||
|
||
iniBytes, err := readFileIgnoreBOM(filePath)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
cfg, err := ini.Load(iniBytes)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
cfg.DeleteSection("DEFAULT")
|
||
|
||
for _, server := range cfg.SectionStrings() {
|
||
loginKey, err := cfg.Section(server).GetKey("Login")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
passwordKey, err := cfg.Section(server).GetKey("Password")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
nameKey, err := cfg.Section(server).GetKey("Name")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
serv := strings.Split(server, "/")[0]
|
||
service := strings.Split(server, "/")[1]
|
||
dbUrl := go_ora.BuildUrl(serv, 1521, service, loginKey.String(), passwordKey.String(), map[string]string{"TIMEOUT": "0", "PREFETCH_ROWS": "1000"})
|
||
|
||
server := Server{
|
||
Url: dbUrl,
|
||
Name: nameKey.String()}
|
||
|
||
servers = append(servers, server)
|
||
}
|
||
|
||
return servers, nil
|
||
}
|