# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem          1.0
PortGroup           golang 1.0

go.setup            github.com/p4gefau1t/trojan-go 0.10.6 v
# Delete this on next update to use golang PortGroup's default ('archive')
github.tarball_from tarball
set git-commit      2dc60f52e79ff8b910e78e444f1e80678e936450
# This line is for displaying commit in CLI only
categories          net security
maintainers         {i0ntempest @i0ntempest} openmaintainer
license             GPL-3

description         An unidentifiable mechanism that helps you bypass network restrictions, written in Go.
long_description    A Trojan proxy written in Go, with improvements over the original Trojan project. \
                    Trojan features multiple protocols over TLS to avoid both \
                    active/passive detections and ISP QoS limitations. It doesn't rely on \
                    strong encryption or obfuscation\; instead it imitates the most \
                    common protocol, HTTPS, so firewalls won't see anything other than \
                    normal HTTPS traffic.

checksums           ${distname}${extract.suffix} \
                        rmd160  3ac220e9f025e3d34d9e8fcf789cfc9e9d214b8d \
                        sha256  4a45bfa18e039eaed3c5c386472e5937db629269b1d82d4421b4d5239299a849 \
                        size    156120

go.vendors          gopkg.in/yaml.v3 \
                        lock    496545a6307b \
                        rmd160  16a43936d8ae6243895e23465132977d3a1193c2 \
                        sha256  333e78b3b9cb73b3572d62f692d32426a8554b86c93025ea032f779395869e84 \
                        size    90145 \
                    gopkg.in/tomb.v1 \
                        lock    dd632973f1e7 \
                        rmd160  ae07f5ddbbc6afc772d6dc5273bb72eaba50529a \
                        sha256  91c562a4e31c89d13e5391143ff653231fc2d80562743db89ce2172ad8f81008 \
                        size    3636 \
                    gopkg.in/check.v1 \
                        lock    20d25e280405 \
                        rmd160  412aa0d109919182ff84259e9b5bbc9f24d78117 \
                        sha256  233f8faf427ce6701ac3427f85c28bc6b6ae7cdc97a303a52873c69999223325 \
                        size    30360 \
                    google.golang.org/protobuf \
                        repo    github.com/protocolbuffers/protobuf-go \
                        lock    v1.27.1 \
                        rmd160  a4ac7b66fd88a34a9ea447476d19ff3c1f2b57dd \
                        sha256  fe1055b9bf6b8792aed1771f56c31f836c24a18d69eaeb13c88990db3d9da7ce \
                        size    1278850 \
                    google.golang.org/grpc \
                        repo    github.com/grpc/grpc-go \
                        lock    v1.40.0 \
                        rmd160  e06abc5afdfb2d634da78e56d3cc76f4f7449cb4 \
                        sha256  eff6373617787c52d1493c0d00f655f5bc1bfceea68370da5bffd69cfea2c575 \
                        size    1305290 \
                    google.golang.org/genproto \
                        repo    github.com/googleapis/go-genproto \
                        lock    cb27e3aa2013 \
                        rmd160  f3c94d0c3129c395d89a2a7d982eb864f961dfea \
                        sha256  3da27c47ecfe5e05f805d0b239e4aa5ecfbdbc666cf258a1bb9f415dab28faef \
                        size    9293290 \
                    golang.org/x/xerrors \
                        lock    5ec99f83aff1 \
                        rmd160  6e8267f353e153297f205e4be219236d6ae43880 \
                        sha256  9a500a49d83a09e7de6c71b215d1c14b81e315d26884530ef327c95ddf1f2d28 \
                        size    13667 \
                    golang.org/x/tools \
                        lock    v0.1.1 \
                        rmd160  861f7f72627b4449752dded9ab7c1a376435e841 \
                        sha256  b26d3b51fbcbabc7ff8fd2cfdb152421753dfeb8f7e38be9041c0bddfa1b8acd \
                        size    2785629 \
                    golang.org/x/time \
                        lock    1f47c861a9ac \
                        rmd160  0a17206bb0a833c0eef311ae2d8c1366a857c2a5 \
                        sha256  818ca173dfc5b91e0516a9a30c099403bebfebc81d5a9496ba1f44adfa4bd6ec \
                        size    9528 \
                    golang.org/x/text \
                        lock    v0.3.6 \
                        rmd160  e3da48fcc60d98e202458228188bf6dac408e309 \
                        sha256  6b2d69df22b5ba1634bc6730c3f03404db499536a96c48b8016da80ced804450 \
                        size    8356058 \
                    golang.org/x/term \
                        lock    6886f2dfbf5b \
                        rmd160  8688e7b350892399f2918c70c87435016c64c572 \
                        sha256  e52745c19f7ebe30ab78db8af43216b6795928089a433925ef3ebef0eaad98f3 \
                        size    14938 \
                    golang.org/x/sys \
                        lock    41cdb8703e55 \
                        rmd160  1b61146b9b05b2065b2e3faf7267b938f220f11b \
                        sha256  8c7729f6f4c4e0649a75eb973d95c8e5ac3bf5df5660ecfe14d8b49e0d8a46ce \
                        size    1210583 \
                    golang.org/x/sync \
                        lock    036812b2e83c \
                        rmd160  f42be6eb3565d2ed3d1066ea1a7f69437c8bb1e6 \
                        sha256  6f1daceb16cd75bdbf35da6c50aa352d1995d68ccd0049851d27686f451fad92 \
                        size    18756 \
                    golang.org/x/net \
                        lock    943fd674d43e \
                        rmd160  fa7a576e56549c89524fc1dc3a920b85a2e65e62 \
                        sha256  a8d1218e6cec3a63692c01ec2c530d83f0ae9cfb3bcb4035d1863c40a1e1cd25 \
                        size    1255378 \
                    golang.org/x/mod \
                        lock    v0.4.2 \
                        rmd160  0f3ca57198b4de4eb89b2c1a2bdb01af040d1f36 \
                        sha256  e2e4cba5719f804f2ec901b4ccdf6d3abf05521868ed54f271be7c1bf6c48549 \
                        size    104573 \
                    golang.org/x/crypto \
                        lock    32db794688a5 \
                        rmd160  02ab581de5510ce94205e0fe5a58aacd2cd375b8 \
                        sha256  2276178323ee1992d2e845e78ffb8fdce625ef24602b97719428fddaf9f2192f \
                        size    1732601 \
                    go.starlark.net \
                        repo    github.com/google/starlark-go \
                        lock    1cdb82c9e17a \
                        rmd160  576f3d04ab3f742abd5518542b9f84a72f2235ed \
                        sha256  fe81b4bc7839285c5589ee3763b306ca9aa45c0a9c6ae236ac29793d60e0c3f8 \
                        size    268299 \
                    github.com/xtaci/smux \
                        lock    v1.5.15 \
                        rmd160  7bbcc1c0071529dc6d595d28c9927837f67caf12 \
                        sha256  94a9f2291d2de2ce29a0e5d62db3b137ef79e803bbbb54defa361513ff6c22da \
                        size    138027 \
                    github.com/v2fly/v2ray-core \
                        lock    v4.42.1 \
                        rmd160  1e8a58fa8040083ecde2e7f0e2b7221cea6a9a3b \
                        sha256  b93051394cb8a1dca58cfb58c07b60e67624bece164ce3b28238391ffa5e9098 \
                        size    855852 \
                    github.com/v2fly/ss-bloomring \
                        lock    28617310f63e \
                        rmd160  761b61e00dc364aeb34f0291bea63c29d4d79d25 \
                        sha256  37bd8667b8f62fc979f7956e3e5b4ac3b294b590654cde51c386a0374b356d46 \
                        size    5707 \
                    github.com/v2fly/VSign \
                        lock    e2adc24bf848 \
                        rmd160  d3a77e34e06c1c47945a2c52c062eebf554765c5 \
                        sha256  9dfe839716da561fde853aec6a04352f8f487e29321bb156a02ddef95fdec43a \
                        size    9339 \
                    github.com/v2fly/BrowserBridge \
                        lock    0570fc1d7d08 \
                        rmd160  9c0aee77e864f9ecc85447971f9a33285ce03235 \
                        sha256  8669339da1b08918734f0ecc73878f5ce7dff1413a8827ede3b0a63653d4bc5c \
                        size    370373 \
                    github.com/txthinking/x \
                        lock    476fab902fbe \
                        rmd160  a89c168ebd1cb1b4c1c80aa45a6bce08efea7d96 \
                        sha256  18bb1b84f2abfcd3564830588efaf4bad9649fc1ea5a637994f8639cd974fd04 \
                        size    5360 \
                    github.com/txthinking/socks5 \
                        lock    fa1f52a8f2da \
                        rmd160  ba72d474b8366c06cb903095fa6d2c2c31120044 \
                        sha256  9c3edb655d03f642afca89ab6a783fd2966a24493d10cc7950e743767326fd37 \
                        size    12601 \
                    github.com/txthinking/runnergroup \
                        lock    152c7c4432bf \
                        rmd160  62e75b2eb00d4ddbcee206dedbd3c555cfc4a3a8 \
                        sha256  e3a9f53bc9d19ffbe59fa181f14ffb51479dc4f86ce936950602ab825f2414d7 \
                        size    2240 \
                    github.com/stretchr/testify \
                        lock    v1.7.0 \
                        rmd160  adae5096e8c4cfcc8e3f6d096646d1165b5ef49a \
                        sha256  f7dde97d0c9634483ae6ea273968f80f3105c22382a1f841886cd20d57586642 \
                        size    91096 \
                    github.com/smartystreets/goconvey \
                        lock    v1.6.4 \
                        rmd160  a3dfad6131b94d809efad84d30ce45828c6da756 \
                        sha256  a03963296bb6d031934a651c1e637e8ab2ce9604ce6a16c158ff551e44e7ba79 \
                        size    1478824 \
                    github.com/smartystreets/assertions \
                        lock    b2de0cb4f26d \
                        rmd160  59a3d1fabff343e90465049f976996f6c306a582 \
                        sha256  bf4819ccb9021d83e9b33e374f18d5bb752072b35b14ef800dded3c3a5dd4b02 \
                        size    52210 \
                    github.com/shadowsocks/go-shadowsocks2 \
                        lock    v0.1.5 \
                        rmd160  a9c3470882fb28119564a34276218516173a5c8a \
                        sha256  7c9ad6c654d45340d4533522f1068595a8d93e293bfd5de22382dda7185711f7 \
                        size    23433 \
                    github.com/seiflotfy/cuckoofilter \
                        lock    bc6005554a0c \
                        rmd160  dd2cba6fa1638370854dc1ba4ff67181c172796a \
                        sha256  b4fd5ca5f88e5e1b8931069691bf78fb107b1050ef914ed8145c98034c9a1a17 \
                        size    6769 \
                    github.com/riobard/go-bloom \
                        lock    cdc8013cb5b3 \
                        rmd160  516e59eed4200c50f09b4a4e32751cd59c37b02e \
                        sha256  27c2479459dd154b496a019d595bd2863d47b98f9d9c9e9b7c97125636685987 \
                        size    5502 \
                    github.com/refraction-networking/utls \
                        lock    0b2885c8c0d4 \
                        rmd160  9adc6c9eee15f1e51c947387493bd03e2693c9f4 \
                        sha256  be0036c260c7cf11f7d503c4d195787fc39e441e416bfb0acc95c18d91b362f6 \
                        size    546331 \
                    github.com/pmezard/go-difflib \
                        lock    v1.0.0 \
                        rmd160  fc879bfbdef9e3ff50844def58404e2b5a613ab8 \
                        sha256  7cd492737641847266115f3060489a67f63581e521a8ec51efbc280c33fc991f \
                        size    11409 \
                    github.com/pires/go-proxyproto \
                        lock    v0.6.0 \
                        rmd160  187c43259347e219ed8f4acd9b263ee6480afa8f \
                        sha256  10643877819d2c010d4533c33279a0c55f08a2074a91d4bc8c273b2b8d7266d0 \
                        size    35454 \
                    github.com/patrickmn/go-cache \
                        lock    v2.1.0 \
                        rmd160  9e869a3bd93bb2c8a59c96afc0d758ce0430df4f \
                        sha256  57bba72974dfe36ff8dc0003c51888746f34be75addbe18a97413d5830103844 \
                        size    13583 \
                    github.com/onsi/ginkgo \
                        lock    v1.16.4 \
                        rmd160  e0c7145b2a5a9fa39d1883b7ceb788af8a3dd4db \
                        sha256  1cf29213663b89b7578f41a0185b814dab82d40fb5233bf0fe951591ce32ab10 \
                        size    164059 \
                    github.com/nxadm/tail \
                        lock    v1.4.8 \
                        rmd160  bb6c5515804a1d141478074ba9a4f836fa51fb71 \
                        sha256  a4e98c422980433e9a9830f16b4155836baba4c3e3aa387f03840e5cb608c84d \
                        size    1256274 \
                    github.com/marten-seemann/qtls-go1-17 \
                        lock    v0.1.0 \
                        rmd160  53d4d3eb6609de0c808934f977288c9bf06b3633 \
                        sha256  c764f1cc401e4e9b61c5e344d9916246962dfc0739b32a66882c6f372758c29a \
                        size    421717 \
                    github.com/marten-seemann/qtls-go1-16 \
                        lock    v0.1.4 \
                        rmd160  1cadd0881456cc0d4dd653b432c06be1e1a1e43e \
                        sha256  6e750d55689b9eeff04ddadd5fd37f57c794f0eb0897622ea318b4b73990261a \
                        size    415570 \
                    github.com/lunixbochs/struc \
                        lock    784aaebc1d40 \
                        rmd160  a9a289f74c01c85c6c272ee3a5a21550c1d65fbf \
                        sha256  7ba956f1055c32b76274641f2af6d9893f732b3bbf6877d2d7e827f4c6ba3ba6 \
                        size    16071 \
                    github.com/lucas-clemente/quic-go \
                        repo    github.com/quic-go/quic-go \
                        lock    v0.23.0 \
                        rmd160  a9d8e7ad40ea84f7132098449879a931c179e1a1 \
                        sha256  f587661095420998fee0dcb3ae38d21c240c9ab241d61ea545f87048150133c9 \
                        size    520165 \
                    github.com/jtolds/gls \
                        repo    github.com/jtolio/gls \
                        lock    v4.20.0 \
                        rmd160  8e721b1aa6de0606caa5a2a038ddd53a0d05d7b4 \
                        sha256  6f98dcae4c326cbfb0400e6a01604511e544957ea88494e979ace881e2058cbb \
                        size    7308 \
                    github.com/jhump/protoreflect \
                        lock    v1.9.0 \
                        rmd160  d8d66278f00e0e5d28b1269e64d46dcc05088a8c \
                        sha256  bb2d309863be07b6ff808257eb3b71b9f343aaebd295efe1278fd7aaf991000d \
                        size    599317 \
                    github.com/gorilla/websocket \
                        lock    v1.4.2 \
                        rmd160  784f79f05da87fc2f2af618ad4e1eb576d7c16d8 \
                        sha256  7805b8fc2002f7d1a7acdaa98feee2d6746d9241db0c597e0ee256cf0ff93a0b \
                        size    54121 \
                    github.com/gopherjs/gopherjs \
                        lock    0766667cb4d1 \
                        rmd160  fe92e39110b5c188dcce98abb3b9aa1b64d68f94 \
                        sha256  abe56698d0855027a1f6030a44924895d781b19526aa8f9b3ef49ed4199f7c57 \
                        size    217261 \
                    github.com/google/go-cmp \
                        lock    v0.5.6 \
                        rmd160  b93086d92bddc7a3b593fb637776f055c022049f \
                        sha256  fa1ca0f00fe02f645c4ed12ef753ff6c46b6621db01e09d96599cf1fd990aebe \
                        size    104422 \
                    github.com/golang/protobuf \
                        lock    v1.5.2 \
                        rmd160  9924f66e6525b49769f4ef61f7196387185b2f9b \
                        sha256  d7b5f7c44e324b3f510fec1b79de20bd8d7537229b23ad7236769cf3974ce0c7 \
                        size    171736 \
                    github.com/golang/mock \
                        lock    v1.6.0 \
                        rmd160  ed853462703f04ce365bb17b8c88a92994aa5006 \
                        sha256  4b107f6d26db03f8a36ae38f7b017399ed56571cdbf7b7ebc7bff0006c7dffb5 \
                        size    69263 \
                    github.com/go-task/slim-sprig \
                        lock    348f09dbbbc0 \
                        rmd160  7cc4d26be51d6fdf2b54b1fd1506b58c58317303 \
                        sha256  94d84e08cdff9c92c5cf526f0ec803f46593247f8e0d4b19b30c9df1819c933d \
                        size    40027 \
                    github.com/go-sql-driver/mysql \
                        lock    v1.6.0 \
                        rmd160  e626beda6251efcf57f4f474d8a018a2e52f0299 \
                        sha256  a8182db7c49cb5f1542621e651d31f13cd73dc5f9f2a161799728d23c7ef6b7f \
                        size    94200 \
                    github.com/fsnotify/fsnotify \
                        lock    v1.4.9 \
                        rmd160  4660b5721da8aea4c890786e49d7cec39c2e04d3 \
                        sha256  7920cf1e5ccf268962fcff0b501398ed6c28ed75b1e1281fb17b19a8b0e4db5c \
                        size    31910 \
                    github.com/ebfe/bcrypt_pbkdf \
                        lock    3c8d2dcb253a \
                        rmd160  b705ef4caeebacbd1acaad342b6f4738474bfcef \
                        sha256  ad6b7710f4b47c58f101b1958ce80a02e932b7e9217a52325b6664fa832281c9 \
                        size    15165 \
                    github.com/dgryski/go-metro \
                        lock    85c65e2d0165 \
                        rmd160  fbd65fabced91793fb7202c08ee7540837503ca6 \
                        sha256  140bc38b19a344608113cceb764172a399930135b5bb1f51ad0deaceb5f2f706 \
                        size    4475 \
                    github.com/davecgh/go-spew \
                        lock    v1.1.1 \
                        rmd160  7c02883aa81f81aca14e13a27fdca9e7fbc136f7 \
                        sha256  e85d6afa83e64962e0d63dd4812971eccf2b9b5445eda93f46a4406f0c177d5f \
                        size    42171 \
                    github.com/cheekybits/genny \
                        lock    v1.0.0 \
                        rmd160  c8f3f5af635b83ade08f9f8e08e7f2018cb5879c \
                        sha256  528d149522e053aed14048608751da8ace5b44466038b1a8d47d04a050d81bdc \
                        size    15585

# Notes for updating this port:
# Replace go.googlesource.com/protobuf with github.com/protocolbuffers/protobuf-go
# Add a repo line for github.com/jtolds/gls:
# repo    github.com/jtolio/gls
# Remember to update git commit hash

build.env-append    CGO_ENABLED=0
build.post_args     -tags \"full\" -ldflags=\"-s -w -X 'github.com/p4gefau1t/trojan-go/constant.Version=v${version}' -X 'github.com/p4gefau1t/trojan-go/constant.Commit=${git-commit}'\"

destroot {
    xinstall -m 0755 ${worksrcpath}/${name} ${destroot}${prefix}/bin/
    file mkdir ${destroot}${prefix}/etc/trojan-go
    copy ${worksrcpath}/example/client.json ${worksrcpath}/example/server.json ${destroot}${prefix}/etc/trojan-go
}

post-activate {
    if {![file exists ${prefix}/etc/trojan-go/config.json]} {
        copy ${prefix}/etc/trojan-go/client.json ${prefix}/etc/trojan-go/config.json
    }
}

notes-append "
    The default config file is copied to ${prefix}/etc/trojan-go/config.json and its content\
    will be preserved across upgrades and reinstalls. The startup item will use this config\
    file by default.
"

startupitem.create          yes
startupitem.executable      ${prefix}/bin/trojan-go --config ${prefix}/etc/trojan-go/config.json

variant geoip description {Install geoip and geosite from Project V, enables routing rules. Also provided by v2ray port.} {
    conflicts v2ray
    depends_build-append port:wget
    post-destroot {
        system -W ${destroot}${prefix}/bin "wget https://github.com/v2fly/geoip/raw/release/geoip.dat"
        system -W ${destroot}${prefix}/bin "wget https://github.com/v2fly/domain-list-community/raw/release/dlc.dat -O geosite.dat"
    }
}
