Browse Source

emergency fix make user agent non-configurable WhatsApp is filtering it out like in Pair Code reported by @ibnux

pull/61/head
Dimas Restu H 2 years ago
parent
commit
080a8a2575
  1. 3
      .env.example
  2. 6
      go.mod
  3. 12
      go.sum
  4. 61
      pkg/whatsapp/whatsapp.go

3
.env.example

@ -33,9 +33,6 @@ WHATSAPP_DATASTORE_URI=file:dbs/WhatsApp.db?_pragma=foreign_keys(1)
WHATSAPP_CLIENT_PROXY_URL="" WHATSAPP_CLIENT_PROXY_URL=""
WHATSAPP_USER_AGENT_NAME="Go WhatsApp Multi-Device REST"
WHATSAPP_USER_AGENT_TYPE="chrome"
WHATSAPP_MEDIA_IMAGE_COMPRESSION=true WHATSAPP_MEDIA_IMAGE_COMPRESSION=true
WHATSAPP_MEDIA_IMAGE_CONVERT_WEBP=true WHATSAPP_MEDIA_IMAGE_CONVERT_WEBP=true

6
go.mod

@ -5,10 +5,10 @@ go 1.19
require ( require (
github.com/PuerkitoBio/goquery v1.8.1 github.com/PuerkitoBio/goquery v1.8.1
github.com/SporkHubr/echo-http-cache v0.0.0-20200706100054-1d7ae9f38029 github.com/SporkHubr/echo-http-cache v0.0.0-20200706100054-1d7ae9f38029
github.com/go-playground/validator/v10 v10.15.5
github.com/go-playground/validator/v10 v10.16.0
github.com/golang-jwt/jwt v3.2.2+incompatible github.com/golang-jwt/jwt v3.2.2+incompatible
github.com/joho/godotenv v1.5.1 github.com/joho/godotenv v1.5.1
github.com/labstack/echo/v4 v4.11.2
github.com/labstack/echo/v4 v4.11.3
github.com/lib/pq v1.10.9 github.com/lib/pq v1.10.9
github.com/nickalie/go-webpbin v0.0.0-20220110095747-f10016bf2dc1 github.com/nickalie/go-webpbin v0.0.0-20220110095747-f10016bf2dc1
github.com/robfig/cron/v3 v3.0.1 github.com/robfig/cron/v3 v3.0.1
@ -17,7 +17,7 @@ require (
github.com/sunshineplan/imgconv v1.1.5 github.com/sunshineplan/imgconv v1.1.5
github.com/swaggo/echo-swagger v1.4.1 github.com/swaggo/echo-swagger v1.4.1
github.com/swaggo/swag v1.16.2 github.com/swaggo/swag v1.16.2
go.mau.fi/whatsmeow v0.0.0-20231016102050-3a30a129b626
go.mau.fi/whatsmeow v0.0.0-20231110185952-cfd1bea9628a
google.golang.org/protobuf v1.31.0 google.golang.org/protobuf v1.31.0
modernc.org/sqlite v1.17.0 modernc.org/sqlite v1.17.0
) )

12
go.sum

@ -65,8 +65,8 @@ github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/o
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
github.com/go-playground/validator/v10 v10.15.5 h1:LEBecTWb/1j5TNY1YYG2RcOUN3R7NLylN+x8TTueE24=
github.com/go-playground/validator/v10 v10.15.5/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
github.com/go-playground/validator/v10 v10.16.0 h1:x+plE831WK4vaKHO/jpgUGsvLKIqRRkz6M78GuJAfGE=
github.com/go-playground/validator/v10 v10.16.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
github.com/go-redis/cache/v8 v8.0.0-beta.11/go.mod h1:4wxD/neK+Uw+SteOR+AXtlyQYMBlI/D1u7UahfDCBAI= github.com/go-redis/cache/v8 v8.0.0-beta.11/go.mod h1:4wxD/neK+Uw+SteOR+AXtlyQYMBlI/D1u7UahfDCBAI=
github.com/go-redis/redis/v8 v8.0.0-beta.2/go.mod h1:o1M7JtsgfDYyv3o+gBn/jJ1LkqpnCrmil7PSppZGBak= github.com/go-redis/redis/v8 v8.0.0-beta.2/go.mod h1:o1M7JtsgfDYyv3o+gBn/jJ1LkqpnCrmil7PSppZGBak=
github.com/go-redis/redis/v8 v8.0.0-beta.5/go.mod h1:Mm9EH/5UMRx680UIryN6rd5XFn/L7zORPqLV+1D5thQ= github.com/go-redis/redis/v8 v8.0.0-beta.5/go.mod h1:Mm9EH/5UMRx680UIryN6rd5XFn/L7zORPqLV+1D5thQ=
@ -127,8 +127,8 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/labstack/echo/v4 v4.1.16/go.mod h1:awO+5TzAjvL8XpibdsfXxPgHr+orhtXZJZIQCVjogKI= github.com/labstack/echo/v4 v4.1.16/go.mod h1:awO+5TzAjvL8XpibdsfXxPgHr+orhtXZJZIQCVjogKI=
github.com/labstack/echo/v4 v4.11.2 h1:T+cTLQxWCDfqDEoydYm5kCobjmHwOwcv4OJAPHilmdE=
github.com/labstack/echo/v4 v4.11.2/go.mod h1:UcGuQ8V6ZNRmSweBIJkPvGfwCMIlFmiqrPqiEBfPYws=
github.com/labstack/echo/v4 v4.11.3 h1:Upyu3olaqSHkCjs1EJJwQ3WId8b8b1hxbogyommKktM=
github.com/labstack/echo/v4 v4.11.3/go.mod h1:UcGuQ8V6ZNRmSweBIJkPvGfwCMIlFmiqrPqiEBfPYws=
github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8= github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8=
github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
@ -244,8 +244,8 @@ go.mau.fi/libsignal v0.1.0 h1:vAKI/nJ5tMhdzke4cTK1fb0idJzz1JuEIpmjprueC+c=
go.mau.fi/libsignal v0.1.0/go.mod h1:R8ovrTezxtUNzCQE5PH30StOQWWeBskBsWE55vMfY9I= go.mau.fi/libsignal v0.1.0/go.mod h1:R8ovrTezxtUNzCQE5PH30StOQWWeBskBsWE55vMfY9I=
go.mau.fi/util v0.2.0 h1:AMGBEdg9Ya/smb/09dljo9wBwKr432EpfjDWF7aFQg0= go.mau.fi/util v0.2.0 h1:AMGBEdg9Ya/smb/09dljo9wBwKr432EpfjDWF7aFQg0=
go.mau.fi/util v0.2.0/go.mod h1:AxuJUMCxpzgJ5eV9JbPWKRH8aAJJidxetNdUj7qcb84= go.mau.fi/util v0.2.0/go.mod h1:AxuJUMCxpzgJ5eV9JbPWKRH8aAJJidxetNdUj7qcb84=
go.mau.fi/whatsmeow v0.0.0-20231016102050-3a30a129b626 h1:uqurXYTURlhbpEHldNqP8EC15EIP1zWuUABRL2Xqkbs=
go.mau.fi/whatsmeow v0.0.0-20231016102050-3a30a129b626/go.mod h1:u557d2vph8xcLrk3CKTBknUHoB6icUpqazA4w+binRU=
go.mau.fi/whatsmeow v0.0.0-20231110185952-cfd1bea9628a h1:nipJj69icB7lSXZ64rsfzthzw9r2cNiY4uhyteEHY5o=
go.mau.fi/whatsmeow v0.0.0-20231110185952-cfd1bea9628a/go.mod h1:u557d2vph8xcLrk3CKTBknUHoB6icUpqazA4w+binRU=
go.opentelemetry.io/otel v0.5.0/go.mod h1:jzBIgIzK43Iu1BpDAXwqOd6UPsSAk+ewVZ5ofSXw4Ek= go.opentelemetry.io/otel v0.5.0/go.mod h1:jzBIgIzK43Iu1BpDAXwqOd6UPsSAk+ewVZ5ofSXw4Ek=
go.opentelemetry.io/otel v0.6.0/go.mod h1:jzBIgIzK43Iu1BpDAXwqOd6UPsSAk+ewVZ5ofSXw4Ek= go.opentelemetry.io/otel v0.6.0/go.mod h1:jzBIgIzK43Iu1BpDAXwqOd6UPsSAk+ewVZ5ofSXw4Ek=
go.opentelemetry.io/otel v0.7.0/go.mod h1:aZMyHG5TqDOXEgH2tyLiXSUKly1jT3yqE9PmrzIeCdo= go.opentelemetry.io/otel v0.7.0/go.mod h1:aZMyHG5TqDOXEgH2tyLiXSUKly1jT3yqE9PmrzIeCdo=

61
pkg/whatsapp/whatsapp.go

@ -32,8 +32,6 @@ var WhatsAppClient = make(map[string]*whatsmeow.Client)
var ( var (
WhatsAppClientProxyURL string WhatsAppClientProxyURL string
WhatsAppUserAgentName string
WhatsAppUserAgentType string
) )
func init() { func init() {
@ -56,16 +54,6 @@ func init() {
WhatsAppClientProxyURL, _ = env.GetEnvString("WHATSAPP_CLIENT_PROXY_URL") WhatsAppClientProxyURL, _ = env.GetEnvString("WHATSAPP_CLIENT_PROXY_URL")
WhatsAppUserAgentName, err = env.GetEnvString("WHATSAPP_USER_AGENT_NAME")
if err != nil {
log.Print(nil).Fatal("Error Parse Environment Variable for WhatsApp Client User Agent Name")
}
WhatsAppUserAgentType, err = env.GetEnvString("WHATSAPP_USER_AGENT_TYPE")
if err != nil {
log.Print(nil).Fatal("Error Parse Environment Variable for WhatsApp Client User Agent Type")
}
WhatsAppDatastore = datastore WhatsAppDatastore = datastore
} }
@ -79,8 +67,8 @@ func WhatsAppInitClient(device *store.Device, jid string) {
} }
// Set Client Properties // Set Client Properties
store.DeviceProps.Os = proto.String(WhatsAppUserAgentName)
store.DeviceProps.PlatformType = WhatsAppGetUserAgent(WhatsAppUserAgentType).Enum()
store.DeviceProps.Os = proto.String(WhatsAppGetUserOS())
store.DeviceProps.PlatformType = WhatsAppGetUserAgent("chrome").Enum()
store.DeviceProps.RequireFullSync = proto.Bool(false) store.DeviceProps.RequireFullSync = proto.Bool(false)
// Set Client Versions // Set Client Versions
@ -157,49 +145,14 @@ func WhatsAppGetUserAgent(agentType string) waproto.DeviceProps_PlatformType {
} }
} }
func WhatsAppGetPairAgent(agentType string) whatsmeow.PairClientType {
switch strings.ToLower(agentType) {
case "ie":
return whatsmeow.PairClientIE
case "edge":
return whatsmeow.PairClientEdge
case "chrome":
return whatsmeow.PairClientChrome
case "safari":
return whatsmeow.PairClientSafari
case "firefox":
return whatsmeow.PairClientFirefox
case "opera":
return whatsmeow.PairClientOpera
case "uwp":
return whatsmeow.PairClientUWP
default:
return whatsmeow.PairClientOtherWebClient
}
}
func WhatsAppGetPairName(agentType string) string {
var prefix string
switch agentType {
case "ie":
prefix = "Internet Explorer"
case "edge":
prefix = "Microsoft Edge"
case "uwp":
prefix = "UWP"
default:
prefix = strings.Title(agentType)
}
func WhatsAppGetUserOS() string {
switch runtime.GOOS { switch runtime.GOOS {
case "windows": case "windows":
return prefix + " (Windows)"
case "darwin":
return prefix + " (macOS)"
return "Windows"
case "linux": case "linux":
return prefix + " (Linux)"
return "Linux"
default: default:
return prefix + " (" + WhatsAppUserAgentName + ")"
return "Mac OS"
} }
} }
@ -278,7 +231,7 @@ func WhatsAppLoginPair(jid string) (string, int, error) {
} }
// Request Pairing Code // Request Pairing Code
code, err := WhatsAppClient[jid].PairPhone(jid, true, WhatsAppGetPairAgent(WhatsAppUserAgentType), WhatsAppGetPairName(WhatsAppUserAgentType))
code, err := WhatsAppClient[jid].PairPhone(jid, true, whatsmeow.PairClientChrome, "Google Chrome ("+WhatsAppGetUserOS()+")")
if err != nil { if err != nil {
return "", 0, err return "", 0, err
} }

Loading…
Cancel
Save