35 lines
1.0 KiB
Scala
35 lines
1.0 KiB
Scala
package com.github.shadowsocks.utils
|
|
|
|
import com.github.shadowsocks.database.Profile
|
|
import android.net.Uri
|
|
import android.util.{Log, Base64}
|
|
|
|
object ShadowParser {
|
|
val TAG = "ShadowParser"
|
|
def parse (data: String): Option[Profile] = {
|
|
try {
|
|
Log.d(TAG, data)
|
|
val uri = Uri.parse(data.trim)
|
|
if (uri.isOpaque && uri.getScheme == "shadow") {
|
|
val encoded = data.replace("shadow:", "")
|
|
val content = new String(Base64.decode(encoded, Base64.NO_PADDING), "UTF-8")
|
|
val info = content.split('@')
|
|
val encinfo = info(0).split(':')
|
|
val serverinfo = info(1).split(':')
|
|
|
|
val profile = new Profile
|
|
profile.name = serverinfo(0)
|
|
profile.host = serverinfo(0)
|
|
profile.remotePort = serverinfo(1).toInt
|
|
profile.localPort = 1080
|
|
profile.method = encinfo(0)
|
|
profile.password = encinfo(1)
|
|
return Some(profile)
|
|
}
|
|
} catch {
|
|
case ex : Exception => Log.e(TAG, "parser error", ex)// Ignore
|
|
}
|
|
None
|
|
}
|
|
}
|