device matching via mac instead of ip address

This commit is contained in:
Luca Haid
2026-01-26 12:20:52 +01:00
parent 4b206f0696
commit 5ca7fa29c6
4 changed files with 113 additions and 13 deletions
+29 -12
View File
@@ -32,6 +32,9 @@ const RadiusRouterManager = {
<span v-else>{{ routerDevice.username || userItem.username }}</span>
</div>
</div>
<button class="ghost-btn refresh-btn" @click="refreshDevice" :disabled="routerLoading || refreshLoading" title="Daten aktualisieren">
<i class="fa-duotone fa-arrows-rotate" :class="{ 'fa-spin': refreshLoading }"></i>
</button>
</div>
<!-- Router Information Grid -->
@@ -40,7 +43,7 @@ const RadiusRouterManager = {
<tt-info-card icon="fa-code-branch" label="Software Version" :value="routerDevice?.deviceInfo?.softwareVersion" :loading="routerLoading" />
<tt-info-card icon="fa-barcode" label="CWMP Account" :value="routerDevice?.deviceInfo?.serialNumber" :loading="routerLoading" />
<tt-info-card icon="fa-fingerprint" label="ACS ID" :value="routerDevice?.deviceId" :loading="routerLoading" />
<tt-info-card icon="fa-globe" label="Externe IP" :value="routerDevice?.ip" :loading="routerLoading" />
<tt-info-card icon="fa-globe" label="Externe IP" :value="routerDevice?.externalIp" :loading="routerLoading" />
<tt-info-card icon="fa-network-wired" label="Management IP" :value="routerDevice?.managementIp" :loading="routerLoading" />
</div>
@@ -239,7 +242,8 @@ const RadiusRouterManager = {
showEventLogModal: false,
eventLogLoading: false,
eventLogData: null
eventLogData: null,
refreshLoading: false
}),
watch: {
show: {
@@ -265,18 +269,12 @@ const RadiusRouterManager = {
this.speedtestLoading = false;
try {
const { data: radacct } = await axios.get(`${window.TT_CONFIG.BASE_PATH}/Radius/proxyUnsecureHTTPRequestToRadius`, {
params: { action2: 'fetchRadacct', username: this.userItem.username }
const { data: deviceData } = await axios.get(`${window.TT_CONFIG.BASE_PATH}/Radius/genieacsGetDeviceByMac`, {
params: { mac: this.userItem.username }
});
if (radacct?.ip) {
const { data: deviceData } = await axios.get(`${window.TT_CONFIG.BASE_PATH}/Radius/genieacsGetDeviceByIp`, {
params: { ip: radacct.ip }
});
if (deviceData?.success) {
this.routerDevice = deviceData;
}
if (deviceData?.success) {
this.routerDevice = deviceData;
}
} catch (error) {
console.error('Error fetching router:', error);
@@ -284,6 +282,25 @@ const RadiusRouterManager = {
}
this.routerLoading = false;
},
async refreshDevice() {
if (!this.routerDevice?.deviceId) return;
this.refreshLoading = true;
try {
const { data } = await axios.post(`${window.TT_CONFIG.BASE_PATH}/Radius/genieacsRefreshDevice`, {
deviceId: this.routerDevice.deviceId
});
if (data?.success) {
this.routerDevice.deviceInfo = data.deviceInfo;
this.routerDevice.externalIp = data.externalIp;
this.routerDevice.managementIp = data.managementIp;
window.notify('success', 'Daten aktualisiert');
}
} catch (error) {
console.error('Error refreshing device:', error);
window.notify('error', 'Fehler beim Aktualisieren');
}
this.refreshLoading = false;
},
async rebootRouter() {
if (!this.routerDevice || !this.routerDevice.deviceId) return;
if (!confirm('Möchten Sie den Router wirklich neu starten?')) return;