mirror of
https://github.com/Alexey71/opera-proxy.git
synced 2026-05-14 14:40:59 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8952eae4e2 | |||
| b98d32971f |
@@ -1 +0,0 @@
|
|||||||
bin/
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
name: docker-ci
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- 'v*.*.*'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
docker:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
-
|
|
||||||
name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
- name: Docker meta
|
|
||||||
id: meta
|
|
||||||
uses: docker/metadata-action@v5
|
|
||||||
with:
|
|
||||||
# list of Docker images to use as base name for tags
|
|
||||||
images: |
|
|
||||||
${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}
|
|
||||||
# generate Docker tags based on the following events/attributes
|
|
||||||
tags: |
|
|
||||||
type=semver,pattern={{version}}
|
|
||||||
type=semver,pattern={{major}}.{{minor}}
|
|
||||||
type=semver,pattern={{major}}
|
|
||||||
type=sha
|
|
||||||
-
|
|
||||||
name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v3
|
|
||||||
-
|
|
||||||
name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
-
|
|
||||||
name: Login to DockerHub
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
||||||
-
|
|
||||||
name: Build and push
|
|
||||||
id: docker_build
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
platforms: linux/amd64,linux/arm64,linux/386,linux/arm/v7
|
|
||||||
push: true
|
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
|
||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
FROM --platform=$BUILDPLATFORM golang:1 AS build
|
|
||||||
|
|
||||||
WORKDIR /go/src/github.com/Alexey71/opera-proxy
|
|
||||||
COPY . .
|
|
||||||
ARG TARGETOS TARGETARCH
|
|
||||||
RUN GOOS=$TARGETOS GOARCH=$TARGETARCH CGO_ENABLED=0 go build -a -tags netgo -ldflags '-s -w -extldflags "-static"'
|
|
||||||
|
|
||||||
FROM scratch
|
|
||||||
COPY --from=build /go/src/github.com/Alexey71/opera-proxy/opera-proxy /
|
|
||||||
USER 9999:9999
|
|
||||||
EXPOSE 18080/tcp
|
|
||||||
ENTRYPOINT ["/opera-proxy", "-bind-address", "0.0.0.0:18080"]
|
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
opera-proxy
|
opera-proxy
|
||||||
===========
|
===========
|
||||||
|
|
||||||
[](https://snapcraft.io/opera-proxy)
|
|
||||||
|
|
||||||
Standalone Opera VPN client.
|
Standalone Opera VPN client.
|
||||||
|
|
||||||
Just run it and it'll start a plain HTTP proxy server forwarding traffic through "Opera VPN" proxies of your choice.
|
Just run it and it'll start a plain HTTP proxy server forwarding traffic through "Opera VPN" proxies of your choice.
|
||||||
@@ -29,27 +27,6 @@ Alternatively, you may install opera-proxy from source. Run the following within
|
|||||||
make install
|
make install
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Docker
|
|
||||||
|
|
||||||
A docker image is available as well. Here is an example of running opera-proxy as a background service:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
docker run -d \
|
|
||||||
--security-opt no-new-privileges \
|
|
||||||
-p 127.0.0.1:18080:18080 \
|
|
||||||
--restart unless-stopped \
|
|
||||||
--name opera-proxy \
|
|
||||||
yarmak/opera-proxy
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Snap Store
|
|
||||||
|
|
||||||
[](https://snapcraft.io/opera-proxy)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo snap install opera-proxy
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
List available countries:
|
List available countries:
|
||||||
@@ -118,6 +95,3 @@ eu3.sec-tunnel.com,77.111.244.22,443
|
|||||||
| version | - | show program version and exit |
|
| version | - | show program version and exit |
|
||||||
| socks-mode | - | listen for SOCKS requests instead of HTTP |
|
| socks-mode | - | listen for SOCKS requests instead of HTTP |
|
||||||
|
|
||||||
## See also
|
|
||||||
|
|
||||||
* [Community in Telegram](https://t.me/alternative_proxy)
|
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/go-multierror"
|
"github.com/Alexey71/go-multierror"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ServerSelection int
|
type ServerSelection int
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
module github.com/Alexey71/opera-proxy
|
module github.com/Alexey71/opera-proxy
|
||||||
|
|
||||||
go 1.24.1
|
go 1.25.0
|
||||||
|
|
||||||
toolchain go1.24.2
|
toolchain go1.25.9
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Alexey71/go-http-digest-auth-client v1.1.3
|
github.com/Alexey71/go-http-digest-auth-client v1.1.3
|
||||||
github.com/hashicorp/go-multierror v1.1.1
|
github.com/Alexey71/go-multierror v1.1.3
|
||||||
github.com/ncruces/go-dns v1.3.2
|
github.com/ncruces/go-dns v1.3.3
|
||||||
github.com/things-go/go-socks5 v0.1.0
|
github.com/things-go/go-socks5 v0.1.1
|
||||||
golang.org/x/crypto/x509roots/fallback v0.0.0-20251210140736-7dacc380ba00
|
golang.org/x/crypto/x509roots/fallback v0.0.0-20260413170323-a8e9237a216b
|
||||||
golang.org/x/net v0.48.0
|
golang.org/x/net v0.53.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require github.com/hashicorp/errwrap v1.1.0 // indirect
|
|
||||||
|
|||||||
@@ -1,23 +1,20 @@
|
|||||||
github.com/Alexey71/go-http-digest-auth-client v1.1.3 h1:+S1vynZ/v4655Ee4z3+thNsIWxYk/8DG62QGmnK2y1M=
|
github.com/Alexey71/go-http-digest-auth-client v1.1.3 h1:+S1vynZ/v4655Ee4z3+thNsIWxYk/8DG62QGmnK2y1M=
|
||||||
github.com/Alexey71/go-http-digest-auth-client v1.1.3/go.mod h1:L+M7T00XYeSSOxHn1hgWbgXYhipNSQUzXh2MHGyIYqY=
|
github.com/Alexey71/go-http-digest-auth-client v1.1.3/go.mod h1:L+M7T00XYeSSOxHn1hgWbgXYhipNSQUzXh2MHGyIYqY=
|
||||||
|
github.com/Alexey71/go-multierror v1.1.3 h1:lasWoAiRTKbqyLsr1C2I4DlEPir20ne1VGuCCZablz8=
|
||||||
|
github.com/Alexey71/go-multierror v1.1.3/go.mod h1:7KiRIv1ScKVHZWPdy97WTw41LKEDQnc0P/hPbZasnbA=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
github.com/ncruces/go-dns v1.3.3 h1:59OV7XoJrTCoUMZjWRVs4GOjtntMTZqiQ5Mn+BT13hk=
|
||||||
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
|
github.com/ncruces/go-dns v1.3.3/go.mod h1:tuzixNY8PY/M7yUzcvRbUaeLs3ifIdydpi5H2bfRU+s=
|
||||||
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
|
||||||
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
|
|
||||||
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
|
|
||||||
github.com/ncruces/go-dns v1.3.2 h1:kBLuUZBgkQ4qF4WDXZRQ4rG0Gk6sLVJQ5tESkWrxUa0=
|
|
||||||
github.com/ncruces/go-dns v1.3.2/go.mod h1:tuzixNY8PY/M7yUzcvRbUaeLs3ifIdydpi5H2bfRU+s=
|
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/stretchr/testify v1.11.0 h1:ib4sjIrwZKxE5u/Japgo/7SJV3PvgjGiRNAvTVGqQl8=
|
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
||||||
github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
||||||
github.com/things-go/go-socks5 v0.1.0 h1:4f5dz0iMQ6cA4wseFmyLmCHmg3SWJTW92ndrKS6oERg=
|
github.com/things-go/go-socks5 v0.1.1 h1:48hy9cHEXPKeG91G/g4n8zW4uynzPUQy/FkcrJ7r5AY=
|
||||||
github.com/things-go/go-socks5 v0.1.0/go.mod h1:Riabiyu52kLsla0YmJqunt1c1JEl6iXSr4bRd7swFEA=
|
github.com/things-go/go-socks5 v0.1.1/go.mod h1:1YBHVYG7Oli5ae+Pwkp630cPAwY1pjUPmohO1n0Emg0=
|
||||||
golang.org/x/crypto/x509roots/fallback v0.0.0-20251210140736-7dacc380ba00 h1:qObov2/X4yIpr98j5t6samg3mMF12Rl4taUJd1rWj+c=
|
golang.org/x/crypto/x509roots/fallback v0.0.0-20260413170323-a8e9237a216b h1:ZG2SxTKsx1w3pUpOMD9dliRYnhWC5R5jmL6UDPCbYj4=
|
||||||
golang.org/x/crypto/x509roots/fallback v0.0.0-20251210140736-7dacc380ba00/go.mod h1:MEIPiCnxvQEjA4astfaKItNwEVZA5Ki+3+nyGbJ5N18=
|
golang.org/x/crypto/x509roots/fallback v0.0.0-20260413170323-a8e9237a216b/go.mod h1:+UoQFNBq2p2wO+Q6ddVtYc25GZ6VNdOMyyrd4nrqrKs=
|
||||||
golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
|
golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
|
||||||
golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
|
golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net/netip"
|
"net/netip"
|
||||||
|
|
||||||
"github.com/hashicorp/go-multierror"
|
"github.com/Alexey71/go-multierror"
|
||||||
)
|
)
|
||||||
|
|
||||||
type LookupNetIPer interface {
|
type LookupNetIPer interface {
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
name: opera-proxy
|
|
||||||
summary: Standalone Opera VPN proxies client.
|
|
||||||
description: |
|
|
||||||
Standalone Opera VPN proxies client. Just run it and it'll start plain HTTP proxy server forwarding traffic via proxies of your choice.
|
|
||||||
|
|
||||||
confinement: strict
|
|
||||||
base: core22
|
|
||||||
adopt-info: opera-proxy
|
|
||||||
|
|
||||||
parts:
|
|
||||||
opera-proxy:
|
|
||||||
plugin: go
|
|
||||||
build-snaps: [go/latest/stable]
|
|
||||||
build-packages:
|
|
||||||
- make
|
|
||||||
- git-core
|
|
||||||
source: https://github.com/Alexey71/opera-proxy
|
|
||||||
source-type: git
|
|
||||||
override-pull: |
|
|
||||||
craftctl default
|
|
||||||
craftctl set version="$(git describe --long --tags --always --match=v*.*.* | sed 's/v//')"
|
|
||||||
override-build:
|
|
||||||
make &&
|
|
||||||
cp bin/opera-proxy "$SNAPCRAFT_PART_INSTALL"
|
|
||||||
stage:
|
|
||||||
- opera-proxy
|
|
||||||
|
|
||||||
apps:
|
|
||||||
opera-proxy:
|
|
||||||
command: opera-proxy
|
|
||||||
plugs:
|
|
||||||
- network
|
|
||||||
- network-bind
|
|
||||||
Reference in New Issue
Block a user