Skip to content
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.uid2</groupId>
<artifactId>uid2-admin</artifactId>
<version>5.17.0</version>
<version>5.17.2-alpha-106-SNAPSHOT</version>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand All @@ -16,7 +16,7 @@
<!-- check micrometer.version vertx-micrometer-metrics consumes before bumping up -->
<micrometer.version>1.12.2</micrometer.version>
<junit-jupiter.version>5.11.2</junit-jupiter.version>
<uid2-shared.version>8.0.25</uid2-shared.version>
<uid2-shared.version>8.0.32</uid2-shared.version>
<okta-jwt.version>0.5.10</okta-jwt.version>
<image.version>${project.version}</image.version>
</properties>
Expand Down
11 changes: 4 additions & 7 deletions src/main/java/com/uid2/admin/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import com.uid2.admin.store.version.VersionGenerator;
import com.uid2.admin.store.writer.*;
import com.uid2.admin.vertx.AdminVerticle;
import com.uid2.admin.vertx.Endpoints;
import com.uid2.admin.vertx.JsonUtil;
import com.uid2.admin.vertx.WriteLock;
import com.uid2.admin.vertx.api.V2RouterModule;
Expand All @@ -42,6 +43,7 @@
import com.uid2.shared.store.RotatingSaltProvider;
import com.uid2.shared.store.reader.*;
import com.uid2.shared.store.scope.GlobalScope;
import com.uid2.shared.util.HTTPPathMetricFilter;
import com.uid2.shared.vertx.VertxUtils;
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;
Expand Down Expand Up @@ -422,13 +424,8 @@ private static void setupMetrics(MicrometerMetricsOptions metricOptions) {
prometheusRegistry.config()
// providing common renaming for prometheus metric, e.g. "hello.world" to "hello_world"
.meterFilter(new PrometheusRenameFilter())
.meterFilter(MeterFilter.replaceTagValues(Label.HTTP_PATH.toString(), actualPath -> {
try {
return HttpUtils.normalizePath(actualPath).split("\\?")[0];
} catch (IllegalArgumentException e) {
return actualPath;
}
}))
.meterFilter(MeterFilter.replaceTagValues(Label.HTTP_PATH.toString(),
actualPath -> HTTPPathMetricFilter.filterPath(actualPath, Endpoints.pathSet())))
// adding common labels
.commonTags("application", "uid2-admin");

Expand Down
147 changes: 147 additions & 0 deletions src/main/java/com/uid2/admin/vertx/Endpoints.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
package com.uid2.admin.vertx;

import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public enum Endpoints {
API_CLIENT_METADATA("/api/client/metadata"),
API_CLIENT_REWRITE_METADATA("/api/client/rewrite_metadata"),
API_CLIENT_LIST("/api/client/list"),
API_CLIENT_LIST_SITEID("/api/client/list/:siteId"),
API_CLIENT_KEYID("/api/client/keyId"),
API_CLIENT_CONTACT("/api/client/contact"),
API_CLIENT_REVEAL("/api/client/reveal"),
API_CLIENT_ADD("/api/client/add"),
API_CLIENT_DEL("/api/client/del"),
API_CLIENT_UPDATE("/api/client/update"),
API_CLIENT_DISABLE("/api/client/disable"),
API_CLIENT_ENABLE("/api/client/enable"),
API_CLIENT_ROLES("/api/client/roles"),
API_CLIENT_RENAME("/api/client/rename"),

API_CLIENT_SIDE_KEYPAIRS_ADD("/api/client_side_keypairs/add"),
API_CLIENT_SIDE_KEYPAIRS_UPDATE("/api/client_side_keypairs/update"),
API_CLIENT_SIDE_KEYPAIRS_LIST("/api/client_side_keypairs/list"),
API_CLIENT_SIDE_KEYPAIRS_SUBSCRIPTIONID("/api/client_side_keypairs/:subscriptionId"),
API_CLIENT_SIDE_KEYPAIRS_BY_SITE("/api/v2/sites/:siteId/client-side-keypairs"),

API_ENCLAVE_METADATA("/api/enclave/metadata"),
API_ENCLAVE_LIST("/api/enclave/list"),
API_ENCLAVE_ADD("/api/enclave/add"),
API_ENCLAVE_DEL("/api/enclave/del"),

API_ENCRYPTED_FILES_REFRESH("/api/encrypted-files/refresh"),
API_ENCRYPTED_FILES_SYNC_NOW("/api/encrypted-files/syncNow"),

API_KEY_LIST("/api/key/list"),
API_KEY_LIST_KEYSET_KEYS("/api/key/list_keyset_keys"),
API_KEY_REWRITE_METADATA("/api/key/rewrite_metadata"),
API_KEY_ROTATE_MASTER("/api/key/rotate_master"),
API_KEY_ADD("/api/key/add"),
API_KEY_ROTATE_SITE("/api/key/rotate_site"),
API_KEY_ROTATE_KEYSET_KEY("/api/key/rotate_keyset_key"),
API_KEY_ROTATE_ALL_SITES("/api/key/rotate_all_sites"),

API_JOB_DISPATCHER_CURRENT_JOB("/api/job-dispatcher/current-job"),
API_JOB_DISPATCHER_JOB_QUEUE("/api/job-dispatcher/job-queue"),

API_KEYS_ACL_LIST("/api/keys_acl/list"),
API_KEYS_ACL_REWRITE_METADATA("/api/keys_acl/rewrite_metadata"),

API_OPERATOR_METADATA("/api/operator/metadata"),
API_OPERATOR_LIST("/api/operator/list"),
API_OPERATOR_REVEAL("/api/operator/reveal"),
API_OPERATOR_ADD("/api/operator/add"),
API_OPERATOR_DEL("/api/operator/del"),
API_OPERATOR_DISABLE("/api/operator/disable"),
API_OPERATOR_ENABLE("/api/operator/enable"),
API_OPERATOR_UPDATE("/api/operator/update"),
API_OPERATOR_ROLES("/api/operator/roles"),

API_PARTNER_CONFIG_GET("/api/partner_config/get"),
API_PARTNER_CONFIG_UPDATE("/api/partner_config/update"),

API_PRIVATE_SITES_REFRESH("/api/private-sites/refresh"),
API_PRIVATE_SITES_REFRESH_NOW("/api/private-sites/refreshNow"),

API_SALT_SNAPSHOTS("/api/salt/snapshots"),
API_SALT_ROTATE("/api/salt/rotate"),

API_SEARCH("/api/search"),

API_SERVICE_LINK_LIST("/api/service_link/list"),
API_SERVICE_LINK_ADD("/api/service_link/add"),
API_SERVICE_LINK_UPDATE("/api/service_link/update"),
API_SERVICE_LINK_DELETE("/api/service_link/delete"),

API_SERVICE_LIST("/api/service/list"),
API_SERVICE_LIST_SERVICE_ID("/api/service/list/:service_id"),
API_SERVICE_ADD("/api/service/add"),
API_SERVICE_UPDATE("/api/service/update"),
API_SERVICE_DELETE("/api/service/delete"),

API_SHARING_LISTS("/api/sharing/lists"),
API_SHARING_LIST_SITEID("/api/sharing/list/:siteId"),
API_SHARING_KEYSETS("/api/sharing/keysets"),
API_SHARING_KEYSET("/api/sharing/keyset"),
API_SHARING_KEYSET_KEYSETID("/api/sharing/keyset/:keyset_id"),
API_SHARING_KEYSETS_RELATED("/api/sharing/keysets/related"),

API_SITE_REWRITE_METADATA("/api/site/rewrite_metadata"),
API_SITE_LIST("/api/site/list"),
API_SITE_SITEID("/api/site/:siteId"),
API_SITE_ADD("/api/site/add"),
API_SITE_ENABLE("/api/site/enable"),
API_SITE_SET_TYPES("/api/site/set-types"),
API_SITE_DOMAIN_NAMES("/api/site/domain_names"),
API_SITE_APP_NAMES("/api/site/app_names"),
API_SITE_UPDATE("/api/site/update"),

LOGIN("/login"),
LOGOUT("/logout"),
OPS_HEALTHCHECK("/ops/healthcheck"),
API_USERINFO("/api/userinfo"),

WEB_ROOT("/"),
WEB_JS_MAIN("/js/main.js"),
WEB_JS_PARTICIPANT_SUMMARY("/js/participantSummary.js"),
WEB_JS_BOOTSTRAP("/js/bootstrap.bundle.min.js"),
WEB_CSS_COPY_SVG("/css/copy.svg"),
WEB_CSS_PARTICIPANT_SUMMARY("/css/participantSummary.css"),
WEB_CSS_STYLE("/css/style.css"),

ADM_ONCALL_PARTICIPANT_SUMMARY("/adm/oncall/participant-summary.html"),
ADM_ONCALL_GENERATE_API_KEY_SECRET("/adm/oncall/generate-api-key-secret.html"),
ADM_ONCALL_GENERATE_CSTG_KEYPAIR("/adm/oncall/generate-cstg-keypair.html"),
ADM_ONCALL_SEARCH("/adm/oncall/search.html"),
ADM_SITE("/adm/site.html"),
ADM_CLIENT_SIDE_KEYPAIRS("/adm/client-side-keypairs.html"),
ADM_SERVICES("/adm/services.html"),
ADM_SERVICE_LINKS("/adm/service-links.html"),
ADM_CLIENT_KEY("/adm/client-key.html"),
ADM_KEYSETS("/adm/keysets.html"),
ADM_ENCRYPTION_KEY("/adm/encryption-key.html"),
ADM_SALT("/adm/salt.html"),
ADM_OPERATOR_KEY("/adm/operator-key.html"),
ADM_ENCLAVE_ID("/adm/enclave-id.html"),
ADM_ENCLAVE_GCP("/adm/enclave-gcp.html"),
ADM_ENCLAVE_GCP_V2("/adm/enclave-gcp-v2.html"),
ADM_PARTNER_CONFIG("/adm/partner-config.html"),
ADM_KEY_ACL("/adm/key-acl.html");

private final String path;

Endpoints(final String path) {
this.path = path;
}

public static Set<String> pathSet() {
return Stream.of(Endpoints.values()).map(Endpoints::toString).collect(Collectors.toSet());
}

@Override
public String toString() {
return path;
}
}
Loading