// DHCP enumeration void NmDhcpRefresh(HWND hWnd, SM_HUB *r) { LVB *b; RPC_ENUM_DHCP t; UINT i; // Validate arguments if (hWnd == NULL || r == NULL) { Close(hWnd); return; } Zero(&t, sizeof(t)); StrCpy(t.HubName, sizeof(t.HubName), r->HubName); if (CALL(hWnd, ScEnumDHCP(r->Rpc, &t)) == false) { return; } b = LvInsertStart(); for (i = 0;i < t.NumItem;i++) { RPC_ENUM_DHCP_ITEM *e = &t.Items[i]; wchar_t tmp0[MAX_SIZE]; wchar_t tmp1[MAX_SIZE]; wchar_t tmp2[MAX_SIZE]; wchar_t tmp3[MAX_SIZE]; wchar_t tmp4[MAX_SIZE]; wchar_t tmp5[MAX_SIZE]; char str[MAX_SIZE]; // ID UniToStru(tmp0, e->Id); // Time GetDateTimeStrEx64(tmp1, sizeof(tmp1), SystemToLocal64(e->LeasedTime), NULL); GetDateTimeStrEx64(tmp2, sizeof(tmp2), SystemToLocal64(e->ExpireTime), NULL); MacToStr(str, sizeof(str), e->MacAddress); StrToUni(tmp3, sizeof(tmp3), str); IPToStr32(str, sizeof(str), e->IpAddress); StrToUni(tmp4, sizeof(tmp4), str); StrToUni(tmp5, sizeof(tmp5), e->Hostname); LvInsertAdd(b, ICO_INTERNET, NULL, 6, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5); } LvInsertEnd(b, hWnd, L_TABLE); FreeRpcEnumDhcp(&t); }
// Show the status of the router bool NmStatus(HWND hWnd, SM_SERVER *s, void *param) { LVB *b; RPC_NAT_STATUS t; wchar_t tmp[MAX_SIZE]; SM_HUB *h = (SM_HUB *)param; // Validate arguments if (hWnd == NULL || s == NULL) { return false; } Zero(&t, sizeof(t)); StrCpy(t.HubName, sizeof(t.HubName), h->HubName); if (CALL(hWnd, ScGetSecureNATStatus(s->Rpc, &t)) == false) { return false; } b = LvInsertStart(); StrToUni(tmp, sizeof(tmp), h->HubName); LvInsertAdd(b, ICO_HUB, NULL, 2, _UU("SM_HUB_COLUMN_1"), tmp); UniFormat(tmp, sizeof(tmp), _UU("SM_SNAT_NUM_SESSION"), t.NumTcpSessions); LvInsertAdd(b, ICO_PROTOCOL, NULL, 2, _UU("NM_STATUS_TCP"), tmp); UniFormat(tmp, sizeof(tmp), _UU("SM_SNAT_NUM_SESSION"), t.NumUdpSessions); LvInsertAdd(b, ICO_PROTOCOL, NULL, 2, _UU("NM_STATUS_UDP"), tmp); UniFormat(tmp, sizeof(tmp), _UU("SM_SNAT_NUM_SESSION"), t.NumIcmpSessions); LvInsertAdd(b, ICO_PROTOCOL, NULL, 2, _UU("NM_STATUS_ICMP"), tmp); UniFormat(tmp, sizeof(tmp), _UU("SM_SNAT_NUM_SESSION"), t.NumDnsSessions); LvInsertAdd(b, ICO_PROTOCOL, NULL, 2, _UU("NM_STATUS_DNS"), tmp); UniFormat(tmp, sizeof(tmp), _UU("SM_SNAT_NUM_CLIENT"), t.NumDhcpClients); LvInsertAdd(b, ICO_PROTOCOL_DHCP, NULL, 2, _UU("NM_STATUS_DHCP"), tmp); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_SNAT_IS_KERNEL"), t.IsKernelMode ? _UU("SEC_YES") : _UU("SEC_NO")); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_SNAT_IS_RAW"), t.IsRawIpMode ? _UU("SEC_YES") : _UU("SEC_NO")); LvInsertEnd(b, hWnd, L_STATUS); FreeRpcNatStatus(&t); return true; }
// Update void EmMainRefresh(HWND hWnd, RPC *r) { RPC_ENUM_DEVICE t; // Validate arguments if (hWnd == NULL || r == NULL) { return; } Zero(&t, sizeof(t)); if (CALL(hWnd, EcEnumDevice(r, &t))) { UINT i; LVB *b; b = LvInsertStart(); for (i = 0;i < t.NumItem;i++) { wchar_t tmp[MAX_PATH]; RPC_ENUM_DEVICE_ITEM *dev = &t.Items[i]; StrToUni(tmp, sizeof(tmp), dev->DeviceName); LvInsertAdd(b, dev->Active ? ICO_NIC_ONLINE : ICO_NIC_OFFLINE, NULL, 2, tmp, dev->Active ? _UU("EM_MAIN_OK") : _UU("EM_MAIN_ERROR")); } LvInsertEnd(b, hWnd, L_LIST); FreeRpcEnumDevice(&t); SetShow(hWnd, B_LICENSE, t.IsLicenseSupported); } else { Close(hWnd); } EmMainUpdate(hWnd, r); }
// License dialog update void EmLicenseDlgRefresh(HWND hWnd, RPC *s) { RPC_ENUM_LICENSE_KEY t; RPC_EL_LICENSE_STATUS st; UINT i; wchar_t tmp[MAX_SIZE]; LVB *b; // Validate arguments if (hWnd == NULL || s == NULL) { return; } Zero(&t, sizeof(t)); if (CALL(hWnd, EcEnumLicenseKey(s, &t)) == false) { Close(hWnd); return; } b = LvInsertStart(); for (i = 0;i < t.NumItem;i++) { wchar_t tmp1[32], tmp2[LICENSE_KEYSTR_LEN + 1], tmp3[LICENSE_MAX_PRODUCT_NAME_LEN + 1], *tmp4, tmp5[128], tmp6[LICENSE_LICENSEID_STR_LEN + 1], tmp7[64], tmp8[64], tmp9[64]; RPC_ENUM_LICENSE_KEY_ITEM *e = &t.Items[i]; UniToStru(tmp1, e->Id); StrToUni(tmp2, sizeof(tmp2), e->LicenseKey); StrToUni(tmp3, sizeof(tmp3), e->LicenseName); tmp4 = LiGetLicenseStatusStr(e->Status); if (e->Expires == 0) { UniStrCpy(tmp5, sizeof(tmp5), _UU("SM_LICENSE_NO_EXPIRES")); } else { GetDateStrEx64(tmp5, sizeof(tmp5), e->Expires, NULL); } StrToUni(tmp6, sizeof(tmp6), e->LicenseId); UniToStru(tmp7, e->ProductId); UniFormat(tmp8, sizeof(tmp8), L"%I64u", e->SystemId); UniToStru(tmp9, e->SerialId); LvInsertAdd(b, e->Status == LICENSE_STATUS_OK ? ICO_PASS : ICO_DISCARD, (void *)e->Id, 9, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9); } LvInsertEnd(b, hWnd, L_LIST); FreeRpcEnumLicenseKey(&t); Zero(&st, sizeof(st)); if (CALL(hWnd, EcGetLicenseStatus(s, &st)) == false) { Close(hWnd); return; } b = LvInsertStart(); if (st.Valid == false) { LvInsertAdd(b, 0, NULL, 2, _UU("EM_NO_LICENSE_COLUMN"), _UU("EM_NO_LICENSE")); } else { // Current system ID UniFormat(tmp, sizeof(tmp), L"%I64u", st.SystemId); LvInsertAdd(b, 0, NULL, 2, _UU("SM_LICENSE_STATUS_SYSTEM_ID"), tmp); // Expiration date of the current license product if (st.SystemExpires == 0) { UniStrCpy(tmp, sizeof(tmp), _UU("SM_LICENSE_NO_EXPIRES")); } else { GetDateStrEx64(tmp, sizeof(tmp), st.SystemExpires, NULL); } LvInsertAdd(b, 0, NULL, 2, _UU("SM_LICENSE_STATUS_EXPIRES"), tmp); } LvInsertEnd(b, hWnd, L_STATUS); if (LvNum(hWnd, L_STATUS) >= 1) { LvAutoSize(hWnd, L_STATUS); } EmLicenseDlgUpdate(hWnd, s); }
// Show the information of the router bool NmInfo(HWND hWnd, SM_SERVER *s, void *param) { LVB *b; RPC_NAT_INFO t; wchar_t tmp[MAX_SIZE]; // Validate arguments if (hWnd == NULL || s == NULL) { return false; } Zero(&t, sizeof(t)); if (CALL(hWnd, NcGetInfo(s->Rpc, &t)) == false) { return false; } b = LvInsertStart(); StrToUni(tmp, sizeof(tmp), t.NatProductName); LvInsertAdd(b, ICO_ROUTER, NULL, 2, _UU("NM_INFO_PRODUCT_NAME"), tmp); StrToUni(tmp, sizeof(tmp), t.NatVersionString); LvInsertAdd(b, ICO_INFORMATION, NULL, 2, _UU("NM_INFO_VERSION_STR"), tmp); StrToUni(tmp, sizeof(tmp), t.NatBuildInfoString); LvInsertAdd(b, ICO_INFORMATION, NULL, 2, _UU("NM_INFO_BUILD_INFO"), tmp); StrToUni(tmp, sizeof(tmp), t.NatHostName); LvInsertAdd(b, ICO_TOWER, NULL, 2, _UU("NM_INFO_HOSTNAME"), tmp); // OS StrToUni(tmp, sizeof(tmp), t.OsInfo.OsSystemName); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_SYSTEM_NAME"), tmp); StrToUni(tmp, sizeof(tmp), t.OsInfo.OsProductName); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_PRODUCT_NAME"), tmp); if (t.OsInfo.OsServicePack != 0) { UniFormat(tmp, sizeof(tmp), _UU("SM_OS_SP_TAG"), t.OsInfo.OsServicePack); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_SERVICE_PACK"), tmp); } StrToUni(tmp, sizeof(tmp), t.OsInfo.OsVendorName); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_VENDER_NAME"), tmp); StrToUni(tmp, sizeof(tmp), t.OsInfo.OsVersion); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_VERSION"), tmp); StrToUni(tmp, sizeof(tmp), t.OsInfo.KernelName); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_KERNEL_NAME"), tmp); StrToUni(tmp, sizeof(tmp), t.OsInfo.KernelVersion); LvInsertAdd(b, ICO_MACHINE, NULL, 2, _UU("SM_OS_KERNEL_VERSION"), tmp); // Memory information if (t.MemInfo.TotalMemory != 0) { char vv[128]; ToStr3(vv, sizeof(vv), t.MemInfo.TotalMemory); UniFormat(tmp, sizeof(tmp), _UU("SM_ST_RAM_SIZE_KB"), vv); LvInsertAdd(b, ICO_MEMORY, NULL, 2, _UU("SM_ST_TOTAL_MEMORY"), tmp); ToStr3(vv, sizeof(vv), t.MemInfo.UsedMemory); UniFormat(tmp, sizeof(tmp), _UU("SM_ST_RAM_SIZE_KB"), vv); LvInsertAdd(b, ICO_MEMORY, NULL, 2, _UU("SM_ST_USED_MEMORY"), tmp); ToStr3(vv, sizeof(vv), t.MemInfo.FreeMemory); UniFormat(tmp, sizeof(tmp), _UU("SM_ST_RAM_SIZE_KB"), vv); LvInsertAdd(b, ICO_MEMORY, NULL, 2, _UU("SM_ST_FREE_MEMORY"), tmp); ToStr3(vv, sizeof(vv), t.MemInfo.TotalPhys); UniFormat(tmp, sizeof(tmp), _UU("SM_ST_RAM_SIZE_KB"), vv); LvInsertAdd(b, ICO_MEMORY, NULL, 2, _UU("SM_ST_TOTAL_PHYS"), tmp); ToStr3(vv, sizeof(vv), t.MemInfo.UsedPhys); UniFormat(tmp, sizeof(tmp), _UU("SM_ST_RAM_SIZE_KB"), vv); LvInsertAdd(b, ICO_MEMORY, NULL, 2, _UU("SM_ST_USED_PHYS"), tmp); ToStr3(vv, sizeof(vv), t.MemInfo.FreePhys); UniFormat(tmp, sizeof(tmp), _UU("SM_ST_RAM_SIZE_KB"), vv); LvInsertAdd(b, ICO_MEMORY, NULL, 2, _UU("SM_ST_FREE_PHYS"), tmp); } LvInsertEnd(b, hWnd, L_STATUS); FreeRpcNatInfo(&t); return true; }
// NAT enumeration void NmNatRefresh(HWND hWnd, SM_HUB *r) { LVB *b; RPC_ENUM_NAT t; UINT i; // Validate arguments if (hWnd == NULL || r == NULL) { return; } Zero(&t, sizeof(t)); StrCpy(t.HubName, sizeof(t.HubName), r->HubName); if (CALL(hWnd, ScEnumNAT(r->Rpc, &t)) == false) { Close(hWnd); return; } b = LvInsertStart(); for (i = 0;i < t.NumItem;i++) { RPC_ENUM_NAT_ITEM *e = &t.Items[i]; wchar_t tmp0[MAX_SIZE]; wchar_t *tmp1 = L""; wchar_t tmp2[MAX_SIZE]; wchar_t tmp3[MAX_SIZE]; wchar_t tmp4[MAX_SIZE]; wchar_t tmp5[MAX_SIZE]; wchar_t tmp6[MAX_SIZE]; wchar_t tmp7[MAX_SIZE]; wchar_t tmp8[MAX_SIZE]; wchar_t *tmp9 = L""; char v1[128], v2[128]; // ID UniToStru(tmp0, e->Id); // Protocol switch (e->Protocol) { case NAT_TCP: tmp1 = _UU("NM_NAT_PROTO_TCP"); break; case NAT_UDP: tmp1 = _UU("NM_NAT_PROTO_UDP"); break; case NAT_DNS: tmp1 = _UU("NM_NAT_PROTO_DNS"); break; case NAT_ICMP: tmp1 = _UU("NM_NAT_PROTO_ICMP"); break; } // Source host StrToUni(tmp2, sizeof(tmp2), e->SrcHost); // Source port UniToStru(tmp3, e->SrcPort); // Destination host StrToUni(tmp4, sizeof(tmp4), e->DestHost); // Destination port UniToStru(tmp5, e->DestPort); // Creation date and time of the session GetDateTimeStrEx64(tmp6, sizeof(tmp6), SystemToLocal64(e->CreatedTime), NULL); // Last communication date and time GetDateTimeStrEx64(tmp7, sizeof(tmp7), SystemToLocal64(e->LastCommTime), NULL); // Communication amount ToStr3(v1, sizeof(v1), e->RecvSize); ToStr3(v2, sizeof(v2), e->SendSize); UniFormat(tmp8, sizeof(tmp8), L"%S / %S", v1, v2); // TCP state if (e->Protocol == NAT_TCP) { switch (e->TcpStatus) { case NAT_TCP_CONNECTING: tmp9 = _UU("NAT_TCP_CONNECTING"); break; case NAT_TCP_SEND_RESET: tmp9 = _UU("NAT_TCP_SEND_RESET"); break; case NAT_TCP_CONNECTED: tmp9 = _UU("NAT_TCP_CONNECTED"); break; case NAT_TCP_ESTABLISHED: tmp9 = _UU("NAT_TCP_ESTABLISHED"); break; case NAT_TCP_WAIT_DISCONNECT: tmp9 = _UU("NAT_TCP_WAIT_DISCONNECT"); break; } } LvInsertAdd(b, ICO_PROTOCOL, NULL, 10, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9); } LvInsertEnd(b, hWnd, L_TABLE); FreeRpcEnumNat(&t); }
// Update status void UtSpeedMeterDlgRefreshStatus(HWND hWnd) { char *title; MS_ADAPTER *a; UINT i; // Validate arguments if (hWnd == NULL) { return; } title = selected_adapter; a = MsGetAdapter(title); if (a == NULL) { LbReset(hWnd, L_STATUS); Disable(hWnd, L_STATUS); } else { LVB *b; wchar_t tmp[MAX_SIZE]; wchar_t tmp2[MAX_SIZE]; char str[MAX_SIZE]; b = LvInsertStart(); UniStrCpy(tmp, sizeof(tmp), a->TitleW); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_TITLE"), tmp); StrToUni(tmp, sizeof(tmp), a->Guid); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_GUID"), tmp); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_TYPE"), MsGetAdapterTypeStr(a->Type)); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_TYPE2"), (!a->IsNotEthernetLan ? _UU("SEC_YES") : _UU("SEC_NO"))); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_STATUS"), MsGetAdapterStatusStr(a->Status)); UniToStr3(tmp, sizeof(tmp), a->Mtu); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_MTU"), tmp); UniToStr3(tmp, sizeof(tmp), a->Speed); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_SPEED"), tmp); Zero(str, sizeof(str)); BinToStrEx2(str, sizeof(str), a->Address, a->AddressSize, '-'); StrToUni(tmp, sizeof(tmp), str); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_ADDRESS"), tmp); UniToStr3(tmp, sizeof(tmp), a->RecvBytes); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_RECV_BYTES"), tmp); UniToStr3(tmp, sizeof(tmp), a->RecvPacketsBroadcast); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_RECV_BCASTS"), tmp); UniToStr3(tmp, sizeof(tmp), a->RecvPacketsUnicast); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_RECV_UNICASTS"), tmp); UniToStr3(tmp, sizeof(tmp), a->SendBytes); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_SEND_BYTES"), tmp); UniToStr3(tmp, sizeof(tmp), a->SendPacketsBroadcast); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_SEND_BCASTS"), tmp); UniToStr3(tmp, sizeof(tmp), a->SendPacketsUnicast); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_SEND_UNICASTS"), tmp); for (i = 0;i < a->NumIpAddress;i++) { UniFormat(tmp2, sizeof(tmp2), _UU("UT_SM_ST_IP"), i + 1); IPToUniStr(tmp, sizeof(tmp), &a->IpAddresses[i]); LvInsertAdd(b, 0, NULL, 2, tmp2, tmp); UniFormat(tmp2, sizeof(tmp2), _UU("UT_SM_ST_SUBNET"), i + 1); IPToUniStr(tmp, sizeof(tmp), &a->SubnetMasks[i]); LvInsertAdd(b, 0, NULL, 2, tmp2, tmp); } for (i = 0;i < a->NumGateway;i++) { UniFormat(tmp2, sizeof(tmp2), _UU("UT_SM_ST_GATEWAY"), i + 1); IPToUniStr(tmp, sizeof(tmp), &a->Gateways[i]); LvInsertAdd(b, 0, NULL, 2, tmp2, tmp); } if (a->UseDhcp) { IPToUniStr(tmp, sizeof(tmp), &a->DhcpServer); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_DHCP"), tmp); GetDateTimeStrEx64(tmp, sizeof(tmp), a->DhcpLeaseStart, NULL); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_DHCP_1"), tmp); GetDateTimeStrEx64(tmp, sizeof(tmp), a->DhcpLeaseExpires, NULL); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_DHCP_2"), tmp); } if (a->UseWins) { IPToUniStr(tmp, sizeof(tmp), &a->PrimaryWinsServer); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_WINS_1"), tmp); IPToUniStr(tmp, sizeof(tmp), &a->SecondaryWinsServer); LvInsertAdd(b, 0, NULL, 2, _UU("UT_SM_ST_WINS_2"), tmp); } LvInsertEnd(b, hWnd, L_STATUS); Enable(hWnd, L_STATUS); MsFreeAdapter(a); } }