commit
c7b2050cfe
@ -14,7 +14,7 @@ func connectDatabase(config Meta.Configuration) {
|
|||||||
defer func() {
|
defer func() {
|
||||||
if err := recover(); err != nil {
|
if err := recover(); err != nil {
|
||||||
fmt.Printf("[Error] Was not able to connect to the configuration database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", err)
|
fmt.Printf("[Error] Was not able to connect to the configuration database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", err)
|
||||||
os.Exit(0)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ func connectDatabase(config Meta.Configuration) {
|
|||||||
if newSession, errDial := mgo.Dial(config.ConfigDBHostname); errDial != nil {
|
if newSession, errDial := mgo.Dial(config.ConfigDBHostname); errDial != nil {
|
||||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameDATABASE, `It was not possible to connect to the MongoDB host `+config.ConfigDBHostname, errDial.Error())
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameDATABASE, `It was not possible to connect to the MongoDB host `+config.ConfigDBHostname, errDial.Error())
|
||||||
fmt.Printf("[Error] Was not able to connect to the configuration database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", errDial.Error())
|
fmt.Printf("[Error] Was not able to connect to the configuration database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", errDial.Error())
|
||||||
os.Exit(0)
|
os.Exit(1)
|
||||||
} else {
|
} else {
|
||||||
session = newSession
|
session = newSession
|
||||||
}
|
}
|
||||||
@ -34,7 +34,7 @@ func connectDatabase(config Meta.Configuration) {
|
|||||||
if errLogin := db.Login(config.ConfigDBConfigurationCollectionUsername, config.ConfigDBConfigurationCollectionPassword); errLogin != nil {
|
if errLogin := db.Login(config.ConfigDBConfigurationCollectionUsername, config.ConfigDBConfigurationCollectionPassword); errLogin != nil {
|
||||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelSECURITY, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameDATABASE, `It was not possible to login the user `+config.ConfigDBConfigurationCollectionUsername, errLogin.Error())
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelSECURITY, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameDATABASE, `It was not possible to login the user `+config.ConfigDBConfigurationCollectionUsername, errLogin.Error())
|
||||||
fmt.Printf("[Error] Was not able to connect to the configuration database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", errLogin.Error())
|
fmt.Printf("[Error] Was not able to connect to the configuration database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", errLogin.Error())
|
||||||
os.Exit(0)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// In case of write operations, wait for the majority of servers to be done:
|
// In case of write operations, wait for the majority of servers to be done:
|
||||||
|
@ -13,7 +13,7 @@ func connectDatabase(host, username, password, database string) {
|
|||||||
defer func() {
|
defer func() {
|
||||||
if err := recover(); err != nil {
|
if err := recover(); err != nil {
|
||||||
fmt.Printf("[Error] Was not able to connect to the customer database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", err)
|
fmt.Printf("[Error] Was not able to connect to the customer database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", err)
|
||||||
os.Exit(0)
|
os.Exit(2)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ func connectDatabase(host, username, password, database string) {
|
|||||||
if newSession, errDial := mgo.Dial(host); errDial != nil {
|
if newSession, errDial := mgo.Dial(host); errDial != nil {
|
||||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameDATABASE, `It was not possible to connect to the MongoDB host `+host, errDial.Error())
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameDATABASE, `It was not possible to connect to the MongoDB host `+host, errDial.Error())
|
||||||
fmt.Printf("[Error] Was not able to connect to the customer database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", errDial.Error())
|
fmt.Printf("[Error] Was not able to connect to the customer database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", errDial.Error())
|
||||||
os.Exit(0)
|
os.Exit(2)
|
||||||
} else {
|
} else {
|
||||||
mainSession = newSession
|
mainSession = newSession
|
||||||
}
|
}
|
||||||
@ -31,14 +31,14 @@ func connectDatabase(host, username, password, database string) {
|
|||||||
if db == nil {
|
if db == nil {
|
||||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactCritical, LM.MessageNameDATABASE, `Was not able to get the customer database.`)
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactCritical, LM.MessageNameDATABASE, `Was not able to get the customer database.`)
|
||||||
fmt.Printf("[Error] Was not able to connect to the customer database. Please read https://github.com/SommerEngineering/Ocean.\n")
|
fmt.Printf("[Error] Was not able to connect to the customer database. Please read https://github.com/SommerEngineering/Ocean.\n")
|
||||||
os.Exit(0)
|
os.Exit(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Login:
|
// Login:
|
||||||
if errLogin := db.Login(username, password); errLogin != nil {
|
if errLogin := db.Login(username, password); errLogin != nil {
|
||||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelSECURITY, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameDATABASE, `It was not possible to login the user `+databaseUsername, errLogin.Error())
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelSECURITY, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameDATABASE, `It was not possible to login the user `+databaseUsername, errLogin.Error())
|
||||||
fmt.Printf("[Error] Was not able to connect to the customer database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", errLogin.Error())
|
fmt.Printf("[Error] Was not able to connect to the customer database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", errLogin.Error())
|
||||||
os.Exit(0)
|
os.Exit(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// In case of write operations, wait for the majority of servers to be done:
|
// In case of write operations, wait for the majority of servers to be done:
|
||||||
@ -53,7 +53,7 @@ func connectDatabase(host, username, password, database string) {
|
|||||||
if gridFS == nil {
|
if gridFS == nil {
|
||||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactCritical, LM.MessageNameDATABASE, `Was not able to get the GridFS from the database.`)
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityCritical, LM.ImpactCritical, LM.MessageNameDATABASE, `Was not able to get the GridFS from the database.`)
|
||||||
fmt.Printf("[Error] Was not able to connect to the customer database. Please read https://github.com/SommerEngineering/Ocean.\n")
|
fmt.Printf("[Error] Was not able to connect to the customer database. Please read https://github.com/SommerEngineering/Ocean.\n")
|
||||||
os.Exit(0)
|
os.Exit(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure the indexes for the GridFS:
|
// Ensure the indexes for the GridFS:
|
||||||
|
@ -1,36 +1,37 @@
|
|||||||
package Handlers
|
package Handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/SommerEngineering/Ocean/Log"
|
"net/http"
|
||||||
LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
|
||||||
"net/http"
|
"github.com/SommerEngineering/Ocean/Log"
|
||||||
)
|
LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
||||||
|
)
|
||||||
// Function to add a new public handler.
|
|
||||||
func AddPublicHandler(pattern string, handler func(http.ResponseWriter, *http.Request)) {
|
// Function to add a new public handler.
|
||||||
// In case of an error, catch the error:
|
func AddPublicHandler(pattern string, handler func(http.ResponseWriter, *http.Request)) {
|
||||||
defer func() {
|
// In case of an error, catch the error:
|
||||||
if err := recover(); err != nil {
|
defer func() {
|
||||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameSTATE, fmt.Sprintf("Was not able to add a public handler, because the path '%s' is already in use. %s", pattern, err))
|
if err := recover(); err != nil {
|
||||||
return
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameSTATE, fmt.Sprintf("Was not able to add a public handler, because the path '%s' is already in use. %s", pattern, err))
|
||||||
}
|
return
|
||||||
}()
|
}
|
||||||
|
}()
|
||||||
// Add the handler:
|
|
||||||
muxPublic.HandleFunc(pattern, handler)
|
// Add the handler:
|
||||||
}
|
muxPublic.HandleFunc(pattern, handler)
|
||||||
|
}
|
||||||
// Function to add a new private handler.
|
|
||||||
func AddAdminHandler(pattern string, handler func(http.ResponseWriter, *http.Request)) {
|
// Function to add a new private handler.
|
||||||
// In case of an error, catch the error:
|
func AddAdminHandler(pattern string, handler func(http.ResponseWriter, *http.Request)) {
|
||||||
defer func() {
|
// In case of an error, catch the error:
|
||||||
if err := recover(); err != nil {
|
defer func() {
|
||||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameSTATE, fmt.Sprintf("Was not able to add a private admin handler, because the path '%s' is already in use. %s", pattern, err))
|
if err := recover(); err != nil {
|
||||||
return
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameSTATE, fmt.Sprintf("Was not able to add a private admin handler, because the path '%s' is already in use. %s", pattern, err))
|
||||||
}
|
return
|
||||||
}()
|
}
|
||||||
|
}()
|
||||||
// Add the handler:
|
|
||||||
muxAdmin.HandleFunc(pattern, handler)
|
// Add the handler:
|
||||||
}
|
muxAdmin.HandleFunc(pattern, handler)
|
||||||
|
}
|
||||||
|
@ -18,7 +18,7 @@ func initDatabase() {
|
|||||||
defer func() {
|
defer func() {
|
||||||
if err := recover(); err != nil {
|
if err := recover(); err != nil {
|
||||||
fmt.Printf("[Error] Was not able to connect to the logging database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", err)
|
fmt.Printf("[Error] Was not able to connect to the logging database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", err)
|
||||||
os.Exit(0)
|
os.Exit(2)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ func initDatabase() {
|
|||||||
if newSession, errDial := mgo.Dial(databaseHost); errDial != nil {
|
if newSession, errDial := mgo.Dial(databaseHost); errDial != nil {
|
||||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameDATABASE, `It was not possible to connect to the MongoDB host `+databaseHost, errDial.Error())
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelERROR, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameDATABASE, `It was not possible to connect to the MongoDB host `+databaseHost, errDial.Error())
|
||||||
fmt.Printf("[Error] Was not able to connect to the logging database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", errDial.Error())
|
fmt.Printf("[Error] Was not able to connect to the logging database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", errDial.Error())
|
||||||
os.Exit(0)
|
os.Exit(2)
|
||||||
} else {
|
} else {
|
||||||
logDBSession = newSession
|
logDBSession = newSession
|
||||||
}
|
}
|
||||||
@ -69,7 +69,7 @@ func initDatabase() {
|
|||||||
if errLogin := logDB.Login(databaseUsername, databasePassword); errLogin != nil {
|
if errLogin := logDB.Login(databaseUsername, databasePassword); errLogin != nil {
|
||||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelSECURITY, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameDATABASE, `It was not possible to login the user `+databaseUsername, errLogin.Error())
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelSECURITY, LM.SeverityUnknown, LM.ImpactUnknown, LM.MessageNameDATABASE, `It was not possible to login the user `+databaseUsername, errLogin.Error())
|
||||||
fmt.Printf("[Error] Was not able to connect to the logging database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", errLogin.Error())
|
fmt.Printf("[Error] Was not able to connect to the logging database: %s. Please read https://github.com/SommerEngineering/Ocean.\n", errLogin.Error())
|
||||||
os.Exit(0)
|
os.Exit(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the collection:
|
// Get the collection:
|
||||||
|
10
README.md
10
README.md
@ -49,11 +49,11 @@ The second configuration file is **configuration.json**. It contains the configu
|
|||||||
|
|
||||||
```JSON
|
```JSON
|
||||||
{
|
{
|
||||||
"ConfigDBHostname" : "127.0.0.1:27017",
|
"ConfigDBHostname" : "127.0.0.1:27017",
|
||||||
"ConfigDBDatabase" : "MyOcean",
|
"ConfigDBDatabase" : "MyOcean",
|
||||||
"ConfigDBConfigurationCollection" : "Configuration",
|
"ConfigDBConfigurationCollection" : "Configuration",
|
||||||
"ConfigDBConfigurationCollectionUsername" : "MyOceanConfig",
|
"ConfigDBConfigurationCollectionUsername" : "MyOceanConfig",
|
||||||
"ConfigDBConfigurationCollectionPassword" : "PWD"
|
"ConfigDBConfigurationCollectionPassword" : "PWD"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
The `ConfigDBConfigurationCollection` collection gets automatically created. After both files are present and the MongoDB database or database cluster is running, Ocean is able to start. The database can and should be empty. Ocean does the configuration automatically. Due to this minimal local configuration and the distributed configuration database, the deployment of additional Ocean servers can be achieved by using e.g. data center scripts, etc.
|
The `ConfigDBConfigurationCollection` collection gets automatically created. After both files are present and the MongoDB database or database cluster is running, Ocean is able to start. The database can and should be empty. Ocean does the configuration automatically. Due to this minimal local configuration and the distributed configuration database, the deployment of additional Ocean servers can be achieved by using e.g. data center scripts, etc.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
package Version
|
package Version
|
||||||
|
|
||||||
var (
|
var (
|
||||||
oceansVersion string = `2.0.6` // Ocean's current version
|
oceansVersion string = `2.0.7` // Ocean's current version
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user