floodlight控制器用PHP重新写webUI

大家都知道floodlight本身的webUI是localhost/ui/index.html

1.我试着用我的Linux环境架另一个服务器来提供php的环境。可以参考我的另一篇文章。关于怎么架构lamp。

2.Proxy 我们在宿主机上又搭建了一台服务器,后端即Command
Proxy负责转发前端Web Interface的操作请求给Floodlight。

由于ajax不能跨域请求,所以建立了一个服务器端代理。Command Proxy是我们用PHP编写的一个后端脚本,它用来转发Web Interface的请求或者执行Web Interface发送的命令。

3.接着把整个PHP写的webUI放在var/www/html里面。就是floodlight那个resource里面那个web;

4.然后解决floodlight与webUI之间的通信问题

在floodlight里面改路径:

/**

*    Copyright 2013, Big Switch Networks, Inc.

*

*    Licensed under the Apache License, Version 2.0 (the "License"); you may

*    not use this file except in compliance with the License. You may obtain

*    a copy of the License at

*

*         http://www.apache.org/licenses/LICENSE-2.0

*

*    Unless required by applicable law or agreed to in writing, software

*    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

*    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the

*    License for the specific language governing permissions and limitations

*    under the License.

**/

package net.floodlightcontroller.ui.web;

import java.util.ArrayList;

import java.util.Collection;

import java.util.Map;

import org.restlet.Client;

import org.restlet.Context;

import org.restlet.Restlet;

import org.restlet.data.Protocol;

import org.restlet.resource.Directory;

import org.restlet.routing.Router;

import net.floodlightcontroller.core.module.FloodlightModuleContext;

import net.floodlightcontroller.core.module.FloodlightModuleException;

import net.floodlightcontroller.core.module.IFloodlightModule;

import net.floodlightcontroller.core.module.IFloodlightService;

import net.floodlightcontroller.restserver.IRestApiService;

import net.floodlightcontroller.restserver.RestletRoutable;

public class StaticWebRoutable implements RestletRoutable, IFloodlightModule {

private IRestApiService restApi;

@Override

public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {

Collection<Class<? extends IFloodlightService>> l =

new ArrayList<Class<? extends IFloodlightService>>();

l.add(IRestApiService.class);

return l;

}

@Override

public Collection<Class<? extends IFloodlightService>> getModuleServices() {

return null;

}

@Override

public Map<Class<? extends IFloodlightService>, IFloodlightService>

getServiceImpls() {

return null;

}

@Override

public void init(FloodlightModuleContext context)

throws FloodlightModuleException {

restApi = context.getServiceImpl(IRestApiService.class);

}

@Override

public void startUp(FloodlightModuleContext context) {

// Add our REST API

restApi.addRestletRoutable(this);

}

@Override

public Restlet getRestlet(Context context) {

Router router = new Router(context);

router.attach("", new Directory(context, "clap://var/www/html/floodlightUI/index.html"));

context.setClientDispatcher(new Client(context, Protocol.CLAP));

return router;

}

@Override

public String basePath() {

return "/floodlightUI/";

}

}

在web UI里面加入一个manifest.mf (可自行Google)

Manifest-Version: 1.0

Main-Class: /home/ubuntu/floodlight/src/main/java/net/floodlightcontroller/core/Main.java

Class-Path:/home/ubuntu/floodlight/lib/oro/jakarta-oro-2.0.8.jar

/home/ubuntu/floodlight/lib/args4j-2.0.16.jar

/home/ubuntu/floodlight/lib/asm-3.0.jar

/home/ubuntu/floodlight/lib/asm-tree-3.0.jar

/home/ubuntu/floodlight/lib/cglib-nodep-2.2.2.jar

/home/ubuntu/floodlight/lib/cobertura-1.9.4.1.jar

/home/ubuntu/floodlight/lib/concurrentlinkedhashmap-lru-1.2.jar

/home/ubuntu/floodlight/lib/derby-10.9.1.0.jar

/home/ubuntu/floodlight/lib/findbugs-annotations-2.0.1.jar

/home/ubuntu/floodlight/lib/findbugs-jsr305-2.0.1.jar

/home/ubuntu/floodlight/lib/guava-13.0.1.jar

/home/ubuntu/floodlight/lib/jackson-annotations-2.1.4.jar

/home/ubuntu/floodlight/lib/jackson-core-2.1.4.jar

/home/ubuntu/floodlight/lib/jackson-databind-2.1.4.jar

/home/ubuntu/floodlight/lib/jackson-dataformat-csv-2.1.4.jar

/home/ubuntu/floodlight/lib/jackson-dataformat-smile-2.1.4.jar

/home/ubuntu/floodlight/lib/jackson-dataformat-xml-2.1.4.jar

/home/ubuntu/floodlight/lib/jackson-dataformat-yaml-2.1.4.jar

/home/ubuntu/floodlight/lib/jdeb-1.0.1.jar

/home/ubuntu/floodlight/lib/junit-4.8.2.jar

/home/ubuntu/floodlight/lib/jython-2.5.2.jar

/home/ubuntu/floodlight/lib/libthrift-0.9.0.jar

/home/ubuntu/floodlight/lib/log4j-1.2.9.jar

/home/ubuntu/floodlight/lib/logback-classic-1.0.0.jar

/home/ubuntu/floodlight/lib/logback-core-1.0.0.jar

/home/ubuntu/floodlight/lib/netty-3.2.6.Final.jar

/home/ubuntu/floodlight/lib/objenesis-1.2.jar

/home/ubuntu/floodlight/lib/org.easymock-3.1.jar

/home/ubuntu/floodlight/lib/org.restlet-2.2M3.jar

/home/ubuntu/floodlight/lib/org.restlet.ext.jackson-2.2M3.jar

/home/ubuntu/floodlight/lib/org.restlet.ext.simple-2.2M3.jar

/home/ubuntu/floodlight/lib/org.restlet.ext.slf4j-2.2M3.jar

/home/ubuntu/floodlight/lib/packetstreamer-thrift.jar

/home/ubuntu/floodlight/lib/simple-5.1.1.jar

/home/ubuntu/floodlight/lib/slf4j-api-1.6.4.jar

然后在浏览器里面就可以看到PHP写的网页了

查看网络拓扑图

时间: 2024-10-27 23:20:39

floodlight控制器用PHP重新写webUI的相关文章

SDN 实践之floodlight控制器统计流量种类

SDN 实践之floodlight控制器统计流量种类 @温州大学12网工蒋暕青.郑明社 在floodlight控制器统计流量的基础上接着把packed-in流量的种类也区分一下.counter这个类琢磨了一个月终于有些会用了. 下面贴代码: 分两个.java 1. package edu.wzu.steve.trafficanalyser; import java.util.ArrayList; import java.util.Collection; import java.util.Hash

(sdn)在floodlight控制器中统计进入packed-in数量的代码(改)

在floodlight控制器中统计进入packed-in数量的代码: package edu.wzu.steve.trafficanalyser; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import org.restl

SDN开发之基于floodlight控制器做QoS策略

---温州大学 12网络工程 在floodlight中写主要策略.通过python脚本与ubuntu console界面交互 利用floodlight提供的restAPI开发webUI界面 JAVA部分代码: package net.floodlightcontroller.qos; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import ja

在floodlight控制器中统计进入packed-in数量的代码(sdn)

<p class="NewStyle15"><span style="font-family: 'Times New Roman'; letter-spacing: 0pt; font-size: 10.5pt;"><o:p></o:p></span></p><p class="NewStyle15" style="text-indent:24.0000pt;

Spring 如何在控制器和视图中写路径

1 视图里如何写路径变量 路径写在form标签里 1 <form action="#" th:action="@{/update/{id}(id=${user.id})}" th:object="${user}" method="post"> 当然还有一种方法,就是写在a标签中 1 <p><a href="/allUser">用户列表</a></p>

SDN控制器测试专题五:Floodlight性能测试报告(上)

上一篇重点介绍了<SDN控制器测试专题四:Floodlight南向接口测试报告(下)>,给出了控制器的功能测试结果.本篇将根据确定的性能测试项,对floodlight控制器性进行逐项测试验证,并会给出测试结果. 1 测试目的 验证floodlight v1.0控制器的以下几个性能情况: ■验证控制器支交换机上线的最大规模: ■验证控制器支持的交换机上线的最佳数量: ■验证控制器流表下发的速度: ■验证控制器流表下发时延: ■验证控制支持的最大流表数量: ■验证控制器mac地址的学习速度: ■验

使用自定义 URL 实现控制器之间的跳转-b

一个app往往有很多界面,而界面之间的跳转也就是对应控制器的跳转,控制器的跳转一般有两种情况 push 或者 modal,push 和 modal 的默认效果是系统提供的 文章配图 1. 概述 系统提供的push和modal方法有时并不能满足实际需求.比如,我们需要根据服务器返回的字段跳到指定的控制器,难道作判断吗?那显然不是最佳解决方案. 其实我们可以这样: NSString *urlStr = @"dariel://twoitem?name=dariel&userid=213213&

创建控制器、控制器加载view过程、控制器view的生命周期、多控制器

在介绍四大对象的那篇博客中,可以基本了解到程序启动的过程: main-->UIApplicationMain-->创建UIApplication的实例和app代理AppDelegate的实例并设置好代理--->在程序启动后,也就是启动画面显示之后, AppDelegate创建UIWindow(可以是自动创建的,也可以手动创建) 现在讨论的问题是,如何创建控制器并设置为UIWindow的根控制器,然后加载出控制器中的view并显示出来. 本文目录 1.创建控制器的三种方式 2.控制器的vi

Laravel5.1 -控制器(初步了解)

首先道个歉 这篇笔记是前两天就应该写的,可大K有点事儿要忙 就耽误了,今天抽空学了学控制器,并写个笔记分享下. 为什么要使用控制器 像我们之前写一些逻辑呢都是在Route(路由)中,搞得Route文件特别庞大,其实我们应该把这些逻辑都抽到一个控制器里,路由分发后到控制器,控制器做相应的操作,比如关于后台的逻辑应该抽到AdminController中,Route文件只管分发. 1 如何创建一个控制器 1.1.1 创建RESTful控制器 至于什么是RESTful?自行百度- -,我先简单说下,它里