Skip to content
Snippets Groups Projects
Commit eea372fe authored by Jonas Kjærandsen's avatar Jonas Kjærandsen
Browse files

Merge branch 'main' of git.gvk.idi.ntnu.no:Johannesb/dcsg2900-threattotal into main

parents 3e33084d aa528a75
No related branches found
No related tags found
No related merge requests found
...@@ -16,6 +16,7 @@ func HashIntelligence(c *gin.Context) { ...@@ -16,6 +16,7 @@ func HashIntelligence(c *gin.Context) {
var hashInt []byte var hashInt []byte
var err error var err error
var completeInt bool
hash := strings.TrimSpace(c.Query("hash")) hash := strings.TrimSpace(c.Query("hash"))
...@@ -28,21 +29,23 @@ func HashIntelligence(c *gin.Context) { ...@@ -28,21 +29,23 @@ func HashIntelligence(c *gin.Context) {
fmt.Println("No Cache hit") fmt.Println("No Cache hit")
// Perform the request // Perform the request
hashInt, err = hashSearch(hash) hashInt, err, completeInt = hashSearch(hash)
if err != nil { if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"Error ": "Invalid response from third party API's."}) c.JSON(http.StatusInternalServerError, gin.H{"Error ": "Invalid response from third party API's."})
return return
} }
// Add the data to the database if completeInt {
response, err := utils.Conn.Do("SETEX", "hash:"+hash, utils.CacheDurationHash, hashInt) // Add the data to the database
if err != nil { response, err := utils.Conn.Do("SETEX", "hash:"+hash, utils.CacheDurationHash, hashInt)
fmt.Println("Error adding data to redis:" + err.Error()) if err != nil {
logging.Logerror(err, "Error adding data to redis, hash-intelligence") fmt.Println("Error adding data to redis:" + err.Error())
logging.Logerror(err, "Error adding data to redis, hash-intelligence")
} }
fmt.Println(response) fmt.Println(response)
}
} else { } else {
...@@ -76,7 +79,7 @@ func HashIntelligence(c *gin.Context) { ...@@ -76,7 +79,7 @@ func HashIntelligence(c *gin.Context) {
c.Data(http.StatusOK, "application/json", hashInt) c.Data(http.StatusOK, "application/json", hashInt)
} }
func hashSearch(hash string) (data []byte, err error) { func hashSearch(hash string) (data []byte, err error, complete bool) {
var wg sync.WaitGroup var wg sync.WaitGroup
var responseData [2]utils.FrontendResponse2 var responseData [2]utils.FrontendResponse2
...@@ -98,12 +101,25 @@ func hashSearch(hash string) (data []byte, err error) { ...@@ -98,12 +101,25 @@ func hashSearch(hash string) (data []byte, err error) {
utils.SetResultHash(resultPointer, len(responseData)) utils.SetResultHash(resultPointer, len(responseData))
complete = checkIfIntelligenceCompleteHash(resultResponse, len(responseData))
hashInt, err := json.Marshal(resultResponse) hashInt, err := json.Marshal(resultResponse)
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
logging.Logerror(err, "") logging.Logerror(err, "")
return nil, err return nil, err, complete
}
return hashInt, nil, complete
}
func checkIfIntelligenceCompleteHash(jsonData utils.ResultFrontendResponse, size int) (complete bool) {
complete = true
for i := 0; i <= size-1; i++ {
if jsonData.FrontendResponse[i].EN.Status == "Awaiting analysis" || jsonData.FrontendResponse[i].EN.Status == "Error" {
complete = false
}
} }
return hashInt, nil return complete
} }
package logging package logging
import ( import (
"log" "log"
//"log/syslog" //"log/syslog"
"os" "os"
) )
//Function to handle logging of errors to errorlog file with message
func Logerror(err error, msg string) { func Logerror(err error, msg string) {
// log to custom file // log to custom file
LOG_FILE := "./logs/errorlog" LOG_FILE := "./logs/errorlog"
// open log file // open log file
logFile, err := os.OpenFile(LOG_FILE, os.O_APPEND|os.O_RDWR|os.O_CREATE, 0644) logFile, err := os.OpenFile(LOG_FILE, os.O_APPEND|os.O_RDWR|os.O_CREATE, 0644)
if err != nil { if err != nil {
log.Panic(err) log.Panic(err)
} }
defer logFile.Close() defer logFile.Close()
// Set log out put and enjoy :) // Set log output file
log.SetOutput(logFile) log.SetOutput(logFile)
// optional: log date-time, filename, and line number
log.SetFlags(log.Lshortfile | log.LstdFlags)
// log date-time, filename
log.SetFlags(log.Lshortfile | log.LstdFlags)
log.Println(msg, err) log.Println(msg, err)
} }
func Loginfo(msg string){ //Function to handle information logging to infofile
func Loginfo(msg string) {
LOG_FILE := "./logs/infolog" LOG_FILE := "./logs/infolog"
// open log file // open log file
logFile, err := os.OpenFile(LOG_FILE, os.O_APPEND|os.O_RDWR|os.O_CREATE, 0644) logFile, err := os.OpenFile(LOG_FILE, os.O_APPEND|os.O_RDWR|os.O_CREATE, 0644)
if err != nil { if err != nil {
log.Panic(err) log.Panic(err)
} }
defer logFile.Close() defer logFile.Close()
// Set log out put and enjoy :) // Set log output
log.SetOutput(logFile) log.SetOutput(logFile)
// optional: log date-time, filename, and line number //log date-time, filename
log.SetFlags(log.Lshortfile | log.LstdFlags) log.SetFlags(log.Lshortfile | log.LstdFlags)
log.Println(msg) log.Println(msg)
} }
//Function to handle error message display to file.
func Logerrorinfo(msg string) { func Logerrorinfo(msg string) {
// log to custom file // log to custom file
LOG_FILE := "./logs/errorlog" LOG_FILE := "./logs/errorlog"
// open log file // open log file
logFile, err := os.OpenFile(LOG_FILE, os.O_APPEND|os.O_RDWR|os.O_CREATE, 0644) logFile, err := os.OpenFile(LOG_FILE, os.O_APPEND|os.O_RDWR|os.O_CREATE, 0644)
if err != nil { if err != nil {
log.Panic(err) log.Panic(err)
} }
defer logFile.Close() defer logFile.Close()
// Set log out put and enjoy :) // Set log output file :)
log.SetOutput(logFile) log.SetOutput(logFile)
// optional: log date-time, filename, and line number //log date-time, filename
log.SetFlags(log.Lshortfile | log.LstdFlags) log.SetFlags(log.Lshortfile | log.LstdFlags)
log.Println(msg) log.Println(msg)
} }
\ No newline at end of file
...@@ -44,7 +44,7 @@ if (props.Data === "") { ...@@ -44,7 +44,7 @@ if (props.Data === "") {
</div> </div>
</div> </div>
<div className=""> <div className="">
<p>Tags: {props.Data.en.tags}</p> <p>Tags: {t("tags")}</p>
<p>{t("shortForm")} {t("content")}</p> <p>{t("shortForm")} {t("content")}</p>
</div> </div>
</div> </div>
......
...@@ -156,7 +156,7 @@ func SetResponseObjectAlienVaultHash(jsonResponse AlienVaultHash, response *Fron ...@@ -156,7 +156,7 @@ func SetResponseObjectAlienVaultHash(jsonResponse AlienVaultHash, response *Fron
response.EN.Status = "Safe" response.EN.Status = "Safe"
response.EN.Content = "We have no information indicating that this file is malicious." response.EN.Content = "We have no information indicating that this file is malicious."
response.NO.Content = "Trygg" response.NO.Status = "Trygg"
response.NO.Content = "Vi har ingen informasjon som tyder på at dette er en ondsinnet fil." response.NO.Content = "Vi har ingen informasjon som tyder på at dette er en ondsinnet fil."
} else { } else {
response.EN.Status = "Risk" response.EN.Status = "Risk"
...@@ -197,11 +197,11 @@ func SetResponseObjectHybridAnalysisHash(jsonResponse HybridAnalysishash, respon ...@@ -197,11 +197,11 @@ func SetResponseObjectHybridAnalysisHash(jsonResponse HybridAnalysishash, respon
response.NO.Status = "Trygg" response.NO.Status = "Trygg"
response.NO.Content = "I henhold til informasjon gitt av HybridAnalysis tilsier ikke denne filen noen trussel." response.NO.Content = "I henhold til informasjon gitt av HybridAnalysis tilsier ikke denne filen noen trussel."
} else { } else {
response.EN.Status = "Unknown" //Denne må byttes til at den er ukjent // grå farge elns på frontend. response.EN.Status = "Unknown"
response.EN.Content = "This file hash is not known to Hybrid Analysis." response.EN.Content = "This file hash is not known to Hybrid Analysis."
response.NO.Status = "Ukjent" response.NO.Status = "Ukjent"
response.NO.Status = "Denne filhashen er ukjent for Hybrid Analysis." response.NO.Content = "Denne filhashen er ukjent for Hybrid Analysis."
} }
fmt.Println(jsonResponse[0].Verdict) fmt.Println(jsonResponse[0].Verdict)
// Set the filename field if known // Set the filename field if known
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment