Debug: authentication

pull/215/head
M66B 7 months ago
parent 841b46c5a2
commit 684428944f

@ -66,8 +66,10 @@ import java.io.FileOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.text.DateFormat; import java.text.DateFormat;
import java.util.List;
import java.util.Properties; import java.util.Properties;
import javax.mail.Address;
import javax.mail.Flags; import javax.mail.Flags;
import javax.mail.Folder; import javax.mail.Folder;
import javax.mail.Message; import javax.mail.Message;
@ -88,8 +90,10 @@ public class ActivityEML extends ActivityBase {
private TextView tvBody; private TextView tvBody;
private TextView tvStructure; private TextView tvStructure;
private ImageButton ibEml; private ImageButton ibEml;
private CardView cardStructure;
private CardView cardHeaders; private CardView cardHeaders;
private TextView tvHeaders; private TextView tvHeaders;
private TextView tvAuthentication;
private ContentLoadingProgressBar pbWait; private ContentLoadingProgressBar pbWait;
private Group grpReady; private Group grpReady;
@ -128,8 +132,10 @@ public class ActivityEML extends ActivityBase {
tvBody = findViewById(R.id.tvBody); tvBody = findViewById(R.id.tvBody);
tvStructure = findViewById(R.id.tvStructure); tvStructure = findViewById(R.id.tvStructure);
ibEml = findViewById(R.id.ibEml); ibEml = findViewById(R.id.ibEml);
cardStructure = findViewById(R.id.cardStructure);
cardHeaders = findViewById(R.id.cardHeaders); cardHeaders = findViewById(R.id.cardHeaders);
tvHeaders = findViewById(R.id.tvHeaders); tvHeaders = findViewById(R.id.tvHeaders);
tvAuthentication = findViewById(R.id.tvAuthentication);
pbWait = findViewById(R.id.pbWait); pbWait = findViewById(R.id.pbWait);
grpReady = findViewById(R.id.grpReady); grpReady = findViewById(R.id.grpReady);
@ -209,6 +215,7 @@ public class ActivityEML extends ActivityBase {
// Initialize // Initialize
vSeparatorAttachments.setVisibility(View.GONE); vSeparatorAttachments.setVisibility(View.GONE);
grpReady.setVisibility(View.GONE); grpReady.setVisibility(View.GONE);
cardStructure.setVisibility(View.GONE);
cardHeaders.setVisibility(View.GONE); cardHeaders.setVisibility(View.GONE);
load(); load();
@ -232,8 +239,12 @@ public class ActivityEML extends ActivityBase {
uri = getIntent().getData(); uri = getIntent().getData();
Log.i("EML uri=" + uri); Log.i("EML uri=" + uri);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean debug = prefs.getBoolean("debug", false);
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putParcelable("uri", uri); args.putParcelable("uri", uri);
args.putBoolean("debug", debug || BuildConfig.DEBUG);
new SimpleTask<Result>() { new SimpleTask<Result>() {
@Override @Override
@ -249,6 +260,7 @@ public class ActivityEML extends ActivityBase {
@Override @Override
protected Result onExecute(Context context, Bundle args) throws Throwable { protected Result onExecute(Context context, Bundle args) throws Throwable {
Uri uri = args.getParcelable("uri"); Uri uri = args.getParcelable("uri");
boolean debug = args.getBoolean("debug");
NoStreamException.check(uri, context); NoStreamException.check(uri, context);
@ -321,17 +333,50 @@ public class ActivityEML extends ActivityBase {
}, null); }, null);
} }
int textColorLink = Helper.resolveColor(context, android.R.attr.textColorLink); if (debug) {
SpannableStringBuilder ssb = new SpannableStringBuilderEx(); int textColorLink = Helper.resolveColor(context, android.R.attr.textColorLink);
MessageHelper.getStructure(imessage, ssb, 0, textColorLink); SpannableStringBuilder ssb = new SpannableStringBuilderEx();
result.structure = ssb; MessageHelper.getStructure(imessage, ssb, 0, textColorLink);
result.structure = ssb;
result.headers = HtmlHelper.highlightHeaders(context,
helper.getFrom(), result.headers = HtmlHelper.highlightHeaders(context,
helper.getTo(), helper.getFrom(),
helper.getReceivedHeader(), helper.getTo(),
helper.getHeaders(), helper.getReceivedHeader(),
false, false); helper.getHeaders(),
false, false);
ssb = new SpannableStringBuilderEx();
String[] authentication = helper.getAuthentication();
Boolean tls = helper.getTLS();
Boolean dkim = MessageHelper.getAuthentication("dkim", authentication);
Boolean spf = MessageHelper.getAuthentication("spf", authentication);
if (spf == null)
spf = helper.getSPF();
Boolean dmarc = MessageHelper.getAuthentication("dmarc", authentication);
Boolean auth = MessageHelper.getAuthentication("auth", authentication);
List<String> signers = helper.verifyDKIM(context);
boolean aligned = helper.isAligned(context, signers,
helper.getReturnPath(), helper.getMailFrom(authentication), helper.getFrom());
ssb.append("TLS: ").append(tls == null ? "-" : (tls ? "✓" : "✗")).append('\n');
ssb.append("DKIM: ").append(dkim == null ? "-" : (dkim ? "✓" : "✗")).append('\n');
ssb.append("SPF: ").append(spf == null ? "-" : (spf ? "✓" : "✗")).append('\n');
ssb.append("DMARC: ").append(dmarc == null ? "-" : (dmarc ? "✓" : "✗")).append('\n');
ssb.append("AUTH: ").append(auth == null ? "-" : (auth ? "✓" : "✗")).append('\n');
ssb.append('\n');
ssb.append("Signers: ").append('\n');
for (String signer : signers)
ssb.append("- ").append(signer).append('\n');
ssb.append('\n');
ssb.append("Aligned: ").append(Boolean.toString(aligned)).append('\n');
result.authentication = ssb;
}
return result; return result;
} }
@ -411,10 +456,15 @@ public class ActivityEML extends ActivityBase {
rvAttachment.setAdapter(adapter); rvAttachment.setAdapter(adapter);
tvBody.setText(result.body); tvBody.setText(result.body);
grpReady.setVisibility(View.VISIBLE);
tvStructure.setText(result.structure); tvStructure.setText(result.structure);
tvHeaders.setText(result.headers); tvHeaders.setText(result.headers);
grpReady.setVisibility(View.VISIBLE); tvAuthentication.setText(result.authentication);
cardHeaders.setVisibility(BuildConfig.DEBUG ? View.VISIBLE : View.GONE);
boolean debug = args.getBoolean("debug");
cardStructure.setVisibility(debug ? View.VISIBLE : View.GONE);
cardHeaders.setVisibility(debug ? View.VISIBLE : View.GONE);
} }
@Override @Override
@ -672,5 +722,6 @@ public class ActivityEML extends ActivityBase {
Spanned body; Spanned body;
Spanned structure; Spanned structure;
Spanned headers; Spanned headers;
Spanned authentication;
} }
} }

@ -283,9 +283,7 @@
android:id="@+id/tvStructure" android:id="@+id/tvStructure"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:fontFamily="monospace" android:fontFamily="monospace"
android:minHeight="30dp"
android:text="Structure" android:text="Structure"
android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textIsSelectable="true" android:textIsSelectable="true"
@ -329,15 +327,26 @@
android:id="@+id/tvHeaders" android:id="@+id/tvHeaders"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:fontFamily="monospace" android:fontFamily="monospace"
android:minHeight="30dp"
android:text="Headers" android:text="Headers"
android:textAppearance="@style/TextAppearance.AppCompat.Small" android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textIsSelectable="true" android:textIsSelectable="true"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tvAuthentication"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:fontFamily="monospace"
android:text="Authentication"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textIsSelectable="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvHeaders" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>

Loading…
Cancel
Save