Compare commits

...

12 Commits
0.4.1 ... 0.4.4

Author SHA1 Message Date
Mark Qvist
407cc8fb5f Updated version 2024-01-08 00:12:38 +01:00
Mark Qvist
1f7302903a Fixed missing timestamp update on page/file periodic scan 2024-01-08 00:10:55 +01:00
Mark Qvist
5736012f2c Updated version 2024-01-03 13:07:20 +01:00
Mark Qvist
bb98a512f3 Added page and file refresh intervals to guide 2024-01-03 13:05:38 +01:00
markqvist
ae0d4c6e0c Merge pull request #41 from faragher/master
Made save paths relative, added page/file refresh
2024-01-03 12:55:19 +01:00
faragher
2449b39f77 Added file and path scans to jobs 2023-11-29 05:43:49 -06:00
faragher
e022d469f8 Made save paths relative 2023-11-29 03:23:35 -06:00
markqvist
a4f665e650 Merge pull request #39 from faragher/master
Possible fix for Directory error
2023-11-28 14:16:04 +01:00
faragher
19d1d8504f Possible fix for Directory error 2023-11-26 15:51:47 -06:00
Mark Qvist
276a5f56e1 Changed text 2023-11-02 18:30:23 +01:00
Mark Qvist
89dd17ece5 Updated version and dependencies 2023-11-02 12:48:40 +01:00
Mark Qvist
82bb479957 Adjusted timeouts 2023-11-02 12:25:36 +01:00
9 changed files with 86 additions and 14 deletions

View File

@@ -142,7 +142,7 @@ class Conversation:
self.__changed_callback = None self.__changed_callback = None
if not RNS.Transport.has_path(bytes.fromhex(source_hash)): if not RNS.Identity.recall(bytes.fromhex(self.source_hash)):
RNS.Transport.request_path(bytes.fromhex(source_hash)) RNS.Transport.request_path(bytes.fromhex(source_hash))
self.source_identity = RNS.Identity.recall(bytes.fromhex(self.source_hash)) self.source_identity = RNS.Identity.recall(bytes.fromhex(self.source_hash))

View File

@@ -91,6 +91,9 @@ class Directory:
entries = {} entries = {}
for e in unpacked_list: for e in unpacked_list:
if e[1] == None:
e[1] = "Undefined"
if len(e) > 3: if len(e) > 3:
hosts_node = e[3] hosts_node = e[3]
else: else:

View File

@@ -15,7 +15,11 @@ class Node:
self.identity = self.app.identity self.identity = self.app.identity
self.destination = RNS.Destination(self.identity, RNS.Destination.IN, RNS.Destination.SINGLE, "nomadnetwork", "node") self.destination = RNS.Destination(self.identity, RNS.Destination.IN, RNS.Destination.SINGLE, "nomadnetwork", "node")
self.last_announce = time.time() self.last_announce = time.time()
self.last_file_refresh = time.time()
self.last_page_refresh = time.time()
self.announce_interval = self.app.node_announce_interval self.announce_interval = self.app.node_announce_interval
self.page_refresh_interval = self.app.page_refresh_interval
self.file_refresh_interval = self.app.file_refresh_interval
self.job_interval = Node.JOB_INTERVAL self.job_interval = Node.JOB_INTERVAL
self.should_run_jobs = True self.should_run_jobs = True
self.app_data = None self.app_data = None
@@ -46,6 +50,8 @@ class Node:
def register_pages(self): def register_pages(self):
# TODO: Deregister previously registered pages
# that no longer exist.
self.servedpages = [] self.servedpages = []
self.scan_pages(self.app.pagespath) self.scan_pages(self.app.pagespath)
@@ -65,6 +71,8 @@ class Node:
) )
def register_files(self): def register_files(self):
# TODO: Deregister previously registered files
# that no longer exist.
self.servedfiles = [] self.servedfiles = []
self.scan_files(self.app.filespath) self.scan_files(self.app.filespath)
@@ -223,6 +231,16 @@ class Node:
if now > self.last_announce + self.announce_interval*60: if now > self.last_announce + self.announce_interval*60:
self.announce() self.announce()
if self.page_refresh_interval > 0:
if now > self.last_page_refresh + self.page_refresh_interval*60:
self.register_pages()
self.last_page_refresh = time.time()
if self.file_refresh_interval > 0:
if now > self.last_file_refresh + self.file_refresh_interval*60:
self.register_files()
self.last_file_refresh = time.time()
time.sleep(self.job_interval) time.sleep(self.job_interval)
def peer_connected(self, link): def peer_connected(self, link):

View File

@@ -115,10 +115,12 @@ class NomadNetworkApp:
self.downloads_path = os.path.expanduser("~/Downloads") self.downloads_path = os.path.expanduser("~/Downloads")
self.firstrun = False self.firstrun = False
self.should_run_jobs = True self.should_run_jobs = True
self.job_interval = 5 self.job_interval = 5
self.defer_jobs = 90 self.defer_jobs = 90
self.page_refresh_interval = 0
self.file_refresh_interval = 0
self.peer_announce_at_start = True self.peer_announce_at_start = True
self.try_propagation_on_fail = True self.try_propagation_on_fail = True
@@ -831,9 +833,27 @@ class NomadNetworkApp:
if "pages_path" in self.config["node"]: if "pages_path" in self.config["node"]:
self.pagespath = self.config["node"]["pages_path"] self.pagespath = self.config["node"]["pages_path"]
if not "page_refresh_interval" in self.config["node"]:
self.page_refresh_interval = 0
else:
value = self.config["node"].as_int("page_refresh_interval")
if value < 0:
value = 0
self.page_refresh_interval = value
if "files_path" in self.config["node"]: if "files_path" in self.config["node"]:
self.filespath = self.config["node"]["files_path"] self.filespath = self.config["node"]["files_path"]
if not "file_refresh_interval" in self.config["node"]:
self.file_refresh_interval = 0
else:
value = self.config["node"].as_int("file_refresh_interval")
if value < 0:
value = 0
self.file_refresh_interval = value
if "prioritise_destinations" in self.config["node"]: if "prioritise_destinations" in self.config["node"]:
self.prioritised_lxmf_destinations = self.config["node"].as_list("prioritise_destinations") self.prioritised_lxmf_destinations = self.config["node"].as_list("prioritise_destinations")
else: else:
@@ -1057,6 +1077,22 @@ announce_at_start = Yes
# and generally you do not need to use it. # and generally you do not need to use it.
# prioritise_destinations = 41d20c727598a3fbbdf9106133a3a0ed, d924b81822ca24e68e2effea99bcb8cf # prioritise_destinations = 41d20c727598a3fbbdf9106133a3a0ed, d924b81822ca24e68e2effea99bcb8cf
# Automatic rescan interval of the pages directory in minutes.
# Default: int = 0 (no rescan)
page_refresh_interval = 0
# You can specify the interval in minutes for
# rescanning the hosted pages path. By default,
# this option is disabled, and the pages path
# will only be scanned on startup.
# page_refresh_interval = 0
# You can specify the interval in minutes for
# rescanning the hosted files path. By default,
# this option is disabled, and the files path
# will only be scanned on startup.
# file_refresh_interval = 0
[printing] [printing]
# You can configure Nomad Network to print # You can configure Nomad Network to print

View File

@@ -1 +1 @@
__version__ = "0.4.1" __version__ = "0.4.4"

View File

@@ -517,7 +517,7 @@ class Browser:
self.status = Browser.PATH_REQUESTED self.status = Browser.PATH_REQUESTED
self.update_display() self.update_display()
pr_time = time.time() pr_time = time.time()+RNS.Transport.first_hop_timeout(self.destination_hash)
while not RNS.Transport.has_path(self.destination_hash): while not RNS.Transport.has_path(self.destination_hash):
now = time.time() now = time.time()
if now > pr_time+self.timeout: if now > pr_time+self.timeout:
@@ -770,7 +770,7 @@ class Browser:
self.status = Browser.PATH_REQUESTED self.status = Browser.PATH_REQUESTED
self.update_display() self.update_display()
pr_time = time.time() pr_time = time.time()+RNS.Transport.first_hop_timeout(self.destination_hash)
while not RNS.Transport.has_path(self.destination_hash): while not RNS.Transport.has_path(self.destination_hash):
now = time.time() now = time.time()
if now > pr_time+self.timeout: if now > pr_time+self.timeout:
@@ -976,7 +976,10 @@ class Browser:
try: try:
file_name = request_receipt.response[0] file_name = request_receipt.response[0]
file_data = request_receipt.response[1] file_data = request_receipt.response[1]
file_destination = self.app.downloads_path+"/"+file_name file_destination_name = file_name.split("/")
file_destination_name = file_destination_name[len(file_destination_name)-1]
file_destination = self.app.downloads_path+"/"+file_destination_name
counter = 0 counter = 0
while os.path.isfile(file_destination): while os.path.isfile(file_destination):

View File

@@ -894,7 +894,7 @@ class ConversationWidget(urwid.WidgetWrap):
if allowed: if allowed:
self.frame.contents["footer"] = (self.minimal_editor, None) self.frame.contents["footer"] = (self.minimal_editor, None)
else: else:
warning = urwid.AttrMap(urwid.Padding(urwid.Text("\n"+g["info"]+"\n\nYou cannot currently message this peer, since it's identity keys are not known.\n\nWait for an announce to arrive from the peer, or query the network for it.\n\nTo query the network, select this conversation in the conversation list, press Ctrl-E, and use the query button.\n", align="center")), "msg_header_caution") warning = urwid.AttrMap(urwid.Padding(urwid.Text("\n"+g["info"]+"\n\nYou cannot currently message this peer, since it's identity keys are not known. The keys have been requested from the network and should arrive shortly, if available. Close this conversation and reopen it to try again.\n\nTo query the network manually, select this conversation in the conversation list, press Ctrl-E, and use the query button.\n", align="center")), "msg_header_caution")
self.frame.contents["footer"] = (warning, None) self.frame.contents["footer"] = (warning, None)
def toggle_focus_area(self): def toggle_focus_area(self):

View File

@@ -621,12 +621,24 @@ Determines how often, in minutes, your node is announced on the network. Default
Determines where the node server will look for hosted pages. Must be a readable filesystem path. Determines where the node server will look for hosted pages. Must be a readable filesystem path.
< <
>>>
`!page_refresh_interval = 0`!
>>>>
Determines the interval in minutes for rescanning the hosted pages path. By default, this option is disabled, and the pages path will only be scanned on startup.
<
>>> >>>
`!files_path = ~/.nomadnetwork/storage/files`! `!files_path = ~/.nomadnetwork/storage/files`!
>>>> >>>>
Determines where the node server will look for downloadable files. Must be a readable filesystem path. Determines where the node server will look for downloadable files. Must be a readable filesystem path.
< <
>>>
`!file_refresh_interval = 0`!
>>>>
Determines the interval in minutes for rescanning the hosted files path. By default, this option is disabled, and the files path will only be scanned on startup.
<
>>> >>>
`!disable_propagation = no`! `!disable_propagation = no`!
>>>> >>>>

View File

@@ -30,6 +30,6 @@ setuptools.setup(
entry_points= { entry_points= {
'console_scripts': ['nomadnet=nomadnet.nomadnet:main'] 'console_scripts': ['nomadnet=nomadnet.nomadnet:main']
}, },
install_requires=["rns>=0.6.3", "lxmf>=0.3.7", "urwid==2.1.2", "qrcode"], install_requires=["rns>=0.6.4", "lxmf>=0.3.8", "urwid==2.1.2", "qrcode"],
python_requires=">=3.6", python_requires=">=3.6",
) )