V2RayConfigBuilder.fromUrls constructor

V2RayConfigBuilder.fromUrls(
  1. Iterable<V2RayURL> urls, {
  2. List<String>? tags,
})

Compose several share links while retaining the first link's local inbound, DNS defaults and direct/blackhole outbounds.

Generated tags are proxy, proxy-2, proxy-3, etc. Supply tags to override them. Use addBalancer and route to choose among servers.

Implementation

factory V2RayConfigBuilder.fromUrls(
  Iterable<V2RayURL> urls, {
  List<String>? tags,
}) {
  final links = urls.toList(growable: false);
  if (links.isEmpty) {
    throw ArgumentError('At least one share link is required');
  }
  if (tags != null && tags.length != links.length) {
    throw ArgumentError('tags length must equal urls length');
  }
  final builder = V2RayConfigBuilder.fromUrl(links.first);
  final firstTag = tags == null ? 'proxy' : tags.first;
  if (firstTag.trim().isEmpty) {
    throw ArgumentError('Outbound tag cannot be empty');
  }
  final first = builder._listSection('outbounds').first as Map;
  first['tag'] = firstTag;
  for (var i = 1; i < links.length; i++) {
    builder.addOutboundFromUrl(links[i],
        tag: tags == null ? 'proxy-${i + 1}' : tags[i]);
  }
  return builder;
}