streamion-2 / warp.go
cursorpro's picture
Upload 57 files
4d612cb verified
package main
import (
"crypto/rand"
"encoding/base64"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"strings"
"time"
"golang.org/x/crypto/curve25519"
)
func check(err error) {
if err != nil {
panic(err)
}
}
type response struct {
Result *struct {
ID string
Type string
Model string
Name string
Key string
Account *struct {
ID string
AccountType string `json:"account_type"`
Created *time.Time
Updated *time.Time
PremiumData uint `json:"premium_data"`
Quota uint
Usage uint
WarpPlus bool `json:"warp_plus"`
ReferralCount uint `json:"referral_count"`
ReferralRenewalCountdown uint `json:"referral_renewal_countdown"`
Role string
License string
}
Config *struct {
ClientID string `json:"client_id"`
Peers []struct {
PublicKey string `json:"public_key"`
Endpoint *struct {
V4 string
V6 string
Host string
}
}
Interface *struct {
Addresses *struct {
V4 string
V6 string
}
}
Services *struct {
HTTPProxy string `json:"http_proxy"`
}
}
Token string
WarpEnabled bool `json:"warp_enabled"`
WaitlistEnabled bool `json:"waitlist_enabled"`
Created *time.Time
Updated *time.Time
Tos *time.Time
Place uint
Locale string
Enabled bool
InstallID string `json:"install_id"`
FCMToken string `json:"fcm_token"`
}
Success bool
Errors []string
Messages []string
}
func main() {
pk := new([32]byte)
sk := new([32]byte)
_, err := io.ReadFull(rand.Reader, sk[:])
check(err)
curve25519.ScalarBaseMult(pk, sk)
reqBody := strings.NewReader(`{"key":"` + base64.StdEncoding.EncodeToString(pk[:]) + `","tos":"` + time.Now().Format(time.RFC3339) + `","type":"ios","model":"iPhone11,6","fcm_token":"","device_token":""}`)
req, err := http.NewRequest("POST", "https://api.cloudflareclient.com/v0i2003111800/reg", reqBody)
check(err)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "*/*")
req.Header.Set("User-Agent", "1.1.1.1/2003111800.1")
req.Header.Set("Accept-Language", "en-us")
res, err := http.DefaultClient.Do(req)
check(err)
resBytes, err := ioutil.ReadAll(res.Body)
check(err)
var response *response
err = json.Unmarshal(resBytes, &response)
check(err)
reqBody = strings.NewReader(`{"warp_enabled":true}`)
req, err = http.NewRequest("PATCH", "https://api.cloudflareclient.com/v0i2003111800/reg/"+response.Result.ID, reqBody)
check(err)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Accept", "*/*")
req.Header.Set("User-Agent", "1.1.1.1/2003111800.1")
req.Header.Set("Accept-Language", "en-us")
req.Header.Set("Authorization", "Bearer "+response.Result.Token)
res, err = http.DefaultClient.Do(req)
check(err)
fmt.Println(`[Interface]
PrivateKey = ` + base64.StdEncoding.EncodeToString(sk[:32]) + `
DNS = 1.1.1.1
Address = ` + response.Result.Config.Interface.Addresses.V4 + `/32
[Peer]
PublicKey = ` + response.Result.Config.Peers[0].PublicKey + `
AllowedIPs = 0.0.0.0/0
Endpoint = 162.159.192.5:2408
`)
}