diff --git a/electron-projects/ucap-webmessenger-electron/src/index.ts b/electron-projects/ucap-webmessenger-electron/src/index.ts index d57f7af8..11102d48 100644 --- a/electron-projects/ucap-webmessenger-electron/src/index.ts +++ b/electron-projects/ucap-webmessenger-electron/src/index.ts @@ -2,6 +2,7 @@ import { app, ipcMain, IpcMainEvent, Tray, Menu, shell } from 'electron'; import path from 'path'; import fse from 'fs-extra'; import semver from 'semver'; +import os from 'os'; import AutoLaunch from 'auto-launch'; @@ -350,6 +351,27 @@ ipcMain.on(UpdaterChannel.Check, (event: IpcMainEvent, ...args: any[]) => { } }); +ipcMain.on( + MessengerChannel.GetNetworkInfo, + (event: IpcMainEvent, ...args: any[]) => { + const interfaces = os.networkInterfaces(); + const addresses: { ip: string; mac: string }[] = []; + + // tslint:disable-next-line: forin + for (const k in interfaces) { + // tslint:disable-next-line: forin + for (const k2 in interfaces[k]) { + const address = interfaces[k][k2]; + if (address.family === 'IPv4' && !address.internal) { + addresses.push({ ip: address.address, mac: address.mac }); + } + } + } + + event.returnValue = addresses; + } +); + ipcMain.on( MessengerChannel.ChangeAutoLaunch, (event: IpcMainEvent, ...args: any[]) => { diff --git a/projects/ucap-webmessenger-app/src/app/resolvers/messenger.resolver.ts b/projects/ucap-webmessenger-app/src/app/resolvers/messenger.resolver.ts index 16cf8472..2dc691a2 100644 --- a/projects/ucap-webmessenger-app/src/app/resolvers/messenger.resolver.ts +++ b/projects/ucap-webmessenger-app/src/app/resolvers/messenger.resolver.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core'; +import { Injectable, Inject } from '@angular/core'; import { Resolve, ActivatedRouteSnapshot, @@ -62,10 +62,12 @@ import { } from '@ucap-webmessenger/api-external'; import { DeviceType } from '@ucap-webmessenger/core'; import { StatusCode } from '@ucap-webmessenger/api'; +import { NativeService, UCAP_NATIVE_SERVICE } from '@ucap-webmessenger/native'; @Injectable() export class AppMessengerResolver implements Resolve { constructor( + @Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService, private store: Store, private sessionStorageService: SessionStorageService, private publicApiService: PublicApiService, @@ -84,7 +86,7 @@ export class AppMessengerResolver implements Resolve { activatedRouteSnapshot: ActivatedRouteSnapshot, routerStateSnapshot: RouterStateSnapshot ): void | Observable | Promise { - return new Promise((resolve, reject) => { + return new Promise(async (resolve, reject) => { let loginRes: LoginResponse; const loginInfo = this.sessionStorageService.get( @@ -94,6 +96,24 @@ export class AppMessengerResolver implements Resolve { KEY_ENVIRONMENTS_INFO ); + let localIp = ''; + let localMac = ''; + + // get network info + await this.nativeService + .getNetworkInfo() + .then(result => { + if (!!result && result.length > 0) { + if (!!result[0].ip) { + localIp = result[0].ip; + } + if (!!result[0].mac) { + localMac = result[0].mac; + } + } + }) + .catch(reason => {}); + this.publicApiService .versionInfo2({ deviceType: environmentsInfo.deviceType, @@ -146,19 +166,18 @@ export class AppMessengerResolver implements Resolve { passwordEncodingType: 1, clientVersion: '', reconnect: false, - ip: 'localhost', - hostName: '', + ip: localIp, + hostName: localMac, ssoMode: SSOMode.AUTH, userSpecificInformation: 'PRO_000482', - productId: environment.productConfig.productId, - productName: environment.productConfig.productName + andId: '', + andPushRefreshYn: '' }) .pipe( catchError(err => { switch (err as ServerErrorCode) { case ServerErrorCode.ERRCD_IDPW: break; - default: break; } diff --git a/projects/ucap-webmessenger-native-browser/src/lib/services/browser-native.service.ts b/projects/ucap-webmessenger-native-browser/src/lib/services/browser-native.service.ts index 7db1b585..c9f25195 100644 --- a/projects/ucap-webmessenger-native-browser/src/lib/services/browser-native.service.ts +++ b/projects/ucap-webmessenger-native-browser/src/lib/services/browser-native.service.ts @@ -66,6 +66,12 @@ export class BrowserNativeService extends NativeService { }); } + getNetworkInfo(): Promise { + return new Promise((resolve, reject) => { + resolve(null); + }); + } + changeAutoLaunch(autoLaunch: boolean): Promise { return new Promise((resolve, reject) => { resolve(true); diff --git a/projects/ucap-webmessenger-native-electron/src/lib/services/electron-native.service.ts b/projects/ucap-webmessenger-native-electron/src/lib/services/electron-native.service.ts index 44e5b733..e39f1b51 100644 --- a/projects/ucap-webmessenger-native-electron/src/lib/services/electron-native.service.ts +++ b/projects/ucap-webmessenger-native-electron/src/lib/services/electron-native.service.ts @@ -72,6 +72,16 @@ export class ElectronNativeService implements NativeService { return this.logout$; } + getNetworkInfo(): Promise { + return new Promise((resolve, reject) => { + try { + resolve(this.ipcRenderer.sendSync(MessengerChannel.GetNetworkInfo)); + } catch (error) { + reject(error); + } + }); + } + changeStatus(): Observable { if (!this.changeStatusSubject) { this.changeStatusSubject = new Subject(); diff --git a/projects/ucap-webmessenger-native-electron/src/lib/types/channel.type.ts b/projects/ucap-webmessenger-native-electron/src/lib/types/channel.type.ts index 6c4101f4..c2443dc5 100644 --- a/projects/ucap-webmessenger-native-electron/src/lib/types/channel.type.ts +++ b/projects/ucap-webmessenger-native-electron/src/lib/types/channel.type.ts @@ -3,7 +3,8 @@ export enum MessengerChannel { ChangeStatus = 'UCAP::messenger::changeStatus', ShowSetting = 'UCAP::messenger::showSetting', ChangeAutoLaunch = 'UCAP::messenger::changeAutoLaunch', - ChangeStartupHideWindow = 'UCAP::messenger::changeStartupHideWindow' + ChangeStartupHideWindow = 'UCAP::messenger::changeStartupHideWindow', + GetNetworkInfo = 'UCAP::messenger::getNetworkInfo' } export enum ChatChannel { diff --git a/projects/ucap-webmessenger-native/src/lib/services/native.service.ts b/projects/ucap-webmessenger-native/src/lib/services/native.service.ts index bb87b94b..2f9b8bf0 100644 --- a/projects/ucap-webmessenger-native/src/lib/services/native.service.ts +++ b/projects/ucap-webmessenger-native/src/lib/services/native.service.ts @@ -14,6 +14,8 @@ export abstract class NativeService { abstract changeStatus(): Observable; abstract showSetting(): Observable; + abstract getNetworkInfo(): Promise; + abstract changeAutoLaunch(autoLaunch: boolean): Promise; abstract changeStartupHideWindow( startupHideWindow: boolean diff --git a/projects/ucap-webmessenger-protocol-authentication/src/lib/protocols/login.ts b/projects/ucap-webmessenger-protocol-authentication/src/lib/protocols/login.ts index 5a678a3b..87587b1c 100644 --- a/projects/ucap-webmessenger-protocol-authentication/src/lib/protocols/login.ts +++ b/projects/ucap-webmessenger-protocol-authentication/src/lib/protocols/login.ts @@ -46,14 +46,10 @@ export interface LoginRequest extends ProtocolRequest { ssoMode: SSOMode; // 14. 사용자고유정보(s) userSpecificInformation: string; - // 15. 제품 ID(s) - productId: string; - // 16. 제품명(s) - productName: string; - // 17. EncData(s) - encriptionData?: string; - // 18. AccessToken(s) - accessToken?: string; + // 15. 안드로이드 ID(s) + andId: string; + // 16. push_ID 갱신여부(s) + andPushRefreshYn: string; } export interface LoginResponse extends ProtocolResponse { @@ -135,25 +131,20 @@ export const encodeLogin: ProtocolEncoder = ( { type: PacketBodyValue.String, value: req.deviceId }, { type: PacketBodyValue.String, value: req.token }, { type: PacketBodyValue.String, value: req.localeCode }, - { type: PacketBodyValue.String, value: req.pushId }, + { type: PacketBodyValue.String, value: req.pushId }, // 6 + { type: PacketBodyValue.String, value: req.companyCode }, { type: PacketBodyValue.Integer, value: req.passwordEncodingType }, { type: PacketBodyValue.String, value: req.clientVersion }, { type: PacketBodyValue.String, value: req.reconnect ? 'Y' : 'N' }, { type: PacketBodyValue.String, value: req.ip }, { type: PacketBodyValue.String, value: req.hostName }, - { type: PacketBodyValue.Integer, value: req.encriptionData ? 2 : 1 }, - { type: PacketBodyValue.String, value: req.userSpecificInformation }, - { type: PacketBodyValue.String, value: req.productId }, - { type: PacketBodyValue.String, value: req.productName } - ); + { type: PacketBodyValue.String, value: '' }, // 13 - if (req.encriptionData) { - bodyList.push( - { type: PacketBodyValue.String, value: req.encriptionData }, - { type: PacketBodyValue.String, value: req.accessToken } - ); - } + { type: PacketBodyValue.String, value: req.userSpecificInformation }, + { type: PacketBodyValue.String, value: req.andId }, + { type: PacketBodyValue.String, value: req.andPushRefreshYn } + ); return bodyList; };