first step

This commit is contained in:
Page Asgardius 2023-01-22 12:31:25 -07:00
parent b76890e320
commit 8a3a2d62db
9 changed files with 150 additions and 12 deletions

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
package="asgardius.page.s3manager"> package="asgardius.page.s3manager" >
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission <uses-permission
@ -19,14 +19,17 @@
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.AsgardiusS3Manager" android:theme="@style/Theme.AsgardiusS3Manager"
tools:targetApi="31"> tools:targetApi="31" >
<activity
android:name=".ObjectPolicy"
android:exported="false" />
<activity <activity
android:name=".BucketPolicy" android:name=".BucketPolicy"
android:exported="false" /> android:exported="false" />
<activity <activity
android:name=".CorsConfig" android:name=".CorsConfig"
android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|screenLayout|uiMode|keyboardHidden" android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|screenLayout|uiMode|keyboardHidden"
android:exported="false"> android:exported="false" >
<meta-data <meta-data
android:name="android.app.lib_name" android:name="android.app.lib_name"
android:value="" /> android:value="" />
@ -35,7 +38,7 @@
android:name=".Settings" android:name=".Settings"
android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|screenLayout|uiMode|keyboardHidden" android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|screenLayout|uiMode|keyboardHidden"
android:exported="false" android:exported="false"
android:label="@string/settings"> android:label="@string/settings" >
<meta-data <meta-data
android:name="android.app.lib_name" android:name="android.app.lib_name"
android:value="" /> android:value="" />
@ -43,7 +46,7 @@
<activity <activity
android:name=".ObjectInfo" android:name=".ObjectInfo"
android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|screenLayout|uiMode|keyboardHidden" android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|screenLayout|uiMode|keyboardHidden"
android:exported="false"> android:exported="false" >
<meta-data <meta-data
android:name="android.app.lib_name" android:name="android.app.lib_name"
android:value="" /> android:value="" />
@ -105,7 +108,7 @@
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|screenLayout|uiMode|keyboardHidden" android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|screenLayout|uiMode|keyboardHidden"
android:exported="true"> android:exported="true" >
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

View file

@ -17,7 +17,7 @@ import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.S3ClientOptions; import com.amazonaws.services.s3.S3ClientOptions;
public class BucketPolicy extends AppCompatActivity { public class BucketPolicy extends AppCompatActivity {
String username, password, endpoint, bucket, location, title; String username, password, endpoint, bucket, location;
Region region; Region region;
S3ClientOptions s3ClientOptions; S3ClientOptions s3ClientOptions;
AWSCredentials myCredentials; AWSCredentials myCredentials;
@ -34,7 +34,6 @@ public class BucketPolicy extends AppCompatActivity {
simpleProgressBar = (ProgressBar) findViewById(R.id.simpleProgressBar); simpleProgressBar = (ProgressBar) findViewById(R.id.simpleProgressBar);
permission = (TextView) findViewById(R.id.permission); permission = (TextView) findViewById(R.id.permission);
endpoint = getIntent().getStringExtra("endpoint"); endpoint = getIntent().getStringExtra("endpoint");
title = getIntent().getStringExtra("title");
username = getIntent().getStringExtra("username"); username = getIntent().getStringExtra("username");
password = getIntent().getStringExtra("password"); password = getIntent().getStringExtra("password");
bucket = getIntent().getStringExtra("bucket"); bucket = getIntent().getStringExtra("bucket");

View file

@ -190,7 +190,7 @@ public class BucketSelect extends AppCompatActivity {
} else if (menuItem.getTitle() == getResources().getString(R.string.cors_config)) { } else if (menuItem.getTitle() == getResources().getString(R.string.cors_config)) {
corsConfig(Name.get(position).toString()); corsConfig(Name.get(position).toString());
} else if (menuItem.getTitle() == getResources().getString(R.string.bucket_policy)) { } else if (menuItem.getTitle() == getResources().getString(R.string.bucket_policy)) {
aclConfig(Name.get(position).toString()); policyConfig(Name.get(position).toString());
} else if (menuItem.getTitle() == getResources().getString(R.string.file_del)) { } else if (menuItem.getTitle() == getResources().getString(R.string.file_del)) {
//Toast.makeText(BucketSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show(); //Toast.makeText(BucketSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show();
delete(prefix + Name.get(position).toString()); delete(prefix + Name.get(position).toString());
@ -390,7 +390,7 @@ public class BucketSelect extends AppCompatActivity {
startActivity(intent); startActivity(intent);
} }
private void aclConfig(String bucket) { private void policyConfig(String bucket) {
Intent intent = new Intent(this, BucketPolicy.class); Intent intent = new Intent(this, BucketPolicy.class);
intent.putExtra("endpoint", endpoint); intent.putExtra("endpoint", endpoint);
intent.putExtra("username", username); intent.putExtra("username", username);

View file

@ -24,7 +24,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class CorsConfig extends AppCompatActivity { public class CorsConfig extends AppCompatActivity {
String username, password, endpoint, bucket, location, title; String username, password, endpoint, bucket, location;
URI pdfendpoint; URI pdfendpoint;
Region region; Region region;
S3ClientOptions s3ClientOptions; S3ClientOptions s3ClientOptions;
@ -44,7 +44,6 @@ public class CorsConfig extends AppCompatActivity {
setContentView(R.layout.activity_cors_config); setContentView(R.layout.activity_cors_config);
simpleProgressBar = (ProgressBar) findViewById(R.id.simpleProgressBar); simpleProgressBar = (ProgressBar) findViewById(R.id.simpleProgressBar);
endpoint = getIntent().getStringExtra("endpoint"); endpoint = getIntent().getStringExtra("endpoint");
title = getIntent().getStringExtra("title");
username = getIntent().getStringExtra("username"); username = getIntent().getStringExtra("username");
password = getIntent().getStringExtra("password"); password = getIntent().getStringExtra("password");
bucket = getIntent().getStringExtra("bucket"); bucket = getIntent().getStringExtra("bucket");

View file

@ -0,0 +1,57 @@
package asgardius.page.s3manager;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Region;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.S3ClientOptions;
public class ObjectPolicy extends AppCompatActivity {
String username, password, endpoint, bucket, location, filename, title;
Region region;
S3ClientOptions s3ClientOptions;
AWSCredentials myCredentials;
AmazonS3 s3client;
boolean style;
ProgressBar simpleProgressBar;
TextView permission;
Button setpublic, setprivate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_object_policy);
simpleProgressBar = (ProgressBar) findViewById(R.id.simpleProgressBar);
permission = (TextView) findViewById(R.id.permission);
endpoint = getIntent().getStringExtra("endpoint");
filename = getIntent().getStringExtra("filename");
username = getIntent().getStringExtra("username");
password = getIntent().getStringExtra("password");
bucket = getIntent().getStringExtra("bucket");
title = getIntent().getStringExtra("title");
style = getIntent().getBooleanExtra("style", false);
location = getIntent().getStringExtra("region");
getSupportActionBar().setTitle(title);
region = Region.getRegion(location);
s3ClientOptions = S3ClientOptions.builder().build();
myCredentials = new BasicAWSCredentials(username, password);
try {
s3client = new AmazonS3Client(myCredentials, region);
} catch (Exception e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
s3client.setEndpoint(endpoint);
s3ClientOptions.setPathStyleAccess(style);
s3client.setS3ClientOptions(s3ClientOptions);
setprivate = (Button)findViewById(R.id.set_private);
setpublic = (Button)findViewById(R.id.set_public);
}
}

View file

@ -396,6 +396,8 @@ public class ObjectSelect extends AppCompatActivity {
} else if (menuItem.getTitle() == getResources().getString(R.string.download_folder)) { } else if (menuItem.getTitle() == getResources().getString(R.string.download_folder)) {
//Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show(); //Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show();
download(Name.get(position).toString(), true); download(Name.get(position).toString(), true);
} else if (menuItem.getTitle() == getResources().getString(R.string.bucket_policy)) {
policyConfig(prefix + Name.get(position).toString(), Name.get(position).toString());
} else if (menuItem.getTitle() == getResources().getString(R.string.create_link)) { } else if (menuItem.getTitle() == getResources().getString(R.string.create_link)) {
share( Name.get(position).toString(), Img.get(position).equals(R.drawable.audiofile) || Img.get(position).equals(R.drawable.videofile)); share( Name.get(position).toString(), Img.get(position).equals(R.drawable.audiofile) || Img.get(position).equals(R.drawable.videofile));
} else if (menuItem.getTitle() == getResources().getString(R.string.object_info)) { } else if (menuItem.getTitle() == getResources().getString(R.string.object_info)) {
@ -428,6 +430,8 @@ public class ObjectSelect extends AppCompatActivity {
if (menuItem.getTitle() == getResources().getString(R.string.download_file)) { if (menuItem.getTitle() == getResources().getString(R.string.download_file)) {
//Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show(); //Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show();
download(Name.get(position).toString(), false); download(Name.get(position).toString(), false);
} else if (menuItem.getTitle() == getResources().getString(R.string.bucket_policy)) {
policyConfig(prefix + Name.get(position).toString(), Name.get(position).toString());
} else if (menuItem.getTitle() == getResources().getString(R.string.upload_file_here)) { } else if (menuItem.getTitle() == getResources().getString(R.string.upload_file_here)) {
//Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show(); //Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show();
upload(false); upload(false);
@ -732,6 +736,20 @@ public class ObjectSelect extends AppCompatActivity {
startActivity(intent); startActivity(intent);
} }
private void policyConfig(String filename, String title) {
Intent intent = new Intent(this, ObjectPolicy.class);
intent.putExtra("endpoint", endpoint);
intent.putExtra("username", username);
intent.putExtra("password", password);
intent.putExtra("bucket", bucket);
intent.putExtra("filename", filename);
intent.putExtra("region", location);
intent.putExtra("style", style);
intent.putExtra("title", title);
intent.putExtra("pdfendpoint", pdfendpoint);
startActivity(intent);
}
public void copyName (String name) { public void copyName (String name) {
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip; ClipData clip;

View file

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ObjectPolicy">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/permission"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:textSize="25sp"/>
<Button
android:id="@+id/set_public"
android:layout_width="match_parent"
android:layout_height="70dp"
android:text="@string/set_public_bucket"
android:visibility="gone" />
<Button
android:id="@+id/set_private"
android:layout_width="match_parent"
android:layout_height="70dp"
android:text="@string/set_private_bucket"
android:visibility="gone" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<ProgressBar
android:id="@+id/simpleProgressBar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:max="100"
android:progress="50"
android:padding="20dp"
tools:ignore="MissingConstraints"
android:indeterminate="true" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -25,6 +25,10 @@
android:id="@+id/copy_name" android:id="@+id/copy_name"
android:title="@string/copy_name" /> android:title="@string/copy_name" />
<item
android:id="@+id/acl_config"
android:title="@string/bucket_policy" />
<item <item
android:id="@+id/deletefolder" android:id="@+id/deletefolder"
android:title="@string/file_del" /> android:title="@string/file_del" />

View file

@ -25,6 +25,10 @@
android:id="@+id/copy_name" android:id="@+id/copy_name"
android:title="@string/copy_name" /> android:title="@string/copy_name" />
<item
android:id="@+id/acl_config"
android:title="@string/bucket_policy" />
<item <item
android:id="@+id/deletefile" android:id="@+id/deletefile"
android:title="@string/file_del" /> android:title="@string/file_del" />