aboutsummaryrefslogtreecommitdiff
path: root/utils/collections
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-03-08 23:38:54 +0530
committerBobby <[email protected]>2026-03-08 23:38:54 +0530
commit94d5561e7cc39eb2909bdc36d4ef4972cd21e56d (patch)
tree98d9792dda80f76f185ab2eb37c1de005be9ea0f /utils/collections
parent1136af49815be77a0aca151f3b8ec7348bf4b4c8 (diff)
downloaddove-94d5561e7cc39eb2909bdc36d4ef4972cd21e56d.tar.xz
dove-94d5561e7cc39eb2909bdc36d4ef4972cd21e56d.zip
Refactor DNS and SMTP configurations; add system DNS management
- Updated DNS server address configuration to use BindAddress and DnsPort. - Enhanced email submission to utilize BindAddress for SMTP server address. - Improved error messages for unknown recipient domains. - Introduced a new OrderedMap structure for route management. - Added system DNS management functions for Linux, Darwin, and Windows platforms. - Created new dashboard services for DNS configuration and overview. - Updated UI to include Proxy Rules section and improved descriptions. - Added new utility functions for handling DNS configurations.
Diffstat (limited to 'utils/collections')
-rw-r--r--utils/collections/orderedmap.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/utils/collections/orderedmap.go b/utils/collections/orderedmap.go
new file mode 100644
index 0000000..b9f17b7
--- /dev/null
+++ b/utils/collections/orderedmap.go
@@ -0,0 +1,37 @@
+package collections
+
+type OrderedMap[K comparable, V any] struct {
+ keys []K
+ values map[K]V
+}
+
+func OrderedMapOf[K comparable, V any]() OrderedMap[K, V] {
+ return OrderedMap[K, V]{
+ keys: make([]K, 0),
+ values: make(map[K]V),
+ }
+}
+
+func (orderedMap *OrderedMap[K, V]) Set(key K, value V) {
+ if _, exists := orderedMap.values[key]; !exists {
+ orderedMap.keys = append(orderedMap.keys, key)
+ }
+ orderedMap.values[key] = value
+}
+
+func (orderedMap *OrderedMap[K, V]) Get(key K) (V, bool) {
+ value, exists := orderedMap.values[key]
+ return value, exists
+}
+
+func (orderedMap *OrderedMap[K, V]) All() []V {
+ result := make([]V, 0, len(orderedMap.keys))
+ for _, key := range orderedMap.keys {
+ result = append(result, orderedMap.values[key])
+ }
+ return result
+}
+
+func (orderedMap *OrderedMap[K, V]) Len() int {
+ return len(orderedMap.keys)
+}