Skip to content

Commit

Permalink
Include a feature to allow private/public IP address
Browse files Browse the repository at this point in the history
Loosen requirements' version
  • Loading branch information
dormant-user committed Jan 19, 2025
1 parent 4503c24 commit 2f68353
Show file tree
Hide file tree
Showing 16 changed files with 216 additions and 20 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ vaultapi start
- **WORKERS** - Number of workers for the uvicorn server. Defaults to `1`
- **RATE_LIMIT** - List of dictionaries with `max_requests` and `seconds` to apply as rate limit.
Defaults to 5req/2s [AND] 10req/30s
- **ALLOW_PUBLIC_IP** - Boolean flag to allow connections via public IP. Defaults to `false`
- **ALLOW_PRIVATE_IP** - Boolean flag to allow connections via private IP. Defaults to `false`
- **ALLOW_PRIVATE_IP_RANGE** - Boolean flag to allow connections via any private IP address _(`1-256`)_ within range. Defaults to `false`

**Optional (without defaults)**
- **LOG_CONFIG** - FilePath or dictionary of key-value pairs for log config.
Expand Down
4 changes: 4 additions & 0 deletions doc_gen/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ Exceptions
==========
.. automodule:: vaultapi.exceptions

IP Address
==========
.. automodule:: vaultapi.ipaddress

Models
======

Expand Down
14 changes: 9 additions & 5 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
########################################################################################################################
# Use this docker-compose file as a sample. #
########################################################################################################################
services:
app:
# image: thevickypedia/vaultapi
image: thevickypedia/vaultapi
container_name: vaultapi
build:
context: .
dockerfile: Dockerfile
#build:
# context: .
# dockerfile: Dockerfile
volumes:
# Run 'chmod -R 755 ./data' before initiating the container
- ./logs:/app/logs
- ./data:/app/data
env_file:
- .env
ports:
# host_port:container_port
- "9010:8080"
- "9010:9010"
deploy:
# 'reservations' key is supported only in swarm mode
resources:
Expand Down
3 changes: 3 additions & 0 deletions docs/README.html
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@ <h2>Environment Variables<a class="headerlink" href="#environment-variables" tit
<li><p><strong>WORKERS</strong> - Number of workers for the uvicorn server. Defaults to <code class="docutils literal notranslate"><span class="pre">1</span></code></p></li>
<li><p><strong>RATE_LIMIT</strong> - List of dictionaries with <code class="docutils literal notranslate"><span class="pre">max_requests</span></code> and <code class="docutils literal notranslate"><span class="pre">seconds</span></code> to apply as rate limit.
Defaults to 5req/2s [AND] 10req/30s</p></li>
<li><p><strong>ALLOW_PUBLIC_IP</strong> - Boolean flag to allow connections via public IP. Defaults to <code class="docutils literal notranslate"><span class="pre">false</span></code></p></li>
<li><p><strong>ALLOW_PRIVATE_IP</strong> - Boolean flag to allow connections via private IP. Defaults to <code class="docutils literal notranslate"><span class="pre">false</span></code></p></li>
<li><p><strong>ALLOW_PRIVATE_IP_RANGE</strong> - Boolean flag to allow connections via any private IP address <em>(<code class="docutils literal notranslate"><span class="pre">1-256</span></code>)</em> within range. Defaults to <code class="docutils literal notranslate"><span class="pre">false</span></code></p></li>
</ul>
<p><strong>Optional (without defaults)</strong></p>
<ul class="simple">
Expand Down
3 changes: 3 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ vaultapi start
- **WORKERS** - Number of workers for the uvicorn server. Defaults to `1`
- **RATE_LIMIT** - List of dictionaries with `max_requests` and `seconds` to apply as rate limit.
Defaults to 5req/2s [AND] 10req/30s
- **ALLOW_PUBLIC_IP** - Boolean flag to allow connections via public IP. Defaults to `false`
- **ALLOW_PRIVATE_IP** - Boolean flag to allow connections via private IP. Defaults to `false`
- **ALLOW_PRIVATE_IP_RANGE** - Boolean flag to allow connections via any private IP address _(`1-256`)_ within range. Defaults to `false`

**Optional (without defaults)**
- **LOG_CONFIG** - FilePath or dictionary of key-value pairs for log config.
Expand Down
3 changes: 3 additions & 0 deletions docs/_sources/README.md.txt
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ vaultapi start
- **WORKERS** - Number of workers for the uvicorn server. Defaults to `1`
- **RATE_LIMIT** - List of dictionaries with `max_requests` and `seconds` to apply as rate limit.
Defaults to 5req/2s [AND] 10req/30s
- **ALLOW_PUBLIC_IP** - Boolean flag to allow connections via public IP. Defaults to `false`
- **ALLOW_PRIVATE_IP** - Boolean flag to allow connections via private IP. Defaults to `false`
- **ALLOW_PRIVATE_IP_RANGE** - Boolean flag to allow connections via any private IP address _(`1-256`)_ within range. Defaults to `false`

**Optional (without defaults)**
- **LOG_CONFIG** - FilePath or dictionary of key-value pairs for log config.
Expand Down
4 changes: 4 additions & 0 deletions docs/_sources/index.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ Exceptions
==========
.. automodule:: vaultapi.exceptions

IP Address
==========
.. automodule:: vaultapi.ipaddress

Models
======

Expand Down
27 changes: 23 additions & 4 deletions docs/genindex.html
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,12 @@ <h2 id="_">_</h2>
<h2 id="A">A</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="index.html#vaultapi.models.EnvConfig.allow_private_ip">allow_private_ip (vaultapi.models.EnvConfig attribute)</a>
</li>
<li><a href="index.html#vaultapi.models.EnvConfig.allow_private_ip_range">allow_private_ip_range (vaultapi.models.EnvConfig attribute)</a>
</li>
<li><a href="index.html#vaultapi.models.EnvConfig.allow_public_ip">allow_public_ip (vaultapi.models.EnvConfig attribute)</a>
</li>
<li><a href="index.html#vaultapi.models.EnvConfig.allowed_ip_range">allowed_ip_range (vaultapi.models.EnvConfig attribute)</a>
</li>
<li><a href="index.html#vaultapi.models.EnvConfig.allowed_origins">allowed_origins (vaultapi.models.EnvConfig attribute)</a>
Expand Down Expand Up @@ -264,6 +270,8 @@ <h2 id="M">M</h2>
<li><a href="index.html#module-vaultapi.database">vaultapi.database</a>
</li>
<li><a href="index.html#module-vaultapi.exceptions">vaultapi.exceptions</a>
</li>
<li><a href="index.html#module-vaultapi.ipaddress">vaultapi.ipaddress</a>
</li>
<li><a href="index.html#module-vaultapi.models">vaultapi.models</a>
</li>
Expand All @@ -286,14 +294,18 @@ <h2 id="P">P</h2>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="index.html#vaultapi.models.EnvConfig.port">port (vaultapi.models.EnvConfig attribute)</a>
</li>
<li><a href="index.html#vaultapi.ipaddress.private">private() (in module vaultapi.ipaddress)</a>
</li>
<li><a href="index.html#vaultapi.ipaddress.public">public() (in module vaultapi.ipaddress)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="index.html#vaultapi.database.put_secret">put_secret() (in module vaultapi.database)</a>

<ul>
<li><a href="index.html#vaultapi.routes.put_secret">(in module vaultapi.routes)</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="index.html#vaultapi.routes.put_secrets">put_secrets() (in module vaultapi.routes)</a>
</li>
<li><a href="index.html#vaultapi.payload.PutSecret">PutSecret (class in vaultapi.payload)</a>
Expand Down Expand Up @@ -403,13 +415,20 @@ <h2 id="V">V</h2>
<li><a href="index.html#module-vaultapi.database">module</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li>
vaultapi.exceptions

<ul>
<li><a href="index.html#module-vaultapi.exceptions">module</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li>
vaultapi.ipaddress

<ul>
<li><a href="index.html#module-vaultapi.ipaddress">module</a>
</li>
</ul></li>
<li>
Expand Down
57 changes: 57 additions & 0 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,47 @@ <h1>Welcome to VaultAPI’s documentation!<a class="headerlink" href="#welcome-t
</div>
</dd></dl>

</section>
<section id="module-vaultapi.ipaddress">
<span id="ip-address"></span><h1>IP Address<a class="headerlink" href="#module-vaultapi.ipaddress" title="Permalink to this heading"></a></h1>
<dl class="py function">
<dt class="sig sig-object py" id="vaultapi.ipaddress.private">
<span class="sig-prename descclassname"><span class="pre">vaultapi.ipaddress.</span></span><span class="sig-name descname"><span class="pre">private</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#vaultapi.ipaddress.private" title="Permalink to this definition"></a></dt>
<dd><p>Get private IP address of the host using socket connection.</p>
<div class="admonition seealso">
<p class="admonition-title">See also</p>
<p>Uses Google’s DNS endpoint to resolve the private IP address.</p>
</div>
<p class="rubric">References</p>
<p><a class="reference external" href="https://dns.google/query?name=8.8.8.8">https://dns.google/query?name=8.8.8.8</a></p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Private IP address.</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>str</p>
</dd>
</dl>
</dd></dl>

<dl class="py function">
<dt class="sig sig-object py" id="vaultapi.ipaddress.public">
<span class="sig-prename descclassname"><span class="pre">vaultapi.ipaddress.</span></span><span class="sig-name descname"><span class="pre">public</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="headerlink" href="#vaultapi.ipaddress.public" title="Permalink to this definition"></a></dt>
<dd><p>Gets public IP address of the host using different endpoints.</p>
<div class="admonition seealso">
<p class="admonition-title">See also</p>
<p>Uses 6 public IP retriever endpoints to get the public IP address.</p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Public IP address.</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>str</p>
</dd>
</dl>
</dd></dl>

</section>
<section id="models">
<h1>Models<a class="headerlink" href="#models" title="Permalink to this heading"></a></h1>
Expand Down Expand Up @@ -341,6 +382,21 @@ <h1>Models<a class="headerlink" href="#models" title="Permalink to this heading"
<span class="sig-name descname"><span class="pre">log_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">Path</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#vaultapi.models.EnvConfig.log_config" title="Permalink to this definition"></a></dt>
<dd></dd></dl>

<dl class="py attribute">
<dt class="sig sig-object py" id="vaultapi.models.EnvConfig.allow_public_ip">
<span class="sig-name descname"><span class="pre">allow_public_ip</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><a class="headerlink" href="#vaultapi.models.EnvConfig.allow_public_ip" title="Permalink to this definition"></a></dt>
<dd></dd></dl>

<dl class="py attribute">
<dt class="sig sig-object py" id="vaultapi.models.EnvConfig.allow_private_ip">
<span class="sig-name descname"><span class="pre">allow_private_ip</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><a class="headerlink" href="#vaultapi.models.EnvConfig.allow_private_ip" title="Permalink to this definition"></a></dt>
<dd></dd></dl>

<dl class="py attribute">
<dt class="sig sig-object py" id="vaultapi.models.EnvConfig.allow_private_ip_range">
<span class="sig-name descname"><span class="pre">allow_private_ip_range</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><a class="headerlink" href="#vaultapi.models.EnvConfig.allow_private_ip_range" title="Permalink to this definition"></a></dt>
<dd></dd></dl>

<dl class="py attribute">
<dt class="sig sig-object py" id="vaultapi.models.EnvConfig.allowed_origins">
<span class="sig-name descname"><span class="pre">allowed_origins</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Union</span><span class="p"><span class="pre">[</span></span><span class="pre">HttpUrl</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">HttpUrl</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#vaultapi.models.EnvConfig.allowed_origins" title="Permalink to this definition"></a></dt>
Expand Down Expand Up @@ -937,6 +993,7 @@ <h3><a href="#">Table of Contents</a></h3>
<li><a class="reference internal" href="#module-vaultapi.auth">Authenticator</a></li>
<li><a class="reference internal" href="#module-vaultapi.database">Database</a></li>
<li><a class="reference internal" href="#module-vaultapi.exceptions">Exceptions</a></li>
<li><a class="reference internal" href="#module-vaultapi.ipaddress">IP Address</a></li>
<li><a class="reference internal" href="#models">Models</a></li>
<li><a class="reference internal" href="#payload">Payload</a></li>
<li><a class="reference internal" href="#module-vaultapi.rate_limit">RateLimit</a></li>
Expand Down
Binary file modified docs/objects.inv
Binary file not shown.
5 changes: 5 additions & 0 deletions docs/py-modindex.html
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,11 @@ <h1>Python Module Index</h1>
<td>&#160;&#160;&#160;
<a href="index.html#module-vaultapi.exceptions"><code class="xref">vaultapi.exceptions</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="index.html#module-vaultapi.ipaddress"><code class="xref">vaultapi.ipaddress</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
Expand Down
Loading

0 comments on commit 2f68353

Please sign in to comment.