Browse Source

Merge pull request #55 from perara/dev

Dev
pull/59/head
Per-Arne Andersen 4 years ago
committed by GitHub
parent
commit
9386c4bcba
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      wg_dashboard_backend/const.py
  2. 21
      wg_dashboard_backend/migrations/versions/008_create_allowed_ips.py
  3. 21
      wg_dashboard_backend/migrations/versions/009_create_keep_alive.py
  4. 3
      wg_dashboard_backend/models.py
  5. 2
      wg_dashboard_backend/requirements.txt
  6. 4
      wg_dashboard_backend/routers/v1/peer.py
  7. 3
      wg_dashboard_backend/schemas.py
  8. 5
      wg_dashboard_backend/templates/peer.j2
  9. 1
      wg_dashboard_frontend/src/app/interfaces/peer.ts
  10. 19
      wg_dashboard_frontend/src/app/page/dashboard/add-server/add-server.component.html
  11. 11
      wg_dashboard_frontend/src/app/page/dashboard/add-server/add-server.component.ts
  12. 7
      wg_dashboard_frontend/src/app/page/dashboard/peer/peer.component.html

2
wg_dashboard_backend/const.py

@ -43,8 +43,6 @@ else:
DEFAULT_CONFIG_DIR = "/config"
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)
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

21
wg_dashboard_backend/migrations/versions/009_create_keep_alive.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)
keep_alive = Column('keep_alive', Integer)
keep_alive.create(server)
except:
pass
def downgrade(migrate_engine):
try:
meta = MetaData(bind=migrate_engine)
server = Table('server', meta, autoload=True)
server.c.keep_alive.drop()
except:
pass

3
wg_dashboard_backend/models.py

@ -41,6 +41,8 @@ class WGServer(Base):
public_key = Column(sqlalchemy.String)
endpoint = Column(sqlalchemy.String)
dns = Column(sqlalchemy.String)
allowed_ips = Column(sqlalchemy.String)
keep_alive = Column(sqlalchemy.Integer, default=0)
read_only = Column(sqlalchemy.Integer, default=0)
post_up = Column(sqlalchemy.String)
@ -63,6 +65,7 @@ class WGPeer(Base):
shared_key = Column(sqlalchemy.Text)
dns = Column(sqlalchemy.Text)
allowed_ips = Column(sqlalchemy.String)
keep_alive = Column(sqlalchemy.Integer, default=0)
read_only = Column(sqlalchemy.Integer, default=0)
server_id = Column(Integer, sqlalchemy.ForeignKey('server.id', ondelete="CASCADE", onupdate="CASCADE"))

2
wg_dashboard_backend/requirements.txt

@ -13,4 +13,6 @@ sqlalchemy_utils
sqlalchemy-migrate
requests
uvicorn
uvloop
httptools
qrcode[pil]

4
wg_dashboard_backend/routers/v1/peer.py

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

3
wg_dashboard_backend/schemas.py

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

5
wg_dashboard_backend/templates/peer.j2

@ -9,6 +9,5 @@ DNS = {{ data.peer.dns }}
PublicKey = {{ data.server.public_key }}
AllowedIPs = {{ data.peer.allowed_ips }}
Endpoint = {{ data.server.endpoint }}:{{ data.server.listen_port }}
{% if data.peer.shared_key %}
PresharedKey = {{ data.peer.shared_key }}
{% endif %}
{% if data.peer.shared_key %}PresharedKey = {{ data.peer.shared_key }}{% endif %}
{% if data.peer.keep_alive %}PersistentKeepalive = {{data.peer.keep_alive}}{% endif %}

1
wg_dashboard_frontend/src/app/interfaces/peer.ts

@ -7,6 +7,7 @@ export interface Peer {
shared_key: string;
dns: string;
allowed_ips: string;
keep_alive: number;
name: string;
configuration: string;
stats: {

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

@ -107,7 +107,24 @@
<input formControlName="dns" matInput [placeholder]="defaultIPv4Address">
</mat-form-field>
</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>
<tr>
<td>
<mat-form-field class="add-server-full-width">
<mat-label>Default PersistentKeepalive interval</mat-label>
<input formControlName="keep_alive" matInput [placeholder]="defaultPersistentKeepalive">
</mat-form-field>
</td>
</tr>
</table>
<p><b>Keys</b></p>
<p>

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

@ -44,6 +44,8 @@ export class AddServerComponent implements OnInit {
defaultIPv4Address = "10.0.200.1"
defaultDNS = this.defaultIPv4Address + ",8.8.8.8"
defaultIPv6Address = "fd42:42:42::1"
defaultAllowedIPs = "0.0.0.0/0, ::/0"
defaultPersistentKeepalive = 0;
serverForm: FormGroup = null;
@ -60,11 +62,13 @@ export class AddServerComponent implements OnInit {
listen_port: new FormControl(this.defaultListenPort, [Validators.required, NumberValidator.stringIsNumber]),
endpoint: new FormControl('', Validators.required),
dns: new FormControl(this.defaultDNS),
allowed_ips: new FormControl(this.defaultAllowedIPs),
keep_alive: new FormControl(this.defaultPersistentKeepalive),
private_key: new FormControl('' ),
public_key: new FormControl('' ),
post_up: new FormControl(''),
post_down: new FormControl(''),
read_only: new FormControl(''),
read_only: new FormControl(0),
// Unused on backend
configuration: new FormControl(''),
@ -224,18 +228,17 @@ export class AddServerComponent implements OnInit {
const idx = this.servers.indexOf(this.editServer);
this.serverAPI.editServer(this.editServer, form).subscribe((server: Server) => {
this.servers[idx] = server;
this.resetForm();
});
} else {
this.serverAPI.addServer(form).subscribe((server: Server) => {
this.servers.push(server);
this.resetForm();
});
}
this.resetForm();
}
getKeyPair() {

7
wg_dashboard_frontend/src/app/page/dashboard/peer/peer.component.html

@ -40,6 +40,13 @@
</mat-form-field>
</p>
<p>
<mat-form-field class="full-width">
<mat-label>PersistentKeepalive interval</mat-label>
<input [disabled]="!peer._edit" name="keep_alive" [(ngModel)]="peer.keep_alive" matInput>
</mat-form-field>
</p>
<p>Keys</p>
<p>

Loading…
Cancel
Save