From 99e5c1036d0550a44755c8cffc518952055c2d54 Mon Sep 17 00:00:00 2001 From: Helge Date: Sat, 9 Mar 2024 17:31:36 +0100 Subject: [PATCH 1/3] Enable running using http This means that by adding PHANPY_SCHEME=http to the file ".env" phanpy will use http instead of https to connect to remote instances. This is useful to test local versions of various Fediverse applications. These can be created following the instructions on https://funfedi.dev/quickstart/#running-an-application-from-the-fediverse-pasture --- src/pages/login.jsx | 10 ++++++---- src/utils/api.js | 6 +++++- src/utils/auth.js | 13 ++++++++----- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/pages/login.jsx b/src/pages/login.jsx index 5d53cde090..7909a04b92 100644 --- a/src/pages/login.jsx +++ b/src/pages/login.jsx @@ -12,7 +12,7 @@ import { getAuthorizationURL, registerApplication } from '../utils/auth'; import store from '../utils/store'; import useTitle from '../utils/useTitle'; -const { PHANPY_DEFAULT_INSTANCE: DEFAULT_INSTANCE } = import.meta.env; +const { PHANPY_DEFAULT_INSTANCE: DEFAULT_INSTANCE, PHANPY_SCHEME: SCHEME = 'https' } = import.meta.env; function Login() { useTitle('Log in'); @@ -85,9 +85,11 @@ function Login() { .replace(/^@?[^@]+@/, '') // Remove @?acct@ .trim() : null; - const instanceTextLooksLikeDomain = - /[^\s\r\n\t\/\\]+\.[^\s\r\n\t\/\\]+/.test(cleanInstanceText) && - !/[\s\/\\@]/.test(cleanInstanceText); + const instanceTextLooksLikeDomain = + (/[^\s\r\n\t\/\\]+\.[^\s\r\n\t\/\\]+/.test(cleanInstanceText) && + !/[\s\/\\@]/.test(cleanInstanceText)) || SCHEME === "http"; + + console.log(SCHEME) const instancesSuggestions = cleanInstanceText ? instancesList diff --git a/src/utils/api.js b/src/utils/api.js index d1c9981a11..52fd8cc145 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -9,6 +9,8 @@ import { saveAccount, } from './store-utils'; +const { PHANPY_SCHEME: SCHEME = 'https' } = import.meta.env; + // Default *fallback* instance const DEFAULT_INSTANCE = 'mastodon.social'; @@ -36,7 +38,9 @@ export function initClient({ instance, accessToken }) { .replace(/\/+$/, '') .toLowerCase(); } - const url = instance ? `https://${instance}` : `https://${DEFAULT_INSTANCE}`; + const url = instance + ? `${SCHEME}://${instance}` + : `${SCHEME}://${DEFAULT_INSTANCE}`; const masto = createRestAPIClient({ url, diff --git a/src/utils/auth.js b/src/utils/auth.js index f03ee34501..c1a1a5f965 100644 --- a/src/utils/auth.js +++ b/src/utils/auth.js @@ -1,5 +1,8 @@ -const { PHANPY_CLIENT_NAME: CLIENT_NAME, PHANPY_WEBSITE: WEBSITE } = import.meta - .env; +const { + PHANPY_CLIENT_NAME: CLIENT_NAME, + PHANPY_WEBSITE: WEBSITE, + PHANPY_SCHEME: SCHEME = 'https', +} = import.meta.env; const SCOPES = 'read write follow push'; @@ -11,7 +14,7 @@ export async function registerApplication({ instanceURL }) { website: WEBSITE, }); const registrationResponse = await fetch( - `https://${instanceURL}/api/v1/apps`, + `${SCHEME}://${instanceURL}/api/v1/apps`, { method: 'POST', headers: { @@ -33,7 +36,7 @@ export async function getAuthorizationURL({ instanceURL, client_id }) { // redirect_uri: 'urn:ietf:wg:oauth:2.0:oob', response_type: 'code', }); - const authorizationURL = `https://${instanceURL}/oauth/authorize?${authorizationParams.toString()}`; + const authorizationURL = `${SCHEME}://${instanceURL}/oauth/authorize?${authorizationParams.toString()}`; return authorizationURL; } @@ -51,7 +54,7 @@ export async function getAccessToken({ code, scope: SCOPES, }); - const tokenResponse = await fetch(`https://${instanceURL}/oauth/token`, { + const tokenResponse = await fetch(`${SCHEME}://${instanceURL}/oauth/token`, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', From a5de91a01c9bdaee51b9bdfcf6ac0e85f33ce68d Mon Sep 17 00:00:00 2001 From: Helge Date: Wed, 4 Dec 2024 18:58:27 +0100 Subject: [PATCH 2/3] Run prettier --- src/pages/login.jsx | 12 ++++++++---- src/utils/auth.js | 3 ++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/pages/login.jsx b/src/pages/login.jsx index fd64a96daa..76f55a67c6 100644 --- a/src/pages/login.jsx +++ b/src/pages/login.jsx @@ -20,7 +20,10 @@ import { supportsPKCE } from '../utils/oauth-pkce'; import store from '../utils/store'; import useTitle from '../utils/useTitle'; -const { PHANPY_DEFAULT_INSTANCE: DEFAULT_INSTANCE, PHANPY_SCHEME: SCHEME = 'https' } = import.meta.env; +const { + PHANPY_DEFAULT_INSTANCE: DEFAULT_INSTANCE, + PHANPY_SCHEME: SCHEME = 'https', +} = import.meta.env; function Login() { useTitle('Log in'); @@ -137,11 +140,12 @@ function Login() { .replace(/^@?[^@]+@/, '') // Remove @?acct@ .trim() : null; - const instanceTextLooksLikeDomain = + const instanceTextLooksLikeDomain = (/[^\s\r\n\t\/\\]+\.[^\s\r\n\t\/\\]+/.test(cleanInstanceText) && - !/[\s\/\\@]/.test(cleanInstanceText)) || SCHEME === "http"; + !/[\s\/\\@]/.test(cleanInstanceText)) || + SCHEME === 'http'; - console.log(SCHEME) + console.log(SCHEME); const instancesSuggestions = cleanInstanceText ? searcher.current diff --git a/src/utils/auth.js b/src/utils/auth.js index 5a2af51114..3c8197e861 100644 --- a/src/utils/auth.js +++ b/src/utils/auth.js @@ -1,9 +1,10 @@ +import { generateCodeChallenge, verifier } from './oauth-pkce'; + const { PHANPY_CLIENT_NAME: CLIENT_NAME, PHANPY_WEBSITE: WEBSITE, PHANPY_SCHEME: SCHEME = 'https', } = import.meta.env; -import { generateCodeChallenge, verifier } from './oauth-pkce'; const SCOPES = 'read write follow push'; From c286c055bcaa402a7f9aa93eaf10fb33d539bef3 Mon Sep 17 00:00:00 2001 From: Helge Date: Thu, 11 Sep 2025 14:41:28 +0200 Subject: [PATCH 3/3] Updating to latest phanpy --- src/locales/en.po | 24 ++++++++++++------------ src/pages/login.jsx | 4 +++- src/utils/auth.js | 1 + 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/locales/en.po b/src/locales/en.po index bf6cffa5e4..e9c9f063a8 100644 --- a/src/locales/en.po +++ b/src/locales/en.po @@ -1319,8 +1319,8 @@ msgid "Accounts…" msgstr "" #: src/components/nav-menu.jsx:326 -#: src/pages/login.jsx:32 -#: src/pages/login.jsx:199 +#: src/pages/login.jsx:35 +#: src/pages/login.jsx:207 #: src/pages/status.jsx:1000 #: src/pages/welcome.jsx:65 msgid "Log in" @@ -2079,7 +2079,7 @@ msgstr "" #: src/components/shortcuts-settings.jsx:75 #: src/components/shortcuts-settings.jsx:84 #: src/components/shortcuts-settings.jsx:122 -#: src/pages/login.jsx:203 +#: src/pages/login.jsx:211 msgid "Instance" msgstr "" @@ -2716,7 +2716,7 @@ msgstr "Login required." #: src/compose.jsx:91 #: src/pages/annual-report.jsx:164 #: src/pages/http-route.jsx:91 -#: src/pages/login.jsx:280 +#: src/pages/login.jsx:288 msgid "Go home" msgstr "" @@ -3421,32 +3421,32 @@ msgstr "" msgid "No lists yet." msgstr "" -#: src/pages/login.jsx:122 -#: src/pages/login.jsx:132 +#: src/pages/login.jsx:127 +#: src/pages/login.jsx:137 msgid "Failed to register application" msgstr "Failed to register application" -#: src/pages/login.jsx:218 +#: src/pages/login.jsx:226 msgid "instance domain" msgstr "instance domain" -#: src/pages/login.jsx:242 +#: src/pages/login.jsx:250 msgid "e.g. “mastodon.social”" msgstr "" -#: src/pages/login.jsx:253 +#: src/pages/login.jsx:261 msgid "Failed to log in. Please try again or try another instance." msgstr "" -#: src/pages/login.jsx:265 +#: src/pages/login.jsx:273 msgid "Continue with {selectedInstanceText}" msgstr "" -#: src/pages/login.jsx:266 +#: src/pages/login.jsx:274 msgid "Continue" msgstr "" -#: src/pages/login.jsx:274 +#: src/pages/login.jsx:282 msgid "Don't have an account? Create one!" msgstr "" diff --git a/src/pages/login.jsx b/src/pages/login.jsx index 32ce0e969e..e60dc6d3da 100644 --- a/src/pages/login.jsx +++ b/src/pages/login.jsx @@ -72,7 +72,9 @@ function Login() { // WEB_DOMAIN vs LOCAL_DOMAIN negotiation time // https://docs.joinmastodon.org/admin/config/#web_domain try { - const res = await fetch(`https://${instanceURL}/.well-known/host-meta`); // returns XML + const res = await fetch( + `${PHANPY_SCHEME}://${instanceURL}/.well-known/host-meta`, + ); // returns XML const text = await res.text(); // Parse XML const parser = new DOMParser(); diff --git a/src/utils/auth.js b/src/utils/auth.js index 3dcf71eca0..ce6f3c7df8 100644 --- a/src/utils/auth.js +++ b/src/utils/auth.js @@ -1,6 +1,7 @@ import { generateCodeChallenge, verifier } from './oauth-pkce'; const { + DEV, PHANPY_CLIENT_NAME: CLIENT_NAME, PHANPY_WEBSITE: WEBSITE, PHANPY_SCHEME: SCHEME = 'https',