Merge pull request #666 from chrox/zsync

fix zsync cannot run properly in Kindle due to firewall
pull/667/head
Qingping Hou 10 years ago
commit 6cc8c671a7

@ -5,6 +5,7 @@ local Event = require("ui/event")
local MessageQueue = require("ui/message/messagequeue")
local dummy = require("ffi/zeromq_h")
local czmq = ffi.load("libs/libczmq.so.1")
local filemq = ffi.load("libs/libfmq.so.1")
local FileMessageQueue = MessageQueue:new{
@ -14,11 +15,15 @@ local FileMessageQueue = MessageQueue:new{
function FileMessageQueue:init()
if self.client ~= nil then
self.fmq_recv = filemq.fmq_client_recv_nowait
self.fmq_recv = filemq.fmq_client_recv
self.filemq = self.client
self.poller = czmq.zpoller_new(filemq.fmq_client_handle(self.client), nil)
elseif self.server ~= nil then
self.fmq_recv = filemq.fmq_server_recv_nowait
-- TODO: currently fmq_server_recv API is not available
--self.fmq_recv = filemq.fmq_server_recv
self.filemq = self.server
-- TODO: currently fmq_server_handle API is not available
--self.poller = czmq.zpoller_new(filemq.fmq_server_handle(self.server), nil)
end
end
@ -31,13 +36,18 @@ function FileMessageQueue:stop()
DEBUG("stop filemq server")
filemq.fmq_server_destroy(ffi.new('fmq_server_t *[1]', self.server))
end
if self.poller ~= nil then
czmq.zpoller_destroy(ffi.new('zpoller_t *[1]', self.poller))
end
end
function FileMessageQueue:waitEvent()
local msg = self.fmq_recv(self.filemq)
while msg ~= nil do
table.insert(self.messages, msg)
msg = self.fmq_recv(self.filemq)
if not self.poller then return end
if czmq.zpoller_wait(self.poller, 0) ~= nil then
local msg = self.fmq_recv(self.filemq)
if msg ~= nil then
table.insert(self.messages, msg)
end
end
return self:handleZMsgs(self.messages)
end

@ -67,7 +67,7 @@ function MessageQueue:handleZMsgs(messages)
local message_size = czmq.zmsg_size(messages[1])
local command = pop_string()
DEBUG("ØMQ message", command)
if command == "ENTER" and #messages >= 4 then
if command == "ENTER" then
local id = pop_string()
local name = pop_string()
local header = pop_header()

@ -5,6 +5,7 @@ local Event = require("ui/event")
local MessageQueue = require("ui/message/messagequeue")
local dummy = require("ffi/zeromq_h")
local czmq = ffi.load("libs/libczmq.so.1")
local zyre = ffi.load("libs/libzyre.so.1")
local ZyreMessageQueue = MessageQueue:new{
@ -13,12 +14,15 @@ local ZyreMessageQueue = MessageQueue:new{
function ZyreMessageQueue:start()
self.node = zyre.zyre_new()
self.poller = czmq.zpoller_new(zyre.zyre_socket(self.node), nil)
for key, value in pairs(self.header) do
zyre.zyre_set_header(self.node, key, value)
end
zyre.zyre_set_verbose(self.node)
--zyre.zyre_set_verbose(self.node)
zyre.zyre_set_interface(self.node, "wlan0")
zyre.zyre_start(self.node)
zyre.zyre_join(self.node, "GLOBAL")
--zyre.zyre_dump(self.node)
end
function ZyreMessageQueue:stop()
@ -27,13 +31,17 @@ function ZyreMessageQueue:stop()
zyre.zyre_stop(self.node)
zyre.zyre_destroy(ffi.new('zyre_t *[1]', self.node))
end
if self.poller ~= nil then
czmq.zpoller_destroy(ffi.new('zpoller_t *[1]', self.poller))
end
end
function ZyreMessageQueue:waitEvent()
local msg = zyre.zyre_recv_nowait(self.node)
while msg ~= nil do
table.insert(self.messages, msg)
msg = zyre.zyre_recv_nowait(self.node)
if czmq.zpoller_wait(self.poller, 0) ~= nil then
local msg = zyre.zyre_recv(self.node)
if msg ~= nil then
table.insert(self.messages, msg)
end
end
return self:handleZMsgs(self.messages)
end

@ -317,7 +317,7 @@ function UIManager:run()
if #self._zeromqs > 0 then
-- pending message queue, wait 100ms for input
input_event = Input:waitEvent(1000*100)
if input_event and input_event.handler == "onInputError" then
if not input_event or input_event.handler == "onInputError" then
for _, zeromq in ipairs(self._zeromqs) do
input_event = zeromq:waitEvent()
if input_event then break end

@ -33,6 +33,10 @@ export TESSDATA_PREFIX="data"
# export dict directory
export STARDICT_DATA_DIR="data/dict"
# accept input ports for zsync plugin
iptables -A INPUT -i wlan0 -p udp --dport 5670 -j ACCEPT
iptables -A INPUT -i wlan0 -p tcp --dport 49152:49162 -j ACCEPT
# bind-mount system fonts
if ! grep /mnt/us/koreader/fonts/host /proc/mounts ; then
mount -o bind /usr/java/lib/fonts /mnt/us/koreader/fonts/host
@ -120,3 +124,7 @@ if [ "${STOP_FRAMEWORK}" == "no" -a "${INIT_TYPE}" == "upstart" ] ; then
lipc-set-prop com.lab126.pillow disableEnablePillow enable
fi
# restore firewall rules
iptables -D INPUT -i wlan0 -p udp --dport 5670 -j ACCEPT
iptables -D INPUT -i wlan0 -p tcp --dport 49152:49162 -j ACCEPT

@ -10,13 +10,21 @@ export TESSDATA_PREFIX="data"
# export dict directory
export STARDICT_DATA_DIR="data/dict"
# accept input ports for zsync plugin
iptables -A INPUT -i wlan0 -p udp --dport 5670 -j ACCEPT
iptables -A INPUT -i wlan0 -p tcp --dport 49152:49162 -j ACCEPT
# exit from nickel
killall nickel
killall hindenburg
# finally call the launcher
./reader.lua /mnt/onboard 2> crash.log
# restore firewall rules
iptables -D INPUT -i wlan0 -p udp --dport 5670 -j ACCEPT
iptables -D INPUT -i wlan0 -p tcp --dport 49152:49162 -j ACCEPT
# back to nickel again :)
( usleep 400000; /etc/init.d/on-animator.sh ) &
(

@ -1 +1 @@
Subproject commit 7108ec4fd145d32d7abe32c25f5811001f5f570c
Subproject commit a276f2fde1fb118f3104b10077fb8a38f2855120

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://github.com/koreader/koreader-base/issues\n"
"POT-Creation-Date: 2014-06-08 06:10+0000\n"
"POT-Creation-Date: 2014-06-25 14:00+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -32,23 +32,23 @@ msgid ""
"5 deg"
msgstr ""
#: frontend/ui/widget/dictquicklookup.lua:124
#: frontend/ui/widget/dictquicklookup.lua:129
msgid ""
"<<"
msgstr ""
#: frontend/ui/widget/dictquicklookup.lua:131
#: frontend/ui/widget/dictquicklookup.lua:136
msgid ""
">>"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:301
#: frontend/ui/widget/dictquicklookup.lua:147
#: frontend/apps/reader/modules/readerhighlight.lua:294
#: frontend/ui/widget/dictquicklookup.lua:152
msgid ""
"Add Note"
msgstr ""
#: frontend/apps/reader/modules/readerfrontlight.lua:107
#: frontend/apps/reader/modules/readerfrontlight.lua:108
msgid ""
"Apply"
msgstr ""
@ -63,7 +63,7 @@ msgid ""
"Auto Straighten"
msgstr ""
#: frontend/apps/reader/modules/readerbookmark.lua:14
#: frontend/apps/reader/modules/readerbookmark.lua:15
msgid ""
"Bookmarks"
msgstr ""
@ -71,6 +71,7 @@ msgstr ""
#: frontend/apps/reader/modules/readergoto.lua:36
#: frontend/ui/widget/confirmbox.lua:26
#: plugins/evernote.koplugin/main.lua:123
#: plugins/zsync.koplugin/main.lua:254
msgid ""
"Cancel"
msgstr ""
@ -85,22 +86,33 @@ msgid ""
"Change font"
msgstr ""
#: plugins/zsync.koplugin/main.lua:201
#: plugins/zsync.koplugin/main.lua:211
msgid ""
"Choose inbox"
msgstr ""
#: frontend/ui/data/strings.lua:11
msgid ""
"Columns"
msgstr ""
#: plugins/zsync.koplugin/main.lua:246
msgid ""
"Confirm"
msgstr ""
#: frontend/ui/data/strings.lua:14
msgid ""
"Contrast"
msgstr ""
#: frontend/apps/filemanager/filemanager.lua:85
#: frontend/apps/filemanager/filemanager.lua:86
msgid ""
"Copy"
msgstr ""
#: frontend/apps/filemanager/filemanager.lua:103
#: frontend/apps/filemanager/filemanager.lua:104
msgid ""
"Cut"
msgstr ""
@ -120,9 +132,9 @@ msgid ""
"Defect Size"
msgstr ""
#: frontend/apps/filemanager/filemanager.lua:110
#: frontend/apps/filemanager/filemanager.lua:111
#: frontend/apps/filemanager/filemanagerhistory.lua:30
#: frontend/apps/reader/modules/readerhighlight.lua:193
#: frontend/apps/reader/modules/readerhighlight.lua:186
msgid ""
"Delete"
msgstr ""
@ -137,12 +149,12 @@ msgid ""
"Document Language"
msgstr ""
#: frontend/apps/reader/modules/readermenu.lua:127
#: frontend/apps/reader/modules/readermenu.lua:128
msgid ""
"Document menu"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:200
#: frontend/apps/reader/modules/readerhighlight.lua:193
msgid ""
"Edit"
msgstr ""
@ -191,7 +203,7 @@ msgid ""
"Exported notes in book:"
msgstr ""
#: reader.lua:69
#: reader.lua:71
msgid ""
"File does not exist"
msgstr ""
@ -216,17 +228,17 @@ msgid ""
"Font Weight"
msgstr ""
#: frontend/apps/reader/modules/readerfrontlight.lua:94
#: frontend/apps/reader/modules/readerfrontlight.lua:95
msgid ""
"Frontlight Level"
msgstr ""
#: frontend/apps/reader/modules/readerfrontlight.lua:62
#: frontend/apps/reader/modules/readerfrontlight.lua:63
msgid ""
"Frontlight intensity is set to "
msgstr ""
#: frontend/apps/reader/modules/readerfrontlight.lua:84
#: frontend/apps/reader/modules/readerfrontlight.lua:85
msgid ""
"Frontlight settings"
msgstr ""
@ -252,13 +264,13 @@ msgid ""
msgstr ""
#: frontend/apps/filemanager/filemanagermenu.lua:103
#: frontend/apps/reader/modules/readermenu.lua:93
#: frontend/apps/reader/modules/readermenu.lua:94
msgid ""
"Help"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:293
#: frontend/ui/widget/dictquicklookup.lua:140
#: frontend/apps/reader/modules/readerhighlight.lua:286
#: frontend/ui/widget/dictquicklookup.lua:145
msgid ""
"Highlight"
msgstr ""
@ -288,7 +300,7 @@ msgid ""
"Indentation"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:100
#: frontend/apps/reader/modules/readerhighlight.lua:93
msgid ""
"Invert"
msgstr ""
@ -308,7 +320,7 @@ msgid ""
"Language"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:82
#: frontend/apps/reader/modules/readerhighlight.lua:75
msgid ""
"Lighten"
msgstr ""
@ -349,18 +361,18 @@ msgid ""
"Logout"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:331
#: frontend/apps/reader/modules/readerhighlight.lua:325
msgid ""
"More"
msgstr ""
#: frontend/apps/filemanager/filemanagermenu.lua:85
#: frontend/apps/reader/modules/readermenu.lua:75
#: frontend/apps/reader/modules/readermenu.lua:76
msgid ""
"Night mode"
msgstr ""
#: reader.lua:84
#: reader.lua:86
msgid ""
"No reader engine for this file"
msgstr ""
@ -370,13 +382,13 @@ msgid ""
"Note: "
msgstr ""
#: frontend/apps/reader/modules/readerfrontlight.lua:114
#: frontend/apps/reader/modules/readerfrontlight.lua:115
#: frontend/ui/widget/confirmbox.lua:25
msgid ""
"OK"
msgstr ""
#: reader.lua:74
#: reader.lua:76
msgid ""
"Opening file"
msgstr ""
@ -386,7 +398,7 @@ msgid ""
"Page"
msgstr ""
#: frontend/ui/widget/touchmenu.lua:402
#: frontend/ui/widget/touchmenu.lua:404
msgid ""
"Page "
msgstr ""
@ -401,13 +413,13 @@ msgid ""
"Page Margin"
msgstr ""
#: frontend/apps/filemanager/filemanager.lua:92
#: frontend/apps/filemanager/filemanager.lua:93
msgid ""
"Paste"
msgstr ""
#: frontend/apps/filemanager/filemanagermenu.lua:106
#: frontend/apps/reader/modules/readermenu.lua:96
#: frontend/apps/reader/modules/readermenu.lua:97
msgid ""
"Please report bugs to \n"
"https://github.com/koreader/koreader/issues"
@ -423,11 +435,21 @@ msgid ""
"Progress Bar"
msgstr ""
#: plugins/zsync.koplugin/main.lua:46
msgid ""
"Publish this document"
msgstr ""
#: frontend/ui/data/strings.lua:58
msgid ""
"RTL"
msgstr ""
#: plugins/zsync.koplugin/main.lua:337
msgid ""
"Received file:"
msgstr ""
#: frontend/apps/reader/modules/readerfont.lua:204
msgid ""
"Redrawing with font "
@ -463,7 +485,7 @@ msgid ""
"Set font size to "
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:74
#: frontend/apps/reader/modules/readerhighlight.lua:67
msgid ""
"Set highlight drawer "
msgstr ""
@ -473,7 +495,7 @@ msgid ""
"Set render style"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:320
#: frontend/apps/reader/modules/readerhighlight.lua:314
msgid ""
"Share"
msgstr ""
@ -488,7 +510,7 @@ msgid ""
"Show page overlap"
msgstr ""
#: frontend/ui/uimanager.lua:299
#: frontend/ui/uimanager.lua:360
msgid ""
"Standby"
msgstr ""
@ -498,6 +520,21 @@ msgid ""
"Start with last opened file"
msgstr ""
#: plugins/zsync.koplugin/main.lua:47
msgid ""
"Stop publisher"
msgstr ""
#: plugins/zsync.koplugin/main.lua:64
msgid ""
"Stop subscriber"
msgstr ""
#: plugins/zsync.koplugin/main.lua:63
msgid ""
"Subscribe documents"
msgstr ""
#: frontend/apps/reader/modules/readerzooming.lua:292
msgid ""
"Switch zoom mode"
@ -513,12 +550,12 @@ msgid ""
"TBRTL"
msgstr ""
#: frontend/apps/reader/modules/readertoc.lua:122
#: frontend/apps/reader/modules/readertoc.lua:124
msgid ""
"Table of Contents"
msgstr ""
#: frontend/apps/reader/modules/readertoc.lua:14
#: frontend/apps/reader/modules/readertoc.lua:16
msgid ""
"Table of contents"
msgstr ""
@ -538,23 +575,23 @@ msgid ""
"This may take several seconds..."
msgstr ""
#: frontend/apps/reader/modules/readerfrontlight.lua:99
#: frontend/apps/reader/modules/readerfrontlight.lua:100
msgid ""
"Toggle"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:312
#: frontend/apps/reader/modules/readerhighlight.lua:305
msgid ""
"Translate"
msgstr ""
#: frontend/apps/reader/modules/readerhighlight.lua:91
#: frontend/apps/reader/modules/readerhighlight.lua:84
msgid ""
"Underscore"
msgstr ""
#: frontend/apps/filemanager/filemanagermenu.lua:95
#: frontend/apps/reader/modules/readermenu.lua:85
#: frontend/apps/reader/modules/readermenu.lua:86
msgid ""
"Version"
msgstr ""
@ -579,7 +616,7 @@ msgid ""
"Writing Direction"
msgstr ""
#: frontend/apps/reader/modules/readerscreenshot.lua:33
#: frontend/apps/reader/modules/readerscreenshot.lua:40
msgid ""
"Writing screen to "
msgstr ""
@ -590,6 +627,11 @@ msgid ""
"Yinxiang"
msgstr ""
#: plugins/zsync.koplugin/main.lua:41
msgid ""
"ZSync"
msgstr ""
#: frontend/apps/reader/modules/readerzooming.lua:315
msgid ""
"Zoom to fit content"
@ -716,7 +758,7 @@ msgid ""
"mini"
msgstr ""
#: frontend/ui/widget/menu.lua:541
#: frontend/ui/widget/menu.lua:543
msgid ""
"no choices available"
msgstr ""
@ -741,7 +783,7 @@ msgid ""
"page"
msgstr ""
#: frontend/ui/widget/menu.lua:535
#: frontend/ui/widget/menu.lua:537
msgid ""
"page "
msgstr ""

@ -300,12 +300,14 @@ end
function ZSync:subscribe()
DEBUG("subscribe documents")
self.received = {}
self.inbox_chooser = InboxChooser:new{zsync = self}
UIManager:show(self.inbox_chooser)
end
function ZSync:unsubscribe()
DEBUG("ZSync unsubscribe")
self.received = {}
self:stopFileMQ()
self:stopZyreMQ()
end
@ -329,10 +331,13 @@ function ZSync:onZyreEnter(id, name, header, endpoint)
end
function ZSync:onFileDeliver(filename, fullname)
-- sometimes several FileDelever msgs are sent from filemq
if self.received[filename] then return end
UIManager:show(InfoMessage:new{
text = _("Received file:") .. "\n" .. filename,
timeout = 1,
})
self.received[filename] = true
end
--[[

Loading…
Cancel
Save