567 lines
13 KiB
JavaScript
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;
|