Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
com.ccwangluo.accelerator
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sheteng
com.ccwangluo.accelerator
Commits
3605e18d
Commit
3605e18d
authored
Oct 04, 2015
by
Mygod
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update dependencies
parent
1ad82972
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
75 additions
and
85 deletions
+75
-85
build.sbt
build.sbt
+8
-12
src/main/scala/com/github/shadowsocks/AppManager.scala
src/main/scala/com/github/shadowsocks/AppManager.scala
+6
-6
src/main/scala/com/github/shadowsocks/BaseService.scala
src/main/scala/com/github/shadowsocks/BaseService.scala
+5
-7
src/main/scala/com/github/shadowsocks/ParserActivity.scala
src/main/scala/com/github/shadowsocks/ParserActivity.scala
+7
-7
src/main/scala/com/github/shadowsocks/Shadowsocks.scala
src/main/scala/com/github/shadowsocks/Shadowsocks.scala
+19
-21
src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala
.../scala/com/github/shadowsocks/ShadowsocksNatService.scala
+3
-2
src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala
.../scala/com/github/shadowsocks/ShadowsocksVpnService.scala
+4
-4
src/main/scala/com/github/shadowsocks/ShadowsocksVpnThread.scala
...n/scala/com/github/shadowsocks/ShadowsocksVpnThread.scala
+2
-3
src/main/scala/com/github/shadowsocks/database/MenuAdapter.scala
...n/scala/com/github/shadowsocks/database/MenuAdapter.scala
+1
-1
src/main/scala/com/github/shadowsocks/database/ProfileManager.scala
...cala/com/github/shadowsocks/database/ProfileManager.scala
+1
-1
src/main/scala/com/github/shadowsocks/utils/ConfigUtils.scala
...main/scala/com/github/shadowsocks/utils/ConfigUtils.scala
+2
-2
src/main/scala/com/github/shadowsocks/utils/Parser.scala
src/main/scala/com/github/shadowsocks/utils/Parser.scala
+2
-5
src/main/scala/com/github/shadowsocks/utils/Utils.scala
src/main/scala/com/github/shadowsocks/utils/Utils.scala
+15
-14
No files found.
build.sbt
View file @
3605e18d
...
@@ -6,6 +6,8 @@ platformTarget in Android := "android-23"
...
@@ -6,6 +6,8 @@ platformTarget in Android := "android-23"
name
:=
"shadowsocks"
name
:=
"shadowsocks"
scalaVersion
:=
"2.11.7"
compileOrder
in
Compile
:=
CompileOrder
.
JavaThenScala
compileOrder
in
Compile
:=
CompileOrder
.
JavaThenScala
javacOptions
++=
Seq
(
"-source"
,
"1.6"
,
"-target"
,
"1.6"
)
javacOptions
++=
Seq
(
"-source"
,
"1.6"
,
"-target"
,
"1.6"
)
...
@@ -24,26 +26,20 @@ resolvers += "JRAF" at "http://JRAF.org/static/maven/2"
...
@@ -24,26 +26,20 @@ resolvers += "JRAF" at "http://JRAF.org/static/maven/2"
libraryDependencies
++=
Seq
(
libraryDependencies
++=
Seq
(
"dnsjava"
%
"dnsjava"
%
"2.1.7"
,
"dnsjava"
%
"dnsjava"
%
"2.1.7"
,
"com.github.kevinsawicki"
%
"http-request"
%
"
5.6
"
,
"com.github.kevinsawicki"
%
"http-request"
%
"
6.0
"
,
"commons-net"
%
"commons-net"
%
"3.3"
,
"commons-net"
%
"commons-net"
%
"3.3"
,
"com.google.zxing"
%
"android-integration"
%
"3.1.0"
"com.google.zxing"
%
"android-integration"
%
"3.1.0"
,
)
"com.joanzapata.android"
%
"android-iconify"
%
"1.0.11"
,
libraryDependencies
++=
Seq
(
"com.joanzapata.android"
%
"android-iconify"
%
"1.0.9"
,
"net.glxn.qrgen"
%
"android"
%
"2.0"
,
"net.glxn.qrgen"
%
"android"
%
"2.0"
,
"net.simonvt.menudrawer"
%
"menudrawer"
%
"3.0.6"
,
"net.simonvt.menudrawer"
%
"menudrawer"
%
"3.0.6"
,
"com.google.android.gms"
%
"play-services-base"
%
"8.1.0"
,
"com.google.android.gms"
%
"play-services-base"
%
"8.1.0"
,
"com.google.android.gms"
%
"play-services-ads"
%
"8.1.0"
,
"com.google.android.gms"
%
"play-services-ads"
%
"8.1.0"
,
"com.google.android.gms"
%
"play-services-analytics"
%
"8.1.0"
,
"com.google.android.gms"
%
"play-services-analytics"
%
"8.1.0"
,
"com.android.support"
%
"support-v4"
%
"23.0.1"
"com.android.support"
%
"support-v4"
%
"23.0.1"
,
)
libraryDependencies
++=
Seq
(
"com.github.mrengineer13"
%
"snackbar"
%
"0.5.0"
,
"com.github.mrengineer13"
%
"snackbar"
%
"0.5.0"
,
"com.nostra13.universalimageloader"
%
"universal-image-loader"
%
"1.8.4"
,
"com.nostra13.universalimageloader"
%
"universal-image-loader"
%
"1.8.4"
,
"com.j256.ormlite"
%
"ormlite-core"
%
"4.4
7
"
,
"com.j256.ormlite"
%
"ormlite-core"
%
"4.4
8
"
,
"com.j256.ormlite"
%
"ormlite-android"
%
"4.4
7
"
"com.j256.ormlite"
%
"ormlite-android"
%
"4.4
8
"
)
)
proguardOptions
in
Android
++=
Seq
(
"-keep class android.support.v4.app.** { *; }"
,
proguardOptions
in
Android
++=
Seq
(
"-keep class android.support.v4.app.** { *; }"
,
...
...
src/main/scala/com/github/shadowsocks/AppManager.scala
View file @
3605e18d
...
@@ -65,7 +65,8 @@ import com.nostra13.universalimageloader.core.{DisplayImageOptions, ImageLoader,
...
@@ -65,7 +65,8 @@ import com.nostra13.universalimageloader.core.{DisplayImageOptions, ImageLoader,
import
com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer
import
com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer
import
com.github.shadowsocks.utils.
{
Utils
,
Scheme
,
Key
}
import
com.github.shadowsocks.utils.
{
Utils
,
Scheme
,
Key
}
import
scala.concurrent.ops._
import
scala.concurrent.ExecutionContext.Implicits.global
import
scala.concurrent.Future
import
scala.language.implicitConversions
import
scala.language.implicitConversions
case
class
ProxiedApp
(
uid
:
Int
,
name
:
String
,
packageName
:
String
,
var
proxied
:
Boolean
)
case
class
ProxiedApp
(
uid
:
Int
,
name
:
String
,
packageName
:
String
,
var
proxied
:
Boolean
)
...
@@ -267,9 +268,8 @@ class AppManager extends Activity with OnCheckedChangeListener with OnClickListe
...
@@ -267,9 +268,8 @@ class AppManager extends Activity with OnCheckedChangeListener with OnClickListe
}
}
protected
override
def
onCreateOptionsMenu
(
menu
:
Menu
)
:
Boolean
=
{
protected
override
def
onCreateOptionsMenu
(
menu
:
Menu
)
:
Boolean
=
{
val
inflater
=
getMenuInflater
()
getMenuInflater
.
inflate
(
R
.
menu
.
app_manager_menu
,
menu
)
inflater
.
inflate
(
R
.
menu
.
app_manager_menu
,
menu
)
super
.
onCreateOptionsMenu
(
menu
)
return
super
.
onCreateOptionsMenu
(
menu
)
}
}
protected
override
def
onCreate
(
savedInstanceState
:
Bundle
)
{
protected
override
def
onCreate
(
savedInstanceState
:
Bundle
)
{
...
@@ -277,7 +277,7 @@ class AppManager extends Activity with OnCheckedChangeListener with OnClickListe
...
@@ -277,7 +277,7 @@ class AppManager extends Activity with OnCheckedChangeListener with OnClickListe
handler
=
new
Handler
()
handler
=
new
Handler
()
val
actionBar
=
getActionBar
()
val
actionBar
=
getActionBar
actionBar
.
setTitle
(
R
.
string
.
proxied_help
)
actionBar
.
setTitle
(
R
.
string
.
proxied_help
)
actionBar
.
setDisplayHomeAsUpEnabled
(
true
)
actionBar
.
setDisplayHomeAsUpEnabled
(
true
)
actionBar
.
setDisplayShowHomeEnabled
(
false
)
actionBar
.
setDisplayShowHomeEnabled
(
false
)
...
@@ -309,7 +309,7 @@ class AppManager extends Activity with OnCheckedChangeListener with OnClickListe
...
@@ -309,7 +309,7 @@ class AppManager extends Activity with OnCheckedChangeListener with OnClickListe
protected
override
def
onResume
()
{
protected
override
def
onResume
()
{
super
.
onResume
()
super
.
onResume
()
spawn
{
Future
{
handler
.
post
(
loadStartRunnable
)
handler
.
post
(
loadStartRunnable
)
if
(!
appsLoaded
)
loadApps
()
if
(!
appsLoaded
)
loadApps
()
handler
.
post
(
loadFinishRunnable
)
handler
.
post
(
loadFinishRunnable
)
...
...
src/main/scala/com/github/shadowsocks/BaseService.scala
View file @
3605e18d
...
@@ -39,13 +39,11 @@
...
@@ -39,13 +39,11 @@
package
com.github.shadowsocks
package
com.github.shadowsocks
import
android.os.
{
Handler
,
RemoteCallbackList
}
import
com.github.shadowsocks.aidl.
{
Config
,
IShadowsocksService
,
IShadowsocksServiceCallback
}
import
com.github.shadowsocks.utils.
{
Path
,
State
}
import
java.io.
{
IOException
,
FileNotFoundException
,
FileReader
,
BufferedReader
}
import
android.util.Log
import
android.app.Notification
import
android.app.Notification
import
android.content.Context
import
android.content.Context
import
android.os.
{
Handler
,
RemoteCallbackList
}
import
com.github.shadowsocks.aidl.
{
Config
,
IShadowsocksService
,
IShadowsocksServiceCallback
}
import
com.github.shadowsocks.utils.State
trait
BaseService
{
trait
BaseService
{
...
@@ -100,10 +98,10 @@ trait BaseService {
...
@@ -100,10 +98,10 @@ trait BaseService {
def
getTag
:
String
def
getTag
:
String
def
getContext
:
Context
def
getContext
:
Context
def
getCallbackCount
()
:
Int
=
{
def
getCallbackCount
:
Int
=
{
callbackCount
callbackCount
}
}
def
getState
()
:
Int
=
{
def
getState
:
Int
=
{
state
state
}
}
def
changeState
(
s
:
Int
)
{
def
changeState
(
s
:
Int
)
{
...
...
src/main/scala/com/github/shadowsocks/ParserActivity.scala
View file @
3605e18d
...
@@ -39,15 +39,15 @@
...
@@ -39,15 +39,15 @@
package
com.github.shadowsocks
package
com.github.shadowsocks
import
android.os.
{
Message
,
Handler
,
Bundle
}
import
android.app.
{
Activity
,
AlertDialog
,
ProgressDialog
}
import
android.app.
{
ProgressDialog
,
AlertDialog
,
Activity
}
import
android.content.DialogInterface
import
android.content.
{
Intent
,
DialogInterface
}
import
com.github.shadowsocks.database.
{
ProfileManager
,
Profile
}
import
com.github.shadowsocks.utils.
{
Parser
,
Action
}
import
android.preference.PreferenceManager
import
android.view.WindowManager
import
android.graphics.Color
import
android.graphics.Color
import
android.graphics.drawable.ColorDrawable
import
android.graphics.drawable.ColorDrawable
import
android.os.
{
Bundle
,
Handler
,
Message
}
import
android.preference.PreferenceManager
import
android.view.WindowManager
import
com.github.shadowsocks.database.
{
Profile
,
ProfileManager
}
import
com.github.shadowsocks.utils.Parser
class
ParserActivity
extends
Activity
{
class
ParserActivity
extends
Activity
{
override
def
onCreate
(
savedInstanceState
:
Bundle
)
{
override
def
onCreate
(
savedInstanceState
:
Bundle
)
{
...
...
src/main/scala/com/github/shadowsocks/Shadowsocks.scala
View file @
3605e18d
...
@@ -38,10 +38,9 @@
...
@@ -38,10 +38,9 @@
*/
*/
package
com.github.shadowsocks
package
com.github.shadowsocks
import
java.io.
{
ByteArrayInputStream
,
ByteArrayOutputStream
,
FileOutputStream
,
IOException
,
InputStream
,
OutputStream
}
import
java.util
import
java.util
import
java.io.
{
OutputStream
,
InputStream
,
ByteArrayInputStream
,
ByteArrayOutputStream
,
IOException
,
FileOutputStream
}
import
java.util.Locale
import
java.util.Locale
import
java.lang.Math
import
android.app.backup.BackupManager
import
android.app.backup.BackupManager
import
android.app.
{
Activity
,
AlertDialog
,
ProgressDialog
}
import
android.app.
{
Activity
,
AlertDialog
,
ProgressDialog
}
...
@@ -52,6 +51,7 @@ import android.graphics.{Bitmap, Color, Typeface}
...
@@ -52,6 +51,7 @@ import android.graphics.{Bitmap, Color, Typeface}
import
android.net.
{
Uri
,
VpnService
}
import
android.net.
{
Uri
,
VpnService
}
import
android.os._
import
android.os._
import
android.preference._
import
android.preference._
import
android.support.v4.content.ContextCompat
import
android.util.
{
DisplayMetrics
,
Log
}
import
android.util.
{
DisplayMetrics
,
Log
}
import
android.view.View.OnLongClickListener
import
android.view.View.OnLongClickListener
import
android.view._
import
android.view._
...
@@ -65,15 +65,15 @@ import com.github.shadowsocks.utils._
...
@@ -65,15 +65,15 @@ import com.github.shadowsocks.utils._
import
com.google.android.gms.ads.
{
AdRequest
,
AdSize
,
AdView
}
import
com.google.android.gms.ads.
{
AdRequest
,
AdSize
,
AdView
}
import
com.google.android.gms.analytics.HitBuilders
import
com.google.android.gms.analytics.HitBuilders
import
com.google.zxing.integration.android.IntentIntegrator
import
com.google.zxing.integration.android.IntentIntegrator
import
com.nostra13.universalimageloader.core.download.BaseImageDownloader
import
net.simonvt.menudrawer.MenuDrawer
import
com.joanzapata.android.iconify.Iconify
import
com.joanzapata.android.iconify.Iconify.IconValue
import
com.joanzapata.android.iconify.IconDrawable
import
com.joanzapata.android.iconify.IconDrawable
import
com.joanzapata.android.iconify.Iconify.IconValue
import
com.nostra13.universalimageloader.core.download.BaseImageDownloader
import
net.glxn.qrgen.android.QRCode
import
net.glxn.qrgen.android.QRCode
import
net.simonvt.menudrawer.MenuDrawer
import
scala.collection.mutable.
{
ArrayBuffer
,
ListBuffer
}
import
scala.collection.mutable.
{
ArrayBuffer
,
ListBuffer
}
import
scala.concurrent.ops._
import
scala.concurrent.ExecutionContext.Implicits.global
import
scala.concurrent.Future
class
ProfileIconDownloader
(
context
:
Context
,
connectTimeout
:
Int
,
readTimeout
:
Int
)
class
ProfileIconDownloader
(
context
:
Context
,
connectTimeout
:
Int
,
readTimeout
:
Int
)
extends
BaseImageDownloader
(
context
,
connectTimeout
,
readTimeout
)
{
extends
BaseImageDownloader
(
context
,
connectTimeout
,
readTimeout
)
{
...
@@ -224,7 +224,7 @@ class Shadowsocks
...
@@ -224,7 +224,7 @@ class Shadowsocks
if
(!
status
.
getBoolean
(
getVersionName
,
false
))
{
if
(!
status
.
getBoolean
(
getVersionName
,
false
))
{
status
.
edit
.
putBoolean
(
getVersionName
,
true
).
commit
()
status
.
edit
.
putBoolean
(
getVersionName
,
true
).
commit
()
recovery
()
;
recovery
()
}
}
}
}
...
@@ -396,7 +396,7 @@ class Shadowsocks
...
@@ -396,7 +396,7 @@ class Shadowsocks
changeSwitch
(
checked
=
false
)
changeSwitch
(
checked
=
false
)
}
}
def
isReady
()
:
Boolean
=
{
def
isReady
:
Boolean
=
{
if
(!
checkText
(
Key
.
proxy
))
return
false
if
(!
checkText
(
Key
.
proxy
))
return
false
if
(!
checkText
(
Key
.
sitekey
))
return
false
if
(!
checkText
(
Key
.
sitekey
))
return
false
if
(!
checkNumber
(
Key
.
localPort
,
low
=
false
))
return
false
if
(!
checkNumber
(
Key
.
localPort
,
low
=
false
))
return
false
...
@@ -407,7 +407,7 @@ class Shadowsocks
...
@@ -407,7 +407,7 @@ class Shadowsocks
def
prepareStartService
()
{
def
prepareStartService
()
{
showProgress
(
R
.
string
.
connecting
)
showProgress
(
R
.
string
.
connecting
)
spawn
{
Future
{
if
(
isVpnEnabled
)
{
if
(
isVpnEnabled
)
{
val
intent
=
VpnService
.
prepare
(
this
)
val
intent
=
VpnService
.
prepare
(
this
)
if
(
intent
!=
null
)
{
if
(
intent
!=
null
)
{
...
@@ -522,8 +522,8 @@ class Shadowsocks
...
@@ -522,8 +522,8 @@ class Shadowsocks
getActionBar
.
setDisplayShowTitleEnabled
(
false
)
getActionBar
.
setDisplayShowTitleEnabled
(
false
)
getActionBar
.
setDisplayShowCustomEnabled
(
true
)
getActionBar
.
setDisplayShowCustomEnabled
(
true
)
if
(
Utils
.
isLollipopOrAbove
)
{
if
(
Utils
.
isLollipopOrAbove
)
{
getWindow
.
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
)
;
getWindow
.
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
)
getWindow
.
setStatusBarColor
(
getResources
().
getColor
(
R
.
color
.
grey3
));
getWindow
.
setStatusBarColor
(
ContextCompat
.
getColor
(
this
,
R
.
color
.
grey3
))
getActionBar
.
setDisplayHomeAsUpEnabled
(
true
)
getActionBar
.
setDisplayHomeAsUpEnabled
(
true
)
getActionBar
.
setHomeAsUpIndicator
(
R
.
drawable
.
ic_drawer
)
getActionBar
.
setHomeAsUpIndicator
(
R
.
drawable
.
ic_drawer
)
}
else
{
}
else
{
...
@@ -551,7 +551,7 @@ class Shadowsocks
...
@@ -551,7 +551,7 @@ class Shadowsocks
registerReceiver
(
preferenceReceiver
,
new
IntentFilter
(
Action
.
UPDATE_PREFS
))
registerReceiver
(
preferenceReceiver
,
new
IntentFilter
(
Action
.
UPDATE_PREFS
))
// Bind to the service
// Bind to the service
spawn
{
Future
{
val
isRoot
=
(!
Utils
.
isLollipopOrAbove
||
status
.
getBoolean
(
Key
.
isNAT
,
false
))
&&
Console
.
isRoot
val
isRoot
=
(!
Utils
.
isLollipopOrAbove
||
status
.
getBoolean
(
Key
.
isNAT
,
false
))
&&
Console
.
isRoot
handler
.
post
(
new
Runnable
{
handler
.
post
(
new
Runnable
{
override
def
run
()
{
override
def
run
()
{
...
@@ -718,7 +718,7 @@ class Shadowsocks
...
@@ -718,7 +718,7 @@ class Shadowsocks
val
profile
=
profileManager
.
getProfile
(
id
)
val
profile
=
profileManager
.
getProfile
(
id
)
if
(
!
profile
.
isDefined
)
return
false
if
(
profile
.
isEmpty
)
return
false
new
AlertDialog
.
Builder
(
this
)
new
AlertDialog
.
Builder
(
this
)
.
setMessage
(
String
.
format
(
Locale
.
ENGLISH
,
getString
(
R
.
string
.
remove_profile
),
profile
.
get
.
name
))
.
setMessage
(
String
.
format
(
Locale
.
ENGLISH
,
getString
(
R
.
string
.
remove_profile
),
profile
.
get
.
name
))
...
@@ -731,7 +731,7 @@ class Shadowsocks
...
@@ -731,7 +731,7 @@ class Shadowsocks
profileManager
.
delProfile
(
id
)
profileManager
.
delProfile
(
id
)
val
profileId
=
{
val
profileId
=
{
val
profiles
=
profileManager
.
getAllProfiles
.
getOrElse
(
List
[
Profile
]())
val
profiles
=
profileManager
.
getAllProfiles
.
getOrElse
(
List
[
Profile
]())
if
(
profiles
.
isEmpty
)
-
1
else
profiles
(
0
)
.
id
if
(
profiles
.
isEmpty
)
-
1
else
profiles
.
head
.
id
}
}
currentProfile
=
profileManager
.
load
(
profileId
)
currentProfile
=
profileManager
.
load
(
profileId
)
menuAdapter
.
updateList
(
getMenuList
,
currentProfile
.
id
)
menuAdapter
.
updateList
(
getMenuList
,
currentProfile
.
id
)
...
@@ -934,16 +934,14 @@ class Shadowsocks
...
@@ -934,16 +934,14 @@ class Shadowsocks
private
def
recovery
()
{
private
def
recovery
()
{
serviceStop
()
serviceStop
()
val
h
=
showProgress
(
R
.
string
.
recovering
)
val
h
=
showProgress
(
R
.
string
.
recovering
)
spawn
{
Future
{
reset
()
reset
()
h
.
sendEmptyMessage
(
0
)
h
.
sendEmptyMessage
(
0
)
}
}
}
}
private
def
dp2px
(
dp
:
Int
)
:
Int
=
{
private
def
dp2px
(
dp
:
Int
)
:
Int
=
val
displayMetrics
=
getBaseContext
.
getResources
.
getDisplayMetrics
()
Math
.
round
(
dp
*
(
getBaseContext
.
getResources
.
getDisplayMetrics
.
xdpi
/
DisplayMetrics
.
DENSITY_DEFAULT
))
Math
.
round
(
dp
*
(
displayMetrics
.
xdpi
/
DisplayMetrics
.
DENSITY_DEFAULT
))
}
private
def
showQrCode
()
{
private
def
showQrCode
()
{
val
image
=
new
ImageView
(
this
)
val
image
=
new
ImageView
(
this
)
...
@@ -967,7 +965,7 @@ class Shadowsocks
...
@@ -967,7 +965,7 @@ class Shadowsocks
private
def
flushDnsCache
()
{
private
def
flushDnsCache
()
{
val
h
=
showProgress
(
R
.
string
.
flushing
)
val
h
=
showProgress
(
R
.
string
.
flushing
)
spawn
{
Future
{
Utils
.
toggleAirplaneMode
(
getBaseContext
)
Utils
.
toggleAirplaneMode
(
getBaseContext
)
h
.
sendEmptyMessage
(
0
)
h
.
sendEmptyMessage
(
0
)
}
}
...
...
src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala
View file @
3605e18d
...
@@ -58,7 +58,8 @@ import com.google.android.gms.analytics.HitBuilders
...
@@ -58,7 +58,8 @@ import com.google.android.gms.analytics.HitBuilders
import
scala.collection._
import
scala.collection._
import
scala.collection.mutable.ArrayBuffer
import
scala.collection.mutable.ArrayBuffer
import
scala.concurrent.ops._
import
scala.concurrent.ExecutionContext.Implicits.global
import
scala.concurrent.Future
class
ShadowsocksNatService
extends
Service
with
BaseService
{
class
ShadowsocksNatService
extends
Service
with
BaseService
{
...
@@ -556,7 +557,7 @@ class ShadowsocksNatService extends Service with BaseService {
...
@@ -556,7 +557,7 @@ class ShadowsocksNatService extends Service with BaseService {
changeState
(
State
.
CONNECTING
)
changeState
(
State
.
CONNECTING
)
spawn
{
Future
{
if
(
config
.
proxy
==
"198.199.101.152"
)
{
if
(
config
.
proxy
==
"198.199.101.152"
)
{
val
holder
=
application
.
containerHolder
val
holder
=
application
.
containerHolder
...
...
src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala
View file @
3605e18d
...
@@ -40,7 +40,6 @@
...
@@ -40,7 +40,6 @@
package
com.github.shadowsocks
package
com.github.shadowsocks
import
java.io.File
import
java.io.File
import
java.net.InetAddress
import
java.util.Locale
import
java.util.Locale
import
android.app._
import
android.app._
...
@@ -57,7 +56,8 @@ import org.apache.commons.net.util.SubnetUtils
...
@@ -57,7 +56,8 @@ import org.apache.commons.net.util.SubnetUtils
import
scala.collection.mutable
import
scala.collection.mutable
import
scala.collection.mutable.ArrayBuffer
import
scala.collection.mutable.ArrayBuffer
import
scala.concurrent.ops._
import
scala.concurrent.ExecutionContext.Implicits.global
import
scala.concurrent.Future
class
ShadowsocksVpnService
extends
VpnService
with
BaseService
{
class
ShadowsocksVpnService
extends
VpnService
with
BaseService
{
...
@@ -218,7 +218,7 @@ class ShadowsocksVpnService extends VpnService with BaseService {
...
@@ -218,7 +218,7 @@ class ShadowsocksVpnService extends VpnService with BaseService {
changeState
(
State
.
CONNECTING
)
changeState
(
State
.
CONNECTING
)
spawn
{
Future
{
if
(
config
.
proxy
==
"198.199.101.152"
)
{
if
(
config
.
proxy
==
"198.199.101.152"
)
{
val
holder
=
getApplication
.
asInstanceOf
[
ShadowsocksApplication
].
containerHolder
val
holder
=
getApplication
.
asInstanceOf
[
ShadowsocksApplication
].
containerHolder
try
{
try
{
...
@@ -453,7 +453,7 @@ class ShadowsocksVpnService extends VpnService with BaseService {
...
@@ -453,7 +453,7 @@ class ShadowsocksVpnService extends VpnService with BaseService {
Console
.
runCommand
(
cmd
)
Console
.
runCommand
(
cmd
)
return
fd
fd
}
}
override
def
stopBackgroundService
()
{
override
def
stopBackgroundService
()
{
...
...
src/main/scala/com/github/shadowsocks/ShadowsocksVpnThread.scala
View file @
3605e18d
...
@@ -103,7 +103,7 @@ class ShadowsocksVpnThread(vpnService: ShadowsocksVpnService) extends Thread {
...
@@ -103,7 +103,7 @@ class ShadowsocksVpnThread(vpnService: ShadowsocksVpnService) extends Thread {
val
fds
=
socket
.
getAncillaryFileDescriptors
val
fds
=
socket
.
getAncillaryFileDescriptors
if
(
fds
.
length
>
0
)
{
if
(
fds
.
nonEmpty
)
{
var
ret
=
false
var
ret
=
false
val
getInt
=
classOf
[
FileDescriptor
].
getDeclaredMethod
(
"getInt$"
)
val
getInt
=
classOf
[
FileDescriptor
].
getDeclaredMethod
(
"getInt$"
)
...
@@ -136,10 +136,9 @@ class ShadowsocksVpnThread(vpnService: ShadowsocksVpnService) extends Thread {
...
@@ -136,10 +136,9 @@ class ShadowsocksVpnThread(vpnService: ShadowsocksVpnService) extends Thread {
}})
}})
}
catch
{
}
catch
{
case
e
:
IOException
=>
{
case
e
:
IOException
=>
Log
.
e
(
TAG
,
"Error when accept socket"
,
e
)
Log
.
e
(
TAG
,
"Error when accept socket"
,
e
)
return
return
}
}
}
}
}
}
}
...
...
src/main/scala/com/github/shadowsocks/database/MenuAdapter.scala
View file @
3605e18d
...
@@ -46,7 +46,7 @@ import android.view.ViewGroup
...
@@ -46,7 +46,7 @@ import android.view.ViewGroup
import
android.widget.BaseAdapter
import
android.widget.BaseAdapter
import
android.widget.TextView
import
android.widget.TextView
import
android.graphics.drawable.Drawable
import
android.graphics.drawable.Drawable
import
com.github.shadowsocks.
{
R
}
import
com.github.shadowsocks.
R
import
android.view.View.
{
OnLongClickListener
,
OnClickListener
}
import
android.view.View.
{
OnLongClickListener
,
OnClickListener
}
abstract
class
Item
{
abstract
class
Item
{
...
...
src/main/scala/com/github/shadowsocks/database/ProfileManager.scala
View file @
3605e18d
...
@@ -39,9 +39,9 @@
...
@@ -39,9 +39,9 @@
package
com.github.shadowsocks.database
package
com.github.shadowsocks.database
import
android.content.SharedPreferences
import
android.util.Log
import
android.util.Log
import
com.github.shadowsocks._
import
com.github.shadowsocks._
import
android.content.
{
SharedPreferences
,
Context
}
import
com.github.shadowsocks.utils.Key
import
com.github.shadowsocks.utils.Key
class
ProfileManager
(
settings
:
SharedPreferences
,
dbHelper
:
DBHelper
)
{
class
ProfileManager
(
settings
:
SharedPreferences
,
dbHelper
:
DBHelper
)
{
...
...
src/main/scala/com/github/shadowsocks/utils/ConfigUtils.scala
View file @
3605e18d
...
@@ -233,8 +233,8 @@ object ConfigUtils {
...
@@ -233,8 +233,8 @@ object ConfigUtils {
.
readTimeout
(
2000
)
.
readTimeout
(
2000
)
.
send
(
"sig="
+
sig
)
.
send
(
"sig="
+
sig
)
.
body
.
body
val
proxies
=
util
.
Random
.
shuffle
(
list
.
split
(
'|'
).
toSeq
)
.
toSeq
val
proxies
=
util
.
Random
.
shuffle
(
list
.
split
(
'|'
).
toSeq
)
val
proxy
=
proxies
(
0
)
.
split
(
':'
)
val
proxy
=
proxies
.
head
.
split
(
':'
)
val
host
=
proxy
(
0
).
trim
val
host
=
proxy
(
0
).
trim
val
port
=
proxy
(
1
).
trim
.
toInt
val
port
=
proxy
(
1
).
trim
.
toInt
...
...
src/main/scala/com/github/shadowsocks/utils/Parser.scala
View file @
3605e18d
...
@@ -47,11 +47,8 @@ import android.util.{Log, Base64}
...
@@ -47,11 +47,8 @@ import android.util.{Log, Base64}
object
Parser
{
object
Parser
{
val
TAG
=
"ShadowParser"
val
TAG
=
"ShadowParser"
def
generate
(
profile
:
Profile
)
:
String
=
{
def
generate
(
profile
:
Profile
)
:
String
=
"ss://"
+
Base64
.
encodeToString
(
"%s:%s@%s:%d"
.
formatLocal
(
Locale
.
ENGLISH
,
val
path
=
"%s:%s@%s:%d"
.
formatLocal
(
Locale
.
ENGLISH
,
profile
.
method
,
profile
.
password
,
profile
.
host
,
profile
.
remotePort
).
getBytes
,
Base64
.
NO_PADDING
)
profile
.
method
,
profile
.
password
,
profile
.
host
,
profile
.
remotePort
)
return
"ss://"
+
Base64
.
encodeToString
(
path
.
getBytes
,
Base64
.
NO_PADDING
)
}
def
parse
(
data
:
String
)
:
Option
[
Profile
]
=
{
def
parse
(
data
:
String
)
:
Option
[
Profile
]
=
{
try
{
try
{
...
...
src/main/scala/com/github/shadowsocks/utils/Utils.scala
View file @
3605e18d
...
@@ -38,21 +38,21 @@
...
@@ -38,21 +38,21 @@
*/
*/
package
com.github.shadowsocks.utils
package
com.github.shadowsocks.utils
import
android.content.
{
Intent
,
Context
}
import
android.content.pm.ApplicationInfo
import
android.content.pm.PackageManager
import
android.graphics.drawable.
{
BitmapDrawable
,
Drawable
}
import
android.util.
{
Base64
,
Log
}
import
java.io._
import
java.io._
import
java.net._
import
java.net._
import
org.xbill.DNS._
import
java.security.MessageDigest
import
android.graphics._
import
android.app.ActivityManager
import
android.app.ActivityManager
import
android.content.pm.
{
ApplicationInfo
,
PackageManager
}
import
android.content.
{
Context
,
Intent
}
import
android.graphics._
import
android.graphics.drawable.
{
BitmapDrawable
,
Drawable
}
import
android.os.Build
import
android.os.Build
import
android.provider.Settings
import
android.provider.Settings
import
scala.Some
import
android.support.v4.content.ContextCompat
import
java.security.MessageDigest
import
android.util.
{
Base64
,
Log
}
import
com.github.shadowsocks.
{
BuildConfig
}
import
com.github.shadowsocks.BuildConfig
import
org.xbill.DNS._
object
Utils
{
object
Utils
{
...
@@ -146,6 +146,7 @@ object Utils {
...
@@ -146,6 +146,7 @@ object Utils {
// + "am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false\n")
// + "am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false\n")
}
}
//noinspection ScalaDeprecation
private
def
toggleBelowApiLevel17
(
context
:
Context
)
{
private
def
toggleBelowApiLevel17
(
context
:
Context
)
{
// Android 4.2 below
// Android 4.2 below
Settings
.
System
.
putInt
(
context
.
getContentResolver
,
Settings
.
System
.
AIRPLANE_MODE_ON
,
1
)
Settings
.
System
.
putInt
(
context
.
getContentResolver
,
Settings
.
System
.
AIRPLANE_MODE_ON
,
1
)
...
@@ -197,7 +198,7 @@ object Utils {
...
@@ -197,7 +198,7 @@ object Utils {
}
}
}
}
}
catch
{
}
catch
{
case
e
:
Exception
=>
None
case
e
:
Exception
=>
}
}
None
None
}
}
...
@@ -232,7 +233,7 @@ object Utils {
...
@@ -232,7 +233,7 @@ object Utils {
None
None
}
}
lazy
val
isNumericMethod
=
classOf
[
InetAddress
].
getMethod
(
"isNumeric"
,
classOf
[
String
])
private
lazy
val
isNumericMethod
=
classOf
[
InetAddress
].
getMethod
(
"isNumeric"
,
classOf
[
String
])
def
isNumeric
(
address
:
String
)
:
Boolean
=
isNumericMethod
.
invoke
(
null
,
address
).
asInstanceOf
[
Boolean
]
def
isNumeric
(
address
:
String
)
:
Boolean
=
isNumericMethod
.
invoke
(
null
,
address
).
asInstanceOf
[
Boolean
]
/**
/**
...
@@ -338,7 +339,7 @@ object Utils {
...
@@ -338,7 +339,7 @@ object Utils {
def
getAppIcon
(
c
:
Context
,
packageName
:
String
)
:
Drawable
=
{
def
getAppIcon
(
c
:
Context
,
packageName
:
String
)
:
Drawable
=
{
val
pm
:
PackageManager
=
c
.
getPackageManager
val
pm
:
PackageManager
=
c
.
getPackageManager
val
icon
:
Drawable
=
c
.
getResources
.
getDrawable
(
android
.
R
.
drawable
.
sym_def_app_icon
)
val
icon
:
Drawable
=
ContextCompat
.
getDrawable
(
c
,
android
.
R
.
drawable
.
sym_def_app_icon
)
try
{
try
{
pm
.
getApplicationIcon
(
packageName
)
pm
.
getApplicationIcon
(
packageName
)
}
catch
{
}
catch
{
...
@@ -348,7 +349,7 @@ object Utils {
...
@@ -348,7 +349,7 @@ object Utils {
def
getAppIcon
(
c
:
Context
,
uid
:
Int
)
:
Drawable
=
{
def
getAppIcon
(
c
:
Context
,
uid
:
Int
)
:
Drawable
=
{
val
pm
:
PackageManager
=
c
.
getPackageManager
val
pm
:
PackageManager
=
c
.
getPackageManager
val
icon
:
Drawable
=
c
.
getResources
.
getDrawable
(
android
.
R
.
drawable
.
sym_def_app_icon
)
val
icon
:
Drawable
=
ContextCompat
.
getDrawable
(
c
,
android
.
R
.
drawable
.
sym_def_app_icon
)
val
packages
:
Array
[
String
]
=
pm
.
getPackagesForUid
(
uid
)
val
packages
:
Array
[
String
]
=
pm
.
getPackagesForUid
(
uid
)
if
(
packages
!=
null
)
{
if
(
packages
!=
null
)
{
if
(
packages
.
length
>=
1
)
{
if
(
packages
.
length
>=
1
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment