From 2773ca93862c5380b52abe0b96f39e16c487d6a6 Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 25 Jun 2014 21:31:42 +0800 Subject: [PATCH 1/3] fix zsync cannot run properly in Kindle due to firewall --- frontend/ui/message/filemessagequeue.lua | 22 ++++++++++++++++------ frontend/ui/message/messagequeue.lua | 2 +- frontend/ui/message/zyremessagequeue.lua | 18 +++++++++++++----- frontend/ui/uimanager.lua | 2 +- kindle/koreader.sh | 4 ++++ kobo/koreader.sh | 6 +++++- koreader-base | 2 +- plugins/zsync.koplugin/main.lua | 5 +++++ 8 files changed, 46 insertions(+), 15 deletions(-) diff --git a/frontend/ui/message/filemessagequeue.lua b/frontend/ui/message/filemessagequeue.lua index 6e8a8d557..eb88e2874 100644 --- a/frontend/ui/message/filemessagequeue.lua +++ b/frontend/ui/message/filemessagequeue.lua @@ -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 diff --git a/frontend/ui/message/messagequeue.lua b/frontend/ui/message/messagequeue.lua index beafc38b1..0d3a06065 100644 --- a/frontend/ui/message/messagequeue.lua +++ b/frontend/ui/message/messagequeue.lua @@ -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() diff --git a/frontend/ui/message/zyremessagequeue.lua b/frontend/ui/message/zyremessagequeue.lua index 5c0fa07c5..3f2d988b5 100644 --- a/frontend/ui/message/zyremessagequeue.lua +++ b/frontend/ui/message/zyremessagequeue.lua @@ -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 diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index 7b82c8252..ac6027e9b 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -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 diff --git a/kindle/koreader.sh b/kindle/koreader.sh index e6aa5463c..99ec213d2 100755 --- a/kindle/koreader.sh +++ b/kindle/koreader.sh @@ -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 diff --git a/kobo/koreader.sh b/kobo/koreader.sh index 236431d0b..1b9777b42 100755 --- a/kobo/koreader.sh +++ b/kobo/koreader.sh @@ -10,10 +10,14 @@ 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 diff --git a/koreader-base b/koreader-base index 7108ec4fd..a276f2fde 160000 --- a/koreader-base +++ b/koreader-base @@ -1 +1 @@ -Subproject commit 7108ec4fd145d32d7abe32c25f5811001f5f570c +Subproject commit a276f2fde1fb118f3104b10077fb8a38f2855120 diff --git a/plugins/zsync.koplugin/main.lua b/plugins/zsync.koplugin/main.lua index 544c18dcf..5691047a3 100644 --- a/plugins/zsync.koplugin/main.lua +++ b/plugins/zsync.koplugin/main.lua @@ -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 --[[ From 46c8d26b97c340d09351b27304726dff5b625a94 Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 25 Jun 2014 22:01:59 +0800 Subject: [PATCH 2/3] update pot file --- l10n/templates/koreader.pot | 126 ++++++++++++++++++++++++------------ 1 file changed, 84 insertions(+), 42 deletions(-) diff --git a/l10n/templates/koreader.pot b/l10n/templates/koreader.pot index 5a1161563..9291ecd5e 100644 --- a/l10n/templates/koreader.pot +++ b/l10n/templates/koreader.pot @@ -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 "" From 54a551a0f5a28e820fe13701c77394ac5aeb09f2 Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 25 Jun 2014 22:06:43 +0800 Subject: [PATCH 3/3] restore firewall rules when exiting koreader --- kindle/koreader.sh | 4 ++++ kobo/koreader.sh | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/kindle/koreader.sh b/kindle/koreader.sh index 99ec213d2..e2bafd5b5 100755 --- a/kindle/koreader.sh +++ b/kindle/koreader.sh @@ -124,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 + diff --git a/kobo/koreader.sh b/kobo/koreader.sh index 1b9777b42..a55ff3b42 100755 --- a/kobo/koreader.sh +++ b/kobo/koreader.sh @@ -21,6 +21,10 @@ 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 ) & (