syntax = "proto3";

package v2ray.core.proxy.shadowsocks.simplified;
option csharp_namespace = "V2Ray.Core.Proxy.Shadowsocks.Simplified";
option go_package = "github.com/v2fly/v2ray-core/v5/proxy/shadowsocks/simplified";
option java_package = "com.v2ray.core.proxy.shadowsocks.simplified";
option java_multiple_files = true;

import "common/protoext/extensions.proto";
import "common/net/address.proto";
import "common/net/network.proto";
import "common/net/packetaddr/config.proto";
import "proxy/shadowsocks/config.proto";

message ServerConfig{
  option (v2ray.core.common.protoext.message_opt).type = "inbound";
  option (v2ray.core.common.protoext.message_opt).short_name = "shadowsocks";

  CipherTypeWrapper method = 1;
  string password = 2;
  v2ray.core.common.net.NetworkList networks = 3;
  v2ray.core.net.packetaddr.PacketAddrType packet_encoding = 4;
}

message ClientConfig {
  option (v2ray.core.common.protoext.message_opt).type = "outbound";
  option (v2ray.core.common.protoext.message_opt).short_name = "shadowsocks";
  option (v2ray.core.common.protoext.message_opt).allow_restricted_mode_load = true;

  v2ray.core.common.net.IPOrDomain address = 1;
  uint32 port = 2;
  CipherTypeWrapper method = 3;
  string password = 4;
  bool experiment_reduced_iv_head_entropy = 90001;
}

message CipherTypeWrapper {
  v2ray.core.proxy.shadowsocks.CipherType value = 1;
}