非常高兴! 我的 TGMama v1.1.0版本正式诞生,着重的,这里要特别感谢向我提这个想法的 @Terry 老师。是他的一句话唤起了我对研究Telegram API的兴趣。使得我能迅速的Demo代码,并且最后尝试完成了可分发的安装包创建。目前这个项目可以在Linux命令行下面运行,并且可以自动执行24小时群发任务。

TGMama - Telegram自动消息群发助手

Telegram 是一款开源的聊天软件,并且官方已经公布了相关的API。最近也一直在研究如何利用Telegram的API让平时的工作变得更加省时一点。

经过近3天的研究和尝试,初步实现了一个小助手,使得可以全自动的为账号内的所有群组发送指定的信息。同时还设计了下面这些特点:

  • 使用自己的API KEY,减少滥用限制
  • 支持多个Telegram账户同时做群发工作
  • 支持设定群发的重复间隔时间,实现24小时反复群发
  • 支持在窗口内以交互的形式设置需要群发的信息
  • 支持在开始群发之前选择需要忽略的群组

当然,随着测试的不断跟进,陆续还发现多个小问题,最近将会继续完善。后续我将为大家分享 TGMama 的安装和使用步骤。

下列命令可实现阻止本服务器向外网服务器通过25端口发送电子邮件,但为本地网络 127.0.0.1 传送电子邮件不受影响。

IPv4 环境可执行:

firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -p tcp -m tcp -d 127.0.0.1 --dport=25 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport=25 -j REJECT
firewall-cmd --reload

IPv6 环境可执行:

firewall-cmd --permanent --direct --add-rule ipv6 filter OUTPUT 0 -p tcp -m tcp -d ::1 --dport=25 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv6 filter OUTPUT 1 -p tcp -m tcp --dport=25 -j REJECT
firewall-cmd --reload

在使用Datatables插件创建可进行自定义灵活分类查询的表格时,需要关闭自带的搜索框、分页栏等,可以参考官方文档做出如下设置:

例我们有一个下列表格实例:

<table class="all-ssl-table">
<tbody>
  <tr>
     <td>TrustOcean DV SSL Certificate</td>
     <td>$5.15</td>
     <td>$9.15</td>
  </tr>
  <tr>
     <td>TrustOcean Wildcard SSL Certificate</td>
     <td>$35.15</td>
     <td>$59.15</td>
  </tr>
</tbody>
</table>

使用 Datatables 进行配置:

var table = $('.all-ssl-table').DataTable({
    "searching" : false, //去掉搜索框方法一
    "bFilter": false,   //去掉搜索框方法二
    "bSort": false,  //禁止排序
    "paging": false,   //禁止分页
    "info": false   //去掉底部文字
});

又因我们项目需要,需要启用搜索和Filter功能,且不需要展示搜索框,因此我们做出了如下改动:

table = $('.all-ssl-table').DataTable({
    "searching" : true, //开发搜索
    "bFilter": true,   //开启规则搜索
    "bSort": false,  //禁止排序
    "paging": false,   //禁止分页
    "info": false   //去掉底部文字
});

然后我们增加了一段 css 代码来隐藏搜索框:

<style type="text/css">
    .dataTables_filter{
        display: none;
    }
</style>

如果想查询更多关于 Datatables 的 API 文档,您可以参考官方文档 https://datatables.net/manual/api

在Bootstrap框架中使用Radio选择项对Datatable表格条目进行筛选过程中,发现在元素上使用默认的js方法监听onclick事件无效,经过网络查询,自 iChecker 官方文档, 可以使用 ifChecked 事件类型并配合Jquery进行监听。

例有如下会被iChecker实例化的元素:

<input type="radio" name="SSLType">

即可使用 ifChecked 进行监听:

$('input').on('ifChecked', function(event){
    alert("触发的事件类型为:"+ event.type)
});

详细可参考官方文档: http://icheck.fronteed.com/#callbacks

私钥转换

如果您想了解 PKCS#1 格式私钥和 PKCS#8 私钥间的区别,您可以访问我们之前发布的文档《私钥头 "BEGIN RSA PRIVATE KEY" 和 "BEGIN PRIVATE KEY"的区别》

我们需要借助Openssl命令行工具,完成下列互转:

PKCS8格式私钥再转换为PKCS1格式

openssl rsa -in pkcs8.pem -out pkcs1.pem

PKCS1私钥转换为PKCS8

openssl pkcs8 -topk8 -inform PEM -in private.pem -outform pem -nocrypt -out pkcs8.pem

公钥转换

从pkcs1私钥中生成pkcs8公钥

openssl rsa -in private.pem -pubout -out public.pem

从pkcs8私钥中生成pkcs8公钥

openssl rsa -in pkcs8.pem -pubout -out public_pkcs8.pem

pkcs8公钥转pkcs1公钥

openssl rsa -pubin -in public.pem -RSAPublicKey_out

pkcs1公钥转换为pkcs8公钥

openssl rsa -RSAPublicKey_in -in pub_pkcs1.pem -pubout

此文档整理来自《openssl RSA密钥格式PKCS1和PKCS8相互转换》