onions: add onion service management
This commit is contained in:
parent
9987c996c9
commit
8efb7d9186
11 changed files with 327 additions and 2 deletions
|
@ -10,6 +10,8 @@ class Group(AbstractConfiguration):
|
|||
|
||||
origins = db.relationship("Origin", back_populates="group")
|
||||
bridgeconfs = db.relationship("BridgeConf", back_populates="group")
|
||||
eotks = db.relationship("Eotk", back_populates="group")
|
||||
onions = db.relationship("Onion", back_populates="group")
|
||||
alarms = db.relationship("Alarm", back_populates="group")
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
from typing import Optional
|
||||
|
||||
from tldextract import extract
|
||||
|
||||
from app import db
|
||||
from app.models import AbstractConfiguration, AbstractResource
|
||||
from app.models.onions import Onion
|
||||
|
||||
|
||||
class Origin(AbstractConfiguration):
|
||||
|
@ -23,6 +28,13 @@ class Origin(AbstractConfiguration):
|
|||
for proxy in self.proxies:
|
||||
proxy.destroy()
|
||||
|
||||
def onion(self) -> Optional[str]:
|
||||
tld = extract(self.domain_name).registered_domain
|
||||
onion = Onion.query.filter(Onion.domain_name == tld).first()
|
||||
if not onion:
|
||||
return None
|
||||
return self.domain_name.replace(tld, f"{onion.onion_name}")
|
||||
|
||||
|
||||
class Proxy(AbstractResource):
|
||||
origin_id = db.Column(db.Integer, db.ForeignKey("origin.id"), nullable=False)
|
||||
|
|
18
app/models/onions.py
Normal file
18
app/models/onions.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
from app.extensions import db
|
||||
from app.models import AbstractConfiguration, AbstractResource
|
||||
|
||||
|
||||
class Onion(AbstractConfiguration):
|
||||
group_id = db.Column(db.Integer(), db.ForeignKey("group.id"), nullable=False)
|
||||
domain_name = db.Column(db.String(255), nullable=False)
|
||||
onion_name = db.Column(db.String(56), nullable=False, unique=True)
|
||||
|
||||
group = db.relationship("Group", back_populates="onions")
|
||||
|
||||
|
||||
class Eotk(AbstractResource):
|
||||
group_id = db.Column(db.Integer(), db.ForeignKey("group.id"), nullable=False)
|
||||
instance_id = db.Column(db.String(100), nullable=True)
|
||||
region = db.Column(db.String(20), nullable=False)
|
||||
|
||||
group = db.relationship("Group", back_populates="eotks")
|
Loading…
Add table
Add a link
Reference in a new issue