小编Kar*_*l P的帖子

MQTT:SSL 例程:SSL3_GET_RECORD:版本号错误

我尝试将 SSL 与 MQTT 结合使用并收到以下错误,

1379677998: Client connection from 127.0.0.1 failed: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number.
1379678058: OpenSSL Error: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure
1379678058: Socket read error on client (null), disconnecting.
Run Code Online (Sandbox Code Playgroud)

我的conf文件有如下设置,

port 8883
cafile /home/administrator/Downloads/mosquitto-1.2.1_dilip/test/ssl/test-root-ca.crt (also tried all-ca.crt here)
certfile /home/administrator/Downloads/mosquitto-1.2.1_dilip/test/ssl/server.crt
keyfile /home/administrator/Downloads/mosquitto-1.2.1_dilip/test/ssl/server.key
tls_version tlsv1
require_certificate true (tried commenting this too)
Run Code Online (Sandbox Code Playgroud)

我从测试文件夹运行 08-ssl-connect-cert-auth.test 。下面包含代码片段

    mosquitto_tls_opts_set(mosq, 1, "tlsv1", NULL);
    mosquitto_tls_set(mosq, "../ssl/test-root-ca.crt", "../ssl/certs", "../ssl/client.crt", "../ssl/client.key", NULL);
    mosquitto_connect_callback_set(mosq, on_connect);
    mosquitto_disconnect_callback_set(mosq, on_disconnect);

    rc = mosquitto_connect(mosq, "localhost", 8883, 60);
Run Code Online (Sandbox Code Playgroud)

环境信息:

Python 2.7.3
OpenSSL 1.0.1 14 …
Run Code Online (Sandbox Code Playgroud)

mqtt mosquitto

5
推荐指数
1
解决办法
1万
查看次数

以编程方式设置mosquitto中的访问控制限制

我正在开发一个将使用mqtt的应用程序.我将使用python库.我一直倾向于使用mosquitto,但却无法以编程方式为其设置访问控制限制.我正在编写的应用程序需要能够区分用户,并且只允许他们订阅某些主题.当前的解决方案看起来像是从配置文件中完成的.在mosquitto中是否有可扩展的访问控制限制解决方案?如果没有,你知道一个mqtt经纪人存在吗?

python mq mqtt mosquitto

3
推荐指数
2
解决办法
5834
查看次数

如何在python中的csv.reader中使用pkgutils.get_data?

我有一个python模块,其中包含各种数据文件(代表曲线的一组csv文件),需要在运行时加载。csv模块效果很好

  # curvefile = "ntc.10k.csv"
  raw = csv.reader(open(curvefile, 'rb'), delimiter=',')
Run Code Online (Sandbox Code Playgroud)

但是,如果我将此模块导入另一个脚本,则需要找到数据文件的完整路径。

/project
   /shared
       curve.py
       ntc.10k.csv
       ntc.2k5.csv
   /apps
       script.py
Run Code Online (Sandbox Code Playgroud)

我希望script.py仅按基本文件名而不是完整路径来引用曲线。在模块代码中,我可以使用:

pkgutil.get_data("curve", "ntc.10k.csv") 
Run Code Online (Sandbox Code Playgroud)

可以很好地找到文件,但是它返回已读入的csv文件,而csv.reader需要文件句柄本身。有什么方法可以使这两个模块一起正常工作?它们都是标准的库模块,因此我并不是真的期望出现问题。我知道我可以开始拆分pkgutil二进制文件数据,但是那样的话我也可能不使用csv库。

我知道我可以只在模块代码中使用它,而不必理会pkgutils,但看起来pkgutils确实正是此目的。

this_dir, this_filename = os.path.split(__file__)
DATA_PATH = os.path.join(this_dir, curvefile)
raw = csv.reader(open(DATA_PATH, "rb"))
Run Code Online (Sandbox Code Playgroud)

python

2
推荐指数
2
解决办法
3313
查看次数

有效地将ctypes LP_c_ubyte转换为python'str'

我在使用ctypes绑定时遇到问题,并且ctypes文档使我的头部有点受伤。

我有一个远程网络客户端正在发送二进制数据,而我正在使用的库(Mosquitto,用于MQTT消息代理)提供了一种ctypes方法,用于从网络获取原始二进制数据。这是“ LP_c_ubyte”类型。有什么有效的方法可以将其转换回python'str'对象?

我需要一组常规字节来用于M2Crypto的解密功能。

pp = ''.join(chr(msg.payload[i]) for i in xrange(msg.payloadlen)) 
clear_text = rsa.private_decrypt(pp, M2Crypto.RSA.pkcs1_padding)
Run Code Online (Sandbox Code Playgroud)

这有效,但是非常难看。

我可以将客户端更改为首先对所有内容进行base64编码,然后在此端取消对unbase64的编码,但这似乎也可以解决。

有没有更好的方法?

python ctypes

2
推荐指数
1
解决办法
1777
查看次数

标签 统计

python ×3

mosquitto ×2

mqtt ×2

ctypes ×1

mq ×1