Skip to content

Commit 306ac20

Browse files
committed
Certificate table work, shows error message in popover
1 parent ba13858 commit 306ac20

File tree

6 files changed

+77
-6
lines changed

6 files changed

+77
-6
lines changed

backend/internal/acme/acmesh.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func shExec(args []string, envs []string) (string, error) {
107107
b, e := c.CombinedOutput()
108108

109109
if e != nil {
110-
logger.Error("AcmeShError", fmt.Errorf("Command error: %s -- %v\n%+v", acmeSh, args, e))
110+
// logger.Error("AcmeShError", fmt.Errorf("Command error: %s -- %v\n%+v", acmeSh, args, e))
111111
logger.Warn(string(b))
112112
}
113113

@@ -128,7 +128,7 @@ func getCommonArgs() []string {
128128
}
129129

130130
args = append(args, "--log", "/data/logs/acme.sh.log")
131-
args = append(args, "--debug", "2")
131+
// args = append(args, "--debug", "2")
132132

133133
return args
134134
}

backend/internal/entity/certificate/methods.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ func Create(certificate *Model) (int, error) {
4141
domain_names,
4242
expires_on,
4343
status,
44+
error_message,
4445
meta,
4546
is_ecc,
4647
is_deleted
@@ -55,6 +56,7 @@ func Create(certificate *Model) (int, error) {
5556
:domain_names,
5657
:expires_on,
5758
:status,
59+
:error_message,
5860
:meta,
5961
:is_ecc,
6062
:is_deleted
@@ -93,6 +95,7 @@ func Update(certificate *Model) error {
9395
domain_names = :domain_names,
9496
expires_on = :expires_on,
9597
status = :status,
98+
error_message = :error_message,
9699
meta = :meta,
97100
is_ecc = :is_ecc,
98101
is_deleted = :is_deleted

frontend/src/components/Table/Formatters.tsx

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
1-
import { Avatar, Badge, Text, Tooltip } from "@chakra-ui/react";
1+
import {
2+
Avatar,
3+
Badge,
4+
Text,
5+
Tooltip,
6+
Popover,
7+
PopoverTrigger,
8+
PopoverContent,
9+
PopoverArrow,
10+
PopoverBody,
11+
} from "@chakra-ui/react";
212
import { Monospace, RowAction, RowActionsMenu } from "components";
313
import { intl } from "locale";
414
import getNiceDNSProvider from "modules/Acmesh";
@@ -72,7 +82,7 @@ function CapabilitiesFormatter() {
7282
}
7383

7484
function CertificateStatusFormatter() {
75-
const formatCell = ({ value }: any) => {
85+
const formatCell = ({ value, row }: any) => {
7686
let color = "cyan.500";
7787
switch (value) {
7888
case "failed":
@@ -85,6 +95,38 @@ function CertificateStatusFormatter() {
8595
color = "yellow.400";
8696
break;
8797
}
98+
// special case for failed to show an error popover
99+
if (value === "failed" && row?.original?.errorMessage) {
100+
return (
101+
<Popover>
102+
<PopoverTrigger>
103+
<Badge color={color} style={{ cursor: "pointer" }}>
104+
{intl.formatMessage({ id: value })}
105+
</Badge>
106+
</PopoverTrigger>
107+
<PopoverContent>
108+
<PopoverArrow />
109+
<PopoverBody>
110+
<pre className="wrappable error">
111+
{row?.original?.errorMessage}
112+
</pre>
113+
</PopoverBody>
114+
</PopoverContent>
115+
</Popover>
116+
);
117+
}
118+
return <Badge color={color}>{intl.formatMessage({ id: value })}</Badge>;
119+
};
120+
121+
return formatCell;
122+
}
123+
124+
function CertificateTypeFormatter() {
125+
const formatCell = ({ value }: any) => {
126+
let color = "cyan.500";
127+
if (value === "dns") {
128+
color = "green.400";
129+
}
88130
return <Badge color={color}>{intl.formatMessage({ id: value })}</Badge>;
89131
};
90132

@@ -252,6 +294,7 @@ export {
252294
BooleanFormatter,
253295
CapabilitiesFormatter,
254296
CertificateStatusFormatter,
297+
CertificateTypeFormatter,
255298
DisabledFormatter,
256299
DNSProviderFormatter,
257300
DomainsFormatter,

frontend/src/index.scss

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,19 @@ span.monospace {
2929
font-family: monospace;
3030
}
3131

32+
pre {
33+
&.wrappable {
34+
white-space: pre-wrap; /* Since CSS 2.1 */
35+
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
36+
white-space: -pre-wrap; /* Opera 4-6 */
37+
white-space: -o-pre-wrap; /* Opera 7 */
38+
word-wrap: break-word; /* Internet Explorer 5.5+ */
39+
}
40+
&.error {
41+
color: rgb(245, 101, 101); /* red.500 */
42+
}
43+
}
44+
3245
/* helpdoc */
3346
.helpdoc-body {
3447
p {

frontend/src/locale/src/en.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,9 @@
410410
"disabled": {
411411
"defaultMessage": "Disabled"
412412
},
413+
"dns": {
414+
"defaultMessage": "DNS"
415+
},
413416
"dns-provider.acmesh-name": {
414417
"defaultMessage": "Acme.sh Provider"
415418
},
@@ -449,6 +452,9 @@
449452
"error.user-disabled": {
450453
"defaultMessage": "Account is disabled"
451454
},
455+
"failed": {
456+
"defaultMessage": "Failed"
457+
},
452458
"filter.apply": {
453459
"defaultMessage": "Apply"
454460
},
@@ -536,6 +542,9 @@
536542
"hosts.title": {
537543
"defaultMessage": "Hosts"
538544
},
545+
"http": {
546+
"defaultMessage": "HTTP"
547+
},
539548
"http-https": {
540549
"defaultMessage": "HTTP/HTTPS"
541550
},
@@ -584,6 +593,9 @@
584593
"ready": {
585594
"defaultMessage": "Ready"
586595
},
596+
"requesting": {
597+
"defaultMessage": "Requesting"
598+
},
587599
"restricted-access": {
588600
"defaultMessage": "Restricted Access"
589601
},

frontend/src/pages/Certificates/CertificatesTable.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
tableEvents,
55
ActionsFormatter,
66
CertificateStatusFormatter,
7+
CertificateTypeFormatter,
78
GravatarFormatter,
89
IDFormatter,
910
MonospaceFormatter,
@@ -67,13 +68,12 @@ function CertificatesTable({
6768
Header: intl.formatMessage({ id: "column.validation-type" }),
6869
accessor: "type",
6970
sortable: true,
70-
Filter: TextFilter,
71+
Cell: CertificateTypeFormatter(),
7172
},
7273
{
7374
Header: intl.formatMessage({ id: "column.status" }),
7475
accessor: "status",
7576
sortable: true,
76-
Filter: TextFilter,
7777
Cell: CertificateStatusFormatter(),
7878
},
7979
{

0 commit comments

Comments
 (0)