diff --git a/VERSION b/VERSION index f9cbc01..e5a4a5e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.7 \ No newline at end of file +1.0.9 \ No newline at end of file diff --git a/config.json b/config.json index f6d0f3e..a150d87 100644 --- a/config.json +++ b/config.json @@ -47,6 +47,7 @@ { "name": "DID_span_4", "direction": 1}, { "name": "DLPN_DialPlan1", "direction": 1}, { "name": "DLPN_DialPlan2", "direction": 2}, + { "name": "DLPN_DialPlan3", "direction": 2}, { "name": "process-in-fax", "direction": 3}, { "name": "process-in-Modem-RSI", "direction": 3}, { "name": "process-in-rsi", "direction": 3}, @@ -57,11 +58,14 @@ { "name": "ringroups-custom-4", "direction": 2}, { "name": "ringroups-custom-5", "direction": 2}, { "name": "stdexten", "direction": 3}, - { "name": "voicemenu-custom-1", "direction": 3} - - + { "name": "voicemenu-custom-1", "direction": 3} ], "excludeFromAnalytics": [ "8889" + ], + + "cleanupRequests" : [ + "update cdr set import = 66 where dst LIKE '%N%' and import = 0", + "update cdr set import = 66 where dst LIKE '%NOANSWER%' and import = 0" ] } diff --git a/docs/INSTALL.md b/docs/INSTALL.md index bfa9c53..5f121df 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -30,6 +30,13 @@ Crée un lien symbolic ln -s /opt/revor/vorimport_[version] /opt/vorimport/curre Copier le fichier config.sample.json en config.json : cp config.sample.json config.json Addapter ce fichier à la configuraiton de système : le dialplan de iPBX et les besoins du client. +Paramètre cleanupRequests permet d'exécuter les requetes personnalisées avant lencement d'importaiton de données de mysql vers mongo. +Mot clé delete est interdit à utiliser. + +Paramètre excludeFromAnalytics permet exclure des SDA de processus d'importation. Ce cas peut être intéressant car les numéro des SDA sont équivalant au numéro des postes. + +Importat : Importation de SDA est basée sur les SDA saisie dans la base de données. Ces SDA peut être saisie via l'interface graphique + Context app-alive-test de asterisk dialplan est utilisé pour générer un test cyclique de toute la chaine Ce context peut être ajouter dans /etc/asterisk/extensions_custom.conf. Voici un example @@ -56,10 +63,6 @@ Mise à jour est identique à l'installation sans la partie de la configuration. Il faut copier le ficheir de la configuration actuel (/opt/vorimport/current/config.json) dans le repertoire /opt/vorimport/vorimport_[version] -Paramètre excludeFromAnalytics permet exclure des SDA de processus d'importation. Ce cas peut être intéressant car les numéro des SDA sont équivalant au numéro des postes. - -Importat : Importation de SDA est basée sur les SDA saisie dans la base de données. Ces SDA peut être saisie via l'interface graphique - ## Notes Cluster diff --git a/docs/ReleaseNotes.md b/docs/ReleaseNotes.md index 2788eb9..7bd3443 100644 --- a/docs/ReleaseNotes.md +++ b/docs/ReleaseNotes.md @@ -2,6 +2,23 @@ Release Notes vorimport ---------- +================================================================================== + +Release 1.0.9 date : 31/03/2015 + +================================================================================== + +Fixing: + + Nothing jsut up the version + +New: + + + +================================================================================== + + ================================================================================== Release 1.0.7 date : 20/03/2015 @@ -15,6 +32,7 @@ Fixing: New: Add new parameter excludeFromAnalytics. Allow exclude did from analysing process + Add new parameter cleanupRequests. Allow execute customize requests before import datas from mysql to mongo. Delete word is forbiden diff --git a/main.go b/main.go index 1432796..a44980f 100644 --- a/main.go +++ b/main.go @@ -48,6 +48,7 @@ type Config struct { Notifications []string Dids []string ExcludeFromAnalytics []string + CleanupRequests []string } var ( @@ -237,6 +238,13 @@ func importJob() { sendMongoEventNotification(MONGOK) log.Debug("Connected to the mongo database with success.") // + err = executeCustomRequests(db) + if err != nil { + log.Errorf("Error to execute customise request : %s", err) + log.Flush() + os.Exit(1) + } + // cdrs, err := getMysqlCdr(db) // if err != nil { diff --git a/mysql.go b/mysql.go index ee8433b..b36d9df 100644 --- a/mysql.go +++ b/mysql.go @@ -1,6 +1,7 @@ package main import ( + "errors" "fmt" log "github.com/cihub/seelog" "github.com/ziutek/mymysql/mysql" @@ -130,7 +131,7 @@ func getMysqlCdrTestCall(db mysql.Conn) (results []RawCall, err error) { log.Tracef("Enter into getMysqlCdr") myQuery := "SELECT UNIX_TIMESTAMP(calldate) as calldate, clid, src, dst, channel, dcontext, disposition,billsec,duration,uniqueid,dstchannel, dnid, recordfile from asteriskcdrdb.cdr WHERE import = 0 and dcontext LIKE 'app-alive-test' LIMIT " + config.DbMySqlFetchRowNumber // - log.Debugf("Executing request [%s]\r\n", myQuery) + log.Debugf("Equery = strings.ToUpper(query)xecuting request [%s]\r\n", myQuery) rows, res, err := db.Query(myQuery) // if err != nil { @@ -145,7 +146,7 @@ func getMysqlCdrTestCall(db mysql.Conn) (results []RawCall, err error) { for _, row := range rows { // var c RawCall //Cdr - //mapping databases fields + //mappingquery = strings.ToUpper(query) databases fields calldate := res.Map("calldate") clid := res.Map("clid") src := res.Map("src") @@ -161,6 +162,7 @@ func getMysqlCdrTestCall(db mysql.Conn) (results []RawCall, err error) { dstchannel := res.Map("dstchannel") // raw_clid := strings.FieldsFunc(row.Str(clid), bracket) + caller_name := "" caller_number := "" @@ -303,6 +305,24 @@ func udpateMySqlCdrImportStatus(db mysql.Conn, uniqueid string, status int) (err return err } +//Execute customize requests provisted by configuration file +func executeCustomRequests(db mysql.Conn) (err error) { + for i := range config.CleanupRequests { + var query = config.CleanupRequests[i] + + if strings.Contains(strings.ToLower(query), "delete") == true { + return errors.New("Using delete keyword is forbiden. Please check your configuration file(config.json)") + } + _, _, err = db.Query(query) + + if err != nil { + return err + } + + } + return nil +} + func deleteMySqlCdrRecord(db mysql.Conn, uniqueid string) (err error) { var query = fmt.Sprintf("DELETE FROM cdr WHERE uniqueid = '%s'", uniqueid) _, _, err = db.Query(query) diff --git a/samples/config.sample.json b/samples/config.sample.json index d4eb229..4452eb8 100644 --- a/samples/config.sample.json +++ b/samples/config.sample.json @@ -29,6 +29,9 @@ ], "excludeFromAnalytics": [ + ], + "cleanupRequests" : [ + ] } diff --git a/tests/clear_and_import_mysql.sh b/tests/clear_and_import_mysql.sh index 1556854..6dfb9f4 100755 --- a/tests/clear_and_import_mysql.sh +++ b/tests/clear_and_import_mysql.sh @@ -33,7 +33,9 @@ function main() fi echo "delete from cdr;" | mysql -u root -plepanos -h127.0.0.1 asteriskcdrdb + echo "delete from cel;" | mysql -u root -plepanos -h127.0.0.1 asteriskcdrdb + mysql -uroot -plepanos -h127.0.0.1 asteriskcdrdb < ${SCRIPTPATH}/asteriskcdrdb.sql }