├── .dockerignore ├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── bug-report.md │ ├── feature-request.md │ └── wiki-updates.md └── workflows │ └── build.yml ├── .gitignore ├── .gitmodules ├── Common ├── Common.csproj ├── Enums │ ├── ApplicationEnum.cs │ ├── InstructionTypeEnum.cs │ └── XDocumentTypeEnum.cs ├── Models │ ├── DApps │ │ ├── DappDefinitionModel.cs │ │ └── DappDeploymentModel.cs │ ├── Graviex │ │ ├── GraviexOrderBookModel.cs │ │ ├── GraviexTickerModel.cs │ │ └── TickerModel.cs │ ├── OrderBook │ │ ├── OrderBookModel.cs │ │ └── OrderModel.cs │ ├── XDocuments │ │ ├── ApplicationModel.cs │ │ ├── NewZoneModel.cs │ │ ├── XDocumentModel.cs │ │ └── Zones │ │ │ ├── BasicZoneModel.cs │ │ │ ├── DnsRecord.cs │ │ │ ├── RrSet.cs │ │ │ └── RrSetUpdateModel.cs │ ├── XServer │ │ ├── Collateral.cs │ │ ├── PingResponse.cs │ │ ├── RuntimeStats.cs │ │ ├── StartupStatus.cs │ │ ├── StatusResult.cs │ │ └── Tier.cs │ └── x42Blockcore │ │ ├── BlockModel.cs │ │ ├── Node.cs │ │ ├── ScriptPubKeyModel.cs │ │ ├── ScriptSigModel.cs │ │ ├── SignMessageModel.cs │ │ ├── SignMessageResponse.cs │ │ ├── SimpleBlockModel.cs │ │ ├── TransactionModel.cs │ │ ├── VinModel.cs │ │ ├── VoutModel.cs │ │ └── XServerStatsReponse.cs ├── Services │ ├── DappProvisioner.cs │ ├── IDappProvisioner.cs │ ├── PowerDnsRestClient.cs │ └── ZoneDocumentModel.cs └── Utils │ └── JsonUtility.cs ├── Dockerfile-BlockCoreNode ├── LICENSE ├── README.md ├── build.bat ├── docker-compose.dcproj ├── docker-compose.override.yml ├── docker-compose.yml ├── exampleDapp.json ├── launchSettings.json ├── package.json ├── x42.conf ├── xServer.D.sln ├── xServer.D ├── .env ├── Configuration │ ├── DataFolder.cs │ ├── Logging │ │ └── LoggingConfiguration.cs │ ├── ServerEndpoint.cs │ ├── ServerSettings.cs │ ├── Settings │ │ └── LogSettings.cs │ ├── TextFileConfiguration.cs │ └── XServerEndpoint.cs ├── Controllers │ ├── Converters │ │ ├── BtcDecimalJsonConverter.cs │ │ └── ToStringJsonConverter.cs │ ├── DashboardController.cs │ ├── FeatureController.cs │ ├── Public │ │ └── PublicControllers.cs │ ├── Requests │ │ ├── CreatePriceLockRequest.cs │ │ ├── LogRulesRequest.cs │ │ ├── ProfileEditField.cs │ │ ├── ProfileEditRequest.cs │ │ ├── ProfileRequest.cs │ │ ├── ProfileReserveRequest.cs │ │ ├── ReceiveProfileReserveRequest.cs │ │ ├── ServerRegisterRequest.cs │ │ ├── SetupRequest.cs │ │ ├── StartRequest.cs │ │ └── SubmitPaymentRequest.cs │ ├── Results │ │ ├── CountResult.cs │ │ ├── PairResult.cs │ │ ├── PingResult.cs │ │ ├── PriceLockResult.cs │ │ ├── PriceResult.cs │ │ ├── ProfileField.cs │ │ ├── ProfileResult.cs │ │ ├── ProfilesResult.cs │ │ ├── ReserveProfileResult.cs │ │ ├── ServerRegisterResult.cs │ │ ├── SetupResponse.cs │ │ ├── StatusResult.cs │ │ ├── SubmitPaymentResult.cs │ │ ├── TierType.cs │ │ └── TopResult.cs │ └── ServerNodeController.cs ├── Dockerfile ├── Feature │ ├── API │ │ ├── ApiBuilder.cs │ │ ├── ApiFeature.cs │ │ ├── ApiSettings.cs │ │ ├── CertificateStore.cs │ │ ├── ConfigureSwaggerOptions.cs │ │ ├── EnumSchemaFilter.cs │ │ ├── ICertificateStore.cs │ │ ├── KeepAliveActionFilter.cs │ │ ├── LoggingActionFilter.cs │ │ ├── MvcBuilderExtensions.cs │ │ └── Requirements │ │ │ ├── Polocy.cs │ │ │ └── PrivateAuthorization.cs │ ├── DApps │ │ ├── DAppManager.cs │ │ ├── DAppsFeature.cs │ │ └── IDAppManager.cs │ ├── Database │ │ ├── Context │ │ │ ├── IMongoContext.cs │ │ │ ├── MongoContext.cs │ │ │ └── X42DbContext.cs │ │ ├── DataStore.cs │ │ ├── DatabaseFacadeExtensions.cs │ │ ├── DatabaseFeatures.cs │ │ ├── DatabaseSettings.cs │ │ ├── Dictionary.cs │ │ ├── Entities │ │ │ ├── DataDictionary.cs │ │ │ ├── PriceLock.cs │ │ │ ├── ProfileFields.cs │ │ │ ├── ProfileReservation.cs │ │ │ ├── Server.cs │ │ │ ├── ServerNode.cs │ │ │ └── XServerProfile.cs │ │ ├── IDataStore.cs │ │ ├── Repositories │ │ │ ├── BaseRepository.cs │ │ │ ├── IProfileReservationRepository.cs │ │ │ ├── IRepository.cs │ │ │ ├── MongoRepository.cs │ │ │ ├── ProfileReservationRepository.cs │ │ │ └── Profiles │ │ │ │ ├── IProfileRepository.cs │ │ │ │ └── ProfileRepository.cs │ │ ├── Tables │ │ │ ├── DictionaryData.cs │ │ │ ├── DomainData.cs │ │ │ ├── PriceLockData.cs │ │ │ ├── ProfileData.cs │ │ │ ├── ProfileFieldsData.cs │ │ │ ├── ProfileReservationData.cs │ │ │ ├── ProfileReservationData2.cs │ │ │ ├── ServerData.cs │ │ │ └── ServerNodeData.cs │ │ └── UoW │ │ │ ├── IUnitOfWork.cs │ │ │ └── UnitOfWork.cs │ ├── Metrics │ │ ├── IMemoryMetricsService.cs │ │ ├── IProcessorMetrics.cs │ │ ├── IRuntimeInformationService.cs │ │ ├── MemoryMetricsService.cs │ │ ├── MetricsFeature.cs │ │ ├── MetricsMonitor.cs │ │ ├── MetricsService.cs │ │ ├── Models │ │ │ └── HostStatsModel.cs │ │ ├── ProcessorMetricsService.cs │ │ └── RuntimeInformationService.cs │ ├── Network │ │ ├── CachedWalletInfo.cs │ │ ├── NetworkFeature.cs │ │ ├── NetworkMonitor.cs │ │ ├── NetworkSettings.cs │ │ ├── RuntimeStats.cs │ │ └── Status.cs │ ├── PowerDns │ │ ├── Models │ │ │ ├── DnsRequest.cs │ │ │ ├── RRset.cs │ │ │ ├── RrSetRecord.cs │ │ │ └── ZoneModel.cs │ │ ├── PowerDnsClient │ │ │ └── PowerDnsRestClient.cs │ │ ├── PowerDnsFeature.cs │ │ └── PowerDnsSettings.cs │ ├── PriceLock │ │ ├── FiatCurrency.cs │ │ ├── FiatPair.cs │ │ ├── PaymentErrorCodes.cs │ │ ├── PriceFeature.cs │ │ ├── PriceList.cs │ │ ├── PriceLockValidation.cs │ │ ├── Results │ │ │ ├── CoinGeckoPriceResult.cs │ │ │ └── ValidatePriceLockPayeeResult.cs │ │ └── Status.cs │ ├── Profile │ │ ├── ProfileFeature.cs │ │ └── Status.cs │ ├── Setup │ │ ├── BaseFeature.cs │ │ ├── FeatureCollection.cs │ │ ├── FeatureRegistration.cs │ │ ├── FeaturesExtensions.cs │ │ ├── MissingDependencyException.cs │ │ ├── ServerFeature.cs │ │ └── ServerFeatureExecutor.cs │ ├── WordPressPreview │ │ ├── Models │ │ │ ├── WordPressReserveRequest.cs │ │ │ └── WordpressDomainResult.cs │ │ ├── WordPressManager.cs │ │ └── WordPressPreviewFeature.cs │ ├── X42Client │ │ ├── Enums │ │ │ ├── ConnectionStatus.cs │ │ │ ├── ConnectionType.cs │ │ │ ├── MnemomicLanguage.cs │ │ │ ├── MnemonicWordCount.cs │ │ │ └── TXType.cs │ │ ├── Models │ │ │ ├── BlockHeader.cs │ │ │ ├── Event │ │ │ │ ├── BaseEvent.cs │ │ │ │ ├── ConnectDisconnectEvent.cs │ │ │ │ ├── NewBlockEvent.cs │ │ │ │ └── NewTXEvent.cs │ │ │ ├── Peer.cs │ │ │ ├── Transaction.cs │ │ │ └── xServerPeer.cs │ │ ├── RestClient │ │ │ ├── Requests │ │ │ │ ├── BuildTXRequest.cs │ │ │ │ ├── CreateAccountRequest.cs │ │ │ │ ├── CreateWalletRequest.cs │ │ │ │ ├── DecodeRawTransactionRequest.cs │ │ │ │ ├── SendTransactionRequest.cs │ │ │ │ ├── SignRequest.cs │ │ │ │ └── VerifyRequest.cs │ │ │ ├── Responses │ │ │ │ ├── BlockchainInfoResponse.cs │ │ │ │ ├── BuildTXResponse.cs │ │ │ │ ├── GetAddressIndexerTipResponse.cs │ │ │ │ ├── GetAddressesBalancesResponse.cs │ │ │ │ ├── GetBlockHeaderResponse.cs │ │ │ │ ├── GetBlockResponse.cs │ │ │ │ ├── GetColdStakingAddressResponse.cs │ │ │ │ ├── GetPeerInfoResponse.cs │ │ │ │ ├── GetRecievedAddressInfoResponse.cs │ │ │ │ ├── GetSpendableTXResponse.cs │ │ │ │ ├── GetStakingInfoResponse.cs │ │ │ │ ├── GetTXOutResponse.cs │ │ │ │ ├── GetWalletAddressesResponse.cs │ │ │ │ ├── GetWalletBalenceResponse.cs │ │ │ │ ├── GetWalletFilesResponse.cs │ │ │ │ ├── GetWalletHistoryResponse.cs │ │ │ │ ├── GetXServerStatsResult.cs │ │ │ │ ├── NodeStatusResponse.cs │ │ │ │ ├── RawTransactionResponse.cs │ │ │ │ ├── SignMessageResult.cs │ │ │ │ ├── WalletGeneralInfoResponse.cs │ │ │ │ └── WalletSendTransactionModel.cs │ │ │ ├── X42RestClient.BlockStore.cs │ │ │ ├── X42RestClient.ColdStaking.cs │ │ │ ├── X42RestClient.ConnectionManager.cs │ │ │ ├── X42RestClient.Consensus.cs │ │ │ ├── X42RestClient.Staking.cs │ │ │ ├── X42RestClient.Wallet.cs │ │ │ ├── X42RestClient.cs │ │ │ └── X42RestClient.xServer.cs │ │ ├── Utils │ │ │ ├── Extensions │ │ │ │ ├── IntegerExtensions.cs │ │ │ │ └── RestModelExtensions.cs │ │ │ └── Web │ │ │ │ └── APIClient.cs │ │ ├── X42ClientFeature.cs │ │ ├── X42ClientSettings.cs │ │ ├── X42Node.Events.cs │ │ ├── X42Node.Message.cs │ │ ├── X42Node.SSH.cs │ │ ├── X42Node.Staking.cs │ │ ├── X42Node.Transactions.cs │ │ ├── X42Node.Variables.cs │ │ └── X42Node.cs │ └── XDocuments │ │ ├── XDocumentClient.cs │ │ └── XDocumentFeature.cs ├── Migrations │ ├── 20201102204130_InitialCreate.Designer.cs │ ├── 20201102204130_InitialCreate.cs │ ├── 20220524110329_AddDomainTable.Designer.cs │ ├── 20220524110329_AddDomainTable.cs │ ├── X42DbContextModelSnapshot.cs │ └── _PGMigrations.txt ├── Program.cs ├── Properties │ ├── PublishProfiles │ │ ├── FolderProfile.pubxml │ │ ├── FolderProfile1.pubxml │ │ └── registry.hub.docker.com_dimsavva.pubxml │ ├── Resources.Designer.cs │ ├── Resources.resx │ └── launchSettings.json ├── Protocol │ └── Versions.cs ├── Server │ ├── IServerBuilder.cs │ ├── IX42Server.cs │ ├── MissingServiceException.cs │ ├── ProfileFunctions.cs │ ├── Results │ │ ├── RegisterResult.cs │ │ └── SetupStatusResult.cs │ ├── RuntimeStats.cs │ ├── ServerBuilder.cs │ ├── ServerFunctions.cs │ ├── ServerServiceProvider.cs │ ├── ServerSettingsExtension.cs │ ├── SetupServer.cs │ └── X42Server.cs ├── ServerNode │ ├── Collateral.cs │ ├── ServerNode.cs │ ├── Tier.cs │ ├── X42MainServerNode.cs │ └── X42TestServerNode.cs ├── Utilities │ ├── AsyncLock.cs │ ├── AsyncLoop.cs │ ├── AsyncLoopFactory.cs │ ├── AsyncManualResetEvent.cs │ ├── AsyncQueue.cs │ ├── DateTimeProvider.cs │ ├── EnumUtil.cs │ ├── Extensions │ │ ├── DateTimeExtensions.cs │ │ ├── DecimalExtensions.cs │ │ ├── IPExtensions.cs │ │ ├── LoggingExtensions.cs │ │ ├── TimerExtensions.cs │ │ └── X42ServerExtensions.cs │ ├── Guard.cs │ ├── JsonConverters │ │ ├── AssetIdJsonConverter.cs │ │ ├── BitcoinStringJsonConverter.cs │ │ ├── ByteArrayConverter.cs │ │ ├── CoinJsonConverter.cs │ │ ├── DateTimeOffsetConverter.cs │ │ ├── DateTimeToUnixTimeConverter.cs │ │ ├── HexJsonConverter.cs │ │ ├── IPEndPointConverter.cs │ │ ├── JsonObjectException.cs │ │ ├── KeyJsonConverter.cs │ │ ├── KeyPathJsonConverter.cs │ │ ├── LockTimeJsonConverter.cs │ │ ├── MoneyJsonConverter.cs │ │ ├── ScriptJsonConverter.cs │ │ ├── Serializer.cs │ │ ├── SignatureJsonConverter.cs │ │ ├── TxDestinationJsonConverter.cs │ │ ├── UInt160JsonConverter.cs │ │ └── UInt256JsonConverter.cs │ ├── JsonErrors │ │ ├── ErrorHelpers.cs │ │ ├── ErrorResponse.cs │ │ └── ErrorResult.cs │ ├── ModelStateErrors │ │ └── ModelStateErrors.cs │ ├── NodeSeedData.cs │ ├── PrefixLogger.cs │ ├── ServerStats.cs │ ├── TimeSpans.cs │ └── X42ServerLifetime.cs ├── dapps │ ├── magento │ │ ├── .env │ │ ├── deploy_site.sh │ │ └── docker-compose.yml │ ├── openproject │ │ ├── deploy_site.sh │ │ └── docker-compose.yml │ ├── prestashop │ │ ├── .env │ │ ├── deploy_site.sh │ │ └── docker-compose.yml │ └── wordpress │ │ ├── bin │ │ ├── acme.sh │ │ ├── appinstall.sh │ │ ├── container │ │ │ ├── appinstallctl.sh │ │ │ ├── certhookctl.sh │ │ │ ├── domainctl.sh │ │ │ ├── owaspctl.sh │ │ │ └── serialctl.sh │ │ ├── database.sh │ │ ├── demosite.sh │ │ ├── dev │ │ │ ├── list-flagged-files.sh │ │ │ ├── no-skip-worktree-conf.sh │ │ │ └── skip-worktree-conf.sh │ │ ├── domain.sh │ │ └── webadmin.sh │ │ ├── docker-compose.yml │ │ ├── e02fb85e-85ca-4c16-a5db-a2c1be124b01 │ │ ├── docker-compose.yml │ │ ├── oti.x42.com │ │ │ ├── .env │ │ │ └── docker-compose.yml │ │ ├── post_deploy_site.sh │ │ └── pre_deploy_site.sh │ │ ├── post_deploy_site.sh │ │ └── pre_deploy_site.sh └── xServerD.csproj ├── xServer.UI.sln ├── xServer.UI ├── .browserslistrc ├── .editorconfig ├── .gitignore ├── Dockerfile ├── README.md ├── angular.json ├── docker-build.bat ├── docker-build.sh ├── e2e │ ├── app.e2e-spec.ts │ ├── app.po.ts │ └── tsconfig.e2e.json ├── karma.conf.js ├── nginx.conf ├── package.json ├── src │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── login │ │ │ ├── login.component.css │ │ │ ├── login.component.html │ │ │ └── login.component.ts │ │ ├── setup │ │ │ ├── create │ │ │ │ ├── confirm-mnemonic │ │ │ │ │ ├── confirm-mnemonic.component.css │ │ │ │ │ ├── confirm-mnemonic.component.html │ │ │ │ │ ├── confirm-mnemonic.component.ts │ │ │ │ │ └── secret-word-index-generator.ts │ │ │ │ ├── create.component.css │ │ │ │ ├── create.component.html │ │ │ │ ├── create.component.ts │ │ │ │ └── show-mnemonic │ │ │ │ │ ├── show-mnemonic.component.css │ │ │ │ │ ├── show-mnemonic.component.html │ │ │ │ │ ├── show-mnemonic.component.spec.ts │ │ │ │ │ └── show-mnemonic.component.ts │ │ │ ├── finalize-setup │ │ │ │ ├── finalize-setup.component.css │ │ │ │ ├── finalize-setup.component.html │ │ │ │ └── finalize-setup.component.ts │ │ │ ├── recover │ │ │ │ ├── recover.component.css │ │ │ │ ├── recover.component.html │ │ │ │ └── recover.component.ts │ │ │ ├── setup-routing.module.ts │ │ │ ├── setup.component.css │ │ │ ├── setup.component.html │ │ │ ├── setup.component.ts │ │ │ └── setup.module.ts │ │ ├── shared │ │ │ ├── components │ │ │ │ ├── generic-modal │ │ │ │ │ ├── generic-modal.component.css │ │ │ │ │ ├── generic-modal.component.html │ │ │ │ │ └── generic-modal.component.ts │ │ │ │ ├── main-menu │ │ │ │ │ ├── main-menu.component.css │ │ │ │ │ ├── main-menu.component.html │ │ │ │ │ ├── main-menu.component.ts │ │ │ │ │ └── main-menu.module.ts │ │ │ │ ├── shutdown │ │ │ │ │ ├── shutdown.component.css │ │ │ │ │ ├── shutdown.component.html │ │ │ │ │ ├── shutdown.component.ts │ │ │ │ │ └── shutdown.module.ts │ │ │ │ └── wizard │ │ │ │ │ ├── step.component.ts │ │ │ │ │ ├── steps.component.ts │ │ │ │ │ ├── wizard.component.css │ │ │ │ │ └── wizard.module.ts │ │ │ ├── directives │ │ │ │ ├── auto-focus.directive.ts │ │ │ │ └── password-validation.directive.ts │ │ │ ├── http-interceptors │ │ │ │ └── api-interceptor.ts │ │ │ ├── models │ │ │ │ ├── address-label.ts │ │ │ │ ├── application.ts │ │ │ │ ├── coldstakingcreateaccountrequest.ts │ │ │ │ ├── coldstakingcreateaccountresponse.ts │ │ │ │ ├── coldstakingcreateaddressresponse.ts │ │ │ │ ├── coldstakinggetinforesponse.ts │ │ │ │ ├── coldstakingsetup.ts │ │ │ │ ├── coldstakingsetupresponse.ts │ │ │ │ ├── coldstakingwithdrawalrequest.ts │ │ │ │ ├── coldstakingwithdrawalresponse.ts │ │ │ │ ├── error-response.ts │ │ │ │ ├── fee-estimation.ts │ │ │ │ ├── mnemonic.ts │ │ │ │ ├── node-status.ts │ │ │ │ ├── profileresult.ts │ │ │ │ ├── server-setuprequest.ts │ │ │ │ ├── server-setupresponse.ts │ │ │ │ ├── server-setupstatusresponse.ts │ │ │ │ ├── server-start-request.ts │ │ │ │ ├── server-status.ts │ │ │ │ ├── serveridresponse.ts │ │ │ │ ├── sidechain-fee-estimation.ts │ │ │ │ ├── split-coins.ts │ │ │ │ ├── transaction-building.ts │ │ │ │ ├── transaction-info.ts │ │ │ │ ├── transaction-sending.ts │ │ │ │ ├── update-info.ts │ │ │ │ ├── validateaddressresponse.ts │ │ │ │ ├── wallet-creation.ts │ │ │ │ ├── wallet-info.ts │ │ │ │ ├── wallet-load.ts │ │ │ │ ├── wallet-recovery.ts │ │ │ │ ├── wallet-rescan.ts │ │ │ │ ├── wallet-signmessagerequest.ts │ │ │ │ ├── wallet-verifyrequest.ts │ │ │ │ └── xserver-status.ts │ │ │ ├── pipes │ │ │ │ ├── coin-notation.pipe.ts │ │ │ │ └── size-unit.pipe.ts │ │ │ ├── services │ │ │ │ ├── appconfig.d.ts │ │ │ │ ├── appconfig.service.ts │ │ │ │ ├── application-state.service.ts │ │ │ │ ├── chain.service.ts │ │ │ │ ├── coldstaking.service.ts │ │ │ │ ├── fullnode.api.service.ts │ │ │ │ ├── global.service.ts │ │ │ │ ├── logger.service.ts │ │ │ │ ├── modal.service.ts │ │ │ │ ├── notification.service.ts │ │ │ │ ├── server.api.service.ts │ │ │ │ ├── settings.service.ts │ │ │ │ ├── storage.service.ts │ │ │ │ ├── theme.service.ts │ │ │ │ ├── title.service.ts │ │ │ │ └── update.service.ts │ │ │ ├── shared.module.ts │ │ │ ├── theme.ts │ │ │ └── themes.ts │ │ └── wallet │ │ │ ├── advanced │ │ │ ├── advanced.component.css │ │ │ ├── advanced.component.html │ │ │ ├── advanced.component.ts │ │ │ └── components │ │ │ │ ├── about │ │ │ │ ├── about.component.css │ │ │ │ ├── about.component.html │ │ │ │ └── about.component.ts │ │ │ │ ├── ext-pubkey │ │ │ │ ├── ext-pubkey.component.css │ │ │ │ ├── ext-pubkey.component.html │ │ │ │ └── ext-pubkey.component.ts │ │ │ │ ├── generate-addresses │ │ │ │ ├── generate-addresses.component.css │ │ │ │ ├── generate-addresses.component.html │ │ │ │ └── generate-addresses.component.ts │ │ │ │ └── resync │ │ │ │ ├── resync.component.css │ │ │ │ ├── resync.component.html │ │ │ │ └── resync.component.ts │ │ │ ├── dashboard │ │ │ ├── dashboard.component.css │ │ │ ├── dashboard.component.html │ │ │ └── dashboard.component.ts │ │ │ ├── history │ │ │ ├── history.component.css │ │ │ ├── history.component.html │ │ │ └── history.component.ts │ │ │ ├── logout-confirmation │ │ │ ├── logout-confirmation.component.css │ │ │ ├── logout-confirmation.component.html │ │ │ └── logout-confirmation.component.ts │ │ │ ├── menu │ │ │ ├── menu.component.css │ │ │ ├── menu.component.html │ │ │ └── menu.component.ts │ │ │ ├── server │ │ │ ├── applications-manage │ │ │ │ ├── applications-manage.component.css │ │ │ │ ├── applications-manage.component.ts │ │ │ │ └── applications-manage.html │ │ │ └── create-serverid │ │ │ │ ├── create-serverid.component.css │ │ │ │ ├── create-serverid.component.html │ │ │ │ └── create-serverid.component.ts │ │ │ ├── status-bar │ │ │ ├── status-bar.component.css │ │ │ ├── status-bar.component.html │ │ │ └── status-bar.component.ts │ │ │ ├── transaction-details │ │ │ ├── transaction-details.component.css │ │ │ ├── transaction-details.component.html │ │ │ └── transaction-details.component.ts │ │ │ ├── wallet-routing.module.ts │ │ │ ├── wallet.component.css │ │ │ ├── wallet.component.html │ │ │ ├── wallet.component.ts │ │ │ └── wallet.module.ts │ ├── assets │ │ ├── .gitkeep │ │ ├── app.config.json │ │ ├── fonts │ │ │ ├── Linearicons-Free.eot │ │ │ ├── Linearicons-Free.svg │ │ │ ├── Linearicons-Free.ttf │ │ │ ├── Linearicons-Free.woff │ │ │ └── Linearicons-Free.woff2 │ │ ├── images │ │ │ ├── Tick_Mark-16.png │ │ │ ├── anim.svg │ │ │ ├── icons │ │ │ │ ├── 32x32.png │ │ │ │ ├── 512x512.png │ │ │ │ ├── icon-tray.ico │ │ │ │ ├── icon.icns │ │ │ │ ├── icon.ico │ │ │ │ └── icon.svg │ │ │ ├── if_Error_16.png │ │ │ ├── license_en.txt │ │ │ ├── logo-failed.png │ │ │ ├── logo.png │ │ │ ├── logo.svg │ │ │ ├── logo_aqua.png │ │ │ ├── logo_black.png │ │ │ ├── logo_pink.png │ │ │ ├── logo_white.png │ │ │ ├── logo_white.svg │ │ │ ├── notransactions.svg │ │ │ └── xserver-anim.svg │ │ └── themes │ │ │ ├── arya-blue │ │ │ └── theme.css │ │ │ ├── arya-green │ │ │ └── theme.css │ │ │ ├── arya-orange │ │ │ └── theme.css │ │ │ ├── arya-purple │ │ │ └── theme.css │ │ │ ├── bootstrap4-dark-blue │ │ │ └── theme.css │ │ │ ├── bootstrap4-dark-purple │ │ │ └── theme.css │ │ │ ├── bootstrap4-light-blue │ │ │ └── theme.css │ │ │ ├── bootstrap4-light-purple │ │ │ └── theme.css │ │ │ ├── fluent-light │ │ │ └── theme.css │ │ │ ├── luna-amber │ │ │ └── theme.css │ │ │ ├── luna-blue │ │ │ └── theme.css │ │ │ ├── luna-green │ │ │ └── theme.css │ │ │ ├── luna-pink │ │ │ └── theme.css │ │ │ ├── md-dark-deeppurple │ │ │ ├── fonts │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-regular.woff │ │ │ │ └── roboto-v20-latin-ext_latin-regular.woff2 │ │ │ └── theme.css │ │ │ ├── md-dark-indigo │ │ │ ├── fonts │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-regular.woff │ │ │ │ └── roboto-v20-latin-ext_latin-regular.woff2 │ │ │ └── theme.css │ │ │ ├── md-light-deeppurple │ │ │ ├── fonts │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-regular.woff │ │ │ │ └── roboto-v20-latin-ext_latin-regular.woff2 │ │ │ └── theme.css │ │ │ ├── md-light-indigo │ │ │ ├── fonts │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-regular.woff │ │ │ │ └── roboto-v20-latin-ext_latin-regular.woff2 │ │ │ └── theme.css │ │ │ ├── mdc-dark-deeppurple │ │ │ ├── fonts │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-regular.woff │ │ │ │ └── roboto-v20-latin-ext_latin-regular.woff2 │ │ │ └── theme.css │ │ │ ├── mdc-dark-indigo │ │ │ ├── fonts │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-regular.woff │ │ │ │ └── roboto-v20-latin-ext_latin-regular.woff2 │ │ │ └── theme.css │ │ │ ├── mdc-light-deeppurple │ │ │ ├── fonts │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-regular.woff │ │ │ │ └── roboto-v20-latin-ext_latin-regular.woff2 │ │ │ └── theme.css │ │ │ ├── mdc-light-indigo │ │ │ ├── fonts │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-500.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff │ │ │ │ ├── roboto-v20-latin-ext_latin-700.woff2 │ │ │ │ ├── roboto-v20-latin-ext_latin-regular.woff │ │ │ │ └── roboto-v20-latin-ext_latin-regular.woff2 │ │ │ └── theme.css │ │ │ ├── nova-accent │ │ │ └── theme.css │ │ │ ├── nova-alt │ │ │ └── theme.css │ │ │ ├── nova │ │ │ └── theme.css │ │ │ ├── rhea │ │ │ └── theme.css │ │ │ ├── saga-blue │ │ │ └── theme.css │ │ │ ├── saga-green │ │ │ └── theme.css │ │ │ ├── saga-orange │ │ │ └── theme.css │ │ │ ├── saga-purple │ │ │ └── theme.css │ │ │ ├── vela-blue │ │ │ └── theme.css │ │ │ ├── vela-green │ │ │ └── theme.css │ │ │ ├── vela-orange │ │ │ └── theme.css │ │ │ └── vela-purple │ │ │ └── theme.css │ ├── environments │ │ ├── environment.dev.ts │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── index.html │ ├── index.prod.html │ ├── karma.conf.js │ ├── main.ts │ ├── polyfills-test.ts │ ├── polyfills.ts │ ├── scss │ │ ├── _alert.scss │ │ ├── _badge.scss │ │ ├── _breadcrumb.scss │ │ ├── _button-group.scss │ │ ├── _buttons.scss │ │ ├── _card.scss │ │ ├── _carousel.scss │ │ ├── _close.scss │ │ ├── _code.scss │ │ ├── _custom-forms.scss │ │ ├── _custom.scss │ │ ├── _dropdown.scss │ │ ├── _fonts.scss │ │ ├── _forms.scss │ │ ├── _functions.scss │ │ ├── _grid.scss │ │ ├── _images.scss │ │ ├── _input-group.scss │ │ ├── _jumbotron.scss │ │ ├── _list-group.scss │ │ ├── _media.scss │ │ ├── _mixins.scss │ │ ├── _modal.scss │ │ ├── _nav.scss │ │ ├── _navbar.scss │ │ ├── _pagination.scss │ │ ├── _popover.scss │ │ ├── _print.scss │ │ ├── _progress.scss │ │ ├── _reboot.scss │ │ ├── _root.scss │ │ ├── _tables.scss │ │ ├── _tooltip.scss │ │ ├── _transitions.scss │ │ ├── _type.scss │ │ ├── _utilities.scss │ │ ├── _variables.scss │ │ ├── bootstrap-grid.scss │ │ ├── bootstrap-reboot.scss │ │ ├── bootstrap.scss │ │ ├── mixins │ │ │ ├── _alert.scss │ │ │ ├── _background-variant.scss │ │ │ ├── _badge.scss │ │ │ ├── _border-radius.scss │ │ │ ├── _box-shadow.scss │ │ │ ├── _breakpoints.scss │ │ │ ├── _buttons.scss │ │ │ ├── _caret.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _float.scss │ │ │ ├── _forms.scss │ │ │ ├── _gradients.scss │ │ │ ├── _grid-framework.scss │ │ │ ├── _grid.scss │ │ │ ├── _hover.scss │ │ │ ├── _image.scss │ │ │ ├── _list-group.scss │ │ │ ├── _lists.scss │ │ │ ├── _nav-divider.scss │ │ │ ├── _navbar-align.scss │ │ │ ├── _pagination.scss │ │ │ ├── _reset-text.scss │ │ │ ├── _resize.scss │ │ │ ├── _screen-reader.scss │ │ │ ├── _size.scss │ │ │ ├── _table-row.scss │ │ │ ├── _text-emphasis.scss │ │ │ ├── _text-hide.scss │ │ │ ├── _text-truncate.scss │ │ │ ├── _transition.scss │ │ │ └── _visibility.scss │ │ ├── themes │ │ │ ├── _dark.scss │ │ │ └── _light.scss │ │ └── utilities │ │ │ ├── _align.scss │ │ │ ├── _background.scss │ │ │ ├── _borders.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _display.scss │ │ │ ├── _embed.scss │ │ │ ├── _flex.scss │ │ │ ├── _float.scss │ │ │ ├── _position.scss │ │ │ ├── _screenreaders.scss │ │ │ ├── _sizing.scss │ │ │ ├── _spacing.scss │ │ │ ├── _text.scss │ │ │ └── _visibility.scss │ ├── styles.css │ ├── styles.css.map │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── typings.d.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json ├── tslint.json ├── webpack.config.js └── xServer.UI.njsproj ├── xServer.conf └── xServerWorker ├── BackgroundServices └── BlockProcessingWorker.cs ├── Dockerfile ├── Jobs ├── BlockPullerJob.cs ├── GraviexOrderbookJob.cs └── PayXServersJob.cs ├── Program.cs ├── Properties ├── PublishProfiles │ └── registry.hub.docker.com_x42protocoldocker.pubxml └── launchSettings.json ├── QuartzJobConfigurator.cs ├── Services └── BroadCaster.cs ├── appsettings.Development.json └── xServerWorker.csproj /.dockerignore: -------------------------------------------------------------------------------- 1 | **/.classpath 2 | **/.dockerignore 3 | **/.env 4 | **/.git 5 | **/.gitignore 6 | **/.project 7 | **/.settings 8 | **/.toolstarget 9 | **/.vs 10 | **/.vscode 11 | **/*.*proj.user 12 | **/*.dbmdl 13 | **/*.jfm 14 | **/azds.yaml 15 | **/bin 16 | **/charts 17 | **/docker-compose* 18 | **/Dockerfile* 19 | **/node_modules 20 | **/npm-debug.log 21 | **/obj 22 | **/secrets.dev.yaml 23 | **/values.dev.yaml 24 | LICENSE 25 | README.md -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.cs] 2 | 3 | # IDE0063: Use simple 'using' statement 4 | csharp_prefer_simple_using_statement = false:suggestion 5 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Create a report to help us improve this repository. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | Bug Description: 11 | A clear and concise description of what the bug is. 12 | 13 | Steps to reproduce the bug: 14 | 15 | 01. Go to '...' 16 | 02. Click on '...' 17 | 03. Scroll down to '...' 18 | 04. See error '...' 19 | 20 | Screenshots: 21 | If applicable, attach screenshots to help explain the issue you've experienced, please post them in a chronological manner, and on the proper step of the bug reproduction section. 22 | 23 | Expected Behavior: 24 | A clear and concise description of what you expected to happen. 25 | 26 | Desktop (please complete the following information if applicable): 27 | - OS: [e.g. iOS including version] 28 | - Browser: [e.g. chrome, safari] 29 | - Browser Version: [e.g. 22] 30 | 31 | Additional Context: 32 | Add any other context, descriptions or information about the problem here. 33 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/wiki-updates.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Wiki Updates 3 | about: Create a report to help us improve our wiki. 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | Update Description: 11 | A clear and concise description of what the update is about, is it related to a spelling mistake, error or simply an addition? 12 | 13 | Update location: 14 | Add a direct link here to wiki page you would like to update and the paragraph you would like your text to be added to. 15 | 16 | Update text: 17 | Add the new text here. 18 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/.gitmodules -------------------------------------------------------------------------------- /Common/Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Common/Enums/ApplicationEnum.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Enums 2 | { 3 | public enum ApplicationEnum 4 | { 5 | Wordpress =1 , 6 | Magento =2 , 7 | Joomla = 3, 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Common/Enums/InstructionTypeEnum.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Enums 2 | { 3 | public enum InstructionTypeEnum 4 | { 5 | RegisterProfile = 1, 6 | PriceLock = 2, 7 | NewDnsZone = 3, 8 | UpdateDnsZone = 4, 9 | DeleteDnsZone = 5, 10 | NewApp = 6, 11 | MigrateApp = 7, 12 | BackupApp = 8, 13 | UpdateAppPlan = 9, 14 | RegisterNewNameserver = 10, 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Common/Enums/XDocumentTypeEnum.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Enums 2 | { 3 | public enum XDocumentTypeEnum 4 | { 5 | Internal = 1, 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Common/Models/DApps/DappDeploymentModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Common.Models.DApps.Models 8 | { 9 | public class DappDeploymentModel 10 | { 11 | public string Domain { get; set; } 12 | public Dictionary Args { get; set; } 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Common/Models/Graviex/GraviexOrderBookModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Common.Models.Graviex 4 | { 5 | public class GraviexOrderBookModel 6 | { 7 | public int Timestamp { get; set; } 8 | public List> Asks { get; set; } 9 | public List> Bids { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Common/Models/Graviex/GraviexTickerModel.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Models.Graviex 2 | { 3 | public class GraviexTickerModel 4 | { 5 | public int At { get; set; } 6 | public TickerModel Ticker { get; set; } 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Common/Models/Graviex/TickerModel.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Models.Graviex 2 | { 3 | public class TickerModel 4 | { 5 | public string Buy { get; set; } 6 | public decimal Sell { get; set; } 7 | public string Low { get; set; } 8 | public string High { get; set; } 9 | public string Last { get; set; } 10 | public string Vol { get; set; } 11 | public string Volbtc { get; set; } 12 | public float Change { get; set; } 13 | } 14 | } -------------------------------------------------------------------------------- /Common/Models/OrderBook/OrderBookModel.cs: -------------------------------------------------------------------------------- 1 | using MongoDB.Bson.Serialization.Attributes; 2 | using System.Collections.Generic; 3 | using System.Text.Json.Serialization; 4 | 5 | namespace Common.Models.OrderBook 6 | { 7 | public class OrderBookModel 8 | { 9 | [BsonElement("timestamp")] 10 | public int Timestamp { get; set; } 11 | [BsonElement("asks")] 12 | [JsonPropertyName("asks")] 13 | public List Asks { get; set; } 14 | 15 | [BsonElement("bids")] 16 | [JsonPropertyName("bids")] 17 | public List Bids { get; set; } 18 | 19 | public OrderBookModel(int timstamp) 20 | { 21 | Timestamp = timstamp; 22 | Asks = new List(); 23 | Bids = new List(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Common/Models/OrderBook/OrderModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Common.Models.OrderBook 4 | { 5 | public class OrderModel 6 | { 7 | [JsonProperty("price")] 8 | public decimal Price { get; set; } 9 | [JsonProperty("quantity")] 10 | public decimal Quantity { get; set; } 11 | 12 | public OrderModel(decimal price, decimal quantity) 13 | { 14 | Price = price; 15 | Quantity = quantity; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Common/Models/XDocuments/ApplicationModel.cs: -------------------------------------------------------------------------------- 1 | using Common.Enums; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace Common.Models.XDocuments.Applications 5 | { 6 | public class ApplicationModel : XDocumentModel 7 | { 8 | [Required] 9 | [Range(1, 3, 10 | ErrorMessage = "Value for {0} must be between {1} and {2}.")] 11 | public ApplicationEnum Application { get; set; } 12 | public ApplicationModel() 13 | { 14 | 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Common/Models/XDocuments/NewZoneModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace Common.Models.XDocuments.DNS 4 | { 5 | public class NewZoneModel 6 | { 7 | [Required] 8 | public string Kind { get; set; } 9 | [Required] 10 | public string Name { get; set; } 11 | 12 | public NewZoneModel(string name) 13 | { 14 | Kind = "Native"; 15 | Name = name+"."; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Common/Models/XDocuments/XDocumentModel.cs: -------------------------------------------------------------------------------- 1 | 2 | using Common.Enums; 3 | 4 | namespace Common.Models.XDocuments 5 | { 6 | public abstract class XDocumentModel 7 | { 8 | public XDocumentTypeEnum DocumentType { get; set; } 9 | public InstructionTypeEnum ActionType { get; set; } 10 | public string KeyAddress { get; set; } 11 | public string Signature { get; set; } 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Common/Models/XDocuments/Zones/BasicZoneModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Common.Models.XDocuments.Zones 4 | { 5 | public class BasicZoneModel 6 | { 7 | public string Zone { get; set; } 8 | public List Rrsets { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Common/Models/XDocuments/Zones/DnsRecord.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace Common.Models.XDocuments.Zones 4 | { 5 | public class DnsRecord 6 | { 7 | [JsonProperty("content")] 8 | public string Content { get; set; } 9 | 10 | [JsonProperty("disabled")] 11 | public bool Disabled { get; set; } 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Common/Models/XDocuments/Zones/RrSet.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.Collections.Generic; 3 | 4 | namespace Common.Models.XDocuments.Zones 5 | { 6 | public class RrSet 7 | { 8 | [JsonProperty("changetype")] 9 | public string ChangeType { get; set; } 10 | 11 | [JsonProperty("name")] 12 | public string Name { get; set; } 13 | 14 | [JsonProperty("type")] 15 | public string Type { get; set; } 16 | 17 | [JsonProperty("ttl")] 18 | public int Ttl { get; set; } 19 | 20 | [JsonProperty("records")] 21 | public List Records { get; set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Common/Models/XDocuments/Zones/RrSetUpdateModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Common.Models.XDocuments.Zones 8 | { 9 | public class RrSetUpdateModel 10 | { 11 | public List Rrsets { get; set; } 12 | 13 | public RrSetUpdateModel(List rrSets) 14 | { 15 | Rrsets = rrSets; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Common/Models/XServer/Collateral.cs: -------------------------------------------------------------------------------- 1 | using NBitcoin; 2 | 3 | namespace Common.Models.XServer 4 | { 5 | public class Collateral 6 | { 7 | /// The amount needed for servernode collateral 8 | public Money Amount { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /Common/Models/XServer/PingResponse.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Models.XServer 2 | { 3 | public class PingResponse 4 | { 5 | public string Version { get; set; } 6 | public int BestBlockHeight { get; set; } 7 | public int Tier { get; set; } 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /Common/Models/XServer/StartupStatus.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Models.XServer 2 | { 3 | /// The network startup status. 4 | public enum StartupStatus 5 | { 6 | NotStarted = 0, 7 | NodeConnection = 1, 8 | Database = 2, 9 | IBD = 3, 10 | AddressIndexer = 4, 11 | XServerConnection = 5, 12 | Profile = 6, 13 | XServer = 7, 14 | Started = 100 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Common/Models/XServer/Tier.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Models.XServer 2 | { 3 | public class Tier 4 | { 5 | /// xServer tier type. 6 | public enum TierLevel 7 | { 8 | /// Not a tier, but just a seed node. 9 | Seed = 0, 10 | /// A peer that meets the requirements for a tier 1 node. 11 | One = 1, 12 | /// A peer that meets the requirements for a tier 2 node. 13 | Two = 2, 14 | /// A peer that meets the requirements for a tier 3 node. 15 | Three = 3 16 | } 17 | 18 | public Tier(TierLevel level, Collateral collateral) 19 | { 20 | Level = level; 21 | Collateral = collateral; 22 | } 23 | 24 | public TierLevel Level { get; set; } 25 | 26 | public Collateral Collateral { get; set; } 27 | } 28 | } -------------------------------------------------------------------------------- /Common/Models/x42Blockcore/Node.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Models.x42Blockcore 2 | { 3 | public class Node 4 | { 5 | public string Name { get; set; } 6 | public int NetworkProtocol { get; set; } 7 | public string NetworkAddress { get; set; } 8 | public int Priority { get; set; } 9 | public int NetworkPort { get; set; } 10 | public string Version { get; set; } 11 | public int ResponseTime { get; set; } 12 | public int Tier { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Common/Models/x42Blockcore/ScriptPubKeyModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | public class ScriptPubKeyModel 4 | { 5 | public string Asm { get; set; } 6 | public string Hex { get; set; } 7 | public string Type { get; set; } 8 | public int? ReqSigs { get; set; } 9 | public List Addresses { get; set; } 10 | } 11 | -------------------------------------------------------------------------------- /Common/Models/x42Blockcore/ScriptSigModel.cs: -------------------------------------------------------------------------------- 1 | public class ScriptSigModel 2 | { 3 | public string Asm { get; set; } 4 | public string Hex { get; set; } 5 | } 6 | -------------------------------------------------------------------------------- /Common/Models/x42Blockcore/SignMessageModel.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Models.x42Blockcore 2 | { 3 | public class SignMessageModel 4 | { 5 | public string WalletName { get; set; } 6 | public string AccountName { get; set; } 7 | public string Password { get; set; } 8 | public string ExternalAddress { get; set; } 9 | public string Message { get; set; } 10 | } 11 | } 12 | 13 | -------------------------------------------------------------------------------- /Common/Models/x42Blockcore/SignMessageResponse.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Models.x42Blockcore 2 | { 3 | public class SignMessageResponse 4 | { 5 | public string SignedAddress { get; set; } 6 | public string Signature { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Common/Models/x42Blockcore/SimpleBlockModel.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Models.x42Blockcore 2 | { 3 | public class SimpleBlockModel 4 | { 5 | public int BlockNumber { get; set; } 6 | public string BlockHash { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Common/Models/x42Blockcore/TransactionModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | public class TransactionModel 4 | { 5 | public string Hex { get; set; } 6 | public string Txid { get; set; } 7 | public string Hash { get; set; } 8 | public int Version { get; set; } 9 | public int Size { get; set; } 10 | public int Vsize { get; set; } 11 | public int Weight { get; set; } 12 | public int Locktime { get; set; } 13 | public List Vin { get; set; } 14 | public List Vout { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /Common/Models/x42Blockcore/VinModel.cs: -------------------------------------------------------------------------------- 1 | public class VinModel 2 | { 3 | public string Coinbase { get; set; } 4 | public object Sequence { get; set; } 5 | public string Txid { get; set; } 6 | public int? Vout { get; set; } 7 | public ScriptSigModel ScriptSig { get; set; } 8 | } 9 | -------------------------------------------------------------------------------- /Common/Models/x42Blockcore/VoutModel.cs: -------------------------------------------------------------------------------- 1 | public class VoutModel 2 | { 3 | public double Value { get; set; } 4 | public int N { get; set; } 5 | public ScriptPubKeyModel ScriptPubKey { get; set; } 6 | } 7 | -------------------------------------------------------------------------------- /Common/Models/x42Blockcore/XServerStatsReponse.cs: -------------------------------------------------------------------------------- 1 | namespace Common.Models.x42Blockcore 2 | { 3 | public class XServerStatsReponse 4 | { 5 | public int Connected { get; set; } 6 | public Node[] Nodes { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Common/Services/IDappProvisioner.cs: -------------------------------------------------------------------------------- 1 | using Common.Models.DApps.Models; 2 | using System.Threading.Tasks; 3 | 4 | namespace Common.Services 5 | { 6 | public interface IDappProvisioner 7 | { 8 | Task ProvisionNewAppAsync(DappDefinitionModel dappDefinitionModel, DappDeploymentModel deploymentModel); 9 | } 10 | } -------------------------------------------------------------------------------- /Dockerfile-BlockCoreNode: -------------------------------------------------------------------------------- 1 | FROM mcr.microsoft.com/dotnet/aspnet:6.0 2 | 3 | WORKDIR /usr/local/app/ 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y curl libsnappy-dev libc-dev libc6-dev libc6 unzip \ 7 | && apt-get clean \ 8 | && rm -rf /var/lib/apt/lists/* 9 | 10 | ARG BCNODE_VERSION 11 | RUN curl -Ls https://github.com/x42protocol/x42-BlockCore/releases/download/v${BCNODE_VERSION}/x42.Node-${BCNODE_VERSION}-linux-x64.tar.gz | tar -xvz -C . 12 | 13 | ENTRYPOINT ["dotnet", "Blockcore.Node.dll"] 14 | -------------------------------------------------------------------------------- /build.bat: -------------------------------------------------------------------------------- 1 | dotnet restore xServer.D.sln 2 | dotnet build -c Release -r linux-x64 -v m xServer.D.sln -p:ImportByWildcardBeforeSolution=false 3 | dotnet publish -c Release -r linux-x64 -v m -o ./build xServer.D/xServerD.csproj -p:ImportByWildcardBeforeSolution=false 4 | tar -cvzf x42.Node-1.1.29-linux-x64.tar.gz -C build\xserver.d * 5 | 6 | -------------------------------------------------------------------------------- /docker-compose.dcproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 2.1 5 | Linux 6 | daaeb94c-931a-4dc8-bacf-aeb58db98cf2 7 | 8 | 9 | 10 | docker-compose.yml 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docker-compose.override.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | -------------------------------------------------------------------------------- /launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "Docker Compose": { 4 | "commandName": "DockerCompose", 5 | "commandVersion": "1.0", 6 | "composeLaunchAction": "None", 7 | "composeLaunchServiceName": "xserverd", 8 | "serviceActions": { 9 | "mongo": "StartWithoutDebugging", 10 | "postgres": "StartWithoutDebugging", 11 | "xserverd": "StartDebugging" 12 | } 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@types/jest": "^27.4.1" 4 | }, 5 | "devDependencies": { 6 | "@types/jasmine": "^3.10.3" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /xServer.D/.env: -------------------------------------------------------------------------------- 1 | TimeZone=America/New_York 2 | OLS_VERSION=1.7.15 3 | PHP_VERSION=lsphp80 4 | MYSQL_DATABASE=wordpress 5 | MYSQL_ROOT_PASSWORD=password 6 | MYSQL_USER=wordpress 7 | MYSQL_PASSWORD=password 8 | DOMAIN=oti.x42.cloud 9 | -------------------------------------------------------------------------------- /xServer.D/Controllers/Converters/ToStringJsonConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Newtonsoft.Json; 3 | 4 | namespace x42.Controllers.Converters 5 | { 6 | public class ToStringJsonConverter : JsonConverter 7 | { 8 | public override bool CanRead => false; 9 | 10 | public override bool CanConvert(Type objectType) 11 | { 12 | return true; 13 | } 14 | 15 | public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 16 | { 17 | writer.WriteValue(value.ToString()); 18 | } 19 | 20 | public override object ReadJson(JsonReader reader, Type objectType, object existingValue, 21 | JsonSerializer serializer) 22 | { 23 | throw new NotImplementedException(); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/DashboardController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using x42.Server; 3 | 4 | namespace x42.Controllers 5 | { 6 | /// 7 | /// 8 | /// Controller providing HTML Dashboard 9 | /// 10 | [ApiController] 11 | [Route("")] 12 | //[Authorize(Policy = Policy.PrivateAccess)] 13 | public class DashboardController : Controller 14 | { 15 | private readonly IxServer xServer; 16 | 17 | public DashboardController(IxServer xServer) 18 | { 19 | this.xServer = xServer; 20 | } 21 | 22 | /// 23 | /// Returns the last iteration of the log output 24 | /// 25 | /// text/latest logs 26 | [HttpGet] 27 | [Route("/")] 28 | public IActionResult Log() 29 | { 30 | string content = xServer.LastLogOutput; 31 | return Content(content); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/FeatureController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using x42.Configuration; 3 | using x42.ServerNode; 4 | using x42.Server; 5 | 6 | namespace x42.Controllers 7 | { 8 | public abstract class FeatureController : Controller 9 | { 10 | private FeatureController( 11 | IxServer xServer = null, 12 | ServerSettings nodeSettings = null, 13 | ServerNodeBase network = null) 14 | { 15 | this.xServer = xServer; 16 | Settings = nodeSettings; 17 | Network = network; 18 | } 19 | 20 | protected IxServer xServer { get; set; } 21 | 22 | protected ServerSettings Settings { get; set; } 23 | 24 | protected ServerNodeBase Network { get; set; } 25 | } 26 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Requests/LogRulesRequest.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace x42.Controllers.Requests 5 | { 6 | public class LogRulesRequest 7 | { 8 | public List LogRules { get; set; } 9 | } 10 | 11 | public class LogRuleRequest 12 | { 13 | /// 14 | /// The name of the rule. 15 | /// 16 | [Required(ErrorMessage = "The name of the rule is missing.")] 17 | public string RuleName { get; set; } 18 | 19 | /// 20 | /// The log level. 21 | /// 22 | [Required(ErrorMessage = "The log level is missing.")] 23 | public string LogLevel { get; set; } 24 | } 25 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Requests/ProfileEditRequest.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel.DataAnnotations; 3 | 4 | namespace x42.Controllers.Requests 5 | { 6 | public class ProfileEditRequest 7 | { 8 | /// 9 | /// The Public Key Address of the profile requesting to be registered. 10 | /// 11 | [Required(ErrorMessage = "The key address is missing.")] 12 | [StringLength(128, ErrorMessage = "The key address cannot exceed 128 characters.")] 13 | public string KeyAddress { get; set; } 14 | 15 | /// 16 | /// Profile fields. 17 | /// 18 | public List ProfileFields { get; set; } 19 | } 20 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Requests/ProfileRequest.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace x42.Controllers.Requests 4 | { 5 | public class ProfileRequest 6 | { 7 | /// 8 | /// The key address of the profile being requested. 9 | /// 10 | [StringLength(128, ErrorMessage = "The key address cannot exceed 128 characters.")] 11 | public string KeyAddress { get; set; } 12 | 13 | /// 14 | /// The profile name of the profile being requested. 15 | /// 16 | [StringLength(64, ErrorMessage = "The profile name cannot exceed 64 characters.")] 17 | public string Name { get; set; } 18 | } 19 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Requests/SetupRequest.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace x42.Controllers.Requests 4 | { 5 | public class SetupRequest 6 | { 7 | /// 8 | /// The sign address the server will be registered with. 9 | /// 10 | public string SignAddress { get; set; } 11 | 12 | /// 13 | /// The key address the server will be registered with. 14 | /// 15 | [Required(ErrorMessage = "The key address is required.")] 16 | public string KeyAddress { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Requests/SubmitPaymentRequest.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace x42.Controllers.Requests 4 | { 5 | public class SubmitPaymentRequest 6 | { 7 | /// 8 | /// The payment id to be submitted. 9 | /// 10 | [Required(ErrorMessage = "PaymentId is missing")] 11 | public string PriceLockId { get; set; } 12 | 13 | /// 14 | /// The transaction details. 15 | /// 16 | public string TransactionHex { get; set; } 17 | 18 | /// 19 | /// The transaction ID. 20 | /// 21 | [Required(ErrorMessage = "TransactionId is missing")] 22 | public string TransactionId { get; set; } 23 | 24 | /// 25 | /// Proof of payment signature by payee. 26 | /// 27 | [Required(ErrorMessage = "PayeeSignature is missing")] 28 | public string PayeeSignature { get; set; } 29 | } 30 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Results/CountResult.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Controllers.Results 2 | { 3 | /// 4 | /// Class representing a count result. 5 | /// 6 | public class CountResult 7 | { 8 | /// Count result. 9 | public int Count { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Results/PairResult.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Controllers.Results 2 | { 3 | public class PairResult 4 | { 5 | public int Id { get; set; } 6 | 7 | public string Symbol { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Results/PingResult.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Controllers.Results 2 | { 3 | /// 4 | /// Class representing the ping result of the currently running node. 5 | /// 6 | public class PingResult 7 | { 8 | /// 9 | /// Initializes a new instance of the class. 10 | /// 11 | public PingResult() { } 12 | 13 | /// The node's version. 14 | public string Version { get; set; } 15 | 16 | /// The nodes best block height. 17 | public uint? BestBlockHeight { get; set; } 18 | 19 | /// The node's tier level. 20 | public int Tier { get; set; } 21 | 22 | /// The node's public key. 23 | public string PublicKey { get; set; } 24 | } 25 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Results/PriceResult.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Controllers.Results 2 | { 3 | /// 4 | /// Class representing the price information this node has gathered. 5 | /// 6 | public class PriceResult 7 | { 8 | /// 9 | /// Initializes a new instance of the class. 10 | /// 11 | public PriceResult() { } 12 | 13 | /// The node's price average. 14 | public decimal Price { get; set; } = 0; 15 | 16 | /// The related pair. 17 | public int Pair { get; set; } 18 | } 19 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Results/ProfileField.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Controllers.Results 2 | { 3 | public class ProfileField 4 | { 5 | public string Value { get; set; } 6 | 7 | public string Signature { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Results/ProfileResult.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace x42.Controllers.Results 4 | { 5 | public class ProfileResult 6 | { 7 | public string Name { get; set; } 8 | 9 | public string KeyAddress { get; set; } 10 | 11 | public string ReturnAddress { get; set; } 12 | 13 | public string Signature { get; set; } 14 | 15 | public string PriceLockId { get; set; } 16 | 17 | public int Status { get; set; } 18 | 19 | public int ReservationExpirationBlock { get; set; } 20 | 21 | public int BlockConfirmed { get; set; } 22 | 23 | public List ProfileFields { get; set; } 24 | } 25 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Results/ProfilesResult.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace x42.Controllers.Results 4 | { 5 | public class ProfilesResult 6 | { 7 | public string Name { get; set; } 8 | 9 | public string KeyAddress { get; set; } 10 | 11 | public string ReturnAddress { get; set; } 12 | 13 | public string Signature { get; set; } 14 | 15 | public string PriceLockId { get; set; } 16 | 17 | public int Status { get; set; } 18 | 19 | public int BlockConfirmed { get; set; } 20 | 21 | public List ProfileFields { get; set; } 22 | } 23 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Results/ReserveProfileResult.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Controllers.Results 2 | { 3 | public class ReserveProfileResult 4 | { 5 | public bool Success { get; set; } 6 | 7 | public string ResultMessage { get; set; } 8 | 9 | public string PriceLockId { get; set; } 10 | 11 | public int Status { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Results/ServerRegisterResult.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | 3 | namespace x42.Controllers.Results 4 | { 5 | public class ServerRegisterResult 6 | { 7 | public long Id { get; set; } 8 | 9 | public string ProfileName { get; set; } 10 | 11 | public int NetworkProtocol { get; set; } 12 | 13 | public string NetworkAddress { get; set; } 14 | 15 | public long NetworkPort { get; set; } 16 | 17 | public string KeyAddress { get; set; } 18 | 19 | public string SignAddress { get; set; } 20 | 21 | public string FeeAddress { get; set; } 22 | 23 | public string Signature { get; set; } 24 | 25 | public int Tier { get; set; } 26 | } 27 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Results/SetupResponse.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Controllers.Results 2 | { 3 | /// 4 | /// The response data structure received by a client after requesting to setup the xServer. 5 | /// Refer to . 6 | /// 7 | public class SetupResponse 8 | { 9 | /// A Base58 address from the wallet used to sign. 10 | public string SignAddress { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Results/SubmitPaymentResult.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Controllers.Results 2 | { 3 | public class SubmitPaymentResult 4 | { 5 | public bool Success { get; set; } 6 | 7 | public int ErrorCode { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /xServer.D/Controllers/Results/TierType.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Controllers.Results 2 | { 3 | /// xServer tier type. 4 | public enum TierType 5 | { 6 | /// Not a tier, but just a seed node. 7 | Seed = 0, 8 | /// A peer that meets the requirements for a tier 1 node. 9 | One = 1, 10 | /// A peer that meets the requirements for a tier 2 node. 11 | Two = 2, 12 | /// A peer that meets the requirements for a tier 3 node. 13 | Three = 3 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /xServer.D/Feature/API/EnumSchemaFilter.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.OpenApi.Any; 2 | using Microsoft.OpenApi.Models; 3 | using Swashbuckle.AspNetCore.SwaggerGen; 4 | using System; 5 | using System.Linq; 6 | 7 | namespace x42.Feature.API 8 | { 9 | public class EnumSchemaFilter : ISchemaFilter 10 | { 11 | public void Apply(OpenApiSchema model, SchemaFilterContext context) 12 | { 13 | if (context.Type.IsEnum) 14 | { 15 | model.Enum.Clear(); 16 | Enum.GetNames(context.Type) 17 | .ToList() 18 | .ForEach(n => model.Enum.Add(new OpenApiString(n))); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /xServer.D/Feature/API/ICertificateStore.cs: -------------------------------------------------------------------------------- 1 | using System.Security.Cryptography.X509Certificates; 2 | 3 | namespace x42.Feature.Api 4 | { 5 | /// 6 | /// An interface providing operations on certificate repositories. 7 | /// 8 | public interface ICertificateStore 9 | { 10 | /// 11 | /// Tries to retrieve a certificate from the file system. 12 | /// 13 | /// The full path of the certificate file. 14 | /// The certificate, if found. 15 | /// A value indicating whether or not the certificate has been found at the specified location. 16 | bool TryGet(string filePath, out X509Certificate2 certificate); 17 | } 18 | } -------------------------------------------------------------------------------- /xServer.D/Feature/API/Requirements/Polocy.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.API.Requirements 2 | { 3 | public static class Policy 4 | { 5 | // 6 | /// Allowing only the selected private addreses defined in the policy. 7 | /// 8 | public const string PrivateAccess = "PrivateAccess"; 9 | } 10 | } -------------------------------------------------------------------------------- /xServer.D/Feature/DApps/IDAppManager.cs: -------------------------------------------------------------------------------- 1 | using Common.Models.DApps.Models; 2 | using System.Threading.Tasks; 3 | 4 | namespace x42.Feature.DApps 5 | { 6 | public interface IDAppManager 7 | { 8 | public Task ProvisionNewAppAsync(DappDefinitionModel dappDefinitionModel, DappDeploymentModel deploymentModel); 9 | Task DeleteAppAsync(); 10 | Task MigrateAppAsync(); 11 | Task FullBackupAppAsync(); 12 | } 13 | } -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Context/IMongoContext.cs: -------------------------------------------------------------------------------- 1 | using MongoDB.Driver; 2 | using System; 3 | using System.Threading.Tasks; 4 | 5 | namespace x42.Feature.Database.Context 6 | { 7 | public interface IMongoContext 8 | { 9 | MongoClient MongoClient { get; set; } 10 | IClientSessionHandle Session { get; set; } 11 | 12 | void AddCommand(Func func); 13 | void Dispose(); 14 | IMongoCollection GetCollection(string name); 15 | Task SaveChanges(); 16 | } 17 | } -------------------------------------------------------------------------------- /xServer.D/Feature/Database/DatabaseFacadeExtensions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.EntityFrameworkCore.Infrastructure; 2 | using Microsoft.EntityFrameworkCore.Storage; 3 | 4 | public static class DatabaseFacadeExtensions 5 | { 6 | public static bool Exists(this DatabaseFacade source) 7 | { 8 | return source.GetService().Exists(); 9 | } 10 | } -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Entities/DataDictionary.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.Database.Entities 2 | { 3 | public class DataDictionary 4 | { 5 | public string Key { get; set; } 6 | public string Value { get; set; } 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Entities/PriceLock.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace x42.Feature.Database.Entities 4 | { 5 | public class PriceLock 6 | { 7 | public Guid PriceLockId { get; set; } 8 | 9 | public int Status { get; set; } 10 | 11 | public decimal RequestAmount { get; set; } 12 | 13 | public int RequestAmountPair { get; set; } 14 | 15 | public decimal FeeAmount { get; set; } 16 | 17 | public string FeeAddress { get; set; } 18 | 19 | public decimal DestinationAmount { get; set; } 20 | 21 | public string DestinationAddress { get; set; } 22 | 23 | public string TransactionId { get; set; } 24 | 25 | public string SignAddress { get; set; } 26 | 27 | public string PriceLockSignature { get; set; } 28 | 29 | public string PayeeSignature { get; set; } 30 | 31 | public int ExpireBlock { get; set; } 32 | 33 | public bool Relayed { get; set; } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Entities/ProfileFields.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.Database.Entities 2 | { 3 | public class ProfileFields 4 | { 5 | public string KeyAddress { get; set; } 6 | public string Name { get; set; } 7 | public string Signature { get; set; } 8 | public string TransactionId { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Entities/ProfileReservation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace x42.Feature.Database.Entities 4 | { 5 | public class ProfileReservation 6 | { 7 | public Guid ReservationId { get; set; } 8 | public string Name { get; set; } 9 | public string KeyAddress { get; set; } 10 | public string ReturnAddress { get; set; } 11 | public string Signature { get; set; } 12 | public int Status { get; set; } 13 | public string PriceLockId { get; set; } 14 | public int ReservationExpirationBlock { get; set; } 15 | public bool Relayed { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Entities/Server.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace x42.Feature.Database.Entities 4 | { 5 | public class Server 6 | { 7 | public int Id { get; set; } 8 | public string ProfileName { get; set; } 9 | public string SignAddress { get; set; } 10 | public int ProfileHeight { get; set; } 11 | public DateTime DateAdded { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Entities/ServerNode.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace x42.Feature.Database.Entities 4 | { 5 | public class ServerNode 6 | { 7 | public long Id { get; set; } 8 | public string ProfileName { get; set; } 9 | public int NetworkProtocol { get; set; } 10 | public string NetworkAddress { get; set; } 11 | public long NetworkPort { get; set; } 12 | public string KeyAddress { get; set; } 13 | public string SignAddress { get; set; } 14 | public string FeeAddress { get; set; } 15 | public int Tier { get; set; } 16 | public string Signature { get; set; } 17 | public DateTime DateAdded { get; set; } 18 | public DateTime LastSeen { get; set; } 19 | public long Priority { get; set; } 20 | public bool Active { get; set; } 21 | public bool Relayed { get; set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Repositories/IProfileReservationRepository.cs: -------------------------------------------------------------------------------- 1 | using x42.Feature.Database.Entities; 2 | 3 | namespace x42.Feature.Database.Repositories 4 | { 5 | public interface IProfileReservationRepository : IRepository 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Repositories/IRepository.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Threading.Tasks; 4 | 5 | namespace x42.Feature.Database.Repositories 6 | { 7 | public interface IRepository : IDisposable where TEntity : class 8 | { 9 | void Add(TEntity obj); 10 | Task GetById(Guid id); 11 | Task> GetAll(); 12 | void Update(TEntity obj); 13 | void Remove(Guid id); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Repositories/MongoRepository.cs: -------------------------------------------------------------------------------- 1 | 2 | using x42.Feature.Database.Context; 3 | 4 | namespace x42.Feature.Database.Repositories 5 | { 6 | public class MongoRepository : BaseRepository where TEntity : class, new() 7 | { 8 | public MongoRepository(IMongoContext context) : base(context) 9 | { 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Repositories/Profiles/IProfileRepository.cs: -------------------------------------------------------------------------------- 1 | using x42.Feature.Database.Entities; 2 | 3 | namespace x42.Feature.Database.Repositories.Profiles 4 | { 5 | public interface IProfileRepository : IRepository 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Tables/DictionaryData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | 5 | namespace x42.Feature.Database.Tables 6 | { 7 | [Table("dictionary")] 8 | public class DictionaryData 9 | { 10 | [Key] 11 | public string Key { get; set; } 12 | public string Value { get; set; } 13 | } 14 | } -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Tables/DomainData.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace x42.Feature.Database.Tables 5 | { 6 | [Table("domain")] 7 | 8 | public class DomainData 9 | { 10 | [Key] 11 | public string Name { get; set; } 12 | public string KeyAddress { get; set; } 13 | public string ReturnAddress { get; set; } 14 | public string Signature { get; set; } 15 | public int Status { get; set; } 16 | public string PriceLockId { get; set; } 17 | public int BlockConfirmed { get; set; } 18 | public bool Relayed { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Tables/ProfileData.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace x42.Feature.Database.Tables 5 | { 6 | [Table("profile")] 7 | public class ProfileData 8 | { 9 | [Key] 10 | public string Name { get; set; } 11 | public string KeyAddress { get; set; } 12 | public string ReturnAddress { get; set; } 13 | public string Signature { get; set; } 14 | public int Status { get; set; } 15 | public string PriceLockId { get; set; } 16 | public int BlockConfirmed { get; set; } 17 | public bool Relayed { get; set; } 18 | } 19 | } -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Tables/ProfileFieldsData.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel.DataAnnotations; 2 | using System.ComponentModel.DataAnnotations.Schema; 3 | 4 | namespace x42.Feature.Database.Tables 5 | { 6 | [Table("profile")] 7 | public class ProfileFieldsData 8 | { 9 | [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 10 | [Key] 11 | public string KeyAddress { get; set; } 12 | public string Name { get; set; } 13 | public string Signature { get; set; } 14 | public string TransactionId { get; set; } 15 | } 16 | } -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Tables/ProfileReservationData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | 5 | namespace x42.Feature.Database.Tables 6 | { 7 | [Table("profilereservation")] 8 | public class ProfileReservationData 9 | { 10 | [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 11 | [Key] 12 | public Guid ReservationId { get; set; } 13 | public string Name { get; set; } 14 | public string KeyAddress { get; set; } 15 | public string ReturnAddress { get; set; } 16 | public string Signature { get; set; } 17 | public int Status { get; set; } 18 | public string PriceLockId { get; set; } 19 | public int ReservationExpirationBlock { get; set; } 20 | public bool Relayed { get; set; } 21 | } 22 | } -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Tables/ProfileReservationData2.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using x42.Feature.Database.Repositories; 3 | 4 | namespace x42.Feature.Database.Tables 5 | { 6 | public class ProfileReservationData2 7 | { 8 | public Guid ReservationId { get; set; } 9 | public string Name { get; set; } 10 | public string KeyAddress { get; set; } 11 | public string ReturnAddress { get; set; } 12 | public string Signature { get; set; } 13 | public int Status { get; set; } 14 | public string PriceLockId { get; set; } 15 | public int ReservationExpirationBlock { get; set; } 16 | public bool Relayed { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /xServer.D/Feature/Database/Tables/ServerData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel.DataAnnotations; 3 | using System.ComponentModel.DataAnnotations.Schema; 4 | 5 | namespace x42.Feature.Database.Tables 6 | { 7 | [Table("server")] 8 | public class ServerDataaazzz 9 | { 10 | [Key] 11 | [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 12 | public int Id { get; set; } 13 | public string ProfileName { get; set; } 14 | public string SignAddress { get; set; } 15 | public int ProfileHeight { get; set; } 16 | public DateTime DateAdded { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /xServer.D/Feature/Database/UoW/IUnitOfWork.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | 3 | namespace x42.Feature.Database.UoW 4 | { 5 | public interface IUnitOfWork 6 | { 7 | Task Commit(); 8 | void Dispose(); 9 | } 10 | } -------------------------------------------------------------------------------- /xServer.D/Feature/Database/UoW/UnitOfWork.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | using x42.Feature.Database.Context; 3 | 4 | namespace x42.Feature.Database.UoW 5 | { 6 | public class UnitOfWork : IUnitOfWork 7 | { 8 | private readonly IMongoContext _context; 9 | 10 | public UnitOfWork(IMongoContext context) 11 | { 12 | _context = context; 13 | } 14 | 15 | public async Task Commit() 16 | { 17 | var changeAmount = await _context.SaveChanges(); 18 | 19 | return changeAmount > 0; 20 | } 21 | 22 | public void Dispose() 23 | { 24 | _context.Dispose(); 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /xServer.D/Feature/Metrics/IMemoryMetricsService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace x42.Feature.Metrics 8 | { 9 | public interface IMemoryMetricsService 10 | { 11 | MemoryMetrics GetMetrics(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /xServer.D/Feature/Metrics/IProcessorMetrics.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace x42.Feature.Metrics 8 | { 9 | public interface IProcessorMetricsService 10 | { 11 | public ProcessorMetrics GetMetrics(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /xServer.D/Feature/Metrics/IRuntimeInformationService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.InteropServices; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace x42.Feature.Metrics 9 | { 10 | public interface IRuntimeInformationService 11 | { 12 | string GetFrameworkDescription(); 13 | Architecture GetOSArchitecture(); 14 | string GetOSDescription(); 15 | OSPlatform GetOsPlatform(); 16 | Architecture GetProcessArchitecture(); 17 | string GetRuntimeIdentifier(); 18 | bool IsFreeBSD(); 19 | bool IsLinux(); 20 | bool IsOSX(); 21 | bool IsUnix(); 22 | bool IsWindows(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /xServer.D/Feature/Metrics/Models/HostStatsModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace x42.Feature.Metrics.Models 6 | { 7 | public class HostStatsModel 8 | { 9 | public double ProcessorUtilizationPercent{ get; set; } 10 | public double AvailableMemoryMb { get; set; } 11 | public DateTime date { get; set; } 12 | public HostStatsModel(double processorUtilizationPercent, double freeMemory) 13 | { 14 | ProcessorUtilizationPercent = Math.Round(processorUtilizationPercent,0); 15 | AvailableMemoryMb = Math.Round(freeMemory,0); 16 | date = DateTime.UtcNow; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /xServer.D/Feature/Network/CachedWalletInfo.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.Network 2 | { 3 | /// 4 | /// Provides an ability to sign requests 5 | /// 6 | public class CachedServerInfo 7 | { 8 | public string WalletName { get; set; } 9 | 10 | public string Password { get; set; } 11 | 12 | public string AccountName { get; set; } 13 | 14 | public string SignAddress { get; set; } 15 | 16 | public string FeeAddress { get; set; } 17 | 18 | public string PublicKey { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /xServer.D/Feature/Network/Status.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.Network 2 | { 3 | /// The network startup status. 4 | public enum StartupStatus 5 | { 6 | NotStarted = 0, 7 | NodeConnection = 1, 8 | Database = 2, 9 | IBD = 3, 10 | AddressIndexer = 4, 11 | XServerConnection = 5, 12 | Profile = 6, 13 | XServer = 7, 14 | Started = 100 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /xServer.D/Feature/PowerDns/Models/DnsRequest.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace x42.Feature.PowerDns.Models 4 | { 5 | public class DnsRequest 6 | { 7 | public List Rrsets { get; set; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /xServer.D/Feature/PowerDns/Models/RRset.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace x42.Feature.PowerDns.Models 4 | { 5 | public class RRset 6 | { 7 | public string Name { get; set; } 8 | public string Changetype { get; set; } 9 | public long Ttl { get; set; } 10 | public string Type { get; set; } 11 | public List Records { get; set; } 12 | 13 | public RRset(string name, string changeType, long ttl, string recordType, string content) 14 | { 15 | Name = name; 16 | Changetype = changeType; 17 | Ttl = ttl; 18 | Type = recordType; 19 | Records = new List() { new RrSetRecord(content, false) }; 20 | 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /xServer.D/Feature/PowerDns/Models/RrSetRecord.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.PowerDns.Models 2 | { 3 | public class RrSetRecord 4 | { 5 | public string Content { get; set; } 6 | public bool Disabled { get; set; } 7 | 8 | public RrSetRecord(string content, bool disabled) 9 | { 10 | Content = content; 11 | Disabled = disabled; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /xServer.D/Feature/PowerDns/Models/ZoneModel.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.PowerDns.Models 2 | { 3 | public class ZoneModel 4 | { 5 | public string Name { get; set; } 6 | 7 | public ZoneModel() 8 | { 9 | 10 | } 11 | 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /xServer.D/Feature/PriceLock/FiatCurrency.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.PriceLock 2 | { 3 | /// Fiat currencies. 4 | public enum FiatCurrency 5 | { 6 | USD = 1, AED = 2, ARS = 3, AUD = 4, BDT = 5, 7 | BHD = 6, BMD = 7, BRL = 8, CAD = 9, CHF = 10, 8 | CLP = 11, CZK = 12, DKK = 13, EUR = 14, GBP = 15, 9 | HKD = 16, HUF = 17, ILS = 18, INR = 19, KWD = 20, 10 | LKR = 21, MMK = 22, MXN = 23, MYR = 24, NOK = 25, 11 | NZD = 26, PHP = 27, PKR = 28, PLN = 29, SAR = 30, 12 | SEK = 31, SGD = 32, THB = 33, TRY = 34, UAH = 35, 13 | VEF = 36, VND = 37, ZAR = 38 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /xServer.D/Feature/PriceLock/PaymentErrorCodes.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.PriceLock 2 | { 3 | /// Payment Error Codes. 4 | public enum PaymentErrorCodes 5 | { 6 | None = 0, 7 | PriceLockNotFound = 1, 8 | NotNew = 2, 9 | InvalidSignature = 3, 10 | TransactionError = 4, 11 | TransactionDestNotFound = 5, 12 | TransactionFeeNotFound = 6, 13 | AlreadyExists = 7 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /xServer.D/Feature/PriceLock/PriceList.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | 4 | namespace x42.Feature.PriceLock 5 | { 6 | public class PriceList : IEnumerable 7 | { 8 | private readonly Queue _queue; 9 | private readonly int _maxCount; 10 | 11 | public PriceList(int maxCount) 12 | { 13 | _maxCount = maxCount; 14 | _queue = new Queue(maxCount); 15 | } 16 | 17 | public void Add(T item) 18 | { 19 | if (_queue.Count == _maxCount) 20 | { 21 | _queue.Dequeue(); 22 | } 23 | _queue.Enqueue(item); 24 | } 25 | 26 | public IEnumerator GetEnumerator() 27 | { 28 | return _queue.GetEnumerator(); 29 | } 30 | 31 | IEnumerator IEnumerable.GetEnumerator() 32 | { 33 | return GetEnumerator(); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /xServer.D/Feature/PriceLock/Results/ValidatePriceLockPayeeResult.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace x42.Feature.PriceLock.Results 4 | { 5 | public partial class ValidatePriceLockPayeeResult 6 | { 7 | public bool Success { get; set; } 8 | public string ResultMessage { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /xServer.D/Feature/PriceLock/Status.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.PriceLock 2 | { 3 | /// Price lock status. 4 | public enum Status 5 | { 6 | Rejected = 0, 7 | New = 1, 8 | WaitingForConfirmation = 2, 9 | Confirmed = 3, 10 | Mature = 4 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /xServer.D/Feature/Profile/Status.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.Profile 2 | { 3 | /// Price lock status. 4 | public enum Status 5 | { 6 | Rejected = 0, 7 | Reserved = 1, 8 | Created = 2 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /xServer.D/Feature/Setup/FeaturesExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | 4 | namespace x42.Feature.Setup 5 | { 6 | /// 7 | /// Extensions to features collection. 8 | /// 9 | public static class FeaturesExtensions 10 | { 11 | /// 12 | /// Ensures a dependency feature type is present in the feature list. 13 | /// 14 | /// The dependency feature type. 15 | /// List of features. 16 | /// List of features. 17 | /// Thrown if feature type is missing. 18 | public static IEnumerable EnsureFeature(this IEnumerable features) 19 | { 20 | if (!features.OfType().Any()) 21 | throw new MissingDependencyException($"Dependency feature {typeof(T)} cannot be found."); 22 | 23 | return features; 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /xServer.D/Feature/Setup/MissingDependencyException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace x42.Feature.Setup 4 | { 5 | /// 6 | /// Exception thrown when feature dependencies are missing. 7 | /// 8 | public class MissingDependencyException : Exception 9 | { 10 | /// 11 | public MissingDependencyException() 12 | { 13 | } 14 | 15 | /// 16 | public MissingDependencyException(string message) 17 | : base(message) 18 | { 19 | } 20 | 21 | /// 22 | public MissingDependencyException(string message, Exception innerException) 23 | : base(message, innerException) 24 | { 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /xServer.D/Feature/WordPressPreview/Models/WordpressDomainResult.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.WordPressPreview.Models 2 | { 3 | public class WordpressDomainResult 4 | { 5 | public bool Success { get; set; } 6 | 7 | public string ResultMessage { get; set; } 8 | 9 | public string PriceLockId { get; set; } 10 | 11 | public int Status { get; set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Enums/ConnectionStatus.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.Enums 2 | { 3 | public enum ConnectionStatus 4 | { 5 | /// 6 | /// Connection to X42 Node is not active 7 | /// 8 | Offline, 9 | 10 | /// 11 | /// Connection to X42 Node is active 12 | /// 13 | Online 14 | } 15 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Enums/ConnectionType.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.Enums 2 | { 3 | public enum ConnectionType 4 | { 5 | /// 6 | /// Connected Directly To The API 7 | /// 8 | DirectApi, 9 | 10 | /// 11 | /// Connected Via SSH & Port Tunneling 12 | /// 13 | Ssh, 14 | 15 | /// 16 | /// Connection Is Down 17 | /// 18 | Disconnected 19 | } //end of public enum ConnectionType 20 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Enums/MnemomicLanguage.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.Enums 2 | { 3 | public enum MnemomicLanguage 4 | { 5 | English, 6 | French, 7 | Spanish, 8 | Japanese, 9 | ChineseSimplified, 10 | ChineseTraditional 11 | } 12 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Enums/MnemonicWordCount.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.Enums 2 | { 3 | public enum MnemonicWordCount 4 | { 5 | Words_12 = 12, 6 | Words_15 = 15, 7 | Words_18 = 18, 8 | Words_21 = 21, 9 | Words_24 = 24 10 | } 11 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Enums/TXType.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.Enums 2 | { 3 | public enum TXType 4 | { 5 | Staked, 6 | Sent, 7 | Received, 8 | Mined 9 | } 10 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Models/BlockHeader.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.Models 2 | { 3 | public class BlockHeader 4 | { 5 | public int Version { get; set; } 6 | public string MerkleRoot { get; set; } 7 | public int Nonce { get; set; } 8 | public string Bits { get; set; } 9 | public string PreviousBlockHash { get; set; } 10 | public string Time { get; set; } 11 | public ulong Height { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Models/Event/BaseEvent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace x42.Feature.X42Client.Models.Event 4 | { 5 | public class BaseEvent : EventArgs 6 | { 7 | public DateTime Time; 8 | } //end of public class BaseEvent: EventArgs 9 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Models/Event/ConnectDisconnectEvent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Net; 3 | 4 | namespace x42.Feature.X42Client.Models.Event 5 | { 6 | public class ConnectDisconnectEvent : BaseEvent 7 | { 8 | public readonly IPAddress Address; 9 | public readonly bool IsConnected; 10 | public readonly uint Port; 11 | 12 | 13 | public ConnectDisconnectEvent(bool isConnected, IPAddress address, uint port) 14 | { 15 | IsConnected = isConnected; 16 | Address = address; 17 | Port = port; 18 | Time = DateTime.Now; 19 | } 20 | } //end of public class ConnectDisconnectEvent: EventArgs 21 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Models/Event/NewBlockEvent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace x42.Feature.X42Client.Models.Event 4 | { 5 | public class NewBlockEvent : BaseEvent 6 | { 7 | public readonly BlockHeader Block; 8 | 9 | public NewBlockEvent(BlockHeader block) 10 | { 11 | Block = block; 12 | Time = DateTime.Now; 13 | } //end of public NewBlockEvent(BlockHeader block) 14 | } //end of public class NewBlockEvent : BaseEvent 15 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Models/Event/NewTXEvent.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace x42.Feature.X42Client.Models.Event 5 | { 6 | public class NewTXEvent : BaseEvent 7 | { 8 | public readonly string AccountName; 9 | public readonly List NewTransactions; 10 | public readonly string WalletName; 11 | 12 | 13 | public NewTXEvent(string walletName, string accountName, List txs) 14 | { 15 | NewTransactions = txs; 16 | Time = DateTime.Now; 17 | } //end of public NewTXEvent(List txs) 18 | } //end of public class NewTXEvent: EventArgs 19 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Models/Transaction.cs: -------------------------------------------------------------------------------- 1 | using x42.Feature.X42Client.Enums; 2 | 3 | namespace x42.Feature.X42Client.Models 4 | { 5 | public class Transaction 6 | { 7 | public string Address; 8 | public decimal Amount; 9 | public ulong BlockID; 10 | public string Timestamp; 11 | public string TXID; 12 | public TXType Type; 13 | } 14 | } 15 | /* 16 | * 17 | "transactionsHistory": [ 18 | { 19 | "type": "staked", 20 | "toAddress": "XQXeqrNFad2Uu7k3E9Dx5t4524fBsnEeSw", 21 | "id": "efed57068ecd26114e9da6870af6fafd6e835aa3513497d0d939f7c98ea26aad", 22 | "amount": 2000000000, 23 | "payments": [], 24 | "confirmedInBlock": 223988, 25 | "timestamp": "1549020768" 26 | }, 27 | */ -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Models/xServerPeer.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.Models 2 | { 3 | public class xServerPeer 4 | { 5 | public string Name { get; set; } 6 | 7 | public int NetworkProtocol { get; set; } 8 | 9 | public string NetworkAddress { get; set; } 10 | 11 | public long Priority { get; set; } 12 | 13 | public long NetworkPort { get; set; } 14 | 15 | public string Version { get; set; } 16 | 17 | public long ResponseTime { get; set; } 18 | 19 | public int Tier { get; set; } 20 | } 21 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Requests/BuildTXRequest.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Requests 2 | { 3 | public class BuildTXRequest 4 | { 5 | public string feeAmount { get; set; } = "0"; 6 | public string password { get; set; } 7 | public string walletName { get; set; } 8 | public string accountName { get; set; } 9 | public x42Recipient[] recipients { get; set; } 10 | public bool allowUnconfirmed { get; set; } = false; 11 | public bool shuffleOutputs { get; set; } = true; 12 | } 13 | 14 | public class x42Recipient 15 | { 16 | public string destinationAddress { get; set; } 17 | public string amount { get; set; } 18 | } 19 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Requests/CreateAccountRequest.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Requests 2 | { 3 | public class CreateAccountRequest 4 | { 5 | public string walletName { get; set; } 6 | 7 | public string password { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Requests/CreateWalletRequest.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Requests 2 | { 3 | public class CreateWalletRequest 4 | { 5 | public string mnemonic { get; set; } 6 | public string password { get; set; } 7 | public string passphrase { get; set; } 8 | public string name { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Requests/DecodeRawTransactionRequest.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Requests 2 | { 3 | /// 4 | /// A class containing the necessary parameters for a block search request. 5 | /// 6 | public class DecodeRawTransactionRequest 7 | { 8 | /// The transaction to be decoded in hex format. 9 | public string RawHex { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Requests/SendTransactionRequest.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Requests 2 | { 3 | /// 4 | /// A class containing the necessary parameters for a send transaction request. 5 | /// 6 | public class SendTransactionRequest 7 | { 8 | /// 9 | /// The transaction as a hexadecimal string. 10 | /// 11 | public string Hex { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Requests/SignRequest.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Requests 2 | { 3 | /// 4 | /// Object to sign a message. 5 | /// 6 | public class SignMessageRequest 7 | { 8 | public string WalletName { get; set; } 9 | 10 | public string Password { get; set; } 11 | 12 | public string AccountName { get; set; } 13 | 14 | public string ExternalAddress { get; set; } 15 | 16 | public string Message { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Requests/VerifyRequest.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Requests 2 | { 3 | /// 4 | /// Object to verify a signed message. 5 | /// 6 | public class VerifyRequest 7 | { 8 | public string signature { get; set; } 9 | public string externalAddress { get; set; } 10 | public string message { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/BuildTXResponse.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Responses 2 | { 3 | public class BuildTXResponse 4 | { 5 | public int fee { get; set; } 6 | public string hex { get; set; } 7 | public string transactionId { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetAddressIndexerTipResponse.cs: -------------------------------------------------------------------------------- 1 | using NBitcoin; 2 | 3 | namespace x42.Feature.X42Client.RestClient.Responses 4 | { 5 | public class GetAddressIndexerTipResponse 6 | { 7 | public string tipHash { get; set; } 8 | public uint? tipHeight { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetAddressesBalancesResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace x42.Feature.X42Client.RestClient.Responses 4 | { 5 | public class GetAddressesBalancesResponse 6 | { 7 | public List balances { get; set; } 8 | public string reason { get; set; } 9 | } 10 | } 11 | 12 | public class Balances 13 | { 14 | public string address { get; set; } 15 | public long balance { get; set; } 16 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetBlockHeaderResponse.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Responses 2 | { 3 | public class GetBlockHeaderResponse 4 | { 5 | public int version { get; set; } 6 | public string merkleroot { get; set; } 7 | public int nonce { get; set; } 8 | public string bits { get; set; } 9 | public string previousblockhash { get; set; } 10 | public int time { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetColdStakingAddressResponse.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Responses 2 | { 3 | /// 4 | /// The response data structure received by a client after requesting a cold staking address. 5 | /// Refer to . 6 | /// 7 | public class GetColdStakingAddressResponse 8 | { 9 | /// A Base58 cold staking address from the hot or cold wallet accounts. 10 | public string Address { get; set; } 11 | 12 | /// Creates a string containing the properties of this object. 13 | /// A string containing the properties of the object. 14 | public override string ToString() 15 | { 16 | return $"{nameof(this.Address)}={this.Address}"; 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetRecievedAddressInfoResponse.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Responses 2 | { 3 | public class GetRecievedAddressInfoResponse 4 | { 5 | public string address { get; set; } 6 | public int coinType { get; set; } 7 | public long amountConfirmed { get; set; } 8 | public int amountUnconfirmed { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetSpendableTXResponse.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Responses 2 | { 3 | public class GetSpendableTXResponse 4 | { 5 | public GetSpendableTXResponseTransaction[] transactions { get; set; } 6 | } 7 | 8 | public class GetSpendableTXResponseTransaction 9 | { 10 | public string id { get; set; } 11 | public int index { get; set; } 12 | public string address { get; set; } 13 | public bool isChange { get; set; } 14 | public long amount { get; set; } 15 | public string creationTime { get; set; } 16 | public int confirmations { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetStakingInfoResponse.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Responses 2 | { 3 | public class GetStakingInfoResponse 4 | { 5 | public bool enabled { get; set; } 6 | public bool staking { get; set; } 7 | public object errors { get; set; } 8 | public int currentBlockSize { get; set; } 9 | public int currentBlockTx { get; set; } 10 | public int pooledTx { get; set; } 11 | public decimal difficulty { get; set; } 12 | public int searchInterval { get; set; } 13 | public long weight { get; set; } 14 | public long netStakeWeight { get; set; } 15 | public int expectedTime { get; set; } 16 | } 17 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetTXOutResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace x42.Feature.X42Client.RestClient.Responses 4 | { 5 | public class GetTXOutResponse 6 | { 7 | public string bestblock { get; set; } 8 | public long confirmations { get; set; } 9 | public long value { get; set; } 10 | public ScriptPubKey scriptPubKey { get; set; } 11 | } 12 | } 13 | 14 | public class ScriptPubKey 15 | { 16 | public string asm { get; set; } 17 | public string hex { get; set; } 18 | public string reqSigs { get; set; } 19 | public string type { get; set; } 20 | public List addresses { get; set; } 21 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetWalletAddressesResponse.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Responses 2 | { 3 | public class GetWalletAddressesResponse 4 | { 5 | public WalletAddress[] addresses { get; set; } 6 | } 7 | 8 | public class WalletAddress 9 | { 10 | public string address { get; set; } 11 | public bool isUsed { get; set; } 12 | public bool isChange { get; set; } 13 | } 14 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetWalletBalenceResponse.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Responses 2 | { 3 | public class GetWalletBalenceResponse 4 | { 5 | public AccountBalance[] balances { get; set; } 6 | } 7 | 8 | public class AccountBalance 9 | { 10 | public string accountName { get; set; } 11 | public string accountHdPath { get; set; } 12 | public int coinType { get; set; } 13 | public long amountConfirmed { get; set; } 14 | public long amountUnconfirmed { get; set; } 15 | } 16 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetWalletFilesResponse.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Responses 2 | { 3 | public class GetWalletFilesResponse 4 | { 5 | public string walletsPath { get; set; } 6 | public string[] walletsFiles { get; set; } 7 | } 8 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetWalletHistoryResponse.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Responses 2 | { 3 | public class GetWalletHistoryResponse 4 | { 5 | public WalletHistory[] history { get; set; } 6 | } 7 | 8 | public class WalletHistory 9 | { 10 | public string accountName { get; set; } 11 | public string accountHdPath { get; set; } 12 | public int coinType { get; set; } 13 | public WalletTransactionshistory[] transactionsHistory { get; set; } 14 | } 15 | 16 | public class WalletTransactionshistory 17 | { 18 | public string type { get; set; } 19 | public string toAddress { get; set; } 20 | public string id { get; set; } 21 | public long amount { get; set; } 22 | public object[] payments { get; set; } 23 | public ulong confirmedInBlock { get; set; } 24 | public string timestamp { get; set; } 25 | } 26 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/GetXServerStatsResult.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using x42.Feature.X42Client.Models; 3 | 4 | namespace x42.Feature.X42Client.RestClient.Responses 5 | { 6 | public sealed class GetXServerStatsResult 7 | { 8 | public int Connected { get; set; } 9 | public List Nodes { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/SignMessageResult.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Responses 2 | { 3 | /// 4 | /// Class containing details of a signature message. 5 | /// 6 | public class SignMessageResult 7 | { 8 | public string SignedAddress { get; set; } 9 | 10 | public string Signature { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/Responses/WalletGeneralInfoResponse.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.RestClient.Responses 2 | { 3 | public class WalletGeneralInfoResponse 4 | { 5 | public string walletFilePath { get; set; } 6 | public string network { get; set; } 7 | public string creationTime { get; set; } 8 | public bool isDecrypted { get; set; } 9 | public int lastBlockSyncedHeight { get; set; } 10 | public int chainTip { get; set; } 11 | public bool isChainSynced { get; set; } 12 | public int connectedNodes { get; set; } 13 | } 14 | } -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/RestClient/X42RestClient.xServer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | using Microsoft.Extensions.Logging; 4 | using x42.Feature.X42Client.RestClient.Responses; 5 | using x42.Utilities; 6 | 7 | namespace x42.Feature.X42Client.RestClient 8 | { 9 | public partial class X42RestClient 10 | { 11 | /// 12 | /// Retrieves the xServer stats 13 | /// 14 | public async Task GetXServerStats() 15 | { 16 | try 17 | { 18 | var response = await base.SendGet($"api/xServer/getxserverstats"); 19 | 20 | Guard.Null(response, nameof(response), "'api/xServer/getxserverstats' API Response Was Null!"); 21 | 22 | return response; 23 | } 24 | catch (Exception ex) 25 | { 26 | logger.LogDebug($"An Error '{ex.Message}' Occured When xServer Stats!", ex); 27 | return null; 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /xServer.D/Feature/X42Client/Utils/Extensions/IntegerExtensions.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Feature.X42Client.Utils.Extensions 2 | { 3 | public static class IntegerExtensions 4 | { 5 | /// 6 | /// Checks Whether The Supplied Port Number Is Within A Valid Range 7 | /// 8 | public static bool IsValidPortRange(this uint port) 9 | { 10 | return port > 0 && port < 65535; 11 | } 12 | 13 | /// 14 | /// Checks Whether The Supplied Port Number Is Within A Valid Range 15 | /// 16 | public static bool IsValidPortRange(this ushort port) 17 | { 18 | return port > 0 && port < 65535; 19 | } 20 | } //emd pf c;ass 21 | } -------------------------------------------------------------------------------- /xServer.D/Migrations/_PGMigrations.txt: -------------------------------------------------------------------------------- 1 | For migrations with visual studio, open package manager (It has powershell) 2 | 3 | - Inital migration 4 | Add-Migration InitialCreate 5 | 6 | - Add a new migration 7 | Add-Migration DescriptionOfChange -------------------------------------------------------------------------------- /xServer.D/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | bin\Release\netcoreapp3.1\publish\ 10 | FileSystem 11 | netcoreapp3.1 12 | true 13 | linux-x64 14 | False 15 | False 16 | 17 | -------------------------------------------------------------------------------- /xServer.D/Properties/PublishProfiles/FolderProfile1.pubxml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | Release 8 | Any CPU 9 | bin\Release\netcoreapp3.1\publish\linux-x64\ 10 | FileSystem 11 | netcoreapp3.1 12 | linux-x64 13 | true 14 | false 15 | 16 | -------------------------------------------------------------------------------- /xServer.D/Properties/PublishProfiles/registry.hub.docker.com_dimsavva.pubxml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | Docker 8 | ContainerRegistry 9 | true 10 | https://registry.hub.docker.com/x42protocoldocker 11 | dimsavva 12 | latest 13 | Release 14 | Any CPU 15 | 16 | -------------------------------------------------------------------------------- /xServer.D/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "xServerD": { 4 | "commandName": "Project", 5 | "commandLineArgs": "enableswagger=true", 6 | "nativeDebugging": true 7 | }, 8 | "xServerD Test": { 9 | "commandName": "Project", 10 | "commandLineArgs": "-testnet" 11 | }, 12 | "Docker": { 13 | "commandName": "Docker", 14 | "commandLineArgs": "-v /var/run/docker.sock:/var/run/docker.sock" 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /xServer.D/Protocol/Versions.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Protocol 2 | { 3 | /// 4 | /// x42 protocol versioning. 5 | /// 6 | public enum ProtocolVersion : uint 7 | { 8 | /// 9 | /// Initial protocol version, to be increased after version/verack negotiation. 10 | /// 11 | PROTOCOL_VERSION = 1 12 | } 13 | } -------------------------------------------------------------------------------- /xServer.D/Server/ProfileFunctions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using x42.Controllers.Requests; 4 | using x42.Controllers.Results; 5 | using x42.Feature.Database.Context; 6 | using x42.Feature.Database.Tables; 7 | 8 | namespace x42.Server 9 | { 10 | public class ProfileFunctions 11 | { 12 | private string ConnectionString { get; set; } 13 | 14 | public ProfileFunctions(string connectionString) 15 | { 16 | ConnectionString = connectionString; 17 | } 18 | 19 | public ProfileData GetProfileByKeyAddress(string keyAddress) 20 | { 21 | ProfileData result = null; 22 | 23 | using (X42DbContext dbContext = new X42DbContext(ConnectionString)) 24 | { 25 | var profile = dbContext.Profiles.Where(p => p.KeyAddress == keyAddress).FirstOrDefault(); 26 | if (profile != null) 27 | { 28 | result = profile; 29 | } 30 | } 31 | 32 | return result; 33 | } 34 | 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /xServer.D/Server/Results/RegisterResult.cs: -------------------------------------------------------------------------------- 1 | namespace x42.Server.Results 2 | { 3 | public class RegisterResult 4 | { 5 | public bool Success { get; set; } 6 | 7 | public string ResultMessage { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /xServer.D/Server/Results/SetupStatusResult.cs: -------------------------------------------------------------------------------- 1 | using x42.ServerNode; 2 | using static x42.Server.SetupServer; 3 | 4 | namespace x42.Server.Results 5 | { 6 | public class SetupStatusResult 7 | { 8 | public string SignAddress { get; set; } 9 | public Status ServerStatus { get; set; } 10 | public Tier.TierLevel TierLevel { get; set; } = Tier.TierLevel.Seed; 11 | } 12 | } -------------------------------------------------------------------------------- /xServer.D/ServerNode/Collateral.cs: -------------------------------------------------------------------------------- 1 | using NBitcoin; 2 | 3 | namespace x42.ServerNode 4 | { 5 | public class Collateral 6 | { 7 | /// The amount needed for servernode collateral 8 | public Money Amount { get; set; } 9 | } 10 | } -------------------------------------------------------------------------------- /xServer.D/ServerNode/Tier.cs: -------------------------------------------------------------------------------- 1 | namespace x42.ServerNode 2 | { 3 | public class Tier 4 | { 5 | /// xServer tier type. 6 | public enum TierLevel 7 | { 8 | /// Not a tier, but just a seed node. 9 | Seed = 0, 10 | /// A peer that meets the requirements for a tier 1 node. 11 | One = 1, 12 | /// A peer that meets the requirements for a tier 2 node. 13 | Two = 2, 14 | /// A peer that meets the requirements for a tier 3 node. 15 | Three = 3 16 | } 17 | 18 | public Tier(TierLevel level, Collateral collateral) 19 | { 20 | Level = level; 21 | Collateral = collateral; 22 | } 23 | 24 | public TierLevel Level { get; set; } 25 | 26 | public Collateral Collateral { get; set; } 27 | } 28 | } -------------------------------------------------------------------------------- /xServer.D/Utilities/EnumUtil.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | namespace x42.Utilities 6 | { 7 | public static class EnumUtil 8 | { 9 | public static IEnumerable GetValues() 10 | { 11 | return Enum.GetValues(typeof(T)).Cast(); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /xServer.D/Utilities/Extensions/DateTimeExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace x42.Utilities.Extensions 4 | { 5 | /// 6 | /// Provides a set of extension methods for the class. 7 | /// 8 | public static class DateTimeExtensions 9 | { 10 | /// 11 | /// Converts a given DateTime into a Unix timestamp. 12 | /// 13 | /// Any DateTime 14 | /// The given DateTime in Unix timestamp format 15 | /// This represents the number of seconds that have elapsed since 1970-01-01T00:00:00Z. 16 | public static int ToUnixTimestamp(this DateTime value) 17 | { 18 | return (int) ((DateTimeOffset) value).ToUnixTimeSeconds(); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /xServer.D/Utilities/Extensions/DecimalExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace x42.Utilities.Extensions 4 | { 5 | /// 6 | /// Provides a set of extension methods for the class. 7 | /// 8 | public static class DecimalExtensions 9 | { 10 | /// 11 | /// Removes zeros at the end. 12 | /// 13 | /// Any decimal 14 | /// The given decimal with out the zeros at the endt 15 | public static decimal Normalize(this decimal value) 16 | { 17 | return Convert.ToDecimal(string.Format("{0:G29}", decimal.Parse(value.ToString(), System.Globalization.CultureInfo.GetCultureInfo("en-US")))); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /xServer.D/Utilities/Extensions/TimerExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Timers; 2 | 3 | namespace x42.Utilities 4 | { 5 | /// 6 | /// Extension methods for the class. 7 | /// 8 | public static class TimerExtensions 9 | { 10 | /// 11 | /// Reset a timer from the start. 12 | /// 13 | /// The timer to reset. 14 | public static void Reset(this Timer timer) 15 | { 16 | timer.Stop(); 17 | timer.Start(); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /xServer.D/Utilities/JsonConverters/JsonObjectException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Newtonsoft.Json; 3 | 4 | namespace x42.Utilities.JsonConverters 5 | { 6 | public class JsonObjectException : Exception 7 | { 8 | public JsonObjectException(Exception inner, JsonReader reader) : base(inner.Message, inner) 9 | { 10 | Path = reader.Path; 11 | } 12 | 13 | public JsonObjectException(string message, JsonReader reader) : base(message) 14 | { 15 | Path = reader.Path; 16 | } 17 | 18 | public string Path { get; } 19 | } 20 | } -------------------------------------------------------------------------------- /xServer.D/Utilities/JsonErrors/ErrorHelpers.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Net; 3 | 4 | namespace x42.Utilities.JsonErrors 5 | { 6 | public static class ErrorHelpers 7 | { 8 | public static ErrorResult BuildErrorResponse(HttpStatusCode statusCode, string message, string description) 9 | { 10 | ErrorResponse errorResponse = new ErrorResponse 11 | { 12 | Errors = new List 13 | { 14 | new ErrorModel 15 | { 16 | Status = (int) statusCode, 17 | Message = message, 18 | Description = description 19 | } 20 | } 21 | }; 22 | 23 | return new ErrorResult((int) statusCode, errorResponse); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /xServer.D/Utilities/JsonErrors/ErrorResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Newtonsoft.Json; 3 | 4 | namespace x42.Utilities.JsonErrors 5 | { 6 | public class ErrorResponse 7 | { 8 | [JsonProperty(PropertyName = "errors")] 9 | public List Errors { get; set; } 10 | } 11 | 12 | public class ErrorModel 13 | { 14 | [JsonProperty(PropertyName = "status")] 15 | public int Status { get; set; } 16 | 17 | [JsonProperty(PropertyName = "message")] 18 | public string Message { get; set; } 19 | 20 | [JsonProperty(PropertyName = "description")] 21 | public string Description { get; set; } 22 | } 23 | } -------------------------------------------------------------------------------- /xServer.D/Utilities/JsonErrors/ErrorResult.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | 3 | namespace x42.Utilities.JsonErrors 4 | { 5 | public class ErrorResult : ObjectResult 6 | { 7 | public ErrorResult(int statusCode, ErrorResponse value) : base(value) 8 | { 9 | StatusCode = statusCode; 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /xServer.D/dapps/magento/.env: -------------------------------------------------------------------------------- 1 | TimeZone=America/New_York 2 | LSWS_VERSION=5.4.12 3 | PHP_VERSION=lsphp74 4 | MYSQL_DATABASE=magento 5 | MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} 6 | MYSQL_USER=magento 7 | MYSQL_PASSWORD=${MYSQL_PASSWORD} 8 | DOMAIN=localhost 9 | -------------------------------------------------------------------------------- /xServer.D/dapps/openproject/deploy_site.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $# -lt 4 ]; then 4 | echo "Usage: $0 appname domain email my.db.password" 5 | echo "Usage: $0 openproject openproject.x42.site my@email.com mysecetwppass" 6 | exit 1 7 | fi 8 | 9 | APP_NAME=$1 10 | DOMAIN=$2 11 | DOMAIN_LOWER=$(echo "$DOMAIN" | tr '[:upper:]' '[:lower:]' ) 12 | DOMAIN_LOWER_USCORE=$(echo "$DOMAIN" | tr '[:upper:]' '[:lower:]' | sed 's/\./'_'/g') 13 | DOMAIN_STRIPPEDLOWER=$(echo "$DOMAIN_LOWER_USCORE" | sed 's/_//g') 14 | EMAIL=$3 15 | DB_PASSWORD=$4 16 | 17 | main(){ 18 | echo "Setting Up ${DOMAIN_LOWER_USCORE}" 19 | echo Setting up Envrionment 20 | mkdir -p ${DOMAIN} 21 | sed -e 's/#DOMAIN#/'${DOMAIN}'/g' -e 's/#domain#/'${DOMAIN_LOWER_USCORE}'/g' docker-compose.yml > ${DOMAIN}/docker-compose.yml 22 | cd ${DOMAIN} 23 | mkdir pgdata 24 | mkdir opdata 25 | 26 | cat < .env 27 | POSTGRES_PASSWORD=${DB_PASSWORD} 28 | EOF 29 | } 30 | 31 | main 32 | -------------------------------------------------------------------------------- /xServer.D/dapps/prestashop/.env: -------------------------------------------------------------------------------- 1 | TimeZone=America/New_York 2 | LSWS_VERSION=5.4.12 3 | PHP_VERSION=lsphp73 4 | MYSQL_DATABASE=prestashop 5 | MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} 6 | MYSQL_USER=prestashop 7 | MYSQL_PASSWORD=${MYSQL_PASSWORD} 8 | DOMAIN=localhost 9 | -------------------------------------------------------------------------------- /xServer.D/dapps/wordpress/bin/container/certhookctl.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | BOTCRON='/var/spool/cron/crontabs/root' 3 | 4 | cert_hook(){ 5 | grep 'acme' ${BOTCRON} >/dev/null 6 | if [ ${?} = 0 ]; then 7 | grep 'lswsctrl' ${BOTCRON} >/dev/null 8 | if [ ${?} = 0 ]; then 9 | echo 'Hook already exist, skip!' 10 | else 11 | sed -i 's/--cron/--cron --renew-hook "\/usr\/local\/lsws\/bin\/lswsctrl restart"/g' ${BOTCRON} 12 | fi 13 | else 14 | echo "[X] ${BOTCRON} does not exist, please check it later!" 15 | fi 16 | } 17 | 18 | cert_hook -------------------------------------------------------------------------------- /xServer.D/dapps/wordpress/bin/dev/list-flagged-files.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | git ls-files -v|grep '^S' 3 | -------------------------------------------------------------------------------- /xServer.D/dapps/wordpress/bin/dev/no-skip-worktree-conf.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | find conf -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && pwd && git ls-files -z ${pwd} | xargs -0 git update-index --no-skip-worktree" \; 3 | -------------------------------------------------------------------------------- /xServer.D/dapps/wordpress/bin/dev/skip-worktree-conf.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | find conf -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && pwd && git ls-files -z ${pwd} | xargs -0 git update-index --skip-worktree" \; 3 | 4 | -------------------------------------------------------------------------------- /xServer.D/dapps/wordpress/e02fb85e-85ca-4c16-a5db-a2c1be124b01/oti.x42.com/.env: -------------------------------------------------------------------------------- 1 | TimeZone=America/New_York 2 | OLS_VERSION=1.7.15 3 | PHP_VERSION=lsphp80 4 | MYSQL_DATABASE=wordpress 5 | MYSQL_ROOT_PASSWORD=password 6 | MYSQL_USER=wordpress 7 | MYSQL_PASSWORD=password 8 | DOMAIN=oti.x42.com 9 | -------------------------------------------------------------------------------- /xServer.UI/.browserslistrc: -------------------------------------------------------------------------------- 1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | 5 | # For the full list of supported browsers by the Angular framework, please see: 6 | # https://angular.io/guide/browser-support 7 | 8 | # You can see what browsers were selected by your queries by running: 9 | # npx browserslist 10 | 11 | last 1 Chrome version 12 | last 1 Firefox version 13 | last 2 Edge major versions 14 | last 2 Safari major versions 15 | last 2 iOS major versions 16 | Firefox ESR 17 | not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. 18 | -------------------------------------------------------------------------------- /xServer.UI/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /xServer.UI/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | # Only exists if Bazel was run 8 | /bazel-out 9 | 10 | # dependencies 11 | /node_modules 12 | 13 | # profiling files 14 | chrome-profiler-events*.json 15 | speed-measure-plugin*.json 16 | 17 | # IDEs and editors 18 | /.idea 19 | .project 20 | .classpath 21 | .c9/ 22 | *.launch 23 | .settings/ 24 | *.sublime-workspace 25 | 26 | # IDE - VSCode 27 | .vscode/* 28 | !.vscode/settings.json 29 | !.vscode/tasks.json 30 | !.vscode/launch.json 31 | !.vscode/extensions.json 32 | .history/* 33 | 34 | # misc 35 | /.sass-cache 36 | /connect.lock 37 | /coverage 38 | /libpeerconnection.log 39 | npm-debug.log 40 | yarn-error.log 41 | testem.log 42 | /typings 43 | 44 | # System Files 45 | .DS_Store 46 | Thumbs.db 47 | -------------------------------------------------------------------------------- /xServer.UI/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:16.13.1-buster as builder 2 | WORKDIR /usr/src/app 3 | COPY package.json ./ 4 | RUN npm install --legacy-peer-deps 5 | COPY . . 6 | RUN npm run build --prod 7 | 8 | FROM nginx:1.19.4-alpine 9 | COPY --from=builder /usr/src/app/dist/xServerUI /usr/share/nginx/html 10 | COPY nginx.conf /etc/nginx/nginx.conf 11 | -------------------------------------------------------------------------------- /xServer.UI/docker-build.bat: -------------------------------------------------------------------------------- 1 | docker build --tag x42serverui -m 6g . -------------------------------------------------------------------------------- /xServer.UI/docker-build.sh: -------------------------------------------------------------------------------- 1 | docker build --tag x42serverui . -------------------------------------------------------------------------------- /xServer.UI/e2e/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AngularElectronPage } from './app.po'; 2 | import { browser, element, by } from 'protractor'; 3 | 4 | describe('xServer App', () => { 5 | let page: AngularElectronPage; 6 | 7 | beforeEach(() => { 8 | page = new AngularElectronPage(); 9 | }); 10 | 11 | it('Page title should be xServer', () => { 12 | page.navigateTo('/'); 13 | expect(page.getTitle()).toEqual('xServer'); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /xServer.UI/e2e/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser } from 'protractor'; 2 | 3 | /* tslint:disable */ 4 | export class AngularElectronPage { 5 | navigateTo(route: string) { 6 | return browser.get(route); 7 | } 8 | 9 | getTitle() { 10 | let title: string; 11 | return browser.getTitle(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /xServer.UI/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types":[ 8 | "jasmine", 9 | "node" 10 | ] 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /xServer.UI/nginx.conf: -------------------------------------------------------------------------------- 1 | worker_processes 1; 2 | events { worker_connections 1024; } 3 | http { 4 | 5 | sendfile on; 6 | 7 | gzip on; 8 | gzip_http_version 1.0; 9 | gzip_proxied any; 10 | gzip_min_length 500; 11 | gzip_disable "MSIE [1-6]\."; 12 | gzip_types text/plain text/xml text/css 13 | text/comma-separated-values 14 | text/javascript 15 | application/x-javascript 16 | application/atom+xml; 17 | 18 | include /etc/nginx/mime.types; 19 | 20 | server { 21 | listen 80; 22 | server_name localhost; 23 | access_log off; 24 | server_tokens off; 25 | 26 | location / { 27 | root /usr/share/nginx/html; 28 | index index.html; 29 | try_files $uri /$uri $uri/ /index.html; 30 | } 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /xServer.UI/src/app/app-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | import { LoginComponent } from './login/login.component'; 4 | import { AppComponent } from './app.component'; 5 | import { ShutdownComponent } from './shared/components/shutdown/shutdown.component'; 6 | 7 | const routes: Routes = [ 8 | { path: 'app', component: AppComponent }, 9 | { path: 'login', component: LoginComponent }, 10 | { path: 'shutdown', component: ShutdownComponent }, 11 | { path: '', redirectTo: 'app', pathMatch: 'full' }, 12 | { path: '**', redirectTo: 'app', pathMatch: 'full' } 13 | ]; 14 | 15 | @NgModule({ 16 | imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })], 17 | exports: [RouterModule] 18 | }) 19 | 20 | export class AppRoutingModule { } 21 | -------------------------------------------------------------------------------- /xServer.UI/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | #checkmark { 2 | stroke: green !important; 3 | stroke-dashoffset: 745.74853515625; 4 | stroke-dasharray: 745.74853515625; 5 | animation: dash 4s ease-out forwards; 6 | } 7 | -------------------------------------------------------------------------------- /xServer.UI/src/app/login/login.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/login/login.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/setup/create/confirm-mnemonic/confirm-mnemonic.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/setup/create/confirm-mnemonic/confirm-mnemonic.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/setup/create/create.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/setup/create/create.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/setup/create/show-mnemonic/show-mnemonic.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/setup/create/show-mnemonic/show-mnemonic.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/setup/create/show-mnemonic/show-mnemonic.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ShowMnemonicComponent } from './show-mnemonic.component'; 4 | 5 | describe('ShowMnemonicComponent', () => { 6 | let component: ShowMnemonicComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ShowMnemonicComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ShowMnemonicComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /xServer.UI/src/app/setup/finalize-setup/finalize-setup.component.css: -------------------------------------------------------------------------------- 1 | ul { 2 | list-style: none; 3 | padding: 0; 4 | } 5 | 6 | li { 7 | padding-left: 1.3em; 8 | } 9 | 10 | li:before { 11 | display: inline-block; 12 | margin-left: -1.3em; /* same as padding-left set on li */ 13 | width: 1.3em; /* same as padding-left set on li */ 14 | } 15 | 16 | 17 | .red { 18 | color: red; 19 | } 20 | 21 | .green { 22 | color: green; 23 | } 24 | 25 | .checklist { 26 | font-size: larger; 27 | font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif; 28 | } 29 | -------------------------------------------------------------------------------- /xServer.UI/src/app/setup/finalize-setup/finalize-setup.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Main wallet created. 4 | Please setup main wallet. 5 | Connection with database established. 6 | Could not connect to database, Please close and install PostgreSQL, then check again. 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xServer.UI/src/app/setup/finalize-setup/finalize-setup.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, Input } from '@angular/core'; 2 | import { Router } from '@angular/router'; 3 | 4 | @Component({ 5 | selector: 'app-finalize-setup', 6 | templateUrl: './finalize-setup.component.html', 7 | styleUrls: ['./finalize-setup.component.css'] 8 | }) 9 | export class FinalizeSetupComponent implements OnInit { 10 | constructor(private router: Router) { } 11 | 12 | @Input() databaseConnected: boolean; 13 | 14 | walletCreated: boolean; 15 | @Input() set walletComplete(value: boolean) { 16 | this.walletCreated = value; 17 | } 18 | 19 | ngOnInit() { 20 | 21 | } 22 | 23 | onClose() { 24 | this.router.navigate(['/login/app-login']); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /xServer.UI/src/app/setup/recover/recover.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/setup/recover/recover.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/setup/setup-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | import { SetupComponent } from './setup.component'; 4 | import { CreateComponent } from './create/create.component'; 5 | import { ShowMnemonicComponent } from './create/show-mnemonic/show-mnemonic.component'; 6 | import { ConfirmMnemonicComponent } from './create/confirm-mnemonic/confirm-mnemonic.component'; 7 | import { RecoverComponent } from './recover/recover.component'; 8 | 9 | const routes: Routes = [ 10 | { path: 'setup', component: SetupComponent }, 11 | { path: 'setup/create', component: CreateComponent }, 12 | { path: 'setup/create/show-mnemonic', component: ShowMnemonicComponent }, 13 | { path: 'setup/create/confirm-mnemonic', component: ConfirmMnemonicComponent }, 14 | { path: 'setup/recover', component: RecoverComponent } 15 | ]; 16 | 17 | @NgModule({ 18 | imports: [ RouterModule.forChild(routes) ] 19 | }) 20 | 21 | export class SetupRoutingModule { } 22 | -------------------------------------------------------------------------------- /xServer.UI/src/app/setup/setup.component.css: -------------------------------------------------------------------------------- 1 | :host 2 | ::ng-deep .ui-menubar-root-list { 3 | padding-left: 75px; 4 | } 5 | 6 | ::ng-deep .ui-fieldset .ui-state-default { 7 | font-size: 15px; 8 | } 9 | ::ng-deep .ui-fieldset-content-wrapper { 10 | font-size: 10pt; 11 | font-family: "Arial", "Serif", "Monospace"; 12 | font-style: normal; 13 | } 14 | 15 | ::ng-deep .ui-steps .ui-steps-item { 16 | width: 33%; 17 | } 18 | 19 | .setupmenu { 20 | float: left; 21 | width: 190px; 22 | } 23 | 24 | .setupcontent { 25 | } 26 | 27 | .logo { 28 | width: 85px; 29 | margin-left: 50px; 30 | text-align: center; 31 | font-size: large; 32 | } 33 | 34 | .logo img { 35 | width: 85px; 36 | } 37 | 38 | 39 | .container { 40 | display: grid; 41 | } 42 | 43 | img#logo { 44 | position: absolute; 45 | left: 0; 46 | margin-left: 10px; 47 | } 48 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/components/generic-modal/generic-modal.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/shared/components/generic-modal/generic-modal.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/components/generic-modal/generic-modal.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/components/generic-modal/generic-modal.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog'; 3 | @Component({ 4 | selector: 'app-generic-modal', 5 | templateUrl: './generic-modal.component.html', 6 | styleUrls: ['./generic-modal.component.css'] 7 | }) 8 | export class GenericModalComponent implements OnInit { 9 | 10 | public message: string; 11 | 12 | constructor( 13 | public ref: DynamicDialogRef, 14 | public config: DynamicDialogConfig, 15 | ) { } 16 | 17 | ngOnInit() { 18 | this.message = this.config.data.message; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/components/main-menu/main-menu.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/shared/components/main-menu/main-menu.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/components/shutdown/shutdown.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/shared/components/shutdown/shutdown.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/components/shutdown/shutdown.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Shutdown in progress ... 6 | Please wait... 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/components/shutdown/shutdown.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { ApplicationStateService } from '../../../shared/services/application-state.service'; 3 | import { ThemeService } from '../../services/theme.service'; 4 | 5 | @Component({ 6 | selector: 'app-shutdown', 7 | templateUrl: './shutdown.component.html', 8 | styleUrls: ['./shutdown.component.css'] 9 | }) 10 | export class ShutdownComponent { 11 | constructor( 12 | public appState: ApplicationStateService, 13 | private themeService: ThemeService, 14 | ) { 15 | this.themeService.setTheme(); 16 | } 17 | 18 | forceExit() { 19 | window.close(); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/components/shutdown/shutdown.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { ShutdownComponent } from './shutdown.component'; 4 | import { ButtonModule } from 'primeng/button'; 5 | 6 | @NgModule({ 7 | imports: [CommonModule, ButtonModule], 8 | exports: [ShutdownComponent], 9 | declarations: [ShutdownComponent], 10 | }) 11 | export class ShutdownModule { 12 | } 13 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/components/wizard/step.component.ts: -------------------------------------------------------------------------------- 1 | import {Component, Input} from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-pe-step', 5 | styles: ['.pe-step-container {margin-bottom: 10px;}'], 6 | template: ` 7 | 8 | 9 | 10 | ` 11 | }) 12 | export class StepComponent { 13 | @Input() styleClass: string; 14 | @Input() label: string; 15 | active = false; 16 | } 17 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/components/wizard/wizard.component.css: -------------------------------------------------------------------------------- 1 | .p-steps { 2 | margin-top: 10px; 3 | } 4 | 5 | .p-steps .p-steps-item .p-menuitem-link { 6 | background: transparent; 7 | } 8 | 9 | .p-steps .p-steps-item .p-steps-number { 10 | } 11 | 12 | .p-steps .p-steps-item .p-steps-title { 13 | } 14 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/components/wizard/wizard.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { StepComponent } from './step.component'; 4 | import { StepsComponent } from './steps.component'; 5 | 6 | // PrimeNG Components. 7 | import { ButtonModule } from 'primeng/button'; 8 | import { StepsModule } from 'primeng/steps'; 9 | 10 | @NgModule({ 11 | imports: [CommonModule, ButtonModule, StepsModule], 12 | exports: [StepComponent, StepsComponent], 13 | declarations: [StepComponent, StepsComponent] 14 | }) 15 | export class WizardModule { 16 | } 17 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/directives/auto-focus.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, ElementRef, OnInit } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: '[appMyAutoFocus]' 5 | }) 6 | export class AutoFocusDirective implements OnInit { 7 | 8 | constructor( 9 | private elementRef: ElementRef, 10 | ) { } 11 | 12 | ngOnInit() { 13 | this.elementRef.nativeElement.focus(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/directives/password-validation.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive } from '@angular/core'; 2 | import { AbstractControl } from '@angular/forms'; 3 | 4 | @Directive({ 5 | selector: '[appPasswordValidation]' 6 | }) 7 | export class PasswordValidationDirective { 8 | constructor() { } 9 | 10 | static MatchPassword(AC: AbstractControl) { 11 | const password = AC.get('walletPassword').value; 12 | const confirmPassword = AC.get('walletPasswordConfirmation').value; 13 | 14 | if (confirmPassword !== password) { 15 | AC.get('walletPasswordConfirmation').setErrors({ walletPasswordConfirmation: true }); 16 | } else { 17 | AC.get('walletPasswordConfirmation').setErrors(null); 18 | return null; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/http-interceptors/api-interceptor.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http'; 3 | 4 | @Injectable() 5 | export class ApiInterceptor implements HttpInterceptor { 6 | constructor() { } 7 | 8 | intercept(req: HttpRequest, next: HttpHandler) { 9 | const finalReq = req.clone({ 10 | headers: req.headers.set('Content-Type', 'application/json') 11 | }); 12 | 13 | return next.handle(finalReq); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/address-label.ts: -------------------------------------------------------------------------------- 1 | export class AddressLabel { 2 | constructor(label: string, address: string) { 3 | this.label = label; 4 | this.address = address; 5 | } 6 | 7 | public label: string; 8 | public address: string; 9 | } 10 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/application.ts: -------------------------------------------------------------------------------- 1 | export class Application { 2 | constructor(name: string, revenue: string) { 3 | this.name = name; 4 | this.revenue = revenue; 5 | } 6 | 7 | public name: string; 8 | public revenue: string; 9 | } 10 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/coldstakingcreateaccountrequest.ts: -------------------------------------------------------------------------------- 1 | export class ColdStakingCreateAccountRequest { 2 | constructor( 3 | walletName: string, 4 | walletPassword: string, 5 | isColdWalletAccount: boolean 6 | ) { 7 | this.walletName = walletName; 8 | this.walletPassword = walletPassword; 9 | this.isColdWalletAccount = isColdWalletAccount; 10 | } 11 | 12 | public walletName: string; 13 | public walletPassword: string; 14 | public isColdWalletAccount: boolean; 15 | } 16 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/coldstakingcreateaccountresponse.ts: -------------------------------------------------------------------------------- 1 | export class ColdStakingCreateAccountResponse { 2 | constructor( 3 | accountName: string 4 | ) { 5 | this.accountName = accountName; 6 | } 7 | public accountName: string; 8 | } 9 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/coldstakingcreateaddressresponse.ts: -------------------------------------------------------------------------------- 1 | export class ColdStakingCreateAddressResponse { 2 | constructor( 3 | address: string 4 | ) { 5 | this.address = address; 6 | } 7 | public address: string; 8 | } 9 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/coldstakinggetinforesponse.ts: -------------------------------------------------------------------------------- 1 | export class ColdStakingGetInfoResponse { 2 | constructor( 3 | coldWalletAccountExists: boolean, 4 | hotWalletAccountExists: boolean 5 | ) { 6 | this.coldWalletAccountExists = coldWalletAccountExists; 7 | this.hotWalletAccountExists = hotWalletAccountExists; 8 | } 9 | public coldWalletAccountExists: boolean; 10 | public hotWalletAccountExists: boolean; 11 | } 12 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/coldstakingsetup.ts: -------------------------------------------------------------------------------- 1 | export class ColdStakingSetup { 2 | constructor( 3 | hotWalletAddress: string, 4 | coldWalletAddress: string, 5 | amount: number, 6 | walletName: string, 7 | walletPassword: string, 8 | walletAccount: string, 9 | fees: number 10 | ) { 11 | this.hotWalletAddress = hotWalletAddress; 12 | this.coldWalletAddress = coldWalletAddress; 13 | this.amount = amount; 14 | this.walletName = walletName; 15 | this.walletPassword = walletPassword; 16 | this.walletAccount = walletAccount; 17 | this.fees = fees; 18 | } 19 | public hotWalletAddress: string; 20 | public coldWalletAddress: string; 21 | public amount: number; 22 | public walletName: string; 23 | public walletPassword: string; 24 | public walletAccount: string; 25 | public fees: number; 26 | } 27 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/coldstakingsetupresponse.ts: -------------------------------------------------------------------------------- 1 | export class ColdStakingSetupResponse { 2 | constructor( 3 | transactionHex: string 4 | ) { 5 | this.transactionHex = transactionHex; 6 | } 7 | public transactionHex: string; 8 | } 9 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/coldstakingwithdrawalrequest.ts: -------------------------------------------------------------------------------- 1 | export class ColdStakingWithdrawalRequest { 2 | constructor( 3 | receivingAddress: string, 4 | amount: number, 5 | walletName: string, 6 | walletPassword: string, 7 | fees: number 8 | ) { 9 | this.receivingAddress = receivingAddress; 10 | this.amount = amount; 11 | this.walletName = walletName; 12 | this.walletPassword = walletPassword; 13 | this.fees = fees; 14 | } 15 | public receivingAddress: string; 16 | public amount: number; 17 | public walletName: string; 18 | public walletPassword: string; 19 | public fees: number; 20 | } 21 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/coldstakingwithdrawalresponse.ts: -------------------------------------------------------------------------------- 1 | export class ColdStakingWithdrawalResponse { 2 | constructor( 3 | transactionHex: string 4 | ) { 5 | this.transactionHex = transactionHex; 6 | } 7 | public transactionHex: string; 8 | } 9 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/error-response.ts: -------------------------------------------------------------------------------- 1 | export class ErrorResponse { 2 | errorNumber: number; 3 | message: string; 4 | friendlyMessage: string; 5 | } 6 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/fee-estimation.ts: -------------------------------------------------------------------------------- 1 | export class Recipient { 2 | constructor(destinationAddress: string, amount: string) { 3 | this.destinationAddress = destinationAddress; 4 | this.amount = amount; 5 | } 6 | 7 | destinationAddress: string; 8 | amount: string; 9 | } 10 | 11 | export class FeeEstimation { 12 | constructor(walletName: string, accountName: string, destinationAddress: string, amount: string, feeType: string, allowUnconfirmed: boolean) { 13 | this.walletName = walletName; 14 | this.accountName = accountName; 15 | this.recipients = [new Recipient(destinationAddress, amount)]; 16 | this.feeType = feeType; 17 | this.allowUnconfirmed = allowUnconfirmed; 18 | } 19 | 20 | walletName: string; 21 | accountName: string; 22 | recipients: Recipient[]; 23 | feeType: string; 24 | allowUnconfirmed: boolean; 25 | } 26 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/mnemonic.ts: -------------------------------------------------------------------------------- 1 | export class Mnemonic { 2 | constructor(mnemonic: string) { 3 | this.mnemonic = mnemonic; 4 | } 5 | mnemonic: string; 6 | } 7 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/profileresult.ts: -------------------------------------------------------------------------------- 1 | export class ProfileResult { 2 | constructor(name: string, keyAddress: string) { 3 | this.name = name; 4 | this.keyAddress = keyAddress; 5 | } 6 | 7 | public name: string; 8 | public keyAddress: string; 9 | public signature: string; 10 | public priceLockId: string; 11 | public profileFields: [ProfileField]; 12 | } 13 | 14 | class ProfileField { 15 | constructor(value: string, signature: string) { 16 | this.value = value; 17 | this.signature = signature; 18 | } 19 | 20 | public value: string; 21 | public signature: string; 22 | } 23 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/server-setuprequest.ts: -------------------------------------------------------------------------------- 1 | export class ServerSetupRequest { 2 | constructor(signAddress: string, keyAddress: string) { 3 | this.signAddress = signAddress; 4 | this.keyAddress = keyAddress; 5 | } 6 | 7 | public signAddress: string; 8 | public keyAddress: string; 9 | } 10 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/server-setupresponse.ts: -------------------------------------------------------------------------------- 1 | export class ServerSetupResponse { 2 | constructor( 3 | signAddress: string 4 | ) { 5 | this.signAddress = signAddress; 6 | } 7 | public signAddress: string; 8 | } 9 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/server-setupstatusresponse.ts: -------------------------------------------------------------------------------- 1 | export class ServerSetupStatusResponse { 2 | constructor(signAddress: string, serverStatus: number, tierLevel: number) { 3 | this.signAddress = signAddress; 4 | this.serverStatus = serverStatus; 5 | this.tierLevel = tierLevel; 6 | } 7 | public signAddress: string; 8 | public serverStatus: number; 9 | public tierLevel: number; 10 | } 11 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/server-start-request.ts: -------------------------------------------------------------------------------- 1 | export class ServerStartRequest { 2 | constructor(walletName: string, password: string, accountName: string, signAddress: string) { 3 | this.walletName = walletName; 4 | this.password = password; 5 | this.accountName = accountName; 6 | this.signAddress = signAddress; 7 | } 8 | 9 | public walletName: string; 10 | public password: string; 11 | public accountName: string; 12 | public signAddress: string; 13 | } 14 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/sidechain-fee-estimation.ts: -------------------------------------------------------------------------------- 1 | export class Recipient { 2 | constructor(destinationAddress: string, amount: string) { 3 | this.destinationAddress = destinationAddress; 4 | this.amount = amount; 5 | } 6 | 7 | destinationAddress: string; 8 | amount: string; 9 | } 10 | 11 | export class SidechainFeeEstimation { 12 | constructor(walletName: string, accountName: string, federationAddress: string, destinationAddress: string, amount: string, feeType: string, allowUnconfirmed: boolean) { 13 | this.walletName = walletName; 14 | this.accountName = accountName; 15 | this.recipients = [new Recipient(federationAddress, amount)]; 16 | this.opreturndata = destinationAddress; 17 | this.feeType = feeType; 18 | this.allowUnconfirmed = allowUnconfirmed; 19 | } 20 | 21 | walletName: string; 22 | accountName: string; 23 | recipients: Recipient[]; 24 | opreturndata: string; 25 | feeType: string; 26 | allowUnconfirmed: boolean; 27 | } 28 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/split-coins.ts: -------------------------------------------------------------------------------- 1 | export class SplitCoins { 2 | constructor(walletName: string, accountName: string, walletPassword: string, totalAmountToSplit: string, utxosCount: string) { 3 | this.walletName = walletName; 4 | this.accountName = accountName; 5 | this.walletPassword = walletPassword; 6 | this.totalAmountToSplit = totalAmountToSplit; 7 | this.utxosCount = utxosCount; 8 | } 9 | 10 | walletName: string; 11 | accountName: string; 12 | walletPassword: string; 13 | totalAmountToSplit: string; 14 | utxosCount: string; 15 | } 16 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/transaction-info.ts: -------------------------------------------------------------------------------- 1 | export class TransactionInfo { 2 | constructor(transactionType: string, transactionId: string, transactionAmount: number, transactionFee: number, transactionConfirmedInBlock: number, transactionTimestamp: number) { 3 | this.transactionType = transactionType; 4 | this.transactionId = transactionId; 5 | this.transactionAmount = transactionAmount; 6 | this.transactionFee = transactionFee; 7 | this.transactionConfirmedInBlock = transactionConfirmedInBlock; 8 | this.transactionTimestamp = transactionTimestamp; 9 | } 10 | 11 | public transactionType: string; 12 | public transactionId: string; 13 | public transactionAmount: number; 14 | public transactionFee: number; 15 | public transactionConfirmedInBlock?: number; 16 | public transactionTimestamp: number; 17 | } 18 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/transaction-sending.ts: -------------------------------------------------------------------------------- 1 | export class TransactionSending { 2 | constructor(hex: string) { 3 | this.hex = hex; 4 | } 5 | 6 | hex: string; 7 | } 8 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/update-info.ts: -------------------------------------------------------------------------------- 1 | 2 | export interface UpdateInfo { 3 | files: UpdateFile[]; 4 | path: string; 5 | releaseDate: string; 6 | releaseName: string; 7 | releaseNotes: string; 8 | sha512: string; 9 | version: string; 10 | } 11 | 12 | export interface UpdateFile { 13 | sha512: string; 14 | size: number; 15 | url: string; 16 | } 17 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/validateaddressresponse.ts: -------------------------------------------------------------------------------- 1 | export class ValidateAddressResponse { 2 | constructor( 3 | isvalid: boolean, 4 | address: string, 5 | scriptPubKey: string, 6 | isscript: boolean, 7 | iswitness: boolean 8 | ) { 9 | this.isvalid = isvalid; 10 | this.address = address; 11 | this.scriptPubKey = scriptPubKey; 12 | this.isscript = isscript; 13 | this.iswitness = iswitness; 14 | } 15 | public isvalid: boolean; 16 | public address: string; 17 | public scriptPubKey: string; 18 | public isscript: boolean; 19 | public iswitness: boolean; 20 | } 21 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/wallet-creation.ts: -------------------------------------------------------------------------------- 1 | export class WalletCreation { 2 | constructor(name: string, mnemonic: string, password: string, passphrase: string, folderPath: string = null ) { 3 | this.name = name; 4 | this.mnemonic = mnemonic; 5 | this.password = password; 6 | this.passphrase = passphrase; 7 | this.folderPath = folderPath; 8 | } 9 | 10 | name: string; 11 | mnemonic: string; 12 | password: string; 13 | passphrase: string; 14 | folderPath?: string; 15 | } 16 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/wallet-info.ts: -------------------------------------------------------------------------------- 1 | export class WalletInfo { 2 | constructor(walletName: string) { 3 | this.walletName = walletName; 4 | } 5 | 6 | public walletName: string; 7 | public accountName = 'account 0'; 8 | } 9 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/wallet-load.ts: -------------------------------------------------------------------------------- 1 | export class WalletLoad { 2 | constructor(name: string, password: string, folderPath: string = null ) { 3 | this.name = name; 4 | this.password = password; 5 | this.folderPath = folderPath; 6 | } 7 | 8 | public name: string; 9 | public password: string; 10 | public folderPath?: string; 11 | } 12 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/wallet-recovery.ts: -------------------------------------------------------------------------------- 1 | export class WalletRecovery { 2 | constructor(walletName: string, mnemonic: string, password: string, passphrase: string, creationDate: Date, folderPath: string = null) { 3 | this.name = walletName; 4 | this.mnemonic = mnemonic; 5 | this.password = password; 6 | this.passphrase = passphrase; 7 | this.creationDate = creationDate; 8 | this.folderPath = folderPath; 9 | } 10 | 11 | mnemonic: string; 12 | password: string; 13 | passphrase: string; 14 | name: string; 15 | creationDate: Date; 16 | folderPath?: string; 17 | } 18 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/wallet-rescan.ts: -------------------------------------------------------------------------------- 1 | export class WalletRescan { 2 | constructor(walletName: string, fromDate: Date, all: boolean, resync: boolean) { 3 | this.name = walletName; 4 | this.fromDate = fromDate; 5 | this.all = all; 6 | this.resync = resync; 7 | } 8 | 9 | name: string; 10 | fromDate: Date; 11 | all: boolean; 12 | resync: boolean; 13 | } 14 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/wallet-signmessagerequest.ts: -------------------------------------------------------------------------------- 1 | export class SignMessageRequest { 2 | constructor(walletName: string, accountName: string, password: string, externalAddress: string, message: string) { 3 | this.walletName = walletName; 4 | this.accountName = accountName; 5 | this.password = password; 6 | this.externalAddress = externalAddress; 7 | this.message = message; 8 | } 9 | 10 | walletName: string; 11 | accountName: string; 12 | password: string; 13 | externalAddress: string; 14 | message: string; 15 | } 16 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/wallet-verifyrequest.ts: -------------------------------------------------------------------------------- 1 | export class VerifyRequest { 2 | constructor(signature: string, externalAddress: string, message: string) { 3 | this.signature = signature; 4 | this.externalAddress = externalAddress; 5 | this.message = message; 6 | } 7 | 8 | signature: string; 9 | externalAddress: string; 10 | message: string; 11 | } 12 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/models/xserver-status.ts: -------------------------------------------------------------------------------- 1 | export class XServerStatus { 2 | constructor(connected: number) { 3 | this.connected = connected; 4 | } 5 | 6 | public connected: number; 7 | public nodes: XServerPeer[]; 8 | } 9 | 10 | export class XServerPeer { 11 | public name: string; 12 | 13 | public networkProtocol: number; 14 | 15 | public networkAddress: string; 16 | 17 | public priority: number; 18 | 19 | public networkPort: number; 20 | 21 | public version: string; 22 | 23 | public responseTime: number; 24 | 25 | public tier: number; 26 | } 27 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/pipes/coin-notation.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'coinNotation' 5 | }) 6 | export class CoinNotationPipe implements PipeTransform { 7 | constructor() { } 8 | 9 | private decimalLimit = 8; 10 | 11 | transform(value: number): number { 12 | let temp; 13 | if (typeof value === 'number') { 14 | temp = value / 100000000; 15 | return temp.toFixed(this.decimalLimit); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/pipes/size-unit.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'sizeUnit' 5 | }) 6 | export class SizeUnitPipe implements PipeTransform { 7 | 8 | private units = ['bytes', 'KB', 'MB', 'GB']; 9 | 10 | transform(value: number, precision: number = 1): string { 11 | if (typeof value === 'number') { 12 | if (isNaN(parseFloat(String(value))) || !isFinite(value)) { return '?'; } 13 | 14 | let unit = 0; 15 | 16 | while (value >= 1024) { 17 | value /= 1024; 18 | unit++; 19 | } 20 | 21 | return (value.toFixed(+precision) + ' ' + this.units[unit]); 22 | } 23 | } 24 | } 25 | 26 | 27 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/services/appconfig.d.ts: -------------------------------------------------------------------------------- 1 | export interface AppConfig { 2 | fullNodeEndpoint: string; 3 | xServerEndpoint: string; 4 | } -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/services/appconfig.service.ts: -------------------------------------------------------------------------------- 1 | import { HttpClient } from "@angular/common/http"; 2 | import { Injectable } from "@angular/core"; 3 | import { AppConfig } from "./appconfig"; 4 | 5 | @Injectable({ 6 | providedIn: 'root' 7 | }) 8 | export class AppConfigService { 9 | private config: AppConfig; 10 | loaded = false; 11 | constructor(private http: HttpClient) {} 12 | loadConfig(): Promise { 13 | return this.http 14 | .get('/assets/app.config.json') 15 | .toPromise() 16 | .then(data => { 17 | this.config = data; 18 | this.loaded = true; 19 | }); 20 | } 21 | 22 | getConfig(): AppConfig { 23 | return this.config; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/services/modal.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { DialogService } from 'primeng/dynamicdialog'; 3 | import { GenericModalComponent } from '../components/generic-modal/generic-modal.component'; 4 | 5 | @Injectable({ 6 | providedIn: 'root' 7 | }) 8 | export class ModalService { 9 | constructor(public dialogService: DialogService) { } 10 | 11 | public openModal(title, message) { 12 | 13 | let showHeader = true; 14 | 15 | if (title == null) { 16 | showHeader = false; 17 | } 18 | 19 | const modalData = { 20 | message 21 | }; 22 | this.dialogService.open(GenericModalComponent, 23 | { 24 | header: title, 25 | data: modalData, 26 | showHeader 27 | } 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/services/update.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { UpdateInfo } from '../../shared/models/update-info'; 3 | import { NotificationService } from './notification.service'; 4 | 5 | @Injectable({ 6 | providedIn: 'root' 7 | }) 8 | export class UpdateService { 9 | 10 | static singletonInstance: UpdateService; 11 | private userNotifiedOfUpdate = false; 12 | public info: UpdateInfo; 13 | public progress: any; 14 | public downloaded = false; 15 | public available = false; 16 | public downloading = false; 17 | public LastUpdateCheck: Date; 18 | public IsChecking = false; 19 | 20 | constructor( 21 | private notificationService: NotificationService, 22 | ) { 23 | return UpdateService.singletonInstance; 24 | } 25 | 26 | checkForUpdate() { 27 | throw new Error('Method not implemented.'); 28 | } 29 | 30 | downloadUpdate() { 31 | throw new Error('Method not implemented.'); 32 | } 33 | 34 | installUpdate() { 35 | throw new Error('Method not implemented.'); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /xServer.UI/src/app/shared/theme.ts: -------------------------------------------------------------------------------- 1 | export class Theme { 2 | name: string; 3 | path: string; 4 | contentColor: string; 5 | contentBackgroundColor: string; 6 | themeType: string; 7 | 8 | constructor(name: string, path: string, contentColor: string, contentBackgroundColor: string, themeType: string) { 9 | this.name = name; 10 | this.path = path; 11 | this.contentColor = contentColor; 12 | this.contentBackgroundColor = contentBackgroundColor; 13 | this.themeType = themeType; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/advanced/advanced.component.css: -------------------------------------------------------------------------------- 1 | .mainDiv { 2 | margin-left: 100px; 3 | margin-top: 20px; 4 | } 5 | 6 | ::ng-deep ng-datepicker input { 7 | height: 35px; 8 | } 9 | 10 | .label { 11 | font-size: 14px; 12 | margin-bottom: 1px; 13 | } -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/advanced/advanced.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/advanced/components/about/about.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/wallet/advanced/components/about/about.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/advanced/components/ext-pubkey/ext-pubkey.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/wallet/advanced/components/ext-pubkey/ext-pubkey.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/advanced/components/ext-pubkey/ext-pubkey.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {{ extPubKey }} 8 | Something went wrong while getting your Extended Public Key. 9 | The Extended Public Key has been copied to your clipboard. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/advanced/components/generate-addresses/generate-addresses.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/wallet/advanced/components/generate-addresses/generate-addresses.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/advanced/components/resync/resync.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/wallet/advanced/components/resync/resync.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/logout-confirmation/logout-confirmation.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/wallet/logout-confirmation/logout-confirmation.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/logout-confirmation/logout-confirmation.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Are you sure you want to log out? 6 | Be aware that this will also stop the staking process. 7 | 8 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/logout-confirmation/logout-confirmation.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { DynamicDialogRef } from 'primeng/dynamicdialog'; 3 | import { Router } from '@angular/router'; 4 | 5 | import { ApiService } from '../../shared/services/fullnode.api.service'; 6 | import { GlobalService } from '../../shared/services/global.service'; 7 | 8 | @Component({ 9 | selector: 'app-logout-confirmation', 10 | templateUrl: './logout-confirmation.component.html', 11 | styleUrls: ['./logout-confirmation.component.css'] 12 | }) 13 | export class LogoutConfirmationComponent { 14 | constructor( 15 | private router: Router, 16 | private apiService: ApiService, 17 | private globalService: GlobalService, 18 | public ref: DynamicDialogRef, 19 | ) { } 20 | 21 | public onLogout() { 22 | this.apiService.stopStaking().subscribe(); 23 | this.globalService.setProfile(null); 24 | this.ref.close(); 25 | this.router.navigate(['/login']); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/menu/menu.component.css: -------------------------------------------------------------------------------- 1 | .menu-navbar-text { 2 | cursor: pointer; 3 | } -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/server/applications-manage/applications-manage.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/wallet/server/applications-manage/applications-manage.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/server/create-serverid/create-serverid.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/wallet/server/create-serverid/create-serverid.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/status-bar/status-bar.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/wallet/status-bar/status-bar.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/transaction-details/transaction-details.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/wallet/transaction-details/transaction-details.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/wallet.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/app/wallet/wallet.component.css -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/wallet.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /xServer.UI/src/app/wallet/wallet.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-wallet-component', 5 | templateUrl: './wallet.component.html', 6 | styleUrls: ['./wallet.component.css'], 7 | }) 8 | export class WalletComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /xServer.UI/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/.gitkeep -------------------------------------------------------------------------------- /xServer.UI/src/assets/app.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "fullNodeEndpoint": "http://x42core.localhost/api", 3 | "xServerEndpoint": "http://x42server.localhost" 4 | } -------------------------------------------------------------------------------- /xServer.UI/src/assets/fonts/Linearicons-Free.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/fonts/Linearicons-Free.eot -------------------------------------------------------------------------------- /xServer.UI/src/assets/fonts/Linearicons-Free.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/fonts/Linearicons-Free.ttf -------------------------------------------------------------------------------- /xServer.UI/src/assets/fonts/Linearicons-Free.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/fonts/Linearicons-Free.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/fonts/Linearicons-Free.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/fonts/Linearicons-Free.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/Tick_Mark-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/Tick_Mark-16.png -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/icons/32x32.png -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/icons/512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/icons/512x512.png -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/icons/icon-tray.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/icons/icon-tray.ico -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/icons/icon.icns -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/icons/icon.ico -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/if_Error_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/if_Error_16.png -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/logo-failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/logo-failed.png -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/logo.png -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/logo_aqua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/logo_aqua.png -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/logo_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/logo_black.png -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/logo_pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/logo_pink.png -------------------------------------------------------------------------------- /xServer.UI/src/assets/images/logo_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/images/logo_white.png -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/md-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-dark-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-dark-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-500.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-700.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-light-deeppurple/fonts/roboto-v20-latin-ext_latin-regular.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-500.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-700.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff -------------------------------------------------------------------------------- /xServer.UI/src/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/assets/themes/mdc-light-indigo/fonts/roboto-v20-latin-ext_latin-regular.woff2 -------------------------------------------------------------------------------- /xServer.UI/src/environments/environment.dev.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: false, 3 | environment: 'BETA', 4 | password: '' 5 | }; 6 | -------------------------------------------------------------------------------- /xServer.UI/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | environment: 'RELEASE', 4 | password: '' 5 | }; 6 | -------------------------------------------------------------------------------- /xServer.UI/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: false, 3 | environment: '', 4 | password: '' 5 | }; 6 | -------------------------------------------------------------------------------- /xServer.UI/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | x42 Server 7 | 8 | 9 | 10 | 11 | Loading... 12 | 13 | 14 | -------------------------------------------------------------------------------- /xServer.UI/src/index.prod.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | x42 Server 7 | 8 | 9 | 10 | 11 | Loading... 12 | 13 | 14 | -------------------------------------------------------------------------------- /xServer.UI/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic() 12 | .bootstrapModule(AppModule, { 13 | preserveWhitespaces: false 14 | }) 15 | .catch(err => console.error(err)); 16 | -------------------------------------------------------------------------------- /xServer.UI/src/polyfills-test.ts: -------------------------------------------------------------------------------- 1 | import 'core-js/es7/reflect'; 2 | import 'zone.js/dist/zone'; 3 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/_close.scss: -------------------------------------------------------------------------------- 1 | .close { 2 | float: right; 3 | font-size: $close-font-size; 4 | font-weight: $close-font-weight; 5 | line-height: 1; 6 | color: $close-color; 7 | text-shadow: $close-text-shadow; 8 | opacity: .5; 9 | 10 | @include hover-focus { 11 | color: $close-color; 12 | text-decoration: none; 13 | opacity: .75; 14 | } 15 | } 16 | 17 | // Additional properties for button version 18 | // iOS requires the button element instead of an anchor tag. 19 | // If you want the anchor version, it requires `href="#"`. 20 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile 21 | 22 | // stylelint-disable property-no-vendor-prefix, selector-no-qualifying-type 23 | button.close { 24 | padding: 0; 25 | background: transparent; 26 | border: 0; 27 | -webkit-appearance: none; 28 | } 29 | // stylelint-enable 30 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/_jumbotron.scss: -------------------------------------------------------------------------------- 1 | .jumbotron { 2 | padding: ($jumbotron-padding / 2); 3 | margin: 0; 4 | background-color: $jumbotron-bg; 5 | @include border-radius($border-radius-lg); 6 | } 7 | 8 | .jumbotron-fluid { 9 | padding-right: 0; 10 | padding-left: 0; 11 | @include border-radius(0); 12 | } 13 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/_media.scss: -------------------------------------------------------------------------------- 1 | .media { 2 | display: flex; 3 | align-items: flex-start; 4 | } 5 | 6 | .media-body { 7 | flex: 1; 8 | } 9 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/_progress.scss: -------------------------------------------------------------------------------- 1 | @keyframes progress-bar-stripes { 2 | from { background-position: $progress-height 0; } 3 | to { background-position: 0 0; } 4 | } 5 | 6 | .progress { 7 | display: flex; 8 | height: $progress-height; 9 | overflow: hidden; // force rounded corners by cropping it 10 | font-size: $progress-font-size; 11 | background-color: $progress-bg; 12 | @include border-radius($progress-border-radius); 13 | } 14 | 15 | .progress-bar { 16 | display: flex; 17 | align-items: center; 18 | justify-content: center; 19 | color: $progress-bar-color; 20 | background-color: $progress-bar-bg; 21 | } 22 | 23 | .progress-bar-striped { 24 | @include gradient-striped(); 25 | background-size: $progress-height $progress-height; 26 | } 27 | 28 | .progress-bar-animated { 29 | animation: progress-bar-stripes $progress-bar-animation-timing; 30 | } 31 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/_root.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | // Custom variable values only support SassScript inside `#{}`. 3 | @each $color, $value in $colors { 4 | --#{$color}: #{$value}; 5 | } 6 | 7 | @each $color, $value in $theme-colors { 8 | --#{$color}: #{$value}; 9 | } 10 | 11 | @each $bp, $value in $grid-breakpoints { 12 | --breakpoint-#{$bp}: #{$value}; 13 | } 14 | 15 | // Use `inspect` for lists so that quoted items keep the quotes. 16 | // See https://github.com/sass/sass/issues/2383#issuecomment-336349172 17 | --font-family-sans-serif: #{inspect($font-family-sans-serif)}; 18 | --font-family-monospace: #{inspect($font-family-monospace)}; 19 | } 20 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/_transitions.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable selector-no-qualifying-type 2 | 3 | .fade { 4 | opacity: 0; 5 | @include transition($transition-fade); 6 | 7 | &.show { 8 | opacity: 1; 9 | } 10 | } 11 | 12 | .collapse { 13 | display: none; 14 | &.show { 15 | display: block; 16 | } 17 | } 18 | 19 | tr { 20 | &.collapse.show { 21 | display: table-row; 22 | } 23 | } 24 | 25 | tbody { 26 | &.collapse.show { 27 | display: table-row-group; 28 | } 29 | } 30 | 31 | .collapsing { 32 | position: relative; 33 | height: 0; 34 | overflow: hidden; 35 | @include transition($transition-collapse); 36 | } 37 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/_utilities.scss: -------------------------------------------------------------------------------- 1 | @import "utilities/align"; 2 | @import "utilities/background"; 3 | @import "utilities/borders"; 4 | @import "utilities/clearfix"; 5 | @import "utilities/display"; 6 | @import "utilities/embed"; 7 | @import "utilities/flex"; 8 | @import "utilities/float"; 9 | @import "utilities/position"; 10 | @import "utilities/screenreaders"; 11 | @import "utilities/sizing"; 12 | @import "utilities/spacing"; 13 | @import "utilities/text"; 14 | @import "utilities/visibility"; 15 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/bootstrap-grid.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grid v4.0.0-beta.2 (https://getbootstrap.com) 3 | * Copyright 2011-2017 The Bootstrap Authors 4 | * Copyright 2011-2017 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | 8 | @at-root { 9 | @-ms-viewport { width: device-width; } // stylelint-disable-line at-rule-no-vendor-prefix 10 | } 11 | 12 | html { 13 | box-sizing: border-box; 14 | -ms-overflow-style: scrollbar; 15 | } 16 | 17 | *, 18 | *::before, 19 | *::after { 20 | box-sizing: inherit; 21 | } 22 | 23 | @import "functions"; 24 | @import "variables"; 25 | 26 | // 27 | // Grid mixins 28 | // 29 | 30 | @import "mixins/breakpoints"; 31 | @import "mixins/grid-framework"; 32 | @import "mixins/grid"; 33 | 34 | @import "grid"; 35 | @import "utilities/flex"; 36 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/bootstrap-reboot.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.0.0-beta.2 (https://getbootstrap.com) 3 | * Copyright 2011-2017 The Bootstrap Authors 4 | * Copyright 2011-2017 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | 9 | @import "functions"; 10 | @import "variables"; 11 | @import "mixins"; 12 | @import "reboot"; 13 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_alert.scss: -------------------------------------------------------------------------------- 1 | @mixin alert-variant($background, $border, $color) { 2 | color: $color; 3 | @include gradient-bg($background); 4 | border-color: $border; 5 | 6 | hr { 7 | border-top-color: darken($border, 5%); 8 | } 9 | 10 | .alert-link { 11 | color: darken($color, 10%); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_background-variant.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Contextual backgrounds 4 | 5 | @mixin bg-variant($parent, $color) { 6 | #{$parent} { 7 | background-color: $color !important; 8 | } 9 | a#{$parent} { 10 | @include hover-focus { 11 | background-color: darken($color, 10%) !important; 12 | } 13 | } 14 | } 15 | 16 | @mixin bg-gradient-variant($parent, $color) { 17 | #{$parent} { 18 | background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_badge.scss: -------------------------------------------------------------------------------- 1 | @mixin badge-variant($bg) { 2 | color: color-yiq($bg); 3 | background-color: $bg; 4 | 5 | &[href] { 6 | @include hover-focus { 7 | color: color-yiq($bg); 8 | text-decoration: none; 9 | background-color: darken($bg, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_border-radius.scss: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | @mixin border-radius($radius: $border-radius) { 4 | @if $enable-rounded { 5 | border-radius: $radius; 6 | } 7 | } 8 | 9 | @mixin border-top-radius($radius) { 10 | @if $enable-rounded { 11 | border-top-left-radius: $radius; 12 | border-top-right-radius: $radius; 13 | } 14 | } 15 | 16 | @mixin border-right-radius($radius) { 17 | @if $enable-rounded { 18 | border-top-right-radius: $radius; 19 | border-bottom-right-radius: $radius; 20 | } 21 | } 22 | 23 | @mixin border-bottom-radius($radius) { 24 | @if $enable-rounded { 25 | border-bottom-right-radius: $radius; 26 | border-bottom-left-radius: $radius; 27 | } 28 | } 29 | 30 | @mixin border-left-radius($radius) { 31 | @if $enable-rounded { 32 | border-top-left-radius: $radius; 33 | border-bottom-left-radius: $radius; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_box-shadow.scss: -------------------------------------------------------------------------------- 1 | @mixin box-shadow($shadow...) { 2 | @if $enable-shadows { 3 | box-shadow: $shadow; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_caret.scss: -------------------------------------------------------------------------------- 1 | @mixin caret-down { 2 | border-top: $caret-width solid; 3 | border-right: $caret-width solid transparent; 4 | border-bottom: 0; 5 | border-left: $caret-width solid transparent; 6 | } 7 | 8 | @mixin caret-up { 9 | border-top: 0; 10 | border-right: $caret-width solid transparent; 11 | border-bottom: $caret-width solid; 12 | border-left: $caret-width solid transparent; 13 | } 14 | 15 | @mixin caret($direction: down) { 16 | @if $enable-caret { 17 | &::after { 18 | display: inline-block; 19 | width: 0; 20 | height: 0; 21 | margin-left: $caret-width * .85; 22 | vertical-align: $caret-width * .85; 23 | content: ""; 24 | @if $direction == down { 25 | @include caret-down; 26 | } @else if $direction == up { 27 | @include caret-up; 28 | } 29 | } 30 | 31 | &:empty::after { 32 | margin-left: 0; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix() { 2 | &::after { 3 | display: block; 4 | clear: both; 5 | content: ""; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_float.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @mixin float-left { 4 | float: left !important; 5 | } 6 | @mixin float-right { 7 | float: right !important; 8 | } 9 | @mixin float-none { 10 | float: none !important; 11 | } 12 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_list-group.scss: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | @mixin list-group-item-variant($state, $background, $color) { 4 | .list-group-item-#{$state} { 5 | color: $color; 6 | background-color: $background; 7 | } 8 | 9 | a.list-group-item-#{$state}, 10 | button.list-group-item-#{$state} { 11 | color: $color; 12 | 13 | @include hover-focus { 14 | color: $color; 15 | background-color: darken($background, 5%); 16 | } 17 | 18 | &.active { 19 | color: #fff; 20 | background-color: $color; 21 | border-color: $color; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_lists.scss: -------------------------------------------------------------------------------- 1 | // Lists 2 | 3 | // Unstyled keeps list items block level, just removes default browser padding and list-style 4 | @mixin list-unstyled { 5 | padding-left: 0; 6 | list-style: none; 7 | } 8 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_nav-divider.scss: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | @mixin nav-divider($color: #e5e5e5) { 6 | height: 0; 7 | margin: ($spacer / 2) 0; 8 | overflow: hidden; 9 | border-top: 1px solid $color; 10 | } 11 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_navbar-align.scss: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` 5 | // to calculate the appropriate top margin. 6 | 7 | // @mixin navbar-vertical-align($element-height) { 8 | // margin-top: (($navbar-height - $element-height) / 2); 9 | // margin-bottom: (($navbar-height - $element-height) / 2); 10 | // } 11 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | @mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) { 4 | .page-link { 5 | padding: $padding-y $padding-x; 6 | font-size: $font-size; 7 | line-height: $line-height; 8 | } 9 | 10 | .page-item { 11 | &:first-child { 12 | .page-link { 13 | @include border-left-radius($border-radius); 14 | } 15 | } 16 | &:last-child { 17 | .page-link { 18 | @include border-right-radius($border-radius); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_reset-text.scss: -------------------------------------------------------------------------------- 1 | @mixin reset-text { 2 | font-family: $font-family-base; 3 | // We deliberately do NOT reset font-size or word-wrap. 4 | font-style: normal; 5 | font-weight: $font-weight-normal; 6 | line-height: $line-height-base; 7 | text-align: left; // Fallback for where `start` is not supported 8 | text-align: start; // stylelint-disable-line declaration-block-no-duplicate-properties 9 | text-decoration: none; 10 | text-shadow: none; 11 | text-transform: none; 12 | letter-spacing: normal; 13 | word-break: normal; 14 | word-spacing: normal; 15 | white-space: normal; 16 | line-break: auto; 17 | } 18 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_resize.scss: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | @mixin resizable($direction) { 4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 5 | resize: $direction; // Options: horizontal, vertical, both 6 | } 7 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Only display content to screen readers 2 | // 3 | // See: http://a11yproject.com/posts/how-to-hide-content/ 4 | // See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/ 5 | 6 | @mixin sr-only { 7 | position: absolute; 8 | width: 1px; 9 | height: 1px; 10 | padding: 0; 11 | overflow: hidden; 12 | clip: rect(0,0,0,0); 13 | white-space: nowrap; 14 | clip-path: inset(50%); 15 | border: 0; 16 | } 17 | 18 | // Use in conjunction with .sr-only to only display content when it's focused. 19 | // 20 | // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 21 | // 22 | // Credit: HTML5 Boilerplate 23 | 24 | @mixin sr-only-focusable { 25 | &:active, 26 | &:focus { 27 | position: static; 28 | width: auto; 29 | height: auto; 30 | overflow: visible; 31 | clip: auto; 32 | white-space: normal; 33 | clip-path: none; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_size.scss: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | @mixin size($width, $height: $width) { 4 | width: $width; 5 | height: $height; 6 | } 7 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_table-row.scss: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | @mixin table-row-variant($state, $background) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table-#{$state} { 7 | &, 8 | > th, 9 | > td { 10 | background-color: $background; 11 | } 12 | } 13 | 14 | // Hover states for `.table-hover` 15 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 16 | .table-hover { 17 | $hover-background: darken($background, 5%); 18 | 19 | .table-#{$state} { 20 | @include hover { 21 | background-color: $hover-background; 22 | 23 | > td, 24 | > th { 25 | background-color: $hover-background; 26 | } 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_text-emphasis.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Typography 4 | 5 | @mixin text-emphasis-variant($parent, $color) { 6 | #{$parent} { 7 | color: $color !important; 8 | } 9 | a#{$parent} { 10 | @include hover-focus { 11 | color: darken($color, 10%) !important; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_text-hide.scss: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | @mixin text-hide() { 3 | font: 0/0 a; 4 | color: transparent; 5 | text-shadow: none; 6 | background-color: transparent; 7 | border: 0; 8 | } 9 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_text-truncate.scss: -------------------------------------------------------------------------------- 1 | // Text truncate 2 | // Requires inline-block or block for proper styling 3 | 4 | @mixin text-truncate() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_transition.scss: -------------------------------------------------------------------------------- 1 | @mixin transition($transition...) { 2 | @if $enable-transitions { 3 | @if length($transition) == 0 { 4 | transition: $transition-base; 5 | } @else { 6 | transition: $transition; 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/mixins/_visibility.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Visibility 4 | 5 | @mixin invisible($visibility) { 6 | visibility: $visibility !important; 7 | } 8 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/utilities/_align.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | .align-baseline { vertical-align: baseline !important; } // Browser default 4 | .align-top { vertical-align: top !important; } 5 | .align-middle { vertical-align: middle !important; } 6 | .align-bottom { vertical-align: bottom !important; } 7 | .align-text-bottom { vertical-align: text-bottom !important; } 8 | .align-text-top { vertical-align: text-top !important; } 9 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/utilities/_background.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $color, $value in $theme-colors { 4 | @include bg-variant(".bg-#{$color}", $value); 5 | } 6 | 7 | @if $enable-gradients { 8 | @each $color, $value in $theme-colors { 9 | @include bg-gradient-variant(".bg-gradient-#{$color}", $value); 10 | } 11 | } 12 | 13 | .bg-white { 14 | background-color: $white !important; 15 | } 16 | 17 | .bg-transparent { 18 | background-color: transparent !important; 19 | } 20 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/utilities/_clearfix.scss: -------------------------------------------------------------------------------- 1 | .clearfix { 2 | @include clearfix(); 3 | } 4 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/utilities/_embed.scss: -------------------------------------------------------------------------------- 1 | // Credit: Nicolas Gallagher and SUIT CSS. 2 | 3 | .embed-responsive { 4 | position: relative; 5 | display: block; 6 | width: 100%; 7 | padding: 0; 8 | overflow: hidden; 9 | 10 | &::before { 11 | display: block; 12 | content: ""; 13 | } 14 | 15 | .embed-responsive-item, 16 | iframe, 17 | embed, 18 | object, 19 | video { 20 | position: absolute; 21 | top: 0; 22 | bottom: 0; 23 | left: 0; 24 | width: 100%; 25 | height: 100%; 26 | border: 0; 27 | } 28 | } 29 | 30 | .embed-responsive-21by9 { 31 | &::before { 32 | padding-top: percentage(9 / 21); 33 | } 34 | } 35 | 36 | .embed-responsive-16by9 { 37 | &::before { 38 | padding-top: percentage(9 / 16); 39 | } 40 | } 41 | 42 | .embed-responsive-4by3 { 43 | &::before { 44 | padding-top: percentage(3 / 4); 45 | } 46 | } 47 | 48 | .embed-responsive-1by1 { 49 | &::before { 50 | padding-top: percentage(1 / 1); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/utilities/_float.scss: -------------------------------------------------------------------------------- 1 | @each $breakpoint in map-keys($grid-breakpoints) { 2 | @include media-breakpoint-up($breakpoint) { 3 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 4 | 5 | .float#{$infix}-left { @include float-left; } 6 | .float#{$infix}-right { @include float-right; } 7 | .float#{$infix}-none { @include float-none; } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/utilities/_position.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Common values 4 | 5 | // Sass list not in variables since it's not intended for customization. 6 | $positions: static, relative, absolute, fixed, sticky; 7 | 8 | @each $position in $positions { 9 | .position-#{$position} { position: $position !important; } 10 | } 11 | 12 | // Shorthand 13 | 14 | .fixed-top { 15 | position: fixed; 16 | top: 0; 17 | right: 0; 18 | left: 0; 19 | z-index: $zindex-fixed; 20 | } 21 | 22 | .fixed-bottom { 23 | position: fixed; 24 | right: 0; 25 | bottom: 0; 26 | left: 0; 27 | z-index: $zindex-fixed; 28 | } 29 | 30 | .sticky-top { 31 | @supports (position: sticky) { 32 | position: sticky; 33 | top: 0; 34 | z-index: $zindex-sticky; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/utilities/_screenreaders.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Screenreaders 3 | // 4 | 5 | .sr-only { 6 | @include sr-only(); 7 | } 8 | 9 | .sr-only-focusable { 10 | @include sr-only-focusable(); 11 | } 12 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/utilities/_sizing.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Width and height 4 | 5 | @each $prop, $abbrev in (width: w, height: h) { 6 | @each $size, $length in $sizes { 7 | .#{$abbrev}-#{$size} { #{$prop}: $length !important; } 8 | } 9 | } 10 | 11 | .mw-100 { max-width: 100% !important; } 12 | .mh-100 { max-height: 100% !important; } 13 | -------------------------------------------------------------------------------- /xServer.UI/src/scss/utilities/_visibility.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Visibility utilities 3 | // 4 | 5 | .visible { 6 | @include invisible(visible); 7 | } 8 | 9 | .invisible { 10 | @include invisible(hidden); 11 | } 12 | -------------------------------------------------------------------------------- /xServer.UI/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /xServer.UI/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "baseUrl": "", 6 | "types": [], 7 | "paths": { 8 | "core-js/es7/reflect": [ 9 | "node_modules/core-js/proposals/reflect-metadata" 10 | ] 11 | } 12 | }, 13 | "files": [ 14 | "main.ts", 15 | "polyfills.ts" 16 | ], 17 | "include": [ 18 | "src/**/*.d.ts" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /xServer.UI/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills-test.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ], 18 | "exclude": [ 19 | "dist", 20 | "release", 21 | "node_modules" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /xServer.UI/src/typings.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/x42protocol/xServer/d79eefeef4d354099832aa4fe7daf09fe196359c/xServer.UI/src/typings.d.ts -------------------------------------------------------------------------------- /xServer.UI/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": ["node"] 7 | }, 8 | "files": [ 9 | "src/main.ts", 10 | "src/polyfills.ts" 11 | ], 12 | "include": [ 13 | "src/**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /xServer.UI/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "compileOnSave": false, 4 | "compilerOptions": { 5 | "baseUrl": "./", 6 | "outDir": "./dist/out-tsc", 7 | "sourceMap": true, 8 | "declaration": false, 9 | "downlevelIteration": true, 10 | "experimentalDecorators": true, 11 | "moduleResolution": "node", 12 | "importHelpers": true, 13 | "target": "es2015", 14 | "module": "es2020", 15 | "lib": [ 16 | "es2018", 17 | "dom" 18 | ], 19 | "types": [ "node" ], 20 | "typeRoots": [ "../node_modules/@types" ] 21 | }, 22 | "angularCompilerOptions": { 23 | "fullTemplateTypeCheck": true, 24 | "strictInjectionParameters": true, 25 | "enableIvy": true 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /xServer.UI/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /xServer.UI/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | target: 'web', 3 | }; 4 | -------------------------------------------------------------------------------- /xServerWorker/Program.cs: -------------------------------------------------------------------------------- 1 | using Common.Services; 2 | using xServerWorker; 3 | using xServerWorker.BackgroundServices; 4 | 5 | IHost host = Host.CreateDefaultBuilder(args) 6 | .ConfigureServices(services => 7 | { 8 | services.AddHostedService(); 9 | try 10 | { 11 | services.AddSingleton(); 12 | services.AddSingleton(); 13 | 14 | } 15 | catch (Exception) 16 | { 17 | 18 | throw; 19 | } 20 | 21 | }) 22 | .Build(); 23 | 24 | await QuartzJobConfigurator.ConfigureJobsAsync(); 25 | 26 | await host.RunAsync(); 27 | -------------------------------------------------------------------------------- /xServerWorker/Properties/PublishProfiles/registry.hub.docker.com_x42protocoldocker.pubxml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | Docker 8 | ContainerRegistry 9 | true 10 | https://registry.hub.docker.com/x42protocoldocker 11 | dimsavva 12 | latest 13 | Release 14 | Any CPU 15 | 16 | -------------------------------------------------------------------------------- /xServerWorker/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "xServerWorker": { 4 | "commandName": "Project", 5 | "environmentVariables": { 6 | "DOTNET_ENVIRONMENT": "Development" 7 | }, 8 | "dotnetRunMessages": true 9 | }, 10 | "Docker": { 11 | "commandName": "Docker" 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /xServerWorker/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.Hosting.Lifetime": "Information" 6 | } 7 | }, 8 | "MONGO_USER" : "Dimi2" 9 | } 10 | --------------------------------------------------------------------------------
5 | 6 |
{{ extPubKey }}
Something went wrong while getting your Extended Public Key.
Are you sure you want to log out?