chenshijun
2019-04-16 f946a62d3921e86b44ff8e2973138304b9cd53cd
QiaoJiaSystem/DataManagerServer/http_configserver.cpp
@@ -262,6 +262,8 @@
    VssDomainUnitTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
    VssLocalSettingTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
    CamDevController::instance()->registerHttpServices(_HttpSrvRetRecieve);
    //todo
    CamDevController::instance()->nsqMsgProducerSet(nsqMsgProducer);
    VssUpperSvrTblController::instance()->registerHttpServices(_HttpSrvRetRecieve);
@@ -1164,11 +1166,11 @@
                                        std::string brand) const {
    if (brand == "haikang") {
        bool ret = getHKDevSerialNumber(ip.c_str(), port, username.c_str(), passwd.c_str());
        if (!ret) {
            ERR("getHKDevSerialNumber ERR");
            return false;
        }
//        bool ret = getHKDevSerialNumber(ip.c_str(), port, username.c_str(), passwd.c_str());
//        if (!ret) {
//            ERR("getHKDevSerialNumber ERR");
//            return false;
//        }
        //调用rtsp流rtsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream
        port = 554;//TODO
//        std::string rtsp_url = "rtsp://" + username + ":" + passwd + "@" + ip + ":" + std::to_string(port) +
@@ -1218,11 +1220,11 @@
        return false;//TODO
    } else if (brand == "yushi") {
//        rtsp://admin:admin@192.168.8.8:554/video1
        bool ret = getUVDevSerialNumber(ip.c_str(), username.c_str(), passwd.c_str());
        if (!ret) {
            ERR("getUVDevSerialNumber ERR");
            return false;
        }
//        bool ret = getUVDevSerialNumber(ip.c_str(), username.c_str(), passwd.c_str());
//        if (!ret) {
//            ERR("getUVDevSerialNumber ERR");
//            return false;
//        }
        port = 554;
//        std::string rtsp_url = "rtsp://" + username + ":" + passwd + "@" + ip + ":" + std::to_string(port) +
@@ -1294,6 +1296,7 @@
            if (m_rtmp[ip].userCounter == 0) {
                m_rtmp[ip].appPC->stop();
                m_rtmp[ip].appPC->wait();
                delete m_rtmp[ip].appPC;
                m_rtmp.erase(ip);
            }
        }
@@ -1318,28 +1321,41 @@
    }
    Json::Value value;
    if (value_reader.isMember("id")) {
        if (value_reader["id"].isNull()) return "{\"ret_status\": \"id内容有误,请检查!\"}";
        value["connect_status"] = "True";
        std::string rtmp_url = appConfig.getStringProperty("srsAddr");
        rtmp_url.append("cam").append(value_reader["id"].asCString());
        value["video_url"] = rtmp_url;
        out = value.toStyledString();
    } else {
        //TODO
        //调用rtsp流rtsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream
        if (value_reader["id"].isNull()) {
            //本地视频源 第一次测试连接
            //TODO
            //调用rtsp流rtsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream
//    std::string rtsp_url = "rtsp://" + username + ":" + passwd + "@" + ip + ":"  + std::to_string(port) + "/h264/ch1/main/av_stream";
        bool ret = cam_connect_video_start(value_reader["str_ip"].asString(), value_reader["n_port"].asInt(), \
            bool ret = cam_connect_video_start(value_reader["str_ip"].asString(), value_reader["n_port"].asInt(), \
                            value_reader["str_username"].asString(), value_reader["str_password"].asString(), \
                            value_reader["str_brand"].asString());
        if (!ret) {
            if (!ret) {
                return "{\"ret_status\": \"内容有误,请检查!\"}";
            }
            std::string rtmp_url = m_rtmp[value_reader["str_ip"].asCString()].appPC->getRtmp();
            value["connect_status"] = "True";
            value["video_url"] = rtmp_url;
            out = value.toStyledString();
        } else if (!value_reader["type"].isNull()) {
            value["connect_status"] = "True";
            std::string rtmp_url = appConfig.getStringProperty("srsAddr");
            rtmp_url.append("cam").append(value_reader["id"].asCString());
            value["video_url"] = rtmp_url;
            out = value.toStyledString();
            {
                std::string topic = "VideoToImageMulth";
                Json::Value json_cfg;
                json_cfg["cam_startPublish"] = content;
                std::string msg = json_cfg.toStyledString();
                DBG("msg:" << msg);
                nsqMsgProducer->Publish(topic, (void *) (&msg));
            }
        } else {
            return "{\"ret_status\": \"内容有误,请检查!\"}";
        }
        std::string rtmp_url = m_rtmp[value_reader["str_ip"].asCString()].appPC->getRtmp();
        value["connect_status"] = "True";
        value["video_url"] = rtmp_url;
        out = value.toStyledString();
    } else {
        return "{\"ret_status\": \"内容有误,请检查!\"}";
    }
    return out;
@@ -1357,19 +1373,32 @@
    if (!reader.parse(content, value_reader)) {
        return "{\"ret_status\": \"传输错误,请检查!\"}";
    }
    //TODO
    //调用rtsp流rtsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream
//    std::string rtsp_url = "rtsp://" + username + ":" + passwd + "@" + ip + ":"  + std::to_string(port) + "/h264/ch1/main/av_stream";
    DBG("cam_connect_video_stop begin");
    bool ret = cam_connect_video_stop(value_reader["str_ip"].asString());
    if (!ret) {
        return "{\"ret_status\": \"传输错误,请检查!\"}";
    }
    DBG("cam_connect_video_stop end");
    Json::Value value;
    value["ret_status"] = "ok_ack";
    if (value_reader.isMember("id")) {
        value["ret_status"] = "ok_ack";
        cam_connect_video_stop(value_reader["str_ip"].asString());
        {
            std::string topic = "VideoToImageMulth";
            Json::Value json_cfg;
            json_cfg["cam_stopPublish"] = content;
            std::string msg = json_cfg.toStyledString();
            DBG("msg:" << msg);
            nsqMsgProducer->Publish(topic, (void *) (&msg));
        }
    } else {
        //TODO
        //调用rtsp流rtsp://admin:a1234567@192.168.1.215:554/h264/ch1/main/av_stream
//    std::string rtsp_url = "rtsp://" + username + ":" + passwd + "@" + ip + ":"  + std::to_string(port) + "/h264/ch1/main/av_stream";
        DBG("cam_connect_video_stop begin");
        bool ret = cam_connect_video_stop(value_reader["str_ip"].asString());
        if (!ret) {
            return "{\"ret_status\": \"传输错误,请检查!\"}";
        }
        DBG("cam_connect_video_stop end");
        value["ret_status"] = "ok_ack";
    }
    std::string out = value.toStyledString();
@@ -1746,25 +1775,32 @@
        //#todo nodes have counter?
        //#todo nodeName Automatic generated?
        //#todo devId+num
        // 生成节点id - uuid
        std::string uuid = GetUUId::getUUID();
        // 获取当前机器ip
        unsigned char ip_old[15] = {0};
        std::string str_netIfName = appConfig.getStringProperty("netIfName");
        GetIpAddress(str_netIfName.c_str(), ip_old);
        std::string str_ip((char *) ip_old);
        // 节点名称
        std::string nodeName = uuid.append("@" + str_ip);
        std::string cookie = value["cookie"].asString();
        // 引导节点
        std::string FatherNodeName = value["fatherNodeName"].asString();
        //#todo ClusterID ClusterName
        // 集群id
        std::string clusterID = value["culID"].asString();
        // 为空则生成,否则直接使用
        clusterID = clusterID.size() > 0 ? clusterID : GetUUId::getUUID();
        std::string clusterName = value["culName"].asString();
        std::string devID = value["devID"].asString();
        std::string devName = value["devName"].asString();
        // erlang节点保存路径/opt/erlang/${uuid}
        std::string path = std::string("/opt/erlang/").append(nodeName.substr(0, nodeName.find("@")));
        if (erlangDbTool != nullptr) {
            //gaunbi node
@@ -1776,6 +1812,7 @@
        if (cookie.size() > 0 && (clusterID.size() > 0 || clusterName.size() > 0)) {
//            erlangDbTool = new ErlangTool::ErlangDbTool(path, nodeName, cookie);
            // #todo 进程名 -> get from argv[0]
            string str_tmp = "DataWebserver";
            erlangDbTool = new ErlangTool::ErlangDbTool(path, nodeName, cookie, clusterID, clusterName, str_tmp);
            bool ret = erlangDbTool->initErlang();
@@ -1784,6 +1821,7 @@
            ret = erlangDbTool->startNodeDb(FatherNodeName, devID);
            if (ret) {
                //如果成功则更新配置文件
                appConfig.setStringProperty("erlNode", nodeName);
                appConfig.setStringProperty("erlCookie", cookie);
                appConfig.setStringProperty("erlPath", path);
@@ -1796,6 +1834,7 @@
                runAllApp();
//                sleep(4);
            } else {
                // 否则则置空配置文件
                appConfig.setStringProperty("erlNode", "");
                appConfig.setStringProperty("erlCookie", "");
                appConfig.setStringProperty("erlPath", "");
@@ -1828,6 +1867,7 @@
        ret = erlangDbTool->removeNode();
        // 置空配置文件
        appConfig.setStringProperty("erlNode", "");
        appConfig.setStringProperty("erlCookie", "");
        appConfig.setStringProperty("erlPath", "");
@@ -1945,15 +1985,20 @@
        std::string Uuid = value["uuid"].asString();
        std::string TableType = value["TableType"].asString();
        std::string TableName = value["TableName"].asString();
        //  集群内同步
        int SyncType = atoi(value["SyncType"].asCString());
        std::string BwType = value["BwType"].asString();
        std::string StartTime = value["StartTime"].asString();
        std::string EndTime = value["EndTime"].asString();
        // 是否上传
        std::string UploadFlag = value["IsSync"].asString();
        UploadFlag = UploadFlag.empty() ? "0" : UploadFlag;
        // 底库阈值
        std::string CmpThreshold = value["threshold"].asString();
        CmpThreshold = CmpThreshold.empty() ? "60" : CmpThreshold;
        // 是否启用
        std::string Enabled = value["enabled"].asString();
        Enabled = Enabled.empty() ? "1" : Enabled;
@@ -2023,7 +2068,7 @@
//                                      Enabled);
//        }
        // send message to other CNode
        erlangDbTool->sendMessage();
        std::string str_result = std::string("{\"result\":").append("\"" + std::to_string(ret) + "\"}");
        return str_result;