Added Copyright header.
[src/xds/xds-server.git] / lib / xdsconfig / fileconfig.go
index a0724af..ee9ca14 100644 (file)
@@ -1,3 +1,20 @@
+/*
+ * Copyright (C) 2017 "IoT.bzh"
+ * Author Sebastien Douheret <sebastien@iot.bzh>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package xdsconfig
 
 import (
@@ -16,6 +33,8 @@ const (
        ConfigDir = ".xds-server"
        // GlobalConfigFilename Global config filename
        GlobalConfigFilename = "config.json"
+       // ServerDataFilename Server data filename
+       ServerDataFilename = "server-data.xml"
        // FoldersConfigFilename Folders config filename
        FoldersConfigFilename = "server-config_folders.xml"
 )
@@ -59,11 +78,12 @@ func readGlobalConfig(c *Config, confFile string) error {
        searchIn = append(searchIn, "/etc/xds-server/config.json")
 
        exePath := os.Args[0]
-       exeAbsPath, err := filepath.Abs(os.Args[0])
+       ee, _ := os.Executable()
+       exeAbsPath, err := filepath.Abs(ee)
        if err == nil {
                exePath, err = filepath.EvalSymlinks(exeAbsPath)
                if err == nil {
-                       exePath = filepath.Dir(exePath)
+                       exePath = filepath.Dir(ee)
                } else {
                        exePath = filepath.Dir(exeAbsPath)
                }
@@ -81,7 +101,7 @@ func readGlobalConfig(c *Config, confFile string) error {
                // No config file found
                return nil
        }
-       c.Log.Infof("Use config file: %s", *cFile)
+       c.Log.Infof("Use config file:       %s", *cFile)
 
        // TODO move on viper package to support comments in JSON and also
        // bind with flags (command line options)
@@ -145,11 +165,20 @@ func readGlobalConfig(c *Config, confFile string) error {
        return nil
 }
 
-// FoldersConfigFilenameGet
-func FoldersConfigFilenameGet() (string, error) {
+func configFilenameGet(cfgFile string) (string, error) {
        usr, err := user.Current()
        if err != nil {
                return "", err
        }
-       return path.Join(usr.HomeDir, ConfigDir, FoldersConfigFilename), nil
+       return path.Join(usr.HomeDir, ConfigDir, cfgFile), nil
+}
+
+// FoldersConfigFilenameGet
+func FoldersConfigFilenameGet() (string, error) {
+       return configFilenameGet(FoldersConfigFilename)
+}
+
+// ServerDataFilenameGet
+func ServerDataFilenameGet() (string, error) {
+       return configFilenameGet(ServerDataFilename)
 }