mirror of
https://github.com/markqvist/Reticulum.git
synced 2026-04-27 14:20:35 +00:00
Added --print-identity option to rngit
This commit is contained in:
parent
043a5dc4e7
commit
55c95bf59a
5 changed files with 69 additions and 20 deletions
|
|
@ -42,7 +42,7 @@ from RNS._version import __version__
|
|||
from RNS.Utilities.rngit import APP_NAME
|
||||
from RNS.vendor.configobj import ConfigObj
|
||||
|
||||
def program_setup(configdir, rnsconfigdir=None, verbosity=0, quietness=0, service=False, interactive=False):
|
||||
def program_setup(configdir, rnsconfigdir=None, verbosity=0, quietness=0, service=False, interactive=False, print_identity=False):
|
||||
targetverbosity = verbosity-quietness
|
||||
|
||||
if service:
|
||||
|
|
@ -51,6 +51,8 @@ def program_setup(configdir, rnsconfigdir=None, verbosity=0, quietness=0, servic
|
|||
else:
|
||||
targetlogdest = RNS.LOG_STDOUT
|
||||
|
||||
if print_identity: git_node = ReticulumGitNode(configdir=configdir, print_identity=True)
|
||||
|
||||
reticulum = RNS.Reticulum(configdir=rnsconfigdir, verbosity=targetverbosity, logdest=targetlogdest)
|
||||
|
||||
RNS.log("Starting Reticulum Git Node...", RNS.LOG_NOTICE)
|
||||
|
|
@ -72,6 +74,7 @@ def main():
|
|||
parser = argparse.ArgumentParser(description="Reticulum Git Repository Node")
|
||||
parser.add_argument("--config", action="store", default=None, help="path to alternative config directory", type=str)
|
||||
parser.add_argument("--rnsconfig", action="store", default=None, help="path to alternative Reticulum config directory", type=str)
|
||||
parser.add_argument('-p', '--print-identity', action='store_true', default=False, help="print identity and destination info and exit")
|
||||
parser.add_argument('-s', '--service', action='store_true', default=False, help="rngit is running as a service and should log to file")
|
||||
parser.add_argument('-i', '--interactive', action='store_true', default=False, help="drop into interactive shell after initialisation")
|
||||
parser.add_argument('-v', '--verbose', action='count', default=0)
|
||||
|
|
@ -87,7 +90,7 @@ def main():
|
|||
else: rnsconfigarg = None
|
||||
|
||||
program_setup(configdir = configarg, rnsconfigdir=rnsconfigarg, service=args.service, verbosity=args.verbose,
|
||||
quietness=args.quiet, interactive=args.interactive)
|
||||
quietness=args.quiet, interactive=args.interactive, print_identity=args.print_identity)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print("")
|
||||
|
|
@ -122,7 +125,7 @@ class ReticulumGitNode():
|
|||
IDX_REPOSITORY = 0x00
|
||||
IDX_RESULT_CODE = 0x01
|
||||
|
||||
def __init__(self, configdir=None, verbosity=None):
|
||||
def __init__(self, configdir=None, verbosity=None, print_identity=False):
|
||||
self.identity = None
|
||||
self.userdir = os.path.expanduser("~")
|
||||
self.global_allow = RNS.Destination.ALLOW_ALL
|
||||
|
|
@ -166,10 +169,25 @@ class ReticulumGitNode():
|
|||
self.__create_default_config()
|
||||
RNS.log("Default config file created. Make any necessary changes in "+self.configdir+"/config and restart rngit.")
|
||||
RNS.log("Exiting now")
|
||||
return
|
||||
exit(1)
|
||||
|
||||
self.__apply_config()
|
||||
|
||||
if print_identity:
|
||||
client_identity_path = self.configdir+"/client_identity"
|
||||
if not os.path.isfile(client_identity_path):
|
||||
client_identity = RNS.Identity()
|
||||
client_identity.to_file(client_identity_path)
|
||||
RNS.log(f"Client identity generated and persisted to {client_identity_path}", RNS.LOG_VERBOSE)
|
||||
|
||||
else: client_identity = RNS.Identity.from_file(client_identity_path)
|
||||
|
||||
destination_hash = RNS.Destination.hash_from_name_and_identity(f"{APP_NAME}.repositories", self.identity)
|
||||
print(f"Git Peer Identity : {RNS.prettyhexrep(client_identity.hash)}")
|
||||
print(f"Repository Node Identity : {RNS.prettyhexrep(self.identity.hash)}")
|
||||
print(f"Repositories Destination : {RNS.prettyhexrep(destination_hash)}")
|
||||
exit(0)
|
||||
|
||||
self.destination = RNS.Destination(self.identity, RNS.Destination.IN, RNS.Destination.SINGLE, APP_NAME, "repositories")
|
||||
self.destination.set_link_established_callback(self.remote_connected)
|
||||
self.register_request_handlers()
|
||||
|
|
|
|||
|
|
@ -701,10 +701,20 @@ Run ``rngit`` to start a repository node:
|
|||
$ rngit
|
||||
|
||||
[Notice] Starting Reticulum Git Node...
|
||||
[Notice] Reticulum Git Node listening on <4a5c8d9e1f2a3b4c5d6e7f8a9b0c1d2e>
|
||||
[Notice] Reticulum Git Node listening on <0d7334d411d00120cbad24edf355fdd2>
|
||||
|
||||
On the first run, ``rngit`` will create a default configuration file. You will then need to edit this, to point to your repository locations, configure access permissions, and perform any other necessary configuration.
|
||||
|
||||
View your identity and destination hashes:
|
||||
|
||||
.. code:: text
|
||||
|
||||
$ rngit --print-identity
|
||||
|
||||
Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
|
||||
Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
|
||||
Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
|
||||
|
||||
You can run ``rngit`` in service mode with logging to file:
|
||||
|
||||
.. code:: text
|
||||
|
|
@ -715,13 +725,13 @@ Clone a repository from a remote ``rngit`` node:
|
|||
|
||||
.. code:: text
|
||||
|
||||
$ git clone rns://4a5c8d9e1f2a3b4c5d6e7f8a9b0c1d2e/public/myrepo
|
||||
$ git clone rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
|
||||
|
||||
Add a Reticulum remote to an existing repository:
|
||||
|
||||
.. code:: text
|
||||
|
||||
$ git remote add some_remote rns://4a5c8d9e1f2a3b4c5d6e7f8a9b0c1d2e/public/myrepo
|
||||
$ git remote add some_remote rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
|
||||
|
||||
Push changes to the Reticulum remote:
|
||||
|
||||
|
|
@ -729,11 +739,11 @@ Push changes to the Reticulum remote:
|
|||
|
||||
$ git push some_remote master
|
||||
|
||||
Fetch changes from a remote repository:
|
||||
Get changes from a remote repository:
|
||||
|
||||
.. code:: text
|
||||
|
||||
$ git fetch rns_remote
|
||||
$ git pull rns_remote master
|
||||
|
||||
**Repository Structure**
|
||||
|
||||
|
|
@ -765,6 +775,7 @@ Repository-specific ``.allowed`` files can be static text files or executable sc
|
|||
--config CONFIG path to alternative config directory
|
||||
--rnsconfig RNSCONFIG
|
||||
path to alternative Reticulum config directory
|
||||
-p, --print-identity print identity and destination info and exit
|
||||
-s, --service rngit is running as a service and should log to file
|
||||
-i, --interactive drop into interactive shell after initialisation
|
||||
-v, --verbose increase verbosity
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -864,28 +864,36 @@ options:
|
|||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit
|
||||
|
||||
[Notice] Starting Reticulum Git Node...
|
||||
[Notice] Reticulum Git Node listening on <4a5c8d9e1f2a3b4c5d6e7f8a9b0c1d2e>
|
||||
[Notice] Reticulum Git Node listening on <0d7334d411d00120cbad24edf355fdd2>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>On the first run, <code class="docutils literal notranslate"><span class="pre">rngit</span></code> will create a default configuration file. You will then need to edit this, to point to your repository locations, configure access permissions, and perform any other necessary configuration.</p>
|
||||
<p>View your identity and destination hashes:</p>
|
||||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit --print-identity
|
||||
|
||||
Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
|
||||
Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
|
||||
Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>You can run <code class="docutils literal notranslate"><span class="pre">rngit</span></code> in service mode with logging to file:</p>
|
||||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit -s
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Clone a repository from a remote <code class="docutils literal notranslate"><span class="pre">rngit</span></code> node:</p>
|
||||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git clone rns://4a5c8d9e1f2a3b4c5d6e7f8a9b0c1d2e/public/myrepo
|
||||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git clone rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Add a Reticulum remote to an existing repository:</p>
|
||||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git remote add some_remote rns://4a5c8d9e1f2a3b4c5d6e7f8a9b0c1d2e/public/myrepo
|
||||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git remote add some_remote rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Push changes to the Reticulum remote:</p>
|
||||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git push some_remote master
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Fetch changes from a remote repository:</p>
|
||||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git fetch rns_remote
|
||||
<p>Get changes from a remote repository:</p>
|
||||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git pull rns_remote master
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><strong>Repository Structure</strong></p>
|
||||
|
|
@ -910,6 +918,7 @@ options:
|
|||
--config CONFIG path to alternative config directory
|
||||
--rnsconfig RNSCONFIG
|
||||
path to alternative Reticulum config directory
|
||||
-p, --print-identity print identity and destination info and exit
|
||||
-s, --service rngit is running as a service and should log to file
|
||||
-i, --interactive drop into interactive shell after initialisation
|
||||
-v, --verbose increase verbosity
|
||||
|
|
|
|||
|
|
@ -701,10 +701,20 @@ Run ``rngit`` to start a repository node:
|
|||
$ rngit
|
||||
|
||||
[Notice] Starting Reticulum Git Node...
|
||||
[Notice] Reticulum Git Node listening on <4a5c8d9e1f2a3b4c5d6e7f8a9b0c1d2e>
|
||||
[Notice] Reticulum Git Node listening on <0d7334d411d00120cbad24edf355fdd2>
|
||||
|
||||
On the first run, ``rngit`` will create a default configuration file. You will then need to edit this, to point to your repository locations, configure access permissions, and perform any other necessary configuration.
|
||||
|
||||
View your identity and destination hashes:
|
||||
|
||||
.. code:: text
|
||||
|
||||
$ rngit --print-identity
|
||||
|
||||
Git Peer Identity : <959e10e5efc1bd9d97a4083babe51dea>
|
||||
Repository Node Identity : <153cb870b4665b8c1c348896292b0bad>
|
||||
Repositories Destination : <0d7334d411d00120cbad24edf355fdd2>
|
||||
|
||||
You can run ``rngit`` in service mode with logging to file:
|
||||
|
||||
.. code:: text
|
||||
|
|
@ -715,13 +725,13 @@ Clone a repository from a remote ``rngit`` node:
|
|||
|
||||
.. code:: text
|
||||
|
||||
$ git clone rns://4a5c8d9e1f2a3b4c5d6e7f8a9b0c1d2e/public/myrepo
|
||||
$ git clone rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
|
||||
|
||||
Add a Reticulum remote to an existing repository:
|
||||
|
||||
.. code:: text
|
||||
|
||||
$ git remote add some_remote rns://4a5c8d9e1f2a3b4c5d6e7f8a9b0c1d2e/public/myrepo
|
||||
$ git remote add some_remote rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
|
||||
|
||||
Push changes to the Reticulum remote:
|
||||
|
||||
|
|
@ -729,11 +739,11 @@ Push changes to the Reticulum remote:
|
|||
|
||||
$ git push some_remote master
|
||||
|
||||
Fetch changes from a remote repository:
|
||||
Get changes from a remote repository:
|
||||
|
||||
.. code:: text
|
||||
|
||||
$ git fetch rns_remote
|
||||
$ git pull rns_remote master
|
||||
|
||||
**Repository Structure**
|
||||
|
||||
|
|
@ -765,6 +775,7 @@ Repository-specific ``.allowed`` files can be static text files or executable sc
|
|||
--config CONFIG path to alternative config directory
|
||||
--rnsconfig RNSCONFIG
|
||||
path to alternative Reticulum config directory
|
||||
-p, --print-identity print identity and destination info and exit
|
||||
-s, --service rngit is running as a service and should log to file
|
||||
-i, --interactive drop into interactive shell after initialisation
|
||||
-v, --verbose increase verbosity
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue