diff options
| author | Bobby <[email protected]> | 2026-03-08 23:38:54 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-03-08 23:38:54 +0530 |
| commit | 94d5561e7cc39eb2909bdc36d4ef4972cd21e56d (patch) | |
| tree | 98d9792dda80f76f185ab2eb37c1de005be9ea0f /utils/collections | |
| parent | 1136af49815be77a0aca151f3b8ec7348bf4b4c8 (diff) | |
| download | dove-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.go | 37 |
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) +} |
