host create folders
This commit is contained in:
parent
67ee4a8559
commit
8818a82b9f
|
@ -13,11 +13,22 @@ type Config struct {
|
||||||
Path string `yaml:"path"`
|
Path string `yaml:"path"`
|
||||||
} `yaml:"log"`
|
} `yaml:"log"`
|
||||||
DatabaseDebug bool `yaml:"databasedebug"`
|
DatabaseDebug bool `yaml:"databasedebug"`
|
||||||
|
PathUser string `yaml:"path_user"`
|
||||||
|
PathGroup string `yaml:"path_group"`
|
||||||
Web struct {
|
Web struct {
|
||||||
Enable bool `yaml:"enable"`
|
Enable bool `yaml:"enable"`
|
||||||
ConfigurationTemplate string `yaml:"template"`
|
ConfigurationTemplate string `yaml:"template"`
|
||||||
ConfigurationFile string `yaml:"config"`
|
ConfigurationFile string `yaml:"config"`
|
||||||
|
PathDomain string `yaml:"path_domain"`
|
||||||
} `yaml:"web"`
|
} `yaml:"web"`
|
||||||
|
WebModul struct {
|
||||||
|
Enable bool `yaml:"enable"`
|
||||||
|
PathID string `yaml:"path_id"`
|
||||||
|
} `yaml:"web_modul"`
|
||||||
|
FTP struct {
|
||||||
|
Enable bool `yaml:"enable"`
|
||||||
|
PathID string `yaml:"path_id"`
|
||||||
|
} `yaml:"ftp"`
|
||||||
Database struct {
|
Database struct {
|
||||||
Enable bool `yaml:"enable"`
|
Enable bool `yaml:"enable"`
|
||||||
Type string `yaml:"type"`
|
Type string `yaml:"type"`
|
||||||
|
|
|
@ -3,10 +3,16 @@ warehostdatabase: "host=localhost user=warehost dbname=warehost password=hallo s
|
||||||
log:
|
log:
|
||||||
path: test.log
|
path: test.log
|
||||||
databasedebug: false
|
databasedebug: false
|
||||||
|
path_user: http
|
||||||
|
path_group: http
|
||||||
|
ftp:
|
||||||
|
enable: true
|
||||||
|
path_id: /tmp/ftp/%d/
|
||||||
web:
|
web:
|
||||||
enable: true
|
enable: true
|
||||||
template: caddy
|
template: caddy
|
||||||
config: /tmp/a
|
config: /tmp/a
|
||||||
|
path_domain: /tmp/b
|
||||||
database:
|
database:
|
||||||
enable: true
|
enable: true
|
||||||
type: mysql
|
type: mysql
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"os/user"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"text/template"
|
"text/template"
|
||||||
|
@ -15,6 +16,7 @@ import (
|
||||||
|
|
||||||
liblog "dev.sum7.eu/sum7/warehost/lib/log"
|
liblog "dev.sum7.eu/sum7/warehost/lib/log"
|
||||||
host "dev.sum7.eu/sum7/warehost/modul/host"
|
host "dev.sum7.eu/sum7/warehost/modul/host"
|
||||||
|
web "dev.sum7.eu/sum7/warehost/modul/web"
|
||||||
system "dev.sum7.eu/sum7/warehost/system"
|
system "dev.sum7.eu/sum7/warehost/system"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -45,8 +47,44 @@ func main() {
|
||||||
|
|
||||||
//load system Models to database
|
//load system Models to database
|
||||||
system.SyncModels(dbconnection)
|
system.SyncModels(dbconnection)
|
||||||
|
web.SyncModels(dbconnection)
|
||||||
host.SyncModels(dbconnection)
|
host.SyncModels(dbconnection)
|
||||||
|
|
||||||
|
u, _ := user.Lookup(config.PathUser)
|
||||||
|
userid, _ := strconv.Atoi(u.Uid)
|
||||||
|
g, _ := user.LookupGroup(config.PathGroup)
|
||||||
|
groupid, _ := strconv.Atoi(g.Gid)
|
||||||
|
|
||||||
|
if config.FTP.Enable {
|
||||||
|
var logins []*system.Login
|
||||||
|
dbconnection.Joins("LEFT JOIN host_profil profil ON profil.login=login.id").Where("profil.id IS NOT NULL").Find(&logins)
|
||||||
|
for _, login := range logins {
|
||||||
|
path := fmt.Sprintf(config.FTP.PathID, login.ID)
|
||||||
|
err = os.Mkdir(path, 0770)
|
||||||
|
if err != nil && !strings.Contains(err.Error(), "file exists") {
|
||||||
|
liblog.Log.Warn("ftp folder: ", err)
|
||||||
|
} else {
|
||||||
|
os.Chown(path, userid, groupid)
|
||||||
|
liblog.Log.Info("ftp folder: ", path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if config.WebModul.Enable {
|
||||||
|
var sites []*web.Website
|
||||||
|
dbconnection.Find(&sites)
|
||||||
|
for _, site := range sites {
|
||||||
|
path := fmt.Sprintf(config.WebModul.PathID, site.ID)
|
||||||
|
err = os.Mkdir(path, 0770)
|
||||||
|
if err != nil && !strings.Contains(err.Error(), "file exists") {
|
||||||
|
liblog.Log.Warn("web modul folder: ", err)
|
||||||
|
} else {
|
||||||
|
os.Chown(path, userid, groupid)
|
||||||
|
liblog.Log.Info("web modul folder: ", path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Configurate Webserver
|
// Configurate Webserver
|
||||||
if config.Web.Enable {
|
if config.Web.Enable {
|
||||||
tmpl, err := template.ParseFiles(config.Web.ConfigurationTemplate)
|
tmpl, err := template.ParseFiles(config.Web.ConfigurationTemplate)
|
||||||
|
@ -63,9 +101,21 @@ func main() {
|
||||||
dbconnection.Preload("Domain.Profil.Login").Order("length(subdomain) asc").Find(&web)
|
dbconnection.Preload("Domain.Profil.Login").Order("length(subdomain) asc").Find(&web)
|
||||||
for _, item := range web {
|
for _, item := range web {
|
||||||
if item.Domain.Active && item.Domain.Web && item.Domain.Profil.Login.Active {
|
if item.Domain.Active && item.Domain.Web && item.Domain.Profil.Login.Active {
|
||||||
|
path := config.Web.PathDomain
|
||||||
|
if len(item.Subdomain) > 0 {
|
||||||
|
path = fmt.Sprintf("%s/%s.%s", path, item.Subdomain, item.Domain.FQDN)
|
||||||
|
} else {
|
||||||
|
path = fmt.Sprintf("%s/%s", path, item.Domain.FQDN)
|
||||||
|
}
|
||||||
|
err = os.Mkdir(path, 0770)
|
||||||
|
if err != nil && !strings.Contains(err.Error(), "file exists") {
|
||||||
|
liblog.Log.Warn("domain folder: ", err)
|
||||||
|
} else {
|
||||||
|
os.Chown(path, userid, groupid)
|
||||||
|
}
|
||||||
err = tmpl.Execute(file, item)
|
err = tmpl.Execute(file, item)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
liblog.Log.Warning("write config: ", err)
|
liblog.Log.Warn("write config: ", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue