From 155dd2f5caba5cbf150ba92e812b6438e58749cf Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Tue, 21 May 2019 18:29:58 +0200 Subject: [PATCH] [enh] Parameters > Network : display detected informations --- back/webmin/graphql/resolvers/BigResolver.ts | 8 ++++++- .../graphql/types/NetworkConfAvailalbeType.ts | 14 +++++++++++ back/webmin/queries/gql-conf.ts | 15 ++++++++++++ src/lib/services/webmin.service.ts | 23 +++++++++++++++++++ src/views/home/parameters/Network.vue | 20 ++++++++++++++++ 5 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 back/webmin/graphql/types/NetworkConfAvailalbeType.ts diff --git a/back/webmin/graphql/resolvers/BigResolver.ts b/back/webmin/graphql/resolvers/BigResolver.ts index 8ae3685..65f8e44 100644 --- a/back/webmin/graphql/resolvers/BigResolver.ts +++ b/back/webmin/graphql/resolvers/BigResolver.ts @@ -10,7 +10,8 @@ import {gqlHeads} from '../../queries/gql-heads' import {gqlWs2pInfos} from '../../queries/gql-ws2p' import {gqlIsSyncStarted, gqlSynchronize} from '../../queries/gql-synchronize' import {gqlUid} from '../../queries/gql-uid' -import {getConf, testAndSaveConf} from '../../queries/gql-conf' +import {getConf, getNetworkConfigurations, testAndSaveConf} from '../../queries/gql-conf' +import {NetworkConfAvailableType} from '../types/NetworkConfAvailalbeType' import {Arg} from 'type-graphql/dist/decorators/Arg' import {getForks, getMainChain} from '../../queries/gql-forks' import {ChainType} from '../types/ChainType' @@ -94,4 +95,9 @@ export class BigResolver { getForks(@Arg("start", type => Int) start: number, @Arg("end", type => Int) end: number): Promise<ChainType> { return getForks(ApplicationContext.server, start, end) } + + @Query(type => NetworkConfAvailableType) + getAvailableNetworkConf(): Promise<NetworkConfAvailableType> { + return getNetworkConfigurations(ApplicationContext.server) + } } diff --git a/back/webmin/graphql/types/NetworkConfAvailalbeType.ts b/back/webmin/graphql/types/NetworkConfAvailalbeType.ts new file mode 100644 index 0000000..ab136af --- /dev/null +++ b/back/webmin/graphql/types/NetworkConfAvailalbeType.ts @@ -0,0 +1,14 @@ +import {Field, ObjectType} from 'type-graphql' + +@ObjectType() +export class NetworkConfAvailableType { + + @Field() remoteport: number + @Field(type => String, { nullable: true }) remotehost: string|null + @Field(type => String, { nullable: true }) remoteipv4: string|null + @Field(type => String, { nullable: true }) remoteipv6: string|null + @Field() port: number + @Field() ipv4: string + @Field() ipv6: string + @Field() upnp: boolean +} diff --git a/back/webmin/queries/gql-conf.ts b/back/webmin/queries/gql-conf.ts index fee3fc2..258712f 100644 --- a/back/webmin/queries/gql-conf.ts +++ b/back/webmin/queries/gql-conf.ts @@ -1,4 +1,8 @@ import {Server} from 'duniter/server' +import {NetworkConfAvailableType} from '../graphql/types/NetworkConfAvailalbeType' +import {NetworkConfDTO} from 'duniter/app/lib/dto/ConfDTO' +import {networkReconfiguration} from 'duniter/app/modules/bma' + export async function getConf(server: Server): Promise<string> { const raw = (await server.dal.confDAL.readRawConfFile()) || '' @@ -24,3 +28,14 @@ export async function testAndSaveConf( // We reuse the getConf() function return getConf(server) } + +export async function getNetworkConfigurations(server: Server): Promise<NetworkConfAvailableType> { + const netconf: NetworkConfDTO = {} as any + await new Promise((resolve, reject) => { + networkReconfiguration(netconf, true, server.logger, false, (err: any) => { + if (err) return reject(err) + resolve() + }) + }) + return netconf +} diff --git a/src/lib/services/webmin.service.ts b/src/lib/services/webmin.service.ts index 66f301f..b1b4e56 100644 --- a/src/lib/services/webmin.service.ts +++ b/src/lib/services/webmin.service.ts @@ -3,6 +3,7 @@ import ApolloClient from 'apollo-client'; import {DBBlock, NodeState, WS2PConnectionInfos, WS2PHead} from '../../../common/types' import {HistoryOfMemberType} from '../../../back/webmin/graphql/types/HistoryOfMemberType' import {ChainType} from '../../../back/webmin/graphql/types/ChainType' +import {NetworkConfAvailableType} from '../../../back/webmin/graphql/types/NetworkConfAvailalbeType' export class WebminService { @@ -391,4 +392,26 @@ export class WebminService { .result() return res.data.getForks } + + async getAvailableNetworkConf() { + const res = await this.getApollo() + .watchQuery<{ getAvailableNetworkConf: NetworkConfAvailableType }>({ + query: gql` + query { + getAvailableNetworkConf { + remoteport + remotehost + remoteipv4 + remoteipv6 + port + ipv4 + ipv6 + upnp + } + } + `, + }) + .result() + return res.data.getAvailableNetworkConf + } } diff --git a/src/views/home/parameters/Network.vue b/src/views/home/parameters/Network.vue index 15f73b1..4f99013 100644 --- a/src/views/home/parameters/Network.vue +++ b/src/views/home/parameters/Network.vue @@ -7,17 +7,37 @@ <font-awesome-icon class="mr-3" icon="tools" style="font-size: 40px"/> <font-awesome-icon class="mr-3" icon="hard-hat" style="font-size: 40px"/> <font-awesome-icon class="mr-3" icon="exclamation-triangle" style="font-size: 40px"/> + + <div v-if="conf"> + <h3>Detected available:</h3> + <ul> + <li>remoteport = {{ conf.remoteport }}</li> + <li>remotehost = {{ conf.remotehost }}</li> + <li>remoteipv4 = {{ conf.remoteipv4 }}</li> + <li>remoteipv6 = {{ conf.remoteipv6 }}</li> + <li>port = {{ conf.port }}</li> + <li>ipv4 = {{ conf.ipv4 }}</li> + <li>ipv6 = {{ conf.ipv6 }}</li> + <li>upnp = {{ conf.upnp }}</li> + </ul> + </div> </div> </template> <script lang="ts"> import {Component, Vue} from 'vue-property-decorator'; + import {NetworkConfAvailableType} from "../../../../back/webmin/graphql/types/NetworkConfAvailalbeType"; @Component({ components: {}, }) export default class extends Vue { + conf: NetworkConfAvailableType|null = null + + async mounted() { + this.conf = await this.$webmin.getAvailableNetworkConf() + } } </script> -- GitLab