Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-02-11 21:21:21 +0300
committerKamil Trzcinski <ayufan@ayufan.eu>2016-02-11 21:21:21 +0300
commit3824fc8ca34b8f94ae7ef7550aec196dbbfdecf5 (patch)
tree87232d79817efbfc51cef62d6cf37e38d51d7d6d /main.go
parentab00ebdb114513eb3c77b6b45c5adf7848b1fc87 (diff)
Move most of configuration to appConfig
Diffstat (limited to 'main.go')
-rw-r--r--main.go99
1 files changed, 55 insertions, 44 deletions
diff --git a/main.go b/main.go
index 30cbb5de..5799f380 100644
--- a/main.go
+++ b/main.go
@@ -5,8 +5,8 @@ import (
"fmt"
"log"
"path/filepath"
- "sync"
- "time"
+ "io/ioutil"
+ "net"
)
// VERSION stores the information about the semantic version of application
@@ -15,70 +15,81 @@ var VERSION = "dev"
// REVISION stores the information about the git revision of application
var REVISION = "HEAD"
-var listenHTTP = flag.String("listen-http", ":80", "The address to listen for HTTP requests")
-var listenHTTPS = flag.String("listen-https", "", "The address to listen for HTTPS requests")
-var listenProxy = flag.String("listen-proxy", "", "The address to listen for proxy requests")
var pagesDomain = flag.String("pages-domain", "gitlab-example.com", "The domain to serve static pages")
-var pagesRootCert = flag.String("root-cert", "", "The default path to file certificate to serve static pages")
-var pagesRootKey = flag.String("root-key", "", "The default path to file certificate to serve static pages")
var serverHTTP = flag.Bool("serve-http", true, "Serve the pages under HTTP")
var http2proto = flag.Bool("http2", true, "Enable HTTP2 support")
var pagesRoot = flag.String("pages-root", "shared/pages", "The directory where pages are stored")
-func resolve() {
- fullPath, err := filepath.EvalSymlinks(*pagesRoot)
+func evalSymlinks(directory string) (result string) {
+ result, err := filepath.EvalSymlinks(directory)
if err != nil {
log.Fatalln(err)
}
- *pagesRoot = fullPath
+ return
+}
+
+func readFile(file string) (result []byte) {
+ result, err := ioutil.ReadFile(file)
+ if err != nil {
+ log.Fatalln(err)
+ }
+ return
+}
+
+func createSocket(addr string) (l net.Listener, fd uintptr) {
+ l, err := net.Listen("tcp", addr)
+ if err != nil {
+ log.Fatalln(err)
+ }
+
+ f, err := l.(*net.TCPListener).File()
+ if err != nil {
+ log.Fatalln(err)
+ }
+
+ fd = f.Fd()
+ return
}
func main() {
- var wg sync.WaitGroup
- var app theApp
+ var listenHTTP = flag.String("listen-http", ":80", "The address to listen for HTTP requests")
+ var listenHTTPS = flag.String("listen-https", "", "The address to listen for HTTPS requests")
+ var listenProxy = flag.String("listen-proxy", "", "The address to listen for proxy requests")
+ var pagesRootCert = flag.String("root-cert", "", "The default path to file certificate to serve static pages")
+ var pagesRootKey = flag.String("root-key", "", "The default path to file certificate to serve static pages")
fmt.Printf("GitLab Pages Daemon %s (%s)", VERSION, REVISION)
fmt.Printf("URL: https://gitlab.com/gitlab-org/gitlab-pages")
flag.Parse()
- resolve()
- // Listen for HTTP
+ var app theApp
+
+ app.Domain = *pagesDomain
+ app.RootDir = evalSymlinks(*pagesRoot)
+
+ if *pagesRootCert != "" {
+ app.RootCertificate = readFile(*pagesRootCert)
+ }
+
+ if *pagesRootKey != "" {
+ app.RootKey = readFile(*pagesRootKey)
+ }
+
if *listenHTTP != "" {
- wg.Add(1)
- go func() {
- defer wg.Done()
- err := listenAndServe(*listenHTTP, app.ServeHTTP)
- if err != nil {
- log.Fatal(err)
- }
- }()
+ var l net.Listener
+ l, app.ListenHTTP = createSocket(*listenHTTP)
+ defer l.Close()
}
- // Listen for HTTPS
if *listenHTTPS != "" {
- wg.Add(1)
- go func() {
- defer wg.Done()
- err := listenAndServeTLS(*listenHTTPS, *pagesRootCert, *pagesRootKey, app.ServeHTTP, app.ServeTLS)
- if err != nil {
- log.Fatal(err)
- }
- }()
+ var l net.Listener
+ l, app.ListenHTTPS = createSocket(*listenHTTPS)
+ defer l.Close()
}
- // Listen for HTTP proxy requests
if *listenProxy != "" {
- wg.Add(1)
- go func() {
- defer wg.Done()
- err := listenAndServe(*listenProxy, app.ServeProxy)
- if err != nil {
- log.Fatal(err)
- }
- }()
+ var l net.Listener
+ l, app.ListenHTTPS = createSocket(*listenProxy)
+ defer l.Close()
}
-
- go watchDomains(app.UpdateDomains, time.Second)
-
- wg.Wait()
}