mirror of
https://github.com/danpros/htmly.git
synced 2026-04-22 21:46:22 +05:30
Merge pull request #110 from Kanti/master
PSR2 && HubUpdater && api/json?page parameter by @Kanti.
This commit is contained in:
commit
c66b6dfc46
30 changed files with 1951 additions and 1093 deletions
502
cache/ca_bundle.crt
vendored
502
cache/ca_bundle.crt
vendored
|
|
@ -1,18 +1,21 @@
|
|||
##
|
||||
## ca-bundle.crt -- Bundle of CA Root Certificates
|
||||
## Bundle of CA Root Certificates
|
||||
##
|
||||
## Certificate data from Mozilla as of: Tue Jul 15 08:33:20 2014
|
||||
## Certificate data from Mozilla downloaded on: Thu Sep 4 06:31:22 2014
|
||||
##
|
||||
## This is a bundle of X.509 certificates of public Certificate Authorities
|
||||
## (CA). These were automatically extracted from Mozilla's root certificates
|
||||
## file (certdata.txt). This file can be found in the mozilla source tree:
|
||||
## http://mxr.mozilla.org/mozilla-release/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1
|
||||
## http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
|
||||
##
|
||||
## It contains the certificates in PEM format and therefore
|
||||
## can be directly used with curl / libcurl / php_curl, or with
|
||||
## an Apache+mod_ssl webserver for SSL client authentication.
|
||||
## Just configure this file as the SSLCACertificateFile.
|
||||
##
|
||||
## Conversion done with mk-ca-bundle.pl verison 1.22.
|
||||
## SHA1: c4540021427a6fa29e5f50db9f12d48c97d33889
|
||||
##
|
||||
|
||||
|
||||
GTE CyberTrust Global Root
|
||||
|
|
@ -90,22 +93,6 @@ BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
|
|||
70+sB3c4
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Verisign Class 3 Public Primary Certification Authority
|
||||
=======================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
||||
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
||||
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
|
||||
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
||||
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
||||
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
||||
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
||||
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
|
||||
TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
|
||||
WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
|
||||
Tqj/ZA1k
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Verisign Class 3 Public Primary Certification Authority - G2
|
||||
============================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -168,63 +155,6 @@ BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
|||
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
ValiCert Class 1 VA
|
||||
===================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
||||
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
||||
YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
||||
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
|
||||
MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
||||
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
|
||||
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
||||
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
||||
A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
|
||||
GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
|
||||
DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
|
||||
lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
|
||||
icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
|
||||
Orf1LXLI
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
ValiCert Class 2 VA
|
||||
===================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
||||
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
||||
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
||||
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
||||
MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
||||
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
|
||||
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
||||
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
||||
A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
|
||||
CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
|
||||
ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
|
||||
SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
|
||||
UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
|
||||
W9ViH0Pd
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
RSA Root Certificate 1
|
||||
======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
||||
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
||||
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
||||
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
||||
MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
||||
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
|
||||
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
||||
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
||||
A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
|
||||
3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
|
||||
BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
|
||||
3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
|
||||
V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
|
||||
on+jjBXu
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Verisign Class 3 Public Primary Certification Authority - G3
|
||||
============================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -273,33 +203,6 @@ RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
|
|||
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Entrust.net Secure Server CA
|
||||
============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
|
||||
BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
|
||||
cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
|
||||
ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
||||
cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
|
||||
A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
|
||||
eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
|
||||
dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
|
||||
aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
|
||||
aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
|
||||
gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
|
||||
ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
|
||||
CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
|
||||
dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
||||
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
|
||||
cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
||||
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
|
||||
NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
|
||||
HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
|
||||
BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
|
||||
Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
|
||||
n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Entrust.net Premium 2048 Secure Server CA
|
||||
=========================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -953,30 +856,6 @@ nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
|
|||
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
TDC Internet Root CA
|
||||
====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
|
||||
ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
|
||||
NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
|
||||
ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
||||
MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
|
||||
xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
|
||||
znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
|
||||
5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
|
||||
otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
|
||||
AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
|
||||
VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
|
||||
MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
|
||||
AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
|
||||
UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
|
||||
CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
|
||||
gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
|
||||
2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
|
||||
O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
|
||||
Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
UTN DATACorp SGC Root CA
|
||||
========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -1117,64 +996,6 @@ KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
|
|||
8CgHrTwXZoi1/baI
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
NetLock Business (Class B) Root
|
||||
===============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
||||
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
||||
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
|
||||
VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
|
||||
VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
|
||||
bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
|
||||
VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
||||
iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
|
||||
o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
|
||||
1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
||||
HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
|
||||
RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
|
||||
dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
|
||||
ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
|
||||
c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
|
||||
YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
|
||||
c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
|
||||
Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
|
||||
bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
|
||||
IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
|
||||
YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
|
||||
cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
|
||||
43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
|
||||
stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
NetLock Express (Class C) Root
|
||||
==============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
||||
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
||||
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
|
||||
KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
|
||||
BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
||||
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
|
||||
ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
|
||||
jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
|
||||
W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
|
||||
euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
|
||||
DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
|
||||
RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
|
||||
YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
|
||||
IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
|
||||
aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
|
||||
ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
|
||||
ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
|
||||
dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
|
||||
emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
|
||||
IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
|
||||
UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
|
||||
YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
|
||||
xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
|
||||
gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
XRamp Global CA Root
|
||||
====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -1929,40 +1750,6 @@ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
|
|||
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
AC Raíz Certicámara S.A.
|
||||
======================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
|
||||
AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
|
||||
LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
|
||||
HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
|
||||
U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
|
||||
IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
|
||||
AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
|
||||
yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
|
||||
2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
|
||||
4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
|
||||
2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
|
||||
8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
|
||||
HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
|
||||
Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
|
||||
5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
|
||||
czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
|
||||
AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
|
||||
ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
|
||||
BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
|
||||
cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
|
||||
AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
|
||||
EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
|
||||
/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
|
||||
MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
|
||||
3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
|
||||
eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
|
||||
/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
|
||||
RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
|
||||
Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
TC TrustCenter Class 2 CA II
|
||||
============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -2137,7 +1924,7 @@ sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD
|
|||
BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
TÜBİTAK UEKAE Kök Sertifika Hizmet Sağlayıcısı - Sürüm 3
|
||||
T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
|
||||
=============================================================================================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
|
||||
|
|
@ -2205,7 +1992,7 @@ htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
|
|||
el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
EBG Elektronik Sertifika Hizmet Sağlayıcısı
|
||||
EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
|
||||
==========================================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF
|
||||
|
|
@ -2610,22 +2397,6 @@ MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o
|
|||
tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Verisign Class 3 Public Primary Certification Authority
|
||||
=======================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
|
||||
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
||||
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
|
||||
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
||||
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
||||
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
||||
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
||||
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
|
||||
CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
|
||||
bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
|
||||
D/xwzoiQ
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Microsec e-Szigno Root CA 2009
|
||||
==============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -3863,4 +3634,261 @@ k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh
|
|||
TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9
|
||||
61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G
|
||||
3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
QuoVadis Root CA 1 G3
|
||||
=====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
hMJKzRwuJIczYOXD
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
QuoVadis Root CA 2 G3
|
||||
=====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
O3jtZsSOeWmD3n+M
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
QuoVadis Root CA 3 G3
|
||||
=====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG
|
||||
A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv
|
||||
b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN
|
||||
MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg
|
||||
RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286
|
||||
IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL
|
||||
Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe
|
||||
6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3
|
||||
I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U
|
||||
VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7
|
||||
5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi
|
||||
Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM
|
||||
dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt
|
||||
rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
||||
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI
|
||||
hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px
|
||||
KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS
|
||||
t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ
|
||||
TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du
|
||||
DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib
|
||||
Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD
|
||||
hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX
|
||||
0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW
|
||||
dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2
|
||||
PpxxVJkES/1Y+Zj0
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
DigiCert Assured ID Root G2
|
||||
===========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG
|
||||
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
||||
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw
|
||||
MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
||||
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw
|
||||
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH
|
||||
35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq
|
||||
bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw
|
||||
VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP
|
||||
YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn
|
||||
lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO
|
||||
w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv
|
||||
0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz
|
||||
d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW
|
||||
hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M
|
||||
jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
|
||||
IhNzbM8m9Yop5w==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
DigiCert Assured ID Root G3
|
||||
===========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
|
||||
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD
|
||||
VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
|
||||
MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ
|
||||
BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb
|
||||
RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs
|
||||
KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF
|
||||
UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy
|
||||
YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy
|
||||
1vUhZscv6pZjamVFkpUBtA==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
DigiCert Global Root G2
|
||||
=======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG
|
||||
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
||||
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx
|
||||
MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
||||
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ
|
||||
kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO
|
||||
3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV
|
||||
BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM
|
||||
UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB
|
||||
o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu
|
||||
5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr
|
||||
F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U
|
||||
WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH
|
||||
QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/
|
||||
iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
|
||||
MrY=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
DigiCert Global Root G3
|
||||
=======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV
|
||||
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD
|
||||
VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw
|
||||
MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
|
||||
aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C
|
||||
AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O
|
||||
YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP
|
||||
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp
|
||||
Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y
|
||||
3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34
|
||||
VOKa5Vt8sycX
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
DigiCert Trusted Root G4
|
||||
========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
82Z+
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
WoSign
|
||||
======
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
WoSign China
|
||||
============
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
kI26oQ==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"require": {
|
||||
"michelf/php-markdown": "1.4.*@dev",
|
||||
"suin/php-rss-writer": ">=1.0"
|
||||
"michelf/php-markdown": "1.4.*@dev",
|
||||
"suin/php-rss-writer": ">=1.0",
|
||||
"kanti/hub-updater": "dev-master"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
83
composer.lock
generated
83
composer.lock
generated
|
|
@ -1,22 +1,61 @@
|
|||
{
|
||||
"_readme": [
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
|
||||
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"hash": "f4031afd76d9924ba9ef2f3fe17a97ab",
|
||||
"hash": "09a845c7ac1f579f79cdd0196a86199d",
|
||||
"packages": [
|
||||
{
|
||||
"name": "kanti/hub-updater",
|
||||
"version": "dev-master",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Kanti/hub-updater.git",
|
||||
"reference": "fd965ed3524720d70a0cdddbd95e83f536c9b24f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Kanti/hub-updater/zipball/fd965ed3524720d70a0cdddbd95e83f536c9b24f",
|
||||
"reference": "fd965ed3524720d70a0cdddbd95e83f536c9b24f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Kanti\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"GPL-2.0"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Kanti",
|
||||
"email": "git@kanti.de",
|
||||
"homepage": "https://kanti.de",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Simple Github Updater for Web Projects [PHP]",
|
||||
"time": "2014-10-31 18:20:52"
|
||||
},
|
||||
{
|
||||
"name": "michelf/php-markdown",
|
||||
"version": "dev-lib",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/michelf/php-markdown.git",
|
||||
"reference": "6f952ee180e9bd345f3dd6005aa11e0f5dcbd1b8"
|
||||
"reference": "a8c56ecd5e9e7c7d37d00c814c864c3bc8b32694"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/6f952ee180e9bd345f3dd6005aa11e0f5dcbd1b8",
|
||||
"reference": "6f952ee180e9bd345f3dd6005aa11e0f5dcbd1b8",
|
||||
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/a8c56ecd5e9e7c7d37d00c814c864c3bc8b32694",
|
||||
"reference": "a8c56ecd5e9e7c7d37d00c814c864c3bc8b32694",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -54,20 +93,20 @@
|
|||
"keywords": [
|
||||
"markdown"
|
||||
],
|
||||
"time": "2013-11-29 21:49:31"
|
||||
"time": "2014-08-10 19:25:52"
|
||||
},
|
||||
{
|
||||
"name": "suin/php-rss-writer",
|
||||
"version": "1.2",
|
||||
"version": "1.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/suin/php-rss-writer.git",
|
||||
"reference": "1.2"
|
||||
"url": "https://github.com/suin/php-rss-writer.git",
|
||||
"reference": "82812ff988bb470f746d24e153cdc138e8838ff3"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://github.com/suin/php-rss-writer/zipball/1.2",
|
||||
"reference": "1.2",
|
||||
"url": "https://api.github.com/repos/suin/php-rss-writer/zipball/82812ff988bb470f746d24e153cdc138e8838ff3",
|
||||
"reference": "82812ff988bb470f746d24e153cdc138e8838ff3",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -99,23 +138,17 @@
|
|||
"rss",
|
||||
"writer"
|
||||
],
|
||||
"time": "2012-08-23 00:45:18"
|
||||
"time": "2014-03-12 06:05:28"
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
|
||||
],
|
||||
"aliases": [
|
||||
|
||||
],
|
||||
"packages-dev": [],
|
||||
"aliases": [],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": {
|
||||
"michelf/php-markdown": 20
|
||||
"michelf/php-markdown": 20,
|
||||
"kanti/hub-updater": 20
|
||||
},
|
||||
"platform": [
|
||||
|
||||
],
|
||||
"platform-dev": [
|
||||
|
||||
]
|
||||
"prefer-stable": false,
|
||||
"platform": [],
|
||||
"platform-dev": []
|
||||
}
|
||||
|
|
|
|||
BIN
composer.phar
BIN
composer.phar
Binary file not shown.
|
|
@ -1,4 +1,4 @@
|
|||
<?php
|
||||
|
||||
require 'vendor/autoload.php';
|
||||
require 'system/htmly.php';
|
||||
require 'system/htmly.php';
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
<?php
|
||||
|
||||
// Return username.ini value
|
||||
function user($key, $user = null) {
|
||||
function user($key, $user = null)
|
||||
{
|
||||
$value = 'config/users/' . $user . '.ini';
|
||||
static $_config = array();
|
||||
if (file_exists($value)) {
|
||||
|
|
@ -13,7 +14,8 @@ function user($key, $user = null) {
|
|||
}
|
||||
|
||||
// Create a session
|
||||
function session($user, $pass, $str = null) {
|
||||
function session($user, $pass, $str = null)
|
||||
{
|
||||
$user_file = 'config/users/' . $user . '.ini';
|
||||
$user_enc = user('encryption', $user);
|
||||
$user_pass = user('password', $user);
|
||||
|
|
@ -32,21 +34,22 @@ function session($user, $pass, $str = null) {
|
|||
}
|
||||
|
||||
// Clean URLs
|
||||
function remove_accent($str) {
|
||||
function remove_accent($str)
|
||||
{
|
||||
$a = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ', 'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ');
|
||||
$b = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o');
|
||||
$cyr = array('ж', 'ч', 'щ', 'ш', 'ю', 'а', 'б', 'в', 'г', 'д', 'e', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ъ', 'ь', 'я', 'Ж', 'Ч', 'Щ', 'Ш', 'Ю', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ъ', 'Ь', 'Я');
|
||||
$lat = array('zh', 'ch', 'sht', 'sh', 'yu', 'a', 'b', 'v', 'g', 'd', 'e', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'y', 'x', 'q', 'Zh', 'Ch', 'Sht', 'Sh', 'Yu', 'A', 'B', 'V', 'G', 'D', 'E', 'Z', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'c', 'Y', 'X', 'Q');
|
||||
$a = array_merge($a,$cyr);
|
||||
$b = array_merge($b,$lat);
|
||||
$a = array_merge($a, $cyr);
|
||||
$b = array_merge($b, $lat);
|
||||
return str_replace($a, $b, $str);
|
||||
}
|
||||
|
||||
// Edit blog posts
|
||||
function edit_post($title, $tag, $url, $content, $oldfile, $destination = null, $description = null, $date = null) {
|
||||
function edit_post($title, $tag, $url, $content, $oldfile, $destination = null, $description = null, $date = null)
|
||||
{
|
||||
$oldurl = explode('_', $oldfile);
|
||||
if($date !== null)
|
||||
{
|
||||
if($date !== null) {
|
||||
$oldurl[0] = substr($oldurl[0], 0, strrpos($oldurl[0], '/')) . '/' . date('Y-m-d-h-i-s',strtotime($date));
|
||||
}
|
||||
|
||||
|
|
@ -97,7 +100,8 @@ function edit_post($title, $tag, $url, $content, $oldfile, $destination = null,
|
|||
}
|
||||
|
||||
// Edit static page
|
||||
function edit_page($title, $url, $content, $oldfile, $destination = null, $description = null) {
|
||||
function edit_page($title, $url, $content, $oldfile, $destination = null, $description = null)
|
||||
{
|
||||
$dir = substr($oldfile, 0, strrpos($oldfile, '/'));
|
||||
|
||||
$post_title = $title;
|
||||
|
|
@ -135,7 +139,8 @@ function edit_page($title, $url, $content, $oldfile, $destination = null, $descr
|
|||
}
|
||||
|
||||
// Add blog post
|
||||
function add_post($title, $tag, $url, $content, $user, $description = null) {
|
||||
function add_post($title, $tag, $url, $content, $user, $description = null)
|
||||
{
|
||||
|
||||
$post_date = date('Y-m-d-H-i-s');
|
||||
$post_title = $title;
|
||||
|
|
@ -169,7 +174,8 @@ function add_post($title, $tag, $url, $content, $user, $description = null) {
|
|||
}
|
||||
|
||||
// Add static page
|
||||
function add_page($title, $url, $content, $description = null) {
|
||||
function add_page($title, $url, $content, $description = null)
|
||||
{
|
||||
|
||||
$post_title = $title;
|
||||
$post_url = strtolower(preg_replace(array('/[^a-zA-Z0-9 \-\p{L}]/u', '/[ -]+/', '/^-|-$/'), array('', '-', ''), remove_accent($url)));
|
||||
|
|
@ -201,7 +207,8 @@ function add_page($title, $url, $content, $description = null) {
|
|||
}
|
||||
|
||||
// Add static sub page
|
||||
function add_sub_page($title, $url, $content, $static, $description = null) {
|
||||
function add_sub_page($title, $url, $content, $static, $description = null)
|
||||
{
|
||||
|
||||
$post_title = $title;
|
||||
$post_url = strtolower(preg_replace(array('/[^a-zA-Z0-9 \-\p{L}]/u', '/[ -]+/', '/^-|-$/'), array('', '-', ''), remove_accent($url)));
|
||||
|
|
@ -233,7 +240,8 @@ function add_sub_page($title, $url, $content, $static, $description = null) {
|
|||
}
|
||||
|
||||
// Delete blog post
|
||||
function delete_post($file, $destination) {
|
||||
function delete_post($file, $destination)
|
||||
{
|
||||
if (!login())
|
||||
return null;
|
||||
$deleted_content = $file;
|
||||
|
|
@ -258,7 +266,8 @@ function delete_post($file, $destination) {
|
|||
}
|
||||
|
||||
// Delete static page
|
||||
function delete_page($file, $destination) {
|
||||
function delete_page($file, $destination)
|
||||
{
|
||||
if (!login())
|
||||
return null;
|
||||
$deleted_content = $file;
|
||||
|
|
@ -287,8 +296,8 @@ function delete_page($file, $destination) {
|
|||
}
|
||||
|
||||
// Edit user profile
|
||||
function edit_profile($title, $content, $user) {
|
||||
|
||||
function edit_profile($title, $content, $user)
|
||||
{
|
||||
$user_title = $title;
|
||||
$user_content = '<!--t ' . $user_title . ' t-->' . "\n\n" . $content;
|
||||
|
||||
|
|
@ -311,8 +320,8 @@ function edit_profile($title, $content, $user) {
|
|||
}
|
||||
|
||||
// Import RSS feed
|
||||
function migrate($title, $time, $tags, $content, $url, $user, $source) {
|
||||
|
||||
function migrate($title, $time, $tags, $content, $url, $user, $source)
|
||||
{
|
||||
$post_date = date('Y-m-d-H-i-s', $time);
|
||||
$post_title = $title;
|
||||
$post_tag = preg_replace(array('/[^a-zA-Z0-9,.\-\p{L}]/u', '/[ -]+/', '/^-|-$/'), array('', '-', ''), remove_accent($tags));
|
||||
|
|
@ -341,7 +350,8 @@ function migrate($title, $time, $tags, $content, $url, $user, $source) {
|
|||
}
|
||||
|
||||
// Fetch RSS feed
|
||||
function get_feed($feed_url, $credit, $message = null) {
|
||||
function get_feed($feed_url, $credit, $message = null)
|
||||
{
|
||||
$source = file_get_contents($feed_url);
|
||||
$feed = new SimpleXmlElement($source);
|
||||
if (!empty($feed->channel->item)) {
|
||||
|
|
@ -350,7 +360,7 @@ function get_feed($feed_url, $credit, $message = null) {
|
|||
$descriptionB = $entry->description;
|
||||
if (!empty($descriptionA)) {
|
||||
$content = $descriptionA;
|
||||
} else if (!empty($descriptionB)) {
|
||||
} elseif (!empty($descriptionB)) {
|
||||
$content = preg_replace('#<br\s*/?>#i', "\n", $descriptionB);
|
||||
} else {
|
||||
return $str = '<li>Can not read the feed content.</li>';
|
||||
|
|
@ -376,7 +386,8 @@ function get_feed($feed_url, $credit, $message = null) {
|
|||
}
|
||||
|
||||
// Get recent posts by user
|
||||
function get_recent_posts() {
|
||||
function get_recent_posts()
|
||||
{
|
||||
if (isset($_SESSION[config("site.url")]['user'])) {
|
||||
$posts = get_profile($_SESSION[config("site.url")]['user'], 1, 5);
|
||||
if (!empty($posts)) {
|
||||
|
|
@ -411,7 +422,8 @@ function get_recent_posts() {
|
|||
}
|
||||
|
||||
// Get all static pages
|
||||
function get_recent_pages() {
|
||||
function get_recent_pages()
|
||||
{
|
||||
if (isset($_SESSION[config("site.url")]['user'])) {
|
||||
$posts = get_static_post(null);
|
||||
if (!empty($posts)) {
|
||||
|
|
@ -458,7 +470,8 @@ function get_recent_pages() {
|
|||
}
|
||||
|
||||
// Get all available zip files
|
||||
function get_backup_files() {
|
||||
function get_backup_files()
|
||||
{
|
||||
if (isset($_SESSION[config("site.url")]['user'])) {
|
||||
$files = get_zip_files();
|
||||
if (!empty($files)) {
|
||||
|
|
@ -505,8 +518,8 @@ function get_backup_files() {
|
|||
}
|
||||
}
|
||||
|
||||
function clear_post_cache($post_date, $post_tag, $post_url, $filename) {
|
||||
|
||||
function clear_post_cache($post_date, $post_tag, $post_url, $filename)
|
||||
{
|
||||
$b = str_replace('/', '#', site_path() . '/');
|
||||
$t = explode('-', $post_date);
|
||||
$c = explode(',', $post_tag);
|
||||
|
|
@ -585,7 +598,8 @@ function clear_post_cache($post_date, $post_tag, $post_url, $filename) {
|
|||
}
|
||||
}
|
||||
|
||||
function clear_page_cache($url) {
|
||||
function clear_page_cache($url)
|
||||
{
|
||||
$b = str_replace('/', '#', site_path() . '/');
|
||||
$p = 'cache/page/' . $b . $url . '.cache';
|
||||
if (file_exists($p)) {
|
||||
|
|
|
|||
115
system/htmly.php
115
system/htmly.php
|
|
@ -6,7 +6,6 @@ date_default_timezone_set('Asia/Jakarta');
|
|||
// Explicitly including the dispatch framework,
|
||||
// and our functions.php file
|
||||
require 'system/includes/dispatch.php';
|
||||
require 'system/includes/updater.php';
|
||||
require 'system/includes/functions.php';
|
||||
require 'system/admin/admin.php';
|
||||
require 'system/includes/session.php';
|
||||
|
|
@ -14,8 +13,7 @@ include 'system/includes/opml.php';
|
|||
|
||||
// Load the configuration file
|
||||
config('source', 'config/config.ini');
|
||||
if(config('timezone'))
|
||||
{
|
||||
if(config('timezone')) {
|
||||
date_default_timezone_set(config('timezone'));
|
||||
}
|
||||
|
||||
|
|
@ -65,7 +63,7 @@ get('/index', function () {
|
|||
});
|
||||
|
||||
// Get submitted login data
|
||||
post('/login', function() {
|
||||
post('/login', function () {
|
||||
|
||||
$proper = is_csrf_proper(from($_REQUEST, 'csrf_token'));
|
||||
|
||||
|
|
@ -112,7 +110,7 @@ post('/login', function() {
|
|||
}
|
||||
});
|
||||
|
||||
get("/:static/:sub/edit", function($static, $sub) {
|
||||
get("/:static/:sub/edit", function ($static, $sub) {
|
||||
|
||||
if (login()) {
|
||||
|
||||
|
|
@ -145,7 +143,7 @@ get("/:static/:sub/edit", function($static, $sub) {
|
|||
header("location: $login");
|
||||
}
|
||||
});
|
||||
post("/:static/:sub/edit", function($static, $sub) {
|
||||
post("/:static/:sub/edit", function ($static, $sub) {
|
||||
$proper = is_csrf_proper(from($_REQUEST, 'csrf_token'));
|
||||
|
||||
if (!login()) {
|
||||
|
|
@ -195,7 +193,7 @@ post("/:static/:sub/edit", function($static, $sub) {
|
|||
}
|
||||
});
|
||||
|
||||
get("/:static/:sub/delete", function($static, $sub) {
|
||||
get("/:static/:sub/delete", function ($static, $sub) {
|
||||
|
||||
if (login()) {
|
||||
|
||||
|
|
@ -228,7 +226,7 @@ get("/:static/:sub/delete", function($static, $sub) {
|
|||
header("location: $login");
|
||||
}
|
||||
});
|
||||
post("/:static/:sub/delete", function() {
|
||||
post("/:static/:sub/delete", function () {
|
||||
|
||||
$proper = is_csrf_proper(from($_REQUEST, 'csrf_token'));
|
||||
if ($proper && login()) {
|
||||
|
|
@ -239,7 +237,7 @@ post("/:static/:sub/delete", function() {
|
|||
});
|
||||
|
||||
// The blog post page
|
||||
get('/:year/:month/:name', function($year, $month, $name) {
|
||||
get('/:year/:month/:name', function ($year, $month, $name) {
|
||||
|
||||
if (config("views.counter") != "true") {
|
||||
if (!login()) {
|
||||
|
|
@ -296,7 +294,7 @@ get('/:year/:month/:name', function($year, $month, $name) {
|
|||
});
|
||||
|
||||
// Edit blog post
|
||||
get('/:year/:month/:name/edit', function($year, $month, $name) {
|
||||
get('/:year/:month/:name/edit', function ($year, $month, $name) {
|
||||
|
||||
if (login()) {
|
||||
|
||||
|
|
@ -334,7 +332,7 @@ get('/:year/:month/:name/edit', function($year, $month, $name) {
|
|||
});
|
||||
|
||||
// Get edited data for blog post
|
||||
post('/:year/:month/:name/edit', function() {
|
||||
post('/:year/:month/:name/edit', function () {
|
||||
|
||||
$proper = is_csrf_proper(from($_REQUEST, 'csrf_token'));
|
||||
|
||||
|
|
@ -348,11 +346,10 @@ post('/:year/:month/:name/edit', function() {
|
|||
$date = from($_REQUEST, 'date');
|
||||
$time = from($_REQUEST, 'time');
|
||||
$dateTime = null;
|
||||
if($date !== null && $time !== null)
|
||||
{
|
||||
if($date !== null && $time !== null) {
|
||||
$dateTime = $date . ' ' . $time;
|
||||
}
|
||||
|
||||
|
||||
if ($proper && !empty($title) && !empty($tag) && !empty($content)) {
|
||||
if(empty($url)) {
|
||||
$url = $title;
|
||||
|
|
@ -389,7 +386,7 @@ post('/:year/:month/:name/edit', function() {
|
|||
});
|
||||
|
||||
// Delete blog post
|
||||
get('/:year/:month/:name/delete', function($year, $month, $name) {
|
||||
get('/:year/:month/:name/delete', function ($year, $month, $name) {
|
||||
|
||||
if (login()) {
|
||||
|
||||
|
|
@ -427,7 +424,7 @@ get('/:year/:month/:name/delete', function($year, $month, $name) {
|
|||
});
|
||||
|
||||
// Get deleted data for blog post
|
||||
post('/:year/:month/:name/delete', function() {
|
||||
post('/:year/:month/:name/delete', function () {
|
||||
|
||||
$proper = is_csrf_proper(from($_REQUEST, 'csrf_token'));
|
||||
if ($proper && login()) {
|
||||
|
|
@ -438,7 +435,7 @@ post('/:year/:month/:name/delete', function() {
|
|||
});
|
||||
|
||||
// The author page
|
||||
get('/author/:profile', function($profile) {
|
||||
get('/author/:profile', function ($profile) {
|
||||
|
||||
if (!login()) {
|
||||
file_cache($_SERVER['REQUEST_URI']);
|
||||
|
|
@ -487,7 +484,7 @@ get('/author/:profile', function($profile) {
|
|||
});
|
||||
|
||||
// Edit the profile
|
||||
get('/edit/profile', function() {
|
||||
get('/edit/profile', function () {
|
||||
|
||||
if (login()) {
|
||||
|
||||
|
|
@ -504,7 +501,7 @@ get('/edit/profile', function() {
|
|||
});
|
||||
|
||||
// Get edited data for static page
|
||||
post('/edit/profile', function() {
|
||||
post('/edit/profile', function () {
|
||||
|
||||
$proper = is_csrf_proper(from($_REQUEST, 'csrf_token'));
|
||||
|
||||
|
|
@ -597,7 +594,7 @@ get('/admin/posts', function () {
|
|||
});
|
||||
|
||||
// The author page
|
||||
get('/admin/mine', function() {
|
||||
get('/admin/mine', function () {
|
||||
|
||||
if (login()) {
|
||||
|
||||
|
|
@ -654,7 +651,7 @@ get('/admin/mine', function() {
|
|||
});
|
||||
|
||||
// The static page
|
||||
get('/:static', function($static) {
|
||||
get('/:static', function ($static) {
|
||||
|
||||
if ($static === 'sitemap.xml' || $static === 'sitemap.base.xml' || $static === 'sitemap.post.xml' || $static === 'sitemap.static.xml' || $static === 'sitemap.tag.xml' || $static === 'sitemap.archive.xml' || $static === 'sitemap.author.xml') {
|
||||
|
||||
|
|
@ -662,17 +659,17 @@ get('/:static', function($static) {
|
|||
|
||||
if ($static === 'sitemap.xml') {
|
||||
generate_sitemap('index');
|
||||
} else if ($static === 'sitemap.base.xml') {
|
||||
} elseif ($static === 'sitemap.base.xml') {
|
||||
generate_sitemap('base');
|
||||
} else if ($static === 'sitemap.post.xml') {
|
||||
} elseif ($static === 'sitemap.post.xml') {
|
||||
generate_sitemap('post');
|
||||
} else if ($static === 'sitemap.static.xml') {
|
||||
} elseif ($static === 'sitemap.static.xml') {
|
||||
generate_sitemap('static');
|
||||
} else if ($static === 'sitemap.tag.xml') {
|
||||
} elseif ($static === 'sitemap.tag.xml') {
|
||||
generate_sitemap('tag');
|
||||
} else if ($static === 'sitemap.archive.xml') {
|
||||
} elseif ($static === 'sitemap.archive.xml') {
|
||||
generate_sitemap('archive');
|
||||
} else if ($static === 'sitemap.author.xml') {
|
||||
} elseif ($static === 'sitemap.author.xml') {
|
||||
generate_sitemap('author');
|
||||
}
|
||||
|
||||
|
|
@ -745,7 +742,7 @@ get('/:static', function($static) {
|
|||
});
|
||||
|
||||
// Edit the static page
|
||||
get('/:static/edit', function($static) {
|
||||
get('/:static/edit', function ($static) {
|
||||
|
||||
if (login()) {
|
||||
|
||||
|
|
@ -772,7 +769,7 @@ get('/:static/edit', function($static) {
|
|||
});
|
||||
|
||||
// Get edited data for static page
|
||||
post('/:static/edit', function() {
|
||||
post('/:static/edit', function () {
|
||||
$proper = is_csrf_proper(from($_REQUEST, 'csrf_token'));
|
||||
|
||||
if (!login()) {
|
||||
|
|
@ -820,7 +817,7 @@ post('/:static/edit', function() {
|
|||
});
|
||||
|
||||
// Deleted the static page
|
||||
get('/:static/delete', function($static) {
|
||||
get('/:static/delete', function ($static) {
|
||||
|
||||
if (login()) {
|
||||
|
||||
|
|
@ -847,7 +844,7 @@ get('/:static/delete', function($static) {
|
|||
});
|
||||
|
||||
// Get deleted data for static page
|
||||
post('/:static/delete', function() {
|
||||
post('/:static/delete', function () {
|
||||
|
||||
$proper = is_csrf_proper(from($_REQUEST, 'csrf_token'));
|
||||
if ($proper && login()) {
|
||||
|
|
@ -858,7 +855,7 @@ post('/:static/delete', function() {
|
|||
});
|
||||
|
||||
// Add blog post
|
||||
get('/add/post', function() {
|
||||
get('/add/post', function () {
|
||||
|
||||
if (login()) {
|
||||
|
||||
|
|
@ -876,7 +873,7 @@ get('/add/post', function() {
|
|||
});
|
||||
|
||||
// Get submitted blog post data
|
||||
post('/add/post', function() {
|
||||
post('/add/post', function () {
|
||||
|
||||
$proper = is_csrf_proper(from($_REQUEST, 'csrf_token'));
|
||||
|
||||
|
|
@ -922,7 +919,7 @@ post('/add/post', function() {
|
|||
});
|
||||
|
||||
// Add the static page
|
||||
get('/add/page', function() {
|
||||
get('/add/page', function () {
|
||||
|
||||
if (login()) {
|
||||
|
||||
|
|
@ -940,7 +937,7 @@ get('/add/page', function() {
|
|||
});
|
||||
|
||||
// Get submitted static page data
|
||||
post('/add/page', function() {
|
||||
post('/add/page', function () {
|
||||
|
||||
$proper = is_csrf_proper(from($_REQUEST, 'csrf_token'));
|
||||
|
||||
|
|
@ -980,7 +977,7 @@ post('/add/page', function() {
|
|||
});
|
||||
|
||||
// Import page
|
||||
get('/admin/import', function() {
|
||||
get('/admin/import', function () {
|
||||
if (login()) {
|
||||
config('views.root', 'system/admin/views');
|
||||
render('import', array(
|
||||
|
|
@ -996,7 +993,7 @@ get('/admin/import', function() {
|
|||
});
|
||||
|
||||
// Get import post
|
||||
post('/admin/import', function() {
|
||||
post('/admin/import', function () {
|
||||
|
||||
$proper = is_csrf_proper(from($_REQUEST, 'csrf_token'));
|
||||
|
||||
|
|
@ -1040,7 +1037,7 @@ post('/admin/import', function() {
|
|||
});
|
||||
|
||||
// Backup page
|
||||
get('/admin/backup', function() {
|
||||
get('/admin/backup', function () {
|
||||
if (login()) {
|
||||
config('views.root', 'system/admin/views');
|
||||
render('backup', array(
|
||||
|
|
@ -1056,7 +1053,7 @@ get('/admin/backup', function() {
|
|||
});
|
||||
|
||||
// Create Zip file
|
||||
get('/admin/backup-start', function() {
|
||||
get('/admin/backup-start', function () {
|
||||
if (login()) {
|
||||
config('views.root', 'system/admin/views');
|
||||
render('backup-start', array(
|
||||
|
|
@ -1072,7 +1069,7 @@ get('/admin/backup-start', function() {
|
|||
});
|
||||
|
||||
// Delete all cache
|
||||
get('/admin/clear-cache', function() {
|
||||
get('/admin/clear-cache', function () {
|
||||
if (login()) {
|
||||
config('views.root', 'system/admin/views');
|
||||
render('clear-cache', array(
|
||||
|
|
@ -1089,7 +1086,7 @@ get('/admin/clear-cache', function() {
|
|||
|
||||
|
||||
// The tag page
|
||||
get('/tag/:tag', function($tag) {
|
||||
get('/tag/:tag', function ($tag) {
|
||||
|
||||
if (!login()) {
|
||||
file_cache($_SERVER['REQUEST_URI']);
|
||||
|
|
@ -1119,7 +1116,7 @@ get('/tag/:tag', function($tag) {
|
|||
});
|
||||
|
||||
// The archive page
|
||||
get('/archive/:req', function($req) {
|
||||
get('/archive/:req', function ($req) {
|
||||
|
||||
if (!login()) {
|
||||
file_cache($_SERVER['REQUEST_URI']);
|
||||
|
|
@ -1143,7 +1140,7 @@ get('/archive/:req', function($req) {
|
|||
|
||||
if (isset($time[0]) && isset($time[1]) && isset($time[2])) {
|
||||
$timestamp = date('d F Y', $date);
|
||||
} else if (isset($time[0]) && isset($time[1])) {
|
||||
} elseif (isset($time[0]) && isset($time[1])) {
|
||||
$timestamp = date('F Y', $date);
|
||||
} else {
|
||||
$timestamp = $req;
|
||||
|
|
@ -1165,7 +1162,7 @@ get('/archive/:req', function($req) {
|
|||
});
|
||||
|
||||
// The search page
|
||||
get('/search/:keyword', function($keyword) {
|
||||
get('/search/:keyword', function ($keyword) {
|
||||
|
||||
if (!login()) {
|
||||
file_cache($_SERVER['REQUEST_URI']);
|
||||
|
|
@ -1196,16 +1193,19 @@ get('/search/:keyword', function($keyword) {
|
|||
});
|
||||
|
||||
// The JSON API
|
||||
get('/api/json', function() {
|
||||
get('/api/json', function () {
|
||||
|
||||
header('Content-type: application/json');
|
||||
|
||||
// Print the 10 latest posts as JSON
|
||||
echo generate_json(get_posts(null, 1, config('json.count')));
|
||||
$page = from($_GET, 'page');
|
||||
$page = $page ? (int) $page : 1;
|
||||
$perpage = config('json.count');
|
||||
|
||||
echo generate_json(get_posts(null, $page, $perpage));
|
||||
});
|
||||
|
||||
// Show the RSS feed
|
||||
get('/feed/rss', function() {
|
||||
get('/feed/rss', function () {
|
||||
|
||||
header('Content-Type: application/rss+xml');
|
||||
|
||||
|
|
@ -1214,7 +1214,7 @@ get('/feed/rss', function() {
|
|||
});
|
||||
|
||||
// Generate OPML file
|
||||
get('/feed/opml', function() {
|
||||
get('/feed/opml', function () {
|
||||
|
||||
header('Content-Type: text/xml');
|
||||
|
||||
|
|
@ -1222,11 +1222,14 @@ get('/feed/opml', function() {
|
|||
echo generate_opml();
|
||||
});
|
||||
|
||||
get('/admin/update/now/:csrf', function($CSRF) {
|
||||
get('/admin/update/now/:csrf', function ($CSRF) {
|
||||
|
||||
$proper = is_csrf_proper($CSRF);
|
||||
$updater = new Updater;
|
||||
if (login() && $proper && $updater->updateAble()) {
|
||||
$updater = new \Kanti\HubUpdater(array(
|
||||
'name' => 'danpros/htmly',
|
||||
'prerelease' => !!config("prerelease"),
|
||||
));
|
||||
if (login() && $proper && $updater->able()) {
|
||||
$updater->update();
|
||||
config('views.root', 'system/admin/views');
|
||||
render('updated-to', array(
|
||||
|
|
@ -1239,7 +1242,7 @@ get('/admin/update/now/:csrf', function($CSRF) {
|
|||
}
|
||||
});
|
||||
|
||||
get('/:static/add', function($static) {
|
||||
get('/:static/add', function ($static) {
|
||||
|
||||
if (login()) {
|
||||
|
||||
|
|
@ -1263,7 +1266,7 @@ get('/:static/add', function($static) {
|
|||
header("location: $login");
|
||||
}
|
||||
});
|
||||
post('/:static/add', function($static) {
|
||||
post('/:static/add', function ($static) {
|
||||
|
||||
$proper = is_csrf_proper(from($_REQUEST, 'csrf_token'));
|
||||
|
||||
|
|
@ -1302,7 +1305,7 @@ post('/:static/add', function($static) {
|
|||
}
|
||||
});
|
||||
|
||||
get('/:static/:sub', function($static, $sub) {
|
||||
get('/:static/:sub', function ($static, $sub) {
|
||||
|
||||
$father_post = get_static_post($static);
|
||||
if (!$father_post) {
|
||||
|
|
@ -1334,7 +1337,7 @@ get('/:static/:sub', function($static, $sub) {
|
|||
// If we get here, it means that
|
||||
// nothing has been matched above
|
||||
|
||||
get('.*', function() {
|
||||
get('.*', function () {
|
||||
not_found();
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@ if (!defined('PHP_VERSION_ID') || PHP_VERSION_ID < 50300) {
|
|||
error(500, 'dispatch requires at least PHP 5.3 to run.');
|
||||
}
|
||||
|
||||
function _log($message) {
|
||||
function _log($message)
|
||||
{
|
||||
if (config('debug.enable') == true && php_sapi_name() !== 'cli') {
|
||||
$file = config('debug.log');
|
||||
$type = $file ? 3 : 0;
|
||||
|
|
@ -11,8 +12,8 @@ function _log($message) {
|
|||
}
|
||||
}
|
||||
|
||||
function site_url(){
|
||||
|
||||
function site_url()
|
||||
{
|
||||
if (config('site.url') == null)
|
||||
error(500, '[site.url] is not set');
|
||||
|
||||
|
|
@ -20,36 +21,39 @@ function site_url(){
|
|||
return rtrim(config('site.url'),'/').'/';
|
||||
}
|
||||
|
||||
function site_path(){
|
||||
function site_path()
|
||||
{
|
||||
static $_path;
|
||||
|
||||
if (config('site.url') == null)
|
||||
error(500, '[site.url] is not set');
|
||||
|
||||
|
||||
if (!$_path)
|
||||
$_path = rtrim(parse_url(config('site.url'), PHP_URL_PATH),'/');
|
||||
|
||||
|
||||
return $_path;
|
||||
}
|
||||
|
||||
function error($code, $message) {
|
||||
function error($code, $message)
|
||||
{
|
||||
@header("HTTP/1.0 {$code} {$message}", true, $code);
|
||||
die($message);
|
||||
}
|
||||
|
||||
function config($key, $value = null) {
|
||||
|
||||
function config($key, $value = null)
|
||||
{
|
||||
static $_config = array();
|
||||
|
||||
if ($key === 'source' && file_exists($value))
|
||||
$_config = parse_ini_file($value, true);
|
||||
else if ($value == null)
|
||||
elseif ($value == null)
|
||||
return (isset($_config[$key]) ? $_config[$key] : null);
|
||||
else
|
||||
$_config[$key] = $value;
|
||||
}
|
||||
|
||||
function to_b64($str) {
|
||||
function to_b64($str)
|
||||
{
|
||||
$str = base64_encode($str);
|
||||
$str = preg_replace('/\//', '_', $str);
|
||||
$str = preg_replace('/\+/', '.', $str);
|
||||
|
|
@ -57,7 +61,8 @@ function to_b64($str) {
|
|||
return trim($str, '-');
|
||||
}
|
||||
|
||||
function from_b64($str) {
|
||||
function from_b64($str)
|
||||
{
|
||||
$str = preg_replace('/\_/', '/', $str);
|
||||
$str = preg_replace('/\./', '+', $str);
|
||||
$str = preg_replace('/\-/', '=', $str);
|
||||
|
|
@ -67,8 +72,8 @@ function from_b64($str) {
|
|||
|
||||
if (extension_loaded('mcrypt')) {
|
||||
|
||||
function encrypt($decoded, $algo = MCRYPT_RIJNDAEL_256, $mode = MCRYPT_MODE_CBC) {
|
||||
|
||||
function encrypt($decoded, $algo = MCRYPT_RIJNDAEL_256, $mode = MCRYPT_MODE_CBC)
|
||||
{
|
||||
if (($secret = config('cookies.secret')) == null)
|
||||
error(500, '[cookies.secret] is not set');
|
||||
|
||||
|
|
@ -80,8 +85,8 @@ if (extension_loaded('mcrypt')) {
|
|||
return sprintf('%s|%s', $encrypted, to_b64($iv_code));
|
||||
}
|
||||
|
||||
function decrypt($encoded, $algo = MCRYPT_RIJNDAEL_256, $mode = MCRYPT_MODE_CBC) {
|
||||
|
||||
function decrypt($encoded, $algo = MCRYPT_RIJNDAEL_256, $mode = MCRYPT_MODE_CBC)
|
||||
{
|
||||
if (($secret = config('cookies.secret')) == null)
|
||||
error(500, '[cookies.secret] is not set');
|
||||
|
||||
|
|
@ -96,13 +101,14 @@ if (extension_loaded('mcrypt')) {
|
|||
|
||||
}
|
||||
|
||||
function set_cookie($name, $value, $expire = 31536000, $path = '/') {
|
||||
function set_cookie($name, $value, $expire = 31536000, $path = '/')
|
||||
{
|
||||
$value = (function_exists('encrypt') ? encrypt($value) : $value);
|
||||
setcookie($name, $value, time() + $expire, $path);
|
||||
}
|
||||
|
||||
function get_cookie($name) {
|
||||
|
||||
function get_cookie($name)
|
||||
{
|
||||
$value = from($_COOKIE, $name);
|
||||
|
||||
if ($value)
|
||||
|
|
@ -111,7 +117,8 @@ function get_cookie($name) {
|
|||
return $value;
|
||||
}
|
||||
|
||||
function delete_cookie() {
|
||||
function delete_cookie()
|
||||
{
|
||||
$cookies = func_get_args();
|
||||
foreach ($cookies as $ck)
|
||||
setcookie($ck, '', -10, '/');
|
||||
|
|
@ -120,7 +127,8 @@ function delete_cookie() {
|
|||
// if we have APC loaded, enable cache functions
|
||||
if (extension_loaded('apc')) {
|
||||
|
||||
function cache($key, $func, $ttl = 0) {
|
||||
function cache($key, $func, $ttl = 0)
|
||||
{
|
||||
if (($data = apc_fetch($key)) === false) {
|
||||
$data = call_user_func($func);
|
||||
if ($data !== null) {
|
||||
|
|
@ -130,7 +138,8 @@ if (extension_loaded('apc')) {
|
|||
return $data;
|
||||
}
|
||||
|
||||
function cache_invalidate() {
|
||||
function cache_invalidate()
|
||||
{
|
||||
foreach (func_get_args() as $key) {
|
||||
apc_delete($key);
|
||||
}
|
||||
|
|
@ -138,8 +147,8 @@ if (extension_loaded('apc')) {
|
|||
|
||||
}
|
||||
|
||||
function warn($name = null, $message = null) {
|
||||
|
||||
function warn($name = null, $message = null)
|
||||
{
|
||||
static $warnings = array();
|
||||
|
||||
if ($name == '*')
|
||||
|
|
@ -154,15 +163,18 @@ function warn($name = null, $message = null) {
|
|||
$warnings[$name] = $message;
|
||||
}
|
||||
|
||||
function _u($str) {
|
||||
function _u($str)
|
||||
{
|
||||
return urlencode($str);
|
||||
}
|
||||
|
||||
function _h($str, $enc = 'UTF-8', $flags = ENT_QUOTES) {
|
||||
function _h($str, $enc = 'UTF-8', $flags = ENT_QUOTES)
|
||||
{
|
||||
return htmlentities($str, $flags, $enc);
|
||||
}
|
||||
|
||||
function from($source, $name) {
|
||||
function from($source, $name)
|
||||
{
|
||||
if (is_array($name)) {
|
||||
$data = array();
|
||||
foreach ($name as $k)
|
||||
|
|
@ -172,8 +184,8 @@ function from($source, $name) {
|
|||
return isset($source[$name]) ? $source[$name] : null ;
|
||||
}
|
||||
|
||||
function stash($name, $value = null) {
|
||||
|
||||
function stash($name, $value = null)
|
||||
{
|
||||
static $_stash = array();
|
||||
|
||||
if ($value === null)
|
||||
|
|
@ -184,26 +196,26 @@ function stash($name, $value = null) {
|
|||
return $value;
|
||||
}
|
||||
|
||||
function method($verb = null) {
|
||||
|
||||
function method($verb = null)
|
||||
{
|
||||
if ($verb == null || (strtoupper($verb) == strtoupper($_SERVER['REQUEST_METHOD'])))
|
||||
return strtoupper($_SERVER['REQUEST_METHOD']);
|
||||
|
||||
error(400, 'bad request');
|
||||
}
|
||||
|
||||
function client_ip() {
|
||||
|
||||
function client_ip()
|
||||
{
|
||||
if (isset($_SERVER['HTTP_CLIENT_IP']))
|
||||
return $_SERVER['HTTP_CLIENT_IP'];
|
||||
else if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
|
||||
elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
|
||||
return $_SERVER['HTTP_X_FORWARDED_FOR'];
|
||||
|
||||
return $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
|
||||
function redirect(/* $code_or_path, $path_or_cond, $cond */) {
|
||||
|
||||
function redirect(/* $code_or_path, $path_or_cond, $cond */)
|
||||
{
|
||||
$argv = func_get_args();
|
||||
$argc = count($argv);
|
||||
|
||||
|
|
@ -243,8 +255,8 @@ function redirect(/* $code_or_path, $path_or_cond, $cond */) {
|
|||
exit;
|
||||
}
|
||||
|
||||
function partial($view, $locals = null) {
|
||||
|
||||
function partial($view, $locals = null)
|
||||
{
|
||||
if (is_array($locals) && count($locals)) {
|
||||
extract($locals, EXTR_SKIP);
|
||||
}
|
||||
|
|
@ -267,11 +279,13 @@ function partial($view, $locals = null) {
|
|||
return '';
|
||||
}
|
||||
|
||||
function content($value = null) {
|
||||
function content($value = null)
|
||||
{
|
||||
return stash('$content$', $value);
|
||||
}
|
||||
|
||||
function render($view, $locals = null, $layout = null) {
|
||||
function render($view, $locals = null, $layout = null)
|
||||
{
|
||||
$login = login();
|
||||
if(!$login) {
|
||||
$c = str_replace('/', '#', str_replace('?', '~', $_SERVER['REQUEST_URI']));
|
||||
|
|
@ -319,14 +333,15 @@ function render($view, $locals = null, $layout = null) {
|
|||
}
|
||||
}
|
||||
|
||||
function json($obj, $code = 200) {
|
||||
function json($obj, $code = 200)
|
||||
{
|
||||
header('Content-type: application/json', true, $code);
|
||||
echo json_encode($obj);
|
||||
exit;
|
||||
}
|
||||
|
||||
function condition() {
|
||||
|
||||
function condition()
|
||||
{
|
||||
static $cb_map = array();
|
||||
|
||||
$argv = func_get_args();
|
||||
|
|
@ -350,8 +365,8 @@ function condition() {
|
|||
error(500, 'condition ['.$name.'] is undefined');
|
||||
}
|
||||
|
||||
function middleware($cb_or_path = null) {
|
||||
|
||||
function middleware($cb_or_path = null)
|
||||
{
|
||||
static $cb_map = array();
|
||||
|
||||
if ($cb_or_path == null || is_string($cb_or_path)) {
|
||||
|
|
@ -363,8 +378,8 @@ function middleware($cb_or_path = null) {
|
|||
}
|
||||
}
|
||||
|
||||
function filter($sym, $cb_or_val = null) {
|
||||
|
||||
function filter($sym, $cb_or_val = null)
|
||||
{
|
||||
static $cb_map = array();
|
||||
|
||||
if (is_callable($cb_or_val)) {
|
||||
|
|
@ -384,7 +399,8 @@ function filter($sym, $cb_or_val = null) {
|
|||
error(500, 'bad call to filter()');
|
||||
}
|
||||
|
||||
function route_to_regex($route) {
|
||||
function route_to_regex($route)
|
||||
{
|
||||
$route = preg_replace_callback('@:[\w]+@i', function ($matches) {
|
||||
$token = str_replace(':', '', $matches[0]);
|
||||
return '(?P<'.$token.'>[a-z0-9_\0-\.]+)';
|
||||
|
|
@ -392,8 +408,8 @@ function route_to_regex($route) {
|
|||
return '@^'.rtrim($route, '/').'$@i';
|
||||
}
|
||||
|
||||
function route($method, $pattern, $callback = null) {
|
||||
|
||||
function route($method, $pattern, $callback = null)
|
||||
{
|
||||
// callback map by request type
|
||||
static $route_map = array(
|
||||
'GET' => array(),
|
||||
|
|
@ -458,16 +474,18 @@ function route($method, $pattern, $callback = null) {
|
|||
|
||||
}
|
||||
|
||||
function get($path, $cb) {
|
||||
function get($path, $cb)
|
||||
{
|
||||
route('GET', $path, $cb);
|
||||
}
|
||||
|
||||
function post($path, $cb) {
|
||||
function post($path, $cb)
|
||||
{
|
||||
route('POST', $path, $cb);
|
||||
}
|
||||
|
||||
function flash($key, $msg = null, $now = false) {
|
||||
|
||||
function flash($key, $msg = null, $now = false)
|
||||
{
|
||||
static $x = array(),
|
||||
$f = null;
|
||||
|
||||
|
|
@ -497,10 +515,10 @@ function flash($key, $msg = null, $now = false) {
|
|||
$x[$key] = $msg;
|
||||
}
|
||||
|
||||
function dispatch() {
|
||||
|
||||
function dispatch()
|
||||
{
|
||||
$path = urldecode($_SERVER['REQUEST_URI']);
|
||||
|
||||
|
||||
if (config('site.url') !== null)
|
||||
$path = preg_replace('@^'.preg_quote(site_path()).'@', '', $path);
|
||||
|
||||
|
|
@ -511,4 +529,3 @@ function dispatch() {
|
|||
|
||||
route(method(), "/{$uri}");
|
||||
}
|
||||
?>
|
||||
|
|
@ -7,10 +7,11 @@ use \Michelf\MarkdownExtra;
|
|||
use \Suin\RSSWriter\Feed;
|
||||
use \Suin\RSSWriter\Channel;
|
||||
use \Suin\RSSWriter\Item;
|
||||
use \Kanti\HubUpdater;
|
||||
|
||||
// Get blog post path. Unsorted. Mostly used on widget.
|
||||
function get_post_unsorted() {
|
||||
|
||||
function get_post_unsorted()
|
||||
{
|
||||
static $_unsorted = array();
|
||||
|
||||
if (empty($_unsorted)) {
|
||||
|
|
@ -25,8 +26,8 @@ function get_post_unsorted() {
|
|||
}
|
||||
|
||||
// Get blog post with more info about the path. Sorted by filename.
|
||||
function get_post_sorted() {
|
||||
|
||||
function get_post_sorted()
|
||||
{
|
||||
static $_sorted = array();
|
||||
|
||||
if (empty($_sorted)) {
|
||||
|
|
@ -39,9 +40,9 @@ function get_post_sorted() {
|
|||
return $_sorted;
|
||||
}
|
||||
|
||||
// Get static page path. Unsorted.
|
||||
function get_static_pages() {
|
||||
|
||||
// Get static page path. Unsorted.
|
||||
function get_static_pages()
|
||||
{
|
||||
static $_page = array();
|
||||
|
||||
if (empty($_page)) {
|
||||
|
|
@ -54,9 +55,9 @@ function get_static_pages() {
|
|||
return $_page;
|
||||
}
|
||||
|
||||
// Get static page path. Unsorted.
|
||||
function get_static_sub_pages($static = null) {
|
||||
|
||||
// Get static page path. Unsorted.
|
||||
function get_static_sub_pages($static = null)
|
||||
{
|
||||
static $_sub_page = array();
|
||||
|
||||
if (empty($_sub_page)) {
|
||||
|
|
@ -68,7 +69,7 @@ function get_static_sub_pages($static = null) {
|
|||
}
|
||||
if ($static != null) {
|
||||
$stringLen = strlen($static);
|
||||
return array_filter($_sub_page, function($sub_page)use($static, $stringLen) {
|
||||
return array_filter($_sub_page, function ($sub_page) use ($static, $stringLen) {
|
||||
$x = explode("/", $sub_page);
|
||||
if ($x[count($x) - 2] == $static) {
|
||||
return true;
|
||||
|
|
@ -79,9 +80,9 @@ function get_static_sub_pages($static = null) {
|
|||
return $_sub_page;
|
||||
}
|
||||
|
||||
// Get author bio path. Unsorted.
|
||||
function get_author_names() {
|
||||
|
||||
// Get author bio path. Unsorted.
|
||||
function get_author_names()
|
||||
{
|
||||
static $_author = array();
|
||||
|
||||
if (empty($_author)) {
|
||||
|
|
@ -95,9 +96,9 @@ function get_author_names() {
|
|||
return $_author;
|
||||
}
|
||||
|
||||
// Get backup file.
|
||||
function get_zip_files() {
|
||||
|
||||
// Get backup file.
|
||||
function get_zip_files()
|
||||
{
|
||||
static $_zip = array();
|
||||
|
||||
if (empty($_zip)) {
|
||||
|
|
@ -112,18 +113,20 @@ function get_zip_files() {
|
|||
}
|
||||
|
||||
// usort function. Sort by filename.
|
||||
function sortfile($a, $b) {
|
||||
function sortfile($a, $b)
|
||||
{
|
||||
return $a['filename'] == $b['filename'] ? 0 : ( $a['filename'] < $b['filename'] ) ? 1 : -1;
|
||||
}
|
||||
|
||||
// usort function. Sort by date.
|
||||
function sortdate($a, $b) {
|
||||
function sortdate($a, $b)
|
||||
{
|
||||
return $a->date == $b->date ? 0 : ( $a->date < $b->date ) ? 1 : -1;
|
||||
}
|
||||
|
||||
// Rebuilt cache index
|
||||
function rebuilt_cache($type) {
|
||||
|
||||
function rebuilt_cache($type)
|
||||
{
|
||||
$dir = 'cache/index';
|
||||
$posts_cache_sorted = array();
|
||||
$posts_cache_unsorted = array();
|
||||
|
|
@ -173,9 +176,9 @@ function rebuilt_cache($type) {
|
|||
}
|
||||
}
|
||||
|
||||
// Return blog posts.
|
||||
function get_posts($posts, $page = 1, $perpage = 0) {
|
||||
|
||||
// Return blog posts.
|
||||
function get_posts($posts, $page = 1, $perpage = 0)
|
||||
{
|
||||
if (empty($posts)) {
|
||||
$posts = get_post_sorted();
|
||||
}
|
||||
|
|
@ -238,7 +241,7 @@ function get_posts($posts, $page = 1, $perpage = 0) {
|
|||
$post->tagb = implode(' » ', $bc);
|
||||
|
||||
$post->file = $filepath;
|
||||
|
||||
|
||||
$content = file_get_contents($filepath);
|
||||
|
||||
// Extract the title and body
|
||||
|
|
@ -260,8 +263,8 @@ function get_posts($posts, $page = 1, $perpage = 0) {
|
|||
}
|
||||
|
||||
// Find post by year, month and name, previous, and next.
|
||||
function find_post($year, $month, $name) {
|
||||
|
||||
function find_post($year, $month, $name)
|
||||
{
|
||||
$posts = get_post_sorted();
|
||||
|
||||
foreach ($posts as $index => $v) {
|
||||
|
|
@ -304,8 +307,8 @@ function find_post($year, $month, $name) {
|
|||
}
|
||||
|
||||
// Return tag page.
|
||||
function get_tag($tag, $page, $perpage, $random) {
|
||||
|
||||
function get_tag($tag, $page, $perpage, $random)
|
||||
{
|
||||
$posts = get_post_sorted();
|
||||
|
||||
if ($random === true) {
|
||||
|
|
@ -339,8 +342,8 @@ function get_tag($tag, $page, $perpage, $random) {
|
|||
}
|
||||
|
||||
// Return archive page.
|
||||
function get_archive($req, $page, $perpage) {
|
||||
|
||||
function get_archive($req, $page, $perpage)
|
||||
{
|
||||
$posts = get_post_sorted();
|
||||
|
||||
$tmp = array();
|
||||
|
|
@ -361,8 +364,8 @@ function get_archive($req, $page, $perpage) {
|
|||
}
|
||||
|
||||
// Return posts list on profile.
|
||||
function get_profile($profile, $page, $perpage) {
|
||||
|
||||
function get_profile($profile, $page, $perpage)
|
||||
{
|
||||
$posts = get_post_sorted();
|
||||
|
||||
$tmp = array();
|
||||
|
|
@ -384,8 +387,8 @@ function get_profile($profile, $page, $perpage) {
|
|||
}
|
||||
|
||||
// Return author bio.
|
||||
function get_bio($author) {
|
||||
|
||||
function get_bio($author)
|
||||
{
|
||||
$names = get_author_names();
|
||||
|
||||
$username = 'config/users/' . $author . '.ini';
|
||||
|
|
@ -430,8 +433,8 @@ function get_bio($author) {
|
|||
}
|
||||
}
|
||||
|
||||
function default_profile($author) {
|
||||
|
||||
function default_profile($author)
|
||||
{
|
||||
$tmp = array();
|
||||
$profile = new stdClass;
|
||||
|
||||
|
|
@ -444,8 +447,8 @@ function default_profile($author) {
|
|||
}
|
||||
|
||||
// Return static page.
|
||||
function get_static_post($static) {
|
||||
|
||||
function get_static_post($static)
|
||||
{
|
||||
$posts = get_static_pages();
|
||||
|
||||
$tmp = array();
|
||||
|
|
@ -488,8 +491,8 @@ function get_static_post($static) {
|
|||
}
|
||||
|
||||
// Return static page.
|
||||
function get_static_sub_post($static, $sub_static) {
|
||||
|
||||
function get_static_sub_post($static, $sub_static)
|
||||
{
|
||||
$posts = get_static_sub_pages($static);
|
||||
|
||||
$tmp = array();
|
||||
|
|
@ -530,8 +533,8 @@ function get_static_sub_post($static, $sub_static) {
|
|||
}
|
||||
|
||||
// Return search page.
|
||||
function get_keyword($keyword, $page, $perpage) {
|
||||
|
||||
function get_keyword($keyword, $page, $perpage)
|
||||
{
|
||||
$posts = get_post_sorted();
|
||||
|
||||
$tmp = array();
|
||||
|
|
@ -558,7 +561,8 @@ function get_keyword($keyword, $page, $perpage) {
|
|||
}
|
||||
|
||||
// Get related posts base on post tag.
|
||||
function get_related($tag) {
|
||||
function get_related($tag)
|
||||
{
|
||||
$perpage = config('related.count');
|
||||
$posts = get_tag(strip_tags($tag), 1, $perpage + 1, true);
|
||||
$tmp = array();
|
||||
|
|
@ -587,8 +591,8 @@ function get_related($tag) {
|
|||
}
|
||||
|
||||
// Return post count. Matching $var and $str provided.
|
||||
function get_count($var, $str) {
|
||||
|
||||
function get_count($var, $str)
|
||||
{
|
||||
$posts = get_post_sorted();
|
||||
|
||||
$tmp = array();
|
||||
|
|
@ -604,8 +608,8 @@ function get_count($var, $str) {
|
|||
}
|
||||
|
||||
// Return seaarch result count
|
||||
function keyword_count($keyword) {
|
||||
|
||||
function keyword_count($keyword)
|
||||
{
|
||||
$posts = get_post_sorted();
|
||||
|
||||
$tmp = array();
|
||||
|
|
@ -627,15 +631,14 @@ function keyword_count($keyword) {
|
|||
return count($tmp);
|
||||
}
|
||||
|
||||
function recent() {
|
||||
function recent()
|
||||
{
|
||||
$str = '<ul>';
|
||||
$posts = get_posts(null, 1, 5);
|
||||
foreach($posts as $post)
|
||||
{
|
||||
foreach($posts as $post) {
|
||||
$str .= '<li><a href="' . $post->url . '">' . $post->title . '</a></li>';
|
||||
}
|
||||
if(empty($posts))
|
||||
{
|
||||
if(empty($posts)) {
|
||||
$str .= '<li>No Posts Found</li>';
|
||||
}
|
||||
$str .= '</ul>';
|
||||
|
|
@ -643,8 +646,8 @@ function recent() {
|
|||
}
|
||||
|
||||
// Return an archive list, categorized by year and month.
|
||||
function archive_list() {
|
||||
|
||||
function archive_list()
|
||||
{
|
||||
$posts = get_post_unsorted();
|
||||
$by_year = array();
|
||||
$col = array();
|
||||
|
|
@ -714,8 +717,8 @@ EOF;
|
|||
}
|
||||
|
||||
// Return tag cloud.
|
||||
function tag_cloud() {
|
||||
|
||||
function tag_cloud()
|
||||
{
|
||||
$posts = get_post_unsorted();
|
||||
$tags = array();
|
||||
|
||||
|
|
@ -746,7 +749,8 @@ function tag_cloud() {
|
|||
|
||||
// Helper function to determine whether
|
||||
// to show the previous buttons
|
||||
function has_prev($prev) {
|
||||
function has_prev($prev)
|
||||
{
|
||||
if (!empty($prev)) {
|
||||
return array(
|
||||
'url' => $prev->url,
|
||||
|
|
@ -757,7 +761,8 @@ function has_prev($prev) {
|
|||
|
||||
// Helper function to determine whether
|
||||
// to show the next buttons
|
||||
function has_next($next) {
|
||||
function has_next($next)
|
||||
{
|
||||
if (!empty($next)) {
|
||||
return array(
|
||||
'url' => $next->url,
|
||||
|
|
@ -768,7 +773,8 @@ function has_next($next) {
|
|||
|
||||
// Helper function to determine whether
|
||||
// to show the pagination buttons
|
||||
function has_pagination($total, $perpage, $page = 1) {
|
||||
function has_pagination($total, $perpage, $page = 1)
|
||||
{
|
||||
if (!$total) {
|
||||
$total = count(get_post_unsorted());
|
||||
}
|
||||
|
|
@ -779,8 +785,8 @@ function has_pagination($total, $perpage, $page = 1) {
|
|||
}
|
||||
|
||||
// Get the meta description
|
||||
function get_description($string) {
|
||||
|
||||
function get_description($string)
|
||||
{
|
||||
$string = remove_accent($string);
|
||||
$string = preg_replace('/[^A-Za-z0-9 !@#$%^&*(),.-]/u', ' ', strip_tags($string));
|
||||
$string = ltrim($string);
|
||||
|
|
@ -789,8 +795,8 @@ function get_description($string) {
|
|||
}
|
||||
|
||||
// Get the teaser
|
||||
function get_teaser($text, $url) {
|
||||
|
||||
function get_teaser($text, $url)
|
||||
{
|
||||
$teaserType = config('teaser.type');
|
||||
|
||||
if (strlen(strip_tags($text)) < config('teaser.char') || $teaserType === 'full') {
|
||||
|
|
@ -805,8 +811,8 @@ function get_teaser($text, $url) {
|
|||
}
|
||||
|
||||
// Get thumbnail from image and Youtube.
|
||||
function get_thumbnail($text) {
|
||||
|
||||
function get_thumbnail($text)
|
||||
{
|
||||
if (config('img.thumbnail') == 'true') {
|
||||
|
||||
$teaserType = config('teaser.type');
|
||||
|
|
@ -837,13 +843,14 @@ function get_thumbnail($text) {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Return edit tab on post
|
||||
function tab($p) {
|
||||
function tab($p)
|
||||
{
|
||||
$user = $_SESSION[config("site.url")]['user'];
|
||||
$role = user('role', $user);
|
||||
if (isset($p->author)) {
|
||||
|
|
@ -856,7 +863,8 @@ function tab($p) {
|
|||
}
|
||||
|
||||
// Use base64 encode image to speed up page load time.
|
||||
function base64_encode_image($filename = string, $filetype = string) {
|
||||
function base64_encode_image($filename = string, $filetype = string)
|
||||
{
|
||||
if ($filename) {
|
||||
$imgbinary = fread(fopen($filename, "r"), filesize($filename));
|
||||
return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);
|
||||
|
|
@ -864,8 +872,8 @@ function base64_encode_image($filename = string, $filetype = string) {
|
|||
}
|
||||
|
||||
// Social links
|
||||
function social($imgDir = null) {
|
||||
|
||||
function social($imgDir = null)
|
||||
{
|
||||
$twitter = config('social.twitter');
|
||||
$facebook = config('social.facebook');
|
||||
$google = config('social.google');
|
||||
|
|
@ -896,8 +904,8 @@ function social($imgDir = null) {
|
|||
}
|
||||
|
||||
// Copyright
|
||||
function copyright() {
|
||||
|
||||
function copyright()
|
||||
{
|
||||
$blogcp = blog_copyright();
|
||||
$credit = 'Proudly powered by <a href="http://www.htmly.com" target="_blank">HTMLy</a>.';
|
||||
|
||||
|
|
@ -909,7 +917,8 @@ function copyright() {
|
|||
}
|
||||
|
||||
// Disqus on post.
|
||||
function disqus($title = null, $url = null) {
|
||||
function disqus($title = null, $url = null)
|
||||
{
|
||||
$comment = config('comment.system');
|
||||
$disqus = config('disqus.shortname');
|
||||
$script = <<<EOF
|
||||
|
|
@ -917,7 +926,7 @@ function disqus($title = null, $url = null) {
|
|||
var disqus_shortname = '{$disqus}';
|
||||
var disqus_title = '{$title}';
|
||||
var disqus_url = '{$url}';
|
||||
(function() {
|
||||
(function () {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
|
|
@ -930,13 +939,14 @@ EOF;
|
|||
}
|
||||
|
||||
// Disqus comment count on teaser
|
||||
function disqus_count() {
|
||||
function disqus_count()
|
||||
{
|
||||
$comment = config('comment.system');
|
||||
$disqus = config('disqus.shortname');
|
||||
$script = <<<EOF
|
||||
<script type="text/javascript">
|
||||
var disqus_shortname = '{$disqus}';
|
||||
(function() {
|
||||
(function () {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
dsq.src = '//' + disqus_shortname + '.disqus.com/count.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
|
|
@ -949,7 +959,8 @@ EOF;
|
|||
}
|
||||
|
||||
// Disqus recent comments
|
||||
function recent_comments() {
|
||||
function recent_comments()
|
||||
{
|
||||
$comment = config('comment.system');
|
||||
$disqus = config('disqus.shortname');
|
||||
$script = <<<EOF
|
||||
|
|
@ -965,12 +976,13 @@ EOF;
|
|||
}
|
||||
}
|
||||
|
||||
function facebook() {
|
||||
function facebook()
|
||||
{
|
||||
$comment = config('comment.system');
|
||||
$appid = config('fb.appid');
|
||||
$script = <<<EOF
|
||||
<div id="fb-root"></div>
|
||||
<script>(function(d, s, id) {
|
||||
<script>(function (d, s, id) {
|
||||
var js, fjs = d.getElementsByTagName(s)[0];
|
||||
if (d.getElementById(id)) return;
|
||||
js = d.createElement(s); js.id = id;
|
||||
|
|
@ -986,7 +998,8 @@ EOF;
|
|||
}
|
||||
|
||||
// Google Publisher (Google+ page).
|
||||
function publisher() {
|
||||
function publisher()
|
||||
{
|
||||
$publisher = config('google.publisher');
|
||||
if (!empty($publisher)) {
|
||||
return $publisher;
|
||||
|
|
@ -994,19 +1007,17 @@ function publisher() {
|
|||
}
|
||||
|
||||
// Google Analytics
|
||||
function analytics($analyticsDir = null) {
|
||||
function analytics($analyticsDir = null)
|
||||
{
|
||||
$analytics = config('google.analytics.id');
|
||||
if($analyticsDir === null)
|
||||
{
|
||||
if($analyticsDir === null) {
|
||||
$analyticsDir = '//www.google-analytics.com/analytics.js';
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
$analyticsDir = site_url() . 'themes/' . $analyticsDir . 'analytics.js';
|
||||
}
|
||||
$script = <<<EOF
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(function (i,s,o,g,r,a,m) {i['GoogleAnalyticsObject']=r;i[r]=i[r]||function () {
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','{$analyticsDir}','ga');
|
||||
|
|
@ -1021,7 +1032,8 @@ EOF;
|
|||
}
|
||||
|
||||
// Menu
|
||||
function menu() {
|
||||
function menu()
|
||||
{
|
||||
$menu = config('blog.menu');
|
||||
$req = $_SERVER['REQUEST_URI'];
|
||||
|
||||
|
|
@ -1080,7 +1092,8 @@ function menu() {
|
|||
}
|
||||
}
|
||||
|
||||
function get_title_from_file($v) {
|
||||
function get_title_from_file($v)
|
||||
{
|
||||
// Get the contents and convert it to HTML
|
||||
$content = MarkdownExtra::defaultTransform(file_get_contents($v));
|
||||
|
||||
|
|
@ -1177,7 +1190,8 @@ function get_menu() {//aktive Link for Sub Pages ::TODO
|
|||
}
|
||||
|
||||
// Search form
|
||||
function search() {
|
||||
function search()
|
||||
{
|
||||
echo <<<EOF
|
||||
<form id="search-form" method="get">
|
||||
<input type="text" class="search-input" name="search" value="Search" onfocus="if (this.value == 'Search') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Search';}">
|
||||
|
|
@ -1191,15 +1205,16 @@ EOF;
|
|||
}
|
||||
|
||||
// The not found error
|
||||
function not_found() {
|
||||
function not_found()
|
||||
{
|
||||
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
|
||||
render('404', null, false);
|
||||
die();
|
||||
}
|
||||
|
||||
// Turn an array of posts into an RSS feed
|
||||
function generate_rss($posts) {
|
||||
|
||||
function generate_rss($posts)
|
||||
{
|
||||
$feed = new Feed();
|
||||
$channel = new Channel();
|
||||
$rssLength = config('rss.char');
|
||||
|
|
@ -1244,8 +1259,8 @@ function generate_rss($posts) {
|
|||
}
|
||||
|
||||
// Return post, archive url for sitemap
|
||||
function get_path() {
|
||||
|
||||
function get_path()
|
||||
{
|
||||
$posts = get_post_sorted();
|
||||
|
||||
$tmp = array();
|
||||
|
|
@ -1295,8 +1310,8 @@ function get_path() {
|
|||
}
|
||||
|
||||
// Return static page path for sitemap
|
||||
function get_static_path() {
|
||||
|
||||
function get_static_path()
|
||||
{
|
||||
$posts = get_static_pages();
|
||||
|
||||
$tmp = array();
|
||||
|
|
@ -1322,8 +1337,8 @@ function get_static_path() {
|
|||
}
|
||||
|
||||
// Generate sitemap.xml.
|
||||
function generate_sitemap($str) {
|
||||
|
||||
function generate_sitemap($str)
|
||||
{
|
||||
header('X-Robots-Tag: noindex');
|
||||
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>';
|
||||
|
|
@ -1456,8 +1471,8 @@ function generate_sitemap($str) {
|
|||
}
|
||||
|
||||
// Function to generate OPML file
|
||||
function generate_opml() {
|
||||
|
||||
function generate_opml()
|
||||
{
|
||||
$opml_data = array(
|
||||
'head' => array(
|
||||
'title' => blog_title() . ' OPML File',
|
||||
|
|
@ -1478,18 +1493,19 @@ function generate_opml() {
|
|||
)
|
||||
);
|
||||
|
||||
$opml = new OPML($opml_data);
|
||||
$opml = new opml($opml_data);
|
||||
echo $opml->render();
|
||||
}
|
||||
|
||||
// Turn an array of posts into a JSON
|
||||
function generate_json($posts) {
|
||||
function generate_json($posts)
|
||||
{
|
||||
return json_encode($posts);
|
||||
}
|
||||
|
||||
// Create Zip files
|
||||
function Zip($source, $destination, $include_dir = false) {
|
||||
|
||||
function Zip($source, $destination, $include_dir = false)
|
||||
{
|
||||
if (!extension_loaded('zip') || !file_exists($source)) {
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1517,11 +1533,11 @@ function Zip($source, $destination, $include_dir = false) {
|
|||
|
||||
if (is_dir($file) === true) {
|
||||
$zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
|
||||
} else if (is_file($file) === true) {
|
||||
} elseif (is_file($file) === true) {
|
||||
$zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
|
||||
}
|
||||
}
|
||||
} else if (is_file($source) === true) {
|
||||
} elseif (is_file($source) === true) {
|
||||
$zip->addFromString(basename($source), file_get_contents($source));
|
||||
}
|
||||
|
||||
|
|
@ -1529,7 +1545,8 @@ function Zip($source, $destination, $include_dir = false) {
|
|||
}
|
||||
|
||||
// TRUE if the current page is the front page.
|
||||
function is_front() {
|
||||
function is_front()
|
||||
{
|
||||
$req = $_SERVER['REQUEST_URI'];
|
||||
if ($req == site_path() . '/' || strpos($req, site_path() . '/?page') !== false) {
|
||||
return true;
|
||||
|
|
@ -1539,7 +1556,8 @@ function is_front() {
|
|||
}
|
||||
|
||||
// TRUE if the current page is an index page like frontpage, tag index, archive index and search index.
|
||||
function is_index() {
|
||||
function is_index()
|
||||
{
|
||||
$req = $_SERVER['REQUEST_URI'];
|
||||
if (strpos($req, '/archive/') !== false || strpos($req, '/tag/') !== false || strpos($req, '/search/') !== false || $req == site_path() . '/' || strpos($req, site_path() . '/?page') !== false) {
|
||||
return true;
|
||||
|
|
@ -1549,33 +1567,39 @@ function is_index() {
|
|||
}
|
||||
|
||||
// Return blog title
|
||||
function blog_title() {
|
||||
function blog_title()
|
||||
{
|
||||
return config('blog.title');
|
||||
}
|
||||
|
||||
// Return blog tagline
|
||||
function blog_tagline() {
|
||||
function blog_tagline()
|
||||
{
|
||||
return config('blog.tagline');
|
||||
}
|
||||
|
||||
// Return blog description
|
||||
function blog_description() {
|
||||
function blog_description()
|
||||
{
|
||||
return config('blog.description');
|
||||
}
|
||||
|
||||
// Return blog copyright
|
||||
function blog_copyright() {
|
||||
function blog_copyright()
|
||||
{
|
||||
return config('blog.copyright');
|
||||
}
|
||||
|
||||
// Return author info
|
||||
function authorinfo($title = null, $body = null) {
|
||||
function authorinfo($title = null, $body = null)
|
||||
{
|
||||
if (config('author.info') == 'true') {
|
||||
return '<div class="author-info"><h4>by <strong>' . $title . '</strong></h4>' . $body . '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
function head_contents($title, $description, $canonical) {
|
||||
function head_contents($title, $description, $canonical)
|
||||
{
|
||||
$styleImage = config('lightbox');
|
||||
$jq = config('jquery');
|
||||
$output = '';
|
||||
|
|
@ -1596,8 +1620,7 @@ function head_contents($title, $description, $canonical) {
|
|||
$lightbox = '<script src="' . site_url() . 'system/plugins/lightbox/js/lightbox-2.6.min.js"></script>';
|
||||
$corejs = '<script src="' . site_url() . 'system/resources/htmly.js"></script>';
|
||||
$webmasterTools = '';
|
||||
if(!empty($wmt_id))
|
||||
{
|
||||
if(!empty($wmt_id)) {
|
||||
$webmasterTools = '<meta name="google-site-verification" content="' . $wmt_id . '" />';
|
||||
}
|
||||
|
||||
|
|
@ -1615,14 +1638,18 @@ function head_contents($title, $description, $canonical) {
|
|||
}
|
||||
|
||||
// Return toolbar
|
||||
function toolbar() {
|
||||
function toolbar()
|
||||
{
|
||||
$user = $_SESSION[config("site.url")]['user'];
|
||||
$role = user('role', $user);
|
||||
$base = site_url();
|
||||
|
||||
$CSRF = get_csrf();
|
||||
|
||||
$updater = new Updater;
|
||||
$updater = new HubUpdater(array(
|
||||
'name' => 'danpros/htmly',
|
||||
'prerelease' => !!config("prerelease"),
|
||||
));
|
||||
|
||||
echo <<<EOF
|
||||
<link href="{$base}themes/default/css/toolbar.css" rel="stylesheet" />
|
||||
|
|
@ -1639,7 +1666,7 @@ EOF;
|
|||
echo '<li><a href="' . $base . 'admin/import">Import</a></li>';
|
||||
echo '<li><a href="' . $base . 'admin/backup">Backup</a></li>';
|
||||
echo '<li><a href="' . $base . 'admin/clear-cache">Clear cache</a></li>';
|
||||
if ($updater->updateAble()) {
|
||||
if ($updater->able()) {
|
||||
echo '<li><a href="' . $base . 'admin/update/now/' . $CSRF . '">Update to ' . $updater->getName() . '</a></li>';
|
||||
}
|
||||
echo '<li><a href="' . $base . 'logout">Logout</a></li>';
|
||||
|
|
@ -1647,9 +1674,9 @@ EOF;
|
|||
echo '</ul></div>';
|
||||
}
|
||||
|
||||
// File cache
|
||||
function file_cache($request) {
|
||||
|
||||
// File cache
|
||||
function file_cache($request)
|
||||
{
|
||||
if(config('cache.off')) return;
|
||||
|
||||
$c = str_replace('/', '#', str_replace('?', '~', $request));
|
||||
|
|
@ -1662,25 +1689,29 @@ function file_cache($request) {
|
|||
}
|
||||
}
|
||||
|
||||
function generate_csrf_token() {
|
||||
function generate_csrf_token()
|
||||
{
|
||||
$_SESSION[config("site.url")]['csrf_token'] = sha1(microtime(true) . mt_rand(10000, 90000));
|
||||
}
|
||||
|
||||
function get_csrf() {
|
||||
function get_csrf()
|
||||
{
|
||||
if (!isset($_SESSION[config("site.url")]['csrf_token']) || empty($_SESSION[config("site.url")]['csrf_token'])) {
|
||||
generate_csrf_token();
|
||||
}
|
||||
return $_SESSION[config("site.url")]['csrf_token'];
|
||||
}
|
||||
|
||||
function is_csrf_proper($csrf_token) {
|
||||
function is_csrf_proper($csrf_token)
|
||||
{
|
||||
if ($csrf_token == get_csrf()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function add_view($page) {
|
||||
function add_view($page)
|
||||
{
|
||||
$filename = "cache/count.json";
|
||||
$views = array();
|
||||
if (file_exists($filename)) {
|
||||
|
|
@ -1694,7 +1725,8 @@ function add_view($page) {
|
|||
file_put_contents($filename, json_encode($views));
|
||||
}
|
||||
|
||||
function get_views($page) {
|
||||
function get_views($page)
|
||||
{
|
||||
static $_views = array();
|
||||
|
||||
if (empty($_views)) {
|
||||
|
|
@ -1709,14 +1741,14 @@ function get_views($page) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
function get_content_tag($tag, $string, $alt = null) {
|
||||
function get_content_tag($tag, $string, $alt = null)
|
||||
{
|
||||
$reg = '/\<!--' . $tag . '(.+)' . $tag . '--\>/';
|
||||
$ary = array();
|
||||
if (preg_match($reg, $string, $ary)) {
|
||||
if (isset($ary[1])) {
|
||||
$result = trim($ary[1]);
|
||||
if(!empty($result))
|
||||
{
|
||||
if(!empty($result)) {
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
|
@ -1724,6 +1756,7 @@ function get_content_tag($tag, $string, $alt = null) {
|
|||
return $alt;
|
||||
}
|
||||
|
||||
function remove_html_comments($content) {
|
||||
function remove_html_comments($content)
|
||||
{
|
||||
return trim(preg_replace('/(\s|)<!--(.*)-->(\s|)/', '', $content));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,22 +1,22 @@
|
|||
<?php
|
||||
class OPML
|
||||
class opml
|
||||
{
|
||||
private $data;
|
||||
private $writer;
|
||||
|
||||
|
||||
public function __construct($data)
|
||||
{
|
||||
$this->data = $data;
|
||||
$this->writer = new XMLWriter();
|
||||
$this->writer->openMemory();
|
||||
}
|
||||
|
||||
|
||||
public function render()
|
||||
{
|
||||
$this->writer->startDocument('1.0', 'UTF-8');
|
||||
$this->writer->startElement('opml');
|
||||
$this->writer->writeAttribute('version', '2.0');
|
||||
|
||||
|
||||
// Header
|
||||
$this->writer->startElement('head');
|
||||
foreach ($this->data['head'] as $key => $value) {
|
||||
|
|
@ -24,7 +24,7 @@ class OPML
|
|||
}
|
||||
$this->writer->writeElement('dateModified', date("D, d M Y H:i:s T"));
|
||||
$this->writer->endElement();
|
||||
|
||||
|
||||
// Body
|
||||
$this->writer->startElement('body');
|
||||
foreach ($this->data['body'] as $outlines) {
|
||||
|
|
@ -35,11 +35,9 @@ class OPML
|
|||
$this->writer->endElement();
|
||||
}
|
||||
$this->writer->endElement();
|
||||
|
||||
|
||||
$this->writer->endElement();
|
||||
$this->writer->endDocument();
|
||||
return $this->writer->outputMemory();
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -2,13 +2,12 @@
|
|||
|
||||
session_start();
|
||||
|
||||
function login() {
|
||||
|
||||
function login()
|
||||
{
|
||||
if(isset($_SESSION[config("site.url")]['user']) && !empty($_SESSION[config("site.url")]['user'])) {
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,4 +7,4 @@
|
|||
});
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
})(jQuery);
|
||||
|
|
|
|||
2
vendor/autoload.php
vendored
2
vendor/autoload.php
vendored
|
|
@ -4,4 +4,4 @@
|
|||
|
||||
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInitd3ea151fa7d895c222811d503fe2be24::getLoader();
|
||||
return ComposerAutoloaderInit181c8f31ce07c1aa29ef78a7a9b430c3::getLoader();
|
||||
|
|
|
|||
47
vendor/composer/ClassLoader.php
vendored
47
vendor/composer/ClassLoader.php
vendored
|
|
@ -143,6 +143,8 @@ class ClassLoader
|
|||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-0 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function addPsr4($prefix, $paths, $prepend = false)
|
||||
{
|
||||
|
|
@ -202,10 +204,13 @@ class ClassLoader
|
|||
* Registers a set of PSR-4 directories for a given namespace,
|
||||
* replacing any others previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function setPsr4($prefix, $paths) {
|
||||
public function setPsr4($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr4 = (array) $paths;
|
||||
} else {
|
||||
|
|
@ -266,7 +271,7 @@ class ClassLoader
|
|||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
include $file;
|
||||
includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -291,8 +296,25 @@ class ClassLoader
|
|||
return $this->classMap[$class];
|
||||
}
|
||||
|
||||
$file = $this->findFileWithExtension($class, '.php');
|
||||
|
||||
// Search for Hack files if we are running on HHVM
|
||||
if ($file === null && defined('HHVM_VERSION')) {
|
||||
$file = $this->findFileWithExtension($class, '.hh');
|
||||
}
|
||||
|
||||
if ($file === null) {
|
||||
// Remember that this class does not exist.
|
||||
return $this->classMap[$class] = false;
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
private function findFileWithExtension($class, $ext)
|
||||
{
|
||||
// PSR-4 lookup
|
||||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . '.php';
|
||||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||
|
||||
$first = $class[0];
|
||||
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||
|
|
@ -321,7 +343,7 @@ class ClassLoader
|
|||
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
||||
} else {
|
||||
// PEAR-like class name
|
||||
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . '.php';
|
||||
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
||||
}
|
||||
|
||||
if (isset($this->prefixesPsr0[$first])) {
|
||||
|
|
@ -347,8 +369,15 @@ class ClassLoader
|
|||
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
|
||||
// Remember that this class does not exist.
|
||||
return $this->classMap[$class] = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope isolated include.
|
||||
*
|
||||
* Prevents access to $this/self from included files.
|
||||
*/
|
||||
function includeFile($file)
|
||||
{
|
||||
include $file;
|
||||
}
|
||||
|
|
|
|||
1
vendor/composer/autoload_psr4.php
vendored
1
vendor/composer/autoload_psr4.php
vendored
|
|
@ -6,4 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
|
|||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'Kanti\\' => array($vendorDir . '/kanti/hub-updater'),
|
||||
);
|
||||
|
|
|
|||
14
vendor/composer/autoload_real.php
vendored
14
vendor/composer/autoload_real.php
vendored
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInitd3ea151fa7d895c222811d503fe2be24
|
||||
class ComposerAutoloaderInit181c8f31ce07c1aa29ef78a7a9b430c3
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
|
|
@ -19,12 +19,9 @@ class ComposerAutoloaderInitd3ea151fa7d895c222811d503fe2be24
|
|||
return self::$loader;
|
||||
}
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInitd3ea151fa7d895c222811d503fe2be24', 'loadClassLoader'), true, true);
|
||||
spl_autoload_register(array('ComposerAutoloaderInit181c8f31ce07c1aa29ef78a7a9b430c3', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInitd3ea151fa7d895c222811d503fe2be24', 'loadClassLoader'));
|
||||
|
||||
$vendorDir = dirname(__DIR__);
|
||||
$baseDir = dirname($vendorDir);
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit181c8f31ce07c1aa29ef78a7a9b430c3', 'loadClassLoader'));
|
||||
|
||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
|
|
@ -46,3 +43,8 @@ class ComposerAutoloaderInitd3ea151fa7d895c222811d503fe2be24
|
|||
return $loader;
|
||||
}
|
||||
}
|
||||
|
||||
function composerRequire181c8f31ce07c1aa29ef78a7a9b430c3($file)
|
||||
{
|
||||
require $file;
|
||||
}
|
||||
|
|
|
|||
50
vendor/composer/installed.json
vendored
50
vendor/composer/installed.json
vendored
|
|
@ -1,4 +1,44 @@
|
|||
[
|
||||
{
|
||||
"name": "kanti/hub-updater",
|
||||
"version": "dev-master",
|
||||
"version_normalized": "9999999-dev",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Kanti/hub-updater.git",
|
||||
"reference": "fd965ed3524720d70a0cdddbd95e83f536c9b24f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Kanti/hub-updater/zipball/fd965ed3524720d70a0cdddbd95e83f536c9b24f",
|
||||
"reference": "fd965ed3524720d70a0cdddbd95e83f536c9b24f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"time": "2014-10-31 18:20:52",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Kanti\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"GPL-2.0"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Kanti",
|
||||
"email": "git@kanti.de",
|
||||
"homepage": "https://kanti.de",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Simple Github Updater for Web Projects [PHP]"
|
||||
},
|
||||
{
|
||||
"name": "michelf/php-markdown",
|
||||
"version": "dev-lib",
|
||||
|
|
@ -6,25 +46,25 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/michelf/php-markdown.git",
|
||||
"reference": "6f952ee180e9bd345f3dd6005aa11e0f5dcbd1b8"
|
||||
"reference": "a8c56ecd5e9e7c7d37d00c814c864c3bc8b32694"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/6f952ee180e9bd345f3dd6005aa11e0f5dcbd1b8",
|
||||
"reference": "6f952ee180e9bd345f3dd6005aa11e0f5dcbd1b8",
|
||||
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/a8c56ecd5e9e7c7d37d00c814c864c3bc8b32694",
|
||||
"reference": "a8c56ecd5e9e7c7d37d00c814c864c3bc8b32694",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"time": "2013-11-29 21:49:31",
|
||||
"time": "2014-08-10 19:25:52",
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-lib": "1.4.x-dev"
|
||||
}
|
||||
},
|
||||
"installation-source": "source",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Michelf": ""
|
||||
|
|
|
|||
32
vendor/kanti/hub-updater/CacheOneFile.php
vendored
Normal file
32
vendor/kanti/hub-updater/CacheOneFile.php
vendored
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
|
||||
namespace Kanti;
|
||||
|
||||
class CacheOneFile {
|
||||
|
||||
protected $fileName = "";
|
||||
protected $holdTime = 43200; //12h
|
||||
|
||||
public function __construct($fileName, $holdTime = 43200) {
|
||||
$this->fileName = $fileName;
|
||||
$this->holdTime = $holdTime;
|
||||
}
|
||||
|
||||
public function is() {
|
||||
if (!file_exists($this->fileName))
|
||||
return false;
|
||||
if (filemtime($this->fileName) < ( time() - $this->holdTime )) {
|
||||
unlink($this->fileName);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function get() {
|
||||
return file_get_contents($this->fileName);
|
||||
}
|
||||
|
||||
public function set($content) {
|
||||
file_put_contents($this->fileName, $content);
|
||||
}
|
||||
}
|
||||
197
vendor/kanti/hub-updater/HubUpdater.php
vendored
Normal file
197
vendor/kanti/hub-updater/HubUpdater.php
vendored
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
<?php
|
||||
|
||||
namespace Kanti;
|
||||
|
||||
class HubUpdater {
|
||||
|
||||
protected $options = [
|
||||
"cacheFile" => "downloadInfo.json",
|
||||
"versionFile" => "installedVersion.json",
|
||||
"zipFile" => "tmpZipFile.zip",
|
||||
|
||||
"name" => "",
|
||||
"branch" => "master",
|
||||
"cache" => "cache/",
|
||||
"save" => "",
|
||||
"prerelease" => false,
|
||||
];
|
||||
|
||||
protected $allRelease = [];
|
||||
protected $newestRelease = [];
|
||||
protected $streamContext = null;
|
||||
|
||||
public function __construct($option) {
|
||||
if(is_array($option))
|
||||
{
|
||||
if(! isset($option['name']))
|
||||
{
|
||||
throw new Exception('No Name in Option Set');
|
||||
}
|
||||
$this->options = $option + $this->options;
|
||||
}
|
||||
else if(is_string($option))
|
||||
{
|
||||
$this->options['name'] = $option;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception('No Option Set');
|
||||
}
|
||||
|
||||
$this->options['cache'] = rtrim($this->options['cache'],'/');
|
||||
if($this->options['cache'] !== ''){
|
||||
$this->options['cache'] .= '/';
|
||||
if (!file_exists($this->options['cache'])) {
|
||||
mkdir($this->options['cache']);
|
||||
}
|
||||
}
|
||||
$this->options['save'] = rtrim($this->options['save'],'/');
|
||||
if($this->options['save'] !== ''){
|
||||
$this->options['save'] .= '/';
|
||||
if (!file_exists($this->options['save'])) {
|
||||
mkdir($this->options['save']);
|
||||
}
|
||||
}
|
||||
|
||||
$this->cachedInfo = new CacheOneFile($this->options['cache'] . $this->options['cacheFile']);
|
||||
|
||||
$this->streamContext = stream_context_create(
|
||||
array(
|
||||
'http' => array(
|
||||
'header' => "User-Agent: Awesome-Update-My-Self-" . $this->options['name'] . "\r\n
|
||||
Accept: application/vnd.github.v3+json",
|
||||
),
|
||||
'ssl' => array(
|
||||
'cafile' => dirname(__FILE__) . '/ca_bundle.crt',
|
||||
'verify_peer' => true,
|
||||
),
|
||||
)
|
||||
);
|
||||
$this->streamContext2 = stream_context_create(
|
||||
array(
|
||||
'http' => array(
|
||||
'header' => "User-Agent: Awesome-Update-My-Self-" . $this->options['name'] . "\r\n",
|
||||
),
|
||||
'ssl' => array(
|
||||
'cafile' => dirname(__FILE__) . '/ca_bundle.crt',
|
||||
'verify_peer' => true,
|
||||
),
|
||||
)
|
||||
);
|
||||
$this->allRelease = $this->getRemoteInfos();
|
||||
}
|
||||
|
||||
protected function getRemoteInfos() {
|
||||
$path = "https://api.github.com/repos/" . $this->options['name'] ."/releases";
|
||||
if ($this->cachedInfo->is()) {
|
||||
$fileContent = $this->cachedInfo->get();
|
||||
} else {
|
||||
if (!in_array('https', stream_get_wrappers())) {
|
||||
return array();
|
||||
}
|
||||
$fileContent = @file_get_contents($path, false, $this->streamContext);
|
||||
|
||||
if ($fileContent === false) {
|
||||
return array();
|
||||
}
|
||||
$json = json_decode($fileContent, true);
|
||||
if(isset($json['message']))
|
||||
{
|
||||
$json = [];
|
||||
}
|
||||
$fileContent = json_encode($json, JSON_PRETTY_PRINT);
|
||||
$this->cachedInfo->set($fileContent);
|
||||
return $json;
|
||||
}
|
||||
return json_decode($fileContent, true);
|
||||
}
|
||||
|
||||
public function able() {
|
||||
if (!in_array('https', stream_get_wrappers()))
|
||||
return false;
|
||||
if (empty($this->allRelease))
|
||||
return false;
|
||||
|
||||
foreach($this->allRelease as $release)
|
||||
{
|
||||
if(!$this->options['prerelease'] && $release['prerelease'])
|
||||
continue;
|
||||
if($this->options['branch'] !== $release['target_commitish'])
|
||||
continue;
|
||||
$this->newestRelease = $release;
|
||||
break;
|
||||
}
|
||||
|
||||
if (file_exists($this->options['cache'] . $this->options['versionFile'])) {
|
||||
$fileContent = file_get_contents($this->options['cache'] . $this->options['versionFile']);
|
||||
$current = json_decode($fileContent, true);
|
||||
|
||||
if (isset($current['id']) && $current['id'] == $this->newestRelease['id'])
|
||||
return false;
|
||||
if (isset($current['tag_name']) && $current['tag_name'] == $this->newestRelease['tag_name'])
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function update() {
|
||||
if ($this->able()) {
|
||||
if ($this->download($this->newestRelease['zipball_url'] )) {
|
||||
if ($this->unZip()) {
|
||||
unlink($this->options['cache'] . $this->options['zipFile']);
|
||||
file_put_contents($this->options['cache'] . $this->options['versionFile'], json_encode(array(
|
||||
"id" => $this->newestRelease['id'],
|
||||
"tag_name" => $this->newestRelease['tag_name']
|
||||
), JSON_PRETTY_PRINT));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
protected function download($url) {
|
||||
$file = @fopen($url, 'r', false, $this->streamContext2);
|
||||
if ($file == false)
|
||||
return false;
|
||||
file_put_contents(dirname($_SERVER['SCRIPT_FILENAME']) . "/" . $this->options['cache'] . $this->options['zipFile'], $file);
|
||||
fclose($file);
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function unZip() {
|
||||
$path = dirname($_SERVER['SCRIPT_FILENAME']) . "/" . $this->options['cache'] . $this->options['zipFile'];
|
||||
|
||||
$zip = new \ZipArchive;
|
||||
if ($zip->open($path) === true) {
|
||||
$cutLength = strlen($zip->getNameIndex(0));
|
||||
for ($i = 1; $i < $zip->numFiles; $i++) {//iterate throw the Zip
|
||||
$fileName = $zip->getNameIndex($i);
|
||||
$stat = $zip->statIndex($i);
|
||||
if ($stat["crc"] == 0) {
|
||||
$dirName = $this->options['save'] . substr($fileName, $cutLength);
|
||||
if (!file_exists($dirName)) {
|
||||
mkdir($dirName);
|
||||
}
|
||||
} else {
|
||||
copy("zip://" . $path . "#" . $fileName, $this->options['save'] . substr($fileName, $cutLength));
|
||||
}
|
||||
}
|
||||
$zip->close();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function printOne() {
|
||||
$string = "<h3>Updated to<h3>";
|
||||
$string .= "<h2>[" . $this->newestRelease['tag_name'] . "] " . $this->newestRelease['name'] . "</h2>\n";
|
||||
$string .= "<p>" . $this->newestRelease['body'] . "</p>\n";
|
||||
return $string;
|
||||
}
|
||||
|
||||
public function getName() {
|
||||
return $this->newestRelease['tag_name'];
|
||||
}
|
||||
}
|
||||
340
vendor/kanti/hub-updater/LICENSE
vendored
Normal file
340
vendor/kanti/hub-updater/LICENSE
vendored
Normal file
|
|
@ -0,0 +1,340 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
{description}
|
||||
Copyright (C) {year} {fullname}
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
{signature of Ty Coon}, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
|
||||
104
vendor/kanti/hub-updater/README.md
vendored
Normal file
104
vendor/kanti/hub-updater/README.md
vendored
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
HubUpdater
|
||||
==========
|
||||
|
||||
Simple Github Updater for Web Projects [PHP]
|
||||
|
||||
is HubUpdater for me? [Checklist]
|
||||
----------
|
||||
- [ ] I have an little product/projekt on github. (~ 0-30MB)
|
||||
- [ ] it uses PHP
|
||||
- [ ] I want my users to update my Product with one click
|
||||
|
||||
Check for an update [simple]
|
||||
----------
|
||||
```php
|
||||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
$updater = new \Kanti\HubUpdater('kanti/test');
|
||||
$updater->update();
|
||||
```
|
||||
|
||||
how to provide an update?
|
||||
----------
|
||||
- Go to your Repository->
|
||||
- click on ``releases``->
|
||||
- ``Draft a new release``->
|
||||
- Enter your details->
|
||||
- click on ``Publish release``
|
||||
|
||||
|
||||
Installing via Composer
|
||||
----------
|
||||
|
||||
The recommended way to install hub-updater is through
|
||||
[Composer](http://getcomposer.org).
|
||||
|
||||
```bash
|
||||
# Install Composer
|
||||
curl -sS https://getcomposer.org/installer | php
|
||||
```
|
||||
|
||||
Next, run the Composer command to install the latest stable version of Guzzle:
|
||||
|
||||
```bash
|
||||
composer require kanti/hub-updater dev-master
|
||||
```
|
||||
|
||||
After installing, you need to require Composer's autoloader:
|
||||
|
||||
```php
|
||||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
```
|
||||
|
||||
|
||||
Settings
|
||||
----------
|
||||
```php
|
||||
$settings = array(
|
||||
"settingsKey" => 'value',
|
||||
);
|
||||
new \Kanti\HubUpdater($settings);
|
||||
```
|
||||
|Setting|Description|default|
|
||||
|---|---|---|
|
||||
|name|the name your Repository has |must be set|
|
||||
|branch|the branch you like to watch. |``master``|
|
||||
|cache|the directory you like to put the cache stuff |``./cache/``|
|
||||
|save|the directory you like to put the content of the zip. |``./``|
|
||||
|prerelease|would you like to download the prereleases? |``false``|
|
||||
|
||||
Check for an update [complete]
|
||||
----------
|
||||
```php
|
||||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
$updater = new \Kanti\HubUpdater([
|
||||
"name" => 'kanti/test',//Repository to watch
|
||||
"branch" => 'master',//wich branch to watch
|
||||
"cache" => 'cache/',//were to put the caching stuff
|
||||
"save" => 'save/',//there to put the downloaded Version[default ./]
|
||||
"prerelease" => true,//accept prereleases?
|
||||
]);
|
||||
if($updater->able())
|
||||
{
|
||||
if(isset($_GET['update']))
|
||||
{
|
||||
$updater->update();
|
||||
echo '<p>updated :)</p>';
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<a href="?update">Update Me</a>'; //only update if they klick this link
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<p>uptodate :)</p>';
|
||||
}
|
||||
```
|
||||
Thanks:
|
||||
----------
|
||||
- ca_bundle.crt form [bagder/ca-bundle](https://github.com/bagder/ca-bundle)
|
||||
|
|
@ -1,62 +1,21 @@
|
|||
<?php
|
||||
|
||||
class CacheOneFile {
|
||||
|
||||
protected $fileName = "";
|
||||
protected $holdTime = 43200; //12h
|
||||
|
||||
public function __construct($fileName, $holdTime = 43200) {
|
||||
$this->fileName = $fileName;
|
||||
$this->holdTime = $holdTime;
|
||||
}
|
||||
|
||||
public function is() {
|
||||
if (!file_exists($this->fileName))
|
||||
return false;
|
||||
if (filemtime($this->fileName) < ( time() - $this->holdTime )) {
|
||||
unlink($this->fileName);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function get() {
|
||||
return file_get_contents($this->fileName);
|
||||
}
|
||||
|
||||
public function set($content) {
|
||||
file_put_contents($this->fileName, $content);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class Updater {
|
||||
|
||||
protected $cachedInfo = "cache/downloadInfo.json";
|
||||
protected $versionFile = "cache/installedVersion.json";
|
||||
protected $zipFile = "cache/tmpZipFile.zip";
|
||||
protected $infos = array();
|
||||
protected $context = null;
|
||||
|
||||
protected function genCaFile(){
|
||||
if(file_exists("cache/ca_bundle.crt"))
|
||||
return 1;
|
||||
//https://github.com/bagder/ca-bundle
|
||||
file_put_contents("cache/ca_bundle.crt", "##
|
||||
## ca-bundle.crt -- Bundle of CA Root Certificates
|
||||
##
|
||||
## Certificate data from Mozilla as of: Tue Jul 15 08:33:20 2014
|
||||
## Bundle of CA Root Certificates
|
||||
##
|
||||
## Certificate data from Mozilla downloaded on: Thu Sep 4 06:31:22 2014
|
||||
##
|
||||
## This is a bundle of X.509 certificates of public Certificate Authorities
|
||||
## (CA). These were automatically extracted from Mozilla's root certificates
|
||||
## file (certdata.txt). This file can be found in the mozilla source tree:
|
||||
## http://mxr.mozilla.org/mozilla-release/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1
|
||||
## http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
|
||||
##
|
||||
## It contains the certificates in PEM format and therefore
|
||||
## can be directly used with curl / libcurl / php_curl, or with
|
||||
## an Apache+mod_ssl webserver for SSL client authentication.
|
||||
## Just configure this file as the SSLCACertificateFile.
|
||||
##
|
||||
## Conversion done with mk-ca-bundle.pl verison 1.22.
|
||||
## SHA1: c4540021427a6fa29e5f50db9f12d48c97d33889
|
||||
##
|
||||
|
||||
|
||||
GTE CyberTrust Global Root
|
||||
|
|
@ -134,22 +93,6 @@ BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
|
|||
70+sB3c4
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Verisign Class 3 Public Primary Certification Authority
|
||||
=======================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
||||
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
||||
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
|
||||
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
||||
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
||||
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
||||
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
||||
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
|
||||
TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
|
||||
WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
|
||||
Tqj/ZA1k
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Verisign Class 3 Public Primary Certification Authority - G2
|
||||
============================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -212,63 +155,6 @@ BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
|||
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
ValiCert Class 1 VA
|
||||
===================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
||||
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
||||
YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
||||
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
|
||||
MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
||||
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
|
||||
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
||||
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
||||
A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
|
||||
GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
|
||||
DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
|
||||
lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
|
||||
icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
|
||||
Orf1LXLI
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
ValiCert Class 2 VA
|
||||
===================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
||||
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
||||
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
||||
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
||||
MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
||||
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
|
||||
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
||||
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
||||
A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
|
||||
CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
|
||||
ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
|
||||
SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
|
||||
UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
|
||||
W9ViH0Pd
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
RSA Root Certificate 1
|
||||
======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
||||
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
||||
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
||||
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
||||
MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
||||
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
|
||||
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
||||
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
||||
A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
|
||||
3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
|
||||
BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
|
||||
3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
|
||||
V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
|
||||
on+jjBXu
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Verisign Class 3 Public Primary Certification Authority - G3
|
||||
============================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -317,33 +203,6 @@ RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
|
|||
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Entrust.net Secure Server CA
|
||||
============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
|
||||
BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
|
||||
cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
|
||||
ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
||||
cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
|
||||
A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
|
||||
eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
|
||||
dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
|
||||
aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
|
||||
aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
|
||||
gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
|
||||
ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
|
||||
CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
|
||||
dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
||||
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
|
||||
cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
||||
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
|
||||
NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
|
||||
HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
|
||||
BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
|
||||
Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
|
||||
n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Entrust.net Premium 2048 Secure Server CA
|
||||
=========================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -997,30 +856,6 @@ nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
|
|||
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
TDC Internet Root CA
|
||||
====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
|
||||
ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
|
||||
NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
|
||||
ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
||||
MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
|
||||
xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
|
||||
znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
|
||||
5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
|
||||
otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
|
||||
AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
|
||||
VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
|
||||
MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
|
||||
AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
|
||||
UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
|
||||
CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
|
||||
gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
|
||||
2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
|
||||
O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
|
||||
Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
UTN DATACorp SGC Root CA
|
||||
========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -1161,64 +996,6 @@ KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
|
|||
8CgHrTwXZoi1/baI
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
NetLock Business (Class B) Root
|
||||
===============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
||||
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
||||
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
|
||||
VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
|
||||
VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
|
||||
bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
|
||||
VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
||||
iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
|
||||
o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
|
||||
1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
||||
HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
|
||||
RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
|
||||
dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
|
||||
ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
|
||||
c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
|
||||
YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
|
||||
c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
|
||||
Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
|
||||
bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
|
||||
IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
|
||||
YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
|
||||
cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
|
||||
43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
|
||||
stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
NetLock Express (Class C) Root
|
||||
==============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
||||
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
||||
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
|
||||
KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
|
||||
BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
||||
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
|
||||
ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
|
||||
jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
|
||||
W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
|
||||
euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
|
||||
DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
|
||||
RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
|
||||
YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
|
||||
IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
|
||||
aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
|
||||
ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
|
||||
ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
|
||||
dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
|
||||
emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
|
||||
IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
|
||||
UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
|
||||
YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
|
||||
xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
|
||||
gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
XRamp Global CA Root
|
||||
====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -1973,40 +1750,6 @@ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
|
|||
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
|
||||
======================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
|
||||
AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
|
||||
LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
|
||||
HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
|
||||
U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
|
||||
IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
|
||||
AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
|
||||
yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
|
||||
2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
|
||||
4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
|
||||
2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
|
||||
8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
|
||||
HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
|
||||
Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
|
||||
5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
|
||||
czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
|
||||
AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
|
||||
ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
|
||||
BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
|
||||
cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
|
||||
AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
|
||||
EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
|
||||
/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
|
||||
MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
|
||||
3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
|
||||
eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
|
||||
/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
|
||||
RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
|
||||
Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
TC TrustCenter Class 2 CA II
|
||||
============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -2654,22 +2397,6 @@ MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o
|
|||
tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Verisign Class 3 Public Primary Certification Authority
|
||||
=======================================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
|
||||
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
||||
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
|
||||
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
||||
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
||||
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
||||
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
||||
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
|
||||
CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
|
||||
bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
|
||||
D/xwzoiQ
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Microsec e-Szigno Root CA 2009
|
||||
==============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
|
@ -3907,128 +3634,261 @@ k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh
|
|||
TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9
|
||||
61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G
|
||||
3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
|
||||
-----END CERTIFICATE-----");
|
||||
}
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
public function __construct() {
|
||||
if (!file_exists("cache/")) {
|
||||
mkdir("cache/");
|
||||
}
|
||||
$this->genCaFile();
|
||||
$this->cachedInfo = new CacheOneFile($this->cachedInfo);
|
||||
|
||||
$this->context = stream_context_create(
|
||||
array(
|
||||
'http' => array(
|
||||
'header' => "User-Agent: Awesome-Update-My-Self\r\n"
|
||||
),
|
||||
'ssl' => array(
|
||||
'cafile' => dirname(__FILE__) . '/../../cache/ca_bundle.crt',
|
||||
'verify_peer' => true
|
||||
)
|
||||
)
|
||||
);
|
||||
$this->infos = $this->getInfos();
|
||||
}
|
||||
QuoVadis Root CA 1 G3
|
||||
=====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
hMJKzRwuJIczYOXD
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
protected function getInfos() {
|
||||
$path = "https://api.github.com/repos/danpros/htmly/releases";
|
||||
if ($this->cachedInfo->is()) {
|
||||
$fileContent = $this->cachedInfo->get();
|
||||
} else {
|
||||
if (!in_array('https', stream_get_wrappers())) {
|
||||
return array();
|
||||
}
|
||||
$fileContent = @file_get_contents($path, false, $this->context);
|
||||
QuoVadis Root CA 2 G3
|
||||
=====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
O3jtZsSOeWmD3n+M
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
if ($fileContent === false) {
|
||||
return array();
|
||||
}
|
||||
$json = json_decode($fileContent, true);
|
||||
$fileContent = json_encode($json, JSON_PRETTY_PRINT);
|
||||
$this->cachedInfo->set($fileContent);
|
||||
return $json;
|
||||
}
|
||||
return json_decode($fileContent, true);
|
||||
}
|
||||
QuoVadis Root CA 3 G3
|
||||
=====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
PpxxVJkES/1Y+Zj0
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
public function updateAble() {
|
||||
if (!in_array('https', stream_get_wrappers()))
|
||||
return false;
|
||||
if (empty($this->infos))
|
||||
return false;
|
||||
DigiCert Assured ID Root G2
|
||||
===========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG
|
||||
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
||||
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw
|
||||
MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
||||
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw
|
||||
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH
|
||||
35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq
|
||||
bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw
|
||||
VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP
|
||||
YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn
|
||||
lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO
|
||||
w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv
|
||||
0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz
|
||||
d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW
|
||||
hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M
|
||||
jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
|
||||
IhNzbM8m9Yop5w==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
if (file_exists($this->versionFile)) {
|
||||
$fileContent = file_get_contents($this->versionFile);
|
||||
$current = json_decode($fileContent, true);
|
||||
DigiCert Assured ID Root G3
|
||||
===========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
|
||||
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD
|
||||
VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
|
||||
MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ
|
||||
BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb
|
||||
RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs
|
||||
KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF
|
||||
UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy
|
||||
YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy
|
||||
1vUhZscv6pZjamVFkpUBtA==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
if (isset($current['id']) && $current['id'] == $this->infos[0]['id'])
|
||||
return false;
|
||||
if (isset($current['tag_name']) && $current['tag_name'] == $this->infos[0]['tag_name'])
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
DigiCert Global Root G2
|
||||
=======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG
|
||||
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
||||
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx
|
||||
MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
||||
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ
|
||||
kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO
|
||||
3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV
|
||||
BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM
|
||||
UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB
|
||||
o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu
|
||||
5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr
|
||||
F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U
|
||||
WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH
|
||||
QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/
|
||||
iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
|
||||
MrY=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
public function update() {
|
||||
if ($this->updateAble()) {
|
||||
if ($this->download("https://github.com/danpros/htmly/archive/" . $this->infos[0]['tag_name'] . ".zip")) {
|
||||
if ($this->unZip()) {
|
||||
unlink($this->zipFile);
|
||||
file_put_contents($this->versionFile, json_encode(array(
|
||||
"id" => $this->infos[0]['id'],
|
||||
"tag_name" => $this->infos[0]['tag_name']
|
||||
), JSON_PRETTY_PRINT));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
DigiCert Global Root G3
|
||||
=======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV
|
||||
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD
|
||||
VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw
|
||||
MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
|
||||
aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C
|
||||
AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O
|
||||
YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP
|
||||
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp
|
||||
Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y
|
||||
3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34
|
||||
VOKa5Vt8sycX
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
protected function download($url) {
|
||||
$file = @fopen($url, 'r', false , $this->context);
|
||||
if ($file == false)
|
||||
return false;
|
||||
file_put_contents($this->zipFile, $file);
|
||||
return true;
|
||||
}
|
||||
DigiCert Trusted Root G4
|
||||
========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG
|
||||
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw
|
||||
HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
|
||||
MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||
d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G
|
||||
CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp
|
||||
pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o
|
||||
k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa
|
||||
vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY
|
||||
QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6
|
||||
MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm
|
||||
mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7
|
||||
f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH
|
||||
dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8
|
||||
oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud
|
||||
DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD
|
||||
ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY
|
||||
ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr
|
||||
yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy
|
||||
7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah
|
||||
ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN
|
||||
5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb
|
||||
/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa
|
||||
5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK
|
||||
G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP
|
||||
82Z+
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
protected function unZip() {
|
||||
$path = dirname($_SERVER['SCRIPT_FILENAME']) . "/" . $this->zipFile;
|
||||
WoSign
|
||||
======
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
$zip = new ZipArchive;
|
||||
if ($zip->open($path) === true) {
|
||||
$cutLength = strlen($zip->getNameIndex(0));
|
||||
for ($i = 1; $i < $zip->numFiles; $i++) {//iterate throw the Zip
|
||||
$fileName = $zip->getNameIndex($i);
|
||||
$stat = $zip->statIndex($i);
|
||||
if ($stat["crc"] == 0) {
|
||||
$dirName = substr($fileName, $cutLength);
|
||||
if (!file_exists($dirName)) {
|
||||
mkdir($dirName);
|
||||
}
|
||||
} else {
|
||||
copy("zip://" . $path . "#" . $fileName, substr($fileName, $cutLength));
|
||||
}
|
||||
}
|
||||
$zip->close();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function printOne() {
|
||||
$releases = $this->infos;
|
||||
$string = "<h3>Updated to<h3>";
|
||||
$string .= "<h2>[" . $releases[0]['tag_name'] . "] " . $releases[0]['name'] . "</h2>\n";
|
||||
$string .= "<p>" . $releases[0]['body'] . "</p>\n";
|
||||
return $string;
|
||||
}
|
||||
|
||||
public function getName() {
|
||||
return $this->infos[0]['tag_name'];
|
||||
}
|
||||
|
||||
}
|
||||
WoSign China
|
||||
============
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
kI26oQ==
|
||||
-----END CERTIFICATE-----
|
||||
27
vendor/kanti/hub-updater/composer.json
vendored
Normal file
27
vendor/kanti/hub-updater/composer.json
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"name": "kanti/hub-updater",
|
||||
"description": "Simple Github Updater for Web Projects [PHP]",
|
||||
"license": "GPL-2.0",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Kanti",
|
||||
"email": "git@kanti.de",
|
||||
"homepage": "https://kanti.de",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"forum": "https://github.com/Kanti/hub-updater/issues",
|
||||
"issues": "https://github.com/Kanti/hub-updater/issues",
|
||||
"source": "https://github.com/Kanti/hub-updater"
|
||||
},
|
||||
"minimum-stability": "dev",
|
||||
"require": {
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Kanti\\": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
5
vendor/kanti/hub-updater/example.php
vendored
Normal file
5
vendor/kanti/hub-updater/example.php
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
$updater = new \Kanti\HubUpdater('kanti/test');
|
||||
$updater->update();
|
||||
26
vendor/kanti/hub-updater/example2.php
vendored
Normal file
26
vendor/kanti/hub-updater/example2.php
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
$updater = new \Kanti\HubUpdater([
|
||||
"name" => 'kanti/test',//Repository to watch
|
||||
"branch" => 'master',//wich branch to watch
|
||||
"cache" => 'cache/',//were to put the caching stuff
|
||||
"save" => 'save/',//there to put the downloaded Version[default ./]
|
||||
"prerelease" => true,//accept prereleases?
|
||||
]);
|
||||
if($updater->able())
|
||||
{
|
||||
if(isset($_GET['update']))
|
||||
{
|
||||
$updater->update();
|
||||
echo '<p>updated :)</p>';
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<a href="?update">Update Me</a>'; //only update if they klick this link
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<p>uptodate :)</p>';
|
||||
}
|
||||
2
vendor/michelf/php-markdown/License.md
vendored
2
vendor/michelf/php-markdown/License.md
vendored
|
|
@ -1,5 +1,5 @@
|
|||
PHP Markdown Lib
|
||||
Copyright (c) 2004-2013 Michel Fortin
|
||||
Copyright (c) 2004-2014 Michel Fortin
|
||||
<http://michelf.ca/>
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
252
vendor/michelf/php-markdown/Michelf/Markdown.php
vendored
252
vendor/michelf/php-markdown/Michelf/Markdown.php
vendored
|
|
@ -3,7 +3,7 @@
|
|||
# Markdown - A text-to-HTML conversion tool for web writers
|
||||
#
|
||||
# PHP Markdown
|
||||
# Copyright (c) 2004-2013 Michel Fortin
|
||||
# Copyright (c) 2004-2014 Michel Fortin
|
||||
# <http://michelf.com/projects/php-markdown/>
|
||||
#
|
||||
# Original Markdown
|
||||
|
|
@ -21,7 +21,7 @@ class Markdown implements MarkdownInterface {
|
|||
|
||||
### Version ###
|
||||
|
||||
const MARKDOWNLIB_VERSION = "1.4.0";
|
||||
const MARKDOWNLIB_VERSION = "1.4.1";
|
||||
|
||||
### Simple Function Interface ###
|
||||
|
||||
|
|
@ -59,6 +59,9 @@ class Markdown implements MarkdownInterface {
|
|||
public $predef_urls = array();
|
||||
public $predef_titles = array();
|
||||
|
||||
# Optional filter function for URLs
|
||||
public $url_filter_func = null;
|
||||
|
||||
|
||||
### Parser Implementation ###
|
||||
|
||||
|
|
@ -209,7 +212,7 @@ class Markdown implements MarkdownInterface {
|
|||
)? # title is optional
|
||||
(?:\n+|\Z)
|
||||
}xm',
|
||||
array(&$this, '_stripLinkDefinitions_callback'),
|
||||
array($this, '_stripLinkDefinitions_callback'),
|
||||
$text);
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -242,7 +245,7 @@ class Markdown implements MarkdownInterface {
|
|||
#
|
||||
$block_tags_a_re = 'ins|del';
|
||||
$block_tags_b_re = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|'.
|
||||
'script|noscript|form|fieldset|iframe|math|svg|'.
|
||||
'script|noscript|style|form|fieldset|iframe|math|svg|'.
|
||||
'article|section|nav|aside|hgroup|header|footer|'.
|
||||
'figure';
|
||||
|
||||
|
|
@ -297,9 +300,9 @@ class Markdown implements MarkdownInterface {
|
|||
# match will start at the first `<div>` and stop at the first `</div>`.
|
||||
$text = preg_replace_callback('{(?>
|
||||
(?>
|
||||
(?<=\n\n) # Starting after a blank line
|
||||
(?<=\n) # Starting on its own line
|
||||
| # or
|
||||
\A\n? # the beginning of the doc
|
||||
\A\n? # the at beginning of the doc
|
||||
)
|
||||
( # save in $1
|
||||
|
||||
|
|
@ -356,7 +359,7 @@ class Markdown implements MarkdownInterface {
|
|||
|
||||
)
|
||||
)}Sxmi',
|
||||
array(&$this, '_hashHTMLBlocks_callback'),
|
||||
array($this, '_hashHTMLBlocks_callback'),
|
||||
$text);
|
||||
|
||||
return $text;
|
||||
|
|
@ -500,7 +503,7 @@ class Markdown implements MarkdownInterface {
|
|||
protected function doHardBreaks($text) {
|
||||
# Do hard breaks:
|
||||
return preg_replace_callback('/ {2,}\n/',
|
||||
array(&$this, '_doHardBreaks_callback'), $text);
|
||||
array($this, '_doHardBreaks_callback'), $text);
|
||||
}
|
||||
protected function _doHardBreaks_callback($matches) {
|
||||
return $this->hashPart("<br$this->empty_element_suffix\n");
|
||||
|
|
@ -531,7 +534,7 @@ class Markdown implements MarkdownInterface {
|
|||
\]
|
||||
)
|
||||
}xs',
|
||||
array(&$this, '_doAnchors_reference_callback'), $text);
|
||||
array($this, '_doAnchors_reference_callback'), $text);
|
||||
|
||||
#
|
||||
# Next, inline-style links: [link text](url "optional title")
|
||||
|
|
@ -558,7 +561,7 @@ class Markdown implements MarkdownInterface {
|
|||
\)
|
||||
)
|
||||
}xs',
|
||||
array(&$this, '_doAnchors_inline_callback'), $text);
|
||||
array($this, '_doAnchors_inline_callback'), $text);
|
||||
|
||||
#
|
||||
# Last, handle reference-style shortcuts: [link text]
|
||||
|
|
@ -572,7 +575,7 @@ class Markdown implements MarkdownInterface {
|
|||
\]
|
||||
)
|
||||
}xs',
|
||||
array(&$this, '_doAnchors_reference_callback'), $text);
|
||||
array($this, '_doAnchors_reference_callback'), $text);
|
||||
|
||||
$this->in_anchor = false;
|
||||
return $text;
|
||||
|
|
@ -593,7 +596,7 @@ class Markdown implements MarkdownInterface {
|
|||
|
||||
if (isset($this->urls[$link_id])) {
|
||||
$url = $this->urls[$link_id];
|
||||
$url = $this->encodeAttribute($url);
|
||||
$url = $this->encodeURLAttribute($url);
|
||||
|
||||
$result = "<a href=\"$url\"";
|
||||
if ( isset( $this->titles[$link_id] ) ) {
|
||||
|
|
@ -617,7 +620,13 @@ class Markdown implements MarkdownInterface {
|
|||
$url = $matches[3] == '' ? $matches[4] : $matches[3];
|
||||
$title =& $matches[7];
|
||||
|
||||
$url = $this->encodeAttribute($url);
|
||||
// if the URL was of the form <s p a c e s> it got caught by the HTML
|
||||
// tag parser and hashed. Need to reverse the process before using the URL.
|
||||
$unhashed = $this->unhash($url);
|
||||
if ($unhashed != $url)
|
||||
$url = preg_replace('/^<(.*)>$/', '\1', $unhashed);
|
||||
|
||||
$url = $this->encodeURLAttribute($url);
|
||||
|
||||
$result = "<a href=\"$url\"";
|
||||
if (isset($title)) {
|
||||
|
|
@ -654,7 +663,7 @@ class Markdown implements MarkdownInterface {
|
|||
|
||||
)
|
||||
}xs',
|
||||
array(&$this, '_doImages_reference_callback'), $text);
|
||||
array($this, '_doImages_reference_callback'), $text);
|
||||
|
||||
#
|
||||
# Next, handle inline images: 
|
||||
|
|
@ -683,7 +692,7 @@ class Markdown implements MarkdownInterface {
|
|||
\)
|
||||
)
|
||||
}xs',
|
||||
array(&$this, '_doImages_inline_callback'), $text);
|
||||
array($this, '_doImages_inline_callback'), $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -698,7 +707,7 @@ class Markdown implements MarkdownInterface {
|
|||
|
||||
$alt_text = $this->encodeAttribute($alt_text);
|
||||
if (isset($this->urls[$link_id])) {
|
||||
$url = $this->encodeAttribute($this->urls[$link_id]);
|
||||
$url = $this->encodeURLAttribute($this->urls[$link_id]);
|
||||
$result = "<img src=\"$url\" alt=\"$alt_text\"";
|
||||
if (isset($this->titles[$link_id])) {
|
||||
$title = $this->titles[$link_id];
|
||||
|
|
@ -722,7 +731,7 @@ class Markdown implements MarkdownInterface {
|
|||
$title =& $matches[7];
|
||||
|
||||
$alt_text = $this->encodeAttribute($alt_text);
|
||||
$url = $this->encodeAttribute($url);
|
||||
$url = $this->encodeURLAttribute($url);
|
||||
$result = "<img src=\"$url\" alt=\"$alt_text\"";
|
||||
if (isset($title)) {
|
||||
$title = $this->encodeAttribute($title);
|
||||
|
|
@ -743,7 +752,7 @@ class Markdown implements MarkdownInterface {
|
|||
# --------
|
||||
#
|
||||
$text = preg_replace_callback('{ ^(.+?)[ ]*\n(=+|-+)[ ]*\n+ }mx',
|
||||
array(&$this, '_doHeaders_callback_setext'), $text);
|
||||
array($this, '_doHeaders_callback_setext'), $text);
|
||||
|
||||
# atx-style headers:
|
||||
# # Header 1
|
||||
|
|
@ -760,7 +769,7 @@ class Markdown implements MarkdownInterface {
|
|||
\#* # optional closing #\'s (not counted)
|
||||
\n+
|
||||
}xm',
|
||||
array(&$this, '_doHeaders_callback_atx'), $text);
|
||||
array($this, '_doHeaders_callback_atx'), $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -789,7 +798,6 @@ class Markdown implements MarkdownInterface {
|
|||
# Re-usable patterns to match list item bullets and number markers:
|
||||
$marker_ul_re = '[*+-]';
|
||||
$marker_ol_re = '\d+[\.]';
|
||||
$marker_any_re = "(?:$marker_ul_re|$marker_ol_re)";
|
||||
|
||||
$markers_relist = array(
|
||||
$marker_ul_re => $marker_ol_re,
|
||||
|
|
@ -833,14 +841,14 @@ class Markdown implements MarkdownInterface {
|
|||
^
|
||||
'.$whole_list_re.'
|
||||
}mx',
|
||||
array(&$this, '_doLists_callback'), $text);
|
||||
array($this, '_doLists_callback'), $text);
|
||||
}
|
||||
else {
|
||||
$text = preg_replace_callback('{
|
||||
(?:(?<=\n)\n|\A\n?) # Must eat the newline
|
||||
'.$whole_list_re.'
|
||||
}mx',
|
||||
array(&$this, '_doLists_callback'), $text);
|
||||
array($this, '_doLists_callback'), $text);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -907,7 +915,7 @@ class Markdown implements MarkdownInterface {
|
|||
(?:(\n+(?=\n))|\n) # tailing blank line = $5
|
||||
(?= \n* (\z | \2 ('.$marker_any_re.') (?:[ ]+|(?=\n))))
|
||||
}xm',
|
||||
array(&$this, '_processListItems_callback'), $list_str);
|
||||
array($this, '_processListItems_callback'), $list_str);
|
||||
|
||||
$this->list_level--;
|
||||
return $list_str;
|
||||
|
|
@ -951,7 +959,7 @@ class Markdown implements MarkdownInterface {
|
|||
)
|
||||
((?=^[ ]{0,'.$this->tab_width.'}\S)|\Z) # Lookahead for non-space at line-start, or end of doc
|
||||
}xm',
|
||||
array(&$this, '_doCodeBlocks_callback'), $text);
|
||||
array($this, '_doCodeBlocks_callback'), $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -979,19 +987,19 @@ class Markdown implements MarkdownInterface {
|
|||
|
||||
|
||||
protected $em_relist = array(
|
||||
'' => '(?:(?<!\*)\*(?!\*)|(?<!_)_(?!_))(?=\S|$)(?![\.,:;]\s)',
|
||||
'*' => '(?<=\S|^)(?<!\*)\*(?!\*)',
|
||||
'_' => '(?<=\S|^)(?<!_)_(?!_)',
|
||||
'' => '(?:(?<!\*)\*(?!\*)|(?<!_)_(?!_))(?![\.,:;]?\s)',
|
||||
'*' => '(?<![\s*])\*(?!\*)',
|
||||
'_' => '(?<![\s_])_(?!_)',
|
||||
);
|
||||
protected $strong_relist = array(
|
||||
'' => '(?:(?<!\*)\*\*(?!\*)|(?<!_)__(?!_))(?=\S|$)(?![\.,:;]\s)',
|
||||
'**' => '(?<=\S|^)(?<!\*)\*\*(?!\*)',
|
||||
'__' => '(?<=\S|^)(?<!_)__(?!_)',
|
||||
'' => '(?:(?<!\*)\*\*(?!\*)|(?<!_)__(?!_))(?![\.,:;]?\s)',
|
||||
'**' => '(?<![\s*])\*\*(?!\*)',
|
||||
'__' => '(?<![\s_])__(?!_)',
|
||||
);
|
||||
protected $em_strong_relist = array(
|
||||
'' => '(?:(?<!\*)\*\*\*(?!\*)|(?<!_)___(?!_))(?=\S|$)(?![\.,:;]\s)',
|
||||
'***' => '(?<=\S|^)(?<!\*)\*\*\*(?!\*)',
|
||||
'___' => '(?<=\S|^)(?<!_)___(?!_)',
|
||||
'' => '(?:(?<!\*)\*\*\*(?!\*)|(?<!_)___(?!_))(?![\.,:;]?\s)',
|
||||
'***' => '(?<![\s*])\*\*\*(?!\*)',
|
||||
'___' => '(?<![\s_])___(?!_)',
|
||||
);
|
||||
protected $em_strong_prepared_relist;
|
||||
|
||||
|
|
@ -1151,7 +1159,7 @@ class Markdown implements MarkdownInterface {
|
|||
)+
|
||||
)
|
||||
/xm',
|
||||
array(&$this, '_doBlockQuotes_callback'), $text);
|
||||
array($this, '_doBlockQuotes_callback'), $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -1165,7 +1173,7 @@ class Markdown implements MarkdownInterface {
|
|||
# These leading spaces cause problem with <pre> content,
|
||||
# so we need to fix that:
|
||||
$bq = preg_replace_callback('{(\s*<pre>.+?</pre>)}sx',
|
||||
array(&$this, '_doBlockQuotes_callback2'), $bq);
|
||||
array($this, '_doBlockQuotes_callback2'), $bq);
|
||||
|
||||
return "\n". $this->hashBlock("<blockquote>\n$bq\n</blockquote>")."\n\n";
|
||||
}
|
||||
|
|
@ -1255,6 +1263,33 @@ class Markdown implements MarkdownInterface {
|
|||
$text = str_replace('"', '"', $text);
|
||||
return $text;
|
||||
}
|
||||
|
||||
|
||||
protected function encodeURLAttribute($url, &$text = null) {
|
||||
#
|
||||
# Encode text for a double-quoted HTML attribute containing a URL,
|
||||
# applying the URL filter if set. Also generates the textual
|
||||
# representation for the URL (removing mailto: or tel:) storing it in $text.
|
||||
# This function is *not* suitable for attributes enclosed in single quotes.
|
||||
#
|
||||
if ($this->url_filter_func)
|
||||
$url = call_user_func($this->url_filter_func, $url);
|
||||
|
||||
if (preg_match('{^mailto:}i', $url))
|
||||
$url = $this->encodeEntityObfuscatedAttribute($url, $text, 7);
|
||||
else if (preg_match('{^tel:}i', $url))
|
||||
{
|
||||
$url = $this->encodeAttribute($url);
|
||||
$text = substr($url, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
$url = $this->encodeAttribute($url);
|
||||
$text = $url;
|
||||
}
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
|
||||
protected function encodeAmpsAndAngles($text) {
|
||||
|
|
@ -1279,8 +1314,8 @@ class Markdown implements MarkdownInterface {
|
|||
|
||||
|
||||
protected function doAutoLinks($text) {
|
||||
$text = preg_replace_callback('{<((https?|ftp|dict):[^\'">\s]+)>}i',
|
||||
array(&$this, '_doAutoLinks_url_callback'), $text);
|
||||
$text = preg_replace_callback('{<((https?|ftp|dict|tel):[^\'">\s]+)>}i',
|
||||
array($this, '_doAutoLinks_url_callback'), $text);
|
||||
|
||||
# Email addresses: <address@domain.foo>
|
||||
$text = preg_replace_callback('{
|
||||
|
|
@ -1301,49 +1336,47 @@ class Markdown implements MarkdownInterface {
|
|||
)
|
||||
>
|
||||
}xi',
|
||||
array(&$this, '_doAutoLinks_email_callback'), $text);
|
||||
$text = preg_replace_callback('{<(tel:([^\'">\s]+))>}i',array(&$this, '_doAutoLinks_tel_callback'), $text);
|
||||
array($this, '_doAutoLinks_email_callback'), $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
protected function _doAutoLinks_tel_callback($matches) {
|
||||
$url = $this->encodeAttribute($matches[1]);
|
||||
$tel = $this->encodeAttribute($matches[2]);
|
||||
$link = "<a href=\"$url\">$tel</a>";
|
||||
return $this->hashPart($link);
|
||||
}
|
||||
protected function _doAutoLinks_url_callback($matches) {
|
||||
$url = $this->encodeAttribute($matches[1]);
|
||||
$link = "<a href=\"$url\">$url</a>";
|
||||
$url = $this->encodeURLAttribute($matches[1], $text);
|
||||
$link = "<a href=\"$url\">$text</a>";
|
||||
return $this->hashPart($link);
|
||||
}
|
||||
protected function _doAutoLinks_email_callback($matches) {
|
||||
$address = $matches[1];
|
||||
$link = $this->encodeEmailAddress($address);
|
||||
$addr = $matches[1];
|
||||
$url = $this->encodeURLAttribute("mailto:$addr", $text);
|
||||
$link = "<a href=\"$url\">$text</a>";
|
||||
return $this->hashPart($link);
|
||||
}
|
||||
|
||||
|
||||
protected function encodeEmailAddress($addr) {
|
||||
protected function encodeEntityObfuscatedAttribute($text, &$tail = null, $head_length = 0) {
|
||||
#
|
||||
# Input: an email address, e.g. "foo@example.com"
|
||||
# Input: some text to obfuscate, e.g. "mailto:foo@example.com"
|
||||
#
|
||||
# Output: the email address as a mailto link, with each character
|
||||
# of the address encoded as either a decimal or hex entity, in
|
||||
# the hopes of foiling most address harvesting spam bots. E.g.:
|
||||
# Output: the same text but with most characters encoded as either a
|
||||
# decimal or hex entity, in the hopes of foiling most address
|
||||
# harvesting spam bots. E.g.:
|
||||
#
|
||||
# <p><a href="mailto:foo
|
||||
# mailto:foo
|
||||
# @example.co
|
||||
# m">foo@exampl
|
||||
# e.com</a></p>
|
||||
# m
|
||||
#
|
||||
# Note: the additional output $tail is assigned the same value as the
|
||||
# ouput, minus the number of characters specified by $head_length.
|
||||
#
|
||||
# Based by a filter by Matthew Wickline, posted to BBEdit-Talk.
|
||||
# With some optimizations by Milian Wolff.
|
||||
# With some optimizations by Milian Wolff. Forced encoding of HTML
|
||||
# attribute special characters by Allan Odgaard.
|
||||
#
|
||||
$addr = "mailto:" . $addr;
|
||||
$chars = preg_split('/(?<!^)(?!$)/', $addr);
|
||||
$seed = (int)abs(crc32($addr) / strlen($addr)); # Deterministic seed.
|
||||
|
||||
if ($text == "") return $tail = "";
|
||||
|
||||
$chars = preg_split('/(?<!^)(?!$)/', $text);
|
||||
$seed = (int)abs(crc32($text) / strlen($text)); # Deterministic seed.
|
||||
|
||||
foreach ($chars as $key => $char) {
|
||||
$ord = ord($char);
|
||||
# Ignore non-ascii chars.
|
||||
|
|
@ -1351,17 +1384,17 @@ class Markdown implements MarkdownInterface {
|
|||
$r = ($seed * (1 + $key)) % 100; # Pseudo-random function.
|
||||
# roughly 10% raw, 45% hex, 45% dec
|
||||
# '@' *must* be encoded. I insist.
|
||||
if ($r > 90 && $char != '@') /* do nothing */;
|
||||
# '"' and '>' have to be encoded inside the attribute
|
||||
if ($r > 90 && strpos('@"&>', $char) === false) /* do nothing */;
|
||||
else if ($r < 45) $chars[$key] = '&#x'.dechex($ord).';';
|
||||
else $chars[$key] = '&#'.$ord.';';
|
||||
}
|
||||
}
|
||||
|
||||
$addr = implode('', $chars);
|
||||
$text = implode('', array_slice($chars, 7)); # text without `mailto:`
|
||||
$addr = "<a href=\"$addr\">$text</a>";
|
||||
|
||||
return $addr;
|
||||
$text = implode('', $chars);
|
||||
$tail = $head_length ? implode('', array_slice($chars, $head_length)) : $text;
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1470,7 +1503,7 @@ class Markdown implements MarkdownInterface {
|
|||
# appropriate number of space between each blocks.
|
||||
|
||||
$text = preg_replace_callback('/^.*\t.*$/m',
|
||||
array(&$this, '_detab_callback'), $text);
|
||||
array($this, '_detab_callback'), $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -1510,7 +1543,7 @@ class Markdown implements MarkdownInterface {
|
|||
# Swap back in all the tags hashed by _HashHTMLBlocks.
|
||||
#
|
||||
return preg_replace_callback('/(.)\x1A[0-9]+\1/',
|
||||
array(&$this, '_unhash_callback'), $text);
|
||||
array($this, '_unhash_callback'), $text);
|
||||
}
|
||||
protected function _unhash_callback($matches) {
|
||||
return $this->html_hashes[$matches[0]];
|
||||
|
|
@ -1716,7 +1749,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
(?:[ ]* '.$this->id_class_attr_catch_re.' )? # $5 = extra id & class attr
|
||||
(?:\n+|\Z)
|
||||
}xm',
|
||||
array(&$this, '_stripLinkDefinitions_callback'),
|
||||
array($this, '_stripLinkDefinitions_callback'),
|
||||
$text);
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -1733,17 +1766,17 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
### HTML Block Parser ###
|
||||
|
||||
# Tags that are always treated as block tags:
|
||||
protected $block_tags_re = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|form|fieldset|iframe|hr|legend|article|section|nav|aside|hgroup|header|footer|figcaption';
|
||||
protected $block_tags_re = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|form|fieldset|iframe|hr|legend|article|section|nav|aside|hgroup|header|footer|figcaption|figure';
|
||||
|
||||
# Tags treated as block tags only if the opening tag is alone on its line:
|
||||
protected $context_block_tags_re = 'script|noscript|ins|del|iframe|object|source|track|param|math|svg|canvas|audio|video';
|
||||
protected $context_block_tags_re = 'script|noscript|style|ins|del|iframe|object|source|track|param|math|svg|canvas|audio|video';
|
||||
|
||||
# Tags where markdown="1" default to span mode:
|
||||
protected $contain_span_tags_re = 'p|h[1-6]|li|dd|dt|td|th|legend|address';
|
||||
|
||||
# Tags which must not have their contents modified, no matter where
|
||||
# they appear:
|
||||
protected $clean_tags_re = 'script|math|svg';
|
||||
protected $clean_tags_re = 'script|style|math|svg';
|
||||
|
||||
# Tags that do not need to be closed.
|
||||
protected $auto_close_tags_re = 'hr|img|param|source|track';
|
||||
|
|
@ -2227,7 +2260,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
\]
|
||||
)
|
||||
}xs',
|
||||
array(&$this, '_doAnchors_reference_callback'), $text);
|
||||
array($this, '_doAnchors_reference_callback'), $text);
|
||||
|
||||
#
|
||||
# Next, inline-style links: [link text](url "optional title")
|
||||
|
|
@ -2255,7 +2288,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
(?:[ ]? '.$this->id_class_attr_catch_re.' )? # $8 = id/class attributes
|
||||
)
|
||||
}xs',
|
||||
array(&$this, '_doAnchors_inline_callback'), $text);
|
||||
array($this, '_doAnchors_inline_callback'), $text);
|
||||
|
||||
#
|
||||
# Last, handle reference-style shortcuts: [link text]
|
||||
|
|
@ -2269,7 +2302,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
\]
|
||||
)
|
||||
}xs',
|
||||
array(&$this, '_doAnchors_reference_callback'), $text);
|
||||
array($this, '_doAnchors_reference_callback'), $text);
|
||||
|
||||
$this->in_anchor = false;
|
||||
return $text;
|
||||
|
|
@ -2290,7 +2323,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
|
||||
if (isset($this->urls[$link_id])) {
|
||||
$url = $this->urls[$link_id];
|
||||
$url = $this->encodeAttribute($url);
|
||||
$url = $this->encodeURLAttribute($url);
|
||||
|
||||
$result = "<a href=\"$url\"";
|
||||
if ( isset( $this->titles[$link_id] ) ) {
|
||||
|
|
@ -2317,8 +2350,13 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
$title =& $matches[7];
|
||||
$attr = $this->doExtraAttributes("a", $dummy =& $matches[8]);
|
||||
|
||||
// if the URL was of the form <s p a c e s> it got caught by the HTML
|
||||
// tag parser and hashed. Need to reverse the process before using the URL.
|
||||
$unhashed = $this->unhash($url);
|
||||
if ($unhashed != $url)
|
||||
$url = preg_replace('/^<(.*)>$/', '\1', $unhashed);
|
||||
|
||||
$url = $this->encodeAttribute($url);
|
||||
$url = $this->encodeURLAttribute($url);
|
||||
|
||||
$result = "<a href=\"$url\"";
|
||||
if (isset($title)) {
|
||||
|
|
@ -2356,7 +2394,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
|
||||
)
|
||||
}xs',
|
||||
array(&$this, '_doImages_reference_callback'), $text);
|
||||
array($this, '_doImages_reference_callback'), $text);
|
||||
|
||||
#
|
||||
# Next, handle inline images: 
|
||||
|
|
@ -2386,7 +2424,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
(?:[ ]? '.$this->id_class_attr_catch_re.' )? # $8 = id/class attributes
|
||||
)
|
||||
}xs',
|
||||
array(&$this, '_doImages_inline_callback'), $text);
|
||||
array($this, '_doImages_inline_callback'), $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -2401,7 +2439,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
|
||||
$alt_text = $this->encodeAttribute($alt_text);
|
||||
if (isset($this->urls[$link_id])) {
|
||||
$url = $this->encodeAttribute($this->urls[$link_id]);
|
||||
$url = $this->encodeURLAttribute($this->urls[$link_id]);
|
||||
$result = "<img src=\"$url\" alt=\"$alt_text\"";
|
||||
if (isset($this->titles[$link_id])) {
|
||||
$title = $this->titles[$link_id];
|
||||
|
|
@ -2428,7 +2466,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
$attr = $this->doExtraAttributes("img", $dummy =& $matches[8]);
|
||||
|
||||
$alt_text = $this->encodeAttribute($alt_text);
|
||||
$url = $this->encodeAttribute($url);
|
||||
$url = $this->encodeURLAttribute($url);
|
||||
$result = "<img src=\"$url\" alt=\"$alt_text\"";
|
||||
if (isset($title)) {
|
||||
$title = $this->encodeAttribute($title);
|
||||
|
|
@ -2458,7 +2496,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
(?:[ ]+ '.$this->id_class_attr_catch_re.' )? # $3 = id/class attributes
|
||||
[ ]*\n(=+|-+)[ ]*\n+ # $3: Header footer
|
||||
}mx',
|
||||
array(&$this, '_doHeaders_callback_setext'), $text);
|
||||
array($this, '_doHeaders_callback_setext'), $text);
|
||||
|
||||
# atx-style headers:
|
||||
# # Header 1 {#header1}
|
||||
|
|
@ -2477,7 +2515,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
[ ]*
|
||||
\n+
|
||||
}xm',
|
||||
array(&$this, '_doHeaders_callback_atx'), $text);
|
||||
array($this, '_doHeaders_callback_atx'), $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -2528,7 +2566,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
)
|
||||
(?=\n|\Z) # Stop at final double newline.
|
||||
}xm',
|
||||
array(&$this, '_doTable_leadingPipe_callback'), $text);
|
||||
array($this, '_doTable_leadingPipe_callback'), $text);
|
||||
|
||||
#
|
||||
# Find tables without leading pipe.
|
||||
|
|
@ -2554,7 +2592,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
)
|
||||
(?=\n|\Z) # Stop at final double newline.
|
||||
}xm',
|
||||
array(&$this, '_DoTable_callback'), $text);
|
||||
array($this, '_DoTable_callback'), $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -2678,7 +2716,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
(?>\A\n?|(?<=\n\n))
|
||||
'.$whole_list_re.'
|
||||
}mx',
|
||||
array(&$this, '_doDefLists_callback'), $text);
|
||||
array($this, '_doDefLists_callback'), $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -2716,7 +2754,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
(?=\n?[ ]{0,3}:[ ]) # lookahead for following line feed
|
||||
# with a definition mark.
|
||||
}xm',
|
||||
array(&$this, '_processDefListItems_callback_dt'), $list_str);
|
||||
array($this, '_processDefListItems_callback_dt'), $list_str);
|
||||
|
||||
# Process actual definitions.
|
||||
$list_str = preg_replace_callback('{
|
||||
|
|
@ -2733,7 +2771,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
)
|
||||
)
|
||||
}xm',
|
||||
array(&$this, '_processDefListItems_callback_dd'), $list_str);
|
||||
array($this, '_processDefListItems_callback_dd'), $list_str);
|
||||
|
||||
return $list_str;
|
||||
}
|
||||
|
|
@ -2801,7 +2839,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
# Closing marker.
|
||||
\1 [ ]* (?= \n )
|
||||
}xm',
|
||||
array(&$this, '_doFencedCodeBlocks_callback'), $text);
|
||||
array($this, '_doFencedCodeBlocks_callback'), $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -2811,7 +2849,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
$codeblock = $matches[4];
|
||||
$codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES);
|
||||
$codeblock = preg_replace_callback('/^\n+/',
|
||||
array(&$this, '_doFencedCodeBlocks_newlines'), $codeblock);
|
||||
array($this, '_doFencedCodeBlocks_newlines'), $codeblock);
|
||||
|
||||
if ($classname != "") {
|
||||
if ($classname{0} == '.')
|
||||
|
|
@ -2837,19 +2875,19 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
# work in the middle of a word.
|
||||
#
|
||||
protected $em_relist = array(
|
||||
'' => '(?:(?<!\*)\*(?!\*)|(?<![a-zA-Z0-9_])_(?!_))(?=\S|$)(?![\.,:;]\s)',
|
||||
'*' => '(?<=\S|^)(?<!\*)\*(?!\*)',
|
||||
'_' => '(?<=\S|^)(?<!_)_(?![a-zA-Z0-9_])',
|
||||
'' => '(?:(?<!\*)\*(?!\*)|(?<![a-zA-Z0-9_])_(?!_))(?![\.,:;]?\s)',
|
||||
'*' => '(?<![\s*])\*(?!\*)',
|
||||
'_' => '(?<![\s_])_(?![a-zA-Z0-9_])',
|
||||
);
|
||||
protected $strong_relist = array(
|
||||
'' => '(?:(?<!\*)\*\*(?!\*)|(?<![a-zA-Z0-9_])__(?!_))(?=\S|$)(?![\.,:;]\s)',
|
||||
'**' => '(?<=\S|^)(?<!\*)\*\*(?!\*)',
|
||||
'__' => '(?<=\S|^)(?<!_)__(?![a-zA-Z0-9_])',
|
||||
'' => '(?:(?<!\*)\*\*(?!\*)|(?<![a-zA-Z0-9_])__(?!_))(?![\.,:;]?\s)',
|
||||
'**' => '(?<![\s*])\*\*(?!\*)',
|
||||
'__' => '(?<![\s_])__(?![a-zA-Z0-9_])',
|
||||
);
|
||||
protected $em_strong_relist = array(
|
||||
'' => '(?:(?<!\*)\*\*\*(?!\*)|(?<![a-zA-Z0-9_])___(?!_))(?=\S|$)(?![\.,:;]\s)',
|
||||
'***' => '(?<=\S|^)(?<!\*)\*\*\*(?!\*)',
|
||||
'___' => '(?<=\S|^)(?<!_)___(?![a-zA-Z0-9_])',
|
||||
'' => '(?:(?<!\*)\*\*\*(?!\*)|(?<![a-zA-Z0-9_])___(?!_))(?![\.,:;]?\s)',
|
||||
'***' => '(?<![\s*])\*\*\*(?!\*)',
|
||||
'___' => '(?<![\s_])___(?![a-zA-Z0-9_])',
|
||||
);
|
||||
|
||||
|
||||
|
|
@ -2908,13 +2946,13 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
.+ # actual text
|
||||
|
|
||||
\n # newlines but
|
||||
(?!\[\^.+?\]:\s)# negative lookahead for footnote marker.
|
||||
(?!\[.+?\][ ]?:\s)# negative lookahead for footnote or link definition marker.
|
||||
(?!\n+[ ]{0,3}\S)# ensure line is not blank and followed
|
||||
# by non-indented content
|
||||
)*
|
||||
)
|
||||
}xm',
|
||||
array(&$this, '_stripFootnotes_callback'),
|
||||
array($this, '_stripFootnotes_callback'),
|
||||
$text);
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -2942,7 +2980,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
# Append footnote list to text.
|
||||
#
|
||||
$text = preg_replace_callback('{F\x1Afn:(.*?)\x1A:}',
|
||||
array(&$this, '_appendFootnotes_callback'), $text);
|
||||
array($this, '_appendFootnotes_callback'), $text);
|
||||
|
||||
if (!empty($this->footnotes_ordered)) {
|
||||
$text .= "\n\n";
|
||||
|
|
@ -2974,7 +3012,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
$footnote .= "\n"; # Need to append newline before parsing.
|
||||
$footnote = $this->runBlockGamut("$footnote\n");
|
||||
$footnote = preg_replace_callback('{F\x1Afn:(.*?)\x1A:}',
|
||||
array(&$this, '_appendFootnotes_callback'), $footnote);
|
||||
array($this, '_appendFootnotes_callback'), $footnote);
|
||||
|
||||
$attr = str_replace("%%", ++$num, $attr);
|
||||
$note_id = $this->encodeAttribute($note_id);
|
||||
|
|
@ -3057,7 +3095,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
^[ ]{0,'.$less_than_tab.'}\*\[(.+?)\][ ]?: # abbr_id = $1
|
||||
(.*) # text = $2 (no blank lines allowed)
|
||||
}xm',
|
||||
array(&$this, '_stripAbbreviations_callback'),
|
||||
array($this, '_stripAbbreviations_callback'),
|
||||
$text);
|
||||
return $text;
|
||||
}
|
||||
|
|
@ -3084,7 +3122,7 @@ abstract class _MarkdownExtra_TmpImpl extends \Michelf\Markdown {
|
|||
'(?:'.$this->abbr_word_re.')'.
|
||||
'(?![\w\x1A])'.
|
||||
'}',
|
||||
array(&$this, '_doAbbreviations_callback'), $text);
|
||||
array($this, '_doAbbreviations_callback'), $text);
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# Markdown Extra - A text-to-HTML conversion tool for web writers
|
||||
#
|
||||
# PHP Markdown Extra
|
||||
# Copyright (c) 2004-2013 Michel Fortin
|
||||
# Copyright (c) 2004-2014 Michel Fortin
|
||||
# <http://michelf.com/projects/php-markdown/>
|
||||
#
|
||||
# Original Markdown
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# Markdown - A text-to-HTML conversion tool for web writers
|
||||
#
|
||||
# PHP Markdown
|
||||
# Copyright (c) 2004-2013 Michel Fortin
|
||||
# Copyright (c) 2004-2014 Michel Fortin
|
||||
# <http://michelf.com/projects/php-markdown/>
|
||||
#
|
||||
# Original Markdown
|
||||
|
|
@ -32,6 +32,3 @@ interface MarkdownInterface {
|
|||
public function transform($text);
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
38
vendor/michelf/php-markdown/Readme.md
vendored
38
vendor/michelf/php-markdown/Readme.md
vendored
|
|
@ -1,7 +1,7 @@
|
|||
PHP Markdown
|
||||
============
|
||||
|
||||
PHP Markdown Lib 1.4.0 - 29 Nov 2013
|
||||
PHP Markdown Lib 1.4.1 - 4 May 2013
|
||||
|
||||
by Michel Fortin
|
||||
<http://michelf.ca/>
|
||||
|
|
@ -160,9 +160,43 @@ too.
|
|||
[MDTest]: https://github.com/michelf/mdtest/
|
||||
|
||||
|
||||
Donations
|
||||
---------
|
||||
|
||||
If you wish to make a donation that will help me devote more time to
|
||||
PHP Markdown, please visit [michelf.ca/donate] or send Bitcoin to
|
||||
[1HiuX34czvVPPdhXbUAsAu7pZcesniDCGH].
|
||||
|
||||
[michelf.ca/donate]: https://michelf.ca/donate/#!Thanks%20for%20PHP%20Markdown
|
||||
[1HiuX34czvVPPdhXbUAsAu7pZcesniDCGH]: bitcoin:1HiuX34czvVPPdhXbUAsAu7pZcesniDCGH
|
||||
|
||||
|
||||
Version History
|
||||
---------------
|
||||
|
||||
PHP Markdown Lib 1.4.1 (4 May 2014)
|
||||
|
||||
* The HTML block parser will now treat `<figure>` as a block-level element
|
||||
(as it should) and no longer wrap it in `<p>` or parse it's content with
|
||||
the as Markdown syntax (although with Extra you can use `markdown="1"`
|
||||
if you wish to use the Markdown syntax inside it).
|
||||
|
||||
* The content of `<style>` elements will now be left alone, its content
|
||||
won't be interpreted as Markdown.
|
||||
|
||||
* Corrected an bug where some inline links with spaces in them would not
|
||||
work even when surounded with angle brackets:
|
||||
|
||||
[link](<s p a c e s>)
|
||||
|
||||
* Fixed an issue where email addresses with quotes in them would not always
|
||||
have the quotes escaped in the link attribute, causing broken links (and
|
||||
invalid HTML).
|
||||
|
||||
* Fixed the case were a link definition following a footnote definition would
|
||||
be swallowed by the footnote unless it was separated by a blank line.
|
||||
|
||||
|
||||
PHP Markdown Lib 1.4.0 (29 Nov 2013)
|
||||
|
||||
* Added support for the `tel:` URL scheme in automatic links.
|
||||
|
|
@ -233,7 +267,7 @@ Copyright and License
|
|||
---------------------
|
||||
|
||||
PHP Markdown Lib
|
||||
Copyright (c) 2004-2013 Michel Fortin
|
||||
Copyright (c) 2004-2014 Michel Fortin
|
||||
<http://michelf.ca/>
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue