|
@@ -135,6 +135,8 @@ public class iMapServer extends Service {
|
|
|
|
|
|
static final int EVENTTIMELIMITE = 2000;
|
|
|
iMapSverSocket SvrSock;
|
|
|
+ iMapSverSocket_Mix danji_mix = null;
|
|
|
+
|
|
|
int port =10000;
|
|
|
String StrAddr ="";
|
|
|
String IPaddr;
|
|
@@ -203,7 +205,9 @@ public class iMapServer extends Service {
|
|
|
}
|
|
|
|
|
|
/** 신형 단지서버 사용 유무*/
|
|
|
- private boolean mNewDanjiServer = false;
|
|
|
+ //private boolean mNewDanjiServer = false;
|
|
|
+ /** 단지서버 타입 1=1.0, 2 = 2.0, 0 = mix*/
|
|
|
+ private int danjiserverType = 1;
|
|
|
|
|
|
/**
|
|
|
* JEFF, 2019.12.31
|
|
@@ -1862,6 +1866,7 @@ public class iMapServer extends Service {
|
|
|
|
|
|
HDCFTPManager mFTPManager;
|
|
|
boolean bMainServer2dot0 = false;
|
|
|
+ int danjiserverType;
|
|
|
String strRemoteIP = "10.0.1.1";
|
|
|
String strDong = "", strHo = "", strType = "", strTime = "", strFileName = "", strUploadFile = "";
|
|
|
|
|
@@ -1875,7 +1880,7 @@ public class iMapServer extends Service {
|
|
|
strFileName = filename;
|
|
|
strUploadFile = uploadfile;
|
|
|
// bMainServer2dot0 = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
- int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
+ danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
if(danjiserverType == 1)
|
|
|
{
|
|
|
bMainServer2dot0 = false;
|
|
@@ -1909,7 +1914,22 @@ public class iMapServer extends Service {
|
|
|
mFTPManager = new HDCFTPManager();
|
|
|
|
|
|
if (!mFTPManager.isFTPConnected()) {
|
|
|
- if (!mFTPManager.connectFTP(strRemoteIP)) {
|
|
|
+
|
|
|
+ boolean connect = false;
|
|
|
+ if(danjiserverType == 1)
|
|
|
+ {
|
|
|
+ connect = mFTPManager.connectFTP(strRemoteIP);
|
|
|
+ }
|
|
|
+ else if(danjiserverType == 2)
|
|
|
+ {
|
|
|
+ connect = mFTPManager.connectFTP(strRemoteIP);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ connect = mFTPManager.connectFTP(define.NewDanjiServerIP);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!connect) {
|
|
|
Log.w(TAG, "[uploadVisitorPicture.run()] FAIL!! -> connectFTP(...)");
|
|
|
send_visitor_upload_complete_notice(false, strDong, strHo, strType, strTime, strFileName, "null");
|
|
|
return;
|
|
@@ -2928,30 +2948,18 @@ public class iMapServer extends Service {
|
|
|
try {
|
|
|
WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
|
|
|
// mNewDanjiServer = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
- int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
- if(danjiserverType == 1)
|
|
|
- {
|
|
|
- mNewDanjiServer = false;
|
|
|
- }
|
|
|
- else if(danjiserverType == 2)
|
|
|
- {
|
|
|
- mNewDanjiServer = true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- mNewDanjiServer = true;
|
|
|
- }
|
|
|
+ danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
|
|
|
wallpadDeviceSet.closeDB();
|
|
|
} catch (RuntimeException re) {
|
|
|
LogUtil.errorLogInfo("", TAG, re);
|
|
|
- mNewDanjiServer = false;
|
|
|
+ danjiserverType = 1;
|
|
|
}
|
|
|
catch (Exception e) {
|
|
|
Log.e(TAG, "[iMapSverSocket] - GetNewDanjiServer ExceptionError !!!");
|
|
|
//e.printStackTrace();
|
|
|
LogUtil.errorLogInfo("", TAG, e);
|
|
|
- mNewDanjiServer = false;
|
|
|
+ danjiserverType = 1;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -2960,10 +2968,20 @@ public class iMapServer extends Service {
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
// 신형 단지서버 사용유무에 따라 서버소켓을 생성한다.
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
- if(!mNewDanjiServer)
|
|
|
+ if(danjiserverType == 1)
|
|
|
{
|
|
|
svr = new ServerSocket(port);
|
|
|
}
|
|
|
+ else if(danjiserverType == 2)
|
|
|
+ {
|
|
|
+ int svrport = port + 1000;
|
|
|
+ Log.i(TAG, "============================================");
|
|
|
+ Log.i(TAG, "Use SSL Server Start !!! (port:" + svrport + ")");
|
|
|
+ Log.i(TAG, "============================================");
|
|
|
+
|
|
|
+ SSLServer sslServerSocket = new SSLServer(svrport, getResources().openRawResource(R.raw.wallpad_key), "icontrolswallpad1845!");
|
|
|
+ sslsvr = sslServerSocket.getServerSocket();
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
int svrport = port + 1000;
|
|
@@ -2973,6 +2991,9 @@ public class iMapServer extends Service {
|
|
|
|
|
|
SSLServer sslServerSocket = new SSLServer(svrport, getResources().openRawResource(R.raw.wallpad_key), "icontrolswallpad1845!");
|
|
|
sslsvr = sslServerSocket.getServerSocket();
|
|
|
+
|
|
|
+ danji_mix =new iMapSverSocket_Mix();
|
|
|
+ danji_mix.start();
|
|
|
}
|
|
|
}
|
|
|
public void run()
|
|
@@ -2984,7 +3005,7 @@ public class iMapServer extends Service {
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
// 신형 단지서버 사용유무에 각각의 socket 에서 accept 를 한다.
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
- if(!mNewDanjiServer)
|
|
|
+ if(danjiserverType == 1)
|
|
|
{
|
|
|
sock = svr.accept();
|
|
|
}
|
|
@@ -3019,6 +3040,90 @@ public class iMapServer extends Service {
|
|
|
sslsvr.close();
|
|
|
sslsvr = null;
|
|
|
}
|
|
|
+ }
|
|
|
+ catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 메인 서버 소켓 클래스
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 무조건 Mix일 경우만 사용
|
|
|
+ */
|
|
|
+ public class iMapSverSocket_Mix extends Thread
|
|
|
+ {
|
|
|
+ ServerSocket svr;
|
|
|
+ boolean receiveSocketRun = true;
|
|
|
+
|
|
|
+ public iMapSverSocket_Mix() throws IOException
|
|
|
+ {
|
|
|
+ /////////////////////////////////////////////////////////////////////
|
|
|
+ // 신형 단지서버 사용 유무를 가져온다.
|
|
|
+ /////////////////////////////////////////////////////////////////////
|
|
|
+ try {
|
|
|
+ WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
|
|
|
+// mNewDanjiServer = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
+ danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
+
|
|
|
+ wallpadDeviceSet.closeDB();
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[iMapSverSocket] - GetNewDanjiServer ExceptionError !!!");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+
|
|
|
+ //////////////////////////////////////////////////
|
|
|
+
|
|
|
+ /////////////////////////////////////////////////////////////////////
|
|
|
+ // 신형 단지서버 사용유무에 따라 서버소켓을 생성한다.
|
|
|
+ /////////////////////////////////////////////////////////////////////
|
|
|
+ if(danjiserverType == 0)
|
|
|
+ {
|
|
|
+ svr = new ServerSocket(port);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public void run()
|
|
|
+ {
|
|
|
+ while(receiveSocketRun)
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ Socket sock = null;
|
|
|
+ /////////////////////////////////////////////////////////////////////
|
|
|
+ // 신형 단지서버 사용유무에 각각의 socket 에서 accept 를 한다.
|
|
|
+ /////////////////////////////////////////////////////////////////////
|
|
|
+ sock = svr.accept();
|
|
|
+ iMapSverSocketThread_Mix ProciMap = new iMapSverSocketThread_Mix(sock);
|
|
|
+ ProciMap.start();
|
|
|
+ } catch (IOException e) {
|
|
|
+
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void destoryThread()
|
|
|
+ {
|
|
|
+ receiveSocketRun = false;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ if( svr != null )
|
|
|
+ {
|
|
|
+ svr.close();
|
|
|
+ svr = null;
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
catch (RuntimeException re) {
|
|
@@ -3061,7 +3166,7 @@ public class iMapServer extends Service {
|
|
|
// 사용중일 경우 ready 를 사용하지 않는 수신부로 수행한다.
|
|
|
// (사유:암호화를 사용할 경우 ready 최초 동작되지않음)
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
- if (!mNewDanjiServer) {
|
|
|
+ if (danjiserverType == 1) {
|
|
|
while (System.currentTimeMillis() < lSocketConnectionPeriod) {
|
|
|
try {
|
|
|
if (MsgReader.ready()) {
|
|
@@ -3509,6 +3614,445 @@ public class iMapServer extends Service {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public class iMapSverSocketThread_Mix extends Thread {
|
|
|
+ private final Socket iMAPSock;
|
|
|
+ String strRcvMSG;
|
|
|
+ WallPadiMAPUpgrade upgradeProc;
|
|
|
+ Document doc;
|
|
|
+
|
|
|
+ public iMapSverSocketThread_Mix(Socket sock) {
|
|
|
+ iMAPSock = sock;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void run() {
|
|
|
+ try {
|
|
|
+ Log.i(TAG, "[iMAPSvrProc().run()] Received something!!");
|
|
|
+ InputStream InStm = iMAPSock.getInputStream();
|
|
|
+ iMAPSock.setSoLinger(true, 3000);
|
|
|
+ BufferedReader MsgReader = new BufferedReader(new InputStreamReader(InStm, "euc-kr"));
|
|
|
+ strRcvMSG = "";
|
|
|
+ String InBuffer;
|
|
|
+ int i = 0;
|
|
|
+ boolean bRcvOK = false;
|
|
|
+ lSocketConnectionPeriod = System.currentTimeMillis() + TIMEOUT_iMAP_WAIT; // 타임아웃시간을 설정한다.
|
|
|
+
|
|
|
+ /////////////////////////////////////////////////////////////////////
|
|
|
+ // 신형단지서버 미사용중일 경우 기존 코드로,
|
|
|
+ // 사용중일 경우 ready 를 사용하지 않는 수신부로 수행한다.
|
|
|
+ // (사유:암호화를 사용할 경우 ready 최초 동작되지않음)
|
|
|
+ /////////////////////////////////////////////////////////////////////
|
|
|
+ while (System.currentTimeMillis() < lSocketConnectionPeriod) {
|
|
|
+ try {
|
|
|
+ if (MsgReader.ready()) {
|
|
|
+ try {
|
|
|
+ char[] ReadData = new char[SOCKET_BUFFER_SIZE_READ * 1024];
|
|
|
+ InBuffer = "";
|
|
|
+ while (MsgReader.ready()) {
|
|
|
+ long charCnt = MsgReader.read(ReadData);
|
|
|
+ InBuffer += new String(ReadData, 0, (int)charCnt);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (InBuffer != null) strRcvMSG += InBuffer;
|
|
|
+
|
|
|
+ if (0 < InBuffer.indexOf("</imap>")) {
|
|
|
+ bRcvOK = true;
|
|
|
+ Log.i(TAG, "[iMAPSvrProc().run()] Received DONE!!");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] iMAPSvrProc.run() ===== 1 =====");
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Thread.sleep(100);
|
|
|
+ }
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ iMAPSock.close();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ Log.e(TAG, "[Exception] iMAPSvrProc.run() ===== 2 =====");
|
|
|
+ iMAPSock.close();
|
|
|
+ //e.printStackTrace();
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!bRcvOK) {
|
|
|
+ Log.i(TAG, "[iMAPSvrProc().run()] iMAP message is unacceptable!!");
|
|
|
+ Log.i(TAG, "[iMAPSvrProc().run()] ========== START ==========");
|
|
|
+ Log.i(TAG, strRcvMSG);
|
|
|
+ Log.i(TAG, "[iMAPSvrProc().run()] ========== END ==========");
|
|
|
+ iMAPSock.close();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ strRcvMSG = strRcvMSG.substring(strRcvMSG.indexOf("<"));
|
|
|
+ imapsvrlog( "Socket read end accept </imap>\n"+strRcvMSG);
|
|
|
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
|
|
+ DocumentBuilder builder = factory.newDocumentBuilder();
|
|
|
+ InputStream istream = new ByteArrayInputStream(strRcvMSG.getBytes());
|
|
|
+ doc = builder.parse(istream);
|
|
|
+ Element elelist = doc.getDocumentElement();
|
|
|
+ NodeList items = elelist.getElementsByTagName("service");
|
|
|
+ Node item = items.item(0);
|
|
|
+ NamedNodeMap attrs = item.getAttributes();
|
|
|
+ String retXML="";
|
|
|
+ for (int j=0; j< attrs.getLength(); j++) {
|
|
|
+ Node attr = attrs.item(j);
|
|
|
+ String cmd;
|
|
|
+ if (attr.getNodeName().equalsIgnoreCase("type")) {
|
|
|
+ cmd = attr.getNodeValue();
|
|
|
+
|
|
|
+ if (cmd.equalsIgnoreCase("notice")) {
|
|
|
+ iMAPSock.close();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (attr.getNodeName().equalsIgnoreCase("name")) {
|
|
|
+ cmd = attr.getNodeValue();
|
|
|
+
|
|
|
+ if (cmd.equalsIgnoreCase("event_notify")) {
|
|
|
+ retXML = ProcEventNotify(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("elevator_move_info")) {
|
|
|
+ ProcElevatorinfo(elelist);
|
|
|
+ retXML = null;
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("check_epics_upload")) {
|
|
|
+ retXML = ProcCheckEpiceUpload(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("update_news")) {
|
|
|
+ retXML = ProcUpdateNews(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("update_weather")) {
|
|
|
+ retXML = ProcUpdateWeather(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("schedule_inquiry")) {
|
|
|
+ retXML = ProcSchduleInquiry(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("schedule_renew")) {
|
|
|
+ retXML = ProcSchduleRenew(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("schdule")) {
|
|
|
+ String SvcType="";
|
|
|
+ int k;
|
|
|
+ for (k = j + 1; k < attrs.getLength(); k++) {
|
|
|
+ Node attr1 = attrs.item(k);
|
|
|
+ SvcType = attr1.getNodeName();
|
|
|
+ if (SvcType.equalsIgnoreCase("shc_type")) {
|
|
|
+ SvcType = attr1.getNodeValue();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ retXML = ProcUpdateSchedule(elelist,SvcType);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("device_reset")) {
|
|
|
+ retXML = ProcDeviceReset(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("notify_parcel_event")) {
|
|
|
+ retXML = ProcNotifyparcel(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("notify_post_info")) {
|
|
|
+ // 스마트우편함 연동 여부
|
|
|
+ WallpadDeviceSet DevSet = new WallpadDeviceSet(getApplicationContext());
|
|
|
+ boolean bSmartPostUsage = DevSet.Get_SmartPostUse();
|
|
|
+ DevSet.closeDB();
|
|
|
+ Log.d(TAG, "[iMapSverSocketThread.run()] bSmartPostUsage [" + bSmartPostUsage + "]");
|
|
|
+ if (bSmartPostUsage) retXML = ProcNotiPostInfo(doc); // 스마트우편함
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("get_security_mode")) {
|
|
|
+ String Dong = null;
|
|
|
+ String Ho = null;
|
|
|
+
|
|
|
+ WallpadStatusData statusDB = new WallpadStatusData(getApplicationContext());
|
|
|
+ String result;
|
|
|
+ String modeStr = null;
|
|
|
+ int status = statusDB.GetAlarmStatus();
|
|
|
+ if ((status == WallpadStatusData.ALARM_NONE) || (status == WallpadStatusData.GUARD_IN) || (status == WallpadStatusData.GUARD_OUT) || (status == WallpadStatusData.GUARD_OUT_WAIT)) {
|
|
|
+ if (status == WallpadStatusData.ALARM_NONE) modeStr = "normal";
|
|
|
+ else if (status == WallpadStatusData.GUARD_IN) modeStr = "occupied";
|
|
|
+ else if (status == WallpadStatusData.GUARD_OUT) modeStr = "unoccupied";
|
|
|
+ else if (status == WallpadStatusData.GUARD_OUT_WAIT) modeStr = "waitunoccupied";
|
|
|
+
|
|
|
+ result = "ok";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ modeStr = "null";
|
|
|
+ result = "fail";
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ NodeList GSM_items = elelist.getElementsByTagName("home_info");
|
|
|
+ Node GSM_item = GSM_items.item(0);
|
|
|
+ NamedNodeMap GSM_attrsParam = GSM_item.getAttributes();
|
|
|
+
|
|
|
+ for (int k = 0; k < GSM_attrsParam.getLength(); k++) {
|
|
|
+ Node GSM_attr = GSM_attrsParam.item(k);
|
|
|
+ if (GSM_attr.getNodeName().equalsIgnoreCase("dong")) Dong = trimquotation(GSM_attr.getNodeValue());
|
|
|
+ else if (GSM_attr.getNodeName().equalsIgnoreCase("ho")) Ho = trimquotation(GSM_attr.getNodeValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ WallpadStatusData DBMGR = null;
|
|
|
+ DBMGR = new WallpadStatusData(getApplicationContext());
|
|
|
+ AddressSet addc = DBMGR.getAddressMGR(); //DB에서 동호 정보 받아옴
|
|
|
+ DBMGR.closeDB();
|
|
|
+
|
|
|
+ if ((Dong.equalsIgnoreCase(addc.Dong) == false) || (Ho.equalsIgnoreCase(addc.Ho) == false)) {
|
|
|
+ result = "fail";
|
|
|
+ }
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ result = "fail";
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ result = "fail";
|
|
|
+ }
|
|
|
+
|
|
|
+ retXML = XMLHeader +
|
|
|
+ " <service type=\"reply\" name=\"get_security_mode\" result=\""+result+"\">\r\n"+
|
|
|
+ " <home_info dong=\""+AddrDong+"\" ho=\""+AddrHo+"\" mode=\""+modeStr+"\"/>\r\n"+
|
|
|
+ " </service>\r\n"+
|
|
|
+ "</imap>\r\n";
|
|
|
+
|
|
|
+ statusDB.closeDB();
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("set_setup_info")) {
|
|
|
+ retXML = ProcSetsetup(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("get_setup_info")) {
|
|
|
+ retXML = ProcGetsetup(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("check_lobby_passwd")) {
|
|
|
+ retXML = CheckPassword(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("device_live_check")) {
|
|
|
+ retXML = ProcDeviceLiveCheck();
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("pairing_hdev_sync_alarm")) {
|
|
|
+ retXML = ProcPairingHdevSyncAlarm(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("pairing_hdev_sync_security")) {
|
|
|
+ retXML = ProcPairingHdevSyncSecurity(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("notify_car_event")) {
|
|
|
+ retXML = ProcParkInformation(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("notify_smartkey_event")) {
|
|
|
+ retXML = ProcSmartKeyEvent(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("notify_parkinfo_cham_upis")) {
|
|
|
+ retXML = ProcParkInformation_cham_upis(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_auscultate")) {
|
|
|
+ retXML = ProcauscultateReq(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("upgrade")) {
|
|
|
+ imapsvrlog( "Enter Upgrade");
|
|
|
+ procUpgrade();
|
|
|
+ retXML = null;
|
|
|
+ }
|
|
|
+ else if (cmd.equals("check_sip_activation")) {
|
|
|
+ String sip_result = "fail";
|
|
|
+ ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
|
|
|
+ List<ActivityManager.RunningServiceInfo> rsi = manager.getRunningServices(50);
|
|
|
+
|
|
|
+ // Jeff added below codes for call app (2018.01.25)
|
|
|
+ String strSIPPackageName = "kr.co.icontrols.callengine.sip.CeresSIPService";
|
|
|
+
|
|
|
+ for (int k = 0; k < rsi.size(); k++) {
|
|
|
+ ActivityManager.RunningServiceInfo rsInfo = rsi.get(k);
|
|
|
+ if (rsInfo.service.getClassName().equals(strSIPPackageName)) {
|
|
|
+ sip_result = "ok";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ retXML = XMLHeader + "<service type=\"reply\" name=\"check_sip_activation\" result=\"" + sip_result + "\">\r\n <message>\"null\"</message>\r\n</service>\r\n</imap>\r\n";
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_get_home_devices")) {
|
|
|
+ retXML = iCMDProcDevList(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_access_gas")) {
|
|
|
+ retXML = iCMDProcGASControl(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_access_smartlight")) {
|
|
|
+ retXML = iCMDProcSDPSmartLightControl(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_access_livinglight")) {
|
|
|
+ if (ModelType == MODEL_TYPE.IHN_1020GL) {
|
|
|
+ retXML = iCMDProc_I_LightControl(doc);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ retXML = iCMDProcLivingLightControl(doc);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_access_electric")) {
|
|
|
+ if (ModelType == Version.MODEL_TYPE.IHN_D101 || ModelType == Version.MODEL_TYPE.IHN_D101_I
|
|
|
+ || ModelType == Version.MODEL_TYPE.IHN_D101K || ModelType == Version.MODEL_TYPE.IHN_D101K_I) {
|
|
|
+ retXML = iCMDProcSDPConcentControl(doc);
|
|
|
+ }
|
|
|
+ else if (ModelType == MODEL_TYPE.IHN_1020GL) {
|
|
|
+ retXML = iCMDProcEnergyMeterConcentControl(doc);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ retXML = iCMDProcMultiSWControl(doc);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_access_doorlock")) {
|
|
|
+ retXML = iCMDProcDoorlockControl(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_access_temper")) {
|
|
|
+ retXML = iCMDProcTemperControl(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_access_mode")) {
|
|
|
+ retXML = iCMDProcModeControl(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_access_ventil")) {
|
|
|
+ retXML = iCMDProcVentilControl(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_access_curtain")) {
|
|
|
+ retXML = iCMDProcCurtainControl(doc);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_access_light")) {
|
|
|
+ if (ModelType == Version.MODEL_TYPE.IHN_1020GL) {
|
|
|
+ retXML = iCMDProcEnergyMeterLightControl(doc);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ retXML = iCMDProcLightControl(doc);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_access_light_batch_control")) {
|
|
|
+ retXML = iCMDProcLightBatchControl(elelist);
|
|
|
+ }
|
|
|
+ //모바일 사용자 인증 관련 메시지
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_register_new_device_auth_number")) {
|
|
|
+ ProcMobileDevice_AuthNumber(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_register_new_device")) {
|
|
|
+ retXML = ProcMobileDevice_ADD_Finish(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("remote_delete_device")) {
|
|
|
+ ProcMobileDevice_Delete(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("get_accesskey_info")) {
|
|
|
+ retXML = ProcGetSmartKeyInfo(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("get_app_version_info")) {
|
|
|
+ retXML = ProcGetAppVersionInfo();
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("igate_init_info")) {
|
|
|
+ retXML = ProcIgateInitInfo(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("elec_car_charge_event")) {
|
|
|
+ retXML = ProcElecCarChargeEventInfo(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("energy_target_info_alarm")) {
|
|
|
+ retXML = ProcEnergyTargetInfoAlarm(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("check_call_option")) {
|
|
|
+ retXML = ProcCheckCallOption();
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("chat_sequence")) {
|
|
|
+ retXML = ProcChatSequence(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("chat_message")) {
|
|
|
+ retXML = ProcChatMessage(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("evacuation_ladder_open")) {
|
|
|
+ retXML = ProcEvacuationLadderOpen(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("smart_light_info")) {
|
|
|
+ retXML = SmartLightDetailInfo(elelist);
|
|
|
+ }
|
|
|
+ else if (cmd.equalsIgnoreCase("get_knx_device_info")) {
|
|
|
+ retXML = KNXDeviceDetailInfo(elelist);
|
|
|
+ }
|
|
|
+ else if( cmd.equalsIgnoreCase("set_server_version")) {
|
|
|
+ retXML = ProcSetServerChange(elelist);
|
|
|
+ }
|
|
|
+ else if( cmd.equalsIgnoreCase("remote_access_onepass")) {
|
|
|
+ retXML = iCMDProcOnePass(elelist);
|
|
|
+ }
|
|
|
+ else if( cmd.equalsIgnoreCase("remote_entire_access_light_control")) {
|
|
|
+ if (Version.getModelType() == Version.MODEL_TYPE.IHN_D101 || Version.getModelType() == Version.MODEL_TYPE.IHN_D101_I
|
|
|
+ || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K || Version.getModelType() == Version.MODEL_TYPE.IHN_D101K_I) {
|
|
|
+ retXML = iCMDProcEntireLightControl(doc); // 전체 조명 제어
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (retXML != null) {
|
|
|
+ imapsvrlog( "Socket write line\n"+retXML+"\r\n SO :"+iMAPSock.getSoLinger());
|
|
|
+ DataOutputStream outstream = new DataOutputStream(iMAPSock.getOutputStream());
|
|
|
+ byte[] outBF = retXML.getBytes("euc-kr");
|
|
|
+ outstream.write(outBF);
|
|
|
+ outstream.flush();
|
|
|
+
|
|
|
+ try { Thread.sleep(3000);}
|
|
|
+ catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e){
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ iMAPSock.close();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ try {iMAPSock.close();}
|
|
|
+ catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e){
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception e) {
|
|
|
+ try {iMAPSock.close();}
|
|
|
+ catch (RuntimeException re) {
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ }
|
|
|
+ catch (Exception E){
|
|
|
+ LogUtil.errorLogInfo("", TAG, E);
|
|
|
+ }
|
|
|
+ LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Upgrade 설정 상태를 확인 하여 Upgrade 진입 여부 결정
|
|
|
+ private void procUpgrade() {
|
|
|
+ imapsvrlog( "upgrade Start \n"+" "+WallPadiMAPUpgrade.active);
|
|
|
+ WallpadStatusData sdb = new WallpadStatusData(getApplicationContext());
|
|
|
+ String[] getstate = sdb.GetSystemUpdateStatus();
|
|
|
+ sdb.closeDB();
|
|
|
+
|
|
|
+ Log.i(TAG, "WallPadiMAPUpgrade.active [" + WallPadiMAPUpgrade.active + "]");
|
|
|
+ for (int i = 0; i < getstate.length; i++) {
|
|
|
+ Log.i(TAG, "getstate[" + i + "] = " + getstate[i]);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (WallPadiMAPUpgrade.active == true || getstate[0].equalsIgnoreCase("SET")) return;
|
|
|
+
|
|
|
+ upgradeProc = new WallPadiMAPUpgrade(getApplicationContext(), doc, iMAPSock);
|
|
|
+
|
|
|
+ if (WallPadiMAPUpgrade.active == true) upgradeProc.StartUpgrade();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// " 제거
|
|
|
private String trimquotation(String sen) {
|
|
|
sen = sen.replaceAll("\"", "");
|
|
@@ -11275,38 +11819,27 @@ public class iMapServer extends Service {
|
|
|
try {
|
|
|
WallpadDeviceSet wallpadDeviceSet = new WallpadDeviceSet(getApplicationContext());
|
|
|
// mNewDanjiServer = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
- int danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
- if(danjiserverType == 1)
|
|
|
- {
|
|
|
- mNewDanjiServer = false;
|
|
|
- }
|
|
|
- else if(danjiserverType == 2)
|
|
|
- {
|
|
|
- mNewDanjiServer = true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- mNewDanjiServer = true;
|
|
|
- }
|
|
|
+ danjiserverType = wallpadDeviceSet.GetNewDanjiServer();
|
|
|
+
|
|
|
|
|
|
wallpadDeviceSet.closeDB();
|
|
|
} catch (RuntimeException re) {
|
|
|
LogUtil.errorLogInfo("", TAG, re);
|
|
|
- mNewDanjiServer = false;
|
|
|
+ danjiserverType = 1;
|
|
|
}
|
|
|
catch (Exception e) {
|
|
|
Log.e(TAG, "[iMapSverSocket] - GetNewDanjiServer ExceptionError !!!");
|
|
|
//e.printStackTrace();
|
|
|
LogUtil.errorLogInfo("", TAG, e);
|
|
|
- mNewDanjiServer = false;
|
|
|
+ danjiserverType = 1;
|
|
|
}
|
|
|
|
|
|
- Log.d(TAG, " iMapSverReload - mNewDanjiServer :" + mNewDanjiServer );
|
|
|
+ Log.d(TAG, " iMapSverReload - mNewDanjiServer :" + danjiserverType );
|
|
|
|
|
|
// 단지서버2.0은 로컬 단지과리서버 하나로 운영이 됨
|
|
|
// 신형 단지서버로 설정이 되어 있으면 관리PC IP를 10.0.1.1로 변경 해주어야 함
|
|
|
// 관리 PC IP도 변경하도록 한다.
|
|
|
- if (mNewDanjiServer == true) {
|
|
|
+ if (danjiserverType != 0) {
|
|
|
WallpadStatusData wallpadStatusData = new WallpadStatusData(getApplicationContext());
|
|
|
wallpadStatusData.SetManagePC(Common.DEFAULT_SERVER_IP, Common.DEFAULT_SERVER_PORT);
|
|
|
wallpadStatusData.closeDB();
|
|
@@ -11316,7 +11849,7 @@ public class iMapServer extends Service {
|
|
|
wallpadStatusData.SetManagePC(Common.DEFAULT_MANAGER_PC_IP, Common.DEFAULT_MANAGER_PC_PORT);
|
|
|
wallpadStatusData.closeDB();
|
|
|
}
|
|
|
- Log.d(TAG, "$$$$$$$$$$$$$$ mNewDanjiServer : " + mNewDanjiServer);
|
|
|
+ Log.d(TAG, "$$$$$$$$$$$$$$ mNewDanjiServer : " + danjiserverType);
|
|
|
}
|
|
|
|
|
|
public void run() {
|
|
@@ -11329,6 +11862,11 @@ public class iMapServer extends Service {
|
|
|
LogUtil.errorLogInfo("", TAG, e);
|
|
|
}
|
|
|
|
|
|
+ if(danji_mix!=null)
|
|
|
+ {
|
|
|
+ danji_mix.destoryThread();
|
|
|
+ }
|
|
|
+
|
|
|
SvrSock.destoryThread();
|
|
|
|
|
|
|
|
@@ -11343,6 +11881,16 @@ public class iMapServer extends Service {
|
|
|
{
|
|
|
Log.d(TAG, " is Live Socket Reload i = : " + i );
|
|
|
}
|
|
|
+
|
|
|
+ if(danji_mix!=null)
|
|
|
+ {
|
|
|
+ if( danji_mix.isAlive() == false )
|
|
|
+ {
|
|
|
+ Log.d(TAG, " Mix Receive Socket Reload i = : " + i );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
try{ Thread.sleep(100); }
|
|
|
catch (RuntimeException re) {
|
|
|
LogUtil.errorLogInfo("", TAG, re);
|
|
@@ -11351,6 +11899,7 @@ public class iMapServer extends Service {
|
|
|
LogUtil.errorLogInfo("", TAG, e);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
SvrSock = new iMapSverSocket();
|
|
|
SvrSock.start();
|
|
|
|