web store for dev

This commit is contained in:
Sense T 2024-04-07 13:08:45 +08:00
parent 156bf651dd
commit 3449df913c
2 changed files with 311 additions and 0 deletions

78
web/src/stores/domains.ts Normal file
View File

@ -0,0 +1,78 @@
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
export type Domain = {
id: number;
domain_name: string;
main_dns: string;
admin_email: string;
serial_number: number;
refresh_interval: number;
retry_interval: number;
expiry_period: number;
negative_ttl: number;
}
const domainDevData: Domain[] = [
{
id: 1,
domain_name: "example.com",
main_dns: "ns1.example.com",
admin_email: "admin@example.com",
serial_number: 114514,
refresh_interval: 86400,
retry_interval: 7200,
expiry_period: 3600000,
negative_ttl: 86400
},
{
id: 2,
domain_name: "example.org",
main_dns: "ns1.example.org",
admin_email: "admin@example.org",
serial_number: 1919810,
refresh_interval: 86400,
retry_interval: 7200,
expiry_period: 3600000,
negative_ttl: 86400
}
]
export const useDomainStore = defineStore('domains', () => {
const domains = ref<Domain[]>([])
const domainsGetter = computed(() => domains.value)
function loadDomains() {
// TODO: load from api
domains.value = import.meta.env.DEV ? domainDevData : []
}
function addDomain(domain: Domain) {
// TODO: load from api
if (!import.meta.env.DEV) {
//domain =
}
domains.value.push(domain)
}
function updateDomain(domain: Domain) {
// TODO: load from api
if (!import.meta.env.DEV) {
//domain =
}
domains.value = domains.value.map(e => e.id === domain.id ? domain : e)
}
function removeDomain(domain: Domain) {
// TODO: load from api
if (!import.meta.env.DEV) {
//domain =
}
domains.value = domains.value.filter(e => e.id !== domain.id)
}
return { domains, domainsGetter, loadDomains, addDomain, updateDomain, removeDomain }
})

233
web/src/stores/records.ts Normal file
View File

@ -0,0 +1,233 @@
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
export type ARecord = {
ip: string;
}
export type AAAARecord = {
ip: string;
}
export type TXTRecord = {
text: string;
}
export type CNAMERecord = {
host: string;
}
export type NSRecord = {
host: string;
}
export type MXRecord = {
host: string;
preference: number;
}
export type SRVRecord = {
priority: number;
weight: number;
port: number;
target: string;
}
export type SOARecord = {
ns: string;
MBox: string;
refresh: number;
retry: number;
expire: number;
minttl: number;
}
export type CAARecord = {
flag: number;
tag: string;
value: string;
}
export enum RecordTypes {
RecordTypeA = "A",
RecordTypeAAAA = "AAAA",
RecordTypeCNAME = "CNAME",
RecordTypeSOA = "SOA",
RecordTypeTXT = "TXT",
RecordTypeNS = "NS",
RecordTypeMX = "MX",
RecordTypeCAA = "CAA",
RecordTypeSRV = "SRV"
}
export type RecordT = ARecord | AAAARecord | TXTRecord | CNAMERecord | NSRecord | MXRecord | SRVRecord | SOARecord | CAARecord
export type Record = {
id: number;
zone: string;
name: string;
ttl: number;
content: RecordT;
record_type: RecordTypes;
}
const recordDevData = new Map<string, Record[]>([
[
'example.com', [
{
id: 1,
zone: "example.com",
name: "@",
ttl: 3600,
record_type: RecordTypes.RecordTypeSOA,
content: {
ns: "ns1.example.com",
MBox: "admin@example.com",
refresh: 86400,
retry: 7200,
expire: 3600000,
minttl: 86400,
}
},
{
id: 2,
zone: "example.com",
name: "@",
ttl: 3600,
record_type: RecordTypes.RecordTypeNS,
content: {
host: "ns1.example.com"
}
},
{
id: 3,
zone: "example.com",
name: "@",
ttl: 3600,
record_type: RecordTypes.RecordTypeNS,
content: {
host: "ns2.example.com"
}
},
{
id: 4,
zone: "example.com",
name: "www",
ttl: 3600,
record_type: RecordTypes.RecordTypeA,
content: {
ip: "233.233.233.233"
}
},
{
id: 5,
zone: "example.com",
name: "cname",
ttl: 3600,
record_type: RecordTypes.RecordTypeCNAME,
content: {
host: "www.example.com"
}
}
]
],
[
'example.org', [
{
id: 1,
zone: "example.org",
name: "@",
ttl: 3600,
record_type: RecordTypes.RecordTypeSOA,
content: {
ns: "ns1.example.org",
MBox: "admin@example.org",
refresh: 86400,
retry: 7200,
expire: 3600000,
minttl: 86400,
}
},
{
id: 2,
zone: "example.org",
name: "@",
ttl: 3600,
record_type: RecordTypes.RecordTypeNS,
content: {
host: "ns1.example.org"
}
},
{
id: 3,
zone: "example.org",
name: "@",
ttl: 3600,
record_type: RecordTypes.RecordTypeNS,
content: {
host: "ns2.example.org"
}
},
{
id: 4,
zone: "example.org",
name: "www",
ttl: 3600,
record_type: RecordTypes.RecordTypeA,
content: {
ip: "233.233.233.233"
}
},
{
id: 5,
zone: "example.org",
name: "cname",
ttl: 3600,
record_type: RecordTypes.RecordTypeCNAME,
content: {
host: "www.example.org"
}
}
]
]
])
export const useRecordStore = defineStore('records', () => {
const records = ref<Record[] | undefined>([])
const recordsGetter = computed(() => records.value)
function loadRecords(domain: string) {
// TODO: load from api
records.value = import.meta.env.DEV ? recordDevData.get(domain) : []
}
function addRecord(domain: string, record: Record) {
// TODO: load from api
if (!import.meta.env.DEV) {
//record =
}
records.value?.push(record)
}
function updateRecord(domain: string, record: Record) {
// TODO: load from api
if (!import.meta.env.DEV) {
//record =
}
records.value = records.value?.map(e => e.id === record.id ? record : e)
}
function removeRecord(domain: string, record: Record) {
// TODO: load from api
if (!import.meta.env.DEV) {
//record =
}
records.value = records.value?.filter(e => e.id !== record.id)
}
return { records, recordsGetter, loadRecords }
})