`
xiaolin0199
  • 浏览: 573144 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

NoVNC的使用之二: 将Novnc整合进django项目

 
阅读更多

 

上一篇已经讲了如何让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

 

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)

 



 

 

  • 大小: 111.5 KB
分享到:
评论

相关推荐

    noVncDjangoPoC:用于Websockify的Django身份验证插件的PoC

    noVnc Django PoC Websockify的Django身份验证插件的PoC。 用法: 打开两个端子。 在这两个目录中,您都需要进入“ authenticated_websocket_django”目录。 在一个终端中运行Web服务器: python ./manage.py ...

    Django+Vue:Python Web全栈开发-Django4.1教程

    首先,我们先来认识Django: Django是一个高级的Python Web框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django负责处理网站开发中麻烦的部分,可以专注于编写应用程序,而无需重新开发。 接...

    Django框架详解,Django的优缺点.zip

    django:Django框架详解,Django的优缺点.zip django:Django框架详解,Django的优缺点.zip django:Django框架详解,Django的优缺点.zip django:Django框架详解,Django的优缺点.zip django:Django框架详解,...

    使用python的django开发的一个商城项目源码.zip

    使用python的django开发的一个商城项目源码 使用python的django开发的一个商城项目源码 使用python的django开发的一个商城项目源码 使用python的django开发的一个商城项目源码 使用python的django...

    Django实战入门项目.rar

    14. **部署**:学习如何将Django项目部署到服务器,如使用Nginx和Gunicorn,或者使用Docker容器化部署。 15. **错误调试与日志记录**:学习如何处理和调试Django中的错误,以及如何配置日志系统以跟踪应用程序的...

    django项目django+vue项目.zip

    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语言开发,辅以HTML和CSS进行前端设计。 文件概览:总计174个文件,包括以下类型: - pyc文件(已编译的Python文件):50个 - py文件...

    django项目使用dwebsocket案例

    **Django项目与dwebsocket结合使用案例** 在Web开发中,实时通信的需求日益增长,WebSocket协议因其双向通信、低延迟的特性,成为了实现这一需求的重要工具。本案例将详细介绍如何在Django项目中集成dwebsocket库,...

    Django项目.pdf

    【Django项目开发详解】 本项目是一份关于Django商城开发的详细资料,适用于未来的查阅。...通过这样的实践,开发者可以深入理解Django框架的使用,以及如何将多种技术整合到一个完整的电商项目中。

    详解django+django-celery+celery的整合实战

    ### 详解 Django + Django-Celery + Celery 的整合实战 #### 一、Celery简介与功能概述 ...以上内容涵盖了 Django 项目与 Celery 整合的基本流程和实践操作,希望能够帮助读者理解和掌握如何在实际项目中应用 Celery。

    Django框架基础教程(一):简单介绍PythonDjango框架.pdf

    - **新建项目**:`django-admin.py startproject project-name` 或 `django-admin startproject project-name` - **新建APP**:`python manage.py startapp app-name` 或 `django-admin.py startapp app-name` - ...

    Django网上书店项目.zip

    【Django网上书店项目】是一个基于Django框架开发的在线图书销售平台的示例项目,旨在帮助学习者理解和掌握Django在实际应用中的工作流程。这个项目包括了前端界面和后端逻辑,同时预置了数据库,使得用户可以直接...

    基于Python+Django+MySQL+Redis的仿天天生鲜商城源码+项目说明.zip

    注:本项目适用于Django初学者,作为练习学习使用。该项目是传智播客Python教程中的生鲜电商的项目,并在其中的一些地方做了简化。 主要技术栈 Python + Django + MySQL + Redis + Celery 注:后台管理系统直接...

    Python基于Django的实战项目源码——美多商城.zip

    Python基于Django的实战项目源码——美多商城 Python基于Django的实战项目源码——美多商城 Python基于Django的实战项目源码——美多商城 Python基于Django的实战项目源码——美多商城 Python基于Django的...

    django+scrapy结合

    在IT行业中,构建高效的数据采集系统常常涉及到多个框架的整合使用。本篇文章将详细探讨如何将两个强大的Python库——Django和Scrapy结合,以实现通过Django的Web界面控制Scrapy爬虫的运行,并将爬取的数据存入...

    Django-商城项目

    Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目Django-商城项目...

    部署Django项目

    安装Django: 首先,需要在服务器上安装Python环境,因为Django是用Python编写的。一旦Python安装完成,就可以通过Python的包管理工具pip安装Django。安装Django时,可以通过命令行工具使用如下命令: ``` pip ...

    Python Django Demo项目

    【Python Django Demo项目】是一个适合初学者入门的实践项目,旨在帮助学习者了解和掌握Django框架的基础知识和核心概念。Django是一个用Python编写的高级Web开发框架,它遵循模型-视图-控制器(MVC)设计模式,强调...

    python课程设计基于python3.7+Django3.0的个人博客系统源码.zip

    django:3.0 依赖包: pillow,django-simpleui,django_summernote 测试用户(数据库已存在): root 123456 超级管理员可自己创建 author:Ericam_ 项目版本: python:3.7 django:3.0 依赖包: pillow,...

Global site tag (gtag.js) - Google Analytics