Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f1ecde0b25 | ||
|
|
8a2932128e | ||
|
|
030f32147b |
No files matched your search
@@ -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(1)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@@ -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(1)
|
os.Exit(0)
|
||||||
} 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(1)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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(2)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@@ -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(2)
|
os.Exit(0)
|
||||||
} 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(2)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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(2)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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(2)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure the indexes for the GridFS:
|
// Ensure the indexes for the GridFS:
|
||||||
|
|||||||
@@ -2,10 +2,9 @@ package Handlers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
|
||||||
|
|
||||||
"github.com/SommerEngineering/Ocean/Log"
|
"github.com/SommerEngineering/Ocean/Log"
|
||||||
LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
LM "github.com/SommerEngineering/Ocean/Log/Meta"
|
||||||
|
"net/http"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Function to add a new public handler.
|
// Function to add a new public handler.
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ func ICCCHandler(response http.ResponseWriter, request *http.Request) {
|
|||||||
|
|
||||||
if listener == nil {
|
if listener == nil {
|
||||||
// Case: No such listener
|
// Case: No such listener
|
||||||
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelWARN, LM.SeverityCritical, LM.ImpactUnknown, LM.MessageNameCONFIGURATION, `Was not able to find the correct listener for these ICCC message.`, `channel=`+channel, `command=`+command, `hostname=`+Tools.ThisHostname())
|
Log.LogFull(senderName, LM.CategorySYSTEM, LM.LevelWARN, LM.SeverityCritical, LM.ImpactUnknown, LM.MessageNameCONFIGURATION, `Was not able to find the correct listener for these ICCC message.`, `channel=`+channel, `command`+command, `hostname=`+Tools.ThisHostname())
|
||||||
http.NotFound(response, request)
|
http.NotFound(response, request)
|
||||||
} else {
|
} else {
|
||||||
// Case: Everything is fine => deliver the message and read the answer:
|
// Case: Everything is fine => deliver the message and read the answer:
|
||||||
|
|||||||
+2
-3
@@ -6,7 +6,6 @@ import (
|
|||||||
"github.com/SommerEngineering/Ocean/Tools"
|
"github.com/SommerEngineering/Ocean/Tools"
|
||||||
"net/url"
|
"net/url"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Sign a message to secure it.
|
// Sign a message to secure it.
|
||||||
@@ -33,7 +32,7 @@ func signMessage(data map[string][]string) (result url.Values) {
|
|||||||
// Now, loop over all the data:
|
// Now, loop over all the data:
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
// Get the value:
|
// Get the value:
|
||||||
value := data[key][0]
|
value := data[key]
|
||||||
|
|
||||||
// Hash each key and value:
|
// Hash each key and value:
|
||||||
fmt.Fprintf(hash, "key=%s :: value=%s\n", key, value)
|
fmt.Fprintf(hash, "key=%s :: value=%s\n", key, value)
|
||||||
@@ -43,6 +42,6 @@ func signMessage(data map[string][]string) (result url.Values) {
|
|||||||
result = url.Values(data)
|
result = url.Values(data)
|
||||||
|
|
||||||
// Append the sign:
|
// Append the sign:
|
||||||
result.Add(`checksum`, strings.ToUpper(fmt.Sprintf("%x", hash.Sum(nil))))
|
result.Add(`checksum`, fmt.Sprintf("%x", hash.Sum(nil)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -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(2)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@@ -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(2)
|
os.Exit(0)
|
||||||
} 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(2)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the collection:
|
// Get the collection:
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
package Log
|
|
||||||
|
|
||||||
// This function provides the project name for e.g. logging events
|
|
||||||
// coming trough the ICCC.
|
|
||||||
func GetProjectName() string {
|
|
||||||
return projectName
|
|
||||||
}
|
|
||||||
+1
-7
@@ -121,16 +121,10 @@ func clearEntry(entry Meta.Entry) (result Meta.Entry) {
|
|||||||
// Remove white spaces from the parameters.
|
// Remove white spaces from the parameters.
|
||||||
func clearParameters(oldParameters []string) (result []string) {
|
func clearParameters(oldParameters []string) (result []string) {
|
||||||
for n := 0; n < len(oldParameters); n++ {
|
for n := 0; n < len(oldParameters); n++ {
|
||||||
// Remove white spaces:
|
|
||||||
oldParameters[n] = removeWhitespaces(oldParameters[n])
|
oldParameters[n] = removeWhitespaces(oldParameters[n])
|
||||||
|
|
||||||
// Is content left after removing?
|
|
||||||
if oldParameters[n] != `` {
|
|
||||||
// Yes, some content is still there. Thus, commit this entry:
|
|
||||||
result = append(result, oldParameters[n])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
result = oldParameters
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ func ICCCNewLogEventReceiver(data map[string][]string) (result map[string][]stri
|
|||||||
|
|
||||||
// Provide a log entry:
|
// Provide a log entry:
|
||||||
logEntry := LM.Entry{}
|
logEntry := LM.Entry{}
|
||||||
logEntry.Project = Log.GetProjectName()
|
|
||||||
logEntry.Sender = LM.Sender(messageData.Sender)
|
logEntry.Sender = LM.Sender(messageData.Sender)
|
||||||
logEntry.Category = LM.ParseCategory(messageData.Category)
|
logEntry.Category = LM.ParseCategory(messageData.Category)
|
||||||
logEntry.Level = LM.ParseLevel(messageData.Level)
|
logEntry.Level = LM.ParseLevel(messageData.Level)
|
||||||
|
|||||||
@@ -91,10 +91,7 @@ exit
|
|||||||
* Finnaly, start Ocean again. The system should now run fine. Please have a look at the ICCC startup logging messages.
|
* Finnaly, start Ocean again. The system should now run fine. Please have a look at the ICCC startup logging messages.
|
||||||
|
|
||||||
### Use Ocean as distributed messaging broker
|
### Use Ocean as distributed messaging broker
|
||||||
For this case, you can now start your other ICCC components. This are e.g. some Java, Python or C# programs which are using the Ocean ICCC drivers. These drivers currently under development and they will be available soon. **The next priority:** OceanPy, the ICCC driver for Python.
|
For this case, you can now start your other ICCC components. This are e.g. some Java, Python or C# programs which are using the Ocean ICCC drivers. These drivers currently under development and they will be available soon.
|
||||||
|
|
||||||
**Available ICCC drivers:**
|
|
||||||
- [OceanNET - ICCC with .NET and C#](https://github.com/SommerEngineering/OceanNET)
|
|
||||||
|
|
||||||
### Use Ocean as framework e.g. for websites
|
### Use Ocean as framework e.g. for websites
|
||||||
For this case, an example project with documentation is available here: https://github.com/SommerEngineering/Example003
|
For this case, an example project with documentation is available here: https://github.com/SommerEngineering/Example003
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ func icccComponentStartUpMessageReceiver(data map[string][]string) (result map[s
|
|||||||
messageData := obj.(SystemMessages.ICCCComponentStartUpMessage)
|
messageData := obj.(SystemMessages.ICCCComponentStartUpMessage)
|
||||||
|
|
||||||
// Provide a log entry:
|
// Provide a log entry:
|
||||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameSTARTUP, `ICCC message: The external component is now up and ready.`, fmt.Sprintf("ipAddressPort='%s'", messageData.IPAddressPort), fmt.Sprintf("name='%s'", messageData.Name), fmt.Sprintf("version='%s'", messageData.Version))
|
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameSTARTUP, `ICCC message: The external component is now up and ready.`, fmt.Sprintf("ipAddressPort=%s", messageData.IPAddressPort), fmt.Sprintf("name=", messageData.Name), fmt.Sprintf("version=", messageData.Version))
|
||||||
|
|
||||||
// An answer is necessary:
|
// An answer is necessary:
|
||||||
return ICCC.Message2Data("", "", SystemMessages.AnswerACK)
|
return ICCC.Message2Data("", "", SystemMessages.AnswerACK)
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ func icccOceanStartUpMessageReceiver(data map[string][]string) (result map[strin
|
|||||||
messageData := obj.(SystemMessages.ICCCOceanStartUpMessage)
|
messageData := obj.(SystemMessages.ICCCOceanStartUpMessage)
|
||||||
|
|
||||||
// Provide a log entry:
|
// Provide a log entry:
|
||||||
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameSTARTUP, `ICCC message: The Ocean server is now up and ready.`, fmt.Sprintf("public server='%s'", messageData.PublicIPAddressPort), fmt.Sprintf("admin server='%s'", messageData.AdminIPAddressPort), fmt.Sprintf("Ocean's version='%s'", messageData.OceanVersion))
|
Log.LogShort(senderName, LM.CategorySYSTEM, LM.LevelINFO, LM.MessageNameSTARTUP, `ICCC message: The Ocean server is now up and ready.`, fmt.Sprintf("public server=%s", messageData.PublicIPAddressPort), fmt.Sprintf("admin server=%s", messageData.AdminIPAddressPort), fmt.Sprintf("Ocean's version=%s", messageData.OceanVersion))
|
||||||
|
|
||||||
// An answer is necessary:
|
// An answer is necessary:
|
||||||
return ICCC.Message2Data("", "", SystemMessages.AnswerACK)
|
return ICCC.Message2Data("", "", SystemMessages.AnswerACK)
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ func initSystem() {
|
|||||||
ICCC.Registrar(ICCC.ChannelICCC, `ICCC::DeleteListener`, ICCC.ICCCDeleteListenerReceiver)
|
ICCC.Registrar(ICCC.ChannelICCC, `ICCC::DeleteListener`, ICCC.ICCCDeleteListenerReceiver)
|
||||||
ICCC.Registrar(ICCC.ChannelICCC, `ICCC::DeleteHost`, ICCC.ICCCDeleteHostReceiver)
|
ICCC.Registrar(ICCC.ChannelICCC, `ICCC::DeleteHost`, ICCC.ICCCDeleteHostReceiver)
|
||||||
ICCC.Registrar(ICCC.ChannelICCC, `ICCC::ListenerUpdate`, ICCC.ICCCListenerUpdateReceiver)
|
ICCC.Registrar(ICCC.ChannelICCC, `ICCC::ListenerUpdate`, ICCC.ICCCListenerUpdateReceiver)
|
||||||
ICCC.Registrar(ICCC.ChannelPING, `Ping::Ping`, ICCC.ICCCPingReceiver)
|
ICCC.Registrar(ICCC.ChannelICCC, `Ping::Ping`, ICCC.ICCCPingReceiver)
|
||||||
ICCC.Registrar(ICCC.ChannelSYSTEM, `System::Version`, ICCC.ICCCGetVersionReceiver)
|
ICCC.Registrar(ICCC.ChannelSYSTEM, `System::Version`, ICCC.ICCCGetVersionReceiver)
|
||||||
ICCC.Registrar(ICCC.ChannelICCC, `ICCC::GetHosts`, ICCC.ICCCGetHostsReceiver)
|
ICCC.Registrar(ICCC.ChannelICCC, `ICCC::GetHosts`, ICCC.ICCCGetHostsReceiver)
|
||||||
ICCC.Registrar(ICCC.ChannelICCC, `ICCC::GetListeners`, ICCC.ICCCGetListenersReceiver)
|
ICCC.Registrar(ICCC.ChannelICCC, `ICCC::GetListeners`, ICCC.ICCCGetListenersReceiver)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
package Version
|
package Version
|
||||||
|
|
||||||
var (
|
var (
|
||||||
oceansVersion string = `2.0.7` // Ocean's current version
|
oceansVersion string = `2.0.3` // Ocean's current version
|
||||||
)
|
)
|
||||||
Reference in new issue
Block a user