Browse Source

Add server option for allowed IPs

pull/52/head
Lombra 4 years ago
parent
commit
a646cd7d77
  1. 2
      wg_dashboard_backend/const.py
  2. 21
      wg_dashboard_backend/migrations/versions/008_create_allowed_ips.py
  3. 1
      wg_dashboard_backend/models.py
  4. 3
      wg_dashboard_backend/routers/v1/peer.py
  5. 1
      wg_dashboard_backend/schemas.py
  6. 11
      wg_dashboard_frontend/src/app/page/dashboard/add-server/add-server.component.html
  7. 2
      wg_dashboard_frontend/src/app/page/dashboard/add-server/add-server.component.ts

2
wg_dashboard_backend/const.py

@ -43,8 +43,6 @@ else:
DEFAULT_CONFIG_DIR = "/config" DEFAULT_CONFIG_DIR = "/config"
os.makedirs(DEFAULT_CONFIG_DIR, exist_ok=True) os.makedirs(DEFAULT_CONFIG_DIR, exist_ok=True)
PEER_DEFAULT_ALLOWED_IPS = ["0.0.0.0/0", "::/0"]
ENV_CONFIG_DIR = os.getenv("ENV_CONFIG_DIR", DEFAULT_CONFIG_DIR) ENV_CONFIG_DIR = os.getenv("ENV_CONFIG_DIR", DEFAULT_CONFIG_DIR)
os.makedirs(ENV_CONFIG_DIR, exist_ok=True) os.makedirs(ENV_CONFIG_DIR, exist_ok=True)

21
wg_dashboard_backend/migrations/versions/008_create_allowed_ips.py

@ -0,0 +1,21 @@
from sqlalchemy import *
from migrate import *
def upgrade(migrate_engine):
try:
meta = MetaData(bind=migrate_engine)
server = Table('server', meta, autoload=True)
allowed_ips = Column('allowed_ips', Text)
allowed_ips.create(server)
except:
pass
def downgrade(migrate_engine):
try:
meta = MetaData(bind=migrate_engine)
server = Table('server', meta, autoload=True)
server.c.allowed_ips.drop()
except:
pass

1
wg_dashboard_backend/models.py

@ -41,6 +41,7 @@ class WGServer(Base):
public_key = Column(sqlalchemy.String) public_key = Column(sqlalchemy.String)
endpoint = Column(sqlalchemy.String) endpoint = Column(sqlalchemy.String)
dns = Column(sqlalchemy.String) dns = Column(sqlalchemy.String)
allowed_ips = Column(sqlalchemy.String)
read_only = Column(sqlalchemy.Integer, default=0) read_only = Column(sqlalchemy.Integer, default=0)
post_up = Column(sqlalchemy.String) post_up = Column(sqlalchemy.String)

3
wg_dashboard_backend/routers/v1/peer.py

@ -64,8 +64,7 @@ def add_peer(
peer.private_key = keys["private_key"] peer.private_key = keys["private_key"]
peer.public_key = keys["public_key"] peer.public_key = keys["public_key"]
# Set 0.0.0.0/0, ::/0 as default allowed ips peer.allowed_ips = server.allowed_ips
peer.allowed_ips = ', '.join(const.PEER_DEFAULT_ALLOWED_IPS)
# Set unnamed # Set unnamed
peer.name = "Unnamed" if not peer_add.name else peer_add.name peer.name = "Unnamed" if not peer_add.name else peer_add.name

1
wg_dashboard_backend/schemas.py

@ -169,6 +169,7 @@ class WGServer(GenericModel):
post_up: str = None post_up: str = None
post_down: str = None post_down: str = None
dns: str = None dns: str = None
allowed_ips: str = None
read_only: int = None read_only: int = None
peers: pydantic.typing.List['WGPeer'] = [] peers: pydantic.typing.List['WGPeer'] = []

11
wg_dashboard_frontend/src/app/page/dashboard/add-server/add-server.component.html

@ -107,7 +107,16 @@
<input formControlName="dns" matInput [placeholder]="defaultIPv4Address"> <input formControlName="dns" matInput [placeholder]="defaultIPv4Address">
</mat-form-field> </mat-form-field>
</td> </td>
</tr></table> </tr>
<tr>
<td>
<mat-form-field class="add-server-full-width">
<mat-label>Default allowed IPs</mat-label>
<input formControlName="allowed_ips" matInput [placeholder]="defaultAllowedIPs">
</mat-form-field>
</td>
</tr>
</table>
<p><b>Keys</b></p> <p><b>Keys</b></p>
<p> <p>

2
wg_dashboard_frontend/src/app/page/dashboard/add-server/add-server.component.ts

@ -44,6 +44,7 @@ export class AddServerComponent implements OnInit {
defaultIPv4Address = "10.0.200.1" defaultIPv4Address = "10.0.200.1"
defaultDNS = this.defaultIPv4Address + ",8.8.8.8" defaultDNS = this.defaultIPv4Address + ",8.8.8.8"
defaultIPv6Address = "fd42:42:42::1" defaultIPv6Address = "fd42:42:42::1"
defaultAllowedIPs = "0.0.0.0/0, ::/0"
serverForm: FormGroup = null; serverForm: FormGroup = null;
@ -60,6 +61,7 @@ export class AddServerComponent implements OnInit {
listen_port: new FormControl(this.defaultListenPort, [Validators.required, NumberValidator.stringIsNumber]), listen_port: new FormControl(this.defaultListenPort, [Validators.required, NumberValidator.stringIsNumber]),
endpoint: new FormControl('', Validators.required), endpoint: new FormControl('', Validators.required),
dns: new FormControl(this.defaultDNS), dns: new FormControl(this.defaultDNS),
allowed_ips: new FormControl(this.defaultAllowedIPs),
private_key: new FormControl('' ), private_key: new FormControl('' ),
public_key: new FormControl('' ), public_key: new FormControl('' ),
post_up: new FormControl(''), post_up: new FormControl(''),

Loading…
Cancel
Save