@ -0,0 +1,31 @@ |
|||||
|
.DS_Store |
||||
|
node_modules |
||||
|
hybrid/connect/ |
||||
|
hybrid/keys.json |
||||
|
venuslog/logs/ |
||||
|
venuslog/ |
||||
|
venuslog/* |
||||
|
venuslog |
||||
|
logs |
||||
|
|
||||
|
package-lock.json |
||||
|
|
||||
|
|
||||
|
# local env files |
||||
|
.env.local |
||||
|
.env.*.local |
||||
|
|
||||
|
# Log files |
||||
|
npm-debug.log* |
||||
|
yarn-debug.log* |
||||
|
yarn-error.log* |
||||
|
pnpm-debug.log* |
||||
|
|
||||
|
# Editor directories and files |
||||
|
.idea |
||||
|
.vscode |
||||
|
*.suo |
||||
|
*.ntvs* |
||||
|
*.njsproj |
||||
|
*.sln |
||||
|
*.sw? |
@ -0,0 +1,16 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
REPOSRC=$1 |
||||
|
LOCALREPO=$2 |
||||
|
|
||||
|
# We do it this way so that we can abstract if from just git later on |
||||
|
LOCALREPO_VC_DIR=$LOCALREPO/.git |
||||
|
|
||||
|
cd builders |
||||
|
if [ ! -d $LOCALREPO_VC_DIR ] |
||||
|
then |
||||
|
git clone $REPOSRC $LOCALREPO |
||||
|
else |
||||
|
cd $LOCALREPO |
||||
|
git pull $REPOSRC |
||||
|
fi |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 229 KiB |
After Width: | Height: | Size: 4.8 KiB |
@ -0,0 +1 @@ |
|||||
|
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Vue App</title><link href="/css/app.b2f70a29.css" rel="preload" as="style"><link href="/css/chunk-vendors.d0de25b8.css" rel="preload" as="style"><link href="/js/app.629eff8d.js" rel="preload" as="script"><link href="/js/chunk-vendors.1ae3a34a.js" rel="preload" as="script"><link href="/css/chunk-vendors.d0de25b8.css" rel="stylesheet"><link href="/css/app.b2f70a29.css" rel="stylesheet"></head><body><div id="app"></div><script src="/js/chunk-vendors.1ae3a34a.js"></script><script src="/js/app.629eff8d.js"></script></body></html> |
@ -0,0 +1,40 @@ |
|||||
|
export default { |
||||
|
table: { |
||||
|
tableWrapper: '', |
||||
|
tableHeaderClass: 'mb-0', |
||||
|
tableBodyClass: 'mb-0', |
||||
|
tableClass: 'table table-bordered table-hover table-sm table-condensed whitespace', |
||||
|
loadingClass: 'loading', |
||||
|
ascendingIcon: 'fa fa-chevron-up', |
||||
|
descendingIcon: 'fa fa-chevron-down', |
||||
|
ascendingClass: 'sorted-asc', |
||||
|
descendingClass: 'sorted-desc', |
||||
|
sortableIcon: 'fa fa-sort', |
||||
|
detailRowClass: 'vuetable-detail-row', |
||||
|
handleIcon: 'fa fa-bars text-secondary', |
||||
|
renderIcon: function(classes, options) { |
||||
|
return `<i class="${classes.join(" ")}" ${options}></span>`; |
||||
|
} |
||||
|
}, |
||||
|
paginationInfo: { |
||||
|
infoClass: 'pull-left float-left align-self-end' |
||||
|
}, |
||||
|
pagination: { |
||||
|
wrapperClass: "pagination pull-right float-right", |
||||
|
activeClass: "active", |
||||
|
disabledClass: "disabled", |
||||
|
pageClass: "btn btn-border", |
||||
|
linkClass: "btn btn-border", |
||||
|
paginationClass: "pagination", |
||||
|
paginationInfoClass: "float-left", |
||||
|
//pagination-info-class=""
|
||||
|
//pagination-component-class=""
|
||||
|
dropdownClass: "form-control", |
||||
|
icons: { |
||||
|
first: "", |
||||
|
prev: "", |
||||
|
next: "", |
||||
|
last: "" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,10 @@ |
|||||
|
registry_address=registry.vlabs.uniwa.gr |
||||
|
registry_port=5080 |
||||
|
mkdir -p /etc/docker/certs.d/$registry_address:$registry_port |
||||
|
openssl s_client -showcerts -connect $registry_address:$registry_port < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/docker/certs.d/$registry_address:$registry_port/ca.crt |
||||
|
|
||||
|
registry_address=registry.vlabs.uniwa.gr |
||||
|
registry_port=5043 |
||||
|
mkdir -p /etc/docker/certs.d/$registry_address:$registry_port |
||||
|
openssl s_client -showcerts -connect $registry_address:$registry_port < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/docker/certs.d/$registry_address:$registry_port/ca.crt |
||||
|
|
@ -0,0 +1,9 @@ |
|||||
|
registry_address=hub.swarmlab.io |
||||
|
registry_port=5443 |
||||
|
mkdir -p /etc/docker/certs.d/$registry_address:$registry_port |
||||
|
openssl s_client -showcerts -connect $registry_address:$registry_port < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/docker/certs.d/$registry_address:$registry_port/ca.crt |
||||
|
|
||||
|
registry_port=5480 |
||||
|
mkdir -p /etc/docker/certs.d/$registry_address:$registry_port |
||||
|
openssl s_client -showcerts -connect $registry_address:$registry_port < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/docker/certs.d/$registry_address:$registry_port/ca.crt |
||||
|
|
@ -0,0 +1,379 @@ |
|||||
|
const { |
||||
|
info, |
||||
|
error, |
||||
|
hasProjectYarn, |
||||
|
hasProjectPnpm, |
||||
|
openBrowser, |
||||
|
IpcMessenger |
||||
|
} = require('@vue/cli-shared-utils') |
||||
|
|
||||
|
const defaults = { |
||||
|
host: '0.0.0.0', |
||||
|
//port: 8080,
|
||||
|
port: 3088, |
||||
|
https: false |
||||
|
} |
||||
|
|
||||
|
|
||||
|
module.exports = (api, options) => { |
||||
|
api.registerCommand('serve', { |
||||
|
description: 'start development server', |
||||
|
usage: 'vue-cli-service serve [options] [entry]', |
||||
|
options: { |
||||
|
'--open': `open browser on server start`, |
||||
|
'--copy': `copy url to clipboard on server start`, |
||||
|
'--stdin': `close when stdin ends`, |
||||
|
'--mode': `specify env mode (default: development)`, |
||||
|
'--host': `specify host (default: ${defaults.host})`, |
||||
|
'--port': `specify port (default: ${defaults.port})`, |
||||
|
'--https': `use https (default: ${defaults.https})`, |
||||
|
'--public': `specify the public network URL for the HMR client`, |
||||
|
'--skip-plugins': `comma-separated list of plugin names to skip for this run` |
||||
|
} |
||||
|
}, async function serve (args) { |
||||
|
info('Starting development server...') |
||||
|
|
||||
|
// although this is primarily a dev server, it is possible that we
|
||||
|
// are running it in a mode with a production env, e.g. in E2E tests.
|
||||
|
const isInContainer = checkInContainer() |
||||
|
const isProduction = process.env.NODE_ENV === 'production' |
||||
|
|
||||
|
const url = require('url') |
||||
|
const { chalk } = require('@vue/cli-shared-utils') |
||||
|
const webpack = require('webpack') |
||||
|
const WebpackDevServer = require('webpack-dev-server') |
||||
|
const portfinder = require('portfinder') |
||||
|
const prepareURLs = require('../util/prepareURLs') |
||||
|
const prepareProxy = require('../util/prepareProxy') |
||||
|
const launchEditorMiddleware = require('launch-editor-middleware') |
||||
|
const validateWebpackConfig = require('../util/validateWebpackConfig') |
||||
|
const isAbsoluteUrl = require('../util/isAbsoluteUrl') |
||||
|
|
||||
|
// configs that only matters for dev server
|
||||
|
api.chainWebpack(webpackConfig => { |
||||
|
if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') { |
||||
|
webpackConfig |
||||
|
.devtool('eval-cheap-module-source-map') |
||||
|
|
||||
|
webpackConfig |
||||
|
.plugin('hmr') |
||||
|
.use(require('webpack/lib/HotModuleReplacementPlugin')) |
||||
|
|
||||
|
// https://github.com/webpack/webpack/issues/6642
|
||||
|
// https://github.com/vuejs/vue-cli/issues/3539
|
||||
|
webpackConfig |
||||
|
.output |
||||
|
.globalObject(`(typeof self !== 'undefined' ? self : this)`) |
||||
|
|
||||
|
if (!process.env.VUE_CLI_TEST && options.devServer.progress !== false) { |
||||
|
webpackConfig |
||||
|
.plugin('progress') |
||||
|
.use(require('webpack/lib/ProgressPlugin')) |
||||
|
} |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
// resolve webpack config
|
||||
|
const webpackConfig = api.resolveWebpackConfig() |
||||
|
|
||||
|
// check for common config errors
|
||||
|
validateWebpackConfig(webpackConfig, api, options) |
||||
|
|
||||
|
// load user devServer options with higher priority than devServer
|
||||
|
// in webpack config
|
||||
|
const projectDevServerOptions = Object.assign( |
||||
|
webpackConfig.devServer || {}, |
||||
|
options.devServer |
||||
|
) |
||||
|
|
||||
|
// expose advanced stats
|
||||
|
if (args.dashboard) { |
||||
|
const DashboardPlugin = require('../webpack/DashboardPlugin') |
||||
|
;(webpackConfig.plugins = webpackConfig.plugins || []).push(new DashboardPlugin({ |
||||
|
type: 'serve' |
||||
|
})) |
||||
|
} |
||||
|
|
||||
|
// entry arg
|
||||
|
const entry = args._[0] |
||||
|
if (entry) { |
||||
|
webpackConfig.entry = { |
||||
|
app: api.resolve(entry) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// resolve server options
|
||||
|
const useHttps = args.https || projectDevServerOptions.https || defaults.https |
||||
|
const protocol = useHttps ? 'https' : 'http' |
||||
|
const host = args.host || process.env.HOST || projectDevServerOptions.host || defaults.host |
||||
|
portfinder.basePort = args.port || process.env.PORT || projectDevServerOptions.port || defaults.port |
||||
|
const port = await portfinder.getPortPromise() |
||||
|
const rawPublicUrl = args.public || projectDevServerOptions.public |
||||
|
const publicUrl = rawPublicUrl |
||||
|
? /^[a-zA-Z]+:\/\//.test(rawPublicUrl) |
||||
|
? rawPublicUrl |
||||
|
: `${protocol}://${rawPublicUrl}` |
||||
|
: null |
||||
|
|
||||
|
const urls = prepareURLs( |
||||
|
protocol, |
||||
|
host, |
||||
|
port, |
||||
|
isAbsoluteUrl(options.publicPath) ? '/' : options.publicPath |
||||
|
) |
||||
|
const localUrlForBrowser = publicUrl || urls.localUrlForBrowser |
||||
|
|
||||
|
const proxySettings = prepareProxy( |
||||
|
projectDevServerOptions.proxy, |
||||
|
api.resolve('public') |
||||
|
) |
||||
|
|
||||
|
// inject dev & hot-reload middleware entries
|
||||
|
if (!isProduction) { |
||||
|
const sockPath = projectDevServerOptions.sockPath || '/sockjs-node' |
||||
|
const sockjsUrl = publicUrl |
||||
|
// explicitly configured via devServer.public
|
||||
|
? `?${publicUrl}&sockPath=${sockPath}` |
||||
|
: isInContainer |
||||
|
// can't infer public network url if inside a container...
|
||||
|
// use client-side inference (note this would break with non-root publicPath)
|
||||
|
? `` |
||||
|
// otherwise infer the url
|
||||
|
: `?` + url.format({ |
||||
|
protocol, |
||||
|
port, |
||||
|
hostname: urls.lanUrlForConfig || 'localhost' |
||||
|
}) + `&sockPath=${sockPath}` |
||||
|
const devClients = [ |
||||
|
// dev server client
|
||||
|
require.resolve(`webpack-dev-server/client`) + sockjsUrl, |
||||
|
// hmr client
|
||||
|
require.resolve(projectDevServerOptions.hotOnly |
||||
|
? 'webpack/hot/only-dev-server' |
||||
|
: 'webpack/hot/dev-server') |
||||
|
// TODO custom overlay client
|
||||
|
// `@vue/cli-overlay/dist/client`
|
||||
|
] |
||||
|
if (process.env.APPVEYOR) { |
||||
|
devClients.push(`webpack/hot/poll?500`) |
||||
|
} |
||||
|
// inject dev/hot client
|
||||
|
addDevClientToEntry(webpackConfig, devClients) |
||||
|
} |
||||
|
|
||||
|
// create compiler
|
||||
|
const compiler = webpack(webpackConfig) |
||||
|
|
||||
|
// handle compiler error
|
||||
|
compiler.hooks.failed.tap('vue-cli-service serve', msg => { |
||||
|
error(msg) |
||||
|
process.exit(1) |
||||
|
}) |
||||
|
|
||||
|
// create server
|
||||
|
const server = new WebpackDevServer(compiler, Object.assign({ |
||||
|
logLevel: 'silent', |
||||
|
clientLogLevel: 'silent', |
||||
|
historyApiFallback: { |
||||
|
disableDotRule: true, |
||||
|
rewrites: genHistoryApiFallbackRewrites(options.publicPath, options.pages) |
||||
|
}, |
||||
|
contentBase: api.resolve('public'), |
||||
|
watchContentBase: !isProduction, |
||||
|
hot: !isProduction, |
||||
|
injectClient: false, |
||||
|
compress: isProduction, |
||||
|
publicPath: options.publicPath, |
||||
|
overlay: isProduction // TODO disable this
|
||||
|
? false |
||||
|
: { warnings: false, errors: true } |
||||
|
}, projectDevServerOptions, { |
||||
|
https: useHttps, |
||||
|
proxy: proxySettings, |
||||
|
// eslint-disable-next-line no-shadow
|
||||
|
before (app, server) { |
||||
|
// launch editor support.
|
||||
|
// this works with vue-devtools & @vue/cli-overlay
|
||||
|
app.use('/__open-in-editor', launchEditorMiddleware(() => console.log( |
||||
|
`To specify an editor, specify the EDITOR env variable or ` + |
||||
|
`add "editor" field to your Vue project config.\n` |
||||
|
))) |
||||
|
// allow other plugins to register middlewares, e.g. PWA
|
||||
|
api.service.devServerConfigFns.forEach(fn => fn(app, server)) |
||||
|
// apply in project middlewares
|
||||
|
projectDevServerOptions.before && projectDevServerOptions.before(app, server) |
||||
|
}, |
||||
|
// avoid opening browser
|
||||
|
open: false |
||||
|
})) |
||||
|
|
||||
|
;['SIGINT', 'SIGTERM'].forEach(signal => { |
||||
|
process.on(signal, () => { |
||||
|
server.close(() => { |
||||
|
process.exit(0) |
||||
|
}) |
||||
|
}) |
||||
|
}) |
||||
|
|
||||
|
if (args.stdin) { |
||||
|
process.stdin.on('end', () => { |
||||
|
server.close(() => { |
||||
|
process.exit(0) |
||||
|
}) |
||||
|
}) |
||||
|
|
||||
|
process.stdin.resume() |
||||
|
} |
||||
|
|
||||
|
// on appveyor, killing the process with SIGTERM causes execa to
|
||||
|
// throw error
|
||||
|
if (process.env.VUE_CLI_TEST) { |
||||
|
process.stdin.on('data', data => { |
||||
|
if (data.toString() === 'close') { |
||||
|
console.log('got close signal!') |
||||
|
server.close(() => { |
||||
|
process.exit(0) |
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
return new Promise((resolve, reject) => { |
||||
|
// log instructions & open browser on first compilation complete
|
||||
|
let isFirstCompile = true |
||||
|
compiler.hooks.done.tap('vue-cli-service serve', stats => { |
||||
|
if (stats.hasErrors()) { |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
let copied = '' |
||||
|
if (isFirstCompile && args.copy) { |
||||
|
try { |
||||
|
require('clipboardy').writeSync(localUrlForBrowser) |
||||
|
copied = chalk.dim('(copied to clipboard)') |
||||
|
} catch (_) { |
||||
|
/* catch exception if copy to clipboard isn't supported (e.g. WSL), see issue #3476 */ |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
const networkUrl = publicUrl |
||||
|
? publicUrl.replace(/([^/])$/, '$1/') |
||||
|
: urls.lanUrlForTerminal |
||||
|
|
||||
|
console.log() |
||||
|
console.log(` App running at:`) |
||||
|
console.log(` - Local: ${chalk.cyan(urls.localUrlForTerminal)} ${copied}`) |
||||
|
if (!isInContainer) { |
||||
|
console.log(` - Network: ${chalk.cyan(networkUrl)}`) |
||||
|
} else { |
||||
|
console.log() |
||||
|
console.log(chalk.yellow(` It seems you are running Vue CLI inside a container.`)) |
||||
|
if (!publicUrl && options.publicPath && options.publicPath !== '/') { |
||||
|
console.log() |
||||
|
console.log(chalk.yellow(` Since you are using a non-root publicPath, the hot-reload socket`)) |
||||
|
console.log(chalk.yellow(` will not be able to infer the correct URL to connect. You should`)) |
||||
|
console.log(chalk.yellow(` explicitly specify the URL via ${chalk.blue(`devServer.public`)}.`)) |
||||
|
console.log() |
||||
|
} |
||||
|
console.log(chalk.yellow(` Access the dev server via ${chalk.cyan( |
||||
|
`${protocol}://localhost:<your container's external mapped port>${options.publicPath}` |
||||
|
)}`))
|
||||
|
} |
||||
|
console.log() |
||||
|
|
||||
|
if (isFirstCompile) { |
||||
|
isFirstCompile = false |
||||
|
|
||||
|
if (!isProduction) { |
||||
|
const buildCommand = hasProjectYarn(api.getCwd()) ? `yarn build` : hasProjectPnpm(api.getCwd()) ? `pnpm run build` : `npm run build` |
||||
|
console.log(` Note that the development build is not optimized.`) |
||||
|
console.log(` To create a production build, run ${chalk.cyan(buildCommand)}.`) |
||||
|
} else { |
||||
|
console.log(` App is served in production mode.`) |
||||
|
console.log(` Note this is for preview or E2E testing only.`) |
||||
|
} |
||||
|
console.log() |
||||
|
|
||||
|
if (args.open || projectDevServerOptions.open) { |
||||
|
const pageUri = (projectDevServerOptions.openPage && typeof projectDevServerOptions.openPage === 'string') |
||||
|
? projectDevServerOptions.openPage |
||||
|
: '' |
||||
|
openBrowser(localUrlForBrowser + pageUri) |
||||
|
} |
||||
|
|
||||
|
// Send final app URL
|
||||
|
if (args.dashboard) { |
||||
|
const ipc = new IpcMessenger() |
||||
|
ipc.send({ |
||||
|
vueServe: { |
||||
|
url: localUrlForBrowser |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// resolve returned Promise
|
||||
|
// so other commands can do api.service.run('serve').then(...)
|
||||
|
resolve({ |
||||
|
server, |
||||
|
url: localUrlForBrowser |
||||
|
}) |
||||
|
} else if (process.env.VUE_CLI_TEST) { |
||||
|
// signal for test to check HMR
|
||||
|
console.log('App updated') |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
server.listen(port, host, err => { |
||||
|
if (err) { |
||||
|
reject(err) |
||||
|
} |
||||
|
}) |
||||
|
}) |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
function addDevClientToEntry (config, devClient) { |
||||
|
const { entry } = config |
||||
|
if (typeof entry === 'object' && !Array.isArray(entry)) { |
||||
|
Object.keys(entry).forEach((key) => { |
||||
|
entry[key] = devClient.concat(entry[key]) |
||||
|
}) |
||||
|
} else if (typeof entry === 'function') { |
||||
|
config.entry = entry(devClient) |
||||
|
} else { |
||||
|
config.entry = devClient.concat(entry) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// https://stackoverflow.com/a/20012536
|
||||
|
function checkInContainer () { |
||||
|
if ('CODESANDBOX_SSE' in process.env) { |
||||
|
return true |
||||
|
} |
||||
|
const fs = require('fs') |
||||
|
if (fs.existsSync(`/proc/1/cgroup`)) { |
||||
|
const content = fs.readFileSync(`/proc/1/cgroup`, 'utf-8') |
||||
|
return /:\/(lxc|docker|kubepods(\.slice)?)\//.test(content) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function genHistoryApiFallbackRewrites (baseUrl, pages = {}) { |
||||
|
const path = require('path') |
||||
|
const multiPageRewrites = Object |
||||
|
.keys(pages) |
||||
|
// sort by length in reversed order to avoid overrides
|
||||
|
// eg. 'page11' should appear in front of 'page1'
|
||||
|
.sort((a, b) => b.length - a.length) |
||||
|
.map(name => ({ |
||||
|
from: new RegExp(`^/${name}`), |
||||
|
to: path.posix.join(baseUrl, pages[name].filename || `${name}.html`) |
||||
|
})) |
||||
|
return [ |
||||
|
...multiPageRewrites, |
||||
|
{ from: /./, to: path.posix.join(baseUrl, 'index.html') } |
||||
|
] |
||||
|
} |
||||
|
|
||||
|
module.exports.defaultModes = { |
||||
|
serve: 'development' |
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
|
||||
|
#!/bin/bash |
||||
|
net=wg0 |
||||
|
test_time=2 |
||||
|
T1=$(cat /sys/class/net/$net/statistics/tx_bytes) |
||||
|
sleep $test_time |
||||
|
T2=$(cat /sys/class/net/$net/statistics/tx_bytes) |
||||
|
|
||||
|
#echo "t2=$T2 t1=$T1" |
||||
|
tot=$(( (T2 - T1))) |
||||
|
|
||||
|
if [ $tot -eq 0 ]; then |
||||
|
echo "1" |
||||
|
fi |
||||
|
|
||||
|
|
@ -0,0 +1,65 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
|
||||
|
if [ -z ${1} ] ; then |
||||
|
echo "usage: status.sh interface " |
||||
|
exit |
||||
|
fi |
||||
|
|
||||
|
CHECK="off"; |
||||
|
ACTIVITY="off"; |
||||
|
|
||||
|
net=${1} |
||||
|
ping_c=2 # stop after sending packets |
||||
|
ping_i=1 # set interval in seconds |
||||
|
ping_w=2 # timeout in seconds |
||||
|
|
||||
|
ping_iptmp=$(ip addr show $net | grep -o "inet [0-9]*\.[0-9]*\.[0-9]*" | grep -o "[0-9]*\.[0-9]*\.[0-9]*") |
||||
|
ping_ip="$ping_iptmp.1" |
||||
|
#ping_ip=10.13.13.1 |
||||
|
|
||||
|
if [[ -d /sys/class/net/$net ]]; then |
||||
|
CHECK="on"; |
||||
|
T1=$(cat /sys/class/net/$net/statistics/tx_bytes) |
||||
|
ping -I $net -c $ping_c -i $ping_i -w $ping_w $ping_ip &> /dev/null |
||||
|
T2=$(cat /sys/class/net/$net/statistics/tx_bytes) |
||||
|
|
||||
|
tot=$(( (T2 - T1))) |
||||
|
if [ $tot -ne 0 ]; then |
||||
|
ACTIVITY="on"; |
||||
|
fi |
||||
|
fi |
||||
|
|
||||
|
#echo "check $CHECK activity $ACTIVITY" |
||||
|
|
||||
|
if [ "$CHECK" == "on" ] && [ "$ACTIVITY" == "on" ] ; then |
||||
|
hybridswarm='Online' |
||||
|
else |
||||
|
hybridswarm='NotOnline' |
||||
|
fi |
||||
|
|
||||
|
dockerswarm=$(docker info --format "{{json .}}" | jq .Swarm.LocalNodeState) |
||||
|
tempswarm="${dockerswarm%\"}" |
||||
|
tempswarm="${tempswarm#\"}" |
||||
|
dockerswarm=$tempswarm |
||||
|
|
||||
|
|
||||
|
if [ "$dockerswarm" == "active" ] ; then |
||||
|
dockerswarmid=$(docker info --format "{{json .}}" | jq .Swarm.NodeID) |
||||
|
tempswarm1="${dockerswarmid%\"}" |
||||
|
tempswarm1="${tempswarm1#\"}" |
||||
|
swarmlabid=$tempswarm1 |
||||
|
else |
||||
|
swarmlabid="-1"; |
||||
|
fi |
||||
|
|
||||
|
if [ -z "$dockerswarm" ] ; then |
||||
|
dockerswarm=none |
||||
|
fi |
||||
|
|
||||
|
jq \ |
||||
|
--arg key0 'swarmlab' --arg swarmlab $dockerswarm \ |
||||
|
--arg key1 'hybrid' --arg hybrid $hybridswarm \ |
||||
|
--arg key2 'swarmlabid' --arg swarmlabid $swarmlabid \ |
||||
|
'. | .[$key0]=$swarmlab | .[$key1]=$hybrid | .[$key2]=$swarmlabid' <<<'{}' |
||||
|
|
@ -0,0 +1,15 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
REPOSRC=$1 |
||||
|
LOCALREPO=$2 |
||||
|
|
||||
|
# We do it this way so that we can abstract if from just git later on |
||||
|
LOCALREPO_VC_DIR=$LOCALREPO/.git |
||||
|
|
||||
|
if [ ! -d $LOCALREPO_VC_DIR ] |
||||
|
then |
||||
|
git clone $REPOSRC $LOCALREPO |
||||
|
else |
||||
|
cd $LOCALREPO |
||||
|
git pull $REPOSRC |
||||
|
fi |
@ -0,0 +1,29 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
if [ $# -lt 3 ]; then |
||||
|
echo "This script will create a veth pair, attach one end to an OVS bridge," |
||||
|
echo "and another end to the specified container as a virtual NIC." |
||||
|
echo "" |
||||
|
echo "Usage: $0 <CONTAINER> <VETH> <PEER> <OVS BRIDGE>" |
||||
|
echo "Example: $0 test-container-1 veth-1 peer-1 br-int" |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
CONTAINER=$1 |
||||
|
VETH=$2 |
||||
|
PEER=$3 |
||||
|
OVS_BR=$4 |
||||
|
NETNS=`sudo docker inspect -f '{{.State.Pid}}' $CONTAINER` |
||||
|
|
||||
|
echo "add veth pair[$VETH <--> $PEER] to container[$CONTAINER] in netns[$NETNS]" |
||||
|
ip link delete $VETH || true |
||||
|
ip link add $VETH type veth peer name $PEER |
||||
|
|
||||
|
echo "add port to ovs bridge $OVS_BR" |
||||
|
ovs-vsctl add-port $OVS_BR $VETH |
||||
|
|
||||
|
echo "move $PEER to netns $NETNS" |
||||
|
ip link set $PEER netns $NETNS |
||||
|
ip netns exec $NETNS ip link set dev $PEER up |
||||
|
|
||||
|
echo "done" |
@ -0,0 +1,26 @@ |
|||||
|
#!/bin/sh |
||||
|
|
||||
|
if [ $# -lt 3 ]; then |
||||
|
echo "This script will add an OVS internal port to an OVS bridge," |
||||
|
echo "then assign the port to the specified container as a virtual NIC." |
||||
|
echo "" |
||||
|
echo "Usage: $0 <CONTAINER> <NIC NAME> <OVS BRIDGE>" |
||||
|
echo "Example: $0 test-container-1 vnic-1 br-int" |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
CONTAINER=$1 |
||||
|
PORT=$2 |
||||
|
OVS_BR=$3 |
||||
|
NETNS=`sudo docker inspect -f '{{.State.Pid}}' $CONTAINER` |
||||
|
echo "add port[$PORT] to container[$CONTAINER] in netns[$NETNS]" |
||||
|
|
||||
|
echo "add port to ovs bridge $OVS_BR" |
||||
|
ovs-vsctl add-port $OVS_BR $PORT -- set Interface $PORT type=internal |
||||
|
#ovs-vsctl add-port br-int vnic-1 -- set Interface vnic-1 type=internal |
||||
|
|
||||
|
echo "move $PORT to netns $NETNS" |
||||
|
ip link set $PORT netns $NETNS |
||||
|
ip netns exec $NETNS ip link set dev $PORT up |
||||
|
|
||||
|
echo "done" |
@ -0,0 +1,9 @@ |
|||||
|
|
||||
|
|
||||
|
wg genkey | tee ./privatekey | wg pubkey > ./publickey |
||||
|
|
||||
|
privatekey=$(head -1 ./privatekey) |
||||
|
publickey=$(head -1 ./publickey) |
||||
|
|
||||
|
jq --arg key0 'private' --arg private $privatekey --arg key1 'public' --arg public $publickey '. | .[$key0]=$private | .[$key1]=$public ' <<<'{}' | tee ./keys.json |
||||
|
|
@ -0,0 +1,24 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
if [ $# -ne 1 ]; then |
||||
|
echo "Usage: $0 <container id or name>" |
||||
|
exit 1 |
||||
|
fi |
||||
|
|
||||
|
echo "expose container $1 netns" |
||||
|
NETNS=`sudo docker inspect -f '{{.State.Pid}}' $1` |
||||
|
|
||||
|
if [ ! -d /var/run/netns ]; then |
||||
|
mkdir /var/run/netns |
||||
|
fi |
||||
|
if [ -f /var/run/netns/$NETNS ]; then |
||||
|
rm -rf /var/run/netns/$NETNS |
||||
|
fi |
||||
|
|
||||
|
ln -s /proc/$NETNS/ns/net /var/run/netns/$NETNS |
||||
|
echo "done. netns: $NETNS" |
||||
|
|
||||
|
echo "=============================" |
||||
|
echo "current network namespaces: " |
||||
|
echo "=============================" |
||||
|
ip netns |
@ -0,0 +1,279 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
|
||||
|
if [[ $EUID -ne 0 ]]; then |
||||
|
|
||||
|
wdir=$PWD |
||||
|
|
||||
|
wdir_connect="$wdir/hybrid/connect" |
||||
|
|
||||
|
|
||||
|
toolsok='ok' |
||||
|
|
||||
|
# create wdir connect dir |
||||
|
if [ ! -d $wdir_connect ];then |
||||
|
mkdir -p $wdir_connect |
||||
|
fi |
||||
|
|
||||
|
#check for jq |
||||
|
if ! command -v jq &> /dev/null |
||||
|
then |
||||
|
toolsok='no' |
||||
|
echo "jq could not be found" |
||||
|
exit |
||||
|
fi |
||||
|
|
||||
|
# check version >15 |
||||
|
if ! command -v node &> /dev/null |
||||
|
then |
||||
|
toolsok='no' |
||||
|
echo "" |
||||
|
echo "No node found" |
||||
|
echo "" |
||||
|
echo "Install: https://github.com/nodesource/distributions" |
||||
|
echo "Install it and try again!" |
||||
|
echo "" |
||||
|
echo "-----------USING UBUNTU------------" |
||||
|
echo "curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash -" |
||||
|
echo "sudo apt-get install -y nodejs" |
||||
|
echo "" |
||||
|
exit |
||||
|
else |
||||
|
nodeversion=$(node -v | cut -d'.' -f1) |
||||
|
nodeversion="${nodeversion#v}" |
||||
|
if [ $nodeversion -lt 15 ];then |
||||
|
echo "" |
||||
|
echo "node version < 15" |
||||
|
echo "" |
||||
|
echo "Update: https://github.com/nodesource/distributions" |
||||
|
echo "Update it and try again!" |
||||
|
echo "" |
||||
|
echo "-----------USING UBUNTU------------" |
||||
|
echo "curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash -" |
||||
|
echo "sudo apt-get install -y nodejs" |
||||
|
echo "" |
||||
|
toolsok='no' |
||||
|
exit |
||||
|
fi |
||||
|
fi |
||||
|
|
||||
|
#check for docker |
||||
|
if ! command -v docker &> /dev/null |
||||
|
then |
||||
|
echo "" |
||||
|
echo "Cannot find docker" |
||||
|
echo "" |
||||
|
echo "Install it and try again!" |
||||
|
echo "http://docs.swarmlab.io/SwarmLab-HowTos/labs/Howtos/docker/install.adoc.html" |
||||
|
echo "" |
||||
|
echo "-----------USING UBUNTU------------" |
||||
|
echo "curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -" |
||||
|
echo "sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\"" |
||||
|
echo "sudo apt update" |
||||
|
echo "sudo apt install -y docker-ce" |
||||
|
echo "sudo usermod -aG docker [USERNAME]" |
||||
|
echo "" |
||||
|
toolsok='no' |
||||
|
exit |
||||
|
else |
||||
|
|
||||
|
#check if docker UP |
||||
|
dockerserverdown=$(docker info --format "{{json .}}" | jq .ServerErrors) |
||||
|
if [[ $dockerversion == *denied* ]]; then |
||||
|
echo "" |
||||
|
echo "docker server is down" |
||||
|
echo "" |
||||
|
docker info --format "{{json .}}" | jq .ServerErrors |
||||
|
echo "" |
||||
|
echo "-----------USING UBUNTU------------" |
||||
|
echo "" |
||||
|
echo "Using the following commands you can enable and run docker server"; |
||||
|
echo "sudo systemctl enable docker" |
||||
|
echo "sudo systemctl start docker" |
||||
|
echo "sudo systemctl status docker" |
||||
|
echo "" |
||||
|
echo "After adding to the group (usermod command) your shell needs to be restarted. If you dont know what this means please just logout and log in again."; |
||||
|
echo "" |
||||
|
toolsok='no' |
||||
|
exit |
||||
|
fi |
||||
|
|
||||
|
#check docker version |
||||
|
dockerversion=$(docker info --format "{{json .}}" | jq .ServerVersion | cut -d'.' -f1) |
||||
|
if [[ ! -z $dockerversion && $dockerversion != 'null' ]] ;then |
||||
|
dockerversion="${dockerversion#\"}" |
||||
|
if [ $dockerversion -lt 19 ];then |
||||
|
echo "" |
||||
|
echo "docker version < 19" |
||||
|
echo "" |
||||
|
echo "Update docker and try again!" |
||||
|
echo "http://docs.swarmlab.io/SwarmLab-HowTos/labs/Howtos/docker/install.adoc.html" |
||||
|
echo "" |
||||
|
echo "-----------USING UBUNTU------------" |
||||
|
echo "curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -" |
||||
|
echo "sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\"" |
||||
|
echo "sudo apt update" |
||||
|
echo "sudo apt install -y docker-ce" |
||||
|
echo "sudo usermod -aG docker [USERNAME]" |
||||
|
echo "" |
||||
|
toolsok='no' |
||||
|
exit |
||||
|
fi |
||||
|
else |
||||
|
echo "" |
||||
|
echo "-----------USING UBUNTU------------" |
||||
|
echo "" |
||||
|
echo "Using the following commands you can enable and run docker server"; |
||||
|
echo "sudo systemctl enable docker" |
||||
|
echo "sudo systemctl start docker" |
||||
|
echo "sudo systemctl status docker" |
||||
|
echo "" |
||||
|
echo "After adding to the group (usermod command) your shell needs to be restarted. If you dont know what this means please just logout and log in again."; |
||||
|
echo "" |
||||
|
toolsok='no' |
||||
|
exit |
||||
|
fi |
||||
|
fi |
||||
|
|
||||
|
#check for docker-compose |
||||
|
if ! command -v docker-compose &> /dev/null |
||||
|
then |
||||
|
echo "" |
||||
|
echo "Cannot find docker-compose" |
||||
|
echo "Install it and try again!" |
||||
|
echo "http://docs.swarmlab.io/SwarmLab-HowTos/labs/Howtos/docker/install.adoc.html" |
||||
|
echo "" |
||||
|
echo "-----------USING UBUNTU------------" |
||||
|
echo "" |
||||
|
echo "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" |
||||
|
echo "sudo chmod +x /usr/local/bin/docker-compose" |
||||
|
echo "sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose" |
||||
|
echo "" |
||||
|
toolsok='no' |
||||
|
exit |
||||
|
else |
||||
|
dockercomposeversion=$(docker-compose -f $wdir/test/run.yml config --services) |
||||
|
if [ $dockercomposeversion != 'swarmlabclient' ];then |
||||
|
echo "" |
||||
|
echo "Cannot find docker-compose" |
||||
|
echo "Install it and try again!" |
||||
|
echo "http://docs.swarmlab.io/SwarmLab-HowTos/labs/Howtos/docker/install.adoc.html" |
||||
|
echo "" |
||||
|
echo "-----------USING UBUNTU------------" |
||||
|
echo "" |
||||
|
echo "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" |
||||
|
echo "sudo chmod +x /usr/local/bin/docker-compose" |
||||
|
echo "sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose" |
||||
|
echo "" |
||||
|
toolsok='no' |
||||
|
exit |
||||
|
fi |
||||
|
fi |
||||
|
|
||||
|
#check for wireguard |
||||
|
if ! command -v wg &> /dev/null |
||||
|
then |
||||
|
echo "" |
||||
|
/bin/bash ./install/install-wg.sh |
||||
|
echo "" |
||||
|
# echo "Cannot find wg" |
||||
|
# echo "Install it and try again!" |
||||
|
# echo "https://www.wireguard.com/install/" |
||||
|
# echo "" |
||||
|
# echo "-----------USING UBUNTU------------" |
||||
|
# echo "" |
||||
|
# echo "sudo apt install wireguard" |
||||
|
# echo "" |
||||
|
toolsok='no' |
||||
|
exit |
||||
|
fi |
||||
|
|
||||
|
#check for pm2 |
||||
|
if ! command -v pm2 &> /dev/null |
||||
|
then |
||||
|
toolsok='no' |
||||
|
echo "pm2 could not be found" |
||||
|
echo "sudo npm install -g pm2" |
||||
|
exit |
||||
|
fi |
||||
|
|
||||
|
|
||||
|
# npm install |
||||
|
|
||||
|
#if [ $toolsok == 'ok' ];then |
||||
|
# npm install |
||||
|
# npm audit fix |
||||
|
#fi |
||||
|
|
||||
|
if [ $toolsok == 'ok' ];then |
||||
|
npm install |
||||
|
npm audit fix |
||||
|
cd $wdir |
||||
|
fi |
||||
|
|
||||
|
if [ $toolsok == 'ok' ];then |
||||
|
#cp -f $wdir/files/VuetableCssConfig.js $wdir/node_modules/vuetable-2/src/components/VuetableCssConfig.js |
||||
|
#cp -f $wdir/files/serve.js $wdir/node_modules/@vue/cli-service/lib/commands/serve.js |
||||
|
cp -f $wdir/files/status.sh $wdir/hybrid/connect/status.sh |
||||
|
cp -f $wdir/files/get-swarmlab-ca $wdir/hybrid/connect/get-swarmlab-ca |
||||
|
cp -f $wdir/files/get-base-ca $wdir/hybrid/connect/get-base-ca |
||||
|
mkdir -p $wdir/venuslog/logs |
||||
|
mkdir -p $wdir/logs |
||||
|
|
||||
|
cat << FOE > $wdir/ecosystem.config.js |
||||
|
module.exports = { |
||||
|
"apps": [ |
||||
|
{ |
||||
|
"name" : "venusclient", |
||||
|
"autorestart" : true, |
||||
|
"watch" : true, |
||||
|
"cwd" : "$wdir", |
||||
|
"script" : "./llo/connect-new.js", |
||||
|
"run_as_user" : "node", |
||||
|
"args" : "start", |
||||
|
"pid_file" : "$wdir/venuslog/pid.pid", |
||||
|
"log_type" : "json", |
||||
|
"log_file" : "$wdir/venuslog/logs/logfile", |
||||
|
"error_file" : "$wdir/venuslog/logs/errorfile", |
||||
|
"out_file" : "$wdir/venuslog/logs/outfile", |
||||
|
"log_date_format": "YYYY-MM-DD HH:mm Z", |
||||
|
"merge_logs" : true, |
||||
|
"exec_mode" : "fork", |
||||
|
"max_restarts": 10, |
||||
|
"max_memory_restart": "500M", |
||||
|
"restart_delay": 1000 |
||||
|
}, |
||||
|
] |
||||
|
} |
||||
|
FOE |
||||
|
|
||||
|
fi |
||||
|
|
||||
|
sudo bash ./hybrid/connect/get-base-ca |
||||
|
sudo bash ./hybrid/connect/get-swarmlab-ca |
||||
|
docker pull hub.swarmlab.io:5480/venusclient:latest |
||||
|
|
||||
|
|
||||
|
#echo $nodeversion |
||||
|
#echo $dockerversion |
||||
|
#echo $dockercomposeversion |
||||
|
|
||||
|
#echo $wdir |
||||
|
#echo $wdir_connect |
||||
|
echo "-------------------------" |
||||
|
echo " --------READY------- " |
||||
|
echo "-------------------------" |
||||
|
echo " Start Server: ./start " |
||||
|
echo "" |
||||
|
echo " Stop Server: ./stop " |
||||
|
echo "" |
||||
|
|
||||
|
else |
||||
|
|
||||
|
echo "" |
||||
|
echo "-------------------------" |
||||
|
echo "Run ./install.sh as Non-Root User" |
||||
|
echo "-------------------------" |
||||
|
echo "" |
||||
|
fi |
||||
|
|
@ -0,0 +1,66 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
################################# |
||||
|
# set USERNAME # |
||||
|
################################# |
||||
|
|
||||
|
USERNAME= |
||||
|
|
||||
|
if [ -z "$USERNAME" ]; then |
||||
|
|
||||
|
|
||||
|
# ------------------------ |
||||
|
# 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" |
||||
|
echo "" |
||||
|
else |
||||
|
echo "" |
||||
|
echo "set USERNAME first" |
||||
|
echo "" |
||||
|
fi |
@ -0,0 +1,59 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
################################# |
||||
|
# set USERNAME # |
||||
|
################################# |
||||
|
|
||||
|
USERNAME= |
||||
|
|
||||
|
if [ -z "$USERNAME" ]; then |
||||
|
|
||||
|
# ------------------------ |
||||
|
# 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" |
||||
|
echo "" |
||||
|
|
||||
|
else |
||||
|
echo "" |
||||
|
echo "set USERNAME first" |
||||
|
echo "" |
||||
|
|
||||
|
fi |
@ -0,0 +1,159 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
OS=$(cat /proc/version); |
||||
|
|
||||
|
if [[ $OS =~ "Ubuntu" ]]; then |
||||
|
echo "" |
||||
|
echo "sudo apt update; sudo apt install wireguard" |
||||
|
echo "" |
||||
|
|
||||
|
elif [[ $OS =~ "Debian" ]]; then |
||||
|
echo "" |
||||
|
echo "sudo apt update; sudo apt install wireguard" |
||||
|
echo "" |
||||
|
|
||||
|
elif [[ $OS =~ "Red Hat" ]]; then |
||||
|
echo "" |
||||
|
echo "Red Hat 8" |
||||
|
echo "" |
||||
|
echo "*Method 1: the easiest way is via ELRepo's pre-built module:" |
||||
|
echo "" |
||||
|
echo "sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm" |
||||
|
echo "sudo yum install kmod-wireguard wireguard-tools" |
||||
|
echo "" |
||||
|
echo "*Method 2: users running non-standard kernels may wish to use the DKMS package instead:" |
||||
|
echo "" |
||||
|
echo "sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm" |
||||
|
echo "sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms" |
||||
|
echo "sudo yum copr enable jdoss/wireguard" |
||||
|
echo "sudo yum install wireguard-dkms wireguard-tools" |
||||
|
echo "" |
||||
|
echo "" |
||||
|
echo "Red Hat 7" |
||||
|
echo "" |
||||
|
echo "Method 1: the easiest way is via ELRepo's pre-built module:" |
||||
|
echo "" |
||||
|
echo "sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm" |
||||
|
echo "sudo yum install kmod-wireguard wireguard-tools" |
||||
|
echo "" |
||||
|
echo "Method 2: users running non-standard kernels may wish to use the DKMS package instead:" |
||||
|
echo "" |
||||
|
echo "sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm" |
||||
|
echo "sudo curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo" |
||||
|
echo "sudo yum install wireguard-dkms wireguard-tools" |
||||
|
echo "" |
||||
|
|
||||
|
elif [[ $OS =~ "CentOS" ]]; then |
||||
|
echo "" |
||||
|
echo "CentOS 8" |
||||
|
echo "" |
||||
|
echo "*Method 1: a signed module is available as built-in to CentOS's kernel-plus:" |
||||
|
echo "" |
||||
|
echo "sudo yum install yum-utils epel-release" |
||||
|
echo "sudo yum-config-manager --setopt=centosplus.includepkgs="kernel-plus, kernel-plus-*" --setopt=centosplus.enabled=1 --save" |
||||
|
echo "sudo sed -e 's/^DEFAULTKERNEL=kernel-core$/DEFAULTKERNEL=kernel-plus-core/' -i /etc/sysconfig/kernel" |
||||
|
echo "sudo yum install kernel-plus wireguard-tools" |
||||
|
echo "sudo reboot" |
||||
|
echo "" |
||||
|
echo "*Method 2: the easiest way is via ELRepo's pre-built module:" |
||||
|
echo "" |
||||
|
echo "sudo yum install elrepo-release epel-release" |
||||
|
echo "sudo yum install kmod-wireguard wireguard-tools" |
||||
|
echo "" |
||||
|
echo "*Method 3: users running non-standard kernels may wish to use the DKMS package instead:" |
||||
|
echo "" |
||||
|
echo "sudo yum install epel-release" |
||||
|
echo "sudo yum config-manager --set-enabled PowerTools" |
||||
|
echo "sudo yum copr enable jdoss/wireguard" |
||||
|
echo "sudo yum install wireguard-dkms wireguard-tools" |
||||
|
echo "" |
||||
|
echo "CentOS 7" |
||||
|
echo "" |
||||
|
echo " Method 1: a signed module is available as built-in to CentOS's kernel-plus:" |
||||
|
echo "" |
||||
|
echo " sudo yum install yum-utils epel-release" |
||||
|
echo " sudo yum-config-manager --setopt=centosplus.includepkgs=kernel-plus --enablerepo=centosplus --save" |
||||
|
echo " sudo sed -e 's/^DEFAULTKERNEL=kernel$/DEFAULTKERNEL=kernel-plus/' -i /etc/sysconfig/kernel" |
||||
|
echo " sudo yum install kernel-plus wireguard-tools" |
||||
|
echo " sudo reboot" |
||||
|
echo "" |
||||
|
echo "Method 2: users wishing to stick with the standard kernel may use ELRepo's pre-built module:" |
||||
|
echo "" |
||||
|
echo " sudo yum install epel-release elrepo-release" |
||||
|
echo " sudo yum install yum-plugin-elrepo" |
||||
|
echo " sudo yum install kmod-wireguard wireguard-tools" |
||||
|
echo "" |
||||
|
echo "Method 3: users running non-standard kernels may wish to use the DKMS package instead:" |
||||
|
echo "" |
||||
|
echo " sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm" |
||||
|
echo " sudo curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo" |
||||
|
echo " sudo yum install wireguard-dkms wireguard-tools" |
||||
|
echo "" |
||||
|
|
||||
|
elif [[ $OS =~ "Fedora" ]]; then |
||||
|
echo "" |
||||
|
echo "sudo dnf install wireguard-tools" |
||||
|
echo "" |
||||
|
|
||||
|
elif [[ $OS =~ "Mageia" ]]; then |
||||
|
echo "" |
||||
|
echo "sudo urpmi wireguard-tools" |
||||
|
echo "" |
||||
|
|
||||
|
elif [[ $OS =~ "SUSE" ]]; then |
||||
|
echo "" |
||||
|
echo "sudo zypper install wireguard-tools" |
||||
|
echo "" |
||||
|
|
||||
|
elif [[ $OS =~ "Arch" ]]; then |
||||
|
echo "" |
||||
|
echo "sudo pacman -S wireguard-tools" |
||||
|
echo "" |
||||
|
echo "Users of kernels < 5.6 may also choose wireguard-lts or wireguard-dkms+linux-headers, depending on which kernel is used." |
||||
|
echo "" |
||||
|
|
||||
|
elif [[ $OS =~ "Alpine" ]]; then |
||||
|
echo "" |
||||
|
echo "apk add -U wireguard-tools" |
||||
|
echo "" |
||||
|
|
||||
|
elif [[ $OS =~ "Gentoo" ]]; then |
||||
|
echo "" |
||||
|
echo "emerge wireguard-tools" |
||||
|
echo "" |
||||
|
|
||||
|
elif [[ $OS =~ "Oracle" ]]; then |
||||
|
echo "" |
||||
|
echo "Oracle 8" |
||||
|
echo "" |
||||
|
echo "sudo dnf install oraclelinux-developer-release-el8" |
||||
|
echo "sudo dnf config-manager --disable ol8_developer" |
||||
|
echo "sudo dnf config-manager --enable ol8_developer_UEKR6" |
||||
|
echo "sudo dnf config-manager --save --setopt=ol8_developer_UEKR6.includepkgs='wireguard-tools*'" |
||||
|
echo "sudo dnf install wireguard-tools" |
||||
|
echo "" |
||||
|
echo "Oracle 7" |
||||
|
echo "" |
||||
|
echo "sudo yum install oraclelinux-developer-release-el7" |
||||
|
echo "sudo yum-config-manager --disable ol7_developer" |
||||
|
echo "sudo yum-config-manager --enable ol7_developer_UEKR6" |
||||
|
echo "sudo yum-config-manager --save --setopt=ol7_developer_UEKR6.includepkgs='wireguard-tools*'" |
||||
|
echo "sudo yum install wireguard-tools" |
||||
|
echo "" |
||||
|
|
||||
|
elif [[ $OS =~ "Slackware" ]]; then |
||||
|
echo "" |
||||
|
echo " Run with root privileges" |
||||
|
echo "" |
||||
|
echo "for i in wireguard-linux-compat wireguard-tools; " |
||||
|
echo "do " |
||||
|
echo ' wget https://slackbuilds.org/slackbuilds/14.2/network/$i.tar.gz && tar -xzf $i.tar.gz && cd $i && OUTPUT=$(pwd) ./$i.SlackBuild && sudo upgradepkg --install-new ./$i*.tgz && cd ..; ' |
||||
|
echo "done" |
||||
|
echo "" |
||||
|
|
||||
|
else |
||||
|
echo "" |
||||
|
echo "Can't find what distribution of linux your running!" |
||||
|
echo " see https://www.wireguard.com/install/" |
||||
|
echo "" |
||||
|
fi |
@ -0,0 +1,371 @@ |
|||||
|
|
||||
|
|
||||
|
|
||||
|
var fs = require('fs'); |
||||
|
|
||||
|
var express = require('express'); |
||||
|
var http = require('http'); |
||||
|
var app = express(); |
||||
|
const cors = require('cors') |
||||
|
const helmet = require('helmet'); |
||||
|
|
||||
|
var allowedOrigins = [ |
||||
|
'http://localhost:3080', |
||||
|
'http://localhost:3088', |
||||
|
'http://localhost:8085' |
||||
|
]; |
||||
|
|
||||
|
app.use(cors({ |
||||
|
origin: function(origin, callback){ // allow requests with no origin
|
||||
|
// (like mobile apps or curl requests)
|
||||
|
if(!origin) |
||||
|
return callback(null, true); |
||||
|
if(allowedOrigins.indexOf(origin) === -1){ |
||||
|
var msg = 'The CORS policy for this site does not '; |
||||
|
return callback(new Error(msg), false); |
||||
|
} |
||||
|
return callback(null, true); |
||||
|
} |
||||
|
})); |
||||
|
|
||||
|
app.use( |
||||
|
helmet({ |
||||
|
frameguard: false, |
||||
|
contentSecurityPolicy: false |
||||
|
}) |
||||
|
); |
||||
|
|
||||
|
app.use(express.json()); |
||||
|
|
||||
|
var serverPort = 8085; |
||||
|
var server = http.createServer(app); |
||||
|
|
||||
|
const { spawn, exec, execSync } = require('child_process') |
||||
|
|
||||
|
var static_options = { |
||||
|
dotfiles: 'ignore', |
||||
|
etag: false, |
||||
|
extensions: ['html'], |
||||
|
index: false, |
||||
|
redirect: false, |
||||
|
setHeaders: function (res, path, stat) { |
||||
|
res.set('x-timestamp', Date.now()) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
app.use('/', express.static('client', static_options)) |
||||
|
|
||||
|
|
||||
|
|
||||
|
/* |
||||
|
* ********************************************************** |
||||
|
* create basic wg file server |
||||
|
* ********************************************************** |
||||
|
*/ |
||||
|
|
||||
|
|
||||
|
function wg_save_clientconf(res) { |
||||
|
|
||||
|
/* |
||||
|
res.publickey |
||||
|
res.endpoint |
||||
|
res.serverip |
||||
|
res.netmask |
||||
|
res.privatekey |
||||
|
res.allowedips |
||||
|
res.interfaceip |
||||
|
res.endpointfpath |
||||
|
*/ |
||||
|
var endpointfpath = `${res.serverip}:${res.endpoint}` |
||||
|
var peerconfig =` |
||||
|
[Interface] |
||||
|
PrivateKey = ${res.privatekey} |
||||
|
ListenPort = 51820 |
||||
|
|
||||
|
[Peer] |
||||
|
PublicKey = ${res.publickey} |
||||
|
Endpoint = ${endpointfpath} |
||||
|
AllowedIPs = ${res.allowedips} |
||||
|
#AllowedIPs = 10.1.0.0/24, 0.0.0.0/0, ::/0 |
||||
|
PersistentKeepalive = 30 |
||||
|
` |
||||
|
|
||||
|
try { |
||||
|
fs.writeFileSync('./hybrid/connect/wg0.conf', peerconfig); |
||||
|
return 'ok' |
||||
|
} catch (error) { |
||||
|
var datajson = error.toString() |
||||
|
return datajson |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
* ********************************************************** |
||||
|
* create basic ifup linux |
||||
|
* ********************************************************** |
||||
|
*/ |
||||
|
|
||||
|
function wg_save_ifup_linux(res) { |
||||
|
var mypath = process.cwd() |
||||
|
var DEV_NAME = res.dev_name |
||||
|
var INTERFACE_IP = res.INTERFACE_IP |
||||
|
var INTERFACE_IProute = res.INTERFACE_IProute |
||||
|
|
||||
|
/* |
||||
|
res.publickey |
||||
|
res.endpoint |
||||
|
res.serverip |
||||
|
res.netmask |
||||
|
res.privatekey |
||||
|
res.allowedips |
||||
|
res.interfaceip |
||||
|
res.endpointfpath |
||||
|
*/ |
||||
|
try { |
||||
|
const myExec = ` |
||||
|
ip link set ${DEV_NAME} down |
||||
|
ip link del ${DEV_NAME} |
||||
|
sleep 1 |
||||
|
ip link add ${DEV_NAME} type wireguard |
||||
|
wg setconf ${DEV_NAME} /settingsclient/wg0.conf |
||||
|
sleep 1 |
||||
|
ip addr add ${INTERFACE_IP} dev ${DEV_NAME} |
||||
|
sysctl -w net.ipv4.conf.all.rp_filter=2 |
||||
|
ip link set mtu 1420 up dev ${DEV_NAME} |
||||
|
ip link set up dev ${DEV_NAME} |
||||
|
ip route add default via ${INTERFACE_IProute} metric 2 table 200 |
||||
|
ip route show table 200 | grep -w ${INTERFACE_IProute} |
||||
|
ip rule add table main suppress_prefixlength 0 |
||||
|
` |
||||
|
fs.writeFileSync('./hybrid/connect/ifup_linux', myExec); |
||||
|
|
||||
|
const myExec1 = ` |
||||
|
ip link set ${DEV_NAME} down |
||||
|
ip link del ${DEV_NAME} |
||||
|
` |
||||
|
fs.writeFileSync('./hybrid/connect/ifdown_linux', myExec1); |
||||
|
|
||||
|
return 'ok' |
||||
|
} catch (error) { |
||||
|
var datajson = error.toString() |
||||
|
return datajson |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
* ********************************************************** |
||||
|
* create basic run docker |
||||
|
* ********************************************************** |
||||
|
*/ |
||||
|
|
||||
|
function wg_save_connect_linux(res) { |
||||
|
var mypath = process.cwd() |
||||
|
var DEV_NAME = res.dev_name |
||||
|
var INTERFACE_IP = res.INTERFACE_IP |
||||
|
var INTERFACE_IProute = res.INTERFACE_IProute |
||||
|
|
||||
|
/* |
||||
|
res.publickey |
||||
|
res.endpoint |
||||
|
res.serverip |
||||
|
res.netmask |
||||
|
res.privatekey |
||||
|
res.allowedips |
||||
|
res.interfaceip |
||||
|
res.endpointfpath |
||||
|
*/ |
||||
|
try { |
||||
|
const myExec = ` |
||||
|
docker exec -it swarmlabwg /bin/bash -c "ip link set swarmlab0 down; ip link del swarmlab0" |
||||
|
sleep 1 |
||||
|
docker stop swarmlabwg; docker container rm swarmlabwg |
||||
|
sleep 1 |
||||
|
docker pull hub.swarmlab.io:5480/venusclient:latest |
||||
|
sleep 1 |
||||
|
docker run -d \ |
||||
|
--net=host \ |
||||
|
--name=swarmlabwg \ |
||||
|
--cap-add=NET_ADMIN \ |
||||
|
--cap-add=SYS_MODULE \ |
||||
|
-e PUID=1000 \ |
||||
|
-e PGID=1000 \ |
||||
|
-e TZ=Europe/Athens \ |
||||
|
-p 51820:51820/udp \ |
||||
|
-v ${mypath}/hybrid/connect:/settingsclient \ |
||||
|
-v /lib/modules:/lib/modules \ |
||||
|
--restart unless-stopped \ |
||||
|
hub.swarmlab.io:5480/venusclient:latest |
||||
|
` |
||||
|
fs.writeFileSync('./hybrid/connect/swarmlabwg', myExec); |
||||
|
fs.writeFileSync('./hybrid/connect/swarmlabstatus', 'wgstatusclient=off'); |
||||
|
|
||||
|
const myExec1 = ` |
||||
|
docker stop swarmlabwg; docker container rm swarmlabwg |
||||
|
sleep 1 |
||||
|
` |
||||
|
fs.writeFileSync('./hybrid/connect/swarmlabwgdown', myExec1); |
||||
|
|
||||
|
|
||||
|
return 'ok' |
||||
|
} catch (error) { |
||||
|
var datajson = error.toString() |
||||
|
return datajson |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
app.post('/hybrid_join_start', (req, res, next) => { |
||||
|
|
||||
|
var RES = new Object(); |
||||
|
RES.publickey = req.body["publickey"] |
||||
|
RES.endpoint = req.body["endpointport"] |
||||
|
RES.serverip = req.body["serverip"] |
||||
|
RES.netmask = req.body["netmask"] |
||||
|
RES.privatekey = req.body["privatekey"] |
||||
|
RES.allowedips = req.body["allowedips"] |
||||
|
RES.interfaceip = req.body["peer_ip"] |
||||
|
RES.endpointfpath = `${RES.serverip}:${RES.endpoint}` |
||||
|
RES.dev_name = 'swarmlab0' |
||||
|
RES.INTERFACE_IP = `${RES.interfaceip}/${RES.netmask}` |
||||
|
RES.INTERFACE_IProute = `${RES.interfaceip}` |
||||
|
|
||||
|
try { |
||||
|
// *****************************************
|
||||
|
// *** save wg config file wg0.conf
|
||||
|
// *****************************************
|
||||
|
RES.serverconf = wg_save_clientconf(RES) |
||||
|
RES.serverrun = wg_save_ifup_linux(RES) |
||||
|
RES.serverconnect = wg_save_connect_linux(RES) |
||||
|
// *****************************************
|
||||
|
// *** save wg ifup linux
|
||||
|
// *****************************************
|
||||
|
|
||||
|
RES.error = false |
||||
|
RES.error_msg = "ok" |
||||
|
RES.action = "ok" |
||||
|
|
||||
|
console.error('socket get from client' + JSON.stringify(RES)) |
||||
|
res.json(RES) |
||||
|
} catch (error) { |
||||
|
var datajson = error.toString() |
||||
|
RES.error = true |
||||
|
RES.error_msg = datajson |
||||
|
RES.action = "no" |
||||
|
res.json(RES) |
||||
|
} |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
app.post('/hybrid_join_connect', (req, res, next) => { |
||||
|
|
||||
|
var RES = new Object(); |
||||
|
RES.action = req.body["action"] |
||||
|
|
||||
|
try { |
||||
|
if(RES.action == "connect"){ |
||||
|
|
||||
|
fs.writeFileSync('./hybrid/connect/swarmlabstatus', 'wgstatusclient=on'); |
||||
|
|
||||
|
var showexecrm = `/bin/sh ./hybrid/connect/swarmlabwg` |
||||
|
execSync(showexecrm); |
||||
|
|
||||
|
var showexec = `docker ps --format '{"ID":"{{ .ID }}", "Image": "{{ .Image }}", "Names":"{{ .Names }}", "Ports":"{{.Ports}}", "Networks":"{{.Networks}}", "Status":"{{.Status}}","RunningFor":"{{.RunningFor}}","CreatedAt":"{{.CreatedAt}}"}' | jq . -s ` |
||||
|
exec(showexec, (err, stdout, stderr) => { |
||||
|
if (err) { |
||||
|
console.error(`exec error: ${err}`); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
var nn = [] |
||||
|
var string = stdout.toString() |
||||
|
var datajson = JSON.parse(string); |
||||
|
|
||||
|
var results = [] |
||||
|
var filter = "swarmlabwg" |
||||
|
var grep = new RegExp(filter); |
||||
|
var datalenth = datajson.length |
||||
|
for (var i=0 ; i < datalenth ; i++) |
||||
|
{ |
||||
|
if(grep.test(datajson[i]['Names'])){ |
||||
|
results.push(datajson[i]); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
RES.debug = datajson |
||||
|
|
||||
|
if(results){ |
||||
|
RES.error = false |
||||
|
RES.error_msg = "ok" |
||||
|
RES.action = "execok" |
||||
|
|
||||
|
console.error('socket get from client ' + JSON.stringify(RES)) |
||||
|
res.json(RES) |
||||
|
}else{ |
||||
|
RES.error = false |
||||
|
RES.error_msg = "ok" |
||||
|
RES.action = "execno" |
||||
|
|
||||
|
console.error('socket get from client ' + JSON.stringify(RES)) |
||||
|
res.json(RES) |
||||
|
} |
||||
|
}); |
||||
|
}else if( RES.action == "disconnect" ){ |
||||
|
fs.writeFileSync('./hybrid/connect/swarmlabstatus', 'wgstatusclient=off'); |
||||
|
|
||||
|
var showexecrm1 = `/bin/sh ./hybrid/connect/swarmlabwgdown` |
||||
|
execSync(showexecrm1); |
||||
|
|
||||
|
var showexec = `docker ps --format '{"ID":"{{ .ID }}", "Image": "{{ .Image }}", "Names":"{{ .Names }}", "Ports":"{{.Ports}}", "Networks":"{{.Networks}}", "Status":"{{.Status}}","RunningFor":"{{.RunningFor}}","CreatedAt":"{{.CreatedAt}}"}' | jq . -s ` |
||||
|
exec(showexec, (err, stdout, stderr) => { |
||||
|
if (err) { |
||||
|
console.error(`exec error: ${err}`); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
var nn = [] |
||||
|
var string = stdout.toString() |
||||
|
var datajson = JSON.parse(string); |
||||
|
|
||||
|
var results = [] |
||||
|
var filter = "swarmlabwg" |
||||
|
var grep = new RegExp(filter); |
||||
|
var datalenth = datajson.length |
||||
|
for (var i=0 ; i < datalenth ; i++) |
||||
|
{ |
||||
|
if(grep.test(datajson[i]['Names'])){ |
||||
|
results.push(datajson[i]); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
RES.debug = datajson |
||||
|
|
||||
|
if(results){ |
||||
|
RES.error = false |
||||
|
RES.error_msg = "ok" |
||||
|
RES.action = "execok" |
||||
|
|
||||
|
console.error('socket get from client ' + JSON.stringify(RES)) |
||||
|
res.json(RES) |
||||
|
}else{ |
||||
|
RES.error = false |
||||
|
RES.error_msg = "ok" |
||||
|
RES.action = "execno" |
||||
|
|
||||
|
console.error('socket get from client ' + JSON.stringify(RES)) |
||||
|
res.json(RES) |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
} catch (error) { |
||||
|
var datajson = error.toString() |
||||
|
RES.error = true |
||||
|
RES.error_msg = datajson |
||||
|
RES.action = "no" |
||||
|
res.json(RES) |
||||
|
} |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
|
||||
|
server.listen(serverPort, function() { |
||||
|
console.log('server up and running at %s port', serverPort); |
||||
|
}); |
@ -0,0 +1,11 @@ |
|||||
|
var config = {}; |
||||
|
|
||||
|
config.mongo = {}; |
||||
|
config.redis = {}; |
||||
|
|
||||
|
config.mongo.user = 'user1' |
||||
|
config.mongo.password= 'pass1' |
||||
|
config.redis.host = 'redisserver'; |
||||
|
config.redis.port = 6379; |
||||
|
|
||||
|
module.exports = config; |
@ -0,0 +1,11 @@ |
|||||
|
var config = {}; |
||||
|
|
||||
|
config.mongo = {}; |
||||
|
config.redis = {}; |
||||
|
|
||||
|
config.mongo.user = 'user1' |
||||
|
config.mongo.password= 'pass1' |
||||
|
config.redis.host = 'redisserver'; |
||||
|
config.redis.port = 6379; |
||||
|
|
||||
|
module.exports = config; |
@ -0,0 +1,20 @@ |
|||||
|
{ |
||||
|
"name": "swarmlab-venus", |
||||
|
"version": "1.0.0", |
||||
|
"description": "swarmlab-venus on node", |
||||
|
"main": "connect-new.js", |
||||
|
"scripts": { |
||||
|
"start": "node ./llo/connect-new.js" |
||||
|
}, |
||||
|
"dependencies": { |
||||
|
"async": "^3.2.0", |
||||
|
"bufferutil": "^4.0.2", |
||||
|
"express": "^4.17.1", |
||||
|
"helmet": "^4.1.1", |
||||
|
"pm2": "^4.5.1", |
||||
|
"read-last-lines": "^1.7.2", |
||||
|
"simple-git": "^2.31.0", |
||||
|
"url-exist-sync": "^1.0.2", |
||||
|
"utf-8-validate": "^5.0.3" |
||||
|
} |
||||
|
} |
@ -0,0 +1,64 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
|
||||
|
SOURCE="${BASH_SOURCE[0]}" |
||||
|
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink |
||||
|
TARGET="$(readlink "$SOURCE")" |
||||
|
if [[ $TARGET == /* ]]; then |
||||
|
#echo "SOURCE '$SOURCE' is an absolute symlink to '$TARGET'" |
||||
|
SOURCE="$TARGET" |
||||
|
else |
||||
|
DIR="$( dirname "$SOURCE" )" |
||||
|
#echo "SOURCE '$SOURCE' is a relative symlink to '$TARGET' (relative to '$DIR')" |
||||
|
SOURCE="$DIR/$TARGET" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located |
||||
|
fi |
||||
|
done |
||||
|
|
||||
|
SRPATH="$( dirname "$SOURCE" )" |
||||
|
SFPATH="$( cd -P "$( dirname "$SOURCE" )" && pwd )" |
||||
|
if [ "$SFPATH" != "$SRPATH" ]; then |
||||
|
RDIR=$SRPATH # relativ path directory |
||||
|
fi |
||||
|
|
||||
|
cwdir=$PWD |
||||
|
wdir=$SFPATH |
||||
|
|
||||
|
if [ "$cwdir" != "$wdir" ]; then |
||||
|
cd $wdir |
||||
|
fi |
||||
|
|
||||
|
sudo /bin/bash ./hybrid/connect/get-swarmlab-ca > /dev/null 2>&1 |
||||
|
sudo /bin/bash ./hybrid/connect/get-base-ca > /dev/null 2>&1 |
||||
|
|
||||
|
./update-agent.sh |
||||
|
docker pull hub.swarmlab.io:5480/venusclient:latest |
||||
|
|
||||
|
pm2 stop venusclient > /dev/null 2>&1 |
||||
|
sleep 1 |
||||
|
pm2 start ecosystem.config.js --watch --ignore-watch="node_modules" > /dev/null 2>&1 |
||||
|
sleep 3 |
||||
|
pm2 stop venusclient > /dev/null 2>&1 |
||||
|
sleep 3 |
||||
|
pm2 start venusclient |
||||
|
|
||||
|
|
||||
|
txturl='\033[1;36m' |
||||
|
txturl1='\033[0;36m' |
||||
|
txtg='\033[0;32m' |
||||
|
NOCOLOR='\033[0m' |
||||
|
|
||||
|
echo -e "$( |
||||
|
cat << EOM |
||||
|
|
||||
|
${txtg} DONE build successfully ${NOCOLOR} |
||||
|
|
||||
|
App running at: |
||||
|
- Local: ${txturl1} http://localhost:${txturl}8085/index.html |
||||
|
|
||||
|
${NOCOLOR} |
||||
|
|
||||
|
EOM |
||||
|
)" |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,4 @@ |
|||||
|
|
||||
|
pm2 stop hybridserver |
||||
|
sleep 1 |
||||
|
pm2 status |
@ -0,0 +1,47 @@ |
|||||
|
#!/bin/bash |
||||
|
|
||||
|
SOURCE="${BASH_SOURCE[0]}" |
||||
|
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink |
||||
|
TARGET="$(readlink "$SOURCE")" |
||||
|
if [[ $TARGET == /* ]]; then |
||||
|
#echo "SOURCE '$SOURCE' is an absolute symlink to '$TARGET'" |
||||
|
SOURCE="$TARGET" |
||||
|
else |
||||
|
DIR="$( dirname "$SOURCE" )" |
||||
|
#echo "SOURCE '$SOURCE' is a relative symlink to '$TARGET' (relative to '$DIR')" |
||||
|
SOURCE="$DIR/$TARGET" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located |
||||
|
fi |
||||
|
done |
||||
|
|
||||
|
SRPATH="$( dirname "$SOURCE" )" |
||||
|
SFPATH="$( cd -P "$( dirname "$SOURCE" )" && pwd )" |
||||
|
if [ "$SFPATH" != "$SRPATH" ]; then |
||||
|
RDIR=$SRPATH # relativ path directory |
||||
|
fi |
||||
|
|
||||
|
cwdir=$PWD |
||||
|
wdir=$SFPATH |
||||
|
if [ "$cwdir" != "$wdir" ]; then |
||||
|
cd $wdir |
||||
|
fi |
||||
|
|
||||
|
#echo $cwdir |
||||
|
git fetch |
||||
|
|
||||
|
UPSTREAM=${1:-'@{u}'} |
||||
|
LOCAL=$(git rev-parse @) |
||||
|
REMOTE=$(git rev-parse "$UPSTREAM") |
||||
|
BASE=$(git merge-base @ "$UPSTREAM") |
||||
|
|
||||
|
if [ $LOCAL = $REMOTE ]; then |
||||
|
echo "Up-to-date" |
||||
|
elif [ $LOCAL = $BASE ]; then |
||||
|
echo "Update swarmlab hybrid ..." |
||||
|
git pull origin |
||||
|
elif [ $REMOTE = $BASE ]; then |
||||
|
echo "Need to push" |
||||
|
else |
||||
|
echo "Diverged" |
||||
|
fi |
||||
|
|
||||
|
cd $cwdir |