567 lines
13 KiB
JavaScript

import Home from '../views/general/Home.vue';
import { createRouter, createWebHistory } from 'vue-router';
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/checkout/:secretKey',
name: 'Checkout',
component: () => import('../views/checkout/Checkout.vue'),
props: true,
meta: {
isLoginPage: true
}
},
{
path: '/login',
name: 'Login',
component: () => import('../views/auth/Auth.vue'),
meta: {
isLoginPage: true
}
},
{
path: '/signup',
name: 'Signup',
component: () => import('../views/auth/Auth.vue'),
meta: {
isLoginPage: true
}
},
{
path: '/setup-account/:requestKey/:joinRequest?',
name: 'Setup Account',
component: () => import('../views/auth/SetupAccount.vue'),
props: true,
meta: {
isLoginPage: true
}
},
{
path: '/reset-password/:requestKey',
name: 'Reset Password',
component: () => import('../views/auth/ResetPassword.vue'),
props: true,
meta: {
isLoginPage: true
}
},
{
path: '/impersonate/:team',
name: 'Impersonate Team',
component: () => import('../views/auth/ImpersonateTeam.vue'),
props: true
},
{
path: '/notifications',
name: 'Notifications',
component: () => import('../views/notifications/Notifications.vue')
},
{
path: '/groups',
name: 'BenchesScreen',
component: () => import('../views/bench/Benches.vue')
},
{
path: '/groups/new/:saas_app?',
name: 'NewBench',
meta: {
isSaasPage: true
},
component: () => import('../views/bench/NewBench.vue'),
props: true
},
{
path: '/servers/:server/bench/new',
name: 'NewServerBench',
component: () => import('../views/bench/NewBench.vue'),
props: true
},
{
path: '/groups/:benchName',
name: 'Bench',
component: () => import('../views/bench/Bench.vue'),
props: true,
meta: {
isSaasPage: true
},
redirect: { name: 'BenchSiteList' },
children: [
{
name: 'BenchSiteList',
path: 'sites',
component: () => import('../views/bench/BenchSites.vue'),
props: true
},
{
path: 'apps',
component: () => import('../views/bench/BenchApps.vue'),
props: true
},
{
path: 'bench-config',
component: () => import('../views/bench/BenchConfig.vue'),
props: true
},
{
name: 'BenchDeploys',
path: 'deploys/:candidateName?',
component: () => import('../views/bench/BenchDeploys.vue'),
props: true
},
{
path: 'logs/:instanceName/:logName?',
component: () => import('../views/bench/BenchLogs.vue'),
props: true
},
{
name: 'BenchJobs',
path: 'jobs/:jobName?',
component: () => import('../views/bench/BenchJobs.vue'),
props: true
},
{
path: 'settings',
component: () => import('../views/bench/BenchSettings.vue'),
props: true
}
]
},
{
path: '/groups/:benchName/apps/new',
name: 'NewBenchApp',
component: () => import('../views/bench/NewBenchApp.vue'),
props: true
},
{
path: '/sites',
name: 'Sites',
component: () => import('../views/site/Sites.vue')
},
{
path: '/:bench/sites',
name: 'BenchSites',
component: () => import('../views/site/Sites.vue'),
props: true
},
{
path: '/sites/new',
name: 'NewSite',
component: () => import('../views/site/NewSite.vue'),
props: true
},
{
path: '/:bench/new',
name: 'NewBenchSite',
component: () => import('../views/site/NewSite.vue'),
props: true
},
{
path: '/sites/:siteName',
name: 'Site',
component: () => import('../views/site/Site.vue'),
props: true,
children: [
{
name: 'SiteOverview',
path: 'overview',
component: () => import('../views/site/SiteOverview.vue')
},
{
name: 'SiteAppsAndSubscriptions',
path: 'apps',
component: () => import('../views/site/SiteAppsAndSubscriptions.vue'),
props: true
},
{
path: 'installing',
component: () => import('../views/site/SiteInstalling.vue')
},
{
path: 'analytics',
component: () => import('../views/site/SiteCharts.vue'),
props: true
},
{
path: 'database',
component: () => import('../views/site/SiteDatabase.vue')
},
{
path: 'site-config',
component: () => import('../views/site/SiteConfig.vue')
},
{
path: 'settings',
component: () => import('../views/site/SiteSettings.vue')
},
{
path: 'console',
component: () => import('../views/site/SiteConsole.vue')
},
{
name: 'SiteJobs',
path: 'jobs/:jobName?',
component: () => import('../views/site/SiteJobs.vue'),
props: true
},
{
path: 'logs/:logName?',
component: () => import('../views/site/SiteLogs.vue'),
props: true
},
{
path: 'auto-update',
component: () => import('../views/site/SiteAutoUpdate.vue'),
props: true
},
{
path: 'monitor',
component: () => import('../views/site/SiteMonitorsList.vue'),
props: true,
children: [
{
name: 'SiteRequestLogs',
path: 'request-logs',
component: () => import('../views/site/SiteRequestLogs.vue'),
props: true
},
{
name: 'SiteBinaryLogs',
path: 'binary-logs',
component: () => import('../views/site/SiteBinaryLogs.vue'),
props: true
},
{
name: 'MariaDBProcessList',
path: 'mariadb-process-list',
component: () => import('../views/site/SiteMariaDBProcessList.vue'),
props: true
},
{
name: 'SiteMariaDBSlowQueries',
path: 'mariadb-slow-queries',
component: () => import('../views/site/SiteMariaDBSlowQueries.vue'),
props: true
},
{
name: 'SiteDeadlockReport',
path: 'deadlock-report',
component: () => import('../views/site/SiteDeadlockReport.vue'),
props: true
}
]
}
]
},
{
path: '/servers',
name: 'Servers',
component: () => import('../views/server/Servers.vue')
},
{
path: '/servers/new',
name: 'NewServer',
component: () => import('../views/server/NewServer.vue'),
props: true
},
{
path: '/servers/:serverName',
name: 'Server',
component: () => import('../views/server/Server.vue'),
props: true,
children: [
{
name: 'ServerOverview',
path: 'overview',
component: () => import('../views/server/ServerOverview.vue'),
props: true
},
{
name: 'ServerAnalytics',
path: 'analytics',
component: () => import('../views/server/ServerAnalytics.vue'),
props: true
},
{
name: 'ServerBenches',
path: 'groups',
component: () => import('../views/server/ServerBenches.vue'),
props: true
},
{
name: 'ServerJobs',
path: 'jobs/:jobName?',
component: () => import('../views/server/ServerJobs.vue'),
props: true
},
{
name: 'ServerPlays',
path: 'plays/:playName?',
component: () => import('../views/server/ServerPlays.vue'),
props: true
},
{
name: 'ServerInstall',
path: 'install',
component: () => import('../views/server/ServerInstall.vue'),
props: true
},
{
name: 'ServerSettings',
path: 'settings',
component: () => import('../views/server/ServerSettings.vue'),
props: true
}
]
},
{
name: 'New SelfHosted Server',
path: '/selfhosted/new',
component: () => import('../views/server/NewSelfHostedServer.vue'),
props: true
},
{
path: '/install-app/:marketplaceApp',
name: 'InstallMarketplaceApp',
component: () => import('@/views/marketplace/InstallMarketplaceApp.vue'),
props: true
},
{
path: '/marketplace',
name: 'Marketplace',
component: () => import('../views/marketplace/Marketplace.vue'),
children: [
{
path: 'publisher-profile',
component: () =>
import('../views/marketplace/MarketplacePublisherProfile.vue')
},
{
path: 'apps',
component: () => import('../views/marketplace/MarketplaceApps.vue')
},
{
path: 'payouts/:payoutOrderName?',
component: () => import('../views/marketplace/MarketplacePayouts.vue'),
props: true
}
]
},
{
path: '/marketplace/apps/new',
name: 'NewMarketplaceApp',
component: () => import('../views/marketplace/NewMarketplaceApp.vue'),
props: true
},
{
path: '/marketplace/apps/:appName',
name: 'MarketplaceApp',
component: () => import('../views/marketplace/MarketplaceApp.vue'),
props: true,
children: [
{
name: 'MarketplaceAppOverview',
path: 'overview',
component: () =>
import('../views/marketplace/MarketplaceAppOverview.vue')
},
{
name: 'MarketplaceAppReview',
path: 'review',
component: () =>
import('../views/marketplace/MarketplaceAppReview.vue'),
props: true
},
{
name: 'MarketplaceAppAnalytics',
path: 'analytics',
component: () =>
import('../views/marketplace/MarketplaceAppAnalytics.vue')
},
{
name: 'MarketplaceAppDeployment',
path: 'releases',
component: () =>
import('../views/marketplace/MarketplaceAppDeployment.vue')
},
{
name: 'MarketplaceAppSubscriptions',
path: 'subscriptions',
component: () =>
import('../views/marketplace/MarketplaceAppSubscriptions.vue'),
props: true
},
{
name: 'MarketplaceAppPricing',
path: 'pricing',
component: () =>
import('../views/marketplace/MarketplaceAppPricing.vue')
}
]
},
{
path: '/spaces',
name: 'Spaces',
component: () => import('../views/spaces/Spaces.vue')
},
{
path: '/codeservers/new',
name: 'NewCodeServer',
component: () => import('../views/spaces/NewCodeServer.vue')
},
{
path: '/codeservers/:serverName',
name: 'CodeServer',
component: () => import('../views/spaces/CodeServer.vue'),
props: true,
children: [
{
name: 'CodeServerOverview',
path: 'overview',
component: () => import('../views/spaces/CodeServerOverview.vue')
},
{
path: 'jobs/:jobName?',
component: () => import('../views/spaces/CodeServerJobs.vue'),
props: true
}
]
},
{
path: '/setup-site/:product',
name: 'App Site Setup',
component: () => import('../views/site/AppSiteSetup.vue'),
props: true,
meta: {
hideSidebar: true
}
},
{
path: '/subscription/:site?',
name: 'Subscription',
component: () => import('../views/checkout/Subscription.vue'),
props: true,
meta: {
hideSidebar: true
}
},
{
path: '/billing/:invoiceName?',
name: 'BillingScreen',
props: true,
redirect: { name: 'BillingOverview' },
component: () => import('../views/billing/AccountBilling.vue'),
children: [
{
name: 'BillingOverview',
path: 'overview',
component: () => import('../views/billing/BillingOverview.vue')
},
{
name: 'Payment Methods',
path: 'payment',
component: () => import('../views/billing/PaymentMethods.vue')
},
{
name: 'Invoices',
path: 'invoices',
props: true,
component: () => import('../views/billing/AccountBillingPayments.vue')
},
{
name: 'Credit Balance',
path: 'credit-balance',
component: () =>
import('../views/billing/AccountBillingCreditBalance.vue')
}
]
},
{
path: '/settings',
name: 'SettingsScreen',
redirect: { name: 'ProfileSettings' },
component: () => import('../views/settings/AccountSettings.vue'),
children: [
{
name: 'ProfileSettings',
path: 'profile',
component: () => import('../views/settings/ProfileSettings.vue')
},
{
name: 'TeamSettings',
path: 'team',
component: () => import('../views/settings/TeamSettings.vue')
},
{
name: 'DeveloperSettings',
path: 'developer',
component: () => import('../views/settings/DeveloperSettings.vue')
},
{
name: 'PartnerSettings',
path: 'partner',
component: () => import('../views/settings/PartnerSettings.vue')
}
]
},
{
path: '/security',
name: 'Security',
component: () => import('../views/security/Servers.vue')
},
{
path: '/security/:serverName',
name: 'ServerSecurity',
component: () => import('../views/security/Security.vue'),
props: true,
children: [
{
name: 'SecurityOverview',
path: 'overview',
component: () => import('../views/security/SecurityOverview.vue'),
props: true
},
{
name: 'SecurityUpdates',
path: 'security_update/:updateId?',
component: () => import('../views/security/SecurityUpdates.vue'),
props: true
},
{
name: 'Firewall',
path: 'firewall/',
// component: () => import('../views/security/SecurityUpdateInfo.vue'),
props: true
},
{
name: 'SSH Session Logs',
path: 'ssh_session_logs/:logId?',
component: () => import('../views/security/SSHSession.vue'),
props: true
},
{
name: 'Nginx Overview',
path: 'nginx_overview/',
// component: () => import('../views/security/SecurityUpdateInfo.vue'),
props: true
}
]
},
{
name: 'NotFound',
path: '/:pathMatch(.*)*',
component: () => import('../views/general/404.vue')
}
];
const router = createRouter({
history: createWebHistory('/dashboard-old/'),
routes
});
export default router;