From c34010680f92fe200ee19ac7a7fcaf127b471e16 Mon Sep 17 00:00:00 2001 From: Page Asgardius Date: Sat, 17 Sep 2022 12:35:34 -0700 Subject: [PATCH 1/2] pdf support via pdfjs --- .../asgardius/page/s3manager/ObjectSelect.java | 14 ++++++++++++++ .../asgardius/page/s3manager/WebBrowser.java | 12 ++++++++---- app/src/main/res/drawable/pdffile.png | Bin 0 -> 11584 bytes app/src/main/res/values/strings.xml | 1 + 4 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable/pdffile.png diff --git a/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java b/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java index 876487a..d8a4ed5 100644 --- a/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java +++ b/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java @@ -29,6 +29,7 @@ import com.amazonaws.services.s3.model.ObjectListing; import com.amazonaws.services.s3.model.S3ObjectSummary; import java.net.URL; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; @@ -132,6 +133,9 @@ public class ObjectSelect extends AppCompatActivity { else if (Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".txt") || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".md")) { Img.add(R.drawable.textfile); } + else if (Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".pdf")) { + Img.add(R.drawable.pdffile); + } else if (Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".jpg") || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".jpeg") || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".png") || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".gif")) { Img.add(R.drawable.imagefile); } @@ -219,6 +223,16 @@ public class ObjectSelect extends AppCompatActivity { } catch (Exception e) { Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show(); } + } else if (Img.get(position).equals(R.drawable.pdffile)) { + //load media file + try { + GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucket, prefix + Name.get(position).toString()); + URL objectURL = s3client.generatePresignedUrl(request); + //System.out.println(getResources().getString(R.string.pdf_reader)+ URLEncoder.encode(objectURL.toString(), "UTF-8" )); + webBrowser(getResources().getString(R.string.pdf_reader)+ URLEncoder.encode(objectURL.toString(), "UTF-8" ), Name.get(position).toString()); + } catch (Exception e) { + Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show(); + } } else if (Img.get(position).equals(R.drawable.audiofile) || Img.get(position).equals(R.drawable.videofile)) { //load media file try { diff --git a/app/src/main/java/asgardius/page/s3manager/WebBrowser.java b/app/src/main/java/asgardius/page/s3manager/WebBrowser.java index 773b341..a10afb4 100644 --- a/app/src/main/java/asgardius/page/s3manager/WebBrowser.java +++ b/app/src/main/java/asgardius/page/s3manager/WebBrowser.java @@ -3,12 +3,14 @@ package asgardius.page.s3manager; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; +import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class WebBrowser extends AppCompatActivity { - private WebView npw; + private WebView browser; + WebSettings webSettings; String webURL, pagetitle; @Override protected void onCreate(Bundle savedInstanceState) { @@ -19,9 +21,11 @@ public class WebBrowser extends AppCompatActivity { webURL = getIntent().getStringExtra("web_url"); pagetitle = getIntent().getStringExtra("title"); getSupportActionBar().setTitle(pagetitle); - npw =(WebView)findViewById(R.id.webview); - npw.setWebViewClient(new MyBrowser()); - npw.loadUrl(webURL); + browser =(WebView)findViewById(R.id.webview); + webSettings = browser.getSettings(); + webSettings.setJavaScriptEnabled(true); + browser.setWebViewClient(new MyBrowser()); + browser.loadUrl(webURL); } catch (Exception e) { e.printStackTrace(); finish(); diff --git a/app/src/main/res/drawable/pdffile.png b/app/src/main/res/drawable/pdffile.png new file mode 100644 index 0000000000000000000000000000000000000000..547b1240d0562996820d3f9f399c72a3705c869c GIT binary patch literal 11584 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 k6ZN?2b@2b~moP+U+WB)P@2-C8yS3 Manager .amazonaws.com https://object.asgardius.company + https://office.asgardius.company/pdfjs/web/viewer.html?file= google Account list Bucket list From 4f4bc3b52b90165c3b511702a54cc24cdfbbe902 Mon Sep 17 00:00:00 2001 From: Page Asgardius Date: Sat, 17 Sep 2022 15:40:26 -0700 Subject: [PATCH 2/2] set pdfjs endpoint selector --- .idea/deploymentTargetDropDown.xml | 17 +++++++++++ app/build.gradle | 4 +-- app/src/main/assets/about.htm | 3 ++ .../asgardius/page/s3manager/AccountAdd.java | 15 ++++++---- .../page/s3manager/BucketSelect.java | 4 ++- .../page/s3manager/MainActivity.java | 12 ++++++-- .../asgardius/page/s3manager/MyDbHelper.java | 6 ++-- .../page/s3manager/ObjectSelect.java | 13 +++++++-- .../main/res/layout/activity_account_add.xml | 28 +++++++++++++++++-- app/src/main/res/values-es/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 4 ++- 11 files changed, 90 insertions(+), 18 deletions(-) create mode 100644 .idea/deploymentTargetDropDown.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..ac93b0d --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index bd29643..5d43582 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "asgardius.page.s3manager" minSdk 24 targetSdk 33 - versionCode 11 - versionName "0.1.9" + versionCode 12 + versionName "0.1.10" setProperty("archivesBaseName", "s3-manager-$versionName") testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/assets/about.htm b/app/src/main/assets/about.htm index cd339d0..7ba4b90 100644 --- a/app/src/main/assets/about.htm +++ b/app/src/main/assets/about.htm @@ -12,10 +12,13 @@
  • Amazon Web Services SDK 2.53.0
  • ExoPlayer 2.18.1
  • Adwaita Icon Theme for GNOME 43
  • +
  • pdf.js
  • This software released under GNU General Public License 3

    You can find source code at https://patrice.asgardius.company/gitea/asgardius/s3manager
    + You need to setup a pdf.js server to use pdf viewer. Just download latest version from official website and upload to any web server with ssl on same root domain than S3 server (can be same subdomain or a different one). Then set url to pdfjs root folder like https://example.com/pdfjs-dist +
    You can find technical support on official forum https://forum.asgardius.company/t/s3-manager

    diff --git a/app/src/main/java/asgardius/page/s3manager/AccountAdd.java b/app/src/main/java/asgardius/page/s3manager/AccountAdd.java index 09b2d79..6c4de51 100644 --- a/app/src/main/java/asgardius/page/s3manager/AccountAdd.java +++ b/app/src/main/java/asgardius/page/s3manager/AccountAdd.java @@ -24,8 +24,8 @@ import java.util.ArrayList; import java.util.List; public class AccountAdd extends AppCompatActivity { - EditText aapick, aupick, appick, aepick, arpick; - String alias, username, password, endpoint, id, location; + EditText aapick, aupick, appick, aepick, arpick, pdfpick; + String alias, username, password, endpoint, id, location, pdfendpoint; AWSCredentials myCredentials; AmazonS3 s3client; Region region; @@ -36,6 +36,7 @@ public class AccountAdd extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_account_add); aapick = (EditText)findViewById(R.id.alias); + pdfpick = (EditText)findViewById(R.id.pdfendpoint); aepick = (EditText)findViewById(R.id.endpoint); arpick = (EditText)findViewById(R.id.region); aupick = (EditText)findViewById(R.id.username); @@ -51,12 +52,14 @@ public class AccountAdd extends AppCompatActivity { username = getIntent().getStringExtra("username"); password = getIntent().getStringExtra("password"); location = getIntent().getStringExtra("region"); + pdfendpoint = getIntent().getStringExtra("pdfendpoint"); aapick.setText(id); //aapick.setEnabled(false); aepick.setText(endpoint); aupick.setText(username); appick.setText(password); arpick.setText(location); + pdfpick.setText(pdfendpoint); } else{ getSupportActionBar().setTitle(getResources().getString(R.string.accountadd_button)); } @@ -68,6 +71,7 @@ public class AccountAdd extends AppCompatActivity { public void onClick(View view) { //buttonaction alias = aapick.getText().toString(); + pdfendpoint = pdfpick.getText().toString(); endpoint = aepick.getText().toString(); location = arpick.getText().toString(); username = aupick.getText().toString(); @@ -76,11 +80,12 @@ public class AccountAdd extends AppCompatActivity { if (alias.equals("") && endpoint.equals("") && username.equals(getResources().getString(R.string.access_key))) { endpoint = getResources().getString(R.string.endpoint_url); alias = "Google Test"; + pdfendpoint = getResources().getString(R.string.pdf_reader); } SQLiteDatabase db = dbHelper.getWritableDatabase(); if (alias.equals("") || endpoint.equals("") || username.equals("") || password.equals("")) { Toast.makeText(getApplicationContext(),getResources().getString(R.string.accountadd_null), Toast.LENGTH_SHORT).show(); - } else if (endpoint.startsWith("http://")) { + } else if (endpoint.startsWith("http://") || pdfendpoint.startsWith("http://")) { Toast.makeText(getApplicationContext(),getResources().getString(R.string.nosslwarning), Toast.LENGTH_SHORT).show(); } else if (!endpoint.startsWith("https://")) { Toast.makeText(getApplicationContext(),getResources().getString(R.string.invalid_url), Toast.LENGTH_SHORT).show(); @@ -91,10 +96,10 @@ public class AccountAdd extends AppCompatActivity { location = "us-east-1"; } if (edit) { - db.execSQL("UPDATE account SET id=\""+id+"\", endpoint=\""+endpoint+"\", username=\""+username+"\", password=\""+password+"\", region=\""+location+"\" WHERE id=\""+id+"\""); + db.execSQL("UPDATE account SET id=\""+id+"\", endpoint=\""+endpoint+"\", username=\""+username+"\", password=\""+password+"\", region=\""+location+"\", pdfendpoint=\""+pdfendpoint+"\" WHERE id=\""+id+"\""); Toast.makeText(getApplicationContext(),getResources().getString(R.string.accountsave_success), Toast.LENGTH_SHORT).show(); } else { - db.execSQL("INSERT INTO account VALUES (\""+alias+"\", \""+endpoint+"\", \""+username+"\", \""+password+"\", \""+location+"\")"); + db.execSQL("INSERT INTO account VALUES (\""+alias+"\", \""+endpoint+"\", \""+username+"\", \""+password+"\", \""+location+"\", \""+pdfendpoint+"\")"); Toast.makeText(getApplicationContext(),getResources().getString(R.string.accountadd_success), Toast.LENGTH_SHORT).show(); } mainmenu(); diff --git a/app/src/main/java/asgardius/page/s3manager/BucketSelect.java b/app/src/main/java/asgardius/page/s3manager/BucketSelect.java index b39a139..60e4e28 100644 --- a/app/src/main/java/asgardius/page/s3manager/BucketSelect.java +++ b/app/src/main/java/asgardius/page/s3manager/BucketSelect.java @@ -40,7 +40,7 @@ public class BucketSelect extends AppCompatActivity { ArrayList Name; ArrayList Img; RecyclerView recyclerView; - String username, password, endpoint, prefix, location, file; + String username, password, endpoint, prefix, location, file, pdfendpoint; int treelevel; Region region; S3ClientOptions s3ClientOptions; @@ -55,6 +55,7 @@ public class BucketSelect extends AppCompatActivity { username = getIntent().getStringExtra("username"); password = getIntent().getStringExtra("password"); location = getIntent().getStringExtra("region"); + pdfendpoint = getIntent().getStringExtra("pdfendpoint"); prefix = ""; setContentView(R.layout.activity_bucket_select); region = Region.getRegion("us-east-1"); @@ -189,6 +190,7 @@ public class BucketSelect extends AppCompatActivity { intent.putExtra("prefix", prefix); intent.putExtra("treelevel", treelevel); intent.putExtra("region", location); + intent.putExtra("pdfendpoint", pdfendpoint); startActivity(intent); } diff --git a/app/src/main/java/asgardius/page/s3manager/MainActivity.java b/app/src/main/java/asgardius/page/s3manager/MainActivity.java index c42b942..88b4664 100644 --- a/app/src/main/java/asgardius/page/s3manager/MainActivity.java +++ b/app/src/main/java/asgardius/page/s3manager/MainActivity.java @@ -21,7 +21,7 @@ import java.util.ArrayList; public class MainActivity extends AppCompatActivity { static boolean DEFAULT_PATH_STYLE_ACCESS = true; - String alias, username, password, endpoint, location; + String alias, username, password, endpoint, location, pdfendpoint; RecyclerView recyclerView; SQLiteDatabase db; ArrayList Name; @@ -98,18 +98,20 @@ public class MainActivity extends AppCompatActivity { if (db != null) { // Database Queries try { - String query = "SELECT endpoint, username, password, region FROM account where id=\""+ Name.get(position).toString()+ "\""; + String query = "SELECT endpoint, username, password, region, pdfendpoint FROM account where id=\""+ Name.get(position).toString()+ "\""; Cursor cursor = db.rawQuery(query,null); if (cursor.moveToNext()){ endpoint = cursor.getString(0); username = cursor.getString(1); password = cursor.getString(2); location = cursor.getString(3); + pdfendpoint = cursor.getString(4); db.close(); explorer(); } } catch (Exception e) { e.printStackTrace(); + db.execSQL("ALTER TABLE account add column pdfendpoint text"); } } @@ -131,7 +133,7 @@ public class MainActivity extends AppCompatActivity { if (menuItem.getTitle() == getResources().getString(R.string.accountedit_button)) { try { db = dbHelper.getWritableDatabase(); - String query = "SELECT id, endpoint, username, password, region FROM account where id=\""+ Name.get(position).toString()+ "\""; + String query = "SELECT id, endpoint, username, password, region, pdfendpoint FROM account where id=\""+ Name.get(position).toString()+ "\""; System.out.println(query); Cursor cursor = db.rawQuery(query,null); if (cursor.moveToNext()){ @@ -140,12 +142,14 @@ public class MainActivity extends AppCompatActivity { username = cursor.getString(2); password = cursor.getString(3); location = cursor.getString(4); + pdfendpoint = cursor.getString(5); } db.close(); addaccount(true); //Toast.makeText(MainActivity.this, "This feature is not yet implemented", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); + db.execSQL("ALTER TABLE account add column pdfendpoint text"); } } else if (menuItem.getTitle() == getResources().getString(R.string.accountdel_button)) { @@ -218,6 +222,7 @@ public class MainActivity extends AppCompatActivity { intent.putExtra("username", username); intent.putExtra("password", password); intent.putExtra("region", location); + intent.putExtra("pdfendpoint", pdfendpoint); startActivity(intent); } @@ -231,6 +236,7 @@ public class MainActivity extends AppCompatActivity { intent.putExtra("username", username); intent.putExtra("password", password); intent.putExtra("region", location); + intent.putExtra("pdfendpoint", pdfendpoint); } intent.putExtra("edit", edit); startActivity(intent); diff --git a/app/src/main/java/asgardius/page/s3manager/MyDbHelper.java b/app/src/main/java/asgardius/page/s3manager/MyDbHelper.java index 34d144f..0674507 100644 --- a/app/src/main/java/asgardius/page/s3manager/MyDbHelper.java +++ b/app/src/main/java/asgardius/page/s3manager/MyDbHelper.java @@ -5,7 +5,9 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class MyDbHelper extends SQLiteOpenHelper { - private static final String atcreate = "CREATE TABLE IF NOT EXISTS account(id text UNIQUE, endpoint text, username text, password text, region text)"; + private static final String atcreate = "CREATE TABLE IF NOT EXISTS account(id text UNIQUE, endpoint text, username text, password text, region text, pdfendpoint text)"; + private static final String atupgrade = "ALTER TABLE account add column pdfendpoint text"; + private static final int DATABASE_VERSION = 1; private static final String dbname = "accounts.sqlite3"; private static final int dbversion = 3; public MyDbHelper(Context context) { @@ -17,6 +19,6 @@ public class MyDbHelper extends SQLiteOpenHelper { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - + db.execSQL(atupgrade); } } diff --git a/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java b/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java index d8a4ed5..f3b53f2 100644 --- a/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java +++ b/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java @@ -41,7 +41,7 @@ public class ObjectSelect extends AppCompatActivity { ArrayList Img; //ArrayList object; RecyclerView recyclerView; - String username, password, endpoint, bucket, prefix, location; + String username, password, endpoint, bucket, prefix, location, pdfendpoint; int treelevel; String[] filename; Region region; @@ -58,6 +58,7 @@ public class ObjectSelect extends AppCompatActivity { password = getIntent().getStringExtra("password"); bucket = getIntent().getStringExtra("bucket"); location = getIntent().getStringExtra("region"); + pdfendpoint = getIntent().getStringExtra("pdfendpoint"); prefix = getIntent().getStringExtra("prefix"); treelevel = getIntent().getIntExtra("treelevel", 0); setContentView(R.layout.activity_object_select); @@ -229,7 +230,14 @@ public class ObjectSelect extends AppCompatActivity { GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucket, prefix + Name.get(position).toString()); URL objectURL = s3client.generatePresignedUrl(request); //System.out.println(getResources().getString(R.string.pdf_reader)+ URLEncoder.encode(objectURL.toString(), "UTF-8" )); - webBrowser(getResources().getString(R.string.pdf_reader)+ URLEncoder.encode(objectURL.toString(), "UTF-8" ), Name.get(position).toString()); + if (pdfendpoint == null) { + Toast.makeText(getApplicationContext(),getResources().getString(R.string.pdf_reader_notready), Toast.LENGTH_SHORT).show(); + } else if (pdfendpoint.endsWith("/")) { + webBrowser(pdfendpoint + "web/viewer.html?file=" + URLEncoder.encode(objectURL.toString(), "UTF-8" ), Name.get(position).toString()); + } else { + webBrowser(pdfendpoint + "/web/viewer.html?file=" + URLEncoder.encode(objectURL.toString(), "UTF-8" ), Name.get(position).toString()); + } + } catch (Exception e) { Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show(); } @@ -364,6 +372,7 @@ public class ObjectSelect extends AppCompatActivity { intent.putExtra("prefix", prefix + object); intent.putExtra("treelevel", treelevel+1); intent.putExtra("region", location); + intent.putExtra("pdfendpoint", pdfendpoint); startActivity(intent); } diff --git a/app/src/main/res/layout/activity_account_add.xml b/app/src/main/res/layout/activity_account_add.xml index f4d3e41..a25b90f 100644 --- a/app/src/main/res/layout/activity_account_add.xml +++ b/app/src/main/res/layout/activity_account_add.xml @@ -7,10 +7,20 @@ android:orientation="vertical" tools:context=".AccountAdd"> - + + + + + + Acerca de esta app Botón de prueba Contenido de prueba + servidor pdfjs + Necesita configurar un servidor pdf.js \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5ec1172..bc82eb8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,7 +2,8 @@ S3 Manager .amazonaws.com https://object.asgardius.company - https://office.asgardius.company/pdfjs/web/viewer.html?file= + https://office.asgardius.company/pdfjs + You need to setup a pdf.js server google Account list Bucket list @@ -46,6 +47,7 @@ Test credentials Credentials are correct Account Alias + pdfjs server S3 Endpoint URL S3 Region S3 Access Key