タンス情報カラムにTLS Handshakeを表示

This commit is contained in:
tateisu 2018-12-07 09:50:11 +09:00
parent 365485cf91
commit 898d31c522
9 changed files with 54 additions and 40 deletions

View File

@ -18,6 +18,7 @@ import jp.juggler.subwaytooter.util.BucketList
import jp.juggler.subwaytooter.util.ScrollPosition
import jp.juggler.subwaytooter.util.WordTrieTree
import jp.juggler.util.*
import okhttp3.Handshake
import org.json.JSONArray
import org.json.JSONException
import org.json.JSONObject
@ -617,6 +618,7 @@ class Column(
// 「インスタンス情報」カラムに表示するインスタンス情報
// (SavedAccount中のインスタンス情報とは異なるので注意)
internal var instance_information : TootInstance? = null
internal var handshake : Handshake? = null
internal var scroll_save : ScrollPosition? = null
private var last_viewing_item_id : EntityId? = null
@ -3222,6 +3224,7 @@ class Column(
result = getInstanceInformation(client, instance_uri)
if(instance_tmp != null) {
instance_information = instance_tmp
handshake = result?.response?.handshake()
}
return result
}

View File

@ -37,6 +37,9 @@ internal class ViewHolderHeaderInstance(
private val ivThumbnail : MyNetworkImageView
private val btnContact : TextView
private val tvLanguages : TextView
private val tvHandshake : TextView
private var instance : TootInstance? = null
init {
@ -60,7 +63,7 @@ internal class ViewHolderHeaderInstance(
ivThumbnail = viewRoot.findViewById(R.id.ivThumbnail)
btnContact = viewRoot.findViewById(R.id.btnContact)
tvLanguages = viewRoot.findViewById(R.id.tvLanguages)
tvHandshake= viewRoot.findViewById(R.id.tvHandshake)
btnInstance.setOnClickListener(this)
btnEmail.setOnClickListener(this)
@ -77,6 +80,7 @@ internal class ViewHolderHeaderInstance(
override fun bindData(column : Column) {
super.bindData(column)
val instance = column.instance_information
val handshake = column.handshake
this.instance = instance
if(instance == null) {
@ -102,7 +106,8 @@ internal class ViewHolderHeaderInstance(
btnEmail.text = email
btnEmail.isEnabled = email.isNotEmpty()
val contact_acct = instance.contact_account?.let{ who -> "@"+who.username +"@"+ who.host} ?: ""
val contact_acct =
instance.contact_account?.let { who -> "@" + who.username + "@" + who.host } ?: ""
btnContact.text = contact_acct
btnContact.isEnabled = contact_acct.isNotEmpty()
@ -159,6 +164,12 @@ internal class ViewHolderHeaderInstance(
ivThumbnail.setImageUrl(App1.pref, 0f, thumbnail, thumbnail)
}
}
tvHandshake.text = if( handshake == null){
""
}else{
"${handshake.tlsVersion()}, ${handshake.cipherSuite()}"
}
}
override fun onClick(v : View) {
@ -170,9 +181,9 @@ internal class ViewHolderHeaderInstance(
R.id.btnEmail -> instance?.email?.let { email ->
try {
if(email.contains("://") ) {
App1.openCustomTab(activity,email)
}else {
if(email.contains("://")) {
App1.openCustomTab(activity, email)
} else {
val intent = Intent(Intent.ACTION_SEND)
intent.type = "text/plain"
intent.putExtra(Intent.EXTRA_EMAIL, arrayOf(email))
@ -190,16 +201,16 @@ internal class ViewHolderHeaderInstance(
R.id.btnContact -> instance?.contact_account?.let { who ->
Action_Account.timeline(
activity
,activity.nextPosition(column)
,Column.TYPE_SEARCH
,bAllowPseudo = false
,args=arrayOf("@"+who.username +"@"+ who.host,true)
, activity.nextPosition(column)
, Column.TYPE_SEARCH
, bAllowPseudo = false
, args = arrayOf("@" + who.username + "@" + who.host, true)
)
}
R.id.ivThumbnail -> instance?.thumbnail?.mayUri()?.let { uri ->
try {
activity.startActivity(Intent(Intent.ACTION_VIEW,uri))
activity.startActivity(Intent(Intent.ACTION_VIEW, uri))
} catch(ex : Throwable) {
log.e(ex, "startActivity failed. $uri")
showToast(activity, true, "missing web browser")

View File

@ -50,8 +50,6 @@ class TootApiClient(
companion object {
private val log = LogCategory("TootApiClient")
val debugHandshake = true
private const val DEFAULT_CLIENT_NAME = "SubwayTooter"
internal const val KEY_CLIENT_CREDENTIAL = "SubwayTooterClientCredential"
internal const val KEY_CLIENT_SCOPE = "SubwayTooterClientScope"
@ -294,13 +292,6 @@ class TootApiClient(
val response = httpClient.getResponse(request, tmpOkhttpClient = tmpOkhttpClient)
result.response = response
if(debugHandshake) {
val handshake = response.handshake()
if(handshake != null) {
log.d("handshake ${handshake.tlsVersion()},${handshake.cipherSuite()} ${request.url()}")
}
}
null == result.error
} catch(ex : Throwable) {
@ -577,19 +568,17 @@ class TootApiClient(
// インスタンス情報を取得する
internal fun parseInstanceInformation(result : TootApiResult?) : TootApiResult? {
if(result != null) {
val json = result.jsonObject
if(json != null) {
val parser = TootParser(
context,
LinkHelper.newLinkHelper(instance, isMisskey = json.optBoolean(KEY_IS_MISSKEY))
)
val ti = parser.instance(json)
if(ti != null) {
result.data = ti
} else {
result.setError("can't parse data in instance information.")
}
val json = result?.jsonObject
if(json != null) {
val parser = TootParser(
context,
LinkHelper.newLinkHelper(instance, isMisskey = json.optBoolean(KEY_IS_MISSKEY))
)
val ti = parser.instance(json)
if(ti != null) {
result.data = ti
} else {
result.setError("can't parse data in instance information.")
}
}
return result

View File

@ -172,7 +172,7 @@
<TextView
style="@style/setting_row_label"
android:text="@string/thumbnail_1_6_1_later"
android:text="@string/thumbnail"
/>
<LinearLayout style="@style/setting_row_form">
@ -207,4 +207,19 @@
<View style="@style/setting_divider"/>
<TextView
style="@style/setting_row_label"
android:text="@string/tls_handshake"
/>
<LinearLayout style="@style/setting_row_form">
<jp.juggler.subwaytooter.view.MyTextView
android:id="@+id/tvHandshake"
style="@style/setting_horizontal_stretch"
/>
</LinearLayout>
<View style="@style/setting_divider"/>
</LinearLayout>

View File

@ -44,7 +44,6 @@
<string name="account_pick">Dewis cyfrif</string>
<string name="account_confirmed">Cyfrif wedi\'i gadarnhau.</string>
<string name="close_column">Cau y golofn</string>
<string name="thumbnail">Ciplun</string>
<string name="reload">Ail-lwytho</string>
<string name="favourites">Ffefrynnau</string>
<string name="notifications">Hysbysiadau</string>
@ -325,7 +324,7 @@
<string name="mastodon_1_6_later">Mastodon 1.6 neu hwyrach</string>
<string name="user_count">Nifer defnyddwyr</string>
<string name="not_provided_mastodon_under_1_6">Ni ddarparir gan Mastodon 1.6</string>
<string name="thumbnail_1_6_1_later">Ciplun (Mastodon 1.6.1 neu hwyrach)</string>
<string name="thumbnail">Ciplun</string>
<string name="emoji_category_people">Pobl</string>
<string name="emoji_category_nature">Natur</string>
<string name="emoji_category_foods">Bwydydd</string>

View File

@ -507,7 +507,6 @@
<string name="mime_type_missing">Type MIME manquant.</string>
<string name="mime_type_not_acceptable">Type MIME %1$s n\'est pas acceptable.
\nTypes MIME pris en charge sont les suivants : image/jpeg, image/png, image/gif,/video/webm, video/mp4.</string>
<string name="thumbnail_1_6_1_later">Miniature (Mastodon 1.6.1 ou version ultérieure)</string>
<string name="dont_show_timeout">Ne pas afficher les notifications \"Délai d\'expiration du serveur\"</string>
<string name="emoji_category_people">People</string>
<string name="emoji_category_nature">Nature</string>

View File

@ -672,7 +672,6 @@
<string name="theme_dark">暗い</string>
<string name="theme_light">明るい</string>
<string name="thumbnail">サムネイル</string>
<string name="thumbnail_1_6_1_later">サムネイル(マストドン1.6.1以降)</string>
<string name="thumbnails_arrange_vertically">サムネイルを縦に並べる (アプリ再起動が必要)</string>
<string name="time_within_second">たった今</string>
<string name="timeline_font">タイムラインのフォント(アプリ再起動が必要)</string>

View File

@ -29,7 +29,6 @@
<string name="reply">Svar</string>
<string name="more">Mer</string>
<string name="close_column">Lukk kolonnen</string>
<string name="thumbnail">Miniatyrbilde</string>
<string name="reload">Last inn igjen</string>
<string name="favourites">Favoritter</string>
<string name="notifications">Merknader</string>
@ -400,7 +399,7 @@
<string name="toot_count">Tut-antall</string>
<string name="domain_count">Tilkoblet domeneantall</string>
<string name="mime_type_missing">Manglende MIME-type.</string>
<string name="thumbnail_1_6_1_later">Miniatyrbilde (Mastodon 1.6.1 eller senere)</string>
<string name="thumbnail">Miniatyrbilde</string>
<string name="dont_show_timeout">Ikke vis \"Tjenertidsavbrudd\"-merknad</string>
<string name="emoji_category_people">Folk</string>
<string name="emoji_category_nature">Natur</string>

View File

@ -507,7 +507,6 @@
<string name="not_provided_mastodon_under_1_6">Not provided under Mastodon 1.6</string>
<string name="mime_type_missing">Missing MIME type.</string>
<string name="mime_type_not_acceptable">MIME type %1$s is not acceptable.\nSupported MIME types are image/jpeg, image/png, image/gif, video/webm, video/mp4 .</string>
<string name="thumbnail_1_6_1_later">Thumbnail (Mastodon 1.6.1 or later)</string>
<string name="dont_show_timeout">Don\'t show \"Server Timeout\" notification</string>
<string name="emoji_category_people">People</string>
<string name="emoji_category_nature">Nature</string>
@ -821,5 +820,6 @@
<string name="blank_cw">(blank CW)</string>
<string name="actions_for_instance">Actions for this instance</string>
<string name="animation">Animation</string>
<string name="tls_handshake">TLS Handshake</string>
</resources>