diff --git a/src/features/preferences/renderer/preference-items/proxy/allow-untrusted-certificates/allow-untrusted-certificates-preference-item.injectable.ts b/src/features/preferences/renderer/preference-items/proxy/allow-untrusted-certificates/allow-untrusted-certificates-preference-item.injectable.ts
new file mode 100644
index 0000000000..a145bc240d
--- /dev/null
+++ b/src/features/preferences/renderer/preference-items/proxy/allow-untrusted-certificates/allow-untrusted-certificates-preference-item.injectable.ts
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) OpenLens Authors. All rights reserved.
+ * Licensed under MIT License. See LICENSE in root directory for more information.
+ */
+import { getInjectable } from "@ogre-tools/injectable";
+import { preferenceItemInjectionToken } from "../../preference-item-injection-token";
+import { AllowUntrustedCertificates } from "./allow-untrusted-certificates";
+
+const allowUntrustedCertificatesPreferenceItemInjectable = getInjectable({
+ id: "allow-untrusted-certificates-preference-item",
+
+ instantiate: () => ({
+ kind: "item" as const,
+ id: "allow-untrusted-certificates",
+ parentId: "proxy-page",
+ orderNumber: 20,
+ Component: AllowUntrustedCertificates,
+ }),
+
+ injectionToken: preferenceItemInjectionToken,
+});
+
+export default allowUntrustedCertificatesPreferenceItemInjectable;
diff --git a/src/features/preferences/renderer/preference-items/proxy/allow-untrusted-certificates/allow-untrusted-certificates.tsx b/src/features/preferences/renderer/preference-items/proxy/allow-untrusted-certificates/allow-untrusted-certificates.tsx
new file mode 100644
index 0000000000..ce5ff14bf1
--- /dev/null
+++ b/src/features/preferences/renderer/preference-items/proxy/allow-untrusted-certificates/allow-untrusted-certificates.tsx
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) OpenLens Authors. All rights reserved.
+ * Licensed under MIT License. See LICENSE in root directory for more information.
+ */
+import React from "react";
+import { SubTitle } from "../../../../../../renderer/components/layout/sub-title";
+import { withInjectables } from "@ogre-tools/injectable-react";
+import type { UserStore } from "../../../../../../common/user-store";
+import userStoreInjectable from "../../../../../../common/user-store/user-store.injectable";
+import { observer } from "mobx-react";
+import { Switch } from "../../../../../../renderer/components/switch";
+
+interface Dependencies {
+ userStore: UserStore;
+}
+
+const NonInjectedAllowUntrustedCertificates = observer(({ userStore }: Dependencies) => (
+
+
+
+ (userStore.allowUntrustedCAs = !userStore.allowUntrustedCAs)
+ }
+ >
+ Allow untrusted Certificate Authorities
+
+
+ This will make Lens to trust ANY certificate authority without any
+ validations. Needed with some corporate proxies that do certificate
+ re-writing. Does not affect cluster communications!
+
+
+));
+
+export const AllowUntrustedCertificates = withInjectables(
+ NonInjectedAllowUntrustedCertificates,
+
+ {
+ getProps: (di) => ({
+ userStore: di.inject(userStoreInjectable),
+ }),
+ },
+);
diff --git a/src/features/preferences/renderer/preference-items/proxy/http-proxy-url/http-proxy-url-preference-item.injectable.ts b/src/features/preferences/renderer/preference-items/proxy/http-proxy-url/http-proxy-url-preference-item.injectable.ts
new file mode 100644
index 0000000000..bb43ceb470
--- /dev/null
+++ b/src/features/preferences/renderer/preference-items/proxy/http-proxy-url/http-proxy-url-preference-item.injectable.ts
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) OpenLens Authors. All rights reserved.
+ * Licensed under MIT License. See LICENSE in root directory for more information.
+ */
+import { getInjectable } from "@ogre-tools/injectable";
+import { preferenceItemInjectionToken } from "../../preference-item-injection-token";
+import { HttpProxyUrl } from "./http-proxy-url";
+
+const httpProxyUrlPreferenceItemInjectable = getInjectable({
+ id: "http-proxy-url-preference-item",
+
+ instantiate: () => ({
+ kind: "item" as const,
+ id: "http-proxy-url",
+ parentId: "proxy-page",
+ orderNumber: 10,
+ Component: HttpProxyUrl,
+ }),
+
+ injectionToken: preferenceItemInjectionToken,
+});
+
+export default httpProxyUrlPreferenceItemInjectable;
diff --git a/src/features/preferences/renderer/preference-items/proxy/http-proxy-url/http-proxy-url.tsx b/src/features/preferences/renderer/preference-items/proxy/http-proxy-url/http-proxy-url.tsx
new file mode 100644
index 0000000000..9b82a6ee35
--- /dev/null
+++ b/src/features/preferences/renderer/preference-items/proxy/http-proxy-url/http-proxy-url.tsx
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) OpenLens Authors. All rights reserved.
+ * Licensed under MIT License. See LICENSE in root directory for more information.
+ */
+import React from "react";
+import { SubTitle } from "../../../../../../renderer/components/layout/sub-title";
+import { withInjectables } from "@ogre-tools/injectable-react";
+import type { UserStore } from "../../../../../../common/user-store";
+import userStoreInjectable from "../../../../../../common/user-store/user-store.injectable";
+import { observer } from "mobx-react";
+import { Input } from "../../../../../../renderer/components/input";
+
+interface Dependencies {
+ userStore: UserStore;
+}
+
+const NonInjectedHttpProxyUrl = observer(
+ ({ userStore }: Dependencies) => {
+ const [proxy, setProxy] = React.useState(userStore.httpsProxy || "");
+
+ return (
+
+
Proxy
+
+ setProxy(v)}
+ onBlur={() => (userStore.httpsProxy = proxy)}
+ />
+
+ Proxy is used only for non-cluster communication.
+
+
+ );
+ },
+);
+
+export const HttpProxyUrl = withInjectables(
+ NonInjectedHttpProxyUrl,
+
+ {
+ getProps: (di) => ({
+ userStore: di.inject(userStoreInjectable),
+ }),
+ },
+);
diff --git a/src/features/preferences/renderer/preference-items/proxy/proxy-preference-page.injectable.ts b/src/features/preferences/renderer/preference-items/proxy/proxy-preference-page.injectable.ts
new file mode 100644
index 0000000000..1fbfd460a2
--- /dev/null
+++ b/src/features/preferences/renderer/preference-items/proxy/proxy-preference-page.injectable.ts
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) OpenLens Authors. All rights reserved.
+ * Licensed under MIT License. See LICENSE in root directory for more information.
+ */
+import { getInjectable } from "@ogre-tools/injectable";
+import { preferenceItemInjectionToken } from "../preference-item-injection-token";
+import { ProxyPreferencePage } from "./proxy-preference-page";
+
+const proxyPreferencePageInjectable = getInjectable({
+ id: "proxy-preference-page",
+
+ instantiate: () => ({
+ kind: "page" as const,
+ id: "proxy-page",
+ parentId: "proxy-tab",
+ orderNumber: 0,
+ Component: ProxyPreferencePage,
+ }),
+
+ injectionToken: preferenceItemInjectionToken,
+});
+
+export default proxyPreferencePageInjectable;
diff --git a/src/features/preferences/renderer/preference-items/proxy/proxy-preference-page.tsx b/src/features/preferences/renderer/preference-items/proxy/proxy-preference-page.tsx
new file mode 100644
index 0000000000..702f92f4d7
--- /dev/null
+++ b/src/features/preferences/renderer/preference-items/proxy/proxy-preference-page.tsx
@@ -0,0 +1,11 @@
+/**
+ * Copyright (c) OpenLens Authors. All rights reserved.
+ * Licensed under MIT License. See LICENSE in root directory for more information.
+ */
+import React from "react";
+
+export const ProxyPreferencePage = () => (
+
+
Proxy
+
+);
diff --git a/src/features/preferences/renderer/preference-items/proxy/proxy-preference-tab.injectable.ts b/src/features/preferences/renderer/preference-items/proxy/proxy-preference-tab.injectable.ts
new file mode 100644
index 0000000000..6a68608e9c
--- /dev/null
+++ b/src/features/preferences/renderer/preference-items/proxy/proxy-preference-tab.injectable.ts
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) OpenLens Authors. All rights reserved.
+ * Licensed under MIT License. See LICENSE in root directory for more information.
+ */
+import { getInjectable } from "@ogre-tools/injectable";
+import { preferenceItemInjectionToken } from "../preference-item-injection-token";
+
+const proxyPreferenceTabInjectable = getInjectable({
+ id: "proxy-preference-tab",
+
+ instantiate: () => ({
+ kind: "tab" as const,
+ id: "proxy-tab",
+ parentId: "preference-tabs" as const,
+ pathId: "proxy",
+ testId: "proxy-preferences-page",
+ label: "Proxy",
+ orderNumber: 20,
+ }),
+
+ injectionToken: preferenceItemInjectionToken,
+});
+
+export default proxyPreferenceTabInjectable;