Commit 45b95a66 authored by ibuler's avatar ibuler

[Change] 拆分view

parent 299f0aa9
......@@ -3,7 +3,7 @@
<head lang="en">
<meta charset="UTF-8">
<title>Bifrost</title>
<base href="/bifrost/">
<base href="/luna/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="main.min.css"/>
<!--script src="node_modules/requirejs/require.js"></script-->
......
......@@ -64,8 +64,8 @@ exports.DataStore = {
Path: {},
error: {},
msg: {},
leftbar: "/bifrost/api/leftbar",
leftbarrightclick: "/bifrost/api/leftbarrightclick",
leftbar: "/luna/api/leftbar",
leftbarrightclick: "/luna/api/leftbarrightclick",
loglevel: 0,
term: [],
termActive: 0,
......@@ -104,7 +104,7 @@ var AppService = (function () {
exports.DataStore.socket.on('popup', function (data) {
layer.msg(data);
});
exports.DataStore.socket.emit('api', 'all');
exports.DataStore.socket.emit('nav');
});
}
AppService.prototype.checklogin = function (path) {
......@@ -324,7 +324,7 @@ var AppService = (function () {
document.title = title;
});
exports.DataStore.term[id]["term"].open(document.getElementById('term-' + id));
exports.DataStore.term[id]["term"].write('\x1b[31mWelcome to Jumpserver!\x1b[m\r\n');
exports.DataStore.term[id]["term"].write('\x1b[32mWelcome to Jumpserver!\x1b[m\r\n');
socket.on('connect', function () {
socket.emit('machine', uuid);
exports.DataStore.term[id]["term"].on('data', function (data) {
......
......@@ -31,6 +31,7 @@ class Luna(Flask, AppMixin):
'HEATBEAT_INTERVAL': 5,
})
app_service = None
clients = {}
def bootstrap(self):
self.app_service = AppService(app_name=self.config['NAME'],
......
nav = [{
"id": "File",
"name": "Server",
"children": [
{
"id": "NewConnection",
"href": "Aaaa",
"name": "New connection",
"disable": True
},
{
"id": "Connect",
"href": "Aaaa",
"name": "Connect",
"disable": True},
{
"id": "Disconnect",
"click": "Disconnect",
"name": "Disconnect"
},
{
"id": "DisconnectAll",
"click": "DisconnectAll",
"name": "Disconnect all"
},
{
"id": "Duplicate",
"href": "Aaaa",
"name": "Duplicate",
"disable": True
},
{
"id": "Upload",
"href": "Aaaa",
"name": "Upload",
"disable": True
},
{
"id": "Download",
"href": "Aaaa",
"name": "Download",
"disable": True
},
{
"id": " Search",
"href": "Aaaa",
"name": "Search",
"disable": True
},
{
"id": "Reload",
"click": "ReloadLeftbar",
"name": "Reload"
}
]}, {
"id": "View",
"name": "View",
"children": [
{
"id": "HindLeftManager",
"click": "HideLeft",
"name": "Hind left manager"
},
{
"id": "SplitVertical",
"href": "Aaaa",
"name": "Split vertical",
"disable": True
},
{
"id": "CommandBar",
"href": "Aaaa",
"name": "Command bar",
"disable": True
},
{
"id": "ShareSession",
"href": "Aaaa",
"name": "Share session (read/write)",
"disable": True
},
{
"id": "Language",
"href": "Aaaa",
"name": "Language",
"disable": True
}]}, {
"id": "Help",
"name": "Help",
"children": [
{
"id": "EnterLicense",
"click": "EnterLicense",
"name": "Enter License"
},
{
"id": "Website",
"click": "Website",
"name": "Website"
},
{
"id": "BBS",
"click": "BBS",
"name": "BBS"
}]
}]
#
from .views import *
from .websocket import *
# ~*~ coding: utf-8 ~*~
from .. import app
from flask import render_template, send_from_directory
__all__ = ['index', 'luna', 'send_dist']
@app.route('/')
def index():
return render_template('index.html')
@app.route('/luna/')
def luna():
return render_template('index.html')
@app.route('/luna/<path:path>')
def send_dist(path):
return send_from_directory('dist', path)
# ~*~ coding: utf-8 ~*~
#!/usr/bin/env python
# coding: utf-8
import select
import threading
import collections
import json
import paramiko
from .. import app, socket_io
from ..nav import nav
clients = app.clients
__all__ = [
'handle_api', 'handle_term_connect', 'handle_machine',
'handle_data', 'handle_term_disconnect', 'handle_term_resize'
]
@socket_io.on('nav')
def handle_api(sid):
socket_io.emit('nav', json.dumps(nav), room=sid)
@socket_io.on('connect', namespace='/')
def handle_term_connect(sid, environ):
clients[sid] = collections.defaultdict(dict)
@socket_io.on('machine')
def handle_machine(sid, message):
clients[sid]['host'] = host = '192.168.152.129'
clients[sid]['port'] = port = 22
t = threading.Thread(target=forward, args=(sid,))
t.setDaemon(True)
t.start()
# global thread
# if thread is None:
# thread = socket_io.start_background_task(forward, sid)
socket_io.emit('data', 'Connect to %s:%s \r\n' % (host, port), room=sid)
print(t.is_alive())
@socket_io.on('data')
def handle_data(sid, message):
print('Receive data: %s' % message)
if clients[sid]['chan']:
clients[sid]['chan'].send(message)
@socket_io.on('disconnect')
def handle_term_disconnect(sid):
del clients[sid]
print('term disconnect')
@socket_io.on('resize')
def handle_term_resize(sid, json):
print(json)
def forward(sid):
try:
host = clients[sid]['host']
port = clients[sid]['port']
except KeyError as e:
socket_io.emit('data', e, room=sid)
return
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port=port, username='root', password='redhat')
clients[sid]['ssh'] = ssh
clients[sid]['chan'] = chan = ssh.invoke_shell()
while True:
r, w, x = select.select([chan], [], [])
if chan in r:
data = chan.recv(1024)
if not len(data):
break
socket_io.emit('data', data, room=sid)
#!/usr/bin/env python
# coding: utf-8
import time
import select
import threading
import collections
import json
import paramiko
from flask.globals import _request_ctx_stack, _app_ctx_stack
from flask import request
from flask import render_template, send_from_directory, jsonify, g
from flask_socketio import emit
from flask import render_template, send_from_directory
from . import app, socket_io
from .nav import nav
thread = None
clients = collections.defaultdict(dict)
clients = app.clients
@app.route('/')
......@@ -24,30 +20,19 @@ def index():
return render_template('index.html')
@app.route('/get_site')
def get_site():
return jsonify({"hello": "world"})
@app.route('/bifrost/')
def bifrost():
@app.route('/luna/')
def luna():
return render_template('index.html')
@app.route('/bifrost/<path:path>')
@app.route('/luna/<path:path>')
def send_dist(path):
return send_from_directory('dist', path)
@socket_io.on('api')
def handle_api(sid, api):
if api == 'nav':
socket_io.emit('nav',
'[{"id":"File","name":"Server","children":[{"id":"NewConnection","href":"Aaaa","name":"New connection","disable":true},{"id":"Connect","href":"Aaaa","name":"Connect","disable":true},{"id":"Disconnect","click":"Disconnect","name":"Disconnect"},{"id":"DisconnectAll","click":"DisconnectAll","name":"Disconnect all"},{"id":"Duplicate","href":"Aaaa","name":"Duplicate","disable":true},{"id":"Upload","href":"Aaaa","name":"Upload","disable":true},{"id":"Download","href":"Aaaa","name":"Download","disable":true},{"id":"Search","href":"Aaaa","name":"Search","disable":true},{"id":"Reload","click":"ReloadLeftbar","name":"Reload"}]},{"id":"View","name":"View","children":[{"id":"HindLeftManager","click":"HideLeft","name":"Hind left manager"},{"id":"SplitVertical","href":"Aaaa","name":"Split vertical","disable":true},{"id":"CommandBar","href":"Aaaa","name":"Command bar","disable":true},{"id":"ShareSession","href":"Aaaa","name":"Share session (read/write)","disable":true},{"id":"Language","href":"Aaaa","name":"Language","disable":true}]},{"id":"Help","name":"Help","children":[{"id":"EnterLicense","click":"EnterLicense","name":"Enter License"},{"id":"Website","click":"Website","name":"Website"},{"id":"BBS","click":"BBS","name":"BBS"}]}]', room=sid)
# print('received json: ' + str(json))
elif api == 'all':
socket_io.emit('nav',
'[{"id":"File","name":"Server","children":[{"id":"NewConnection","href":"Aaaa","name":"New connection","disable":true},{"id":"Connect","href":"Aaaa","name":"Connect","disable":true},{"id":"Disconnect","click":"Disconnect","name":"Disconnect"},{"id":"DisconnectAll","click":"DisconnectAll","name":"Disconnect all"},{"id":"Duplicate","href":"Aaaa","name":"Duplicate","disable":true},{"id":"Upload","href":"Aaaa","name":"Upload","disable":true},{"id":"Download","href":"Aaaa","name":"Download","disable":true},{"id":"Search","href":"Aaaa","name":"Search","disable":true},{"id":"Reload","click":"ReloadLeftbar","name":"Reload"}]},{"id":"View","name":"View","children":[{"id":"HindLeftManager","click":"HideLeft","name":"Hind left manager"},{"id":"SplitVertical","href":"Aaaa","name":"Split vertical","disable":true},{"id":"CommandBar","href":"Aaaa","name":"Command bar","disable":true},{"id":"ShareSession","href":"Aaaa","name":"Share session (read/write)","disable":true},{"id":"Language","href":"Aaaa","name":"Language","disable":true}]},{"id":"Help","name":"Help","children":[{"id":"EnterLicense","click":"EnterLicense","name":"Enter License"},{"id":"Website","click":"Website","name":"Website"},{"id":"BBS","click":"BBS","name":"BBS"}]}]', room=sid)
@socket_io.on('nav')
def handle_api(sid):
socket_io.emit('nav', json.dumps(nav), room=sid)
@socket_io.on('connect', namespace='/')
......@@ -84,7 +69,6 @@ def handle_term_disconnect(sid):
@socket_io.on('resize')
def handle_term_resize(sid, json):
print(json)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment