首页
留言
友链
关于
Search
1
思源笔记docker私有化部署及使用体验分享
3,028 阅读
2
windows11 远程提示:为安全考虑,已锁定该用户帐户,原因是登录尝试或密码更改尝试过多。
1,284 阅读
3
Pointer-Focus:一款功能强大的教学、录屏辅助软件
1,010 阅读
4
解决 nginxProxyManager 申请证书时的SSL失败问题
994 阅读
5
使用cspell对项目做拼写规范检查
824 阅读
Web前端
CSS
JavaScript
交互
Vue
小程序
后端
Java
Python
运维
项目
生活
其他
转载
软件
职场
登录
Search
标签搜索
docker
DevOps
magic-boot
Linux
酷壳
frp
RabbitMQ
gitlab
Node
git
工具
MybatisPlus
clickhouse
Syncthing
规范
前端
产品
nginx
markdown
axios
朱治龙
累计撰写
156
篇文章
累计收到
10
条评论
首页
栏目
Web前端
CSS
JavaScript
交互
Vue
小程序
后端
Java
Python
运维
项目
生活
其他
转载
软件
职场
页面
留言
友链
关于
搜索到
26
篇与
后端
的结果
2022-09-01
数据库设计挑战问题
缘起聊天内容整理文字如下问题现有如下表:作业记录表T1作业ID作业日期机时记录时间Job0012022/01/0110002022/01/02Job0022022/01/0120002022/01/02作业扣费表T2作业ID作业日期机时扣费扣费时间Job0012022/01/0110001002022/01/02Job0022022/01/0120002002022/01/02在正常情况下,一切可以工作得很好,但是事实并非理想,作业调度器也会出故障,导致作业机时发生变化。例如在 2022/01/03 重新采集作业时 Job001 的机时从 1000 又变回了 500,但系统对 Job001 已完成了 1000 机时的扣费问题:如何设计数据库表在不修改已写入的历史记录的前提下,解决作业机时发生变化的问题?情境说明:机时变化是不可抗力因素,1000是错误的,后来500是正确的,但也可能最终200是正确的最终时间其实不确定,如果非要给个期限,可以限定为一年内变动都是可能发生的设计字段可以随意,但已存在的记录数据不能变化了增加新表,新字段都不受任何限制综合要求如下:前提:可以增加新表,可以在原先这两个表基础上加字段,但是不能修改或者删除这两个表已有的字段目标:以当前机时作为扣费依据,历史多扣或者少扣需要进行补扣或者补偿我的解答综上问题,我的解决思路如下:1、对最关键的作业记录表增加内容Hash字段,内容为 md5(作业ID+作业日期+机时),该字段可作为主键,由于数据在入库前用于计算Hash的内容都是已知的,作为主键字段可以最大程度的利用主键索引提升检索效率。如果这个Hash数据不存在则在下次 作业调度器 同步作业记录时自动计入 T1 表,如果已存在则直接忽略2、T2 表关联 T1 表的 DataHash字段,主要用于判断作业是否已扣费,便于后续扣费任务的执行3、增加 「异常作业退费记录表T3」,用于对之前已扣费的作业进行退费行为记录。4、若出现重复的情况(作业ID跟作业日期相同),将上一次作业(以记录时间排序)已扣费记录进行退费,并记入T3表调整后的表结构记录如下:作业记录表T1DataHash字段内容为:md5(作业ID+作业日期+机时),如:md5(Job001-2022/01/01-1000)作业ID作业日期机时记录时间DataHashJob0012022/01/0110002022/01/0215dc9093ab0febf9aff2810891ef1a64Job0022022/01/0120002022/01/02fa8f51fb2f36087a9b4c6deacf5f1dd2Job0012022/01/015002022/08/304ec0fea71753f4a7585dc4cf4dd460f2作业扣费表T2作业ID作业日期机时扣费扣费时间作业记录DataHashJob0012022/01/0110001002022/01/0215dc9093ab0febf9aff2810891ef1a64Job0022022/01/0120002002022/01/02fa8f51fb2f36087a9b4c6deacf5f1dd2Job0012022/01/01500502022/08/304ec0fea71753f4a7585dc4cf4dd460f2异常作业退费记录表T3作业ID作业日期机时退费退费时间作业记录DataHashJob0012022/01/0110001002022/08/3015dc9093ab0febf9aff2810891ef1a64其他小伙伴的解答胡大神毛老师
2022年09月01日
43 阅读
0 评论
0 点赞
2022-04-21
Java 中加密算法的编程使用-学习笔记
Base64 编码的编程使用密码学综述密码学基本功能1)机密性2)鉴别3)报文完整性4)不可否认性基本模型密码学算法的分类消息编码: Base64消息摘要: MD类、SHA类、MAC对称密码: DES、3DES、 AES非对称密码: RSA、DH密钥交换数字签名: RSASignature、DSASignature密码学五元组明文密文加密算法(公开)解密算法(公开)密钥密钥密钥和密码的巨大区别密钥!=密码Key != Password密钥+规则==密码在密码破解者看来,拿到密钥就等于有了密码!所以,重点在密钥对称密码(传统密码)与非对称密码(公钥密码)对称密码:加解密使用相同密钥的密码体制非对称密码:加解密使用不同的密钥一公钥与私钥Java编程中常用类消息编码 BASE64Encoder、BASE64Decoder消息摘要 MessageDigest对称密码 KeyGenerator、SecretKey、 Cipher非对称密码 KeyPairGenerator、KeyFactory、 KeyPair、PublicKey、 PrivateKey、 Cipher数字签名 SignatureBase64 算法的编程使用Base64编码示例 密文: UGFyYXRlcmE=明文: ParateraBase64算法定义 Base64是一种基于64个字符的编码算法,以任意8位字节序列组合的描述形式,这种形式不易直接识别。经Base64编码后的字符串的字符数是以4为单位的整数倍。Base64 密钥4.Base64 编程使用引入sun.misc.BASE64Decoder.jar1、加密:byte[] data = "Paratera".getBytes(); String result= new BASE64Encoder().encode(data) ;2、解密:byte[] result = new BASE64Decoder().decodeBuffer(data) ;Base64 算法的实际应用使用Telnet 发送邮件:pubLic class Base64Util { public static String enc ryptBase64(byte[] data){ return new BASE64Encoder().encode(data); } public static String dec ryptBase64(String data) throws IOException{ byte[] resultBytes = new BASE64Decoder().decodeBuffer(data); return new String( resultBytes); } } pubLic class SMTPMain { public static void main(String[] args) { //用户名密码 String sender = "cnsmtp01@163.com"; String receiver = "cnsmtp02@163. com"; String password = "computer"; //将用户名和密码进行Base64编码 String userBase64 = Base64Util.encryptBase64(sender.substring(0, sender.index0f("@")).getBytes()); String passBase64 = Base64Util.encryptBase64(password.getBytes()); try { Socket socket = new Socket("smtp.163.com", 25); InputStream inputStream = socket.getInputStream(); OutputStream outputStream = socket.getOutputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); PrintWriter writter = new PrintWriter(outputStream, true); System.out.println(reader.readLine()); // HELO writter.println("HELO Paratera"); System.out.println(reader.readLine()); // AUTH LOGIN >> >Base64 writter.println( "AUTH LOGIN"); System.out.println(reader.readLine()); writter.println(userBase64); System.out.println(reader.readLine()); writter.println(passBase64); System.out.println(reader.readLine()); // Set "MAIL FROM" and "RCPT TO" writter.println("MAIL FROM:<" + sender + ">"); System.out.println(reader.readLine()); writter.println( "RCPT TO:<" + receiver + ">"); System.out.println(reader.readLine()); // Set "DATA" writter.println("DATA"); System.out.println(reader.readLine()); writter.println("SUBJECT:你好并行集团"); writter.println("FROM:" + sender); writter.println("T0:" + receiver); writter.println("Content-Type: text/plain;charset=\"gb2312\""); writter.println(); writter.println("北京并行科技股份有限公司(简称并行科技,PARATERA,股票代码:839493,挂牌新三板)成立于2007年,是国内领先的超算云服务和运营服务提供商,提供超算公有云服务、超算行业云服务、AI云服务、设计仿真云和计算资源建设及运营服务。"); writter.println("."); writter.println(""); System.out.println(reader.readLine()); //发送完毕了, 和服务器拜拜 writter.println("RSET"); System.out.println(reader.readLine()); writter.println("QUIT"); System.out.println(reader.readLine()); } catch (Exception e) { e.printStackTrace(); } } } 消息摘要的编程使用消息摘要概述唯一对应一个消息或文本的固定长度的值,由一个单向Hash加密函数对消息进行作用而产生消息摘要的分类:(1) MD (Message Digest) :消息摘要算法(2) SHA (Secure Hash Algorithm) : 安全散列算法(3) MAC (Message Authentication Code) :消息认证码算法消息摘要的日常应用验证数据完整性(防止在传输途中被篡改)MD算法的编程使用为计算机安全领域广泛使用的一种散列函数,用以提供消息的 完整性 保护MD系列算法(JDK)算法数据长度摘要长度MD2任意128MD5任意128MD算法编程使用核心代码//初始化MessageDigest MessageDigest md5 = MessageDigest.getInstance("MD5"); //更新, data为原始数据 md5.update(data); /生成摘要 byte[] result= md5.digest(); 完整示例代码:// ---------1.BytesToHex.java--------- package net.wljy.crypt.util; /** * 字节转16进制 * * @author paratera * */ public class BytesToHex { public static String fromBytesToHex(byte[] resultBytes) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < resultBytes.length; i++) { if (Integer.toHexString(0xFF & resultBytes[i]).length() == 1) { builder.append("0").append(Integer.toHexString(0xFF & resultBytes[i])); } else { builder.append(Integer.toHexString(0xFF & resultBytes[i])); } } return builder.toString(); } } // ---------2.MessageDigestUtil.java--------- package net.wljy.crypt; import java.io.File; import java.io.FileInputStream; import java.security.DigestInputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import net.wljy.crypt.util.BytesToHex; public class MessageDigestUtil { /** * MD5字符串加密 * @param data 待加密字符串 * @return */ public static String encryptMD5(byte [] data) { MessageDigest md5; try { md5 = MessageDigest.getInstance("MD5"); md5.update(data); byte[] resultBytes = md5.digest(); return BytesToHex.fromBytesToHex(resultBytes); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } /** * 获取文件MD5值 * @param filePath 文件路径 * @return */ public static String getMD5ofFile(String filePath) { FileInputStream fis; try { fis = new FileInputStream(new File(filePath)); DigestInputStream dis = new DigestInputStream(fis, MessageDigest.getInstance("MD5")); byte[] buffer = new byte[1024]; int read = dis.read(buffer, 0, 1024); while(read != -1) { read = dis.read(buffer, 0, 1024); } MessageDigest md = dis.getMessageDigest(); return BytesToHex.fromBytesToHex(md.digest()); } catch (Exception e) { e.printStackTrace(); } return null; } } // ---------3.MD5Test.java--------- package net.wljy.crypt; public class MD5Test { public static final String DATA = "并行集团"; public static void main(String[] args) { String md5Str = MessageDigestUtil.encryptMD5(DATA.getBytes()); System.out.println(md5Str); String fileMd5Str = MessageDigestUtil.getMD5ofFile("D:/API接口文档.html"); System.out.println("文件MD5:" + fileMd5Str); } } SHA算法的编程使用安全哈希算法,主要适用于数字签名标准里面定义的数字签名算法SHA算法种类算法数据长度摘要长度SHA-1任意160SHA-256任意256SHA-384任意384SHA-512任意512核心代码//初始化MessageDigest MessageDigest sha = MessageDigest.getInstance("SHA-x"); // SHA-x需替换为具体的算法名称 //更新, data为原始数据 sha.update(data); /生成摘要 byte[] result= sha.digest(); 示例代码: /** * 计算某一数据的hash摘要值 * @param data * @return */ public static String encryptSHA(byte [] data) { try { MessageDigest sha = MessageDigest.getInstance("SHA-256"); sha.update(data); return BytesToHex.fromBytesToHex(sha.digest()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; }HMAC算法的编程使用引言:单一MD或SHA算法缺点? 摘要值容易被篡改!结合了MD5和SHA算法的优势,同时用 密钥 对摘要加密,是一种更为安全的消息摘要算法。HMAC算法的种类算法数据长度摘要长度HmacMD5任意128HmacSHA1任意160HmacSHA256任意256HmacSHA384任意384HmacSHA512任意512如何生成密钥KeyGenerator!核心代码1.构建密钥//初始化KeyGenerator KeyGenerator keyGen = KeyGenerator.getInstance("HmacMD5"); //产生密钥 SecretKey secretKey = keyGen.generateKey(); //得到密钥字节数组 byte[] key= secretKey.getEncoded(); 2.执行消息摘要//从字节数组还原密钥 SecretKey secretKey = new SecretKeySpec(key, "HmacMD5"); //实例化Mac Mac mac = Mac.getInstance("HmacMD5"); //用密钥初始化Mac mac.init(secretKey); //执行消息摘要 byte[] result = mac.doFinal(data); 散列函数特征:(1)输入任意长度数据,输出固定长度散列值,计算很容易,过程不可逆(2)对于某数据,其散列值固定(3)两个数据不同,则对应的散列值也不同(4)两个散列值不同,则对应的原始输入数据也不同2.散列函数破解(1)真破解:2005年2月,王小云教授破解了SHA-1 算法,已知数据A和其散列值,找到了另一个数据B与A的散列值相同(2)假破解:根据数据库查询散列值,找到其对应的数据明文,根本在于数据库的查询!对称密码的编程使用对称密码概述1、加密密钥和解密密钥相同,对于大多数对称密码算法,加解密过程互逆2、加解密通信模型3、特点:算法公开、计算量小、加密速度快、加密效率高4、弱点:双方都使用同样密钥,安全性得不到保证5、分组密码工作模式(1) ECB: 电子密码本(2) CBC: 密文链接(3) CFB: 密文反馈(4) OFB:输出反馈(5) CTR: 计数器6、分组密码填充方式(1) NoPadding(2) PKCS5Padding(3) ISO10126Padding7、常用对称密码:(1) DES (Data Encryption Standard)(2) 3DES (Triple DES、DESede)3重DES(3) AES (Advanced Encryption Standard)DES算法的编程使用DES:数据加密标准,是对称加密算法领域中的典型算法特点:密钥偏短(56位)、 生 命周期短JDK实现| 算法 | 密钥长度 | 默认密钥长度 | 工作模式 | 填充方式 |DES5656ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128NoPadding、PKCS5Padding、ISO10126Padding4、示例代码// ---------1.DESUtil.java--------- package net.wljy.crypt.des; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class DESUtil { /** * 生成密钥 * * @return */ public static byte[] initKey() { try { KeyGenerator keyGen = KeyGenerator.getInstance("DES"); keyGen.init(56); SecretKey secretKey = keyGen.generateKey(); return secretKey.getEncoded(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } /** * DES加密 * * @param data 要加密的数据 * @param key 密钥 * @return */ public static byte[] encrypt(byte[] data, byte[] key) { SecretKey secretKey = new SecretKeySpec(key, "DES"); try { // DES/ECB/NoPadding --> 加密方式/工作模式/填充方式,没有严格要求的场景只写加密方式即可 Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); return cipher.doFinal(data); } catch (Exception e) { e.printStackTrace(); } return null; } /** * DES加密 * * @param data 要解密的数据 * @param key 密钥 * @return */ public static byte[] decrypt(byte[] encryptedData, byte[] key) { SecretKey secretKey = new SecretKeySpec(key, "DES"); try { // DES/ECB/NoPadding --> 加密方式/工作模式/填充方式,没有严格要求的场景只写加密方式即可 Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, secretKey); return cipher.doFinal(encryptedData); } catch (Exception e) { e.printStackTrace(); } return null; } } // ---------2.DESTest.java--------- package net.wljy.crypt.des; import net.wljy.crypt.util.BytesToHex; public class DESTest { public static final String DATA = "并行集团"; public static void main(String[] args) { // 获取密钥 byte[] initKey = DESUtil.initKey(); System.out.println("secretKey:" + BytesToHex.fromBytesToHex(initKey)); // 加密数据 byte[] desResultData = DESUtil.encrypt(DATA.getBytes(), initKey); System.out.println("desResultData:" + BytesToHex.fromBytesToHex(desResultData)); // 解密数据 byte[] decryptResultData = DESUtil.decrypt(desResultData, initKey); System.out.println("decryptResultData:" + new String(decryptResultData)); } } 3DES算法的编程使用1、3DES:将密钥长度增至112位或168位,通过增加迭代次数提高安全性2、缺点:处理速度较慢、密钥计算时间较长、加密效率不高3、JDK实现算法密钥长度默认密钥长度工作模式填充方式3DES112、168168ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128NoPadding、PKCS5Padding、ISO10126Padding核心代码1、生成密钥KeyGenerator keyGen = KeyGenerator.getInstance("DESede"); keyGen.init(168); //可指定密钥长度为112或168, 默认为168 SecretKey secretKey = keyGen.generateKey(); 2.加/解密SecretKey secretKey = new SecretKeySpec(key, "DESede"); Cipher cipher = Cipher.getInstance("DESede"); cipher.init(Cipher.ENCRYPT_MODE,secretKey); byte[] cipherByte = cipher.doFinal(data); 4、完整示例代码// ---------1.TripleDESUtil.java--------- package net.wljy.crypt.tripledes; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; /** * 3DES * * @author paratera * */ public class TripleDESUtil { /** * 生成密钥 * * @return */ public static byte[] initKey() { KeyGenerator keyGen; try { keyGen = KeyGenerator.getInstance("DESede"); keyGen.init(168); // 112 168 SecretKey secretKey = keyGen.generateKey(); return secretKey.getEncoded(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } /** * 3DES加密 * * @param data 待加密数据 * @param key 密钥 * @return */ public static byte[] encrypt(byte[] data, byte[] key) { try { SecretKey secretKey = new SecretKeySpec(key, "DESede"); Cipher cipher = Cipher.getInstance("DESede"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); return cipher.doFinal(data); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 3DES解密 * * @param encrypedData 待解加密数据 * @param key 密钥 * @return */ public static byte[] decrypt(byte[] encrypedData, byte[] key) { try { SecretKey secretKey = new SecretKeySpec(key, "DESede"); Cipher cipher = Cipher.getInstance("DESede"); cipher.init(Cipher.DECRYPT_MODE, secretKey); return cipher.doFinal(encrypedData); } catch (Exception e) { e.printStackTrace(); } return null; } } // ---------2.TripleDESTest.java--------- package net.wljy.crypt.tripledes; import net.wljy.crypt.util.BytesToHex; public class TripleDESTest { public static final String DATA = "并行集团"; public static void main(String[] args) { // 获取密钥 byte[] initKey = TripleDESUtil.initKey(); System.out.println("secretKey:" + BytesToHex.fromBytesToHex(initKey)); // 加密数据 byte[] resultData = TripleDESUtil.encrypt(DATA.getBytes(), initKey); System.out.println("3DESResultData:" + BytesToHex.fromBytesToHex(resultData)); // 解密数据 byte[] decryptResultData = TripleDESUtil.decrypt(resultData, initKey); System.out.println("3DESdecryptResultData:" + new String(decryptResultData)); } } AES算法的编程使用1、AES:高级数据加密标准,能够有效抵御已知的针对DES算法的所有攻击2、特点:密钥建立时间短、灵敏性好、内存需求低、安全性高3、JDK实现算法密钥长度默认密钥长度工作模式填充方式AES128、192、256128ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128NoPadding、PKCS5Padding、ISO10126Padding核心代码1、生成密钥KeyGenerator keyGen = KeyGenerator.getInstance("AES"); keyGen.init(128); //默认128,获得无政策权限后可为192或256 SecretKey secretKey = keyGen.generateKey();2、加/解密SecretKey secretKey = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE,secretKey); // ENCRYPT_MODE:加密 || DECRYPT_MODE:解密 byte[] cipherByte = cipher.doFinal(data);政策权限文件keyGen.init(),如果给值为19或256会报错,JDK8及之前的文件可到如下地址下载政策文件:https://www.oracle.com/java/technologies/javase-jce-all-downloads.html。下载后覆盖jdk/jre/lib/security下的两个jar包即可。非对称密码的编程使用非对称密码概述1、对称密码中的密钥配送存在不安全问题2、非对称密码通信模型3、非对称密码的特征(1).需要两个密钥来进行加密和解密,分别为公钥和私钥(2).公钥和私钥相互配对,称为KeyPair4、非对称密码的优缺点(1).优点:相比于对称密码,安全性更高(2).缺点:加解密花费时间长、速度慢5、常用非对称密码:(1).DH密钥交换算法(2).RSA算法(3).EIGamal算法6、非对称密码的作用(1).密钥交换(DH)(2).加密/解密(RSA)(3).数字签名(RSA)DH 算法的编程使用RSA 算法的编程使用数字签名的编程使用0数字签名概述RSASignature 算法的编程使用DSASignature 算法的编程使用
2022年04月21日
28 阅读
0 评论
0 点赞
2022-01-21
自动化项目部署系列:③部署宝塔面板
宝塔面板是一款服务器管理软件,支持windows和linux系统,可以通过Web端轻松管理服务器,提升运维效率。例如:创建管理网站、FTP、数据库,拥有可视化文件管理器,可视化软件管理器,可视化CPU、内存、流量监控图表,计划任务等功能。宝塔官网: https://www.bt.cn/选择使用宝塔,主要是为了更方便的在线管理服务器资源。官方有提供 Docker 版本:https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=79499。但为了更好的应用于服务器管理,我将 Docker 直接安装于宿主机上。安装步骤创建宝塔根目录 /wldata/btroot 并为宝塔应用目录 /www 创建软连接[root@VM-16-6-centos wldata]# mkdir /wldata/btroot [root@VM-16-6-centos wldata]# ln -s /wldata/btroot /www [root@VM-16-6-centos wldata]#开始安装根据官网:https://www.bt.cn/bbs/thread-19376-1-1.html 使用如下命令进行安装yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh安装过程记录如下:[root@VM-16-6-centos wldata]# yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile docker-ce-stable | 3.5 kB 00:00:00 epel | 4.7 kB 00:00:00 extras | 2.9 kB 00:00:00 os | 3.6 kB 00:00:00 updates | 2.9 kB 00:00:00 Package wget-1.14-18.el7_6.1.x86_64 already installed and latest version Nothing to do --2022-01-21 16:16:44-- http://download.bt.cn/install/install_6.0.sh Resolving download.bt.cn (download.bt.cn)... 116.10.184.143, 240e:a5:4200:89::143 Connecting to download.bt.cn (download.bt.cn)|116.10.184.143|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 26258 (26K) [application/octet-stream] Saving to: ‘install.sh’ 100%[========================================================================================================>] 26,258 --.-K/s in 0.03s 2022-01-21 16:16:44 (765 KB/s) - ‘install.sh’ saved [26258/26258] install.sh: line 23: [: : integer expression expected +---------------------------------------------------------------------- | Bt-WebPanel FOR CentOS/Ubuntu/Debian +---------------------------------------------------------------------- | Copyright © 2015-2099 BT-SOFT(http://www.bt.cn) All rights reserved. +---------------------------------------------------------------------- | The WebPanel URL will be http://SERVER_IP:8888 when installed. +---------------------------------------------------------------------- Do you want to install Bt-Panel to the /www directory now?(y/n): y --------------------------------------------- Selected download node... Download node: http://dg2.bt.cn --------------------------------------------- Synchronizing system time... Fri Jan 21 16:16:52 CST 2022 Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile docker-ce-stable | 3.5 kB 00:00:00 epel | 4.7 kB 00:00:00 extras | 2.9 kB 00:00:00 os | 3.6 kB 00:00:00 updates | 2.9 kB 00:00:00 Package ntp-4.2.6p5-29.el7.centos.2.x86_64 already installed and latest version Nothing to do 21 Jan 16:16:52 ntpdate[28087]: the NTP socket is in use, exiting setenforce: SELinux is disabled Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Package wget-1.14-18.el7_6.1.x86_64 already installed and latest version Package 2:tar-1.26-35.el7.x86_64 already installed and latest version Package gcc-4.8.5-44.el7.x86_64 already installed and latest version Package 1:make-3.82-24.el7.x86_64 already installed and latest version Package zip-3.0-11.el7.x86_64 already installed and latest version Package gcc-4.8.5-44.el7.x86_64 already installed and latest version Package libxml2-2.9.1-6.el7_9.6.x86_64 already installed and latest version Package zlib-1.2.7-19.el7_9.x86_64 already installed and latest version Package zlib-devel-1.2.7-19.el7_9.x86_64 already installed and latest version Package libwebp-0.3.0-10.el7_9.x86_64 already installed and latest version Package freetype-2.8-14.el7_9.1.x86_64 already installed and latest version Package lsof-4.87-6.el7.x86_64 already installed and latest version Package pcre-8.32-17.el7.x86_64 already installed and latest version Package pcre-devel-8.32-17.el7.x86_64 already installed and latest version No package vixie-cron available. Package crontabs-1.11-6.20121102git.el7.noarch already installed and latest version Package xz-devel-5.2.2-1.el7.x86_64 already installed and latest version Resolving Dependencies --> Running transaction check ---> Package bzip2-devel.x86_64 0:1.0.6-13.el7 will be installed ---> Package c-ares.x86_64 0:1.10.0-3.el7 will be installed ---> Package freetype-devel.x86_64 0:2.8-14.el7_9.1 will be installed ---> Package gdbm-devel.x86_64 0:1.10-8.el7 will be installed ---> Package icu.x86_64 0:50.2-4.el7_7 will be installed ---> Package libcurl-devel.x86_64 0:7.29.0-59.el7_9.1 will be installed epel/7/x86_64/filelists_db | 12 MB 00:00:01 os/7/x86_64/filelists_db | 7.2 MB 00:00:00 updates/7/x86_64/filelists_db | 7.2 MB 00:00:00 ---> Package libdb4-devel.x86_64 0:4.8.30-13.el7 will be installed --> Processing Dependency: libdb4(x86-64) = 4.8.30-13.el7 for package: libdb4-devel-4.8.30-13.el7.x86_64 ---> Package libffi-devel.x86_64 0:3.0.13-19.el7 will be installed ---> Package libicu-devel.x86_64 0:50.2-4.el7_7 will be installed ---> Package libjpeg-turbo-devel.x86_64 0:1.2.90-8.el7 will be installed ---> Package libpcap-devel.x86_64 14:1.5.3-12.el7 will be installed ---> Package libpng-devel.x86_64 2:1.5.13-8.el7 will be installed ---> Package libwebp-devel.x86_64 0:0.3.0-10.el7_9 will be installed ---> Package libxml2-devel.x86_64 0:2.9.1-6.el7_9.6 will be installed ---> Package libxslt.x86_64 0:1.1.28-6.el7 will be installed ---> Package libxslt-devel.x86_64 0:1.1.28-6.el7 will be installed --> Processing Dependency: libgcrypt-devel for package: libxslt-devel-1.1.28-6.el7.x86_64 ---> Package libxslt-python.x86_64 0:1.1.28-6.el7 will be installed ---> Package ncurses-devel.x86_64 0:5.9-14.20130511.el7_4 will be installed ---> Package openssl.x86_64 1:1.0.2k-22.el7_9 will be updated ---> Package openssl.x86_64 1:1.0.2k-24.el7_9 will be an update --> Processing Dependency: openssl-libs(x86-64) = 1:1.0.2k-24.el7_9 for package: 1:openssl-1.0.2k-24.el7_9.x86_64 ---> Package openssl-devel.x86_64 1:1.0.2k-22.el7_9 will be updated ---> Package openssl-devel.x86_64 1:1.0.2k-24.el7_9 will be an update ---> Package readline-devel.x86_64 0:6.2-11.el7 will be installed ---> Package sqlite-devel.x86_64 0:3.7.17-8.el7_7.1 will be installed ---> Package tk-devel.x86_64 1:8.5.13-6.el7 will be installed --> Processing Dependency: tcl-devel = 1:8.5.13 for package: 1:tk-devel-8.5.13-6.el7.x86_64 --> Processing Dependency: libXft-devel for package: 1:tk-devel-8.5.13-6.el7.x86_64 --> Processing Dependency: libX11-devel for package: 1:tk-devel-8.5.13-6.el7.x86_64 ---> Package unzip.x86_64 0:6.0-22.el7_9 will be updated ---> Package unzip.x86_64 0:6.0-24.el7_9 will be an update --> Running transaction check ---> Package libX11-devel.x86_64 0:1.6.7-4.el7_9 will be installed --> Processing Dependency: pkgconfig(xcb) >= 1.11.1 for package: libX11-devel-1.6.7-4.el7_9.x86_64 --> Processing Dependency: pkgconfig(xproto) for package: libX11-devel-1.6.7-4.el7_9.x86_64 --> Processing Dependency: pkgconfig(xcb) for package: libX11-devel-1.6.7-4.el7_9.x86_64 --> Processing Dependency: pkgconfig(kbproto) for package: libX11-devel-1.6.7-4.el7_9.x86_64 ---> Package libXft-devel.x86_64 0:2.3.2-2.el7 will be installed --> Processing Dependency: pkgconfig(xrender) for package: libXft-devel-2.3.2-2.el7.x86_64 --> Processing Dependency: pkgconfig(fontconfig) for package: libXft-devel-2.3.2-2.el7.x86_64 ---> Package libdb4.x86_64 0:4.8.30-13.el7 will be installed ---> Package libgcrypt-devel.x86_64 0:1.5.3-14.el7 will be installed --> Processing Dependency: libgpg-error-devel for package: libgcrypt-devel-1.5.3-14.el7.x86_64 ---> Package openssl-libs.x86_64 1:1.0.2k-22.el7_9 will be updated ---> Package openssl-libs.x86_64 1:1.0.2k-24.el7_9 will be an update ---> Package tcl-devel.x86_64 1:8.5.13-8.el7 will be installed --> Running transaction check ---> Package fontconfig-devel.x86_64 0:2.13.0-4.3.el7 will be installed --> Processing Dependency: pkgconfig(uuid) for package: fontconfig-devel-2.13.0-4.3.el7.x86_64 --> Processing Dependency: pkgconfig(expat) for package: fontconfig-devel-2.13.0-4.3.el7.x86_64 ---> Package libXrender-devel.x86_64 0:0.9.10-1.el7 will be installed ---> Package libgpg-error-devel.x86_64 0:1.12-3.el7 will be installed ---> Package libxcb-devel.x86_64 0:1.13-1.el7 will be installed --> Processing Dependency: pkgconfig(xau) >= 0.99.2 for package: libxcb-devel-1.13-1.el7.x86_64 ---> Package xorg-x11-proto-devel.noarch 0:2018.4-1.el7 will be installed --> Running transaction check ---> Package expat-devel.x86_64 0:2.1.0-12.el7 will be installed ---> Package libXau-devel.x86_64 0:1.0.8-2.1.el7 will be installed ---> Package libuuid-devel.x86_64 0:2.23.2-65.el7_9.1 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================================================== Package Arch Version Repository Size ================================================================================================================================================== Installing: bzip2-devel x86_64 1.0.6-13.el7 os 218 k c-ares x86_64 1.10.0-3.el7 os 78 k freetype-devel x86_64 2.8-14.el7_9.1 updates 447 k gdbm-devel x86_64 1.10-8.el7 os 47 k icu x86_64 50.2-4.el7_7 os 187 k libcurl-devel x86_64 7.29.0-59.el7_9.1 updates 303 k libdb4-devel x86_64 4.8.30-13.el7 epel 32 k libffi-devel x86_64 3.0.13-19.el7 os 23 k libicu-devel x86_64 50.2-4.el7_7 os 703 k libjpeg-turbo-devel x86_64 1.2.90-8.el7 os 99 k libpcap-devel x86_64 14:1.5.3-12.el7 os 118 k libpng-devel x86_64 2:1.5.13-8.el7 os 122 k libwebp-devel x86_64 0.3.0-10.el7_9 updates 23 k libxml2-devel x86_64 2.9.1-6.el7_9.6 updates 1.1 M libxslt x86_64 1.1.28-6.el7 os 242 k libxslt-devel x86_64 1.1.28-6.el7 os 309 k libxslt-python x86_64 1.1.28-6.el7 os 59 k ncurses-devel x86_64 5.9-14.20130511.el7_4 os 712 k readline-devel x86_64 6.2-11.el7 os 139 k sqlite-devel x86_64 3.7.17-8.el7_7.1 os 104 k tk-devel x86_64 1:8.5.13-6.el7 os 488 k Updating: openssl x86_64 1:1.0.2k-24.el7_9 updates 494 k openssl-devel x86_64 1:1.0.2k-24.el7_9 updates 1.5 M unzip x86_64 6.0-24.el7_9 updates 172 k Installing for dependencies: expat-devel x86_64 2.1.0-12.el7 os 57 k fontconfig-devel x86_64 2.13.0-4.3.el7 os 138 k libX11-devel x86_64 1.6.7-4.el7_9 updates 981 k libXau-devel x86_64 1.0.8-2.1.el7 os 14 k libXft-devel x86_64 2.3.2-2.el7 os 19 k libXrender-devel x86_64 0.9.10-1.el7 os 17 k libdb4 x86_64 4.8.30-13.el7 epel 607 k libgcrypt-devel x86_64 1.5.3-14.el7 os 129 k libgpg-error-devel x86_64 1.12-3.el7 os 16 k libuuid-devel x86_64 2.23.2-65.el7_9.1 updates 93 k libxcb-devel x86_64 1.13-1.el7 os 1.1 M tcl-devel x86_64 1:8.5.13-8.el7 os 165 k xorg-x11-proto-devel noarch 2018.4-1.el7 os 280 k Updating for dependencies: openssl-libs x86_64 1:1.0.2k-24.el7_9 updates 1.2 M Transaction Summary ================================================================================================================================================== Install 21 Packages (+13 Dependent packages) Upgrade 3 Packages (+ 1 Dependent package) Total download size: 12 M Downloading packages: No Presto metadata available for updates (1/38): c-ares-1.10.0-3.el7.x86_64.rpm | 78 kB 00:00:00 (2/38): bzip2-devel-1.0.6-13.el7.x86_64.rpm | 218 kB 00:00:00 (3/38): expat-devel-2.1.0-12.el7.x86_64.rpm | 57 kB 00:00:00 (4/38): gdbm-devel-1.10-8.el7.x86_64.rpm | 47 kB 00:00:00 (5/38): fontconfig-devel-2.13.0-4.3.el7.x86_64.rpm | 138 kB 00:00:00 (6/38): libXau-devel-1.0.8-2.1.el7.x86_64.rpm | 14 kB 00:00:00 (7/38): libXft-devel-2.3.2-2.el7.x86_64.rpm | 19 kB 00:00:00 (8/38): icu-50.2-4.el7_7.x86_64.rpm | 187 kB 00:00:00 (9/38): freetype-devel-2.8-14.el7_9.1.x86_64.rpm | 447 kB 00:00:00 (10/38): libXrender-devel-0.9.10-1.el7.x86_64.rpm | 17 kB 00:00:00 (11/38): libffi-devel-3.0.13-19.el7.x86_64.rpm | 23 kB 00:00:00 (12/38): libX11-devel-1.6.7-4.el7_9.x86_64.rpm | 981 kB 00:00:00 (13/38): libdb4-devel-4.8.30-13.el7.x86_64.rpm | 32 kB 00:00:00 (14/38): libgpg-error-devel-1.12-3.el7.x86_64.rpm | 16 kB 00:00:00 (15/38): libgcrypt-devel-1.5.3-14.el7.x86_64.rpm | 129 kB 00:00:00 (16/38): libcurl-devel-7.29.0-59.el7_9.1.x86_64.rpm | 303 kB 00:00:00 (17/38): libdb4-4.8.30-13.el7.x86_64.rpm | 607 kB 00:00:00 (18/38): libjpeg-turbo-devel-1.2.90-8.el7.x86_64.rpm | 99 kB 00:00:00 (19/38): libicu-devel-50.2-4.el7_7.x86_64.rpm | 703 kB 00:00:00 (20/38): libpcap-devel-1.5.3-12.el7.x86_64.rpm | 118 kB 00:00:00 (21/38): libwebp-devel-0.3.0-10.el7_9.x86_64.rpm | 23 kB 00:00:00 (22/38): libpng-devel-1.5.13-8.el7.x86_64.rpm | 122 kB 00:00:00 (23/38): libuuid-devel-2.23.2-65.el7_9.1.x86_64.rpm | 93 kB 00:00:00 (24/38): libxslt-1.1.28-6.el7.x86_64.rpm | 242 kB 00:00:00 (25/38): libxcb-devel-1.13-1.el7.x86_64.rpm | 1.1 MB 00:00:00 (26/38): libxml2-devel-2.9.1-6.el7_9.6.x86_64.rpm | 1.1 MB 00:00:00 (27/38): libxslt-python-1.1.28-6.el7.x86_64.rpm | 59 kB 00:00:00 (28/38): libxslt-devel-1.1.28-6.el7.x86_64.rpm | 309 kB 00:00:00 (29/38): openssl-1.0.2k-24.el7_9.x86_64.rpm | 494 kB 00:00:00 (30/38): ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm | 712 kB 00:00:00 (31/38): openssl-devel-1.0.2k-24.el7_9.x86_64.rpm | 1.5 MB 00:00:00 (32/38): sqlite-devel-3.7.17-8.el7_7.1.x86_64.rpm | 104 kB 00:00:00 (33/38): readline-devel-6.2-11.el7.x86_64.rpm | 139 kB 00:00:00 (34/38): tcl-devel-8.5.13-8.el7.x86_64.rpm | 165 kB 00:00:00 (35/38): openssl-libs-1.0.2k-24.el7_9.x86_64.rpm | 1.2 MB 00:00:00 (36/38): unzip-6.0-24.el7_9.x86_64.rpm | 172 kB 00:00:00 (37/38): xorg-x11-proto-devel-2018.4-1.el7.noarch.rpm | 280 kB 00:00:00 (38/38): tk-devel-8.5.13-6.el7.x86_64.rpm | 488 kB 00:00:00 -------------------------------------------------------------------------------------------------------------------------------------------------- Total 4.3 MB/s | 12 MB 00:00:02 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : xorg-x11-proto-devel-2018.4-1.el7.noarch 1/42 Installing : libxslt-1.1.28-6.el7.x86_64 2/42 Updating : 1:openssl-libs-1.0.2k-24.el7_9.x86_64 3/42 Installing : libXau-devel-1.0.8-2.1.el7.x86_64 4/42 Installing : libxcb-devel-1.13-1.el7.x86_64 5/42 Installing : libX11-devel-1.6.7-4.el7_9.x86_64 6/42 Installing : libXrender-devel-0.9.10-1.el7.x86_64 7/42 Installing : 1:tcl-devel-8.5.13-8.el7.x86_64 8/42 Installing : libdb4-4.8.30-13.el7.x86_64 9/42 Installing : libgpg-error-devel-1.12-3.el7.x86_64 10/42 Installing : libgcrypt-devel-1.5.3-14.el7.x86_64 11/42 Installing : expat-devel-2.1.0-12.el7.x86_64 12/42 Installing : ncurses-devel-5.9-14.20130511.el7_4.x86_64 13/42 Installing : libuuid-devel-2.23.2-65.el7_9.1.x86_64 14/42 Installing : libxml2-devel-2.9.1-6.el7_9.6.x86_64 15/42 Installing : 2:libpng-devel-1.5.13-8.el7.x86_64 16/42 Installing : freetype-devel-2.8-14.el7_9.1.x86_64 17/42 Installing : fontconfig-devel-2.13.0-4.3.el7.x86_64 18/42 Installing : libXft-devel-2.3.2-2.el7.x86_64 19/42 Installing : 1:tk-devel-8.5.13-6.el7.x86_64 20/42 Installing : libxslt-devel-1.1.28-6.el7.x86_64 21/42 Installing : readline-devel-6.2-11.el7.x86_64 22/42 Installing : libdb4-devel-4.8.30-13.el7.x86_64 23/42 Updating : 1:openssl-devel-1.0.2k-24.el7_9.x86_64 24/42 Updating : 1:openssl-1.0.2k-24.el7_9.x86_64 25/42 Installing : libxslt-python-1.1.28-6.el7.x86_64 26/42 Installing : sqlite-devel-3.7.17-8.el7_7.1.x86_64 27/42 Installing : libcurl-devel-7.29.0-59.el7_9.1.x86_64 28/42 Installing : icu-50.2-4.el7_7.x86_64 29/42 Installing : libwebp-devel-0.3.0-10.el7_9.x86_64 30/42 Installing : c-ares-1.10.0-3.el7.x86_64 31/42 Installing : bzip2-devel-1.0.6-13.el7.x86_64 32/42 Installing : gdbm-devel-1.10-8.el7.x86_64 33/42 Installing : 14:libpcap-devel-1.5.3-12.el7.x86_64 34/42 Updating : unzip-6.0-24.el7_9.x86_64 35/42 Installing : libffi-devel-3.0.13-19.el7.x86_64 36/42 Installing : libicu-devel-50.2-4.el7_7.x86_64 37/42 Installing : libjpeg-turbo-devel-1.2.90-8.el7.x86_64 38/42 Cleanup : 1:openssl-devel-1.0.2k-22.el7_9.x86_64 39/42 Cleanup : 1:openssl-1.0.2k-22.el7_9.x86_64 40/42 Cleanup : 1:openssl-libs-1.0.2k-22.el7_9.x86_64 41/42 Cleanup : unzip-6.0-22.el7_9.x86_64 42/42 Verifying : libXft-devel-2.3.2-2.el7.x86_64 1/42 Verifying : 2:libpng-devel-1.5.13-8.el7.x86_64 2/42 Verifying : libxslt-python-1.1.28-6.el7.x86_64 3/42 Verifying : libxml2-devel-2.9.1-6.el7_9.6.x86_64 4/42 Verifying : libjpeg-turbo-devel-1.2.90-8.el7.x86_64 5/42 Verifying : 1:openssl-libs-1.0.2k-24.el7_9.x86_64 6/42 Verifying : libicu-devel-50.2-4.el7_7.x86_64 7/42 Verifying : libffi-devel-3.0.13-19.el7.x86_64 8/42 Verifying : unzip-6.0-24.el7_9.x86_64 9/42 Verifying : libuuid-devel-2.23.2-65.el7_9.1.x86_64 10/42 Verifying : libdb4-devel-4.8.30-13.el7.x86_64 11/42 Verifying : 14:libpcap-devel-1.5.3-12.el7.x86_64 12/42 Verifying : gdbm-devel-1.10-8.el7.x86_64 13/42 Verifying : bzip2-devel-1.0.6-13.el7.x86_64 14/42 Verifying : fontconfig-devel-2.13.0-4.3.el7.x86_64 15/42 Verifying : 1:openssl-devel-1.0.2k-24.el7_9.x86_64 16/42 Verifying : libxslt-devel-1.1.28-6.el7.x86_64 17/42 Verifying : ncurses-devel-5.9-14.20130511.el7_4.x86_64 18/42 Verifying : readline-devel-6.2-11.el7.x86_64 19/42 Verifying : libX11-devel-1.6.7-4.el7_9.x86_64 20/42 Verifying : 1:tk-devel-8.5.13-6.el7.x86_64 21/42 Verifying : c-ares-1.10.0-3.el7.x86_64 22/42 Verifying : 1:openssl-1.0.2k-24.el7_9.x86_64 23/42 Verifying : xorg-x11-proto-devel-2018.4-1.el7.noarch 24/42 Verifying : libXrender-devel-0.9.10-1.el7.x86_64 25/42 Verifying : libwebp-devel-0.3.0-10.el7_9.x86_64 26/42 Verifying : icu-50.2-4.el7_7.x86_64 27/42 Verifying : freetype-devel-2.8-14.el7_9.1.x86_64 28/42 Verifying : libgcrypt-devel-1.5.3-14.el7.x86_64 29/42 Verifying : libcurl-devel-7.29.0-59.el7_9.1.x86_64 30/42 Verifying : expat-devel-2.1.0-12.el7.x86_64 31/42 Verifying : libxcb-devel-1.13-1.el7.x86_64 32/42 Verifying : sqlite-devel-3.7.17-8.el7_7.1.x86_64 33/42 Verifying : libxslt-1.1.28-6.el7.x86_64 34/42 Verifying : libgpg-error-devel-1.12-3.el7.x86_64 35/42 Verifying : libdb4-4.8.30-13.el7.x86_64 36/42 Verifying : 1:tcl-devel-8.5.13-8.el7.x86_64 37/42 Verifying : libXau-devel-1.0.8-2.1.el7.x86_64 38/42 Verifying : 1:openssl-1.0.2k-22.el7_9.x86_64 39/42 Verifying : 1:openssl-devel-1.0.2k-22.el7_9.x86_64 40/42 Verifying : 1:openssl-libs-1.0.2k-22.el7_9.x86_64 41/42 Verifying : unzip-6.0-22.el7_9.x86_64 42/42 Installed: bzip2-devel.x86_64 0:1.0.6-13.el7 c-ares.x86_64 0:1.10.0-3.el7 freetype-devel.x86_64 0:2.8-14.el7_9.1 gdbm-devel.x86_64 0:1.10-8.el7 icu.x86_64 0:50.2-4.el7_7 libcurl-devel.x86_64 0:7.29.0-59.el7_9.1 libdb4-devel.x86_64 0:4.8.30-13.el7 libffi-devel.x86_64 0:3.0.13-19.el7 libicu-devel.x86_64 0:50.2-4.el7_7 libjpeg-turbo-devel.x86_64 0:1.2.90-8.el7 libpcap-devel.x86_64 14:1.5.3-12.el7 libpng-devel.x86_64 2:1.5.13-8.el7 libwebp-devel.x86_64 0:0.3.0-10.el7_9 libxml2-devel.x86_64 0:2.9.1-6.el7_9.6 libxslt.x86_64 0:1.1.28-6.el7 libxslt-devel.x86_64 0:1.1.28-6.el7 libxslt-python.x86_64 0:1.1.28-6.el7 ncurses-devel.x86_64 0:5.9-14.20130511.el7_4 readline-devel.x86_64 0:6.2-11.el7 sqlite-devel.x86_64 0:3.7.17-8.el7_7.1 tk-devel.x86_64 1:8.5.13-6.el7 Dependency Installed: expat-devel.x86_64 0:2.1.0-12.el7 fontconfig-devel.x86_64 0:2.13.0-4.3.el7 libX11-devel.x86_64 0:1.6.7-4.el7_9 libXau-devel.x86_64 0:1.0.8-2.1.el7 libXft-devel.x86_64 0:2.3.2-2.el7 libXrender-devel.x86_64 0:0.9.10-1.el7 libdb4.x86_64 0:4.8.30-13.el7 libgcrypt-devel.x86_64 0:1.5.3-14.el7 libgpg-error-devel.x86_64 0:1.12-3.el7 libuuid-devel.x86_64 0:2.23.2-65.el7_9.1 libxcb-devel.x86_64 0:1.13-1.el7 tcl-devel.x86_64 1:8.5.13-8.el7 xorg-x11-proto-devel.noarch 0:2018.4-1.el7 Updated: openssl.x86_64 1:1.0.2k-24.el7_9 openssl-devel.x86_64 1:1.0.2k-24.el7_9 unzip.x86_64 0:6.0-24.el7_9 Dependency Updated: openssl-libs.x86_64 1:1.0.2k-24.el7_9 Complete! Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Package libxslt-1.1.28-6.el7.x86_64 already installed and latest version Package libxslt-devel-1.1.28-6.el7.x86_64 already installed and latest version Package libxslt-python-1.1.28-6.el7.x86_64 already installed and latest version Nothing to do Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Package libjpeg-turbo-devel-1.2.90-8.el7.x86_64 already installed and latest version Nothing to do Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile No package vixie-cron available. Error: Nothing to do Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Package libdb4-devel-4.8.30-13.el7.x86_64 already installed and latest version Nothing to do Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package epel-release.noarch 0:7-14 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================================================== Package Arch Version Repository Size ================================================================================================================================================== Installing: epel-release noarch 7-14 epel 15 k Transaction Summary ================================================================================================================================================== Install 1 Package Total download size: 15 k Installed size: 25 k Downloading packages: epel-release-7-14.noarch.rpm | 15 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : epel-release-7-14.noarch 1/1 Verifying : epel-release-7-14.noarch 1/1 Installed: epel-release.noarch 0:7-14 Complete! https://mirrors.tencent.com/pypi/simple cat: /etc/.productinfo: No such file or directory OS: el - 7 --2022-01-21 16:17:30-- http://dg2.bt.cn/install/pyenv/pyenv-el7-x64.tar.gz Resolving dg2.bt.cn (dg2.bt.cn)... 116.10.184.219, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|116.10.184.219|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 73258911 (70M) [application/octet-stream] Saving to: ‘/www/pyenv.tar.gz’ 100%[========================================================================================================>] 73,258,911 10.0MB/s in 7.2s 2022-01-21 16:17:37 (9.68 MB/s) - ‘/www/pyenv.tar.gz’ saved [73258911/73258911] Install python env... Python 3.7.9 --2022-01-21 16:17:40-- http://dg2.bt.cn/install/src/bt6.init Resolving dg2.bt.cn (dg2.bt.cn)... 116.10.184.219, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|116.10.184.219|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 9873 (9.6K) [application/octet-stream] Saving to: ‘/etc/init.d/bt’ 100%[========================================================================================================>] 9,873 --.-K/s in 0s 2022-01-21 16:17:40 (229 MB/s) - ‘/etc/init.d/bt’ saved [9873/9873] --2022-01-21 16:17:40-- http://dg2.bt.cn/install/public.sh Resolving dg2.bt.cn (dg2.bt.cn)... 42.157.129.47, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|42.157.129.47|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 4267 (4.2K) [application/octet-stream] Saving to: ‘/www/server/panel/install/public.sh’ 100%[========================================================================================================>] 4,267 --.-K/s in 0s 2022-01-21 16:17:40 (419 MB/s) - ‘/www/server/panel/install/public.sh’ saved [4267/4267] --2022-01-21 16:17:40-- http://dg2.bt.cn/install/src/panel6.zip Resolving dg2.bt.cn (dg2.bt.cn)... 42.157.129.47, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|42.157.129.47|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 9230063 (8.8M) [application/zip] Saving to: ‘panel.zip’ 100%[========================================================================================================>] 9,230,063 24.7MB/s in 0.4s 2022-01-21 16:17:40 (24.7 MB/s) - ‘panel.zip’ saved [9230063/9230063] --2022-01-21 16:17:40-- http://dg2.bt.cn/install/src/bt7.init Resolving dg2.bt.cn (dg2.bt.cn)... 42.157.129.47, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|42.157.129.47|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 10438 (10K) [application/octet-stream] Saving to: ‘/etc/init.d/bt’ 100%[========================================================================================================>] 10,438 --.-K/s in 0s 2022-01-21 16:17:41 (238 MB/s) - ‘/etc/init.d/bt’ saved [10438/10438] --2022-01-21 16:17:41-- http://dg2.bt.cn/install/src/bt7.init Resolving dg2.bt.cn (dg2.bt.cn)... 42.157.129.47, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|42.157.129.47|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 10438 (10K) [application/octet-stream] Saving to: ‘/www/server/panel/init.sh’ 100%[========================================================================================================>] 10,438 --.-K/s in 0.006s 2022-01-21 16:17:41 (1.68 MB/s) - ‘/www/server/panel/init.sh’ saved [10438/10438] --2022-01-21 16:17:41-- http://dg2.bt.cn/install/conf/softList.conf Resolving dg2.bt.cn (dg2.bt.cn)... 116.10.184.219, 240e:a5:4200:89::143 Connecting to dg2.bt.cn (dg2.bt.cn)|116.10.184.219|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3287 (3.2K) [application/octet-stream] Saving to: ‘/www/server/panel/data/softList.conf’ 100%[========================================================================================================>] 3,287 --.-K/s in 0s 2022-01-21 16:17:41 (348 MB/s) - ‘/www/server/panel/data/softList.conf’ saved [3287/3287] Starting Bt-Panel.... done Starting Bt-Tasks... done username: t1c2mbup Stopping Bt-Tasks... done Stopping Bt-Panel... done Starting Bt-Panel.... done Starting Bt-Tasks... done Loaded plugins: fastestmirror, langpacks Repository epel is listed more than once in the configuration Loading mirror speeds from cached hostfile Package firewalld-0.6.3-13.el7_9.noarch already installed and latest version Nothing to do Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service. Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service. success ================================================================== Congratulations! Installed successfully! ================================================================== 外网面板地址: http://110.40.150.131:8888/ac9859fb 内网面板地址: http://172.17.16.6:8888/ac9859fb username: t1c2mbup password: b6abed29 If you cannot access the panel, release the following panel port [8888] in the security group 若无法访问面板,请检查防火墙/安全组是否有放行面板[8888]端口 ================================================================== Time consumed: 1 Minute! [root@VM-16-6-centos wldata]# 根据安装成功的登录信息登录宝塔面板并重置相关登录信息
2022年01月21日
156 阅读
0 评论
0 点赞
2021-06-30
记一次根据经纬度计算距离的项目实践
近期公司接的公租房项目,在小程序模块中有用到离我最近的房源列表的功能,经过项目实践相关实现过程如下:功能演示PC后台配置小区位置:单击地图描点后打开如下图所示的描点对话框,描点选择后单击确定按钮返回经纬度信息:小程序中获取位置后调用接口显示距离:{lamp/}代码实现:管理后台描点Vue组件核心代码<template> <el-dialog width="95%" class="hkt-dlg-darkblue resource-modal" top="5vh" :title="title" :visible.sync="isShow" destroy-on-close :close-on-click-modal="false"> <div class="map-container" ref="mapContainer"></div> <div slot="footer" class="dialog-footer dialog-footer-wrap text-center"> <el-button @click="isShow = false">取 消</el-button> <el-button type="primary" :disabled="!latitude" @click="pickedHandler">{{'确 定'}}</el-button> </div> </el-dialog> </template> <script> export default { name: 'PickerQMapPositionModal', props: { show: { type: Boolean, default: false }, title: { type: String, default: '地图描点' }, dialogProps: { type: Object, reuired: true } }, data () { return { latitude: '', longitude: '' } }, computed: { isShow: { get () { return this.show }, set (val) { this.$emit('update:show', val) } } }, mounted () { this.init() }, methods: { init () { this.initMap() }, async initMap () { // if (!window.TMap) { // } await this.$hktUtils.loadJS('https://map.qq.com/api/gljs?v=1.exp&key=VQ6BZ-ZFSW6-H36SN-E7TZL-QZ6U6-O3F24') var center = new TMap.LatLng(28.239377,112.866161) //定义map变量,调用 TMap.Map() 构造函数创建地图 var map = new TMap.Map(this.$refs.mapContainer, { center: center,//设置地图中心点坐标 zoom: 15, //设置地图缩放级别 // pitch: 43.5, //设置俯仰角 // rotation: 45 //设置地图旋转角度 }); //初始化marker图层 var markerLayer = new TMap.MultiMarker({ id: 'marker-layer', map: map }); map.on("click", (evt) => { if(markerLayer.geometries && markerLayer.geometries.length > 0) { markerLayer.remove(markerLayer.geometries[0].id) } markerLayer.add({ position: evt.latLng }); console.log('evt.latLng', evt.latLng, evt) this.latitude = evt.latLng.lat.toFixed(7) this.longitude = evt.latLng.lng.toFixed(7) }) }, pickedHandler () { this.$emit('callback', { latitude: this.latitude, longitude: this.longitude }) this.isShow = false } } } </script> <style lang="scss" scoped> .map-container { width:100%; height:70vh; } </style> Java端计算距离核心代码package com.hkt.jianfa.rental.housing.manager.wx.util; /** * 根据经纬度计算距离的工具类 * * @author 朱治龙(i@zhuzhilong.cn) * @since 2021-06-29 16:22:18 */ public class DistanceUtil { //地球平均半径 private static final double EARTH_RADIUS = 6378137; //把经纬度转为度(°) private static double rad(double d) { return d * Math.PI / 180.0; } /** * 根据两点间经纬度坐标(double值),计算两点间距离,单位为米 * * @param lng1 第1个坐标的经度值 * @param lat1 第1个坐标的纬度值 * @param lng2 第2个坐标的经度值 * @param lat2 第2个坐标的纬度值 * @return */ public static double getDistance(double lng1, double lat1, double lng2, double lat2) { double radLat1 = rad(lat1); double radLat2 = rad(lat2); double a = radLat1 - radLat2; double b = rad(lng1) - rad(lng2); double s = 2 * Math.asin( Math.sqrt( Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2) ) ); s = s * EARTH_RADIUS; s = Math.round(s * 10000) / 10000; return s; } /** * 传入逗号分隔的两个经纬度的值计算巨鹿 * * @param position1 第一个经纬度 * @param position2 第二个经纬度 * @return */ public static double getDistance(String position1, String position2) { if (position1.contains(",") && position2.contains(",")) { String[] point1 = position1.split(","); String[] point2 = position2.split(","); return getDistance(Double.parseDouble(point1[1]), Double.parseDouble(point1[0]), Double.parseDouble(point2[1]), Double.parseDouble(point2[0])); } return 0; } /** * 将距离数值转换为前端显示所需的字符串信息 * * @param distance * @return */ public static String decodeDistance(double distance) { if (distance < 1000) { return "<1km"; } else if (distance / 1000 > 100) { return ">100km"; } else { return new Double(distance / 1000).intValue() + "km"; } } } 业务逻辑类中调用DistanceUtil方法计算距离:小程序中获取位置后,将经纬度信息传给后端计算距离及排序核心代码如下:uni.getLocation({ type: 'gcj02', success: (res) => { this.searchForm.sort = 'distance' this.searchForm.location = res.latitude + ',' + res.longitude this.getProjects() }, fail: (err) => { this.getProjects() } })
2021年06月30日
150 阅读
0 评论
3 点赞
2018-08-01
raml mock工具测评
调研工具raml-mockup开源地址:https://github.com/gextech/raml-mockup该项目实现层面是基于express、json-schema-faker、raml-1-parser,faker做了些封装提供mock服务,返回结果不是很严谨,可能不怎么适合项目二次开发基于 raml-1-parser解析raml,支持版本:0.8、1.0基本使用npm install -g raml-mockup $ raml-mockup src/api.raml -d src/schemas -f http://json-schema.org -r src/formats.js -p 5000 -wraml-mocker开源站点:https://github.com/repocho/raml-mocker模拟数据及解析基于faker,raml-parser实现raml支持版本:0.8,用肝炎app的raml文档(raml版本为1.0)提示版本不正确看提供的示例代码是可以跟express结合使用osprey-mock-service开源地址:https://github.com/mulesoft-labs/osprey-mock-service基于 raml-1-parser解析用肝炎app的raml文档测试报错,控制台提示UnhandledPromiseRejectionWarning: Unhandled promise rejection.,raml-1-parser解析的时候将文档鉴定为无效的raml文档。结论这3款工具都不能满足现有项目简单的提供mock数据的支持。建议可以在rap2的基础上增加导入raml文件的功能,导入时可以考虑使用raml2html解析用到的raml2obj类做解析rap2基本情况:阿里妈妈前端团队基于node开发,很好的集成了 mockjs,能生成更符合国情的mock数据,类似apizza,可以较方便的在线管理接口。官网及线上示例:http://rap2.taobao.org/github地址:https://github.com/thx/rap2-delos
2018年08月01日
15 阅读
0 评论
0 点赞
2013-04-07
JIS与湖南CA整合经验分享
一、背景说明湖南省政府互动(JCAT)及相关应用(JCMS, TRSWCM等应用也有可能会进行整合)后期准备使用JIS统一登录入口,省政府目前使用的内容管理平台(TRSWCM)为安全着想,已全部采用CA登录的形式进行后台管理,本次整合主要是针对各部门原有的证书在本系统继续正常使用。经过清明节两天假期时间对CA及JIS的学习和程序修改以及n次拷贝和n次重启tomcat不断及坚持不懈的调试,今天终于把省政府这边的JIS跟湖南CA一块整合成功了.在此先感谢韩洋的指导。怕隔夜以后就没那么清晰 ,所以趁现在还清楚就先跟大家分享一下。二、实现思路在login.jsp中新增代码获取CA登录的开关,如果该开关为开状态则进行CA登录验证,如果为关状态则继续原有的登录。修改merp_pub_user用户信息表,在该表中使用现有的vc_cardid字段存储CA编号信息,新增c_caname字段(CA证书绑定的用户姓名),c_caBandTime(存储绑定操作的系统时间),c_capwdStr(用于CA绑定时存储用户的明文密码,系统在登录时将密码的明文存储在了session中,而且在系统中发现在不少应用跳转时用到了,所以这里也就直接存储明文,便于跟系统原有登录相对接)新增一个有关CA登录操作相关的类,在该方法中书写CA登录相关实现方法.新增ca_login.jsp页面,在该页面中新增CA登录相关功能实现,原有的系统登录功能不变.新增ca/ca_rem.jsp页面,该页面根据CA编号删除CA与系统的绑定关系.三、相关代码CALogin.java /** * 根据CA编号判断是否有用户存在 * @param caId CA编号 * @return 如果该编号存在则返回true,否则返回false */ public static boolean chkUserByCaId(String caId) /*** * * 根据用户名和CA编号将CA编号绑定到用户信息中 * @param loginId 用户登录名称 * @param caId CA编号 * @param strCAUserName CA证书中的用户姓名 * @param c_capwdStr 用户密码,第一次绑定时记录用户密码,在不少场合需要用到明文密码,故单独存储起来. * @return 是否绑定成功,绑定成功返回true,否则返回false */ public static boolean updUserByCaId(String loginId,String caId,String strCAUserName,String c_capwdStr) /** * 根据CA编号获取用户基本信息 * @param caId CA编号 * @return 用户基本信息 */ public static String[][] getUserInfoByCaId(String caId) /*** * 通过CA编号取消掉CA跟统一登录的绑定关系. * @param caId * @return 节次关系是否成功 */ public static boolean removeCaRelationByCaId(String caId)## ca_login.jsp//CA证书相关数据获取 Cookie[] cookies = request.getCookies(); if(cookies == null) cookies = new Cookie[0]; String name = ""; String CA_NO = "";//CA编号 String ca_LoginId="";//JIS系统用户名 String ca_userPwd="";//JIS系统登录密码_明文 boolean bandResult = false;//绑定结果 boolean loginByCA =false;//判断用户进行CA绑定时,将CA编号跟账号绑定 boolean isLoginByForm = false;//是否是提交表单访问本页面,主要用于JS判断,避免二次绑定提示对话框 int nResult=0; for(int i = 0; i < cookies.length; i ++) { Cookie cookie = cookies[i]; if("KOAL_CERT_SERIAL_NUMBER".equals(cookie.getName())) CA_NO = cookie.getValue(); else continue; } if(CALogin.chkUserByCaId(CA_NO)){ //后台存在用户,则获取用户相关信息并登录 String[][] userInfo = CALogin.getUserInfoByCaId(CA_NO); if(userInfo!=null){ ca_LoginId = userInfo[0][1]; ca_userPwd = userInfo[0][2]; loginByCA=true; } } //修改获取用户名密码的方式,如果不是从表单中提交的则获取CA中的用户名和密码信息 String strUser = Convert.getParameter(request, "userid",ca_LoginId,true,true); String strPassword = Convert.getParameter(request, "userpassword",ca_userPwd); //如果不是使用CA直接登录的,则进行CA跟系统用户的绑定 if(loginByCA==false){ bandResult = CALogin.updUserByCaId(strUser,CA_NO,strCAUserName,strPassword); } //JS相关判断及提示. var JS_CA_NO = "<%=CA_NO%>"; if("<%=isCa%>"=="false"){ var turnURL = ""; if(window.location.href.indexOf("59.231.1")>0){ turnURL = "http://59.231.1.222/jis/"; }else{ turnURL = "http://act.hunan.gov.cn/jis/"; } window.location.href=turnURL+"login.jsp"; } if(JS_CA_NO==""){ alert(" \n 请插入证书并数据正确的CA密码登录 \n "); var turnURL = "https://113.240.233.86:452/jis/"; if(window.location.href.indexOf("59.231.1")>0){ turnURL = "https://59.231.1.100:452/jis/"; }else{ turnURL = "https://113.240.233.86:452/jis/"; } window.location.href=turnURL+"ca_login.jsp"; } if("<%=CALogin.chkUserByCaId(CA_NO) %>"=="false"&&"<%=isLoginByForm%>"=="false"){ alert(" \n 证书尚未绑定,请执行系统登录操作进行系统绑定 \n "); } if("<%=bandResult%>"=="true"){ alert("恭喜您,绑定成功!\n即将跳转到系统界面") }# 四、相关截图{gird column="2" gap="10"}{gird-item}{mtitle title="第一次登录提示绑定账号"/}{/gird-item}{gird-item}{mtitle title="基于系统的登录逻辑登录登录成功则进行绑定操作"/}{/gird-item}{gird-item}{mtitle title="登录成功后进行绑定无误后提示绑定成功"/}{/gird-item}{gird-item}{mtitle title="系统登录成功后进入应用主界面"/}{/gird-item}{/gird}五、实施收获很多事情没有第一次做,本身就存在一种畏惧的意识,总感觉不知如何下手才好,经过本次实施,感觉很多方面的东西只要把思路理清了,技术实现都是很容易的事。
2013年04月07日
11 阅读
0 评论
0 点赞
1
2