From 6cdb88d52983e851d7a07850587d94623c409aef Mon Sep 17 00:00:00 2001 From: Teddysun Date: Fri, 26 Apr 2024 23:29:48 +0900 Subject: [PATCH] Added xray-core rpm and deb source Signed-off-by: Teddysun --- deb/xray/Makefile | 101 +++++++++++++++++++++ deb/xray/build-deb | 74 ++++++++++++++++ deb/xray/checkout.sh | 39 ++++++++ deb/xray/common/config.json | 19 ++++ deb/xray/common/control | 29 ++++++ deb/xray/common/rules | 32 +++++++ deb/xray/common/source/format | 1 + deb/xray/common/xray.docs | 1 + deb/xray/common/xray.install | 2 + deb/xray/common/xray.service | 17 ++++ deb/xray/common/xray@.service | 17 ++++ deb/xray/debian-bookworm/Dockerfile | 40 +++++++++ deb/xray/debian-bullseye/Dockerfile | 40 +++++++++ deb/xray/debian-buster/Dockerfile | 40 +++++++++ deb/xray/ubuntu-focal/Dockerfile | 46 ++++++++++ deb/xray/ubuntu-jammy/Dockerfile | 46 ++++++++++ deb/xray/ubuntu-noble/Dockerfile | 46 ++++++++++ rpm/xray/config.json | 19 ++++ rpm/xray/xray.spec | 132 ++++++++++++++++++++++++++++ 19 files changed, 741 insertions(+) create mode 100644 deb/xray/Makefile create mode 100644 deb/xray/build-deb create mode 100644 deb/xray/checkout.sh create mode 100644 deb/xray/common/config.json create mode 100644 deb/xray/common/control create mode 100644 deb/xray/common/rules create mode 100644 deb/xray/common/source/format create mode 100644 deb/xray/common/xray.docs create mode 100644 deb/xray/common/xray.install create mode 100644 deb/xray/common/xray.service create mode 100644 deb/xray/common/xray@.service create mode 100644 deb/xray/debian-bookworm/Dockerfile create mode 100644 deb/xray/debian-bullseye/Dockerfile create mode 100644 deb/xray/debian-buster/Dockerfile create mode 100644 deb/xray/ubuntu-focal/Dockerfile create mode 100644 deb/xray/ubuntu-jammy/Dockerfile create mode 100644 deb/xray/ubuntu-noble/Dockerfile create mode 100644 rpm/xray/config.json create mode 100644 rpm/xray/xray.spec diff --git a/deb/xray/Makefile b/deb/xray/Makefile new file mode 100644 index 0000000..6b4f8f0 --- /dev/null +++ b/deb/xray/Makefile @@ -0,0 +1,101 @@ +ARCH=$(shell uname -m) +VERSION?=1.8.11 +GO_VERSION:=1.22.2 +SHELL:=/bin/bash +GO_BASE_IMAGE=golang +GO_IMAGE?=$(GO_BASE_IMAGE):$(GO_VERSION)-bookworm +EPOCH?= +REPO?=https://github.com/xtls/xray-core.git +REF?=v1.8.11 +CHOWN:=docker run --rm -v $(CURDIR):/v -w /v alpine chown + +ifdef BUILD_IMAGE + BUILD_IMAGE_FLAG=--build-arg $(BUILD_IMAGE) +endif + +COMMON_FILES=common +BUILD?=DOCKER_BUILDKIT=1 \ + docker build \ + $(BUILD_IMAGE_FLAG) \ + --build-arg GO_IMAGE=$(GO_IMAGE) \ + --build-arg COMMON_FILES=$(COMMON_FILES) \ + -t debbuild-$@/$(ARCH) \ + -f $@/Dockerfile \ + . + +# Additional flags may be necessary at some point +RUN_FLAGS= +RUN?=docker run --rm -h buildbot \ + -e PLATFORM \ + -e EPOCH='$(EPOCH)' \ + -e DEB_VERSION=$(VERSION) \ + -e VERSION=$(VERSION) \ + -v $(CURDIR)/debbuild/$@:/build \ + $(RUN_FLAGS) \ + debbuild-$@/$(ARCH) + +DEBIAN_VERSIONS ?= debian-buster debian-bullseye debian-bookworm +UBUNTU_VERSIONS ?= ubuntu-focal ubuntu-jammy ubuntu-noble +DISTROS := $(DEBIAN_VERSIONS) $(UBUNTU_VERSIONS) + +# Taken from: https://www.cmcrossroads.com/article/printing-value-makefile-variable +print-% : ; @echo $($*) + +.PHONY: help +help: ## show make targets + @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) + +.PHONY: checkout-src +checkout-src: src/github.com/xtls/xray + ./checkout.sh src/github.com/xtls/xray "$(REF)" + @curl -sSLo src/github.com/xtls/xray/geoip.dat https://github.com/v2fly/geoip/releases/latest/download/geoip.dat + @curl -sSLo src/github.com/xtls/xray/geosite.dat https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat + +src/github.com/xtls/xray: + git init $@ + git -C $@ remote add origin "$(REPO)" + +.PHONY: checkout +checkout: checkout-src ## checkout source at the given reference(s) + +.PHONY: clean +clean: ## remove build artifacts + [ ! -d debbuild ] || $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild + $(RM) -r debbuild + [ ! -d sources ] || $(CHOWN) -R $(shell id -u):$(shell id -g) sources + $(RM) -r sources + -docker builder prune -f --filter until=24h + +.PHONY: deb +deb: ubuntu debian ## build all deb packages + +.PHONY: ubuntu +ubuntu: $(UBUNTU_VERSIONS) ## build all ubuntu deb packages + +.PHONY: debian +debian: $(DEBIAN_VERSIONS) ## build all debian deb packages + +.PHONY: $(DISTROS) +$(DISTROS): sources + @echo "== Building packages for $@ ==" + mkdir -p "debbuild/$@" + $(BUILD) + $(RUN) + $(CHOWN) -R $(shell id -u):$(shell id -g) "debbuild/$@" + +.PHONY: sources +sources: sources/xray.tgz + +sources/xray.tgz: + mkdir -p $(@D) + docker run --rm -w /v \ + -v $(realpath $(CURDIR)/src/github.com/xtls/xray):/xray \ + -v $(CURDIR)/$(@D):/v \ + alpine \ + tar -C / -c -z -f /v/xray.tgz --exclude .git xray + +# See ARCHES in common.mk. Could not figure out how to match both distro and arch. +BUNDLES:=$(addsuffix .tar.gz,$(addprefix debbuild/bundles-%-,$(ARCHES))) + +$(BUNDLES): % + tar czf $@ --transform="s|^debbuild/\(.*\)|bundles/$(VERSION)/build-deb/\1|" debbuild/$* diff --git a/deb/xray/build-deb b/deb/xray/build-deb new file mode 100644 index 0000000..43fc017 --- /dev/null +++ b/deb/xray/build-deb @@ -0,0 +1,74 @@ +#!/usr/bin/env bash +set -x +set -e + +# untar sources +mkdir -p /root/build-deb/xray +tar -C /root/build-deb -xzf /sources/xray.tgz + +# link them to their canonical path +mkdir -p /go/src/github.com/xtls +ln -snf /root/build-deb/xray /go/src/github.com/xtls/xray-core + +EPOCH="${EPOCH:-}" +EPOCH_SEP="" +if [[ -n "$EPOCH" ]]; then + EPOCH_SEP=":" +fi + +if [[ -z "${DEB_VERSION}" ]]; then + echo "DEB_VERSION is required to build deb packages" + exit 1 +fi + +echo VERSION AAA ${VERSION} + +VERSION=${VERSION:-$(cat VERSION)} + +debSource="$(awk -F ': ' '$1 == "Source" { print $2; exit }' debian/control)" +debMaintainer="$(awk -F ': ' '$1 == "Maintainer" { print $2; exit }' debian/control)" +debDate="$(date --rfc-2822)" + +# Include an extra `1` in the version, in case we ever would have to re-build an +# already published release with a packaging-only change. +pkgRevision=1 + +# Generate changelog. The version/name of the generated packages are based on this. +# +# Resulting packages are formatted as; +# +# - name of the package (e.g., "docker-ce") +# - version (e.g., "23.0.0~beta.0") +# - pkgRevision (usually "-0", see above), which allows updating packages with +# packaging-only changes (without a corresponding release of the software +# that's packaged). +# - distro (e.g., "ubuntu") +# - VERSION_ID (e.g. "22.04" or "11") this must be "sortable" to make sure that +# packages are upgraded when upgrading to a newer distro version ("codename" +# cannot be used for this, as they're not sorted) +# - SUITE ("codename"), e.g. "jammy" or "bullseye". This is mostly for convenience, +# because some places refer to distro versions by codename, others by version. +# we prefix the codename with a tilde (~), which effectively excludes it from +# version comparison. +# +# Note that while the `${EPOCH}${EPOCH_SEP}` is part of the version, it is not +# included in the package's *filename*. (And if you're wondering: we needed the +# EPOCH because of our use of CalVer, which made version comparing not work in +# some cases). +# +# Examples: +# +# docker-ce_23.0.0~beta.0-1~debian.11~bullseye_amd64.deb +# docker-ce_23.0.0~beta.0-1~ubuntu.22.04~jammy_amd64.deb +cat > "debian/changelog" <<-EOF +$debSource (${EPOCH}${EPOCH_SEP}${DEB_VERSION}-${pkgRevision}~${DISTRO}.${VERSION_ID}~${SUITE}) $SUITE; urgency=low + * Version: ${VERSION} + -- $debMaintainer $debDate +EOF +# The space above at the start of the line for the debMaintainer is very important + +echo VERSION BBB ${VERSION} +dpkg-buildpackage -uc -us -I.git +destination="/build" +mkdir -p "$destination" +mv -v /root/xray* "$destination" diff --git a/deb/xray/checkout.sh b/deb/xray/checkout.sh new file mode 100644 index 0000000..6bc1847 --- /dev/null +++ b/deb/xray/checkout.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env sh + +# Copyright 2018-2020 Docker Inc. + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +checkout() ( + set -ex + SRC="$1" + REF="$2" + REF_FETCH="$REF" + # if ref is branch or tag, retrieve its canonical form + REF=$(git -C "$SRC" ls-remote --refs --heads --tags origin "$REF" | awk '{print $2}') + if [ -n "$REF" ]; then + # if branch or tag then create it locally too + REF_FETCH="$REF:$REF" + else + REF="FETCH_HEAD" + fi + git -C "$SRC" fetch --update-head-ok --depth 1 origin "$REF_FETCH" + git -C "$SRC" checkout -q "$REF" +) + + +# Only execute checkout function above if this file is executed, not sourced from another script +prog=checkout.sh # needs to be in sync with this file's name +if [ "$(basename -- $0)" = "$prog" ]; then + checkout $* +fi diff --git a/deb/xray/common/config.json b/deb/xray/common/config.json new file mode 100644 index 0000000..cd38abd --- /dev/null +++ b/deb/xray/common/config.json @@ -0,0 +1,19 @@ +{ + "inbounds": [{ + "port": 9000, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": "1eb6e917-774b-4a84-aff6-b058577c60a5", + "level": 1, + "alterId": 64 + } + ] + } + }], + "outbounds": [{ + "protocol": "freedom", + "settings": {} + }] +} \ No newline at end of file diff --git a/deb/xray/common/control b/deb/xray/common/control new file mode 100644 index 0000000..7f9d46e --- /dev/null +++ b/deb/xray/common/control @@ -0,0 +1,29 @@ +Source: xray +Section: net +Priority: optional +Maintainer: Teddysun +Build-Depends: bash, + cmake, + dh-apparmor, + debhelper-compat (= 12), + gcc, + git, + libc-dev, + libltdl-dev, + libseccomp-dev, + libseccomp2, + libsystemd-dev, + libtool, + make, + pkg-config +Standards-Version: 3.9.6 +Homepage: https://github.com/xtls/xray-core +Rules-Requires-Root: no +Vcs-Browser: https://github.com/xtls/xray-core +Vcs-Git: git://github.com/xtls/xray-core.git + +Package: xray +Architecture: linux-any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Xray, Penetrates Everything. + Also the best v2ray-core, with XTLS support. Fully compatible configuration. diff --git a/deb/xray/common/rules b/deb/xray/common/rules new file mode 100644 index 0000000..e31c2ec --- /dev/null +++ b/deb/xray/common/rules @@ -0,0 +1,32 @@ +#!/usr/bin/make -f + +# force packages to be built with xz compression, as Ubuntu 21.10 and up use +# zstd compression, which is non-standard, and breaks 'dpkg-sig --verify' +override_dh_builddeb: + dh_builddeb -- -Zxz + +override_dh_auto_build: + cd xray \ + && GO111MODULE=on \ + env CGO_ENABLED=0 go build -v -trimpath -ldflags "-s -w -buildid=" -o "xray" ./main + +# http://manpages.debian.org/dh_dwz +override_dh_dwz: + # dh_dwz in debhelper versions less than 13 has issues with files that are missing debug symbols (once we update to debhelper-compat 13+ this can be removed) + @# https://packages.debian.org/debhelper + @# https://packages.ubuntu.com/debhelper + +override_dh_auto_install: + install -D -m 0644 debian/config.json debian/xray/etc/xray/config.json + install -D -m 0755 xray/xray debian/xray/usr/bin/xray + install -D -m 0644 xray/geoip.dat debian/xray/usr/share/xray/geoip.dat + install -D -m 0644 xray/geosite.dat debian/xray/usr/share/xray/geosite.dat + +override_dh_installsystemd: + dh_installsystemd --no-enable --no-start + +override_dh_shlibdeps: + dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info + +%: + dh $@ \ No newline at end of file diff --git a/deb/xray/common/source/format b/deb/xray/common/source/format new file mode 100644 index 0000000..d3827e7 --- /dev/null +++ b/deb/xray/common/source/format @@ -0,0 +1 @@ +1.0 diff --git a/deb/xray/common/xray.docs b/deb/xray/common/xray.docs new file mode 100644 index 0000000..e82ec74 --- /dev/null +++ b/deb/xray/common/xray.docs @@ -0,0 +1 @@ +xray/README.md diff --git a/deb/xray/common/xray.install b/deb/xray/common/xray.install new file mode 100644 index 0000000..6381938 --- /dev/null +++ b/deb/xray/common/xray.install @@ -0,0 +1,2 @@ +debian/xray.service lib/systemd/system/ +debian/xray@.service lib/systemd/system/ diff --git a/deb/xray/common/xray.service b/deb/xray/common/xray.service new file mode 100644 index 0000000..7c265cc --- /dev/null +++ b/deb/xray/common/xray.service @@ -0,0 +1,17 @@ +[Unit] +Description=Xray Service +Documentation=https://github.com/xtls +After=network.target nss-lookup.target + +[Service] +CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE +AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE +NoNewPrivileges=true +ExecStart=/usr/bin/xray run -config /etc/xray/config.json +Restart=on-failure +RestartPreventExitStatus=23 +LimitNPROC=10000 +LimitNOFILE=1000000 + +[Install] +WantedBy=multi-user.target diff --git a/deb/xray/common/xray@.service b/deb/xray/common/xray@.service new file mode 100644 index 0000000..fe85e99 --- /dev/null +++ b/deb/xray/common/xray@.service @@ -0,0 +1,17 @@ +[Unit] +Description=Xray Service +Documentation=https://github.com/xtls +After=network.target nss-lookup.target + +[Service] +CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE +AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE +NoNewPrivileges=true +ExecStart=/usr/bin/xray run -config /etc/xray/%i.json +Restart=on-failure +RestartPreventExitStatus=23 +LimitNPROC=10000 +LimitNOFILE=1000000 + +[Install] +WantedBy=multi-user.target diff --git a/deb/xray/debian-bookworm/Dockerfile b/deb/xray/debian-bookworm/Dockerfile new file mode 100644 index 0000000..779baad --- /dev/null +++ b/deb/xray/debian-bookworm/Dockerfile @@ -0,0 +1,40 @@ +# syntax=docker/dockerfile:1 + +ARG GO_IMAGE +ARG DISTRO=debian +ARG SUITE=bookworm +ARG VERSION_ID=12 +ARG BUILD_IMAGE=${DISTRO}:${SUITE} + +FROM ${GO_IMAGE} AS golang + +FROM ${BUILD_IMAGE} + +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ENV GOPROXY=https://proxy.golang.org|direct +ENV GO111MODULE=off +ENV GOPATH /go +ENV GOTOOLCHAIN=local +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin + +ARG COMMON_FILES +COPY --link ${COMMON_FILES} /root/build-deb/debian +RUN apt-get update \ + && mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +COPY --link sources/ /sources +ARG DISTRO +ARG SUITE +ARG VERSION_ID +ENV DISTRO=${DISTRO} +ENV SUITE=${SUITE} +ENV VERSION_ID=${VERSION_ID} + +COPY --link --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/deb/xray/debian-bullseye/Dockerfile b/deb/xray/debian-bullseye/Dockerfile new file mode 100644 index 0000000..8c8fce7 --- /dev/null +++ b/deb/xray/debian-bullseye/Dockerfile @@ -0,0 +1,40 @@ +# syntax=docker/dockerfile:1 + +ARG GO_IMAGE +ARG DISTRO=debian +ARG SUITE=bullseye +ARG VERSION_ID=11 +ARG BUILD_IMAGE=${DISTRO}:${SUITE} + +FROM ${GO_IMAGE} AS golang + +FROM ${BUILD_IMAGE} + +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ENV GOPROXY=https://proxy.golang.org|direct +ENV GO111MODULE=off +ENV GOPATH /go +ENV GOTOOLCHAIN=local +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin + +ARG COMMON_FILES +COPY --link ${COMMON_FILES} /root/build-deb/debian +RUN apt-get update \ + && mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +COPY --link sources/ /sources +ARG DISTRO +ARG SUITE +ARG VERSION_ID +ENV DISTRO=${DISTRO} +ENV SUITE=${SUITE} +ENV VERSION_ID=${VERSION_ID} + +COPY --link --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/deb/xray/debian-buster/Dockerfile b/deb/xray/debian-buster/Dockerfile new file mode 100644 index 0000000..1ee621a --- /dev/null +++ b/deb/xray/debian-buster/Dockerfile @@ -0,0 +1,40 @@ +# syntax=docker/dockerfile:1 + +ARG GO_IMAGE +ARG DISTRO=debian +ARG SUITE=buster +ARG VERSION_ID=10 +ARG BUILD_IMAGE=${DISTRO}:${SUITE} + +FROM ${GO_IMAGE} AS golang + +FROM ${BUILD_IMAGE} + +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ENV GOPROXY=https://proxy.golang.org|direct +ENV GO111MODULE=off +ENV GOPATH /go +ENV GOTOOLCHAIN=local +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin + +ARG COMMON_FILES +COPY --link ${COMMON_FILES} /root/build-deb/debian +RUN apt-get update \ + && mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +COPY --link sources/ /sources +ARG DISTRO +ARG SUITE +ARG VERSION_ID +ENV DISTRO=${DISTRO} +ENV SUITE=${SUITE} +ENV VERSION_ID=${VERSION_ID} + +COPY --link --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/deb/xray/ubuntu-focal/Dockerfile b/deb/xray/ubuntu-focal/Dockerfile new file mode 100644 index 0000000..0d55c5f --- /dev/null +++ b/deb/xray/ubuntu-focal/Dockerfile @@ -0,0 +1,46 @@ +# syntax=docker/dockerfile:1 + +ARG GO_IMAGE +ARG DISTRO=ubuntu +ARG SUITE=focal +ARG VERSION_ID=20.04 +ARG BUILD_IMAGE=${DISTRO}:${SUITE} + +FROM ${GO_IMAGE} AS golang + +FROM ${BUILD_IMAGE} + +# Remove diverted man binary to prevent man-pages being replaced with "minimized" message. See docker/for-linux#639 +RUN if [ "$(dpkg-divert --truename /usr/bin/man)" = "/usr/bin/man.REAL" ]; then \ + rm -f /usr/bin/man; \ + dpkg-divert --quiet --remove --rename /usr/bin/man; \ + fi + +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ENV GOPROXY=https://proxy.golang.org|direct +ENV GO111MODULE=off +ENV GOPATH /go +ENV GOTOOLCHAIN=local +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin + +ARG COMMON_FILES +COPY --link ${COMMON_FILES} /root/build-deb/debian +RUN apt-get update \ + && mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +COPY --link sources/ /sources +ARG DISTRO +ARG SUITE +ARG VERSION_ID +ENV DISTRO=${DISTRO} +ENV SUITE=${SUITE} +ENV VERSION_ID=${VERSION_ID} + +COPY --link --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/deb/xray/ubuntu-jammy/Dockerfile b/deb/xray/ubuntu-jammy/Dockerfile new file mode 100644 index 0000000..4e63f4f --- /dev/null +++ b/deb/xray/ubuntu-jammy/Dockerfile @@ -0,0 +1,46 @@ +# syntax=docker/dockerfile:1 + +ARG GO_IMAGE +ARG DISTRO=ubuntu +ARG SUITE=jammy +ARG VERSION_ID=22.04 +ARG BUILD_IMAGE=${DISTRO}:${SUITE} + +FROM ${GO_IMAGE} AS golang + +FROM ${BUILD_IMAGE} + +# Remove diverted man binary to prevent man-pages being replaced with "minimized" message. See docker/for-linux#639 +RUN if [ "$(dpkg-divert --truename /usr/bin/man)" = "/usr/bin/man.REAL" ]; then \ + rm -f /usr/bin/man; \ + dpkg-divert --quiet --remove --rename /usr/bin/man; \ + fi + +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ENV GOPROXY=https://proxy.golang.org|direct +ENV GO111MODULE=off +ENV GOPATH /go +ENV GOTOOLCHAIN=local +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin + +ARG COMMON_FILES +COPY --link ${COMMON_FILES} /root/build-deb/debian +RUN apt-get update \ + && mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +COPY --link sources/ /sources +ARG DISTRO +ARG SUITE +ARG VERSION_ID +ENV DISTRO=${DISTRO} +ENV SUITE=${SUITE} +ENV VERSION_ID=${VERSION_ID} + +COPY --link --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/deb/xray/ubuntu-noble/Dockerfile b/deb/xray/ubuntu-noble/Dockerfile new file mode 100644 index 0000000..63f45bf --- /dev/null +++ b/deb/xray/ubuntu-noble/Dockerfile @@ -0,0 +1,46 @@ +# syntax=docker/dockerfile:1 + +ARG GO_IMAGE +ARG DISTRO=ubuntu +ARG SUITE=noble +ARG VERSION_ID=24.04 +ARG BUILD_IMAGE=${DISTRO}:${SUITE} + +FROM ${GO_IMAGE} AS golang + +FROM ${BUILD_IMAGE} + +# Remove diverted man binary to prevent man-pages being replaced with "minimized" message. See docker/for-linux#639 +RUN if [ "$(dpkg-divert --truename /usr/bin/man)" = "/usr/bin/man.REAL" ]; then \ + rm -f /usr/bin/man; \ + dpkg-divert --quiet --remove --rename /usr/bin/man; \ + fi + +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y curl devscripts equivs git + +ENV GOPROXY=https://proxy.golang.org|direct +ENV GO111MODULE=off +ENV GOPATH /go +ENV GOTOOLCHAIN=local +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin + +ARG COMMON_FILES +COPY --link ${COMMON_FILES} /root/build-deb/debian +RUN apt-get update \ + && mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control + +COPY --link sources/ /sources +ARG DISTRO +ARG SUITE +ARG VERSION_ID +ENV DISTRO=${DISTRO} +ENV SUITE=${SUITE} +ENV VERSION_ID=${VERSION_ID} + +COPY --link --from=golang /usr/local/go /usr/local/go + +WORKDIR /root/build-deb +COPY build-deb /root/build-deb/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/rpm/xray/config.json b/rpm/xray/config.json new file mode 100644 index 0000000..cd38abd --- /dev/null +++ b/rpm/xray/config.json @@ -0,0 +1,19 @@ +{ + "inbounds": [{ + "port": 9000, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": "1eb6e917-774b-4a84-aff6-b058577c60a5", + "level": 1, + "alterId": 64 + } + ] + } + }], + "outbounds": [{ + "protocol": "freedom", + "settings": {} + }] +} \ No newline at end of file diff --git a/rpm/xray/xray.spec b/rpm/xray/xray.spec new file mode 100644 index 0000000..5d3de97 --- /dev/null +++ b/rpm/xray/xray.spec @@ -0,0 +1,132 @@ +%global debug_package %{nil} + +Name: xray +Version: 1.8.11 +Release: 1%{?dist} +Summary: Xray, Penetrates Everything. +License: MPL-2.0 +URL: https://github.com/XTLS/Xray-core + +Source0: %{name}-%{version}.tar.gz +Source1: config.json +Source2: https://github.com/v2fly/geoip/releases/latest/download/geoip.dat +Source3: https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat + +#BuildRequires: golang >= 1.20 +%if 0%{?rhel} && 0%{?rhel} < 8 +BuildRequires: systemd +%else +BuildRequires: systemd-rpm-macros +%endif +%{?systemd_requires} +Provides: Productivity/Networking/Web/Proxy + +%description +Xray, Penetrates Everything. +Also the best v2ray-core, with XTLS support. Fully compatible configuration. + +%prep +%autosetup + +%build +# https://pagure.io/go-rpm-macros/c/1cc7f5d9026175bb6cb1b8c889355d0c4fc0e40a +%undefine _auto_set_build_flags + +LDFLAGS='-s -w -buildid=' +env CGO_ENABLED=0 go build -v -trimpath -ldflags "$LDFLAGS" -o %{name} ./main + +%install +%{__install} -d %{buildroot}%{_bindir} +%{__install} -p -m 755 %{name} %{buildroot}%{_bindir} + +%{__install} -d %{buildroot}%{_sysconfdir}/%{name} +%{__install} -p -m 644 %{S:1} %{buildroot}%{_sysconfdir}/%{name}/config.json + +%{__install} -d %{buildroot}%{_datadir}/%{name} +%{__install} -p -m 0644 %{S:2} %{buildroot}%{_datadir}/%{name}/geoip.dat +%{__install} -p -m 0644 %{S:3} %{buildroot}%{_datadir}/%{name}/geosite.dat + +%{__install} -d %{buildroot}%{_unitdir} +cat > %{buildroot}%{_unitdir}/%{name}.service < %{buildroot}%{_unitdir}/%{name}@.service < - 1.8.11-1 +- Update to version 1.8.11 + +* Sat Mar 30 2024 Teddysun - 1.8.10-1 +- Update to version 1.8.10 + +* Mon Mar 11 2024 Teddysun - 1.8.9-1 +- Update to version 1.8.9 + +* Mon Feb 26 2024 Teddysun - 1.8.8-1 +- Update to version 1.8.8 + +* Mon Jan 08 2024 Teddysun - 1.8.7-1 +- Update to version 1.8.7 + +* Sat Nov 18 2023 Teddysun - 1.8.6-1 +- Update to version 1.8.6 + +* Tue Nov 14 2023 Teddysun - 1.8.5-1 +- Update to version 1.8.5 + +* Wed Oct 18 2023 Teddysun - 1.8.4-1 +- Update to version 1.8.4