Skip to content

Commit

Permalink
Merge branch 'bepass-org:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
DanielcoderX authored Mar 3, 2024
2 parents 0227e4d + c5da263 commit 8502f3f
Show file tree
Hide file tree
Showing 6 changed files with 148 additions and 34 deletions.
13 changes: 5 additions & 8 deletions app/src/main/java/org/bepass/oblivion/CountryUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,18 @@
import java.util.Locale;

public class CountryUtils {

public static String getCountryCode(String name) {
for (String code : Locale.getISOCountries()) {
Locale locale = new Locale("", code);
if (locale.getDisplayCountry().equalsIgnoreCase(name)) {
Locale locale = new Locale("en", code); // Set the language to English
if (locale.getDisplayCountry(Locale.ENGLISH).equalsIgnoreCase(name)) {
return code;
}
}

return "";
}

public static String getCountryName(String code) {
Locale locale = new Locale("", code);
return locale.getDisplayCountry();
Locale locale = new Locale("en", code); // Set the language to English
return locale.getDisplayCountry(Locale.ENGLISH);
}

}
}
10 changes: 10 additions & 0 deletions app/src/main/java/org/bepass/oblivion/IPDetails.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.bepass.oblivion;

public class IPDetails {

public String ip;
public String country;
public String city;
public String flag;

}
30 changes: 22 additions & 8 deletions app/src/main/java/org/bepass/oblivion/MainActivity.java
Original file line number Diff line number Diff line change
@@ -1,31 +1,27 @@
package org.bepass.oblivion;

import android.Manifest;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Messenger;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;

import com.suke.widget.SwitchButton;

public class MainActivity extends ConnectionAwareBaseActivity {
// Views
ImageView infoIcon, bugIcon, settingsIcon;
TouchAwareSwitch switchButton;
TextView stateText;
TextView stateText, publicIP;
ProgressBar ipProgressBar;
FileManager fileManager;
Boolean canShowNotification = false;
private ActivityResultLauncher<String> pushNotificationPermissionLauncher;
Expand Down Expand Up @@ -92,18 +88,34 @@ private void updateUi() {
}
}

private void getIPDetails() {
ipProgressBar.setVisibility(View.VISIBLE);
int port = Integer.parseInt(fileManager.getString("USERSETTING_port"));
PublicIPUtils.getIPDetails(port, (details) -> {
ipProgressBar.setVisibility(View.GONE);
if (details.ip != null && details.flag != null){
String ipString = details.ip + " " + details.flag;
publicIP.setText(ipString);
publicIP.setVisibility(View.VISIBLE);
}
});
}

private void connected() {
stateText.setText("اتصال برقرار شد");
switchButton.setChecked(true, false);
getIPDetails();
}

private void connecting() {
stateText.setText("در حال اتصال...");
publicIP.setVisibility(View.GONE);
switchButton.setChecked(true, false);
}

private void disconnected() {
stateText.setText("متصل نیستید");
publicIP.setVisibility(View.GONE);
switchButton.setChecked(false, false);
}

Expand Down Expand Up @@ -151,6 +163,8 @@ private void init() {

switchButton = findViewById(R.id.switch_button);
stateText = findViewById(R.id.state_text);
publicIP = findViewById(R.id.publicIP);
ipProgressBar = (ProgressBar)findViewById(R.id.ipProgressBar);

infoIcon.setOnClickListener(v -> startActivity(new Intent(MainActivity.this, InfoActivity.class)));
bugIcon.setOnClickListener(v -> startActivity(new Intent(MainActivity.this, BugActivity.class)));
Expand Down
11 changes: 4 additions & 7 deletions app/src/main/java/org/bepass/oblivion/OblivionVpnService.java
Original file line number Diff line number Diff line change
Expand Up @@ -419,20 +419,17 @@ public void setLastKnownState(ConnectionState lastKnownState) {
}

private String getNotificationText() {

boolean usePsiphon = fileManager.getBoolean("USERSETTING_psiphon");
boolean useWarp = fileManager.getBoolean("USERSETTING_gool");

if (usePsiphon) {
String countryCode = fileManager.getString("USERSETTING_country");
String countryName = "".equals(countryCode) ? "Automatic" : CountryUtils.getCountryName(countryCode);
return "Psiphon (" + countryName + ") in Warp";

return "Psiphon in Warp";
} else if (useWarp) {
return "Warp in Warp";

} else {
return "Warp";
}
return "Warp";

}

private void createNotification() {
Expand Down
69 changes: 69 additions & 0 deletions app/src/main/java/org/bepass/oblivion/PublicIPUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package org.bepass.oblivion;

import android.os.Handler;
import android.util.Log;

import org.json.JSONObject;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;

public class PublicIPUtils {

public interface IPDetailsCallback {
void onDetailsReceived(IPDetails details);
}

public static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();

String line;
try {
while ((line = reader.readLine()) != null) {
sb.append(line).append('\n');
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}

return sb.toString();
}

public static void getIPDetails(int port, IPDetailsCallback callback) {
Handler handler = new Handler();
new Thread(() -> {
IPDetails details = new IPDetails();
try {
Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1", port));
URL url = new URL("https://ipwho.is/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
InputStream in = new BufferedInputStream(connection.getInputStream());
String response = convertStreamToString(in);
JSONObject jsonData = new JSONObject(response);
JSONObject flag = jsonData.getJSONObject("flag");
details.ip = jsonData.getString("ip");
details.country = jsonData.getString("country");
details.city = jsonData.getString("city");
details.flag = flag.getString("emoji");
} catch (Exception e) {
Log.i("VPN", "Failed to get details", e);
}
handler.post(() -> callback.onDetailsReceived(details));
}).start();
}

}
49 changes: 38 additions & 11 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,17 +82,44 @@
app:sb_show_indicator="false" />

<TextView
android:id="@+id/state_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="96dp"
android:fontFamily="@font/shabnammedium"
android:text="متصل نیستید"
android:textColor="@color/black"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/switch_button" />
android:id="@+id/state_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="96dp"
android:fontFamily="@font/shabnammedium"
android:text="متصل نیستید"
android:textColor="@color/black"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/switch_button" />

<TextView
android:id="@+id/publicIP"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:fontFamily="@font/shabnammedium"
android:visibility="invisible"
android:text="Public IP"
android:textColor="@color/black"
android:textSize="18sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/state_text" />

<ProgressBar
android:id="@+id/ipProgressBar"
android:layout_marginTop="24dp"
android:visibility="invisible"
android:layout_width="36dp"
android:layout_height="wrap_content"
android:indeterminate="true"
android:indeterminateTint="#FFA200"
android:layout_centerHorizontal="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/state_text"/>

<TextView
android:id="@+id/app_name_1"
Expand Down

0 comments on commit 8502f3f

Please sign in to comment.