aprsd 1.0.0__py3-none-any.whl → 3.4.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- aprsd/__init__.py +6 -4
- aprsd/cli_helper.py +151 -0
- aprsd/client/__init__.py +13 -0
- aprsd/client/aprsis.py +132 -0
- aprsd/client/base.py +105 -0
- aprsd/client/drivers/__init__.py +0 -0
- aprsd/client/drivers/aprsis.py +228 -0
- aprsd/client/drivers/fake.py +73 -0
- aprsd/client/drivers/kiss.py +119 -0
- aprsd/client/factory.py +88 -0
- aprsd/client/fake.py +48 -0
- aprsd/client/kiss.py +103 -0
- aprsd/client/stats.py +38 -0
- aprsd/cmds/__init__.py +0 -0
- aprsd/cmds/completion.py +22 -0
- aprsd/cmds/dev.py +162 -0
- aprsd/cmds/fetch_stats.py +156 -0
- aprsd/cmds/healthcheck.py +86 -0
- aprsd/cmds/list_plugins.py +319 -0
- aprsd/cmds/listen.py +231 -0
- aprsd/cmds/send_message.py +171 -0
- aprsd/cmds/server.py +137 -0
- aprsd/cmds/webchat.py +674 -0
- aprsd/conf/__init__.py +56 -0
- aprsd/conf/client.py +131 -0
- aprsd/conf/common.py +301 -0
- aprsd/conf/log.py +65 -0
- aprsd/conf/opts.py +80 -0
- aprsd/conf/plugin_common.py +182 -0
- aprsd/conf/plugin_email.py +105 -0
- aprsd/exception.py +13 -0
- aprsd/log/__init__.py +0 -0
- aprsd/log/log.py +138 -0
- aprsd/main.py +104 -867
- aprsd/packets/__init__.py +20 -0
- aprsd/packets/collector.py +79 -0
- aprsd/packets/core.py +823 -0
- aprsd/packets/log.py +161 -0
- aprsd/packets/packet_list.py +110 -0
- aprsd/packets/seen_list.py +49 -0
- aprsd/packets/tracker.py +103 -0
- aprsd/packets/watch_list.py +119 -0
- aprsd/plugin.py +474 -284
- aprsd/plugin_utils.py +86 -0
- aprsd/plugins/__init__.py +0 -0
- aprsd/plugins/email.py +709 -0
- aprsd/plugins/fortune.py +61 -0
- aprsd/plugins/location.py +179 -0
- aprsd/plugins/notify.py +61 -0
- aprsd/plugins/ping.py +31 -0
- aprsd/plugins/time.py +115 -0
- aprsd/plugins/version.py +31 -0
- aprsd/plugins/weather.py +405 -0
- aprsd/stats/__init__.py +20 -0
- aprsd/stats/app.py +49 -0
- aprsd/stats/collector.py +37 -0
- aprsd/threads/__init__.py +11 -0
- aprsd/threads/aprsd.py +119 -0
- aprsd/threads/keep_alive.py +131 -0
- aprsd/threads/log_monitor.py +121 -0
- aprsd/threads/registry.py +56 -0
- aprsd/threads/rx.py +354 -0
- aprsd/threads/stats.py +44 -0
- aprsd/threads/tx.py +255 -0
- aprsd/utils/__init__.py +218 -0
- aprsd/utils/counter.py +51 -0
- aprsd/utils/json.py +80 -0
- aprsd/utils/objectstore.py +123 -0
- aprsd/utils/ring_buffer.py +40 -0
- aprsd/utils/trace.py +180 -0
- aprsd/web/__init__.py +0 -0
- aprsd/web/admin/__init__.py +0 -0
- aprsd/web/admin/static/css/index.css +84 -0
- aprsd/web/admin/static/css/prism.css +4 -0
- aprsd/web/admin/static/css/tabs.css +35 -0
- aprsd/web/admin/static/images/Untitled.png +0 -0
- aprsd/web/admin/static/images/aprs-symbols-16-0.png +0 -0
- aprsd/web/admin/static/images/aprs-symbols-16-1.png +0 -0
- aprsd/web/admin/static/images/aprs-symbols-64-0.png +0 -0
- aprsd/web/admin/static/images/aprs-symbols-64-1.png +0 -0
- aprsd/web/admin/static/images/aprs-symbols-64-2.png +0 -0
- aprsd/web/admin/static/js/charts.js +235 -0
- aprsd/web/admin/static/js/echarts.js +465 -0
- aprsd/web/admin/static/js/logs.js +26 -0
- aprsd/web/admin/static/js/main.js +231 -0
- aprsd/web/admin/static/js/prism.js +12 -0
- aprsd/web/admin/static/js/send-message.js +114 -0
- aprsd/web/admin/static/js/tabs.js +28 -0
- aprsd/web/admin/templates/index.html +196 -0
- aprsd/web/chat/static/css/chat.css +115 -0
- aprsd/web/chat/static/css/index.css +66 -0
- aprsd/web/chat/static/css/style.css.map +1 -0
- aprsd/web/chat/static/css/tabs.css +41 -0
- aprsd/web/chat/static/css/upstream/bootstrap.min.css +6 -0
- aprsd/web/chat/static/css/upstream/font.woff2 +0 -0
- aprsd/web/chat/static/css/upstream/google-fonts.css +23 -0
- aprsd/web/chat/static/css/upstream/jquery-ui.css +1311 -0
- aprsd/web/chat/static/css/upstream/jquery.toast.css +28 -0
- aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Bold.woff +0 -0
- aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Bold.woff2 +0 -0
- aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Regular.woff +0 -0
- aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Regular.woff2 +0 -0
- aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/icons.woff +0 -0
- aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/icons.woff2 +0 -0
- aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/outline-icons.woff +0 -0
- aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/outline-icons.woff2 +0 -0
- aprsd/web/chat/static/images/Untitled.png +0 -0
- aprsd/web/chat/static/images/aprs-symbols-16-0.png +0 -0
- aprsd/web/chat/static/images/aprs-symbols-16-1.png +0 -0
- aprsd/web/chat/static/images/aprs-symbols-64-0.png +0 -0
- aprsd/web/chat/static/images/aprs-symbols-64-1.png +0 -0
- aprsd/web/chat/static/images/aprs-symbols-64-2.png +0 -0
- aprsd/web/chat/static/images/globe.svg +3 -0
- aprsd/web/chat/static/js/gps.js +84 -0
- aprsd/web/chat/static/js/main.js +45 -0
- aprsd/web/chat/static/js/send-message.js +585 -0
- aprsd/web/chat/static/js/tabs.js +28 -0
- aprsd/web/chat/static/js/upstream/bootstrap.bundle.min.js +7 -0
- aprsd/web/chat/static/js/upstream/jquery-3.7.1.min.js +2 -0
- aprsd/web/chat/static/js/upstream/jquery-ui.min.js +13 -0
- aprsd/web/chat/static/js/upstream/jquery.toast.js +374 -0
- aprsd/web/chat/static/js/upstream/semantic.min.js +11 -0
- aprsd/web/chat/static/js/upstream/socket.io.min.js +7 -0
- aprsd/web/chat/templates/index.html +139 -0
- aprsd/wsgi.py +315 -0
- aprsd-3.4.2.dist-info/AUTHORS +13 -0
- aprsd-3.4.2.dist-info/LICENSE +175 -0
- aprsd-3.4.2.dist-info/METADATA +793 -0
- aprsd-3.4.2.dist-info/RECORD +133 -0
- {aprsd-1.0.0.dist-info → aprsd-3.4.2.dist-info}/WHEEL +1 -1
- aprsd-3.4.2.dist-info/entry_points.txt +8 -0
- aprsd/fake_aprs.py +0 -83
- aprsd/utils.py +0 -166
- aprsd-1.0.0.dist-info/AUTHORS +0 -6
- aprsd-1.0.0.dist-info/METADATA +0 -181
- aprsd-1.0.0.dist-info/RECORD +0 -13
- aprsd-1.0.0.dist-info/entry_points.txt +0 -4
- aprsd-1.0.0.dist-info/pbr.json +0 -1
- /aprsd/{fuzzyclock.py → utils/fuzzyclock.py} +0 -0
- {aprsd-1.0.0.dist-info → aprsd-3.4.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,133 @@
|
|
1
|
+
aprsd/__init__.py,sha256=ci_49KK2a4GXyxcM2lFZfNAOsBfXzh0yayIGQazw56I,687
|
2
|
+
aprsd/cli_helper.py,sha256=AgSSn6oTUdCDv4Ne1Jyg_0bi7GwINBBKotTLk_QE-cY,4568
|
3
|
+
aprsd/exception.py,sha256=FyeehwYENwsRKyrU2WmgEPmcHsDLjdGRAe35f01Bu5A,502
|
4
|
+
aprsd/main.py,sha256=lNK3vogRN2ikSgBl-5gMxN3kwGq_ePsSYKZFz6f0FDQ,4663
|
5
|
+
aprsd/plugin.py,sha256=qgX_XW_U0LA0xcugMS2z6fdTGAm4DD2d3mo_JG3rfZU,17327
|
6
|
+
aprsd/plugin_utils.py,sha256=xKQbliwikJxw_E5TGK_BcBPXkHeJ1PqVxSCFcDbf1xg,2507
|
7
|
+
aprsd/wsgi.py,sha256=EsRRetouRSsQp5GCJdagybmgRXCBQeLl8rcdBUPDv7Y,8720
|
8
|
+
aprsd/client/__init__.py,sha256=aajKndFPk259RLTUuobVDleJmOENHvdRVodfhY5BmX8,348
|
9
|
+
aprsd/client/aprsis.py,sha256=QsqBgkSYQDD90yugwkJVousj51KNlQugFdIJX140OXg,4270
|
10
|
+
aprsd/client/base.py,sha256=C6mXrt2DWgsAjfm1BGyvRHZ9TRCiL472g9WDtSSw56s,2433
|
11
|
+
aprsd/client/factory.py,sha256=vllKiMAwNRfFClY9J_Z2aRcuPElMCBAXNd1zh3GGjVU,2184
|
12
|
+
aprsd/client/fake.py,sha256=-IMMpGwoQLbm0uW2eLkAADNySPj5zntBOt-tEfoF-gQ,1028
|
13
|
+
aprsd/client/kiss.py,sha256=y9qAJPmmtyWUy2BoMT_lrpw3fY0Ggv3smWvQabdImUI,2945
|
14
|
+
aprsd/client/stats.py,sha256=0MUS3IVfYgEX0Aan-lMz3VDi7_jCzVhacSN9XIQVJfw,1040
|
15
|
+
aprsd/client/drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
|
+
aprsd/client/drivers/aprsis.py,sha256=V3wuCavJC_c8zezQChFP2M7dV8IScHUOTAZOKGzkL1w,7353
|
17
|
+
aprsd/client/drivers/fake.py,sha256=TyqwQ4XYzbT83r0jSBI-oyl9q6BK60TgVuFm2_nkrnw,2059
|
18
|
+
aprsd/client/drivers/kiss.py,sha256=XvXvBgpv_i1kgV5MmdTR5DwRXEiT86M49Pa7vw8-gsA,3350
|
19
|
+
aprsd/cmds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
|
+
aprsd/cmds/completion.py,sha256=KZNniU_9pTmLtItXzl-ATcLn9vi_0795pJ5D4lZXFG8,799
|
21
|
+
aprsd/cmds/dev.py,sha256=5RmGvdrObg1hjr93jLCpq2Fql6ZRPWvXcx9ZU2SNj2A,4393
|
22
|
+
aprsd/cmds/fetch_stats.py,sha256=dVvhOWpATNGq0e_hbLe47MZ2dCLOO3XTd6zzqqQ1Lp8,4988
|
23
|
+
aprsd/cmds/healthcheck.py,sha256=mVrBIasdCnw-_vzuh15p4H1TFmiGg80WVXgXBcd2PMg,2628
|
24
|
+
aprsd/cmds/list_plugins.py,sha256=gSIa7uMZAvXylJ89GI3RU9wj6TPioREvBNfClVyfiOM,10653
|
25
|
+
aprsd/cmds/listen.py,sha256=1KIe2qD7cWXX58L1d57r2PtTccXPhuDz5KkkyqPlGWw,7160
|
26
|
+
aprsd/cmds/send_message.py,sha256=lNIjlezdntAAqGwgXQ4sJwKnUBnKUyCwok68jc35MYs,4669
|
27
|
+
aprsd/cmds/server.py,sha256=3WGfscWUK_b5OVOqEeAtrGB7Cu51Epa1xQo6GhgAewU,4168
|
28
|
+
aprsd/cmds/webchat.py,sha256=1T70AI2bdwxWVSdP-DrqALsVPxJ6n4EvJdJzvCjLy2w,20197
|
29
|
+
aprsd/conf/__init__.py,sha256=6j-N6jT49OYcp8dD8oZGt7mxWSOSUnWXeTIZW_C0bmw,1725
|
30
|
+
aprsd/conf/client.py,sha256=w_Z6Pc5LUYzJzDsfhCcnMBLkPi9njNdCGOe3GfbpGaA,3029
|
31
|
+
aprsd/conf/common.py,sha256=qzOgKxby1I-9_fQEAZ7jjnA2f4FLZKby9rhTFSaQQLY,8966
|
32
|
+
aprsd/conf/log.py,sha256=v5C2Lda6x39IdamHpelOY6tDHPkqHyx_qmPF3WEmeAE,1424
|
33
|
+
aprsd/conf/opts.py,sha256=Jq1DPyDdNyN2rbuHq8O-lF2Entkb9tFTbh9gjZwWC5s,2701
|
34
|
+
aprsd/conf/plugin_common.py,sha256=pqYNKKwHTYVI-yUnrX3MZhrQz8fVx6arZN7VfAIbnzs,5999
|
35
|
+
aprsd/conf/plugin_email.py,sha256=IB8G_vTCC-6HVGx9y1PP2vKXfXRzlEx9lEFXdIIGHzA,2332
|
36
|
+
aprsd/log/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
|
+
aprsd/log/log.py,sha256=cd1bMGdlcWHW393btpAw1cc3oYD0nEzY5O596MO6H94,3884
|
38
|
+
aprsd/packets/__init__.py,sha256=ELcYtnQKDvdCRhQmhiHaKG4w5JYl2foeWxnqTqsB-08,786
|
39
|
+
aprsd/packets/collector.py,sha256=VhuHj2CRxVtaC6QDKiYMnxRzNVj-fc7wkMyPpTl83Og,2322
|
40
|
+
aprsd/packets/core.py,sha256=Ke6WDofzpMZSOdDfGsxZal8vdJrKUXLedDXGu7FcAZg,27400
|
41
|
+
aprsd/packets/log.py,sha256=mqYq06mK4JgESPKZ4JQ6vWJqorTSp73u7IiITqdlWwE,5347
|
42
|
+
aprsd/packets/packet_list.py,sha256=MGLatHvdKcQvuFmeWlHsHIB0jrYMD9eszeISaL8-GYw,3304
|
43
|
+
aprsd/packets/seen_list.py,sha256=fV87eyXeFxaZKqWfY1GOCQ6zfnjI1Or6i3KS_qJLuoA,1375
|
44
|
+
aprsd/packets/tracker.py,sha256=Fr7B9Ex2kikmAkUz0HNUEsx9p60ap9L7A96bkv9WaO0,2950
|
45
|
+
aprsd/packets/watch_list.py,sha256=TcvQsleypvxI2o_fbTr4sAAlmjRb9YpC7LbyNxTwfic,3728
|
46
|
+
aprsd/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
|
+
aprsd/plugins/email.py,sha256=U0v4crh5uSDWrEes7HHPpXI6eyF7ySYyqqKp2j1klDs,23627
|
48
|
+
aprsd/plugins/fortune.py,sha256=XCSIaZ9JXC3LZOMV5tSr3dAvbVvIn4xSUdWxpZHStfc,1573
|
49
|
+
aprsd/plugins/location.py,sha256=E1i-dO11br2bmmAqTjoFI2vzS_o0T6xwCakUCr05_qY,6464
|
50
|
+
aprsd/plugins/notify.py,sha256=5Qk7P1ZsFl8pNYQMIBmVYnTcKua9gzvgkUwbrcQ6Byc,1969
|
51
|
+
aprsd/plugins/ping.py,sha256=A3yLMPUDU-PA1Q98xStd0WM04MZvGn3FzVpGKjyoXDc,763
|
52
|
+
aprsd/plugins/time.py,sha256=59-tMl7ogccLobWl9hMDm8mUVXdqW6kB5javrtp0rok,3535
|
53
|
+
aprsd/plugins/version.py,sha256=NAPFKQ0lQqgjoDyTVy8tZcRGmdcJE_ZogRElDz27V2U,839
|
54
|
+
aprsd/plugins/weather.py,sha256=iZ4Zv_23-2dquNKXhsiimFVlMEVoBNKyom4LtORwuoU,13333
|
55
|
+
aprsd/stats/__init__.py,sha256=AM4GoTleOfBBitcCd6E432-jlg2dKVnL5Yw4OtcW25E,892
|
56
|
+
aprsd/stats/app.py,sha256=axqMA137zKqU03yO8XI5f1QE8ajmr9YK0J9O9m4iSzo,1378
|
57
|
+
aprsd/stats/collector.py,sha256=RF4QvbXa3a96ejS5TPfrtSiShMJp208Cb81-K3o_iMo,1197
|
58
|
+
aprsd/threads/__init__.py,sha256=b8Dma0cWE7356WU_Ehvm0RtL4-zCJNUchPFArJd2Gtw,274
|
59
|
+
aprsd/threads/aprsd.py,sha256=r2WlvtND0YTpq8jotRacZegD4WjX8msPDpl3ccqZo_Y,3292
|
60
|
+
aprsd/threads/keep_alive.py,sha256=9rvzPjgpipfk_Ze47w8rnmWomdrn3sd3uUBVk9rta_I,5258
|
61
|
+
aprsd/threads/log_monitor.py,sha256=_-ku02-Sy8m2sG1HFHP2Q_KfzUQfwjd4xaJ5XQlNUTw,3368
|
62
|
+
aprsd/threads/registry.py,sha256=5DuzNSwhOEwI0Gl5j9e286uqbxzKLSHzInfPy61r7PI,1702
|
63
|
+
aprsd/threads/rx.py,sha256=_tO4agZpjb52snaIi3RbnEwaBTGIS0fzaK7pnn45QPk,13463
|
64
|
+
aprsd/threads/stats.py,sha256=Yey3B2iuGUQsNuUiFxvXKJU_1pif8gfOb5uP_U2-hS8,959
|
65
|
+
aprsd/threads/tx.py,sha256=W5mP2voefECb4UWf-BXfaFjrYLCbsjAcNmLWl10ntEo,8322
|
66
|
+
aprsd/utils/__init__.py,sha256=n2LtDxMVyFrStSJYOFnWbt3blTSUDrM17-CPJJDDxw0,6336
|
67
|
+
aprsd/utils/counter.py,sha256=obIO0d9qCuhlvZI8Xf4DrjFlgHh-EuMZTVGv6gzQBkM,1202
|
68
|
+
aprsd/utils/fuzzyclock.py,sha256=qKV8SYZhQGOHG9biF8TeueLb6RMppspx1Zg4IOy1Z10,3265
|
69
|
+
aprsd/utils/json.py,sha256=LR2g-sealCRyXnujjTNxNYUxBagrdBqYQxNLYJQGYaM,2487
|
70
|
+
aprsd/utils/objectstore.py,sha256=b4tNw21lQJ-g6vGN_0Hhc_VRbGiCc5tAZ2jszhRtfyM,3541
|
71
|
+
aprsd/utils/ring_buffer.py,sha256=lWWuw7lEbc2URhqAJfRLjpXBDLiK6UUWzk3j2VFnERQ,1111
|
72
|
+
aprsd/utils/trace.py,sha256=oya2ElYKn04yanmAoynaCnETJHvEeI_du-DCIApZDsA,5558
|
73
|
+
aprsd/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
74
|
+
aprsd/web/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
75
|
+
aprsd/web/admin/static/css/index.css,sha256=A0knpKbvbu2hxwV4yHXzb7l712GviOfEM4fl1NkjhEc,1282
|
76
|
+
aprsd/web/admin/static/css/prism.css,sha256=s2Izg4hP_qkrFH2sS2VN-ABdXMrEb8QFGLsNop_Nlx0,2671
|
77
|
+
aprsd/web/admin/static/css/tabs.css,sha256=bFU7TDkH7QLFcnCcMy2B8iVRYczTStlgpwxI2vpnLmw,644
|
78
|
+
aprsd/web/admin/static/images/Untitled.png,sha256=j03PNbZ_02asRRKWcezQUF79L283afDdrAcNBMqYFhk,37797
|
79
|
+
aprsd/web/admin/static/images/aprs-symbols-16-0.png,sha256=Wd1Mbh6L4fYYmjRR01a0TzCVKm8-rqfBlNSV8WFx4g4,52962
|
80
|
+
aprsd/web/admin/static/images/aprs-symbols-16-1.png,sha256=cKj--7nEAir_Br_Zp3-vtUhx2v5sGakuPtJzrmGhyrE,48951
|
81
|
+
aprsd/web/admin/static/images/aprs-symbols-64-0.png,sha256=Wd1Mbh6L4fYYmjRR01a0TzCVKm8-rqfBlNSV8WFx4g4,52962
|
82
|
+
aprsd/web/admin/static/images/aprs-symbols-64-1.png,sha256=cKj--7nEAir_Br_Zp3-vtUhx2v5sGakuPtJzrmGhyrE,48951
|
83
|
+
aprsd/web/admin/static/images/aprs-symbols-64-2.png,sha256=OIP7l9temgE-GfB8s29fytJ59GlFQ3TUpEqAA0Gzs2I,40716
|
84
|
+
aprsd/web/admin/static/js/charts.js,sha256=spWghq8S-F9hIqpKUNNaWjxSeJxBE3XrUEac6oRU-kw,7354
|
85
|
+
aprsd/web/admin/static/js/echarts.js,sha256=iR1LaJcw49qu4fB3nKJ0ilv4WI6cQsDLdNFugv0MGc0,11738
|
86
|
+
aprsd/web/admin/static/js/logs.js,sha256=wIuX-Fxa30O3KVyZzDqwp7bS7FNE-qNNHzik0UmIrgU,658
|
87
|
+
aprsd/web/admin/static/js/main.js,sha256=Ix-otPASp9_zYNoJJAmnQsgeZdAsaxJTPqDPixu-rtU,8128
|
88
|
+
aprsd/web/admin/static/js/prism.js,sha256=38yQvPqke_0dwkM6gVvp24LPl2Xs3oO0GvvLkjb1i6A,27861
|
89
|
+
aprsd/web/admin/static/js/send-message.js,sha256=GPGOOn589WdJhKWxS20FiVKkq7jDFKQQHYQJdW2psAw,3852
|
90
|
+
aprsd/web/admin/static/js/tabs.js,sha256=cRePBekcExNQO54eRVGCnNXB1JHM9uURnv6LNoe8LMs,889
|
91
|
+
aprsd/web/admin/templates/index.html,sha256=w4Qid-R1fK4OFtbe_vnRj9nuWOQ92fIGjD7X5Re1nFE,9083
|
92
|
+
aprsd/web/chat/static/css/chat.css,sha256=83HA_HZGAIAdLRxQeJn9Pg6Q22Qwv4mVm4KcZqyazzU,1847
|
93
|
+
aprsd/web/chat/static/css/index.css,sha256=vtYtiP0EJi2LTIZsSSVXeAtRhKZN1mN78yXhMLlko7o,1056
|
94
|
+
aprsd/web/chat/static/css/style.css.map,sha256=whSiOQyvQ7AYHxykhuFus-Zm9cjkvc5aG186kwrpP4s,174659
|
95
|
+
aprsd/web/chat/static/css/tabs.css,sha256=tMRkFCd7frgfNXFrTmMfDfYRr4vOfCgqMSvfKtP-RDw,720
|
96
|
+
aprsd/web/chat/static/css/upstream/bootstrap.min.css,sha256=svwVP4WOU1MoR1TXJrmgIp5yToNuswkXqES3UeybGI8,232949
|
97
|
+
aprsd/web/chat/static/css/upstream/font.woff2,sha256=zpkGCyyeaAB_KUJJmzJGE9yDUZxhMb4ChY5gjjImxLw,883712
|
98
|
+
aprsd/web/chat/static/css/upstream/google-fonts.css,sha256=c1h0sMlh_aMph2FLV2XgzuiKqmqvp49J1Z6ZwWq3O7k,549
|
99
|
+
aprsd/web/chat/static/css/upstream/jquery-ui.css,sha256=-bdRwc0NKw-Rhi25h_7Z3aSHWLFeb0LKZ3lrRfSyFwI,36536
|
100
|
+
aprsd/web/chat/static/css/upstream/jquery.toast.css,sha256=SubYRHj60jcbWrx0wD_6iqsRyVysJA762BP7lRH6qSo,4887
|
101
|
+
aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Bold.woff,sha256=fOvpeP3mYealppCq2b7YNwMxi_WMKQEXTe_2qpuqVkM,72376
|
102
|
+
aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Bold.woff2,sha256=J2QBYyqZhAC-iliVA49PctN2DTw9aq889EXRCcudFUA,44380
|
103
|
+
aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Regular.woff,sha256=nEb3kpsIyHUYqn77vxYB5IXu7YKfFJ4_Ab61ASDNs74,72456
|
104
|
+
aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/LatoLatin-Regular.woff2,sha256=3dTvf5f0NhtghB1ZdTIYpXE0sPmfW0apYSI08cJzOrA,43760
|
105
|
+
aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/icons.woff,sha256=P200iM9lN09vZ2wxU0CwrCvoMr1VJAyAlEjjbvm5YyY,101648
|
106
|
+
aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/icons.woff2,sha256=mDS4KtJuKjdYPSJnahLdLrD-fIA1aiEU0NsaqLOJlTc,78268
|
107
|
+
aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/outline-icons.woff,sha256=y56eaTGSQTzeKx8hwdwdRLb-eyfMK0WOizWdGPn_j04,16276
|
108
|
+
aprsd/web/chat/static/css/upstream/themes/default/assets/fonts/outline-icons.woff2,sha256=5CqIRERIrD1gVJzHwf8sipyschA0wHPYChSkTnlzDMo,13224
|
109
|
+
aprsd/web/chat/static/images/Untitled.png,sha256=j03PNbZ_02asRRKWcezQUF79L283afDdrAcNBMqYFhk,37797
|
110
|
+
aprsd/web/chat/static/images/aprs-symbols-16-0.png,sha256=Wd1Mbh6L4fYYmjRR01a0TzCVKm8-rqfBlNSV8WFx4g4,52962
|
111
|
+
aprsd/web/chat/static/images/aprs-symbols-16-1.png,sha256=cKj--7nEAir_Br_Zp3-vtUhx2v5sGakuPtJzrmGhyrE,48951
|
112
|
+
aprsd/web/chat/static/images/aprs-symbols-64-0.png,sha256=Wd1Mbh6L4fYYmjRR01a0TzCVKm8-rqfBlNSV8WFx4g4,52962
|
113
|
+
aprsd/web/chat/static/images/aprs-symbols-64-1.png,sha256=cKj--7nEAir_Br_Zp3-vtUhx2v5sGakuPtJzrmGhyrE,48951
|
114
|
+
aprsd/web/chat/static/images/aprs-symbols-64-2.png,sha256=OIP7l9temgE-GfB8s29fytJ59GlFQ3TUpEqAA0Gzs2I,40716
|
115
|
+
aprsd/web/chat/static/images/globe.svg,sha256=x7kmRI-9gJaZI4FBlpG53K4ZscmqN_gajnzH-P4DzOI,1197
|
116
|
+
aprsd/web/chat/static/js/gps.js,sha256=8_DFgKvfCf8V54jULhN3GYvP3QKicJfcM-mfVPx6DzQ,2370
|
117
|
+
aprsd/web/chat/static/js/main.js,sha256=IZARmM7l-bNncXSTEo3Oq-SJfyUPPmKoEZPpVoRtXDc,1259
|
118
|
+
aprsd/web/chat/static/js/send-message.js,sha256=jMUqZ4-jUwqVJQjhnYDKpLUl7S93VDGsWXOnRBJdSNw,18851
|
119
|
+
aprsd/web/chat/static/js/tabs.js,sha256=cRePBekcExNQO54eRVGCnNXB1JHM9uURnv6LNoe8LMs,889
|
120
|
+
aprsd/web/chat/static/js/upstream/bootstrap.bundle.min.js,sha256=gGVATfqL6AhR6ukxISDCnWUX6UkUakDC2XchR0dpCDo,80664
|
121
|
+
aprsd/web/chat/static/js/upstream/jquery-3.7.1.min.js,sha256=_JqT3SQfawRcv_BIHPThkBvs0OEvtFFmqPF_lYI_Cxo,87533
|
122
|
+
aprsd/web/chat/static/js/upstream/jquery-ui.min.js,sha256=qdH_gU82QrS5SDHqeQku9i4KeF7Xbe6poSxbqorktPI,253669
|
123
|
+
aprsd/web/chat/static/js/upstream/jquery.toast.js,sha256=V4m4PbwAYUb9yr3uP64y2ogcoS9oQsl4oPLAGaxQnQI,12989
|
124
|
+
aprsd/web/chat/static/js/upstream/semantic.min.js,sha256=AYdrntK9PGcU1ZsyD7fTBJ4o0j1bMeD4xn7P-UagMW4,403125
|
125
|
+
aprsd/web/chat/static/js/upstream/socket.io.min.js,sha256=dYF5MG5zs6ekpbIOXBXelJXquX0gi_c48kkYm8tCaYE,64274
|
126
|
+
aprsd/web/chat/templates/index.html,sha256=9z8JoF3W6SlPndf28iCgdHwiaG9_f9fnk5nXWEfx5wg,6633
|
127
|
+
aprsd-3.4.2.dist-info/AUTHORS,sha256=-4JB7i9LE12SYMbLc4Rk6iXlQ0J7C4mC1RV6-vnO53E,467
|
128
|
+
aprsd-3.4.2.dist-info/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
|
129
|
+
aprsd-3.4.2.dist-info/METADATA,sha256=G25erCky2XI69HPnI27Ia5ti-mK4u7Op3dff4zttSDY,39875
|
130
|
+
aprsd-3.4.2.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
131
|
+
aprsd-3.4.2.dist-info/entry_points.txt,sha256=4fReoJUB-bFqOUK6eeXYYCvTdVLprL7KVH0hWQRP9eM,171
|
132
|
+
aprsd-3.4.2.dist-info/top_level.txt,sha256=v1O96niUcJOTMh9aQnFRknbScJ6mMOwqurdbxeaeSjs,6
|
133
|
+
aprsd-3.4.2.dist-info/RECORD,,
|
aprsd/fake_aprs.py
DELETED
@@ -1,83 +0,0 @@
|
|
1
|
-
import argparse
|
2
|
-
import logging
|
3
|
-
import socketserver
|
4
|
-
import sys
|
5
|
-
import time
|
6
|
-
from logging.handlers import RotatingFileHandler
|
7
|
-
|
8
|
-
from aprsd import utils
|
9
|
-
|
10
|
-
# command line args
|
11
|
-
parser = argparse.ArgumentParser()
|
12
|
-
parser.add_argument(
|
13
|
-
"--loglevel",
|
14
|
-
default="DEBUG",
|
15
|
-
choices=["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"],
|
16
|
-
help="The log level to use for aprsd.log",
|
17
|
-
)
|
18
|
-
parser.add_argument("--quiet", action="store_true", help="Don't log to stdout")
|
19
|
-
|
20
|
-
parser.add_argument("--port", default=9099, type=int, help="The port to listen on .")
|
21
|
-
parser.add_argument("--ip", default="127.0.0.1", help="The IP to listen on ")
|
22
|
-
|
23
|
-
CONFIG = None
|
24
|
-
LOG = logging.getLogger("ARPSSERVER")
|
25
|
-
|
26
|
-
|
27
|
-
# Setup the logging faciility
|
28
|
-
# to disable logging to stdout, but still log to file
|
29
|
-
# use the --quiet option on the cmdln
|
30
|
-
def setup_logging(args):
|
31
|
-
global LOG
|
32
|
-
levels = {
|
33
|
-
"CRITICAL": logging.CRITICAL,
|
34
|
-
"ERROR": logging.ERROR,
|
35
|
-
"WARNING": logging.WARNING,
|
36
|
-
"INFO": logging.INFO,
|
37
|
-
"DEBUG": logging.DEBUG,
|
38
|
-
}
|
39
|
-
log_level = levels[args.loglevel]
|
40
|
-
|
41
|
-
LOG.setLevel(log_level)
|
42
|
-
log_format = "%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]" " %(message)s"
|
43
|
-
date_format = "%m/%d/%Y %I:%M:%S %p"
|
44
|
-
log_formatter = logging.Formatter(fmt=log_format, datefmt=date_format)
|
45
|
-
fh = RotatingFileHandler("aprs-server.log", maxBytes=(10248576 * 5), backupCount=4)
|
46
|
-
fh.setFormatter(log_formatter)
|
47
|
-
LOG.addHandler(fh)
|
48
|
-
|
49
|
-
if not args.quiet:
|
50
|
-
sh = logging.StreamHandler(sys.stdout)
|
51
|
-
sh.setFormatter(log_formatter)
|
52
|
-
LOG.addHandler(sh)
|
53
|
-
|
54
|
-
|
55
|
-
class MyAPRSTCPHandler(socketserver.BaseRequestHandler):
|
56
|
-
def handle(self):
|
57
|
-
# self.request is the TCP socket connected to the client
|
58
|
-
self.data = self.request.recv(1024).strip()
|
59
|
-
LOG.debug("{} wrote:".format(self.client_address[0]))
|
60
|
-
LOG.debug(self.data)
|
61
|
-
# just send back the same data, but upper-cased
|
62
|
-
self.request.sendall(self.data.upper())
|
63
|
-
|
64
|
-
|
65
|
-
def main():
|
66
|
-
global CONFIG
|
67
|
-
args = parser.parse_args()
|
68
|
-
setup_logging(args)
|
69
|
-
LOG.info("Test APRS server starting.")
|
70
|
-
time.sleep(1)
|
71
|
-
|
72
|
-
CONFIG = utils.parse_config(args)
|
73
|
-
|
74
|
-
ip = CONFIG["aprs"]["host"]
|
75
|
-
port = CONFIG["aprs"]["port"]
|
76
|
-
LOG.info("Start server listening on %s:%s" % (args.ip, args.port))
|
77
|
-
|
78
|
-
with socketserver.TCPServer((ip, port), MyAPRSTCPHandler) as server:
|
79
|
-
server.serve_forever()
|
80
|
-
|
81
|
-
|
82
|
-
if __name__ == "__main__":
|
83
|
-
main()
|
aprsd/utils.py
DELETED
@@ -1,166 +0,0 @@
|
|
1
|
-
"""Utilities and helper functions."""
|
2
|
-
|
3
|
-
import errno
|
4
|
-
import os
|
5
|
-
import sys
|
6
|
-
|
7
|
-
import click
|
8
|
-
import yaml
|
9
|
-
|
10
|
-
from aprsd import plugin
|
11
|
-
|
12
|
-
# an example of what should be in the ~/.aprsd/config.yml
|
13
|
-
DEFAULT_CONFIG_DICT = {
|
14
|
-
"ham": {"callsign": "KFART"},
|
15
|
-
"aprs": {
|
16
|
-
"login": "someusername",
|
17
|
-
"password": "somepassword",
|
18
|
-
"host": "noam.aprs2.net",
|
19
|
-
"port": 14580,
|
20
|
-
"logfile": "/tmp/arsd.log",
|
21
|
-
},
|
22
|
-
"shortcuts": {
|
23
|
-
"aa": "5551239999@vtext.com",
|
24
|
-
"cl": "craiglamparter@somedomain.org",
|
25
|
-
"wb": "555309@vtext.com",
|
26
|
-
},
|
27
|
-
"smtp": {
|
28
|
-
"login": "something",
|
29
|
-
"password": "some lame password",
|
30
|
-
"host": "imap.gmail.com",
|
31
|
-
"port": 465,
|
32
|
-
"use_ssl": False,
|
33
|
-
},
|
34
|
-
"imap": {
|
35
|
-
"login": "imapuser",
|
36
|
-
"password": "something here too",
|
37
|
-
"host": "imap.gmail.com",
|
38
|
-
"port": 993,
|
39
|
-
"use_ssl": True,
|
40
|
-
},
|
41
|
-
"aprsd": {
|
42
|
-
"plugin_dir": "~/.config/aprsd/plugins",
|
43
|
-
"enabled_plugins": plugin.CORE_PLUGINS,
|
44
|
-
},
|
45
|
-
}
|
46
|
-
|
47
|
-
DEFAULT_CONFIG_FILE = "~/.config/aprsd/aprsd.yml"
|
48
|
-
|
49
|
-
|
50
|
-
def env(*vars, **kwargs):
|
51
|
-
"""This returns the first environment variable set.
|
52
|
-
if none are non-empty, defaults to '' or keyword arg default
|
53
|
-
"""
|
54
|
-
for v in vars:
|
55
|
-
value = os.environ.get(v, None)
|
56
|
-
if value:
|
57
|
-
return value
|
58
|
-
return kwargs.get("default", "")
|
59
|
-
|
60
|
-
|
61
|
-
def mkdir_p(path):
|
62
|
-
"""Make directory and have it work in py2 and py3."""
|
63
|
-
try:
|
64
|
-
os.makedirs(path)
|
65
|
-
except OSError as exc: # Python >= 2.5
|
66
|
-
if exc.errno == errno.EEXIST and os.path.isdir(path):
|
67
|
-
pass
|
68
|
-
else:
|
69
|
-
raise
|
70
|
-
|
71
|
-
|
72
|
-
def create_default_config():
|
73
|
-
"""Create a default config file."""
|
74
|
-
# make sure the directory location exists
|
75
|
-
config_file_expanded = os.path.expanduser(DEFAULT_CONFIG_FILE)
|
76
|
-
config_dir = os.path.dirname(config_file_expanded)
|
77
|
-
if not os.path.exists(config_dir):
|
78
|
-
click.echo("Config dir '{}' doesn't exist, creating.".format(config_dir))
|
79
|
-
mkdir_p(config_dir)
|
80
|
-
with open(config_file_expanded, "w+") as cf:
|
81
|
-
yaml.dump(DEFAULT_CONFIG_DICT, cf)
|
82
|
-
|
83
|
-
|
84
|
-
def get_config(config_file):
|
85
|
-
"""This tries to read the yaml config from <config_file>."""
|
86
|
-
config_file_expanded = os.path.expanduser(config_file)
|
87
|
-
if os.path.exists(config_file_expanded):
|
88
|
-
with open(config_file_expanded, "r") as stream:
|
89
|
-
config = yaml.load(stream, Loader=yaml.FullLoader)
|
90
|
-
return config
|
91
|
-
else:
|
92
|
-
if config_file == DEFAULT_CONFIG_FILE:
|
93
|
-
click.echo(
|
94
|
-
"{} is missing, creating config file".format(config_file_expanded)
|
95
|
-
)
|
96
|
-
create_default_config()
|
97
|
-
msg = (
|
98
|
-
"Default config file created at {}. Please edit with your "
|
99
|
-
"settings.".format(config_file)
|
100
|
-
)
|
101
|
-
click.echo(msg)
|
102
|
-
else:
|
103
|
-
# The user provided a config file path different from the
|
104
|
-
# Default, so we won't try and create it, just bitch and bail.
|
105
|
-
msg = "Custom config file '{}' is missing.".format(config_file)
|
106
|
-
click.echo(msg)
|
107
|
-
|
108
|
-
sys.exit(-1)
|
109
|
-
|
110
|
-
|
111
|
-
# This method tries to parse the config yaml file
|
112
|
-
# and consume the settings.
|
113
|
-
# If the required params don't exist,
|
114
|
-
# it will look in the environment
|
115
|
-
def parse_config(config_file):
|
116
|
-
# for now we still use globals....ugh
|
117
|
-
global CONFIG
|
118
|
-
|
119
|
-
def fail(msg):
|
120
|
-
click.echo(msg)
|
121
|
-
sys.exit(-1)
|
122
|
-
|
123
|
-
def check_option(config, section, name=None, default=None, default_fail=None):
|
124
|
-
if section in config:
|
125
|
-
|
126
|
-
if name and name not in config[section]:
|
127
|
-
if not default:
|
128
|
-
fail(
|
129
|
-
"'%s' was not in '%s' section of config file" % (name, section)
|
130
|
-
)
|
131
|
-
else:
|
132
|
-
config[section][name] = default
|
133
|
-
else:
|
134
|
-
if (
|
135
|
-
default_fail
|
136
|
-
and name in config[section]
|
137
|
-
and config[section][name] == default_fail
|
138
|
-
):
|
139
|
-
# We have to fail and bail if the user hasn't edited
|
140
|
-
# this config option.
|
141
|
-
fail("Config file needs to be edited from provided defaults.")
|
142
|
-
else:
|
143
|
-
fail("'%s' section wasn't in config file" % section)
|
144
|
-
return config
|
145
|
-
|
146
|
-
config = get_config(config_file)
|
147
|
-
check_option(config, "shortcuts")
|
148
|
-
# special check here to make sure user has edited the config file
|
149
|
-
# and changed the ham callsign
|
150
|
-
check_option(
|
151
|
-
config, "ham", "callsign", default_fail=DEFAULT_CONFIG_DICT["ham"]["callsign"]
|
152
|
-
)
|
153
|
-
check_option(config, "aprs", "login")
|
154
|
-
check_option(config, "aprs", "password")
|
155
|
-
check_option(config, "aprs", "host")
|
156
|
-
check_option(config, "aprs", "port")
|
157
|
-
check_option(config, "aprs", "logfile", "./aprsd.log")
|
158
|
-
check_option(config, "imap", "host")
|
159
|
-
check_option(config, "imap", "login")
|
160
|
-
check_option(config, "imap", "password")
|
161
|
-
check_option(config, "smtp", "host")
|
162
|
-
check_option(config, "smtp", "port")
|
163
|
-
check_option(config, "smtp", "login")
|
164
|
-
check_option(config, "smtp", "password")
|
165
|
-
|
166
|
-
return config
|
aprsd-1.0.0.dist-info/AUTHORS
DELETED
aprsd-1.0.0.dist-info/METADATA
DELETED
@@ -1,181 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: aprsd
|
3
|
-
Version: 1.0.0
|
4
|
-
Summary: Amateur radio APRS daemon which listens for messages and responds
|
5
|
-
Home-page: UNKNOWN
|
6
|
-
Author: Craig Lamparter
|
7
|
-
Author-email: something@somewhere.com
|
8
|
-
License: UNKNOWN
|
9
|
-
Platform: UNKNOWN
|
10
|
-
Classifier: Topic :: Communications :: Ham Radio
|
11
|
-
Classifier: Operating System :: POSIX :: Linux
|
12
|
-
Classifier: Programming Language :: Python
|
13
|
-
Description-Content-Type: text/x-rst; charset=UTF-8
|
14
|
-
Requires-Dist: click
|
15
|
-
Requires-Dist: click-completion
|
16
|
-
Requires-Dist: imapclient
|
17
|
-
Requires-Dist: pluggy
|
18
|
-
Requires-Dist: pbr
|
19
|
-
Requires-Dist: pyyaml
|
20
|
-
Requires-Dist: six
|
21
|
-
Requires-Dist: requests
|
22
|
-
|
23
|
-
=====
|
24
|
-
APRSD
|
25
|
-
=====
|
26
|
-
|
27
|
-
.. image:: https://github.com/craigerl/aprsd/workflows/python/badge.svg
|
28
|
-
:target: https://github.com/craigerl/aprsd/actions
|
29
|
-
|
30
|
-
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
|
31
|
-
:target: https://black.readthedocs.io/en/stable/
|
32
|
-
|
33
|
-
.. image:: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336
|
34
|
-
:target: https://timothycrosley.github.io/isort/
|
35
|
-
|
36
|
-
Listen on amateur radio aprs-is network for messages and respond to them.
|
37
|
-
You must have an amateur radio callsign to use this software. Put your
|
38
|
-
callsign in the "USER" variable and update your aprs-is password in "PASS".
|
39
|
-
You must also have an imap email account available for polling.
|
40
|
-
|
41
|
-
Current messages this will respond to:
|
42
|
-
--------------------------------------
|
43
|
-
|
44
|
-
::
|
45
|
-
|
46
|
-
APRS messages:
|
47
|
-
l(ocation) [callsign] = descriptive current location of your radio
|
48
|
-
8 Miles E Auburn CA 1673' 39.92150,-120.93950 0.1h ago
|
49
|
-
w(eather) = weather forecast for your radio's current position
|
50
|
-
58F(58F/46F) Partly Cloudy. Tonight, Heavy Rain.
|
51
|
-
t(ime) = respond with the current time
|
52
|
-
f(ortune) = respond with a short fortune
|
53
|
-
-email_addr email text = send an email, say "mapme" to send a current position/map
|
54
|
-
-2 = resend the last 2 emails from your imap inbox to this radio
|
55
|
-
p(ing) = respond with Pong!/time
|
56
|
-
anything else = respond with usage
|
57
|
-
|
58
|
-
|
59
|
-
Meanwhile this code will monitor a single imap mailbox and forward email
|
60
|
-
to your BASECALLSIGN over the air. Only radios using the BASECALLSIGN are allowed
|
61
|
-
to send email, so consider this security risk before using this (or Amatuer radio in
|
62
|
-
general). Email is single user at this time.
|
63
|
-
|
64
|
-
There are additional parameters in the code (sorry), so be sure to set your
|
65
|
-
email server, and associated logins, passwords. search for "yourdomain",
|
66
|
-
"password". Search for "shortcuts" to setup email aliases as well.
|
67
|
-
|
68
|
-
|
69
|
-
Installation:
|
70
|
-
-------------
|
71
|
-
|
72
|
-
pip install aprsd
|
73
|
-
|
74
|
-
Example usage:
|
75
|
-
--------------
|
76
|
-
|
77
|
-
aprsd -h
|
78
|
-
|
79
|
-
Example output:
|
80
|
-
---------------
|
81
|
-
|
82
|
-
SEND EMAIL (radio to smtp server)
|
83
|
-
---------------------------------
|
84
|
-
|
85
|
-
::
|
86
|
-
|
87
|
-
Received message______________
|
88
|
-
Raw : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :-user@host.com test new shortcuts global, radio to pc{29
|
89
|
-
From : KM6XXX
|
90
|
-
Message : -user@host.com test new shortcuts global, radio to pc
|
91
|
-
Msg number : 29
|
92
|
-
|
93
|
-
Sending Email_________________
|
94
|
-
To : user@host.com
|
95
|
-
Subject : KM6XXX
|
96
|
-
Body : test new shortcuts global, radio to pc
|
97
|
-
|
98
|
-
Sending ack __________________ Tx(3)
|
99
|
-
Raw : KM6XXX-9>APRS::KM6XXX :ack29
|
100
|
-
To : KM6XXX
|
101
|
-
Ack number : 29
|
102
|
-
|
103
|
-
|
104
|
-
RECEIVE EMAIL (imap server to radio)
|
105
|
-
------------------------------------
|
106
|
-
|
107
|
-
::
|
108
|
-
|
109
|
-
Sending message_______________ 6(Tx3)
|
110
|
-
Raw : KM6XXX-9>APRS::KM6XXX :-somebody@gmail.com email from internet to radio{6
|
111
|
-
To : KM6XXX
|
112
|
-
Message : -somebody@gmail.com email from internet to radio
|
113
|
-
|
114
|
-
Received message______________
|
115
|
-
Raw : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :ack6
|
116
|
-
From : KM6XXX
|
117
|
-
Message : ack6
|
118
|
-
Msg number : 0
|
119
|
-
|
120
|
-
|
121
|
-
WEATHER
|
122
|
-
-------
|
123
|
-
|
124
|
-
::
|
125
|
-
|
126
|
-
Received message______________
|
127
|
-
Raw : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :weather{27
|
128
|
-
From : KM6XXX
|
129
|
-
Message : weather
|
130
|
-
Msg number : 27
|
131
|
-
|
132
|
-
Sending message_______________ 6(Tx3)
|
133
|
-
Raw : KM6XXX-9>APRS::KM6XXX :58F(58F/46F) Partly cloudy. Tonight, Heavy Rain.{6
|
134
|
-
To : KM6XXX
|
135
|
-
Message : 58F(58F/46F) Party Cloudy. Tonight, Heavy Rain.
|
136
|
-
|
137
|
-
Sending ack __________________ Tx(3)
|
138
|
-
Raw : KM6XXX-9>APRS::KM6XXX :ack27
|
139
|
-
To : KM6XXX
|
140
|
-
Ack number : 27
|
141
|
-
|
142
|
-
Received message______________
|
143
|
-
Raw : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :ack6
|
144
|
-
From : KM6XXX
|
145
|
-
Message : ack6
|
146
|
-
Msg number : 0
|
147
|
-
|
148
|
-
|
149
|
-
LOCATION
|
150
|
-
--------
|
151
|
-
|
152
|
-
::
|
153
|
-
|
154
|
-
Received message______________
|
155
|
-
Raw : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :location{28
|
156
|
-
From : KM6XXX
|
157
|
-
Message : location
|
158
|
-
Msg number : 28
|
159
|
-
|
160
|
-
Sending message_______________ 7(Tx3)
|
161
|
-
Raw : KM6XXX-9>APRS::KM6XXX :8 Miles NE Auburn CA 1673' 39.91150,-120.93450 0.1h ago{7
|
162
|
-
To : KM6XXX
|
163
|
-
Message : 8 Miles E Auburn CA 1673' 38.91150,-120.93450 0.1h ago
|
164
|
-
|
165
|
-
Sending ack __________________ Tx(3)
|
166
|
-
Raw : KM6XXX-9>APRS::KM6XXX :ack28
|
167
|
-
To : KM6XXX
|
168
|
-
Ack number : 28
|
169
|
-
|
170
|
-
Received message______________
|
171
|
-
Raw : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :ack7
|
172
|
-
From : KM6XXX
|
173
|
-
Message : ack7
|
174
|
-
Msg number : 0
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
AND... ping, fortune, time.....
|
179
|
-
|
180
|
-
|
181
|
-
|
aprsd-1.0.0.dist-info/RECORD
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
aprsd/__init__.py,sha256=ve_76nUSxKBREqMNxQjtQQMBRRkQtzUE4Tve9PcQ8-I,655
|
2
|
-
aprsd/fake_aprs.py,sha256=wN0O4qi4_-BuqHr7LyOq-4iJDnIVpRqxHLr31LqGYlI,2445
|
3
|
-
aprsd/fuzzyclock.py,sha256=qKV8SYZhQGOHG9biF8TeueLb6RMppspx1Zg4IOy1Z10,3265
|
4
|
-
aprsd/main.py,sha256=yMJxDxdSAv2h-Yj07bpfJ6Y3ldyAlB2V3BDwxduTpDk,31571
|
5
|
-
aprsd/plugin.py,sha256=CAg2mKKjLgy6vZuR772rA0R-rc5AYUyRXHK_ejZ9SRY,10777
|
6
|
-
aprsd/utils.py,sha256=qrTGEB6L_RIMEm5alrebDOEEJzHfxEXTPYhpeNuVfJw,5218
|
7
|
-
aprsd-1.0.0.dist-info/AUTHORS,sha256=gBdtwFJh6SQMSJS0Ha6MoZsvdD6GR6yayh5B1i0He3U,194
|
8
|
-
aprsd-1.0.0.dist-info/METADATA,sha256=wjhMuwlXOM2AmB-1twzMpzexPwGfjKA13pVIlXj0igQ,5424
|
9
|
-
aprsd-1.0.0.dist-info/WHEEL,sha256=S6zePDbUAjzMmpYOg2cHDxuYFWw7WiOXt6ogM6hIB5Q,92
|
10
|
-
aprsd-1.0.0.dist-info/entry_points.txt,sha256=2sMpkDcf0rN1QC1SLEkhRBskHFaoG1NeGngXlDV2J7g,76
|
11
|
-
aprsd-1.0.0.dist-info/pbr.json,sha256=A4lVHnONNoW5b6hi2D1jZ5lsU8Cmk-ltC5Gwhbxp9EU,46
|
12
|
-
aprsd-1.0.0.dist-info/top_level.txt,sha256=v1O96niUcJOTMh9aQnFRknbScJ6mMOwqurdbxeaeSjs,6
|
13
|
-
aprsd-1.0.0.dist-info/RECORD,,
|
aprsd-1.0.0.dist-info/pbr.json
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"git_version": "e1edbe6", "is_release": true}
|
File without changes
|
File without changes
|