added new ip filter
This commit is contained in:
+243
-244
@@ -29,75 +29,71 @@ function validateData(strasse, plz, stadt, info) {
|
|||||||
|
|
||||||
Vue.component('radius-ont-parser', {
|
Vue.component('radius-ont-parser', {
|
||||||
template: `
|
template: `
|
||||||
<div class="container mt-4">
|
<div class="container mt-4">
|
||||||
<!-- Step 1: File Upload -->
|
<div v-if="step === 1" class="card">
|
||||||
<div v-if="step === 1" class="card">
|
<div class="card-body">
|
||||||
<div class="card-body">
|
<h4 class="card-title">Schritt 1: Excel (XLSX) Upload</h4>
|
||||||
<h4 class="card-title">Schritt 1: Excel (XLSX) Upload</h4>
|
<input type="file" class="form-control" @change="handleFileUpload" accept=".xlsx">
|
||||||
<input type="file" class="form-control" @change="handleFileUpload" accept=".xlsx">
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Step 2: Column Mapping -->
|
|
||||||
<div v-if="step === 2" class="card mt-4">
|
|
||||||
<div class="card-body">
|
|
||||||
<h4 class="card-title">Schritt 2: Spaltenzuordnung</h4>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-6" v-for="(field, index) in requiredFields" :key="index">
|
|
||||||
<div class="form-group">
|
|
||||||
<label>{{ field.label }}</label>
|
|
||||||
<select class="form-control" v-model="selectedColumns[field.key]">
|
|
||||||
<option v-for="header in headers" :value="header">{{ header }}</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<button class="btn btn-primary mt-3" @click="startProcessing">Start Processing</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Step 3: Result Download -->
|
|
||||||
<div v-if="step === 3" class="card mt-4">
|
|
||||||
<div class="card-body">
|
|
||||||
<h4 class="card-title">Schritt 3: Ergebnisse</h4>
|
|
||||||
<tt-button icon="fas fa-download" text="Neue Excel herunterladen" additional-class="btn-primary" @click="downloadResults"/>
|
|
||||||
|
|
||||||
<table class="table mt-4">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<template v-for="header in requiredFields">
|
|
||||||
<th>{{ header.label }}</th>
|
|
||||||
</template>
|
|
||||||
<th>ONT SN</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr v-for="(row, index) in processedData" :key="index">
|
|
||||||
<td>{{ row[selectedColumns.kundennummer] }}</td>
|
|
||||||
<td>{{ row[selectedColumns.anschlussstrasse] }}</td>
|
|
||||||
<td>{{ row[selectedColumns.anschlussplz] }}</td>
|
|
||||||
<td>{{ row[selectedColumns.anschlusscity] }}</td>
|
|
||||||
<td>{{ row.ont_sn }}</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Loading Screen -->
|
|
||||||
<div v-if="loading" class="loading-overlay mt-4">
|
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar progress-bar-striped progress-bar-animated"
|
|
||||||
:style="{ width: progress + '%' }">
|
|
||||||
{{ Math.round(progress) }}%
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="text-center mt-2">Processing {{ currentRow + 1 }} of {{ totalRows }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div v-if="step === 2" class="card mt-4">
|
||||||
|
<div class="card-body">
|
||||||
|
<h4 class="card-title">Schritt 2: Spaltenzuordnung</h4>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6" v-for="(field, index) in requiredFields" :key="index">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>{{ field.label }}</label>
|
||||||
|
<select class="form-control" v-model="selectedColumns[field.key]">
|
||||||
|
<option v-for="header in headers" :value="header">{{ header }}</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-primary mt-3" @click="startProcessing">Start Processing</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div v-if="step === 3" class="card mt-4">
|
||||||
|
<div class="card-body">
|
||||||
|
<h4 class="card-title">Schritt 3: Ergebnisse</h4>
|
||||||
|
<tt-button icon="fas fa-download" text="Neue Excel herunterladen" additional-class="btn-primary" @click="downloadResults"/>
|
||||||
|
|
||||||
|
<table class="table mt-4">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<template v-for="header in requiredFields">
|
||||||
|
<th>{{ header.label }}</th>
|
||||||
|
</template>
|
||||||
|
<th>ONT SN</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr v-for="(row, index) in processedData" :key="index">
|
||||||
|
<td>{{ row[selectedColumns.kundennummer] }}</td>
|
||||||
|
<td>{{ row[selectedColumns.anschlussstrasse] }}</td>
|
||||||
|
<td>{{ row[selectedColumns.anschlussplz] }}</td>
|
||||||
|
<td>{{ row[selectedColumns.anschlusscity] }}</td>
|
||||||
|
<td>{{ row.ont_sn }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="loading" class="loading-overlay mt-4">
|
||||||
|
<div class="progress">
|
||||||
|
<div class="progress-bar progress-bar-striped progress-bar-animated"
|
||||||
|
:style="{ width: progress + '%' }">
|
||||||
|
{{ Math.round(progress) }}%
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="text-center mt-2">Processing {{ currentRow + 1 }} of {{ totalRows }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
`,
|
`,
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
@@ -207,55 +203,55 @@ Vue.component('radius-ont-parser', {
|
|||||||
const processedRows = [];
|
const processedRows = [];
|
||||||
|
|
||||||
mainLoop:
|
mainLoop:
|
||||||
for (let i = 0; i < this.parsedData.length; i++) {
|
for (let i = 0; i < this.parsedData.length; i++) {
|
||||||
this.currentRow = i;
|
this.currentRow = i;
|
||||||
this.progress = ((i + 1) / this.parsedData.length) * 100;
|
this.progress = ((i + 1) / this.parsedData.length) * 100;
|
||||||
|
|
||||||
// Simulate processing
|
// Simulate processing
|
||||||
await this.sleep(100);
|
await this.sleep(100);
|
||||||
|
|
||||||
// Process row here
|
// Process row here
|
||||||
const row = this.parsedData[i];
|
const row = this.parsedData[i];
|
||||||
|
|
||||||
const findUserResponse = await fetch(window.TT_CONFIG['BASE_PATH'] + '/Radius/proxyUnsecureHTTPRequestToRadius?custnume=' + row[this.selectedColumns.kundennummer]);
|
const findUserResponse = await fetch(window.TT_CONFIG['BASE_PATH'] + '/Radius/proxyUnsecureHTTPRequestToRadius?custnume=' + row[this.selectedColumns.kundennummer]);
|
||||||
const findUserData = await findUserResponse.json();
|
const findUserData = await findUserResponse.json();
|
||||||
|
|
||||||
if (findUserData.length === 0) {
|
if (findUserData.length === 0) {
|
||||||
row.ont_sn = 'N/A - Kein Benutzer mit dieser Kundennummer gefunden';
|
row.ont_sn = 'N/A - Kein Benutzer mit dieser Kundennummer gefunden';
|
||||||
processedRows.push(row);
|
processedRows.push(row);
|
||||||
} else if (findUserData.length === 1) {
|
} else if (findUserData.length === 1) {
|
||||||
const username = findUserData[0].username;
|
const username = findUserData[0].username;
|
||||||
const radacctResponse = await fetch(window.TT_CONFIG['BASE_PATH'] + '/Radius/proxyUnsecureHTTPRequestToRadius?skipAdditional=true&action2=fetchRadacct&username=' + username);
|
const radacctResponse = await fetch(window.TT_CONFIG['BASE_PATH'] + '/Radius/proxyUnsecureHTTPRequestToRadius?skipAdditional=true&action2=fetchRadacct&username=' + username);
|
||||||
const radacctData = await radacctResponse.json();
|
const radacctData = await radacctResponse.json();
|
||||||
|
|
||||||
row.ont_sn = radacctData.ont_sn || 'N/A - Keine ONT SN gefunden';
|
row.ont_sn = radacctData.ont_sn || 'N/A - Keine ONT SN gefunden';
|
||||||
processedRows.push(row);
|
processedRows.push(row);
|
||||||
|
|
||||||
} else if (findUserData.length > 1) {
|
} else if (findUserData.length > 1) {
|
||||||
// check string simulairty of strasse, plz, stadt and atleast of 90% of each should be inside findUserData[].info
|
// check string simulairty of strasse, plz, stadt and atleast of 90% of each should be inside findUserData[].info
|
||||||
// if not, ont_sn = N/A - Anschluss konnte nicht zugeordnet werden
|
// if not, ont_sn = N/A - Anschluss konnte nicht zugeordnet werden
|
||||||
|
|
||||||
const strasse = row[this.selectedColumns.anschlussstrasse];
|
const strasse = row[this.selectedColumns.anschlussstrasse];
|
||||||
const plz = row[this.selectedColumns.anschlussplz];
|
const plz = row[this.selectedColumns.anschlussplz];
|
||||||
const stadt = row[this.selectedColumns.anschlusscity];
|
const stadt = row[this.selectedColumns.anschlusscity];
|
||||||
const info = findUserData[0].info;
|
const info = findUserData[0].info;
|
||||||
|
|
||||||
for (let user of findUserData) {
|
for (let user of findUserData) {
|
||||||
if (validateData(strasse, plz, stadt, info)) {
|
if (validateData(strasse, plz, stadt, info)) {
|
||||||
const username = user.username;
|
const username = user.username;
|
||||||
const radacctResponse = await fetch(window.TT_CONFIG['BASE_PATH'] + '/Radius/proxyUnsecureHTTPRequestToRadius?skipAdditional=true&action2=fetchRadacct&username=' + username);
|
const radacctResponse = await fetch(window.TT_CONFIG['BASE_PATH'] + '/Radius/proxyUnsecureHTTPRequestToRadius?skipAdditional=true&action2=fetchRadacct&username=' + username);
|
||||||
const radacctData = await radacctResponse.json();
|
const radacctData = await radacctResponse.json();
|
||||||
|
|
||||||
row.ont_sn = radacctData.ont_sn || 'N/A - Keine ONT SN gefunden';
|
row.ont_sn = radacctData.ont_sn || 'N/A - Keine ONT SN gefunden';
|
||||||
processedRows.push(row);
|
processedRows.push(row);
|
||||||
continue mainLoop;
|
continue mainLoop;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
row.ont_sn = 'N/A - Anschluss konnte nicht zugeordnet werden';
|
row.ont_sn = 'N/A - Anschluss konnte nicht zugeordnet werden';
|
||||||
processedRows.push(row);
|
processedRows.push(row);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
this.processedData = processedRows;
|
this.processedData = processedRows;
|
||||||
@@ -321,150 +317,151 @@ Vue.component('radius-online-state', {
|
|||||||
|
|
||||||
Vue.component('radius', {
|
Vue.component('radius', {
|
||||||
template: `
|
template: `
|
||||||
<tt-card>
|
<tt-card>
|
||||||
<template v-slot:header>
|
<template v-slot:header>
|
||||||
<h3>Radius</h3>
|
<h3>Radius</h3>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<div class="radius-view-selector">
|
<div class="radius-view-selector">
|
||||||
<tt-button icon="fas fa-user" additional-class="btn-primary" text="Radius Benutzer" @click="view = 'radius'"/>
|
<tt-button icon="fas fa-user" additional-class="btn-primary" text="Radius Benutzer" @click="view = 'radius'"/>
|
||||||
<tt-button icon="fas fa-user-plus" additional-class="btn-primary" text="Freie Radius Benutzer" @click="view = 'free'"/>
|
<tt-button icon="fas fa-user-plus" additional-class="btn-primary" text="Freie Radius Benutzer" @click="view = 'free'"/>
|
||||||
<tt-button text="Radius ONT Parser" icon="fas fa-cogs" additional-class="btn-primary" @click="view = 'ont'" v-show="window['TT_CONFIG']['CAN_BILLING'] === '1'"/>
|
<tt-button text="Radius ONT Parser" icon="fas fa-cogs" additional-class="btn-primary" @click="view = 'ont'" v-show="window['TT_CONFIG']['CAN_BILLING'] === '1'"/>
|
||||||
<tt-button text="Radius ONT Reverse Parser" icon="fas fa-cogs" additional-class="btn-primary" @click="view = 'ontReverse'" v-show="window['TT_CONFIG']['CAN_BILLING'] === '1'"/>
|
<tt-button text="Radius ONT Reverse Parser" icon="fas fa-cogs" additional-class="btn-primary" @click="view = 'ontReverse'" v-show="window['TT_CONFIG']['CAN_BILLING'] === '1'"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="view === 'radius'">
|
<div v-if="view === 'radius'">
|
||||||
<div class="filters" @keyup.enter="loadRadiusUsers">
|
<div class="filters" @keyup.enter="loadRadiusUsers">
|
||||||
<tt-autocomplete sm :api-url="billAddrAutoCompleteUrl" label="Rechnungsadresse" v-model="custnum" ref="billAddr"/>
|
<tt-autocomplete sm :api-url="billAddrAutoCompleteUrl" label="Rechnungsadresse" v-model="custnum" ref="billAddr"/>
|
||||||
<tt-input sm label="Username" name="username" v-model="username"/>
|
<tt-input sm label="Username" name="username" v-model="username"/>
|
||||||
<tt-input sm label="Info" name="info" v-model="info"/>
|
<tt-input sm label="IP" name="ip" v-model="ip"/>
|
||||||
<tt-checkbox v-model="checkOnlineState" label="Online-Status abfragen" sm/>
|
<tt-input sm label="Info" name="info" v-model="info"/>
|
||||||
<tt-button sm icon="fas fa-search" text="Suchen" additional-class="btn-primary" style="justify-self:center" @click="loadRadiusUsers"
|
<tt-checkbox v-model="checkOnlineState" label="Online-Status abfragen" sm/>
|
||||||
:disabled="isLoading"/>
|
<tt-button sm icon="fas fa-search" text="Suchen" additional-class="btn-primary" style="justify-self:center" @click="loadRadiusUsers"
|
||||||
</div>
|
:disabled="isLoading"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Kundennummer</th>
|
<th>Kundennummer</th>
|
||||||
<th>Username</th>
|
<th>Username</th>
|
||||||
<th>Info</th>
|
<th>Info</th>
|
||||||
<th>Status</th>
|
<th>Status</th>
|
||||||
<th>Aktionen</th>
|
<th>Aktionen</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr v-for="user in radiusUsers" :key="user.id">
|
<tr v-for="user in radiusUsers" :key="user.id">
|
||||||
<td>
|
<td>
|
||||||
<a target="_blank" :href="window['TT_CONFIG']['BASE_PATH'] + '/Address?filter%5Bcustomer_number%5D=' + user.customerNumber">
|
<a target="_blank" :href="window['TT_CONFIG']['BASE_PATH'] + '/Address?filter%5Bcustomer_number%5D=' + user.customerNumber">
|
||||||
{{ user.customerNumber }}
|
{{ user.customerNumber }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a target="_blank" :href="'http://radius.xinon.at/edit_user.php?user=' + user.username">
|
<a target="_blank" :href="'http://radius.xinon.at/edit_user.php?user=' + user.username">
|
||||||
{{ user.username }}
|
{{ user.username }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>{{ user.info }}</td>
|
<td>{{ user.info }}</td>
|
||||||
<td>
|
<td>
|
||||||
<template v-if="checkOnlineState === 1">
|
<template v-if="checkOnlineState === 1">
|
||||||
<radius-online-state :username="user.username" :key="user.username + '_online_state_' + this.searchCount"/>
|
<radius-online-state :username="user.username" :key="user.username + '_online_state_' + this.searchCount"/>
|
||||||
</template>
|
</template>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<tt-button sm icon="fas fa-sync" text="Details" @click="fetchRadacctData(user.username)" additional-class="btn-primary"/>
|
<tt-button sm icon="fas fa-sync" text="Details" @click="fetchRadacctData(user.username)" additional-class="btn-primary"/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="view === 'free'" class="free-users-container">
|
<div v-if="view === 'free'" class="free-users-container">
|
||||||
<div class="free-users-column">
|
<div class="free-users-column">
|
||||||
<h4>Freie NAT Benutzer ({{ freeNatUsers.length }})</h4>
|
<h4>Freie NAT Benutzer ({{ freeNatUsers.length }})</h4>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Username</th>
|
<th>Username</th>
|
||||||
<th>Info</th>
|
<th>Info</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr v-for="user in freeNatUsers" :key="user.id">
|
<tr v-for="user in freeNatUsers" :key="user.id">
|
||||||
<td><a target="_blank" :href="'http://radius.xinon.at/edit_user.php?user=' + user.Username">{{ user.Username }}</a></td>
|
<td><a target="_blank" :href="'http://radius.xinon.at/edit_user.php?user=' + user.Username">{{ user.Username }}</a></td>
|
||||||
<td>{{ user.Info }}</td>
|
<td>{{ user.Info }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="free-users-column">
|
<div class="free-users-column">
|
||||||
<h4>Freie STF Benutzer ({{ freeStfUsers.length }})</h4>
|
<h4>Freie STF Benutzer ({{ freeStfUsers.length }})</h4>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Username</th>
|
<th>Username</th>
|
||||||
<th>Info</th>
|
<th>Info</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr v-for="user in freeStfUsers" :key="user.id">
|
<tr v-for="user in freeStfUsers" :key="user.id">
|
||||||
<td><a target="_blank" :href="'http://radius.xinon.at/edit_user.php?user=' + user.Username">{{ user.Username }}</a></td>
|
<td><a target="_blank" :href="'http://radius.xinon.at/edit_user.php?user=' + user.Username">{{ user.Username }}</a></td>
|
||||||
<td>{{ user.Info }}</td>
|
<td>{{ user.Info }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="view === 'ont'">
|
<div v-if="view === 'ont'">
|
||||||
<radius-ont-parser/>
|
<radius-ont-parser/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="view === 'ontReverse'">
|
<div v-if="view === 'ontReverse'">
|
||||||
<radius-ont-finder/>
|
<radius-ont-finder/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<tt-modal :show.sync="showRadacctModal" title="Radacct Data" :save="false" :delete="false">
|
<tt-modal :show.sync="showRadacctModal" title="Radacct Data" :save="false" :delete="false">
|
||||||
<div v-if="radacctData">
|
<div v-if="radacctData">
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<tr>
|
<tr>
|
||||||
<th>Status:</th>
|
<th>Status:</th>
|
||||||
<td><span :class="['status-dot', radacctData.online ? 'online' : 'offline']"></span> {{ radacctData.online ? 'Online' : 'Offline' }}</td>
|
<td><span :class="['status-dot', radacctData.online ? 'online' : 'offline']"></span> {{ radacctData.online ? 'Online' : 'Offline' }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>IP:</th>
|
<th>IP:</th>
|
||||||
<td>{{ radacctData.ip }}</td>
|
<td>{{ radacctData.ip }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Username:</th>
|
<th>Username:</th>
|
||||||
<td><a target="_blank" :href="'http://radius.xinon.at/edit_user.php?user=' + radacctData.username">{{ radacctData.username }}</a></td>
|
<td><a target="_blank" :href="'http://radius.xinon.at/edit_user.php?user=' + radacctData.username">{{ radacctData.username }}</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Customer Number:</th>
|
<th>Customer Number:</th>
|
||||||
<td>{{ radacctData.customerNumber }}</td>
|
<td>{{ radacctData.customerNumber }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Customer Name:</th>
|
<th>Customer Name:</th>
|
||||||
<td>{{ radacctData.customerName }}</td>
|
<td>{{ radacctData.customerName }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Info:</th>
|
<th>Info:</th>
|
||||||
<td>{{ radacctData.info }}</td>
|
<td>{{ radacctData.info }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>WLAN Password:</th>
|
<th>WLAN Password:</th>
|
||||||
<td>{{ radacctData.wlanPassword }}</td>
|
<td>{{ radacctData.wlanPassword }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Bandbreite:</th>
|
<th>Bandbreite:</th>
|
||||||
<td>{{ radacctData.actualBandwidth }}</td>
|
<td>{{ radacctData.actualBandwidth }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</tt-modal>
|
</tt-modal>
|
||||||
</tt-card>
|
</tt-card>
|
||||||
`,
|
`,
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
view: 'radius',
|
view: 'radius',
|
||||||
@@ -474,6 +471,7 @@ Vue.component('radius', {
|
|||||||
freeStfUsers: [],
|
freeStfUsers: [],
|
||||||
username: '',
|
username: '',
|
||||||
info: '',
|
info: '',
|
||||||
|
ip: '',
|
||||||
custnum: '',
|
custnum: '',
|
||||||
window: window,
|
window: window,
|
||||||
showRadacctModal: false,
|
showRadacctModal: false,
|
||||||
@@ -503,6 +501,7 @@ Vue.component('radius', {
|
|||||||
username: this.username,
|
username: this.username,
|
||||||
info: this.info,
|
info: this.info,
|
||||||
custnum: custnum,
|
custnum: custnum,
|
||||||
|
ip: this.ip,
|
||||||
});
|
});
|
||||||
const response = await fetch(`${window.TT_CONFIG['BASE_PATH']}/Radius/proxyUnsecureHTTPRequestToRadius?${params.toString()}`);
|
const response = await fetch(`${window.TT_CONFIG['BASE_PATH']}/Radius/proxyUnsecureHTTPRequestToRadius?${params.toString()}`);
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
@@ -821,4 +820,4 @@ Vue.component('radius-ont-finder', {
|
|||||||
console.warn(`Global TT_CONFIG.BASE_PATH not found. API calls will use fallback path: ${this.apiBasePath}`);
|
console.warn(`Global TT_CONFIG.BASE_PATH not found. API calls will use fallback path: ${this.apiBasePath}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user