Skip to content

Commit 63d8501

Browse files
committed
totp auth; refactoring; fixes
1 parent a973b88 commit 63d8501

37 files changed

+8248
-5396
lines changed

.dockerignore

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ out
55
gen
66
.github
77

8-
easyrsa
9-
easyrsa_master
10-
easyrsa_slave
11-
ccd
12-
ccd_master
13-
ccd_slave
8+
easyrsa/
9+
easyrsa_master/
10+
easyrsa_slave/
11+
ccd/
12+
ccd_master/
13+
ccd_slave/
1414
werf.yaml
1515
frontend/node_modules
1616
frontend/static/dist
@@ -24,3 +24,5 @@ docker-compose-slave.yaml
2424
img
2525
dashboard
2626
.helm
27+
.github
28+

.env

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
OVPN_SERVER_NET="192.168.100.0"
2+
OVPN_SERVER_MASK="255.255.255.0"
3+
OVPN_NETWORK="192.168.100.0/24"
4+
OVPN_CCD="true"
5+
OVPN_CCD_PATH="/mnt/ccd"
6+
EASYRSA_PATH="/mnt/easyrsa"
7+
OVPN_INDEX_PATH="/mnt/easyrsa/pki/index.txt"
8+
OVPN_SERVER="127.0.0.1:7777:tcp"
9+
OVPN_AUTH="true"
10+
OVPN_AUTH_TFA="true"
11+
OVPN_PASSWD_AUTH="true"
12+
OVPN_AUTH_DB_PATH="/mnt/easyrsa/pki/users.db"
13+
LOG_LEVEL="debug"

.github/workflows/publish-latest.yaml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,6 @@ jobs:
1212
uses: actions/checkout@v2
1313
with:
1414
fetch-depth: 0
15-
- name: Push openvpn image to Docker Hub
16-
uses: docker/build-push-action@v1
17-
with:
18-
username: ${{ secrets.DOCKER_USER }}
19-
password: ${{ secrets.DOCKER_PASS }}
20-
repository: flant/ovpn-admin
21-
tags: openvpn-latest
22-
dockerfile: Dockerfile.openvpn
2315
- name: Push ovpn-admin image to Docker Hub
2416
uses: docker/build-push-action@v1
2517
with:

.github/workflows/publish-tag.yaml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,6 @@ jobs:
1616
- name: Get the version
1717
id: get_version
1818
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
19-
- name: Push openvpn image to Docker Hub
20-
uses: docker/build-push-action@v1
21-
with:
22-
username: ${{ secrets.DOCKER_USER }}
23-
password: ${{ secrets.DOCKER_PASS }}
24-
repository: flant/ovpn-admin
25-
tags: openvpn-${{ steps.get_version.outputs.VERSION }}
26-
dockerfile: Dockerfile.openvpn
2719
- name: Push ovpn-admin image to Docker Hub
2820
uses: docker/build-push-action@v1
2921
with:

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,5 @@ packrd/
1919
*.ntvs*
2020
*.njsproj
2121
*.sln
22+
23+
.env

Dockerfile

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ COPY frontend/ /app
33
RUN cd /app && npm install && npm run build
44

55
FROM golang:1.17.3-buster AS backend-builder
6-
RUN go install github.com/gobuffalo/packr/v2/packr2@latest
76
COPY --from=frontend-builder /app/static /app/frontend/static
87
COPY . /app
9-
RUN cd /app && packr2 && env CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -a -tags netgo -ldflags '-linkmode external -extldflags -static -s -w' -o ovpn-admin && packr2 clean
8+
RUN cd /app && env CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -a -tags netgo -ldflags '-linkmode external -extldflags -static -s -w' -o ovpn-admin
109

1110
FROM alpine:3.16
1211
WORKDIR /app
13-
COPY --from=backend-builder /app/ovpn-admin /app
14-
RUN apk add --update bash easy-rsa openssl openvpn coreutils && \
12+
RUN apk add --update bash easy-rsa openssl openvpn coreutils iptables curl&& \
1513
ln -s /usr/share/easy-rsa/easyrsa /usr/local/bin && \
16-
wget https://github.com/pashcovich/openvpn-user/releases/download/v1.0.4/openvpn-user-linux-amd64.tar.gz -O - | tar xz -C /usr/local/bin && \
14+
wget https://github.com/pashcovich/openvpn-user/releases/download/v1.0.9/openvpn-user-linux-amd64.tar.gz -O - | tar xz -C /usr/local/bin && \
1715
rm -rf /tmp/* /var/tmp/* /var/cache/apk/* /var/cache/distfiles/*
16+
COPY --from=backend-builder /app/ovpn-admin /app
17+
COPY setup/ /etc/openvpn/setup
18+
RUN chmod +x /etc/openvpn/setup/configure.sh

Dockerfile.openvpn

Lines changed: 0 additions & 7 deletions
This file was deleted.

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,12 @@ Ready docker images available on [Docker Hub](https://hub.docker.com/r/flant/ovp
5050

5151
Requirements. You need Linux with the following components installed:
5252
- [golang](https://golang.org/doc/install)
53-
- [packr2](https://github.com/gobuffalo/packr#installation)
5453
- [nodejs/npm](https://nodejs.org/en/download/package-manager/)
5554

55+
before version 2.1.0 you need
56+
- [packr2](https://github.com/gobuffalo/packr#installation)
57+
58+
5659
Commands to execute:
5760

5861
```bash

certificates.go renamed to backend/certificates.go

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package main
1+
package backend
22

33
import (
44
"bytes"
@@ -12,8 +12,8 @@ import (
1212
"time"
1313
)
1414

15-
// decode certificate from PEM to x509
16-
func decodeCert(certPEMBytes []byte) (cert *x509.Certificate, err error) {
15+
// DecodeCert decode certificate from PEM to x509
16+
func DecodeCert(certPEMBytes []byte) (cert *x509.Certificate, err error) {
1717
certPem, _ := pem.Decode(certPEMBytes)
1818
certPemBytes := certPem.Bytes
1919

@@ -25,8 +25,8 @@ func decodeCert(certPEMBytes []byte) (cert *x509.Certificate, err error) {
2525
return
2626
}
2727

28-
// decode private key from PEM to RSA format
29-
func decodePrivKey(privKey []byte) (key *rsa.PrivateKey, err error) {
28+
// DecodePrivKey decode private key from PEM to RSA format
29+
func DecodePrivKey(privKey []byte) (key *rsa.PrivateKey, err error) {
3030
privKeyPem, _ := pem.Decode(privKey)
3131
key, err = x509.ParsePKCS1PrivateKey(privKeyPem.Bytes)
3232
if err == nil {
@@ -43,8 +43,8 @@ func decodePrivKey(privKey []byte) (key *rsa.PrivateKey, err error) {
4343
return
4444
}
4545

46-
// return PEM encoded private key
47-
func genPrivKey() (privKeyPEM *bytes.Buffer, err error) {
46+
// GenPrivKey return PEM encoded private key
47+
func GenPrivKey() (privKeyPEM *bytes.Buffer, err error) {
4848
privKey, err := rsa.GenerateKey(rand.Reader, 2048)
4949

5050
//privKeyPKCS1 := x509.MarshalPKCS1PrivateKey(privKey)
@@ -60,12 +60,11 @@ func genPrivKey() (privKeyPEM *bytes.Buffer, err error) {
6060
Bytes: privKeyPKCS8,
6161
})
6262

63-
6463
return
6564
}
6665

67-
// return PEM encoded certificate
68-
func genCA(privKey *rsa.PrivateKey) (issuerPEM *bytes.Buffer, err error) {
66+
// GenCA return PEM encoded certificate
67+
func GenCA(privKey *rsa.PrivateKey) (issuerPEM *bytes.Buffer, err error) {
6968
serialNumberRange := new(big.Int).Lsh(big.NewInt(1), 128)
7069

7170
issuerSerial, err := rand.Int(rand.Reader, serialNumberRange)
@@ -96,8 +95,8 @@ func genCA(privKey *rsa.PrivateKey) (issuerPEM *bytes.Buffer, err error) {
9695
return
9796
}
9897

99-
// return PEM encoded certificate
100-
func genServerCert(privKey, caPrivKey *rsa.PrivateKey, ca *x509.Certificate, cn string) (issuerPEM *bytes.Buffer, err error) {
98+
// GenServerCert return PEM encoded certificate
99+
func GenServerCert(privKey, caPrivKey *rsa.PrivateKey, ca *x509.Certificate, cn string) (issuerPEM *bytes.Buffer, err error) {
101100
serialNumberRange := new(big.Int).Lsh(big.NewInt(1), 128)
102101
serial, err := rand.Int(rand.Reader, serialNumberRange)
103102

@@ -128,8 +127,8 @@ func genServerCert(privKey, caPrivKey *rsa.PrivateKey, ca *x509.Certificate, cn
128127
return
129128
}
130129

131-
// return PEM encoded certificate
132-
func genClientCert(privKey, caPrivKey *rsa.PrivateKey, ca *x509.Certificate, cn string) (issuerPEM *bytes.Buffer, err error) {
130+
// GenClientCert return PEM encoded certificate
131+
func GenClientCert(privKey, caPrivKey *rsa.PrivateKey, ca *x509.Certificate, cn string) (issuerPEM *bytes.Buffer, err error) {
133132
serialNumberRange := new(big.Int).Lsh(big.NewInt(1), 128)
134133
serial, err := rand.Int(rand.Reader, serialNumberRange)
135134

@@ -160,8 +159,8 @@ func genClientCert(privKey, caPrivKey *rsa.PrivateKey, ca *x509.Certificate, cn
160159
return
161160
}
162161

163-
// return PEM encoded CRL
164-
func genCRL(certs []*RevokedCert, ca *x509.Certificate, caKey *rsa.PrivateKey) (crlPEM *bytes.Buffer, err error) {
162+
// GenCRL return PEM encoded CRL
163+
func GenCRL(certs []*RevokedCert, ca *x509.Certificate, caKey *rsa.PrivateKey) (crlPEM *bytes.Buffer, err error) {
165164
var revokedCertificates []pkix.RevokedCertificate
166165

167166
for _, cert := range certs {

backend/consts.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package backend
2+
3+
const (
4+
usernameRegexp = `^([a-zA-Z0-9_.-@])+$`
5+
passwordMinLength = 6
6+
DownloadCertsApiUrl = "/api/data/certs/download"
7+
DownloadCcdApiUrl = "/api/data/ccd/download"
8+
certsArchiveFileName = "certs.tar.gz"
9+
ccdArchiveFileName = "ccd.tar.gz"
10+
indexTxtDateLayout = "060102150405Z"
11+
stringDateFormat = "2006-01-02 15:04:05"
12+
13+
KubeNamespaceFilePath = "/var/run/secrets/kubernetes.io/serviceaccount/namespace"
14+
)

0 commit comments

Comments
 (0)