mirror of
https://github.com/donl/gPanel.git
synced 2026-05-26 14:22:18 -06:00
86 lines
No EOL
1.6 KiB
Go
86 lines
No EOL
1.6 KiB
Go
package database
|
|
|
|
import (
|
|
"github.com/boltdb/bolt"
|
|
"encoding/json"
|
|
)
|
|
|
|
type Struct_Domain struct {
|
|
BundleName string `json:"name"`
|
|
PublicPort int `json:"port"`
|
|
}
|
|
|
|
type Struct_Nameserver struct {
|
|
Nameserver string `json:"nameserver"`
|
|
}
|
|
|
|
func (ds *Datastore) ListDomains(bundle string) (map[string]Struct_Domain, error) {
|
|
filtered := make(map[string]Struct_Domain)
|
|
var holder Struct_Domain
|
|
|
|
ds.handle.View(func(tx *bolt.Tx) error {
|
|
b := tx.Bucket([]byte(BUCKET_DOMAINS))
|
|
c := b.Cursor()
|
|
|
|
for k, v := c.First(); k != nil; k, v = c.Next() {
|
|
json.Unmarshal(v, &holder)
|
|
|
|
if bundle == "*" || holder.BundleName == bundle {
|
|
filtered[string(k)] = holder
|
|
}
|
|
}
|
|
|
|
return nil
|
|
})
|
|
|
|
return filtered, nil
|
|
}
|
|
|
|
func (ds *Datastore) RemoveInstances(bundle string) error {
|
|
var holder Struct_Domain
|
|
var toDelete []string
|
|
|
|
ds.handle.View(func(tx *bolt.Tx) error {
|
|
b := tx.Bucket([]byte(BUCKET_DOMAINS))
|
|
c := b.Cursor()
|
|
|
|
for k, v := c.First(); k != nil; k, v = c.Next() {
|
|
json.Unmarshal(v, &holder)
|
|
|
|
if holder.BundleName == bundle {
|
|
toDelete = append(toDelete, string(k))
|
|
}
|
|
}
|
|
|
|
return nil
|
|
})
|
|
|
|
for _, v := range toDelete {
|
|
err := ds.Delete(BUCKET_DOMAINS, []byte(v))
|
|
if err != nil && err != ErrKeyNotExist {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (ds *Datastore) ListNameservers() ([]string, error) {
|
|
filtered := make([]string, 0)
|
|
var holder Struct_Nameserver
|
|
|
|
ds.handle.View(func(tx *bolt.Tx) error {
|
|
b := tx.Bucket([]byte(BUCKET_NAMESERVERS))
|
|
c := b.Cursor()
|
|
|
|
for k, v := c.First(); k != nil; k, v = c.Next() {
|
|
json.Unmarshal(v, &holder)
|
|
|
|
filtered = append(filtered, holder.Nameserver)
|
|
}
|
|
|
|
return nil
|
|
})
|
|
|
|
return filtered, nil
|
|
} |