httpclient 2.3.0.1 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.txt CHANGED
@@ -107,6 +107,25 @@ Thanks in advance.
107
107
 
108
108
  == Changes
109
109
 
110
+ = Changes in 2.3.1 =
111
+
112
+ January 1, 2013 - version 2.3.1
113
+
114
+ * Changes
115
+
116
+ * #137 Signing key is expiring for cacert_sha1.p7s.
117
+ Deleted p7s signature check for default cacerts. Sorry for many troubles
118
+ in the past. This feature is not useful without having online/real-time
119
+ CA certs update but I don't think I can implement it in near future.
120
+ Users depend on this signature check (who puts cacert.p7s in R/W
121
+ filesystem and ssl_config.rb in R/O filesystem) should take care the
122
+ tampering by themself.
123
+
124
+ * Bug fixes
125
+
126
+ * #122 Support IPv6 address in URI
127
+
128
+
110
129
  = Changes in 2.3.0 =
111
130
 
112
131
  October 10, 2012 - version 2.3.0
@@ -1,9 +1,9 @@
1
1
  MIME-Version: 1.0
2
- Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg="sha1"; boundary="----FC1E47CA462F4279D20B7F02AEA7E734"
2
+ Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha1"; boundary="----5FCD663C81182946FE75D58C22A8C67A"
3
3
 
4
4
  This is an S/MIME signed message
5
5
 
6
- ------FC1E47CA462F4279D20B7F02AEA7E734
6
+ ------5FCD663C81182946FE75D58C22A8C67A
7
7
  -----BEGIN CERTIFICATE-----
8
8
  MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU
9
9
  MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3
@@ -663,25 +663,21 @@ hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV
663
663
  5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw==
664
664
  -----END CERTIFICATE-----
665
665
  -----BEGIN CERTIFICATE-----
666
- MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY
667
- MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo
668
- R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx
669
- MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
670
- Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp
671
- ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
672
- AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9
673
- AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA
674
- ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0
675
- 7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W
676
- kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI
677
- mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G
678
- A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ
679
- KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1
680
- 6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl
681
- 4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K
682
- oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj
683
- UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU
684
- AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
666
+ MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL
667
+ MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj
668
+ KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2
669
+ MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
670
+ eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV
671
+ BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw
672
+ NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV
673
+ BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH
674
+ MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL
675
+ So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal
676
+ tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO
677
+ BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG
678
+ CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT
679
+ qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz
680
+ rD6ogRLQy7rQkgu2npaqBA+K
685
681
  -----END CERTIFICATE-----
686
682
  -----BEGIN CERTIFICATE-----
687
683
  MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB
@@ -708,6 +704,27 @@ SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G
708
704
  spki4cErx5z481+oghLrGREt
709
705
  -----END CERTIFICATE-----
710
706
  -----BEGIN CERTIFICATE-----
707
+ MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY
708
+ MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo
709
+ R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx
710
+ MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
711
+ Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp
712
+ ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
713
+ AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9
714
+ AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA
715
+ ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0
716
+ 7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W
717
+ kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI
718
+ mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G
719
+ A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ
720
+ KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1
721
+ 6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl
722
+ 4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K
723
+ oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj
724
+ UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU
725
+ AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
726
+ -----END CERTIFICATE-----
727
+ -----BEGIN CERTIFICATE-----
711
728
  MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW
712
729
  MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy
713
730
  c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE
@@ -887,40 +904,6 @@ YQ33E3FTkzf9PK8AHWyLFK9Gloy2UnzMLU7N4elLCu6a/nqY5ym6G9ocutxrzQQO
887
904
  JkCp63M8/lCoESdVvduOS+9PGO0V/72GmGbumiVxNGxQ8bJRy2adTSk=
888
905
  -----END CERTIFICATE-----
889
906
  -----BEGIN CERTIFICATE-----
890
- MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC
891
- TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0
892
- aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0
893
- aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz
894
- MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw
895
- IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR
896
- dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG
897
- 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp
898
- li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D
899
- rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ
900
- WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug
901
- F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU
902
- xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC
903
- Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv
904
- dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw
905
- ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl
906
- IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh
907
- c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy
908
- ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
909
- Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI
910
- KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T
911
- KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq
912
- y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p
913
- dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD
914
- VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL
915
- MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk
916
- fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8
917
- 7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R
918
- cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y
919
- mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW
920
- xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK
921
- SnQ2+Q==
922
- -----END CERTIFICATE-----
923
- -----BEGIN CERTIFICATE-----
924
907
  MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x
925
908
  GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv
926
909
  b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV
@@ -992,6 +975,40 @@ mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK
992
975
  4SVhM7JZG+Ju1zdXtg2pEto=
993
976
  -----END CERTIFICATE-----
994
977
  -----BEGIN CERTIFICATE-----
978
+ MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC
979
+ TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0
980
+ aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0
981
+ aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz
982
+ MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw
983
+ IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR
984
+ dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG
985
+ 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp
986
+ li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D
987
+ rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ
988
+ WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug
989
+ F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU
990
+ xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC
991
+ Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv
992
+ dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw
993
+ ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl
994
+ IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh
995
+ c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy
996
+ ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
997
+ Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI
998
+ KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T
999
+ KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq
1000
+ y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p
1001
+ dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD
1002
+ VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL
1003
+ MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk
1004
+ fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8
1005
+ 7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R
1006
+ cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y
1007
+ mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW
1008
+ xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK
1009
+ SnQ2+Q==
1010
+ -----END CERTIFICATE-----
1011
+ -----BEGIN CERTIFICATE-----
995
1012
  MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDEl
996
1013
  MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMh
997
1014
  U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIz
@@ -1273,29 +1290,20 @@ IPG47LHlVYCsPVLIOQ7C8MAFT9aCdYy9X9LcdpoFEsmvcsPcJX6kTY4XpeCHf+Ga
1273
1290
  WuFg3GQjPEIuTQ==
1274
1291
  -----END CERTIFICATE-----
1275
1292
  -----BEGIN CERTIFICATE-----
1276
- MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB
1277
- qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
1278
- Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
1279
- MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
1280
- BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw
1281
- NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j
1282
- LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG
1283
- A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
1284
- IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG
1285
- SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs
1286
- W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta
1287
- 3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk
1288
- 6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6
1289
- Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J
1290
- NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA
1291
- MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP
1292
- r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU
1293
- DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz
1294
- YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
1295
- xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2
1296
- /qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/
1297
- LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7
1298
- jVaMaA==
1293
+ MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL
1294
+ MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp
1295
+ IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi
1296
+ BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw
1297
+ MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
1298
+ d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig
1299
+ YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v
1300
+ dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/
1301
+ BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6
1302
+ papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E
1303
+ BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K
1304
+ DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3
1305
+ KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox
1306
+ XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
1299
1307
  -----END CERTIFICATE-----
1300
1308
  -----BEGIN CERTIFICATE-----
1301
1309
  MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB
@@ -1323,6 +1331,31 @@ m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu
1323
1331
  MdRAGmI0Nj81Aa6sY6A=
1324
1332
  -----END CERTIFICATE-----
1325
1333
  -----BEGIN CERTIFICATE-----
1334
+ MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB
1335
+ qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf
1336
+ Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw
1337
+ MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV
1338
+ BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw
1339
+ NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j
1340
+ LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG
1341
+ A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
1342
+ IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG
1343
+ SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs
1344
+ W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta
1345
+ 3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk
1346
+ 6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6
1347
+ Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J
1348
+ NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA
1349
+ MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP
1350
+ r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU
1351
+ DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz
1352
+ YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
1353
+ xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2
1354
+ /qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/
1355
+ LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7
1356
+ jVaMaA==
1357
+ -----END CERTIFICATE-----
1358
+ -----BEGIN CERTIFICATE-----
1326
1359
  MIIDIjCCAougAwIBAgIQNKT/9jCvTKU8MxdCoZRmdTANBgkqhkiG9w0BAQUFADCB
1327
1360
  xDELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJ
1328
1361
  Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
@@ -1740,6 +1773,27 @@ F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt
1740
1773
  TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
1741
1774
  -----END CERTIFICATE-----
1742
1775
  -----BEGIN CERTIFICATE-----
1776
+ MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL
1777
+ MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW
1778
+ ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln
1779
+ biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp
1780
+ U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
1781
+ aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG
1782
+ A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp
1783
+ U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg
1784
+ SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln
1785
+ biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
1786
+ IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm
1787
+ GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve
1788
+ fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw
1789
+ AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ
1790
+ aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj
1791
+ aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW
1792
+ kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC
1793
+ 4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga
1794
+ FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
1795
+ -----END CERTIFICATE-----
1796
+ -----BEGIN CERTIFICATE-----
1743
1797
  MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
1744
1798
  yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
1745
1799
  ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp
@@ -1813,12 +1867,12 @@ lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3
1813
1867
  7M2CYfE45k+XmCpajQ==
1814
1868
  -----END CERTIFICATE-----
1815
1869
 
1816
- ------FC1E47CA462F4279D20B7F02AEA7E734
1817
- Content-Type: application/pkcs7-signature; name="smime.p7s"
1870
+ ------5FCD663C81182946FE75D58C22A8C67A
1871
+ Content-Type: application/x-pkcs7-signature; name="smime.p7s"
1818
1872
  Content-Transfer-Encoding: base64
1819
1873
  Content-Disposition: attachment; filename="smime.p7s"
1820
1874
 
1821
- MIIGZAYJKoZIhvcNAQcCoIIGVTCCBlECAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3
1875
+ MIIGiwYJKoZIhvcNAQcCoIIGfDCCBngCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3
1822
1876
  DQEHAaCCBAEwggP9MIIC5aADAgECAgEBMA0GCSqGSIb3DQEBDQUAMEsxCzAJBgNV
1823
1877
  BAYTAkpQMREwDwYDVQQKDAhjdG9yLm9yZzEUMBIGA1UECwwLRGV2ZWxvcG1lbnQx
1824
1878
  EzARBgNVBAMMCmh0dHBjbGllbnQwHhcNMDkwNTIxMTIzOTA1WhcNMzcxMjMxMjM1
@@ -1840,19 +1894,19 @@ h68+UKv+Y8sNGNzL4nV8KcTqUJ+x8t1OACOKuq3ymb3Y1xzGYnyFOYx3ctYLWf55
1840
1894
  hZqiWpMJVEwGl7xRj16fJesWi50eWv16mvXwToCzpWsJJ+lcVmQP1YdVJanOQHeo
1841
1895
  BO7mpwMLMIdsjTvnkx2b/WEokIPiXr2Hcnc6FEgRQ8l8ec+8znC2LILZ1wT2K3AT
1842
1896
  /B1XMEl4gFclCb5CP4rypdxFPNlkYgGPDafjrEmBbpidw0IdT9ZZ80JjB2SeAdL9
1843
- o3whsSOELB++JcWKxWsM3/6llkYx/rtlpjGCAiswggInAgEBMFAwSzELMAkGA1UE
1897
+ o3whsSOELB++JcWKxWsM3/6llkYx/rtlpjGCAlIwggJOAgEBMFAwSzELMAkGA1UE
1844
1898
  BhMCSlAxETAPBgNVBAoMCGN0b3Iub3JnMRQwEgYDVQQLDAtEZXZlbG9wbWVudDET
1845
- MBEGA1UEAwwKaHR0cGNsaWVudAIBATAJBgUrDgMCGgUAoIGxMBgGCSqGSIb3DQEJ
1846
- AzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTExMDUyMjA4NTEyMFowIwYJ
1847
- KoZIhvcNAQkEMRYEFB6px2QzZcvvEHTjt2rAmZJQzfDEMFIGCSqGSIb3DQEJDzFF
1848
- MEMwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcG
1849
- BSsOAwIHMA0GCCqGSIb3DQMCAgEoMA0GCSqGSIb3DQEBAQUABIIBAL1U0w4bM8Qr
1850
- qYow95JP8oCG/ObfF6vFgo3h50kC/iXuKz9092VcUxleieiRHNf4fdv0snWmZD6H
1851
- aOdxaKaJYdx0ZX6nEnPIYpIZ7w7M3RQhd/BLajIHft4sl0MG5AoDBhp1xLicuHUA
1852
- EN0a0Zcv2cqHAxu/EiaVfNHyNL1lWPu0MlpNEOh6tBc9kjKplhaZgX7yqzkGXiJj
1853
- pTyyJ2W+iUUyD4qH2bLGVjXeruK8SKmbsOsS/EbDH/pibY7GyY+UlMyeNo9LmVcH
1854
- hX93iPwUHfNQLfUDrjVcdx7okIQvSJrg9X3brv4NccRFa/PtqH9RkG5tFH3xnoQq
1855
- /Q1ATdBt6C4=
1899
+ MBEGA1UEAwwKaHR0cGNsaWVudAIBATAJBgUrDgMCGgUAoIHYMBgGCSqGSIb3DQEJ
1900
+ AzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEzMDEwMTAyNDUyNlowIwYJ
1901
+ KoZIhvcNAQkEMRYEFJckqjbw92vWqUryx9P8VUwbej47MHkGCSqGSIb3DQEJDzFs
1902
+ MGowCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBFjALBglghkgBZQMEAQIwCgYIKoZI
1903
+ hvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0G
1904
+ CCqGSIb3DQMCAgEoMA0GCSqGSIb3DQEBAQUABIIBAMm/55qbk5tKufy4fxd9po/B
1905
+ 1Fv45SvkTCWo0C2l6t1ZrqfkJNLLjSVP8CKAt4NVIo34RjEiQpfLtYbKu1yQlW9N
1906
+ tcfode1vgS8ECRvFzNQAlBe5Ei9ypLdH+0sz6tEWX70W+fOSYqtJjghrbVvxcxjx
1907
+ B1FdzJkFFV+woKVtS/oFGzv+daL49JqZe1I+LB9hsNf6Z8rcVu2NI4DCnT8yD6HT
1908
+ i3jvUxGQSJx4w3oZQW0wXEZB89c0tKCACrYZkNVYIerRkmz5oH/F6NcRicDR6aSg
1909
+ 4fskz2tsbOp2tB4oVcQIWsheDeoXJQMpcejrh+9+LmP5hO4iZ3SzWghylLcb6u4=
1856
1910
 
1857
- ------FC1E47CA462F4279D20B7F02AEA7E734--
1911
+ ------5FCD663C81182946FE75D58C22A8C67A--
1858
1912
 
@@ -46,11 +46,6 @@ class WebAgent
46
46
  return (hostname == domainname)
47
47
  end
48
48
  end
49
-
50
- def total_dot_num(string)
51
- string.scan(/\./).length()
52
- end
53
-
54
49
  end
55
50
 
56
51
  class Cookie
@@ -71,7 +66,7 @@ class WebAgent
71
66
  OVERRIDE_OK = 32
72
67
  HTTP_ONLY = 64
73
68
 
74
- def initialize()
69
+ def initialize
75
70
  @name = @value = @domain = @path = nil
76
71
  @expires = nil
77
72
  @url = nil
@@ -142,7 +137,7 @@ class WebAgent
142
137
  end
143
138
 
144
139
  def join_quotedstr(array, sep)
145
- ret = Array.new()
140
+ ret = Array.new
146
141
  old_elem = nil
147
142
  array.each{|elem|
148
143
  if (elem.scan(/"/).length % 2) == 0
@@ -188,7 +183,7 @@ class WebAgent
188
183
  when 'expires'
189
184
  @expires = nil
190
185
  begin
191
- @expires = Time.parse(value).gmtime() if value
186
+ @expires = Time.parse(value).gmtime if value
192
187
  rescue ArgumentError
193
188
  end
194
189
  when 'path'
@@ -203,6 +198,8 @@ class WebAgent
203
198
  }
204
199
  end
205
200
 
201
+ private
202
+
206
203
  def normalize_cookie_value(value)
207
204
  if value
208
205
  value = value.strip.sub(/\A"(.*)"\z/) { $1 }
@@ -210,7 +207,6 @@ class WebAgent
210
207
  end
211
208
  value
212
209
  end
213
- private :normalize_cookie_value
214
210
  end
215
211
 
216
212
  class CookieManager
@@ -225,17 +221,13 @@ class WebAgent
225
221
  attr_accessor :cookies_file
226
222
  attr_accessor :accept_domains, :reject_domains
227
223
 
228
- # for conformance to http://wp.netscape.com/newsref/std/cookie_spec.html
229
- attr_accessor :netscape_rule
230
- SPECIAL_DOMAIN = [".com",".edu",".gov",".mil",".net",".org",".int"]
231
-
232
224
  def initialize(file=nil)
233
- @cookies = Array.new()
225
+ @cookies = Array.new
234
226
  @cookies.extend(MonitorMixin)
235
227
  @cookies_file = file
236
228
  @is_saved = true
237
- @reject_domains = Array.new()
238
- @accept_domains = Array.new()
229
+ @reject_domains = Array.new
230
+ @accept_domains = Array.new
239
231
  @netscape_rule = false
240
232
  end
241
233
 
@@ -246,7 +238,7 @@ class WebAgent
246
238
 
247
239
  def save_all_cookies(force = nil, save_unused = true, save_discarded = true)
248
240
  @cookies.synchronize do
249
- check_expired_cookies()
241
+ check_expired_cookies
250
242
  if @is_saved and !force
251
243
  return
252
244
  end
@@ -272,7 +264,7 @@ class WebAgent
272
264
  save_all_cookies(force, false, false)
273
265
  end
274
266
 
275
- def check_expired_cookies()
267
+ def check_expired_cookies
276
268
  @cookies.reject!{|cookie|
277
269
  is_expired = (cookie.expires && (cookie.expires < Time.now.gmtime))
278
270
  if is_expired && !cookie.discard?
@@ -283,31 +275,15 @@ class WebAgent
283
275
  end
284
276
 
285
277
  def parse(str, url)
286
- cookie = WebAgent::Cookie.new()
278
+ cookie = WebAgent::Cookie.new
287
279
  cookie.parse(str, url)
288
280
  add(cookie)
289
281
  end
290
282
 
291
- def make_cookie_str(cookie_list)
292
- if cookie_list.empty?
293
- return nil
294
- end
295
-
296
- ret = ''
297
- c = cookie_list.shift
298
- ret += "#{c.name}=#{c.value}"
299
- cookie_list.each{|cookie|
300
- ret += "; #{cookie.name}=#{cookie.value}"
301
- }
302
- return ret
303
- end
304
- private :make_cookie_str
305
-
306
-
307
283
  def find(url)
308
284
  return nil if @cookies.empty?
309
285
 
310
- cookie_list = Array.new()
286
+ cookie_list = Array.new
311
287
  @cookies.each{|cookie|
312
288
  is_expired = (cookie.expires && (cookie.expires < Time.now.gmtime))
313
289
  if cookie.use? && !is_expired && cookie.match?(url)
@@ -319,92 +295,37 @@ class WebAgent
319
295
  return make_cookie_str(cookie_list)
320
296
  end
321
297
 
322
- def find_cookie_info(domain, path, name)
323
- @cookies.find{|c|
324
- c.domain == domain && c.path == path && c.name == name
325
- }
326
- end
327
- private :find_cookie_info
328
-
329
- # not tested well; used only netscape_rule = true.
330
- def cookie_error(err, override)
331
- if !err.kind_of?(ErrorOverrideOK) || !override
332
- raise err
333
- end
334
- end
335
- private :cookie_error
336
-
337
- def add(cookie)
338
- url = cookie.url
339
- name, value = cookie.name, cookie.value
340
- expires, domain, path =
341
- cookie.expires, cookie.domain, cookie.path
342
- secure, http_only, domain_orig, path_orig =
343
- cookie.secure?, cookie.http_only?, cookie.domain_orig?, cookie.path_orig?
344
- discard, override =
345
- cookie.discard?, cookie.override?
346
-
347
- domainname = url.host
348
- domain_orig, path_orig = domain, path
349
-
350
- if domain
298
+ def add(given)
299
+ check_domain(given.domain, given.url.host, given.override?)
351
300
 
352
- # [DRAFT 12] s. 4.2.2 (does not apply in the case that
353
- # host name is the same as domain attribute for version 0
354
- # cookie)
355
- # I think that this rule has almost the same effect as the
356
- # tail match of [NETSCAPE].
357
- if domain !~ /^\./ && domainname != domain
358
- domain = '.'+domain
359
- end
301
+ domain = given.domain || given.url.host
302
+ path = given.path || given.url.path.sub(%r|/[^/]*\z|, '')
360
303
 
361
- # [NETSCAPE] rule
362
- if @netscape_rule
363
- n = total_dot_num(domain)
364
- if n < 2
365
- cookie_error(SpecialError.new(), override)
366
- elsif n == 2
367
- ## [NETSCAPE] rule
368
- ok = SPECIAL_DOMAIN.select{|sdomain|
369
- sdomain == domain[-(sdomain.length)..-1]
370
- }
371
- if ok.empty?
372
- cookie_error(SpecialError.new(), override)
373
- end
374
- end
375
- end
376
-
377
- # this implementation does not check RFC2109 4.3.2 case 2;
378
- # the portion of host not in domain does not contain a dot.
379
- # according to nsCookieService.cpp in Firefox 3.0.4, Firefox 3.0.4
380
- # and IE does not check, too.
381
- end
382
-
383
- path ||= url.path.sub(%r|/[^/]*\z|, '')
384
- domain ||= domainname
304
+ cookie = nil
385
305
  @cookies.synchronize do
386
- cookie = find_cookie_info(domain, path, name)
306
+ cookie = @cookies.find { |c|
307
+ c.domain == domain && c.path == path && c.name == given.name
308
+ }
387
309
  if !cookie
388
- cookie = WebAgent::Cookie.new()
310
+ cookie = WebAgent::Cookie.new
389
311
  cookie.use = true
390
312
  @cookies << cookie
391
313
  end
392
- check_expired_cookies()
314
+ check_expired_cookies
393
315
  end
394
316
 
395
- cookie.url = url
396
- cookie.name = name
397
- cookie.value = value
398
- cookie.expires = expires
399
317
  cookie.domain = domain
400
318
  cookie.path = path
401
-
402
- ## for flag
403
- cookie.secure = secure
404
- cookie.http_only = http_only
405
- cookie.domain_orig = domain_orig
406
- cookie.path_orig = path_orig
407
- if discard || cookie.expires == nil
319
+ cookie.url = given.url
320
+ cookie.name = given.name
321
+ cookie.value = given.value
322
+ cookie.expires = given.expires
323
+ cookie.secure = given.secure?
324
+ cookie.http_only = given.http_only?
325
+ cookie.domain_orig = given.domain
326
+ cookie.path_orig = given.path
327
+
328
+ if cookie.discard? || cookie.expires == nil
408
329
  cookie.discard = true
409
330
  else
410
331
  cookie.discard = false
@@ -412,13 +333,13 @@ class WebAgent
412
333
  end
413
334
  end
414
335
 
415
- def load_cookies()
336
+ def load_cookies
416
337
  return if !File.readable?(@cookies_file)
417
338
  @cookies.synchronize do
418
339
  @cookies.clear
419
340
  File.open(@cookies_file,'r'){|f|
420
341
  while line = f.gets
421
- cookie = WebAgent::Cookie.new()
342
+ cookie = WebAgent::Cookie.new
422
343
  @cookies << cookie
423
344
  col = line.chomp.split(/\t/)
424
345
  cookie.url = HTTPClient::Util.urify(col[0])
@@ -437,6 +358,7 @@ class WebAgent
437
358
  end
438
359
  end
439
360
 
361
+ # Who use it?
440
362
  def check_cookie_accept_domain(domain)
441
363
  unless domain
442
364
  return false
@@ -453,121 +375,64 @@ class WebAgent
453
375
  }
454
376
  return true
455
377
  end
456
- end
457
- end
458
-
459
- __END__
460
-
461
- =begin
462
-
463
- == WebAgent::CookieManager Class
464
-
465
- Load, save, parse and send cookies.
466
-
467
- === Usage
468
-
469
- ## initialize
470
- cm = WebAgent::CookieManager.new("/home/foo/bar/cookie")
471
-
472
- ## load cookie data
473
- cm.load_cookies()
474
-
475
- ## parse cookie from string (maybe "Set-Cookie:" header)
476
- cm.parse(str)
477
378
 
478
- ## send cookie data to url
479
- f.write(cm.find(url))
379
+ private
480
380
 
481
- ## save cookie to cookiefile
482
- cm.save_cookies()
483
-
484
-
485
- === Class Methods
486
-
487
- -- CookieManager::new(file=nil)
488
-
489
- create new CookieManager. If a file is provided,
490
- use it as cookies' file.
491
-
492
- === Methods
493
-
494
- -- CookieManager#save_cookies(force = nil)
495
-
496
- save cookies' data into file. if argument is true,
497
- save data although data is not modified.
498
-
499
- -- CookieManager#parse(str, url)
500
-
501
- parse string and store cookie (to parse HTTP response header).
502
-
503
- -- CookieManager#find(url)
504
-
505
- get cookies and make into string (to send as HTTP request header).
506
-
507
- -- CookieManager#add(cookie)
508
-
509
- add new cookie.
510
-
511
- -- CookieManager#load_cookies()
512
-
513
- load cookies' data from file.
514
-
515
-
516
- == WebAgent::CookieUtils Module
517
-
518
- -- CookieUtils::head_match?(str1, str2)
519
- -- CookieUtils::tail_match?(str1, str2)
520
- -- CookieUtils::domain_match(host, domain)
521
- -- CookieUtils::total_dot_num(str)
522
-
523
-
524
- == WebAgent::Cookie Class
525
-
526
- === Class Methods
527
-
528
- -- Cookie::new()
529
-
530
- create new cookie.
531
-
532
- === Methods
533
-
534
- -- Cookie#match?(url)
535
-
536
- match cookie by url. if match, return true. otherwise,
537
- return false.
381
+ def make_cookie_str(cookie_list)
382
+ if cookie_list.empty?
383
+ return nil
384
+ end
538
385
 
539
- -- Cookie#name
540
- -- Cookie#name=(name)
541
- -- Cookie#value
542
- -- Cookie#value=(value)
543
- -- Cookie#domain
544
- -- Cookie#domain=(domain)
545
- -- Cookie#path
546
- -- Cookie#path=(path)
547
- -- Cookie#expires
548
- -- Cookie#expires=(expires)
549
- -- Cookie#url
550
- -- Cookie#url=(url)
386
+ ret = ''
387
+ c = cookie_list.shift
388
+ ret += "#{c.name}=#{c.value}"
389
+ cookie_list.each{|cookie|
390
+ ret += "; #{cookie.name}=#{cookie.value}"
391
+ }
392
+ return ret
393
+ end
551
394
 
552
- accessor methods for cookie's items.
395
+ # for conformance to http://wp.netscape.com/newsref/std/cookie_spec.html
396
+ attr_accessor :netscape_rule
397
+ SPECIAL_DOMAIN = [".com",".edu",".gov",".mil",".net",".org",".int"]
553
398
 
554
- -- Cookie#discard?
555
- -- Cookie#discard=(discard)
556
- -- Cookie#use?
557
- -- Cookie#use=(use)
558
- -- Cookie#secure?
559
- -- Cookie#secure=(secure)
560
- -- Cookie#http_only?
561
- -- Cookie#http_only=(http_only)
562
- -- Cookie#domain_orig?
563
- -- Cookie#domain_orig=(domain_orig)
564
- -- Cookie#path_orig?
565
- -- Cookie#path_orig=(path_orig)
566
- -- Cookie#override?
567
- -- Cookie#override=(override)
568
- -- Cookie#flag
569
- -- Cookie#set_flag(flag_num)
399
+ def check_domain(domain, hostname, override)
400
+ return unless domain
570
401
 
571
- accessor methods for flags.
402
+ # [DRAFT 12] s. 4.2.2 (does not apply in the case that
403
+ # host name is the same as domain attribute for version 0
404
+ # cookie)
405
+ # I think that this rule has almost the same effect as the
406
+ # tail match of [NETSCAPE].
407
+ if domain !~ /^\./ && hostname != domain
408
+ domain = '.'+domain
409
+ end
410
+ # [NETSCAPE] rule
411
+ if @netscape_rule
412
+ n = domain.scan(/\./).length
413
+ if n < 2
414
+ cookie_error(SpecialError.new, override)
415
+ elsif n == 2
416
+ ## [NETSCAPE] rule
417
+ ok = SPECIAL_DOMAIN.select{|sdomain|
418
+ sdomain == domain[-(sdomain.length)..-1]
419
+ }
420
+ if ok.empty?
421
+ cookie_error(SpecialError.new, override)
422
+ end
423
+ end
424
+ end
425
+ # this implementation does not check RFC2109 4.3.2 case 2;
426
+ # the portion of host not in domain does not contain a dot.
427
+ # according to nsCookieService.cpp in Firefox 3.0.4, Firefox 3.0.4
428
+ # and IE does not check, too.
429
+ end
572
430
 
573
- =end
431
+ # not tested well; used only netscape_rule = true.
432
+ def cookie_error(err, override)
433
+ if !err.kind_of?(ErrorOverrideOK) || !override
434
+ raise err
435
+ end
436
+ end
437
+ end
438
+ end