rename example-webook to cert-manager-webhook-dnspod
This commit is contained in:
parent
0a4651e413
commit
e6bb4957af
2
Makefile
2
Makefile
@ -20,4 +20,4 @@ rendered-manifest.yaml:
|
||||
--name cert-manager-webhook-dnspod \
|
||||
--set image.repository=$(IMAGE_NAME) \
|
||||
--set image.tag=$(IMAGE_TAG) \
|
||||
deploy/example-webhook > "$(OUT)/rendered-manifest.yaml"
|
||||
deploy/cert-manager-webhook-dnspod > "$(OUT)/rendered-manifest.yaml"
|
||||
|
||||
@ -12,7 +12,7 @@ This is a webhook solver for [DNSPod](https://www.dnspod.cn).
|
||||
Generate API ID and API Token from DNSPod (https://support.dnspod.cn/Kb/showarticle/tsid/227/).
|
||||
|
||||
```console
|
||||
$ helm install --name cert-manager-webhook-dnspod ./deploy/example-webhook \
|
||||
$ helm install --name cert-manager-webhook-dnspod ./deploy/cert-manager-webhook-dnspod \
|
||||
--set groupName=<GROUP_NAME> \
|
||||
--set secrets.apiID=<DNSPOD_API_ID>,secrets.apiToken=<DNSPOD_API_TOKEN> \
|
||||
--set clusterIssuer.enabled=true,clusterIssuer.email=<EMAIL_ADDRESS>
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "example-webhook.name" -}}
|
||||
{{- define "cert-manager-webhook-dnspod.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
@ -11,7 +11,7 @@ Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "example-webhook.fullname" -}}
|
||||
{{- define "cert-manager-webhook-dnspod.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
@ -27,26 +27,26 @@ If release name contains chart name it will be used as a full name.
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "example-webhook.chart" -}}
|
||||
{{- define "cert-manager-webhook-dnspod.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "example-webhook.selfSignedIssuer" -}}
|
||||
{{ printf "%s-selfsign" (include "example-webhook.fullname" .) }}
|
||||
{{- define "cert-manager-webhook-dnspod.selfSignedIssuer" -}}
|
||||
{{ printf "%s-selfsign" (include "cert-manager-webhook-dnspod.fullname" .) }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "example-webhook.rootCAIssuer" -}}
|
||||
{{ printf "%s-ca" (include "example-webhook.fullname" .) }}
|
||||
{{- define "cert-manager-webhook-dnspod.rootCAIssuer" -}}
|
||||
{{ printf "%s-ca" (include "cert-manager-webhook-dnspod.fullname" .) }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "example-webhook.rootCACertificate" -}}
|
||||
{{ printf "%s-ca" (include "example-webhook.fullname" .) }}
|
||||
{{- define "cert-manager-webhook-dnspod.rootCACertificate" -}}
|
||||
{{ printf "%s-ca" (include "cert-manager-webhook-dnspod.fullname" .) }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "example-webhook.servingCertificate" -}}
|
||||
{{ printf "%s-webhook-tls" (include "example-webhook.fullname" .) }}
|
||||
{{- define "cert-manager-webhook-dnspod.servingCertificate" -}}
|
||||
{{ printf "%s-webhook-tls" (include "cert-manager-webhook-dnspod.fullname" .) }}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "example-webhook.clusterIssuer" -}}
|
||||
{{ printf "%s-cluster-issuer" (include "example-webhook.fullname" .) }}
|
||||
{{- define "cert-manager-webhook-dnspod.clusterIssuer" -}}
|
||||
{{ printf "%s-cluster-issuer" (include "cert-manager-webhook-dnspod.fullname" .) }}
|
||||
{{- end -}}
|
||||
@ -3,17 +3,17 @@ kind: APIService
|
||||
metadata:
|
||||
name: v1alpha1.{{ .Values.groupName }}
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
annotations:
|
||||
certmanager.k8s.io/inject-ca-from: "{{ .Release.Namespace }}/{{ include "example-webhook.servingCertificate" . }}"
|
||||
certmanager.k8s.io/inject-ca-from: "{{ .Release.Namespace }}/{{ include "cert-manager-webhook-dnspod.servingCertificate" . }}"
|
||||
spec:
|
||||
group: {{ .Values.groupName }}
|
||||
groupPriorityMinimum: 1000
|
||||
versionPriority: 15
|
||||
service:
|
||||
name: {{ include "example-webhook.fullname" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
version: v1alpha1
|
||||
@ -1,25 +1,25 @@
|
||||
apiVersion: apps/v1beta2
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "example-webhook.fullname" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
serviceAccountName: {{ include "example-webhook.fullname" . }}
|
||||
serviceAccountName: {{ include "cert-manager-webhook-dnspod.fullname" . }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: "{{ .Values.image.repository }}:{{ default .Chart.AppVersion .Values.image.tag }}"
|
||||
@ -53,7 +53,7 @@ spec:
|
||||
volumes:
|
||||
- name: certs
|
||||
secret:
|
||||
secretName: {{ include "example-webhook.servingCertificate" . }}
|
||||
secretName: {{ include "cert-manager-webhook-dnspod.servingCertificate" . }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
@ -4,11 +4,11 @@
|
||||
apiVersion: certmanager.k8s.io/v1alpha1
|
||||
kind: Issuer
|
||||
metadata:
|
||||
name: {{ include "example-webhook.selfSignedIssuer" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.selfSignedIssuer" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
@ -20,19 +20,19 @@ spec:
|
||||
apiVersion: certmanager.k8s.io/v1alpha1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: {{ include "example-webhook.rootCACertificate" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.rootCACertificate" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
secretName: {{ include "example-webhook.rootCACertificate" . }}
|
||||
secretName: {{ include "cert-manager-webhook-dnspod.rootCACertificate" . }}
|
||||
duration: 43800h # 5y
|
||||
issuerRef:
|
||||
name: {{ include "example-webhook.selfSignedIssuer" . }}
|
||||
commonName: "ca.example-webhook.cert-manager"
|
||||
name: {{ include "cert-manager-webhook-dnspod.selfSignedIssuer" . }}
|
||||
commonName: "ca.cert-manager-webhook-dnspod.cert-manager"
|
||||
isCA: true
|
||||
|
||||
---
|
||||
@ -41,16 +41,16 @@ spec:
|
||||
apiVersion: certmanager.k8s.io/v1alpha1
|
||||
kind: Issuer
|
||||
metadata:
|
||||
name: {{ include "example-webhook.rootCAIssuer" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.rootCAIssuer" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
ca:
|
||||
secretName: {{ include "example-webhook.rootCACertificate" . }}
|
||||
secretName: {{ include "cert-manager-webhook-dnspod.rootCACertificate" . }}
|
||||
|
||||
---
|
||||
|
||||
@ -58,33 +58,33 @@ spec:
|
||||
apiVersion: certmanager.k8s.io/v1alpha1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: {{ include "example-webhook.servingCertificate" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.servingCertificate" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
secretName: {{ include "example-webhook.servingCertificate" . }}
|
||||
secretName: {{ include "cert-manager-webhook-dnspod.servingCertificate" . }}
|
||||
duration: 8760h # 1y
|
||||
issuerRef:
|
||||
name: {{ include "example-webhook.rootCAIssuer" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.rootCAIssuer" . }}
|
||||
dnsNames:
|
||||
- {{ include "example-webhook.fullname" . }}
|
||||
- {{ include "example-webhook.fullname" . }}.{{ .Release.Namespace }}
|
||||
- {{ include "example-webhook.fullname" . }}.{{ .Release.Namespace }}.svc
|
||||
- {{ include "cert-manager-webhook-dnspod.fullname" . }}
|
||||
- {{ include "cert-manager-webhook-dnspod.fullname" . }}.{{ .Release.Namespace }}
|
||||
- {{ include "cert-manager-webhook-dnspod.fullname" . }}.{{ .Release.Namespace }}.svc
|
||||
{{- if .Values.clusterIssuer.enabled -}}
|
||||
---
|
||||
|
||||
apiVersion: certmanager.k8s.io/v1alpha1
|
||||
kind: ClusterIssuer
|
||||
metadata:
|
||||
name: {{ include "example-webhook.clusterIssuer" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.clusterIssuer" . }}
|
||||
namespace: {{ .Release.Namespace | quote }}
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
@ -96,7 +96,7 @@ spec:
|
||||
{{- end }}
|
||||
email: {{ .Values.clusterIssuer.email }}
|
||||
privateKeySecretRef:
|
||||
name: {{ include "example-webhook.fullname" . }}-letsencrypt
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}-letsencrypt
|
||||
solvers:
|
||||
- dns01:
|
||||
webhook:
|
||||
@ -106,5 +106,5 @@ spec:
|
||||
apiID: {{ required ".Values.secrets.apiID is required" .Values.secrets.apiID }}
|
||||
apiTokenSecretRef:
|
||||
key: api-token
|
||||
name: {{ include "example-webhook.fullname" . }}-secret
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}-secret
|
||||
{{- end -}}
|
||||
@ -1,10 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "example-webhook.fullname" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
---
|
||||
@ -14,11 +14,11 @@ metadata:
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ include "example-webhook.fullname" . }}:webhook-authentication-reader
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}:webhook-authentication-reader
|
||||
namespace: kube-system
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
roleRef:
|
||||
@ -28,7 +28,7 @@ roleRef:
|
||||
subjects:
|
||||
- apiGroup: ""
|
||||
kind: ServiceAccount
|
||||
name: {{ include "example-webhook.fullname" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
---
|
||||
# apiserver gets the auth-delegator role to delegate auth decisions to
|
||||
@ -36,10 +36,10 @@ subjects:
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ include "example-webhook.fullname" . }}:auth-delegator
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}:auth-delegator
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
roleRef:
|
||||
@ -49,17 +49,17 @@ roleRef:
|
||||
subjects:
|
||||
- apiGroup: ""
|
||||
kind: ServiceAccount
|
||||
name: {{ include "example-webhook.fullname" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
---
|
||||
# Grant cert-manager permission to validate using our apiserver
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: ClusterRole
|
||||
metadata:
|
||||
name: {{ include "example-webhook.fullname" . }}:domain-solver
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}:domain-solver
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
rules:
|
||||
@ -73,16 +73,16 @@ rules:
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: {{ include "example-webhook.fullname" . }}:domain-solver
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}:domain-solver
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: {{ include "example-webhook.fullname" . }}:domain-solver
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}:domain-solver
|
||||
subjects:
|
||||
- apiGroup: ""
|
||||
kind: ServiceAccount
|
||||
@ -92,10 +92,10 @@ subjects:
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ include "example-webhook.fullname" . }}:secret-reader
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}:secret-reader
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
rules:
|
||||
@ -104,7 +104,7 @@ rules:
|
||||
resources:
|
||||
- secrets
|
||||
resourceNames:
|
||||
- {{ include "example-webhook.fullname" . }}-secret
|
||||
- {{ include "cert-manager-webhook-dnspod.fullname" . }}-secret
|
||||
verbs:
|
||||
- get
|
||||
- watch
|
||||
@ -112,17 +112,17 @@ rules:
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ include "example-webhook.fullname" . }}:secret-reader
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}:secret-reader
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: {{ include "example-webhook.fullname" . }}:secret-reader
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}:secret-reader
|
||||
subjects:
|
||||
- apiGroup: ""
|
||||
kind: ServiceAccount
|
||||
name: {{ include "example-webhook.fullname" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}
|
||||
@ -1,10 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ include "example-webhook.fullname" . }}-secret
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}-secret
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
type: Opaque
|
||||
@ -1,10 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "example-webhook.fullname" . }}
|
||||
name: {{ include "cert-manager-webhook-dnspod.fullname" . }}
|
||||
labels:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
chart: {{ include "example-webhook.chart" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
chart: {{ include "cert-manager-webhook-dnspod.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
@ -15,5 +15,5 @@ spec:
|
||||
protocol: TCP
|
||||
name: https
|
||||
selector:
|
||||
app: {{ include "example-webhook.name" . }}
|
||||
app: {{ include "cert-manager-webhook-dnspod.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
Loading…
x
Reference in New Issue
Block a user