上一篇已经讲了如何让NoVNC代理跑起来 , 这章我们来看看如何将它集成到我们的django项目中来
NoVNC的使用之一: 让我们把NoVNC代理跑起来
1. 设置静态文件 (包括NoVNC需要用到的 css , js , image , template 文件)
写道
这里我们假设 /media/ 目录是你的静态文件目录 , 这个目录下有 css , js , images等目录....
1. 我们创建一个 vnc的目录 , mkdir vnc
2. cp -R ~/work/noVNC/images -> media/vnc
cp -R ~/work/noVNC/include -> media/vnc
3. cp ~/work/noVNC/vnc_auto.html -> templates/vnc_auto.html
let us edit this :
// host = WebUtil.getQueryVar('host', window.location.hostname);
host = '{{host}}'
// port = WebUtil.getQueryVar('port', window.location.port);
port = {{port}}
// path = WebUtil.getQueryVar('path', 'websockify');
path = WebUtil.getQueryVar('path', 'websockify/?token={{token}}');
// 'view_only': WebUtil.getQueryVar('view_only', false),
'view_only': WebUtil.getQueryVar('view_only', {{view_only}}),
2. 将noVNC代理程序移植到项目中..
写道
这里我将VNC的关键代码放到项目的 utils目录下
我们只需要原代码中的 noVNC/utils 即可
cp -R ~/work/noVNC/utils ../../utils/vnc
我们只需要原代码中的 noVNC/utils 即可
cp -R ~/work/noVNC/utils ../../utils/vnc
3. 添加配置文件夹
写道
紧接着上面 , 在 ../../utils/vnc 下 mkdir vnc_tokens 目录
cd vnc_tokens
vim vnc-1.ini and edit is
abcdefg: 10.10.10.202:5900
×× 如果有多个被控端,就顺着往下写即可,不用一个被控端一个 ini 文件
4. 如果在项目中启动 novnc 代理服务
写道
1. 线程 (threading) , 不行, 这个服务只能在主线程中跑
2. 子进程 (subprocess), 不行, 主进程会被阻塞
3. 多进程 (multiprocessing) , OK
#coding=utf-8 import os from multiprocessing import Process from django.conf import settings def worker(): ''' 多进程启动VNC服务 ''' dir_path = os.path.dirname(__file__) websockify_path = os.path.join(dir_path, 'vnc', 'utils', 'websockify') web_path = os.path.join(dir_path, 'vnc') target_path = os.path.join(dir_path, 'vnc', 'vnc_tokens') cmd = u'python %s --web=%s --target-config=%s %s' %(websockify_path, web_path, target_path, settings.VNC_PROXY_PORT) os.system(cmd) def start_websockify(): ''' 启动vnc代理服务 ./utils/websockify --web=. --target-config=vnc_tokens 6080 {'target_cfg': '/home/xiaofei/work/noVNC/vnc_tokens', 'listen_port': 6080} ''' print u'start vnc proxy..' t = Process(target=worker,args=()) t.start() print u'vnc proxy started..'
5. 写一个URL响应函数, 就可以用类似下面的方式 进行 访问 :
def run_vnc(request): ''' 调用VNC代理进行远程控制 ''' template = loader.get_template('vnc_auto.html') token = request.GET.get('token', '') # 用来判断不同的访问机器 view_only = request.GET.get('view_only', 'false') # false可以控制 or true只能查看 # 代理服务器 IP及端口 , 这个一般都用校服务器局域网IP (127.0.0.1, 6080是默认端口) host = '127.0.0.1' port = settings.VNC_PROXY_PORT context = Context({'token':token, 'host':host, 'port': port, 'view_only':view_only}) return HttpResponse(template.render(context))
6. http://localhost:8000/system/maintenance/run-vnc/?token=abcdefg 即可控制 10.10.10.202机器 (前提是202开启了 vcn server)
相关推荐
noVnc Django PoC Websockify的Django身份验证插件的PoC。 用法: 打开两个端子。 在这两个目录中,您都需要进入“ authenticated_websocket_django”目录。 在一个终端中运行Web服务器: python ./manage.py ...
首先,我们先来认识Django: Django是一个高级的Python Web框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django负责处理网站开发中麻烦的部分,可以专注于编写应用程序,而无需重新开发。 接...
django项目django项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue...
使用python的django开发的一个商城项目源码 使用python的django开发的一个商城项目源码 使用python的django开发的一个商城项目源码 使用python的django开发的一个商城项目源码 使用python的django...
Python基于Django的实战项目源码——美多商城 Python基于Django的实战项目源码——美多商城 Python基于Django的实战项目源码——美多商城 Python基于Django的实战项目源码——美多商城 Python基于Django的...
Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目...
添加django_editorjs_fields到INSTALLED_APPS在settings.py为您的项目: # settings.py INSTALLED_APPS = [ ... ' django_editorjs_fields ', ] 用法 在模型中添加代码 # models.py from django . db import ...
django:3.0 依赖包: pillow,django-simpleui,django_summernote 测试用户(数据库已存在): root 123456 超级管理员可自己创建 author:Ericam_ 项目版本: python:3.7 django:3.0 依赖包: pillow,...
docker-django:使用docker容器运行的django项目示例
前几天写的django 简易博客开发记录,贴个链接吧 ...django 简易博客开发 1 安装、创建、配置、admin使用 http://www.cnblogs.com/cacique/archive/2012/09/29/2707976.html django 简易博客开发 2 模板和数据查询 ...
本资源下载直接可用 需要安装资源:python 3.6以上版本;django 最新版;node.js最新版;eli-ui最新 内容:前后端分离实战项目
项目名称:Smart Mall - 基于Python Django的在线商城开源项目 技术栈:主要采用Python编程语言,结合HTML和JavaScript实现前端交互。 项目构成:总计24个文件,具体包括: - Python源文件(.py):16个,涵盖了...
django-elasticsearch-dsl-drf:将Elasticsearch DSL与Django REST框架集成
Django 框架 项目 实例Django 框架 项目 实例Django 框架 项目 实例Django 框架 项目 实例Django 框架 项目 实例Django 框架 项目 实例Django 框架 项目 实例
基于DJango开发的仓库管理系统,软件架构:python 3.5、django 2.2、MySQL 基于DJango开发的仓库管理系统,软件架构:python 3.5、django 2.2、MySQL 基于DJango开发的仓库管理系统,软件架构:python 3.5、...
项目名称:myadmin-vue-django 项目简介:该项目采用Vue-Django分离架构,致力于通过实践探索前后端分离的开发模式。项目前端基于vue-admin-template模板,后端采用Django框架。 技术栈: - 主要语言:JavaScript ...
Django项目打包执行教程,亲测可用,可对python文件和Django程序进行打包发布,保护源码,Django源码保护
Django框架 实例 项目Django框架 实例 项目Django框架 实例 项目Django框架 实例 项目Django框架 实例 项目Django框架 实例 项目
django-up:使用gunicorn部署项目的Django应用
Django-model-projects:项目使用Python,而Django使用动态网址