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.Utilities.rngit import APP_NAME
|
||||||
from RNS.vendor.configobj import ConfigObj
|
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
|
targetverbosity = verbosity-quietness
|
||||||
|
|
||||||
if service:
|
if service:
|
||||||
|
|
@ -51,6 +51,8 @@ def program_setup(configdir, rnsconfigdir=None, verbosity=0, quietness=0, servic
|
||||||
else:
|
else:
|
||||||
targetlogdest = RNS.LOG_STDOUT
|
targetlogdest = RNS.LOG_STDOUT
|
||||||
|
|
||||||
|
if print_identity: git_node = ReticulumGitNode(configdir=configdir, print_identity=True)
|
||||||
|
|
||||||
reticulum = RNS.Reticulum(configdir=rnsconfigdir, verbosity=targetverbosity, logdest=targetlogdest)
|
reticulum = RNS.Reticulum(configdir=rnsconfigdir, verbosity=targetverbosity, logdest=targetlogdest)
|
||||||
|
|
||||||
RNS.log("Starting Reticulum Git Node...", RNS.LOG_NOTICE)
|
RNS.log("Starting Reticulum Git Node...", RNS.LOG_NOTICE)
|
||||||
|
|
@ -72,6 +74,7 @@ def main():
|
||||||
parser = argparse.ArgumentParser(description="Reticulum Git Repository Node")
|
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("--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("--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('-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('-i', '--interactive', action='store_true', default=False, help="drop into interactive shell after initialisation")
|
||||||
parser.add_argument('-v', '--verbose', action='count', default=0)
|
parser.add_argument('-v', '--verbose', action='count', default=0)
|
||||||
|
|
@ -87,7 +90,7 @@ def main():
|
||||||
else: rnsconfigarg = None
|
else: rnsconfigarg = None
|
||||||
|
|
||||||
program_setup(configdir = configarg, rnsconfigdir=rnsconfigarg, service=args.service, verbosity=args.verbose,
|
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:
|
except KeyboardInterrupt:
|
||||||
print("")
|
print("")
|
||||||
|
|
@ -122,7 +125,7 @@ class ReticulumGitNode():
|
||||||
IDX_REPOSITORY = 0x00
|
IDX_REPOSITORY = 0x00
|
||||||
IDX_RESULT_CODE = 0x01
|
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.identity = None
|
||||||
self.userdir = os.path.expanduser("~")
|
self.userdir = os.path.expanduser("~")
|
||||||
self.global_allow = RNS.Destination.ALLOW_ALL
|
self.global_allow = RNS.Destination.ALLOW_ALL
|
||||||
|
|
@ -166,10 +169,25 @@ class ReticulumGitNode():
|
||||||
self.__create_default_config()
|
self.__create_default_config()
|
||||||
RNS.log("Default config file created. Make any necessary changes in "+self.configdir+"/config and restart rngit.")
|
RNS.log("Default config file created. Make any necessary changes in "+self.configdir+"/config and restart rngit.")
|
||||||
RNS.log("Exiting now")
|
RNS.log("Exiting now")
|
||||||
return
|
exit(1)
|
||||||
|
|
||||||
self.__apply_config()
|
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 = RNS.Destination(self.identity, RNS.Destination.IN, RNS.Destination.SINGLE, APP_NAME, "repositories")
|
||||||
self.destination.set_link_established_callback(self.remote_connected)
|
self.destination.set_link_established_callback(self.remote_connected)
|
||||||
self.register_request_handlers()
|
self.register_request_handlers()
|
||||||
|
|
|
||||||
|
|
@ -701,10 +701,20 @@ Run ``rngit`` to start a repository node:
|
||||||
$ rngit
|
$ rngit
|
||||||
|
|
||||||
[Notice] Starting Reticulum Git Node...
|
[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.
|
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:
|
You can run ``rngit`` in service mode with logging to file:
|
||||||
|
|
||||||
.. code:: text
|
.. code:: text
|
||||||
|
|
@ -715,13 +725,13 @@ Clone a repository from a remote ``rngit`` node:
|
||||||
|
|
||||||
.. code:: text
|
.. code:: text
|
||||||
|
|
||||||
$ git clone rns://4a5c8d9e1f2a3b4c5d6e7f8a9b0c1d2e/public/myrepo
|
$ git clone rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
|
||||||
|
|
||||||
Add a Reticulum remote to an existing repository:
|
Add a Reticulum remote to an existing repository:
|
||||||
|
|
||||||
.. code:: text
|
.. 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:
|
Push changes to the Reticulum remote:
|
||||||
|
|
||||||
|
|
@ -729,11 +739,11 @@ Push changes to the Reticulum remote:
|
||||||
|
|
||||||
$ git push some_remote master
|
$ git push some_remote master
|
||||||
|
|
||||||
Fetch changes from a remote repository:
|
Get changes from a remote repository:
|
||||||
|
|
||||||
.. code:: text
|
.. code:: text
|
||||||
|
|
||||||
$ git fetch rns_remote
|
$ git pull rns_remote master
|
||||||
|
|
||||||
**Repository Structure**
|
**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
|
--config CONFIG path to alternative config directory
|
||||||
--rnsconfig RNSCONFIG
|
--rnsconfig RNSCONFIG
|
||||||
path to alternative Reticulum config directory
|
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
|
-s, --service rngit is running as a service and should log to file
|
||||||
-i, --interactive drop into interactive shell after initialisation
|
-i, --interactive drop into interactive shell after initialisation
|
||||||
-v, --verbose increase verbosity
|
-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
|
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit
|
||||||
|
|
||||||
[Notice] Starting Reticulum Git Node...
|
[Notice] Starting Reticulum Git Node...
|
||||||
[Notice] Reticulum Git Node listening on <4a5c8d9e1f2a3b4c5d6e7f8a9b0c1d2e>
|
[Notice] Reticulum Git Node listening on <0d7334d411d00120cbad24edf355fdd2>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</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>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>
|
<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
|
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ rngit -s
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>Clone a repository from a remote <code class="docutils literal notranslate"><span class="pre">rngit</span></code> node:</p>
|
<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>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>Add a Reticulum remote to an existing repository:</p>
|
<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>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>Push changes to the Reticulum remote:</p>
|
<p>Push changes to the Reticulum remote:</p>
|
||||||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git push some_remote master
|
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git push some_remote master
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p>Fetch changes from a remote repository:</p>
|
<p>Get changes from a remote repository:</p>
|
||||||
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git fetch rns_remote
|
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>$ git pull rns_remote master
|
||||||
</pre></div>
|
</pre></div>
|
||||||
</div>
|
</div>
|
||||||
<p><strong>Repository Structure</strong></p>
|
<p><strong>Repository Structure</strong></p>
|
||||||
|
|
@ -910,6 +918,7 @@ options:
|
||||||
--config CONFIG path to alternative config directory
|
--config CONFIG path to alternative config directory
|
||||||
--rnsconfig RNSCONFIG
|
--rnsconfig RNSCONFIG
|
||||||
path to alternative Reticulum config directory
|
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
|
-s, --service rngit is running as a service and should log to file
|
||||||
-i, --interactive drop into interactive shell after initialisation
|
-i, --interactive drop into interactive shell after initialisation
|
||||||
-v, --verbose increase verbosity
|
-v, --verbose increase verbosity
|
||||||
|
|
|
||||||
|
|
@ -701,10 +701,20 @@ Run ``rngit`` to start a repository node:
|
||||||
$ rngit
|
$ rngit
|
||||||
|
|
||||||
[Notice] Starting Reticulum Git Node...
|
[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.
|
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:
|
You can run ``rngit`` in service mode with logging to file:
|
||||||
|
|
||||||
.. code:: text
|
.. code:: text
|
||||||
|
|
@ -715,13 +725,13 @@ Clone a repository from a remote ``rngit`` node:
|
||||||
|
|
||||||
.. code:: text
|
.. code:: text
|
||||||
|
|
||||||
$ git clone rns://4a5c8d9e1f2a3b4c5d6e7f8a9b0c1d2e/public/myrepo
|
$ git clone rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
|
||||||
|
|
||||||
Add a Reticulum remote to an existing repository:
|
Add a Reticulum remote to an existing repository:
|
||||||
|
|
||||||
.. code:: text
|
.. 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:
|
Push changes to the Reticulum remote:
|
||||||
|
|
||||||
|
|
@ -729,11 +739,11 @@ Push changes to the Reticulum remote:
|
||||||
|
|
||||||
$ git push some_remote master
|
$ git push some_remote master
|
||||||
|
|
||||||
Fetch changes from a remote repository:
|
Get changes from a remote repository:
|
||||||
|
|
||||||
.. code:: text
|
.. code:: text
|
||||||
|
|
||||||
$ git fetch rns_remote
|
$ git pull rns_remote master
|
||||||
|
|
||||||
**Repository Structure**
|
**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
|
--config CONFIG path to alternative config directory
|
||||||
--rnsconfig RNSCONFIG
|
--rnsconfig RNSCONFIG
|
||||||
path to alternative Reticulum config directory
|
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
|
-s, --service rngit is running as a service and should log to file
|
||||||
-i, --interactive drop into interactive shell after initialisation
|
-i, --interactive drop into interactive shell after initialisation
|
||||||
-v, --verbose increase verbosity
|
-v, --verbose increase verbosity
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue