web store for dev
This commit is contained in:
parent
156bf651dd
commit
3449df913c
78
web/src/stores/domains.ts
Normal file
78
web/src/stores/domains.ts
Normal 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
233
web/src/stores/records.ts
Normal 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 }
|
||||
})
|
Loading…
Reference in New Issue
Block a user