cockpit二次开发_laravel api

cockpit二次开发_laravel api背景:最近公司要基于cockpit,来定制自己的一个服务器管理web应用。嗯。。cockpit是啥?能干嘛?我要拿它干嘛?如你所见,我此刻是懵逼的。cockpit了解我熟练的打开了百度又打开了bing哦吼,二度懵逼。经过几番了解,大概是知道了LinuxCockpit是一个基于Web界面的应用,它提供了对系统的图形化管理。因为功能集成,对服务器管理来说,可以称得上是神器,深受linux开发者的喜爱。(呵呵。。)最后我大概是知道了,公司就是想让我在人..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

目录

背景:

cockpit 了解

cockpit 安装

相关文档

代码结构

编译

编译可能报错:

解决 machines 打包失败的问题,应该是 patternfly 和 novnc 版本不一致的问题

/root/cockpit.master/pkg/networkmanager/firewall.jsx 525:61  error  Empty components are self-closing  react/self-closing-comp

修改 eslint 的配置文件,并且关掉 indent 检查,将配置文件里的 indent 项都改成 off

解决 machines 打包失败的问题,应该是 patternfly 和 novnc 版本不一致的问题

常用的几个命令

cockpit.spawn()  

cockpit.script()

 progress.strem()

cockpit.logout()

cockpit.file()


背景:

最近公司要基于cockpit,来定制自己的一个服务器管理web 应用。嗯。。cockpit是啥?能干嘛?我要拿它干嘛?

如你所见,我此刻是懵逼的。

cockpit 了解

我熟练的打开了百度

cockpit二次开发_laravel api

又打开了bing

cockpit二次开发_laravel api

哦吼,二度懵逼。

经过几番了解,大概是知道了  Linux Cockpit 是一个基于 Web 界面的应用,它提供了对系统的图形化管理。

因为功能集成,对服务器管理来说,可以称得上是神器,深受linux 开发者的喜爱。(呵呵。。)

最后我大概是知道了,公司就是想让我在人家的框架基础上二次开发一些定制化的功能呗。

会不会有啥特别搞的东西,我怀着忐忑的心,继续了下面的探索。

cockpit 安装

https://blog.csdn.net/ckeykey/article/details/102568103

https://blog.csdn.net/Magic_Ninja/article/details/90258621

这个简单找一下就有一些博客去说明如何安装了。

需要说明的是,这里是按照模块下载的,最开始可能是基础版本,只有几个功能,后面根据自己的要求去下载不同的模块,最后集成到一个页面上。

此外,cockpit 有很多版本,我这只是其中一个版本,有需要的可以看看。

å¨è¿éæå¥å¾çæè¿°

相关文档

这里有2个比较重要的文档可以参考

cockpit 指南

Hacking on Cockpit

代码结构

由于最先接触的是编译后的内容,没有源码,所以根据编译后的目录结构,整理了一下比较重要的内容。(因为开始的需求是新建一个页面,所以完全可以直接操作编译后的代码)

对照 cockpit 指南,我梳理了一下现在用到的一些比较重要的内容。

patternfly.css

主要是引入类boostrap的ui样式 patternfly.css, 再加上一些自定义的样式来实现。

cockpit.js

核心的js文件,整个项目都是基于cockpit.js 开发的

manifests.js

一个页面对应一个独立的文件夹,里面包含*.html, .manifest.json 等,其中.mainfest.json 就是通过cockpit.js 读取,合并成了一个全局的manifests.js文件。

.manifest.json 文件作用包括生成侧边栏的标题,icon,对应页面的path 路径,页面的排序等(很多功能我还没有发现,如果大家有什么相关的文档或者内容,欢迎留言分享)

po.js

语言包配置,在shell 文件夹下会有各个版本的po.*.js文件,分别对应不同国家的语言版本,例如po.en.js, po.zh_CN.js, po.hr.js 等等。这些文件也是通过cockpit.js 合并成一个全局的po.js文件。

shell.html

这里是一个主页面 ,提供头部,侧边栏,模态框等公用内容,不同页面是通过嵌入对应的iframe 文件,实现页面切换的效果。

cockpit二次开发_laravel api

随着功能的拓展,需要对更多的模块进行处理,这时候都是编译过的压缩代码就不符合要求了,所以需要去研究源码。这里Hacking on Cockpit 就很重要了。

对于前端来说源码里有大量和前端无关的配置(反正我看不懂),通过研究 webpack.config.js, 我们知道了前端部分的代码大多都在 /pkg/ 目录下。

编译

通过查看文档和测试验证,采用 git clone 从 github 上下载的 cockpit 代码,可以通过 webpack 打包,下载 tar 包或者 rpmbuild -bp 出来的代码,不能正常打包,会报很多错误不好解决,主要的区别在于 nodejs 的依赖库里面。所以采用 git clone cockpit 的方式建立打包环境得到依赖库 node_modules 目录,然后拷贝到 rpmbuild -bp 得到的目录里打包,具体步骤(由于我们的环境不一样,可能有些地方存在差异):
1. 得到 github 的 cockpit 源码的打包环境
    git clone https://github.com/cockpit-project/cockpit
    cd cockpit
    git checkout rhel-8.1
    ./autogen.sh –prefix=/usr –enable-debug
    make

2. 将得到的打包环境里的打包相关内容烤包到 /root/rpmbuild/BUILD/cockpit-196.3
   cp -aR eslint-plugin-cockpit /root/rpmbuild/BUILD/cockpit-196.3
   cp -aR .eslin* /root/rpmbuild/BUILD/cockpit-196.3
   
   mv /root/rpmbuild/BUILD/cockpit-196.3/node_modules /root/rpmbuild/BUILD/cockpit-196.3/node_modules.bak
   cp -aR node_modules /root/rpmbuild/BUILD/cockpit-196.3
   
3. 打包一个模块:NODE_ENV=development SRCDIR=`pwd` BUILDDIR=`pwd` timeout 15m ./tools/missing ./tools/webpack-make -d dist/apps/Makefile.deps ./webpack.config.js
   打包所有模块:for i in `ls dist/*/*.deps`;do mod=$(echo $i|awk -F/ ‘{print $2}’);echo “process $mod”;NODE_ENV=development SRCDIR=`pwd` BUILDDIR=`pwd` timeout 15m ./tools/missing ./tools/webpack-make -d dist/$mod/Makefile.deps ./webpack.config.js; [ $? -ne 0 ] && break;done
   
   仍然报错的模块:pcp ssh 报同一个错误,webpack 配置不一致,暂时不解决

编译可能报错:

  1. 解决 machines 打包失败的问题,应该是 patternfly 和 novnc 版本不一致的问题

    1.  vim ./node_modules/@patternfly/react-console/dist/esm/VncConsole/VncConsole.js 将 init_logging 改为 initLoggint
  2. /root/cockpit.master/pkg/networkmanager/firewall.jsx 525:61  error  Empty components are self-closing  react/self-closing-comp

    1.  这是因为 eslint 格式检查问题报的错误,可以自动修改,修复方法:
          [root@localhost cockpit.master]# pwd
          /root/cockpit.master
          [root@localhost cockpit.master]# eslint –color pkg/networkmanager/*.jsx –fix
          [root@localhost cockpit.master]# eslint –color pkg/systemd/*.jsx –fix 

  3. 修改 eslint 的配置文件,并且关掉 indent 检查,将配置文件里的 indent 项都改成 off

  4. 解决 machines 打包失败的问题,应该是 patternfly 和 novnc 版本不一致的问题

    1. vim ./node_modules/@patternfly/react-console/dist/esm/VncConsole/VncConsole.js 将 init_logging 改为 initLoggint

常用的几个命令

cockpit.js: Spawning Processes

用来处理数据的交互,可以读,写命令行,查看日志等。

cockpit.spawn()

// 这里的 '--get' '--json' 属于接口的参数,需要后台给到
cockpit.spawn(["/usr/lib/kkkk/bin/kkkkk-menu", "--get", "--json"])

Jetbrains全家桶1年46,售后保障稳定

cockpit.script()

//如果是shell 脚本,则使用script
cockpit.script(["sh /tmp/cockpit.sh"])

 progress.strem()

//在流程具有标准输出时要调用的处理程序。该处理程序将被多次调用。无论处理是否最终成功退出,都将调用处理程序。
//可以用来查看日志
let progress = cockpit.script(["sh /tmp/cockpit.sh"]);
progress.stream(res=>{
    console.log(res)
})

cockpit.logout()

退出cockpit

cockpit.file()

获取一个文件的信息

const file = cockpit.file(filePath)

// 替换
file.replace(configString)

// 读取
file.read()

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210121.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu 18.04 安装 PyCharm[通俗易懂]

    Ubuntu 18.04 安装 PyCharm[通俗易懂]部分摘抄自:https://blog.csdn.net/zhuanshu666/article/details/735548851.下载PyCharm安装包1)进入PyCharm官网,选择Professional专业版,直接点击DOWNLOAD,如图1;…

    2022年6月27日
    33
  • BigDecimal.setScale用法总结

    1. BigDecimalnum1=newBigDecimal(2.225667);//这种写法不允许,会造成精度损失2. BigDecimalnum2=newBigDecimal(2);//这种写法是可以的3. BigDecimalnum=newBigDecimal("2.225667");//一般都会这样写最好4. intcount=num.scale();  …

    2022年4月5日
    55
  • java栈帧里面的储存的内容_java创建一个栈

    java栈帧里面的储存的内容_java创建一个栈文章转载自:http://www.tuicool.com/articles/URZrMnbjvm为每个新创建的线程都分配一个堆栈。堆栈以帧为单位保存线程的状态。jvm对堆栈只进行两种操作:以帧为单位的压栈和出栈操作。栈帧(StackFrame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(VirtualMachineStack)的栈元素。栈帧存储了方法的…

    2022年9月5日
    2
  • 什么是IDOR(不安全的直接对象引用)

    什么是IDOR(不安全的直接对象引用)自从2010年开始,不安全的直接对象引用(IDOR)就已经成为了OWASPTop10Web应用安全风险中影响程度排名第四的安全漏洞了。IDOR将允许一名授权用户获取其他用户的信息,意指一个已经授权的用户通过更改访问时的一个参数,从而访问到了原本其并没有得到授权的对象。Web应用往往在生成Web页面或服务时会用它的真实名字,且并不会对所有目标对象的请求访问进行用户权限检测,所以这就造成了不安…

    2022年6月12日
    58
  • netdata mysql_Netdata介绍及安装部署

    netdata mysql_Netdata介绍及安装部署Netdata是一款Linux性能实时监测工具。Netdata是Linux系统实时性能监测工具,提供web界面的界面视角。它用可视化的手段,将被监测者最细微的细节,展现了出来。这样,你便可以清晰地了解你的系统和应用程序此时的状况。优美的界面:bootstrap框架下的控制界面自定义的控制界面:你可以使用简单的HTML代码去自定义控制界面(不需要使用javascript)极其的快速而高效:程序…

    2025年7月5日
    0
  • unity 三维地球_three.js地球

    unity 三维地球_three.js地球本数字地球全部由作者自由开发完成,未使用任何第三方插件,拥有完全知识产权。2021年10月9日更新已支持离线版高程数据和离线卫星影像数据。2021年1月22日更新全球任意位置模型可正常加载,无变形抖动。2021年12月15日更新日出、日落、大气散射、蓝天效果。说明这个不是GIS软件,是一个带地形的三维地球。2021年11月24日更新支持。2021年11月15日更新支持。,运行流畅无卡顿,占用内存小,最大等级可达到地图20级。在线加载全球地形,也可。…

    2022年9月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号