zeus
4 years ago
9 changed files with 1042 additions and 95 deletions
@ -0,0 +1,51 @@ |
|||
#!/bin/bash |
|||
|
|||
# ------------------------ |
|||
# Not Tested |
|||
# ------------------------ |
|||
|
|||
# ------------------------ |
|||
# install wireguard jq |
|||
# ------------------------ |
|||
|
|||
sudo yum install -y yum-utils |
|||
sudo yum install elrepo-release epel-release |
|||
sudo yum install kmod-wireguard wireguard-tools |
|||
|
|||
|
|||
# ------------------------ |
|||
# install node version 15 |
|||
# ------------------------ |
|||
|
|||
curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash - |
|||
yum install -y nodejs |
|||
|
|||
# ------------------------ |
|||
# install docker |
|||
# ------------------------ |
|||
|
|||
sudo yum-config-manager \ |
|||
--add-repo \ |
|||
https://download.docker.com/linux/centos/docker-ce.repo |
|||
|
|||
sudo yum install docker-ce docker-ce-cli containerd.io |
|||
sudo systemctl start docker |
|||
|
|||
sudo usermod -aG docker [USERNAME] |
|||
|
|||
# ------------------------ |
|||
# install docker-compose |
|||
# ------------------------ |
|||
|
|||
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
|||
sudo chmod +x /usr/local/bin/docker-compose |
|||
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose |
|||
|
|||
# ------------------------ |
|||
# install pm2 |
|||
# ------------------------ |
|||
|
|||
sudo npm install -g pm2 |
|||
|
|||
echo "" |
|||
echo "run ./install.sh" |
@ -0,0 +1,44 @@ |
|||
#!/bin/bash |
|||
|
|||
|
|||
# ------------------------ |
|||
# install wireguard jq |
|||
# ------------------------ |
|||
|
|||
sudo apt update |
|||
sudo apt install wireguard jq |
|||
|
|||
|
|||
# ------------------------ |
|||
# install node version 15 |
|||
# ------------------------ |
|||
|
|||
curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash - |
|||
sudo apt-get install -y nodejs |
|||
|
|||
# ------------------------ |
|||
# install docker |
|||
# ------------------------ |
|||
|
|||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - |
|||
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" |
|||
sudo apt update |
|||
sudo apt install -y docker-ce |
|||
sudo usermod -aG docker [USERNAME] |
|||
|
|||
# ------------------------ |
|||
# install docker-compose |
|||
# ------------------------ |
|||
|
|||
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
|||
sudo chmod +x /usr/local/bin/docker-compose |
|||
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose |
|||
|
|||
# ------------------------ |
|||
# install pm2 |
|||
# ------------------------ |
|||
|
|||
sudo npm install -g pm2 |
|||
|
|||
echo "" |
|||
echo "run ./install.sh" |
@ -0,0 +1,416 @@ |
|||
<template> |
|||
<div id="app" class="container-fluid"> |
|||
|
|||
<nav class="navbar navbar-light navbar-expand-md bg-light justify-content-md-center justify-content-start"> |
|||
<b-navbar-brand class="logo simple-text ti-swarmlab text-secondary"> |
|||
Swarmlab.io |
|||
</b-navbar-brand> |
|||
<div class="navbar-collapse collapse justify-content-between align-items-center w-100" id="collapsingNavbar2"> |
|||
<ul class="navbar-nav mx-auto text-md-center text-left"> |
|||
<li class="nav-item"> |
|||
<a class="nav-link" href="#" |
|||
@click="hybrid('services')" |
|||
> |
|||
Manage_Your_Local_LabInstances</a> |
|||
</li> |
|||
<li class="nav-item"> |
|||
<a class="nav-link" href="#"> |
|||
| |
|||
</a> |
|||
</li> |
|||
<li class="nav-item"> |
|||
<a class="nav-link" href="#" |
|||
@click="hybrid('bootstrap')" |
|||
>Containers</a> |
|||
</li> |
|||
<li class="nav-item"> |
|||
<a class="nav-link" href="#"> |
|||
- |
|||
</a> |
|||
</li> |
|||
<li class="nav-item my-auto"> |
|||
<a class="nav-link navbar-brand mx-0 d-none d-md-inline" href="">Hybrid</a> |
|||
</li> |
|||
<li class="nav-item"> |
|||
<a class="nav-link" href="#"> |
|||
- |
|||
</a> |
|||
</li> |
|||
<li class="nav-item"> |
|||
<a class="nav-link" href="#" |
|||
@click="hybrid('connect-server')" |
|||
>Config_hybrid_server</a> |
|||
</li> |
|||
<li class="nav-item"> |
|||
<a class="nav-link" href="#"> |
|||
| |
|||
</a> |
|||
</li> |
|||
<li class="nav-item"> |
|||
<a class="nav-link" href="#" |
|||
@click="hybrid('manage_service')" |
|||
> |
|||
Manage_Your_hybrid_LabInstances</a> |
|||
</li> |
|||
</li> |
|||
</ul> |
|||
<ul class="nav navbar-nav flex-row justify-content-md-center justify-content-start flex-nowrap"> |
|||
<b-nav-item href="https://git.swarmlab.io:3000" target="_swarmlabgit"> Swarmlab_git </b-nav-item> |
|||
<b-nav-item > | </b-nav-item> |
|||
<b-nav-item :href="'https://api-client.swarmlab.io:8088/?token='+ token" target="_swarmlab"> Lab_onDemand </b-nav-item> |
|||
<b-nav-item > </b-nav-item> |
|||
</ul> |
|||
</div> |
|||
</nav> |
|||
|
|||
|
|||
<!-- ***************** container items ****************** --> |
|||
<b-row |
|||
v-show="hybridmenou == 'bootstrap'" |
|||
> |
|||
<b-col cols="12" > |
|||
|
|||
<network-table |
|||
style="background-color: #f8f9fa" |
|||
> |
|||
</network-table> |
|||
|
|||
</b-col> |
|||
</b-row> |
|||
|
|||
<b-row |
|||
v-show="hybridmenou == 'services'" |
|||
> |
|||
<b-col cols="12"> |
|||
<services-table |
|||
style="background-color: #f8f9fa" |
|||
> |
|||
</services-table> |
|||
|
|||
</b-col> |
|||
</b-row> |
|||
|
|||
<b-row |
|||
v-show="hybridmenou == 'connect-server'" |
|||
> |
|||
<b-col cols="12"> |
|||
<connect-server |
|||
style="background-color: #f8f9fa" |
|||
> |
|||
</connect-server> |
|||
|
|||
</b-col> |
|||
</b-row> |
|||
|
|||
<b-row |
|||
v-show="hybridmenou == 'manage_service'" |
|||
> |
|||
<b-col cols="12"> |
|||
<manage-services |
|||
style="background-color: #f8f9fa" |
|||
> |
|||
</manage-services> |
|||
|
|||
</b-col> |
|||
</b-row> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
<div class="d-flex" id="wrapper"> |
|||
|
|||
<!-- Sidebar max --> |
|||
<div class=" bg-light border-right" id="sidebar-wrapper" |
|||
v-if="sidemenou == 'max'" |
|||
> |
|||
<div class=" logo simple-text ti-swarmlab text-secondary sidebar-heading" |
|||
@click="onActionMenu('min')" |
|||
> |
|||
Swarmlab.io |
|||
</div> |
|||
<div class="list-group list-group-flush" |
|||
> |
|||
|
|||
<!-- Menou Dashboard --> |
|||
<b-list-group-item v-b-toggle.hybrid-profile variant="light" name="Dashboard" class="ti-dashboard list-group-item list-group-item-action" v-on:click="setActive('dashboard','')" style="cursor: pointer;" :class="{ active: isActive('dashboard') }"> Dashboard</b-list-group-item> |
|||
|
|||
<b-collapse id="hybrid-profile" class="m-subm" accordion="m-sidebar" role="tabpanel"> |
|||
<b-list-group-item variant="light" name="dashboard" class="m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('dashboard','dashboard_dashboard')" style="cursor: pointer;" :class="{ active: isActiveSub('dashboard_dashboard') }"> Profile</b-list-group-item> |
|||
<b-list-group-item variant="light" name="Profile" class="m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('dashboard','dashboard_profile')" style="cursor: pointer;" :class="{ active: isActiveSub('dashboard_profile') }"> Profile</b-list-group-item> |
|||
</b-collapse> |
|||
|
|||
<!-- Menou StandAlone --> |
|||
<b-list-group-item v-b-toggle.hybrid-local variant="light" name="Local" class="ti-dashboard list-group-item list-group-item-action" v-on:click="setActive('local','')" style="cursor: pointer;" :class="{ active: isActive('local') }"> Local</b-list-group-item> |
|||
|
|||
<b-collapse id="hybrid-local" class="m-subm" accordion="m-sidebar" role="tabpanel"> |
|||
<b-list-group-item variant="light" name="local" class="m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('local','local_local')" style="cursor: pointer;" :class="{ active: isActiveSub('local_local') }"> Local</b-list-group-item> |
|||
<b-list-group-item variant="light" name="Menou" class="m-subm-listgroup list-group-item list-group-item-action" v-on:click="setActive('local','local_menou')" style="cursor: pointer;" :class="{ active: isActiveSub('local_menou') }"> Menou</b-list-group-item> |
|||
</b-collapse> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</div> |
|||
</div> |
|||
|
|||
<!-- Sidebar min --> |
|||
<div class="bg-light border-right" id="sidebar-wrapper" |
|||
v-if="sidemenou == 'min'" |
|||
> |
|||
<div class=" ti-layout-slider sidebar-heading" |
|||
@click="onActionMenu('max')" |
|||
> |
|||
</div> |
|||
<div class="list-group list-group-flush" |
|||
> |
|||
<a href="#" class="ti-help list-group-item list-group-item-action bg-light"></a> |
|||
<a href="#" class="ti-link list-group-item list-group-item-action bg-light"></a> |
|||
<a href="#" class="list-group-item list-group-item-action bg-light"></a> |
|||
<a href="#" class="list-group-item list-group-item-action bg-light"></a> |
|||
<a href="#" class="list-group-item list-group-item-action bg-light"></a> |
|||
<a href="#" class="list-group-item list-group-item-action bg-light"></a> |
|||
</div> |
|||
</div> |
|||
<!-- /#sidebar-wrapper --> |
|||
|
|||
<!-- Page Content --> |
|||
<div id="page-content-wrapper"> |
|||
|
|||
<nav class="navbar navbar-expand-lg navbar-light bg-light border-bottom"> |
|||
<button class="btn btn-primary" > |
|||
Max Menu |
|||
</button> |
|||
<button class="btn btn-primary" > |
|||
Min Menu |
|||
</button> |
|||
|
|||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> |
|||
<span class="navbar-toggler-icon"></span> |
|||
</button> |
|||
|
|||
<div class="collapse navbar-collapse" id="navbarSupportedContent"> |
|||
<ul class="navbar-nav ml-auto mt-2 mt-lg-0"> |
|||
<li class="nav-item active"> |
|||
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> |
|||
</li> |
|||
<li class="nav-item"> |
|||
<a class="nav-link" href="#">Link</a> |
|||
</li> |
|||
<li class="nav-item dropdown"> |
|||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> |
|||
Dropdown |
|||
</a> |
|||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown"> |
|||
<a class="dropdown-item" href="#">Action</a> |
|||
<a class="dropdown-item" href="#">Another action</a> |
|||
<div class="dropdown-divider"></div> |
|||
<a class="dropdown-item" href="#">Something else here</a> |
|||
</div> |
|||
</li> |
|||
</ul> |
|||
</div> |
|||
</nav> |
|||
|
|||
<div class="container-fluid"> |
|||
<h1 class="mt-4">Simple Sidebar</h1> |
|||
<p>The starting state of the menu will appear collapsed on smaller screens, and will appear non-collapsed on larger screens. When toggled using the button below, the menu will change.</p> |
|||
<p>Make sure to keep all page content within the <code>#page-content-wrapper</code>. The top navbar is optional, and just for demonstration. Just create an element with the <code>#menu-toggle</code> ID which will toggle the menu when clicked.</p> |
|||
</div> |
|||
|
|||
</div> |
|||
<!-- /#page-content-wrapper --> |
|||
|
|||
</div> |
|||
<!-- /#wrapper --> |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import "@/assets/css/themify-icons.css"; |
|||
|
|||
import ConnectServer from "./components/myconnect-server.vue"; |
|||
import NetworkTable from "./components/mynetwork.vue"; |
|||
import ServicesTable from "./components/myservices.vue"; |
|||
import ManageServices from "./components/manageservices.vue"; |
|||
|
|||
export default { |
|||
name: 'app', |
|||
components: { |
|||
NetworkTable, |
|||
ServicesTable, |
|||
ConnectServer, |
|||
ManageServices |
|||
}, |
|||
data() { |
|||
return { |
|||
activeItem: '', // menou |
|||
activeItemSub: '', //submenou |
|||
sidemenou:'max', |
|||
hybridmenou:'bootstrap', |
|||
show: true, |
|||
token: '', |
|||
SwarmabAsciiLabTemplate:'' |
|||
} |
|||
}, |
|||
mounted() { |
|||
}, |
|||
created() { |
|||
}, |
|||
methods: { |
|||
onActionMenu(action){ |
|||
if(action == 'max'){ |
|||
this.sidemenou = 'max' |
|||
}else if(action == 'min'){ |
|||
this.sidemenou = 'min' |
|||
} |
|||
console.log(action) |
|||
}, |
|||
hybrid(action) { |
|||
this.hybridmenou = action |
|||
console.log(action) |
|||
if(action == 'bootstrap'){ |
|||
this.$root.$emit('hybrid_refresh_dockerservices') |
|||
}else if(action == 'connect-server'){ |
|||
this.$root.$emit('hybrid_connect_server') |
|||
}else if(action == 'services'){ |
|||
this.$root.$emit('hybrid_refresh_availableservices') |
|||
}else if(action == 'manage_service'){ |
|||
//this.$root.$emit('hybrid_manage_service') |
|||
} |
|||
}, |
|||
isActive: function (menuItem) { |
|||
console.log('active ' + menuItem); |
|||
return this.activeItem === menuItem |
|||
}, |
|||
isActiveSub: function (menuItem) { |
|||
console.log('activesub ' + menuItem); |
|||
return this.activeItemSub === menuItem |
|||
}, |
|||
setActive: function (menuItem,menuItemSub) { |
|||
console.log('set ' + menuItem); |
|||
this.activeItem = menuItem // no need for Vue.set() |
|||
this.activeItemSub = menuItemSub // no need for Vue.set() |
|||
} |
|||
|
|||
|
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style> |
|||
.active { |
|||
background-color: #e7e7e7 !important; |
|||
color: #0c5460 !important; |
|||
} |
|||
|
|||
@import url('https://fonts.googleapis.com/css?family=Lato:400,700'); |
|||
|
|||
|
|||
body { |
|||
background: #EEF1F4 !important; |
|||
} |
|||
|
|||
.nav-background { |
|||
background: #353535; |
|||
} |
|||
|
|||
.ti-swarmlab:before { |
|||
position: relative; |
|||
top:-5px; |
|||
right:-8px; |
|||
font-size: 1.5em; |
|||
font-weight: 300; |
|||
content: "\e606"; |
|||
color: #222; |
|||
color: #74B3C8; |
|||
border-color: #c60000; |
|||
} |
|||
|
|||
.ti-themify-logo:before { |
|||
content: "\e6d1"; |
|||
} |
|||
|
|||
.menoutext { |
|||
font-family: 'Lato', sans-serif !important; |
|||
} |
|||
|
|||
.mycontainer { |
|||
padding-right: 20px !important; |
|||
padding-left: 5px !important; |
|||
margin-right:auto; |
|||
margin-left:auto |
|||
} |
|||
|
|||
|
|||
.m-subm { |
|||
width: 100%; |
|||
border-left: 4px solid #4b4ba3;; |
|||
background-color: #f0f0f0; |
|||
border-top: none; |
|||
border-bottom: none; |
|||
border-right: none; |
|||
|
|||
} |
|||
.m-subm-card { |
|||
padding-left: 0px; |
|||
padding-right: 0px; |
|||
padding-top: 0px; |
|||
padding-bottom: 0px; |
|||
background-color: #f0f0f0; |
|||
border-top: none; |
|||
border-bottom: none; |
|||
border-left: none; |
|||
border-right: none; |
|||
margin-bottom: 0px; |
|||
margin-top: 0px; |
|||
} |
|||
.m-subm-listgroup { |
|||
width: 100%; |
|||
//border-left: 4px solid #4b4ba3; |
|||
background-color: #f0f0f0; |
|||
border-top: none; |
|||
border-bottom: none; |
|||
border-right: none; |
|||
border-left: none; |
|||
padding-left: 2.25rem; |
|||
} |
|||
|
|||
.m-subm-listgroup:hover { |
|||
background-color: #e7e7e7; |
|||
font-weight: 580; |
|||
} |
|||
.m-subm-listgroup:focus { |
|||
background-color: #e7e7e7; |
|||
color:#393982; |
|||
font-weight: 580; |
|||
} |
|||
|
|||
|
|||
</style> |
Loading…
Reference in new issue