From 8a3a2d62db050a10bd064f990984d14897e9aa3c Mon Sep 17 00:00:00 2001 From: Page Asgardius Date: Sun, 22 Jan 2023 12:31:25 -0700 Subject: [PATCH] first step --- app/src/main/AndroidManifest.xml | 15 +++-- .../page/s3manager/BucketPolicy.java | 3 +- .../page/s3manager/BucketSelect.java | 4 +- .../asgardius/page/s3manager/CorsConfig.java | 3 +- .../page/s3manager/ObjectPolicy.java | 57 +++++++++++++++++++ .../page/s3manager/ObjectSelect.java | 18 ++++++ .../res/layout/activity_object_policy.xml | 54 ++++++++++++++++++ app/src/main/res/menu/folder_menu.xml | 4 ++ app/src/main/res/menu/object_menu.xml | 4 ++ 9 files changed, 150 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/asgardius/page/s3manager/ObjectPolicy.java create mode 100644 app/src/main/res/layout/activity_object_policy.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 05adcb0..8320717 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + package="asgardius.page.s3manager" > + tools:targetApi="31" > + + android:exported="false" > @@ -35,7 +38,7 @@ android:name=".Settings" android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|screenLayout|uiMode|keyboardHidden" android:exported="false" - android:label="@string/settings"> + android:label="@string/settings" > @@ -43,7 +46,7 @@ + android:exported="false" > @@ -105,7 +108,7 @@ + android:exported="true" > diff --git a/app/src/main/java/asgardius/page/s3manager/BucketPolicy.java b/app/src/main/java/asgardius/page/s3manager/BucketPolicy.java index 4e9e403..bd5797e 100644 --- a/app/src/main/java/asgardius/page/s3manager/BucketPolicy.java +++ b/app/src/main/java/asgardius/page/s3manager/BucketPolicy.java @@ -17,7 +17,7 @@ import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.S3ClientOptions; public class BucketPolicy extends AppCompatActivity { - String username, password, endpoint, bucket, location, title; + String username, password, endpoint, bucket, location; Region region; S3ClientOptions s3ClientOptions; AWSCredentials myCredentials; @@ -34,7 +34,6 @@ public class BucketPolicy extends AppCompatActivity { simpleProgressBar = (ProgressBar) findViewById(R.id.simpleProgressBar); permission = (TextView) findViewById(R.id.permission); endpoint = getIntent().getStringExtra("endpoint"); - title = getIntent().getStringExtra("title"); username = getIntent().getStringExtra("username"); password = getIntent().getStringExtra("password"); bucket = getIntent().getStringExtra("bucket"); diff --git a/app/src/main/java/asgardius/page/s3manager/BucketSelect.java b/app/src/main/java/asgardius/page/s3manager/BucketSelect.java index cb1e3e7..2da8bbc 100644 --- a/app/src/main/java/asgardius/page/s3manager/BucketSelect.java +++ b/app/src/main/java/asgardius/page/s3manager/BucketSelect.java @@ -190,7 +190,7 @@ public class BucketSelect extends AppCompatActivity { } else if (menuItem.getTitle() == getResources().getString(R.string.cors_config)) { corsConfig(Name.get(position).toString()); } 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)) { //Toast.makeText(BucketSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show(); delete(prefix + Name.get(position).toString()); @@ -390,7 +390,7 @@ public class BucketSelect extends AppCompatActivity { startActivity(intent); } - private void aclConfig(String bucket) { + private void policyConfig(String bucket) { Intent intent = new Intent(this, BucketPolicy.class); intent.putExtra("endpoint", endpoint); intent.putExtra("username", username); diff --git a/app/src/main/java/asgardius/page/s3manager/CorsConfig.java b/app/src/main/java/asgardius/page/s3manager/CorsConfig.java index 89f8dae..cba45f3 100644 --- a/app/src/main/java/asgardius/page/s3manager/CorsConfig.java +++ b/app/src/main/java/asgardius/page/s3manager/CorsConfig.java @@ -24,7 +24,7 @@ import java.util.ArrayList; import java.util.List; public class CorsConfig extends AppCompatActivity { - String username, password, endpoint, bucket, location, title; + String username, password, endpoint, bucket, location; URI pdfendpoint; Region region; S3ClientOptions s3ClientOptions; @@ -44,7 +44,6 @@ public class CorsConfig extends AppCompatActivity { setContentView(R.layout.activity_cors_config); simpleProgressBar = (ProgressBar) findViewById(R.id.simpleProgressBar); endpoint = getIntent().getStringExtra("endpoint"); - title = getIntent().getStringExtra("title"); username = getIntent().getStringExtra("username"); password = getIntent().getStringExtra("password"); bucket = getIntent().getStringExtra("bucket"); diff --git a/app/src/main/java/asgardius/page/s3manager/ObjectPolicy.java b/app/src/main/java/asgardius/page/s3manager/ObjectPolicy.java new file mode 100644 index 0000000..c822ef8 --- /dev/null +++ b/app/src/main/java/asgardius/page/s3manager/ObjectPolicy.java @@ -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); + } +} \ No newline at end of file diff --git a/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java b/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java index 1f335b2..cddd2fd 100644 --- a/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java +++ b/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java @@ -396,6 +396,8 @@ public class ObjectSelect extends AppCompatActivity { } else if (menuItem.getTitle() == getResources().getString(R.string.download_folder)) { //Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show(); 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)) { 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)) { @@ -428,6 +430,8 @@ public class ObjectSelect extends AppCompatActivity { if (menuItem.getTitle() == getResources().getString(R.string.download_file)) { //Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show(); 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)) { //Toast.makeText(ObjectSelect.this, getResources().getString(R.string.pending_feature), Toast.LENGTH_SHORT).show(); upload(false); @@ -732,6 +736,20 @@ public class ObjectSelect extends AppCompatActivity { 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) { ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); ClipData clip; diff --git a/app/src/main/res/layout/activity_object_policy.xml b/app/src/main/res/layout/activity_object_policy.xml new file mode 100644 index 0000000..9a954a6 --- /dev/null +++ b/app/src/main/res/layout/activity_object_policy.xml @@ -0,0 +1,54 @@ + + + + + + + + + +