diff --git a/.github/workflows/manual-deploy-obscuro-gateway.yml b/.github/workflows/manual-deploy-obscuro-gateway.yml index 6acb385ca6..94a7f1ec2f 100644 --- a/.github/workflows/manual-deploy-obscuro-gateway.yml +++ b/.github/workflows/manual-deploy-obscuro-gateway.yml @@ -138,6 +138,7 @@ jobs: datadog/agent:latest \ && cd /home/obscuro/go-obscuro/ \ && docker run -d -p 80:80 -p 81:81 --name ${{env.RESOURCE_STARTING_NAME}}-OG-${{ GITHUB.RUN_NUMBER }} \ + -e OBSCURO_GATEWAY_VERSION="${{ GITHUB.RUN_NUMBER }}-${{ GITHUB.SHA }}" \ ${{ env.OBSCURO_GATEWAY_BUILD_TAG }} \ ./wallet_extension_linux -host=0.0.0.0 -port=80 -portWS=81 -nodeHost=${{ env.OBSCURO_GATEWAY_NODE_HOST }} \ -logPath=sys_out -dbType=mariaDB -dbConnectionURL="obscurouser:${{ secrets.OBSCURO_GATEWAY_MARIADB_USER_PWD }}@tcp(obscurogateway-mariadb-${{ github.event.inputs.testnet_type }}.uksouth.cloudapp.azure.com:3306)/ogdb"' diff --git a/.github/workflows/manual-deploy-obscuro-scan-2.yml b/.github/workflows/manual-deploy-obscuro-scan-2.yml index 71da379b93..cba7a74b98 100644 --- a/.github/workflows/manual-deploy-obscuro-scan-2.yml +++ b/.github/workflows/manual-deploy-obscuro-scan-2.yml @@ -69,7 +69,7 @@ jobs: name: ${{ github.event.inputs.testnet_type }}-fe-obscuro-scan location: 'uksouth' restart-policy: 'Never' - environment-variables: VITE_APIHOSTADDRESS=http://${{ github.event.inputs.testnet_type }}-api-obscuro-scan.uksouth.azurecontainer.io + environment-variables: VITE_APIHOSTADDRESS=http://${{ github.event.inputs.testnet_type }}-api-obscuro-scan.uksouth.azurecontainer.io VITE_FE_VERSION=${{ GITHUB.RUN_NUMBER }}-${{ GITHUB.SHA }} command-line: npm run serve-prod ports: '80' cpu: 2 diff --git a/tools/obscuroscan_v2/frontend/src/components/BotBarItem.vue b/tools/obscuroscan_v2/frontend/src/components/BotBarItem.vue index ef38f6a32f..80288f49eb 100644 --- a/tools/obscuroscan_v2/frontend/src/components/BotBarItem.vue +++ b/tools/obscuroscan_v2/frontend/src/components/BotBarItem.vue @@ -5,15 +5,27 @@ obscu.ro + +
version: {{ version }}
+
\ No newline at end of file diff --git a/tools/obscuroscan_v2/frontend/src/lib/config.dev.js b/tools/obscuroscan_v2/frontend/src/lib/config.dev.js index 40decc06b5..d3ee7ef092 100644 --- a/tools/obscuroscan_v2/frontend/src/lib/config.dev.js +++ b/tools/obscuroscan_v2/frontend/src/lib/config.dev.js @@ -2,6 +2,7 @@ class Config { static backendServerAddress = "http://127.0.0.1:43910" static pollingInterval = 1000 static pricePollingInterval = 10000*10000 + static version = "dev" } export default Config \ No newline at end of file diff --git a/tools/obscuroscan_v2/frontend/src/lib/config.js b/tools/obscuroscan_v2/frontend/src/lib/config.js index 40decc06b5..d3ee7ef092 100644 --- a/tools/obscuroscan_v2/frontend/src/lib/config.js +++ b/tools/obscuroscan_v2/frontend/src/lib/config.js @@ -2,6 +2,7 @@ class Config { static backendServerAddress = "http://127.0.0.1:43910" static pollingInterval = 1000 static pricePollingInterval = 10000*10000 + static version = "dev" } export default Config \ No newline at end of file diff --git a/tools/obscuroscan_v2/frontend/src/lib/config.prod.js b/tools/obscuroscan_v2/frontend/src/lib/config.prod.js index 954f287c87..99f6467308 100644 --- a/tools/obscuroscan_v2/frontend/src/lib/config.prod.js +++ b/tools/obscuroscan_v2/frontend/src/lib/config.prod.js @@ -3,6 +3,7 @@ class Config { static backendServerAddress = import.meta.env.VITE_APIHOSTADDRESS static pollingInterval = 1000 static pricePollingInterval = 10*this.pollingInterval + static version = import.meta.env.VITE_FE_VERSION } export default Config \ No newline at end of file diff --git a/tools/walletextension/api/routes.go b/tools/walletextension/api/routes.go index df8cc091ea..d3244622f2 100644 --- a/tools/walletextension/api/routes.go +++ b/tools/walletextension/api/routes.go @@ -62,6 +62,10 @@ func NewHTTPRoutes(walletExt *walletextension.WalletExtension) []Route { Name: common.PathHealth, Func: httpHandler(walletExt, healthRequestHandler), }, + { + Name: common.PathVersion, + Func: httpHandler(walletExt, versionRequestHandler), + }, } } @@ -440,3 +444,18 @@ func healthRequestHandler(walletExt *walletextension.WalletExtension, userConn u walletExt.Logger().Error(fmt.Errorf("error writing success response, %w", err).Error()) } } + +// Handles request to /version endpoint. +func versionRequestHandler(walletExt *walletextension.WalletExtension, userConn userconn.UserConn) { + // read the request + _, err := userConn.ReadRequest() + if err != nil { + walletExt.Logger().Error(fmt.Errorf("error reading request: %w", err).Error()) + return + } + + err = userConn.WriteResponse([]byte(walletExt.Version())) + if err != nil { + walletExt.Logger().Error(fmt.Errorf("error writing success response, %w", err).Error()) + } +} diff --git a/tools/walletextension/api/staticOG/index.html b/tools/walletextension/api/staticOG/index.html index 716e07416a..06a749118a 100644 --- a/tools/walletextension/api/staticOG/index.html +++ b/tools/walletextension/api/staticOG/index.html @@ -33,5 +33,6 @@

◠. Obscuro Gateway Demo! ◠.

+
\ No newline at end of file diff --git a/tools/walletextension/api/staticOG/javascript.js b/tools/walletextension/api/staticOG/javascript.js index ed8381b046..44a0419b4e 100644 --- a/tools/walletextension/api/staticOG/javascript.js +++ b/tools/walletextension/api/staticOG/javascript.js @@ -10,6 +10,7 @@ const pathJoin = obscuroGatewayVersion + "/join/"; const pathAuthenticate = obscuroGatewayVersion + "/authenticate/"; const pathQuery = obscuroGatewayVersion + "/query/"; const pathRevoke = obscuroGatewayVersion + "/revoke/"; +const pathVersion = "/version/"; const obscuroChainIDDecimal = 443; const methodPost = "post"; const methodGet = "get"; @@ -28,6 +29,26 @@ let obscuroGatewayAddress = window.location.protocol + "//" + window.location.ho let provider = null; +async function fetchAndDisplayVersion() { + try { + const versionResp = await fetch( + pathVersion, { + method: methodGet, + headers: jsonHeaders, + } + ); + if (!versionResp.ok) { + throw new Error("Failed to fetch the version"); + } + + let response = await versionResp.text(); + + const versionDiv = document.getElementById("versionDisplay"); + versionDiv.textContent = "Version: " + response; + } catch (error) { + console.error("Error fetching the version:", error); + } +} async function addNetworkToMetaMask(ethereum, userID, chainIDDecimal) { // add network to MetaMask @@ -200,6 +221,10 @@ const initialize = async () => { // getUserID from the gateway with getStorageAt method let userID = await getUserID() + + // load the current version + await fetchAndDisplayVersion(); + // check if userID exists and has a correct type and length (is valid) and display either // option to join or to add a new account to existing user if (isValidUserIDFormat(userID)) { diff --git a/tools/walletextension/common/constants.go b/tools/walletextension/common/constants.go index 4243aea462..6c51c03202 100644 --- a/tools/walletextension/common/constants.go +++ b/tools/walletextension/common/constants.go @@ -50,6 +50,7 @@ const ( GetStorageAtUserIDRequestMethodName = "getUserID" SuccessMsg = "success" APIVersion1 = "/v1" + PathVersion = "/version/" ) var ( diff --git a/tools/walletextension/container/walletextension_container.go b/tools/walletextension/container/walletextension_container.go index 335fabcec4..cdda627405 100644 --- a/tools/walletextension/container/walletextension_container.go +++ b/tools/walletextension/container/walletextension_container.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "net/http" + "os" "github.com/ethereum/go-ethereum/common" "github.com/obscuronet/go-obscuro/go/common/log" @@ -78,8 +79,14 @@ func NewWalletExtensionContainerFromConfig(config config.Config, logger gethlog. } } + // captures version in the env vars + version := os.Getenv("OBSCURO_GATEWAY_VERSION") + if version == "" { + version = "dev" + } + stopControl := stopcontrol.New() - walletExt := walletextension.New(hostRPCBindAddr, &userAccountManager, databaseStorage, stopControl, logger) + walletExt := walletextension.New(hostRPCBindAddr, &userAccountManager, databaseStorage, stopControl, version, logger) httpRoutes := api.NewHTTPRoutes(walletExt) httpServer := api.NewHTTPServer(fmt.Sprintf("%s:%d", config.WalletExtensionHost, config.WalletExtensionPortHTTP), httpRoutes) diff --git a/tools/walletextension/main/cli.go b/tools/walletextension/main/cli.go index 5e932251a4..f0e35a3fda 100644 --- a/tools/walletextension/main/cli.go +++ b/tools/walletextension/main/cli.go @@ -21,8 +21,8 @@ const ( walletExtensionPortWSUsage = "The port on which to serve websocket JSON RPC requests. Default: 3001." nodeHostName = "nodeHost" - nodeHostDefault = "testnet.obscu.ro" - nodeHostUsage = "The host on which to connect to the Obscuro node. Default: `testnet.obscu.ro`." + nodeHostDefault = "erpc.testnet.obscu.ro" + nodeHostUsage = "The host on which to connect to the Obscuro node. Default: `erpc.testnet.obscu.ro`." nodeHTTPPortName = "nodePortHTTP" nodeHTTPPortDefault = 80 diff --git a/tools/walletextension/wallet_extension.go b/tools/walletextension/wallet_extension.go index 87b30635a3..4b219207ef 100644 --- a/tools/walletextension/wallet_extension.go +++ b/tools/walletextension/wallet_extension.go @@ -37,6 +37,7 @@ type WalletExtension struct { storage storage.Storage logger gethlog.Logger stopControl *stopcontrol.StopControl + version string } func New( @@ -44,6 +45,7 @@ func New( userAccountManager *useraccountmanager.UserAccountManager, storage storage.Storage, stopControl *stopcontrol.StopControl, + version string, logger gethlog.Logger, ) *WalletExtension { return &WalletExtension{ @@ -53,6 +55,7 @@ func New( storage: storage, logger: logger, stopControl: stopControl, + version: version, } } @@ -414,3 +417,7 @@ func (w *WalletExtension) checkParametersForInterceptedGetStorageAt(params []int } return false } + +func (w *WalletExtension) Version() string { + return w.version +}