Revert "fix: Always use IP address for webhooks"

This reverts commit 880865f1f2d46ae64b903aa8778de1bf8bcd8248.
This commit is contained in:
Andras Bacsai 2022-04-29 23:25:15 +02:00
parent 45c904e876
commit e93d97f2bc
6 changed files with 16 additions and 39 deletions

View File

@ -1,5 +1,3 @@
import { dev } from '$app/env';
export const asyncSleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay)); export const asyncSleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay));
export const dateOptions: DateTimeFormatOptions = { export const dateOptions: DateTimeFormatOptions = {
year: 'numeric', year: 'numeric',
@ -23,18 +21,6 @@ export const staticDeployments = [
]; ];
export const notNodeDeployments = ['php', 'docker', 'rust', 'python', 'deno', 'laravel']; export const notNodeDeployments = ['php', 'docker', 'rust', 'python', 'deno', 'laravel'];
export async function getIP() {
if (dev) {
return 'localhost:3000';
}
const response = await fetch(`https://api.ipify.org?format=json`);
if (response.ok) {
const json = await response.json();
return `http://${json.ip}`;
}
return window.location.origin;
}
export function getDomain(domain) { export function getDomain(domain) {
return domain?.replace('https://', '').replace('http://', ''); return domain?.replace('https://', '').replace('http://', '');
} }

View File

@ -8,7 +8,6 @@
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { gitTokens } from '$lib/store'; import { gitTokens } from '$lib/store';
import { t } from '$lib/translations'; import { t } from '$lib/translations';
import { getIP } from '$lib/components/common';
const { id } = $page.params; const { id } = $page.params;
const from = $page.url.searchParams.get('from'); const from = $page.url.searchParams.get('from');
@ -114,7 +113,6 @@
} }
onMount(async () => { onMount(async () => {
const ip = await getIP();
try { try {
if (!$gitTokens.githubToken) { if (!$gitTokens.githubToken) {
const { token } = await get(`/applications/${id}/configuration/githubToken.json`); const { token } = await get(`/applications/${id}/configuration/githubToken.json`);
@ -133,7 +131,7 @@
const left = screen.width / 2 - 1020 / 2; const left = screen.width / 2 - 1020 / 2;
const top = screen.height / 2 - 618 / 2; const top = screen.height / 2 - 618 / 2;
const newWindow = open( const newWindow = open(
`${htmlUrl}/oauth/authorize?client_id=${application.gitSource.gitlabApp.appId}&redirect_uri=${ip}/webhooks/gitlab&response_type=code&scope=api+email+read_repository&state=${$page.params.id}`, `${htmlUrl}/oauth/authorize?client_id=${application.gitSource.gitlabApp.appId}&redirect_uri=${window.location.origin}/webhooks/gitlab&response_type=code&scope=api+email+read_repository&state=${$page.params.id}`,
'GitLab', 'GitLab',
'resizable=1, scrollbars=1, fullscreen=0, height=618, width=1020,top=' + 'resizable=1, scrollbars=1, fullscreen=0, height=618, width=1020,top=' +
top + top +

View File

@ -10,7 +10,6 @@
import { del, get, post, put } from '$lib/api'; import { del, get, post, put } from '$lib/api';
import { gitTokens } from '$lib/store'; import { gitTokens } from '$lib/store';
import { t } from '$lib/translations'; import { t } from '$lib/translations';
import { getIP } from '$lib/components/common';
const { id } = $page.params; const { id } = $page.params;
const from = $page.url.searchParams.get('from'); const from = $page.url.searchParams.get('from');
@ -41,7 +40,7 @@
}; };
onMount(async () => { onMount(async () => {
if (!$gitTokens.gitlabToken) { if (!$gitTokens.gitlabToken) {
await getGitlabToken(); getGitlabToken();
} else { } else {
loading.base = true; loading.base = true;
try { try {
@ -50,7 +49,7 @@
}); });
username = user.username; username = user.username;
} catch (error) { } catch (error) {
return await getGitlabToken(); return getGitlabToken();
} }
try { try {
groups = await get(`${apiUrl}/v4/groups?per_page=5000`, { groups = await get(`${apiUrl}/v4/groups?per_page=5000`, {
@ -65,12 +64,11 @@
} }
}); });
async function getGitlabToken() { function getGitlabToken() {
const ip = await getIP();
const left = screen.width / 2 - 1020 / 2; const left = screen.width / 2 - 1020 / 2;
const top = screen.height / 2 - 618 / 2; const top = screen.height / 2 - 618 / 2;
const newWindow = open( const newWindow = open(
`${htmlUrl}/oauth/authorize?client_id=${application.gitSource.gitlabApp.appId}&redirect_uri=${ip}/webhooks/gitlab&response_type=code&scope=api+email+read_repository&state=${$page.params.id}`, `${htmlUrl}/oauth/authorize?client_id=${application.gitSource.gitlabApp.appId}&redirect_uri=${window.location.origin}/webhooks/gitlab&response_type=code&scope=api+email+read_repository&state=${$page.params.id}`,
'GitLab', 'GitLab',
'resizable=1, scrollbars=1, fullscreen=0, height=618, width=1020,top=' + 'resizable=1, scrollbars=1, fullscreen=0, height=618, width=1020,top=' +
top + top +
@ -165,10 +163,9 @@
} }
} }
async function setWebhook(url, webhookToken) { async function setWebhook(url, webhookToken) {
const ip = await getIP();
const host = dev const host = dev
? 'https://webhook.site/0e5beb2c-4e9b-40e2-a89e-32295e570c21' ? 'https://webhook.site/0e5beb2c-4e9b-40e2-a89e-32295e570c21'
: `${ip}/webhooks/gitlab/events`; : `${window.location.origin}/webhooks/gitlab/events`;
try { try {
await post( await post(
url, url,

View File

@ -37,7 +37,6 @@
import { gitTokens } from '$lib/store'; import { gitTokens } from '$lib/store';
import { browser } from '$app/env'; import { browser } from '$app/env';
import { t } from '$lib/translations'; import { t } from '$lib/translations';
import { getIP } from '$lib/components/common';
const { id } = $page.params; const { id } = $page.params;
@ -175,12 +174,11 @@
error.message === '401 Unauthorized' error.message === '401 Unauthorized'
) { ) {
if (application.gitSource.gitlabAppId) { if (application.gitSource.gitlabAppId) {
const ip = await getIP();
let htmlUrl = application.gitSource.htmlUrl; let htmlUrl = application.gitSource.htmlUrl;
const left = screen.width / 2 - 1020 / 2; const left = screen.width / 2 - 1020 / 2;
const top = screen.height / 2 - 618 / 2; const top = screen.height / 2 - 618 / 2;
const newWindow = open( const newWindow = open(
`${htmlUrl}/oauth/authorize?client_id=${application.gitSource.gitlabApp.appId}&redirect_uri=${ip}/webhooks/gitlab&response_type=code&scope=api+email+read_repository&state=${$page.params.id}`, `${htmlUrl}/oauth/authorize?client_id=${application.gitSource.gitlabApp.appId}&redirect_uri=${window.location.origin}/webhooks/gitlab&response_type=code&scope=api+email+read_repository&state=${$page.params.id}`,
'GitLab', 'GitLab',
'resizable=1, scrollbars=1, fullscreen=0, height=618, width=1020,top=' + 'resizable=1, scrollbars=1, fullscreen=0, height=618, width=1020,top=' +
top + top +

View File

@ -11,7 +11,6 @@
import { toast } from '@zerodevx/svelte-toast'; import { toast } from '@zerodevx/svelte-toast';
import { t } from '$lib/translations'; import { t } from '$lib/translations';
import { getIP } from '$lib/components/common';
const { id } = $page.params; const { id } = $page.params;
let url = browser ? (settings.fqdn ? settings.fqdn : window.location.origin) : ''; let url = browser ? (settings.fqdn ? settings.fqdn : window.location.origin) : '';
@ -27,8 +26,7 @@
appSecret: null appSecret: null
}; };
} }
onMount(async () => { onMount(() => {
url = await getIP();
oauthIdEl && oauthIdEl.focus(); oauthIdEl && oauthIdEl.focus();
}); });

View File

@ -30,21 +30,21 @@
<script> <script>
import { dev } from '$app/env'; import { dev } from '$app/env';
import { getDomain, dashify, getIP } from '$lib/components/common'; import { getDomain, dashify } from '$lib/components/common';
import { t } from '$lib/translations'; import { t } from '$lib/translations';
export let source; export let source;
export let settings; export let settings;
onMount(async () => { onMount(() => {
const { organization, id, htmlUrl } = source; const { organization, id, htmlUrl } = source;
const { fqdn } = settings; const { fqdn } = settings;
const ip = await getIP(); const host = dev
let host = `http://${ip}`; ? 'http://localhost:3000'
if (fqdn && fqdn.startsWith('https')) { : fqdn
host = `https://${ip}`; ? fqdn
} : `http://${window.location.host}` || '';
console.log(ip, host);
const domain = getDomain(fqdn); const domain = getDomain(fqdn);
let url = 'settings/apps/new'; let url = 'settings/apps/new';
if (organization) url = `organizations/${organization}/settings/apps/new`; if (organization) url = `organizations/${organization}/settings/apps/new`;
const name = dashify(domain) || 'app'; const name = dashify(domain) || 'app';