From 7a934a063f92ca7fec0c399a06919203d3d07fc1 Mon Sep 17 00:00:00 2001 From: Ultra Desu Date: Thu, 19 Dec 2019 00:02:33 +0300 Subject: [PATCH] Fix player metadata shorting. --- condrix.ovpn | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++ mikrotik.ovpn | 110 +++++++++++++++++++++++++++++++ src/main.rs | 47 +++++++++++--- 3 files changed, 323 insertions(+), 10 deletions(-) create mode 100644 condrix.ovpn create mode 100644 mikrotik.ovpn diff --git a/condrix.ovpn b/condrix.ovpn new file mode 100644 index 0000000..9d191ef --- /dev/null +++ b/condrix.ovpn @@ -0,0 +1,176 @@ +client +dev tun0 +proto tcp +remote des.hexor.ru 1194 +;comp-lzo +resolv-retry infinite +auth-retry none +nobind +persist-key +persist-tun +cipher AES-256-CBC +tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 +mute-replay-warnings +ns-cert-type server +verb 3 +mute 20 + +# Additional custom options + +# Authentication + +-----BEGIN CERTIFICATE----- +MIIEfjCCA2agAwIBAgIUAV49sWytBnOyvsV+ATBQk+0PjO8wDQYJKoZIhvcNAQEL +BQAwfzELMAkGA1UEBhMCQ0gxCzAJBgNVBAgTAlpIMRMwEQYDVQQHEwpXaW50ZXJ0 +aHVyMRQwEgYDVQQKEwtleGFtcGxlLm9yZzEXMBUGA1UEAxMOZXhhbXBsZS5vcmcg +Q0ExHzAdBgkqhkiG9w0BCQEWEHJvb3RAZXhhbXBsZS5vcmcwHhcNMTkwODA2MjAx +NjMzWhcNMjkwODAzMjAxNjMzWjB/MQswCQYDVQQGEwJDSDELMAkGA1UECBMCWkgx +EzARBgNVBAcTCldpbnRlcnRodXIxFDASBgNVBAoTC2V4YW1wbGUub3JnMRcwFQYD +VQQDEw5leGFtcGxlLm9yZyBDQTEfMB0GCSqGSIb3DQEJARYQcm9vdEBleGFtcGxl +Lm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKhyy7Y3Ipom2mW7 +5VXMYf82OatQp4AAp896EONJibtzTD9NKVrjzT9uOeAe4o9f1QS+buOsLdmG4DxS +m5hRl35H8Jt9ziAUuqZUy235J7FS14iWeH+Vya+N2VVfzdTorJ/X5gg5Ffz8kGPs +e3lC0t6aELLhVSlEj7x0z/bzDQsWJqAsj5s4UEj9HupEzXoIxtZJ6y1LuXkjFjTd +3GLODI+zZnTwNd2GGIIIbCahcdXjEkhCzM3IoHPfORbSDgwlMKOG0WABFQldlEre +ROxZqG5+g72XmwSqbVtyzNc2i5F+k3oTUbSt02cVpXyPCXRiJUW3mvFm0+1pq//3 +Wlq02IkCAwEAAaOB8TCB7jAdBgNVHQ4EFgQUiLsL+gmDGlxZFYG7d5qDUIJ3WXsw +gb4GA1UdIwSBtjCBs4AUiLsL+gmDGlxZFYG7d5qDUIJ3WXuhgYSkgYEwfzELMAkG +A1UEBhMCQ0gxCzAJBgNVBAgTAlpIMRMwEQYDVQQHEwpXaW50ZXJ0aHVyMRQwEgYD +VQQKEwtleGFtcGxlLm9yZzEXMBUGA1UEAxMOZXhhbXBsZS5vcmcgQ0ExHzAdBgkq +hkiG9w0BCQEWEHJvb3RAZXhhbXBsZS5vcmeCFAFePbFsrQZzsr7FfgEwUJPtD4zv +MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFroDmyXHFBbYlIDcUC6 +rxtXzH8NyS/Erd2Tj8CQRrv8mB4Zl/A5AE1C97ychghppRrlZNOy4OSyWoHBbxq1 +uZUXJ7xHmMEHrmBsWFN10gv7TOtL7CidKSMMaSEFZG81L2oJ3CTp+YFi/dr8KSzk +Lp6y7qT4Qlvqsw/N7nRfB5ttbTcqiugG236kxD8gr6Pg3+2Y6UxpsJ8ErwDM70tx +No54eq035zPFI2RBoiNgN097v/ll8ggQKpyJzY3+CxkjtXwqdKiP/ywAAqfIjrz6 +9mjMwqGPKIwI/knVieGieZRiX1N+9FzSlxZs2ERHd8i/+uoUHB9OwsB2bWhTXl9U +604= +-----END CERTIFICATE----- + + +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDNZoSTcGs0zPu5 +gh738a3MEwrUk2oAzGX0wCng4bbYQdrcp5VW7rsSjSgGK33W4vB6eQbZFjduUD2r +ElHICb4X+x9Qxx1Av1vCIUqqdqbMKbCmwjtoaMjgERlkieDMOFHO4Uch8nW1Lxg6 +I/lbXMR2rMTWMIAfJqls3lR7SokmAHbt+/tpZDQkH9sKB+t4QJzNx3IV1w7whRsY +eH0+ZSE1NllqOnYdLDfrkH6x+loAb/FdtmfnXCJXAFUqSAXbzY+h0NFmRDBrSEDa +geIXEHbshqwrmKy5SiwSO2YgOsb64yXUE/1VG3di3tuJ5Leq5Y3hSX1gCjTCBaEU +45/aLpg7AgMBAAECggEAWNe+AnP+uwDq5KuGr6JGlV2rMpVspVnDw+CWfKHEz7d0 +bjrCWq66FeUeacTIEnlooODWeHGmmj103xj2bLriEUdanTryyT2797UksaTOssJZ +mVesEJY6RMjAnf8RT+QQZpaEiQdxqGPta8CBq+XtSJOkNC0YTeEQKXnlOsrblaaY +95EexlX+dWS6xO7euj5dV2QCC6RpSCReEBbhbMeZakU+VgCftgOG+/yp3wCJhwA1 +r+1RW2yjGJW59KFaX6OVVJGPax3UQiT3hnN0KcBSobHB6DCV/1vSuwKFXxHGkzmr +CjCzBz9m1EsOM7cbhGHU89Hwhc+dhsTBR0tdWW8NYQKBgQD1V7teajlRKUSSKbIe +Ef6ZlIGRhKFesGKL6W01bnPDn5eMRcqGyB8gHoaYJ0f890ujIwNdTLr5IqMfKJyF +wxklkFG3GKGmuun2RnERuUnAy/+GU1i2Hy4JYFawdnYmkoh3+EV+Pjlx9pTbaD7g +11AJp7paO/SIBfm4fwwMQYGX0QKBgQDWUp5xDp8d3f3z9iFMrjKOLQq6y0GnuGc1 +7UgCSUFVL9XwUxwH8d8JAzyMHjaigX/fgj4PpUbtm31v//8U6IsLO6wF0vKHz4zU +qquZQfcvoQ/Ovebz4lmZasgRrt6FgSRWbB+VUKQReRiR2QJZmV4SktlXZW5o4bP2 +/41tPmq+SwKBgCreIGv3zXoD5upPBMNCS6UUEKuXbAa6dQ2TRLSwTuPgb79ftmpk +byPSkZvmSSrHHt0rUfwsWwMK7UuVcfvhQfSRSeXfFOeoAxc36au6H0vjmQskZvyz +Z/zVa3A70pscwWGM7L+JKcpi1lGb3li05lQ5jVMU5L4bpS16bWV60KTxAoGAckGV +Sfxbg1anXfmnAvQS64zDnZViKQG7tBoNO3rGI53e1cHYvbuKBYn+K0yoH7Yd74/F +eh3IVD+CfcThvcnC5ngnWut8dD6He5CI7qkmF/QrMzI1/2p6DbnJcvPgmRehwZje +tYFKFi6SlJ42DIIgjpJO37KpS6yXfmP6h3Sw/0UCgYEAmmykSYVlJ8KL4OMNdH+i +ib4pu+D3u+Dtz5gsXUqnXWXq9sUIOl1hTLBTBlzi2ZVqi6rfMtvHVb50zVsoiIug +2uN9ymtVXJ9+6qk0T/fkH3hqMiUdoKG3BsUvljrBIW/UYjY6/1KWQcjsGKKXJm9A +pJJZyfIXkVx8Y8AMgUDkFaY= +-----END PRIVATE KEY----- + + +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 2 (0x2) + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=CH, ST=ZH, L=Winterthur, O=example.org, CN=example.org CA/emailAddress=root@example.org + Validity + Not Before: Aug 6 20:16:38 2019 GMT + Not After : Aug 3 20:16:38 2029 GMT + Subject: C=CH, ST=ZH, L=Winterthur, O=example.org, CN=condrix/emailAddress=root@example.org + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (2048 bit) + Modulus: + 00:cd:66:84:93:70:6b:34:cc:fb:b9:82:1e:f7:f1: + ad:cc:13:0a:d4:93:6a:00:cc:65:f4:c0:29:e0:e1: + b6:d8:41:da:dc:a7:95:56:ee:bb:12:8d:28:06:2b: + 7d:d6:e2:f0:7a:79:06:d9:16:37:6e:50:3d:ab:12: + 51:c8:09:be:17:fb:1f:50:c7:1d:40:bf:5b:c2:21: + 4a:aa:76:a6:cc:29:b0:a6:c2:3b:68:68:c8:e0:11: + 19:64:89:e0:cc:38:51:ce:e1:47:21:f2:75:b5:2f: + 18:3a:23:f9:5b:5c:c4:76:ac:c4:d6:30:80:1f:26: + a9:6c:de:54:7b:4a:89:26:00:76:ed:fb:fb:69:64: + 34:24:1f:db:0a:07:eb:78:40:9c:cd:c7:72:15:d7: + 0e:f0:85:1b:18:78:7d:3e:65:21:35:36:59:6a:3a: + 76:1d:2c:37:eb:90:7e:b1:fa:5a:00:6f:f1:5d:b6: + 67:e7:5c:22:57:00:55:2a:48:05:db:cd:8f:a1:d0: + d1:66:44:30:6b:48:40:da:81:e2:17:10:76:ec:86: + ac:2b:98:ac:b9:4a:2c:12:3b:66:20:3a:c6:fa:e3: + 25:d4:13:fd:55:1b:77:62:de:db:89:e4:b7:aa:e5: + 8d:e1:49:7d:60:0a:34:c2:05:a1:14:e3:9f:da:2e: + 98:3b + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Netscape Comment: + Easy-RSA Generated Certificate + X509v3 Subject Key Identifier: + 16:5D:0E:F9:26:F0:7B:D0:3D:DF:15:E7:E3:6E:20:F2:43:4E:87:F1 + X509v3 Authority Key Identifier: + keyid:88:BB:0B:FA:09:83:1A:5C:59:15:81:BB:77:9A:83:50:82:77:59:7B + DirName:/C=CH/ST=ZH/L=Winterthur/O=example.org/CN=example.org CA/emailAddress=root@example.org + serial:01:5E:3D:B1:6C:AD:06:73:B2:BE:C5:7E:01:30:50:93:ED:0F:8C:EF + + X509v3 Extended Key Usage: + TLS Web Client Authentication + X509v3 Key Usage: + Digital Signature + X509v3 Subject Alternative Name: + DNS:condrix + Signature Algorithm: sha256WithRSAEncryption + 32:39:9b:cf:71:7d:1f:ab:1e:db:89:4f:54:b5:cb:ef:98:2b: + 72:74:24:29:3a:5d:54:63:35:d9:b1:d0:3d:ee:d2:72:fa:21: + 8c:73:8a:c7:71:de:a6:ec:ad:df:62:ce:29:a3:f6:72:99:6f: + 5e:18:30:64:f3:63:39:7f:39:5e:a9:12:d6:bc:86:b4:1c:0b: + 04:fb:0e:96:59:09:a8:69:df:c9:63:29:e8:31:3f:dd:48:1e: + c6:92:e0:91:f2:df:03:fe:b4:b7:1b:46:23:1b:63:1b:a9:02: + 1c:bb:82:0c:65:e1:59:da:b2:a1:95:4d:e3:50:58:b2:7d:a3: + f5:b4:b3:c8:e3:36:e0:81:73:a5:ed:97:95:d3:70:01:3a:2f: + e2:b9:3f:dc:53:7e:e5:d1:84:03:36:9f:cc:29:67:15:3f:55: + fa:61:df:f0:39:d8:17:f0:10:76:dd:e5:f4:1f:ab:5f:39:2d: + 4c:81:25:92:7f:4b:f1:63:39:dc:f7:d3:33:a2:fc:94:cd:03: + 23:3f:31:7f:d9:9f:b5:ac:7c:22:9e:89:0e:9c:07:1d:6a:15: + 88:68:15:49:04:9d:b8:42:0f:66:1e:3c:b9:c1:b0:fe:63:5a: + 5b:27:a3:f0:96:6d:bd:ab:c8:00:c6:a2:83:bc:31:4d:36:db: + e2:a4:3b:74 +-----BEGIN CERTIFICATE----- +MIIEyDCCA7CgAwIBAgIBAjANBgkqhkiG9w0BAQsFADB/MQswCQYDVQQGEwJDSDEL +MAkGA1UECBMCWkgxEzARBgNVBAcTCldpbnRlcnRodXIxFDASBgNVBAoTC2V4YW1w +bGUub3JnMRcwFQYDVQQDEw5leGFtcGxlLm9yZyBDQTEfMB0GCSqGSIb3DQEJARYQ +cm9vdEBleGFtcGxlLm9yZzAeFw0xOTA4MDYyMDE2MzhaFw0yOTA4MDMyMDE2Mzha +MHgxCzAJBgNVBAYTAkNIMQswCQYDVQQIEwJaSDETMBEGA1UEBxMKV2ludGVydGh1 +cjEUMBIGA1UEChMLZXhhbXBsZS5vcmcxEDAOBgNVBAMTB2NvbmRyaXgxHzAdBgkq +hkiG9w0BCQEWEHJvb3RAZXhhbXBsZS5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDNZoSTcGs0zPu5gh738a3MEwrUk2oAzGX0wCng4bbYQdrcp5VW +7rsSjSgGK33W4vB6eQbZFjduUD2rElHICb4X+x9Qxx1Av1vCIUqqdqbMKbCmwjto +aMjgERlkieDMOFHO4Uch8nW1Lxg6I/lbXMR2rMTWMIAfJqls3lR7SokmAHbt+/tp +ZDQkH9sKB+t4QJzNx3IV1w7whRsYeH0+ZSE1NllqOnYdLDfrkH6x+loAb/Fdtmfn +XCJXAFUqSAXbzY+h0NFmRDBrSEDageIXEHbshqwrmKy5SiwSO2YgOsb64yXUE/1V +G3di3tuJ5Leq5Y3hSX1gCjTCBaEU45/aLpg7AgMBAAGjggFUMIIBUDAJBgNVHRME +AjAAMC0GCWCGSAGG+EIBDQQgFh5FYXN5LVJTQSBHZW5lcmF0ZWQgQ2VydGlmaWNh +dGUwHQYDVR0OBBYEFBZdDvkm8HvQPd8V5+NuIPJDTofxMIG+BgNVHSMEgbYwgbOA +FIi7C/oJgxpcWRWBu3eag1CCd1l7oYGEpIGBMH8xCzAJBgNVBAYTAkNIMQswCQYD +VQQIEwJaSDETMBEGA1UEBxMKV2ludGVydGh1cjEUMBIGA1UEChMLZXhhbXBsZS5v +cmcxFzAVBgNVBAMTDmV4YW1wbGUub3JnIENBMR8wHQYJKoZIhvcNAQkBFhByb290 +QGV4YW1wbGUub3JnghQBXj2xbK0Gc7K+xX4BMFCT7Q+M7zATBgNVHSUEDDAKBggr +BgEFBQcDAjALBgNVHQ8EBAMCB4AwEgYDVR0RBAswCYIHY29uZHJpeDANBgkqhkiG +9w0BAQsFAAOCAQEAMjmbz3F9H6se24lPVLXL75grcnQkKTpdVGM12bHQPe7Scvoh +jHOKx3Hepuyt32LOKaP2cplvXhgwZPNjOX85XqkS1ryGtBwLBPsOllkJqGnfyWMp +6DE/3UgexpLgkfLfA/60txtGIxtjG6kCHLuCDGXhWdqyoZVN41BYsn2j9bSzyOM2 +4IFzpe2XldNwATov4rk/3FN+5dGEAzafzClnFT9V+mHf8DnYF/AQdt3l9B+rXzkt +TIElkn9L8WM53PfTM6L8lM0DIz8xf9mftax8Ip6JDpwHHWoViGgVSQSduEIPZh48 +ucGw/mNaWyej8JZtvavIAMaig7wxTTbb4qQ7dA== +-----END CERTIFICATE----- + diff --git a/mikrotik.ovpn b/mikrotik.ovpn new file mode 100644 index 0000000..1899fd4 --- /dev/null +++ b/mikrotik.ovpn @@ -0,0 +1,110 @@ +client +dev tun +proto tcp +remote des.hexor.ru 1194 +comp-lzo +resolv-retry infinite +auth-retry none +nobind +persist-key +persist-tun +cipher AES-256-CBC +tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 +mute-replay-warnings +ns-cert-type server +verb 3 +mute 20 + +# Additional custom options + +# Authentication + +-----BEGIN CERTIFICATE----- +MIIEfjCCA2agAwIBAgIUAV49sWytBnOyvsV+ATBQk+0PjO8wDQYJKoZIhvcNAQEL +BQAwfzELMAkGA1UEBhMCQ0gxCzAJBgNVBAgTAlpIMRMwEQYDVQQHEwpXaW50ZXJ0 +aHVyMRQwEgYDVQQKEwtleGFtcGxlLm9yZzEXMBUGA1UEAxMOZXhhbXBsZS5vcmcg +Q0ExHzAdBgkqhkiG9w0BCQEWEHJvb3RAZXhhbXBsZS5vcmcwHhcNMTkwODA2MjAx +NjMzWhcNMjkwODAzMjAxNjMzWjB/MQswCQYDVQQGEwJDSDELMAkGA1UECBMCWkgx +EzARBgNVBAcTCldpbnRlcnRodXIxFDASBgNVBAoTC2V4YW1wbGUub3JnMRcwFQYD +VQQDEw5leGFtcGxlLm9yZyBDQTEfMB0GCSqGSIb3DQEJARYQcm9vdEBleGFtcGxl +Lm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKhyy7Y3Ipom2mW7 +5VXMYf82OatQp4AAp896EONJibtzTD9NKVrjzT9uOeAe4o9f1QS+buOsLdmG4DxS +m5hRl35H8Jt9ziAUuqZUy235J7FS14iWeH+Vya+N2VVfzdTorJ/X5gg5Ffz8kGPs +e3lC0t6aELLhVSlEj7x0z/bzDQsWJqAsj5s4UEj9HupEzXoIxtZJ6y1LuXkjFjTd +3GLODI+zZnTwNd2GGIIIbCahcdXjEkhCzM3IoHPfORbSDgwlMKOG0WABFQldlEre +ROxZqG5+g72XmwSqbVtyzNc2i5F+k3oTUbSt02cVpXyPCXRiJUW3mvFm0+1pq//3 +Wlq02IkCAwEAAaOB8TCB7jAdBgNVHQ4EFgQUiLsL+gmDGlxZFYG7d5qDUIJ3WXsw +gb4GA1UdIwSBtjCBs4AUiLsL+gmDGlxZFYG7d5qDUIJ3WXuhgYSkgYEwfzELMAkG +A1UEBhMCQ0gxCzAJBgNVBAgTAlpIMRMwEQYDVQQHEwpXaW50ZXJ0aHVyMRQwEgYD +VQQKEwtleGFtcGxlLm9yZzEXMBUGA1UEAxMOZXhhbXBsZS5vcmcgQ0ExHzAdBgkq +hkiG9w0BCQEWEHJvb3RAZXhhbXBsZS5vcmeCFAFePbFsrQZzsr7FfgEwUJPtD4zv +MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFroDmyXHFBbYlIDcUC6 +rxtXzH8NyS/Erd2Tj8CQRrv8mB4Zl/A5AE1C97ychghppRrlZNOy4OSyWoHBbxq1 +uZUXJ7xHmMEHrmBsWFN10gv7TOtL7CidKSMMaSEFZG81L2oJ3CTp+YFi/dr8KSzk +Lp6y7qT4Qlvqsw/N7nRfB5ttbTcqiugG236kxD8gr6Pg3+2Y6UxpsJ8ErwDM70tx +No54eq035zPFI2RBoiNgN097v/ll8ggQKpyJzY3+CxkjtXwqdKiP/ywAAqfIjrz6 +9mjMwqGPKIwI/knVieGieZRiX1N+9FzSlxZs2ERHd8i/+uoUHB9OwsB2bWhTXl9U +604= +-----END CERTIFICATE----- + + +-----BEGIN CERTIFICATE----- +MIIE3TCCA8WgAwIBAgIBAzANBgkqhkiG9w0BAQsFADB/MQswCQYDVQQGEwJDSDEL +MAkGA1UECBMCWkgxEzARBgNVBAcTCldpbnRlcnRodXIxFDASBgNVBAoTC2V4YW1w +bGUub3JnMRcwFQYDVQQDEw5leGFtcGxlLm9yZyBDQTEfMB0GCSqGSIb3DQEJARYQ +cm9vdEBleGFtcGxlLm9yZzAeFw0xOTEyMDkyMDUwMTRaFw0yOTEyMDYyMDUwMTRa +MIGLMQswCQYDVQQGEwJSVTEPMA0GA1UECBMGTW9zY293MQ8wDQYDVQQHEwZNb3Nj +b3cxGDAWBgNVBAoTD01lZ2FDb3Jwb3JhdGlvbjERMA8GA1UEAxMIaGV4b3IucnUx +ETAPBgNVBCkTCE1pa3JvdGlrMRowGAYJKoZIhvcNAQkBFgthYkBoZXhvci5ydTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMmLvbY1/Y4bHLlAkO0aV+EE ++CG3RlsvgIAXDlPLMiQyOvFsGVVC5dXLTPfn0jMZvXCeJu1rs/26Gz8l00EPC/YI +pv+T5MJwJpPxl3ve7LlYQdWCFCeOwPU8uaPU1O/YjbVHhBJW7ndguQUbopu06O55 +v+o3sXFir0A2AQyUBqqq2w664veZ19oncQ/dCffRtA2G5fbupMj9XU7BcwTz7sSE +Sd48rEM4dPzbi+Q/I3wYoND94k0HzoRiB+k/+wIV/bDWjhVxUFcLyBad78kuZ8dh +47dfBNevQ2OUeyV36DX1Oxj1XwMzImQZImNmKyWH+wBdL/MWeHntlrSff7t1qnMC +AwEAAaOCAVUwggFRMAkGA1UdEwQCMAAwLQYJYIZIAYb4QgENBCAWHkVhc3ktUlNB +IEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUla5DxAvnKnxFOLRxAAZM +9uOMz/kwgb4GA1UdIwSBtjCBs4AUiLsL+gmDGlxZFYG7d5qDUIJ3WXuhgYSkgYEw +fzELMAkGA1UEBhMCQ0gxCzAJBgNVBAgTAlpIMRMwEQYDVQQHEwpXaW50ZXJ0aHVy +MRQwEgYDVQQKEwtleGFtcGxlLm9yZzEXMBUGA1UEAxMOZXhhbXBsZS5vcmcgQ0Ex +HzAdBgkqhkiG9w0BCQEWEHJvb3RAZXhhbXBsZS5vcmeCFAFePbFsrQZzsr7FfgEw +UJPtD4zvMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAsGA1UdDwQEAwIHgDATBgNVHREE +DDAKgghtaWtyb3RpazANBgkqhkiG9w0BAQsFAAOCAQEAGfASkE2/PMWgBJ5A4tbQ +U2uMXaoadnlFirPKAfj8ZClGXdhB3FmL7v6keRY1N8i/JwQoLdbDMr29nXnhek/h +frzn+nSrtOzDoq+uopcn0Wwp5RlT5KRGMb9V85td2peMp824ym28FkraiIzT/ieb +gl5YCcl+M39TECAxIj3kd7bOsVjav+0i+3FNgtPcI9YRnt1YOnwrvQ/JxTUPn1xc +CDIkjicRl/eobY5coMDH49+9zAZtRYIdiExLu5Gg91snkgH6lajgArW6190IrC8A +3XImMExsstjeRR6yD73guRJk0Fa2IABR+mNL2xnvOwR/lolWLcolpteiF5VYb4SA +Vg== +-----END CERTIFICATE----- + + +-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDJi722Nf2OGxy5 +QJDtGlfhBPght0ZbL4CAFw5TyzIkMjrxbBlVQuXVy0z359IzGb1wnibta7P9uhs/ +JdNBDwv2CKb/k+TCcCaT8Zd73uy5WEHVghQnjsD1PLmj1NTv2I21R4QSVu53YLkF +G6KbtOjueb/qN7FxYq9ANgEMlAaqqtsOuuL3mdfaJ3EP3Qn30bQNhuX27qTI/V1O +wXME8+7EhEnePKxDOHT824vkPyN8GKDQ/eJNB86EYgfpP/sCFf2w1o4VcVBXC8gW +ne/JLmfHYeO3XwTXr0NjlHsld+g19TsY9V8DMyJkGSJjZislh/sAXS/zFnh57Za0 +n3+7dapzAgMBAAECggEBAJkEhIN7mEc05Gjt0VqCvqez2yPV/w+qD/iwCIur4STE +EiZLeSxXfyIDmSs6kUeEymRfXpSxSdVgX+FguXRSlTU1unyeb3cEKPX33ZgJV1cc +39bXTK//3RYUBamSJBz5IBW691XpNGHkSHTNV3a6MoMkYoXTxN+eGgo5NjCzjiAy +ALnGm2pAls2+7kxQmeQIwdthrxkA3pFkKvmF+/Mt9kSoO4WvX/HwypMTjvM5qgqL +W+Ouc7iXzBOz8NFy6saY02XvQtvnZ/dMGad/YfUmi7DCdXfFm90L/wUMZj56P7pd +fJ6Tlfuu5auJwJUFaoSpRQSMGqzATwpDOyHFefgIk8kCgYEA673u+/V6P7i1Ggf5 +R3bQoGmYEdZd7a/JGSF+3d6RsBK44BzaxrxxIRy8y12ZpVz+r6Etbe5Vvsa5oyPd +ytDB/rkIQsx4z6/MmCTzDe1Xvm0RWa0Ncn0Sg3q3Iv7b8VyHh9ifZTZhpCINjf3L +zZr4gLH/YUT62WSkqi/EiyDw1U0CgYEA2t2H/2QlYdF5W4a64bSB7HM84Yq2SUg5 +yPc/f5IpaoBEJRXfy/g44WEUOFgM1XeX5mB9SeR7zH+KxBnPLcrfXniGey3Vp/Zx +i/1+5TCheSnBWkHo9yAzqE3akIUmu/jNOPGlp1Gxn4s/BiIuz7qlknKKU2/6Flyr +n6cPsXAlnr8CgYAfgcAKDrHrCE20D/LCGWAiwFohsCvXk5Hl+PMSxidkh+wLj++x +dggMq+GTsIvTbQ1g/cKrmZn+KGMxKZ7/90ymNaaj/t36q/1FLFMLvnfmrH8QJC/S +6GJsDh+h3rwYkwxOHKaZCV6daCu1mYD+lsK1uJRwNJ7uJSRY1o+HJLzrVQKBgQCs +JRBhzQgmDxev6KG3Az4pl14sW+kSbK+epPIZygGvVeHDdZgIG13Jz4yS4JZ/lEgy +mHQTGZZR+4NOyKoO74GPEadc3WkuagVXQXR8mip3XWNKNYsiTP60gz/E6iXUNVZd +UpujpfrabTCOB3bgRoMSU+r+w5Vl30/SDBmoy3ebiwKBgQCna2L2LKV7cCCpeT+l +eQCTdf4RWHoTIhC8p/Ydm9br13chktIlh6CkwIsOil9eEbMgFiwoydSQ5JcV+7BU +wMj4peknhwoXPENKCSlDaTujlZU3hZlkfLr1/pYcwPMMSqESrKuoKz0CsLXD4F5b +AIug/qGwp6qkRuR2MuTF0xg/Mg== +-----END PRIVATE KEY----- + diff --git a/src/main.rs b/src/main.rs index a30594c..3ad670d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -78,7 +78,6 @@ fn get_player() -> Result, Box> { for name in names { if name.contains("org.mpris.MediaPlayer2") { players.push(name); - //println!("{}", name); } } @@ -166,21 +165,49 @@ fn main() { "-mb" => mem_load_bar(15), "-p" => match player_info(get_player().unwrap()) { Ok(mut track_info) => { - let title_len = 30; - let artist_len = 30; - if track_info.title.len() >= title_len { - track_info.title.truncate(title_len); - track_info.title.push_str(".."); + let mut title_len = 30; + let mut artist_len = 30; + let mut separator: String = " - ".to_string(); + let max_shift = 6; + if title_len + max_shift >= track_info.title.chars().count() { + title_len = track_info.title.chars().count() } - if track_info.artist.len() >= artist_len { - track_info.artist.truncate(artist_len); - track_info.artist.push_str(".."); + if track_info.title.len() > title_len { + let mut title: String = String::new(); + let mut counter = 0; + for ch in track_info.title.chars() { + if counter == title_len { + break; + } + title.push(ch); + counter += 1; + } + title.push_str(".."); + track_info.title = title; + } + if artist_len + max_shift >= track_info.artist.chars().count() { + artist_len = track_info.artist.chars().count() + } + if track_info.artist.chars().count() == 0 {separator = "".to_string()} + if track_info.artist.len() > artist_len { + let mut artist: String = String::new(); + let mut counter = 0; + for ch in track_info.artist.chars() { + if counter == artist_len { + break; + } + artist.push(ch); + counter += 1; + } + artist.push_str(".."); + track_info.artist = artist; } println!( - "#[none]#[bold]{}{}{}#[none]{} - {}{} {}[{}/{}] {} {}", + "#[none]#[bold]{}{}{}#[none]{}{}{}{} {}[{}/{}] {} {}", TRACK_NAME, track_info.title, END, + separator, TRACK_ARTIST, track_info.artist, END,